<?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>221780</bug_id>
          
          <creation_ts>2021-02-11 14:15:48 -0800</creation_ts>
          <short_desc>Reduce explicit usage of [objC release] in WebKit</short_desc>
          <delta_ts>2021-02-15 12:16:13 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=221914</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>jamesr</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>luiz</cc>
    
    <cc>mifenton</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1728295</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-11 14:15:48 -0800</bug_when>
    <thetext>Reduce explicit usage of [objC release] in WebKit by using RetainPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728415</commentid>
    <comment_count>1</comment_count>
      <attachid>420078</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-11 18:54:46 -0800</bug_when>
    <thetext>Created attachment 420078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728419</commentid>
    <comment_count>2</comment_count>
      <attachid>420079</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-11 19:15:51 -0800</bug_when>
    <thetext>Created attachment 420079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728421</commentid>
    <comment_count>3</comment_count>
      <attachid>420080</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-11 19:29:12 -0800</bug_when>
    <thetext>Created attachment 420080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728451</commentid>
    <comment_count>4</comment_count>
      <attachid>420092</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-11 21:23:32 -0800</bug_when>
    <thetext>Created attachment 420092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728652</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-12 10:40:51 -0800</bug_when>
    <thetext>Committed r272789: &lt;https://commits.webkit.org/r272789&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420092.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728653</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-12 10:41:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/74282389&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728711</commentid>
    <comment_count>7</comment_count>
      <attachid>420092</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-12 11:57:57 -0800</bug_when>
    <thetext>Comment on attachment 420092
Patch

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

Awesome!

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:1326
&gt;              NSAccessibilitySubroleAttribute,

Not part of this patch, but this should really be switched to use literal array syntax at some point, I believe that makes it so you don&apos;t need the nil check as well, as it could just be:

static NSArray* attributes = @[
    NSAccessibilityRoleDescriptionAttribute,
    ....
];

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:1370
&gt; +        auto tempArray = adoptNS([[NSMutableArray alloc] initWithArray:attributes]);
&gt;          [tempArray addObject:NSAccessibilityURLAttribute];
&gt;          [tempArray addObject:NSAccessibilityAccessKeyAttribute];
&gt;          [tempArray addObject:NSAccessibilityLinkRelationshipTypeAttribute];
&gt; -        anchorAttrs = [[NSArray alloc] initWithArray:tempArray];
&gt; -        [tempArray release];
&gt; +        anchorAttrs = [[NSArray alloc] initWithArray:tempArray.get()];

I&apos;m not sure I really understand why two arrays are being allocated here. Seems like you could leak tempArray and assign it to anchorAttrs to avoid the second allocation. There isn&apos;t really anything gained as far as I know from making a non-mutable array from a mutable array like this. But that is not new, so you don&apos;t need to fix it here.

&gt; Source/WebCore/bridge/testbindings.mm:248
&gt; +        auto myInterface = adoptNS([[MyFirstInterface alloc] init]);

Does this file ever actually get used anymore?

&gt; Source/WebCore/editing/cocoa/HTMLConverter.mm:298
&gt;      NSURL *_baseURL;

No RetainPtr for this?

&gt; Source/WebCore/editing/cocoa/HTMLConverter.mm:2325
&gt;          NSFileWrapper *wrapper = [[[NSFileWrapper alloc] initRegularFileWithContents:[cachedResponse data]] autorelease];

Next stop, removing all the &quot;autorelease&quot; calls!

&gt; Source/WebKit/UIProcess/Inspector/ios/WKInspectorHighlightView.h:32
&gt; -    NSMutableArray *_layers; // CAShapeLayers.
&gt; +    RetainPtr&lt;NSMutableArray&gt; _layers; // CAShapeLayers.

Maybe use RetainPtr&lt;NSMutableArray&lt;CAShapeLayer *&gt;&gt; _layers; and remove the comment?

&gt; Source/WebKit/UIProcess/mac/WebColorPickerMac.mm:143
&gt; +        [controller setPopover: popover];

Extra space after the :

&gt; Source/WebKitLegacy/mac/History/WebHistory.mm:289
&gt; -    WebHistoryItem *entry = [_entriesByURL objectForKey:URLString];
&gt; +    RetainPtr&lt;WebHistoryItem&gt; entry = [_entriesByURL objectForKey:URLString];

in most other cases you are using auto entry = retainPtr(...) in cases like this. Seems better to be consistent.

&gt; Source/WebKitLegacy/mac/Plugins/Hosted/NetscapePluginHostManager.mm:178
&gt; +    auto hostProperties = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys:
&gt;                                      visibleName, @&quot;visibleName&quot;,
&gt;                                      (NSString *)pluginPath, @&quot;bundlePath&quot;,
&gt; -                                    nil];
&gt; +                                    nil]);

Probably better to use use an NSDictionary literal here.

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm:266
&gt; +        auto x = features.x ? adoptNS([[NSNumber alloc] initWithFloat:*features.x]) : nil;
&gt; +        auto y = features.y ? adoptNS([[NSNumber alloc] initWithFloat:*features.y]) : nil;
&gt; +        auto width = features.width ? adoptNS([[NSNumber alloc] initWithFloat:*features.width]) : nil;
&gt; +        auto height = features.height ? adoptNS([[NSNumber alloc] initWithFloat:*features.height]) : nil;
&gt; +        auto menuBarVisible = adoptNS([[NSNumber alloc] initWithBool:features.menuBarVisible]);
&gt; +        auto statusBarVisible = adoptNS([[NSNumber alloc] initWithBool:features.statusBarVisible]);
&gt; +        auto toolBarVisible = adoptNS([[NSNumber alloc] initWithBool:features.toolBarVisible]);
&gt; +        auto scrollbarsVisible = adoptNS([[NSNumber alloc] initWithBool:features.scrollbarsVisible]);
&gt; +        auto resizable = adoptNS([[NSNumber alloc] initWithBool:features.resizable]);
&gt; +        auto fullscreen = adoptNS([[NSNumber alloc] initWithBool:features.fullscreen]);
&gt; +        auto dialog = adoptNS([[NSNumber alloc] initWithBool:features.dialog]);

These would not better using objective-c value literals, e.g. @(...);

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm:460
&gt; -    NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
&gt; +    auto dictionary = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys:
&gt;          (NSString *)message, @&quot;message&quot;,
&gt;          @(lineNumber), @&quot;lineNumber&quot;,
&gt;          @(columnNumber), @&quot;columnNumber&quot;,
&gt;          (NSString *)sourceURL, @&quot;sourceURL&quot;,
&gt;          messageSource, @&quot;MessageSource&quot;,
&gt;          stringForMessageLevel(level), @&quot;MessageLevel&quot;,
&gt; -        NULL];
&gt; +        NULL]);

Use dictionary literal here.

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.mm:459
&gt; +    NSDictionary *dictionary = @{ NSExcludedElementsDocumentAttribute: excludedElements.get() };
&gt;  
&gt;      return dictionary;

Can just return that dictionary. No need for a temporary anymore.

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:838
&gt; +    auto features = adoptNS([[NSDictionary alloc] init]);

Can just use an empty dictionary literal here.

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:1569
&gt; +        auto element = adoptNS([[WebElementDictionary alloc]
&gt; +            initWithHitTestResult:core(m_webFrame.get())-&gt;eventHandler().hitTestResultAtPoint(mouseEventData-&gt;absoluteLocation, hitType)]);

I&apos;d keep this all on one line.

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:1613
&gt; +    RefPtr&lt;WebCore::Frame&gt; result = [WebFrame _createSubframeWithOwnerElement:&amp;ownerElement frameName:name frameView:childView.get()];

This should use auto. By using RefPtr, this actually looses that the method actually returns a Ref&lt;Frame&gt;.

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.mm:570
&gt; +    [window setTitlebarAppearsTransparent: YES];

Extra space after :

&gt; Source/WebKitLegacy/mac/WebView/WebDataSource.mm:321
&gt; +            DOMDocumentFragment *fragment = [[self webFrame] _documentFragmentWithMarkupString:markupString.get() baseURLString:[[mainResource URL] _web_originalDataAsString]];
&gt;              return fragment;

This can be one line.

&gt; Source/WebKitLegacy/mac/WebView/WebDataSource.mm:387
&gt; +        RetainPtr&lt;id&gt; newRep = repClass != nil ? adoptNS([(NSObject *)[repClass alloc] init]) : nil;

I don&apos;t think the cast to NSObject * here is needed.

&gt; Source/WebKitLegacy/mac/WebView/WebFrame.mm:305
&gt; +    RetainPtr&lt;WebFrame&gt; frame = adoptNS([[self alloc] _initWithWebFrameView:frameView webView:webView]);

auto?

&gt; Source/WebKitLegacy/mac/WebView/WebFrame.mm:326
&gt; +    RetainPtr&lt;WebFrame&gt; frame = adoptNS([[self alloc] _initWithWebFrameView:frameView webView:webView]);

auto?

&gt; Source/WebKitLegacy/mac/WebView/WebFrame.mm:353
&gt; +    RetainPtr&lt;WebFrame&gt; frame = adoptNS([[self alloc] _initWithWebFrameView:frameView webView:webView]);

auto?

&gt; Source/WebKitLegacy/mac/WebView/WebPDFRepresentation.mm:128
&gt;      doc = nil;

This seems unnecessary.

&gt; Source/WebKitLegacy/mac/WebView/WebPDFView.mm:1104
&gt; +    auto actionsToTags = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys:

NSDictionary literal?

&gt; Source/WebKitLegacy/mac/WebView/WebScriptDebugger.mm:100
&gt; +        auto info = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys:nsErrorMessage, WebScriptErrorDescriptionKey, @(errorLine), WebScriptErrorLineNumberKey, nil]);

NSDictionary literal.

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:2581
&gt; +    auto features = adoptNS([[NSDictionary alloc] init]);

NSDictionary literal?

&gt; Source/WebKitLegacy/mac/WebView/WebWindowAnimation.mm:183
&gt;      _subAnimation = [animation retain];

Can _subAnimation be in RetainPtr?

&gt; Tools/DumpRenderTree/mac/ResourceLoadDelegate.mm:182
&gt; +        auto nsHeader = adoptNS([[NSString alloc] initWithUTF8String:header-&gt;c_str()]);
&gt; +        [newRequest setValue:nil forHTTPHeaderField:nsHeader.get()];

There should be a toNS() function for this (std::string to RetainPtr&lt;NSString&gt;) in DumpRenderTree. Though it may not be in header, I can&apos;t recall.

&gt; Tools/DumpRenderTree/mac/TestRunnerMac.mm:851
&gt; +    data = [(__bridge NSString *)adoptCF(JSStringCopyCFString(kCFAllocatorDefault, dataString)).get() dataUsingEncoding:NSUTF8StringEncoding];
&gt; +    baseURL = [NSURL URLWithString:(__bridge NSString *)adoptCF(JSStringCopyCFString(kCFAllocatorDefault, baseURLString)).get()];

I should make a StringFunctions.h like WebKitTestRunner has for these common conversions in DRT. (Or just share and expand the one in WebKitTestRunner more likely).

&gt; Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm:153
&gt; +    [textField setTag: 1];

Extra space after the :</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728720</commentid>
    <comment_count>8</comment_count>
      <attachid>420092</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-12 12:17:37 -0800</bug_when>
    <thetext>Comment on attachment 420092
Patch

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

Looked this over carefully to see if I could spot any mistakes. I found one, in WebNSDataExtras.mm. Halfway through writing my comments I saw Sam writing some similar ones.

&gt; Source/WebCore/editing/cocoa/HTMLConverter.mm:1897
&gt; +    RetainPtr&lt;NSMutableParagraphStyle&gt; newStyle;

Seems like we should move this down inside the loop.

&gt; Source/WebCore/platform/ios/WebCoreMotionManager.mm:148
&gt; +        [m_motionManager setDeviceMotionUpdateInterval: kMotionUpdateInterval];

We don’t normally leave spaces after the colons in this kind of code.

&gt; Source/WebCore/platform/ios/WebCoreMotionManager.mm:150
&gt; +        [m_motionManager setAccelerometerUpdateInterval: kMotionUpdateInterval];

Ditto.

&gt; Source/WebCore/platform/network/ios/NetworkStateNotifierIOS.mm:65
&gt;  - (void)dealloc
&gt;  {
&gt; -    [block release];
&gt;      [super dealloc];
&gt;  }

Can delete this method entirely instead.

&gt; Source/WebKit/UIProcess/ios/WKScrollView.mm:223
&gt;  - (void)dealloc
&gt;  {
&gt; -    [_delegateForwarder release];
&gt;      [super dealloc];
&gt;  }

Could remove this method entirely.

&gt;&gt; Source/WebKit/UIProcess/mac/WebColorPickerMac.mm:143
&gt;&gt; +        [controller setPopover: popover];
&gt; 
&gt; Extra space after the :

Space after colon thing here.

&gt; Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:135
&gt; +    if (parent != m_parent)
&gt; +        m_parent = parent;

No need for the if statement here.

&gt; Source/WebKitLegacy/ios/WebView/WebPDFViewPlaceholder.mm:336
&gt; +        title = adoptNS((NSString *)CGPDFStringCopyTextString(value));

This isn’t good if we ever plan to move to ARC. We don’t want to mix NS/CF retain counts. Instead we want to use adoptCF here. We want a RetainPtr&lt;CFStringRef&gt;. Then we can cast to NSString * either once using a local variable, or three times in the three places this is used.

&gt; Source/WebKitLegacy/mac/DOM/DOMUIKitExtensions.mm:187
&gt; +        auto quadObject = adoptNS([[WKQuadObject alloc] initWithQuad:[self absoluteQuad]]);
&gt; +        quads = @[quadObject.get()];

Seems like this would read better as a on-liner.

&gt; Source/WebKitLegacy/mac/DOM/DOMUIKitExtensions.mm:364
&gt; +    auto quadObject = adoptNS([[WKQuadObject alloc] initWithQuad:[self absoluteQuadWithOwner:owner]]);
&gt; +    NSArray *quadArray = @[quadObject.get()];
&gt;      return quadArray;

Seems like this would read better as a on-liner.

&gt; Source/WebKitLegacy/mac/DOM/ExceptionHandlers.mm:51
&gt; +    auto userInfo = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys:@(description.legacyCode), DOMException, nil]);

Should we consider using the @{} syntax here instead of -[NSDictionary initWithObjectsAndKeys:]?

&gt; Source/WebKitLegacy/mac/DefaultDelegates/WebDefaultUIDelegate.mm:195
&gt;  #if !PLATFORM(IOS_FAMILY)

I suggest we change this to #if PLATFORM(MAC)

&gt; Source/WebKitLegacy/mac/History/WebHistory.mm:143
&gt;  - (void)dealloc
&gt;  {
&gt; -    [_entriesByURL release];
&gt; -    [_orderedLastVisitedDays release];
&gt;      [super dealloc];
&gt;  }

Could remove the whole method.

&gt; Source/WebKitLegacy/mac/History/WebHistory.mm:307
&gt; +    return entry.get();

I think the reason why this code is correct too subtle. Normally it’s incorrect to ever return x.get() where x is a smart pointer. Here it’s OK because it’s owned by some the collection data structure too. Normally we’d want to return entry.autorelease() here instead. And while that would be less efficient, maybe we should consider it.

&gt; Source/WebKitLegacy/mac/History/WebHistory.mm:863
&gt; +    auto entries = adoptNS([[NSArray alloc] initWithObjects:entry, nil]);
&gt; +    [self _sendNotification:WebHistoryItemsAddedNotification entries:entries.get()];

This should use @[] syntax instead:

    [self _sendNotification:WebHistoryItemsAddedNotification entries:@[entry]];

&gt; Source/WebKitLegacy/mac/History/WebHistoryItem.mm:354
&gt;      if (childDicts) {
&gt;          for (int i = [childDicts count] - 1; i &gt;= 0; i--) {

Sure would be nice to find a better idiom for iterating an NSArray backwards.

&gt; Source/WebKitLegacy/mac/Misc/WebNSDataExtras.mm:337
&gt; +                auto newValue = [[NSString alloc] initWithFormat:@&quot;%@, %@&quot;, oldValue, value.get()];
&gt; +                value = WTFMove(newValue);

I think there’s a newly introduced leak here. We need adoptNS in the line of code that calls alloc/initWithFormat:. Also, no reason to have the local variable newValue.

&gt; Source/WebKitLegacy/mac/Misc/WebNSPasteboardExtras.mm:319
&gt; +    auto extensions = adoptNS([[NSArray alloc] initWithObjects:extension, nil]);
&gt; +    [self setPropertyList:extensions.get() forType:legacyFilesPromisePasteboardType()];

Array literal would be better here:

    [self setPropertyList:@[extension] forType:legacyFilesPromisePasteboardType()];

Unless extension might be nil, in which case the old code would make an empty array and this code will raise an Objective-C exception. If concerned about that we could write:

    extension ? @[extension] : nil

Or some other solution like that. But probably we should skip the code if extension is nil.

&gt;&gt; Source/WebKitLegacy/mac/Plugins/Hosted/NetscapePluginHostManager.mm:178
&gt;&gt; +                                    nil]);
&gt; 
&gt; Probably better to use use an NSDictionary literal here.

I agree, but two issues with using a literal:

1) It will be autoreleased, which is likely fine.
2) If anything is nil, initWithObjectsAndKeys: just quietly stops at that point and ignores everything else. The dictionary literal ends up raising an Objective-C exception.

Also, this is Netscape plug-in code for Cocoa platforms so … can we delete it?

&gt; Source/WebKitLegacy/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm:657
&gt; +                                                                  windowFeatures:features.get()];

Should just use @{} here.

&gt;&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm:266
&gt;&gt; +        auto dialog = adoptNS([[NSNumber alloc] initWithBool:features.dialog]);
&gt; 
&gt; These would not better using objective-c value literals, e.g. @(...);

You mean &quot;be better&quot;. And I think so too. Likely won’t even need local variables.

&gt;&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:1613
&gt;&gt; +    RefPtr&lt;WebCore::Frame&gt; result = [WebFrame _createSubframeWithOwnerElement:&amp;ownerElement frameName:name frameView:childView.get()];
&gt; 
&gt; This should use auto. By using RefPtr, this actually looses that the method actually returns a Ref&lt;Frame&gt;.

Loses and loosens.

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.mm:515
&gt; +    auto request = adoptNS([[NSURLRequest alloc] initWithURL:[NSURL fileURLWithPath: pagePath]]);

Consider removing the space after colon when touching this line fo code.

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.mm:524
&gt;  - (void)dealloc
&gt;  {
&gt; -    [_frontendWebView release];
&gt;      [super dealloc];
&gt;  }

I suggest deleting this.

&gt; Source/WebKitLegacy/mac/WebView/WebFrame.mm:193
&gt;  - (void)dealloc
&gt;  {
&gt; -    [webFrameView release];
&gt; -
&gt;      [super dealloc];
&gt;  }

Can remove.

&gt; Source/WebKitLegacy/mac/WebView/WebFrameView.mm:123
&gt;  - (void)dealloc
&gt;  {
&gt; -    [frameScrollView release];
&gt;      [super dealloc];
&gt;  }

Can remove.

&gt; Source/WebKitLegacy/mac/WebView/WebHTMLView.mm:1916
&gt;      if ([hitView isKindOfClass:[WebHTMLView class]])
&gt;          view = (WebHTMLView *)hitView;    

We have dynamic_objc_cast for cases like this: we can write:

    auto view = retainPtr(dynamic_objc_cast&lt;WebHTMLView&gt;(hitView));

&gt; Source/WebKitLegacy/mac/WebView/WebNavigationData.mm:47
&gt;  - (void)dealloc
&gt;  {
&gt; -    [url release];
&gt; -    [title release];
&gt; -    [originalRequest release];
&gt; -    [response release];
&gt; -    [clientRedirectSource release];
&gt; -
&gt;      [super dealloc];
&gt;  }

Can delete this method.

&gt; Source/WebKitLegacy/mac/WebView/WebPDFRepresentation.mm:124
&gt; +    auto doc = adoptNS([[[[self class] PDFDocumentClass] alloc] initWithData:data]);

When touching the code, should rename &quot;doc&quot; to &quot;document&quot;.

&gt; Source/WebKitLegacy/mac/WebView/WebPolicyDelegate.mm:69
&gt;  - (void)dealloc
&gt;  {
&gt; -    [target release];
&gt;      [super dealloc];
&gt;  }

Can delete this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728750</commentid>
    <comment_count>9</comment_count>
      <attachid>420092</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-12 13:31:03 -0800</bug_when>
    <thetext>Comment on attachment 420092
Patch

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

&gt;&gt; Source/WebKitLegacy/mac/WebView/WebFrame.mm:305
&gt;&gt; +    RetainPtr&lt;WebFrame&gt; frame = adoptNS([[self alloc] _initWithWebFrameView:frameView webView:webView]);
&gt; 
&gt; auto?

The cases where I have used an explicit RetainPtr&lt;&gt; instead of auto is because the compiler did not like the auto. I usually get a build error about a method call on this variable being ambiguous later on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728767</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-12 13:52:24 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728768</commentid>
    <comment_count>11</comment_count>
      <attachid>420174</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-12 13:52:27 -0800</bug_when>
    <thetext>Created attachment 420174
Follow-up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728787</commentid>
    <comment_count>12</comment_count>
      <attachid>420174</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-12 14:08:20 -0800</bug_when>
    <thetext>Comment on attachment 420174
Follow-up

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

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:1320
&gt; +    static NSArray *anchorAttrs = nil;
&gt; +    static NSArray *webAreaAttrs = nil;
&gt; +    static NSArray *textAttrs = nil;
&gt; +    static NSArray *listAttrs = nil;
&gt; +    static NSArray *listBoxAttrs = nil;
&gt; +    static NSArray *rangeAttrs = nil;
&gt; +    static NSArray *menuAttrs = nil;
&gt; +    static NSArray *menuBarAttrs = nil;
&gt; +    static NSArray *menuItemAttrs = nil;
&gt; +    static NSArray *controlAttrs = nil;
&gt; +    static NSArray *tableAttrs = nil;
&gt; +    static NSArray *tableRowAttrs = nil;
&gt; +    static NSArray *tableColAttrs = nil;
&gt; +    static NSArray *tableCellAttrs = nil;
&gt; +    static NSArray *groupAttrs = nil;
&gt; +    static NSArray *inputImageAttrs = nil;
&gt; +    static NSArray *passwordFieldAttrs = nil;
&gt; +    static NSArray *tabListAttrs = nil;
&gt; +    static NSArray *comboBoxAttrs = nil;
&gt; +    static NSArray *outlineAttrs = nil;
&gt; +    static NSArray *outlineRowAttrs = nil;
&gt; +    static NSArray *buttonAttrs = nil;
&gt; +    static NSArray *scrollViewAttrs = nil;
&gt; +    static NSArray *incrementorAttrs = nil;

Since these are static, could omit the &quot;= nil&quot;.

But I am not sure how much style commentary to make here since this code seems unnecessarily complex to me and could be refactored further to simplify.

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:1464
&gt; +       NSAccessibilityChildrenAttribute];

Indented one space not enough. By the way, I typically format these things like this:

    xxx = @[
        a,
        b,
        c,
    ];

Note the trailing comma on the last element and keeping the [] on their own lines, so the array element lines are all the same and can be reordered or sorted without making syntax errors.

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3051
&gt; +    static NSArray * paramAttrs = nil;
&gt; +    static NSArray * textParamAttrs = nil;
&gt; +    static NSArray * tableParamAttrs = nil;
&gt; +    static NSArray * webAreaParamAttrs = nil;

Should remove the spaces after the *, I think. Also, &quot;= nil&quot; not needed for static.

&gt; Source/WebKitLegacy/ios/WebView/WebPDFViewPlaceholder.mm:338
&gt; +    if (CFStringGetLength(title.get())) {

The old version of this code implicitly had a null check in the Objective-C dispatch to the length method. To preserve that behavior we need to add an explicit null check now that we are calling a CFString function. The null case definitely exists, like when the dictionary has no Title in it.

&gt; Source/WebKitLegacy/mac/DefaultDelegates/WebDefaultUIDelegate.mm:195
&gt; -#if !PLATFORM(IOS_FAMILY)
&gt; +#if PLATFORM(MAC)

Not sure I should have pushed you to make this change in this one place. The file this is in has so many other uses of IOS_FAMILY as an indirect way to say Mac and not Mac.

&gt; Source/WebKitLegacy/mac/History/WebHistory.mm:858
&gt; +    NSArray *entries = @[ entry ];
&gt; +    [self _sendNotification:WebHistoryItemsAddedNotification entries:entries];

No need for the local variable. Could just be a one-liner.

&gt; Source/WebKitLegacy/mac/History/WebHistoryItem.mm:353
&gt;      if (childDicts) {

No need for this check any more; the code below will cleanly handle nil without it.

&gt; Source/WebKitLegacy/mac/Plugins/Hosted/NetscapePluginHostManager.mm:175
&gt; +    NSDictionary *hostProperties = @{ @&quot;visibleName&quot;:  visibleName, @&quot;bundlePath&quot;: (NSString *)pluginPath };

Double space after &quot;:&quot; before &quot;visibleName&quot;.

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm:441
&gt; +    NSDictionary *dictionary = @{

Why not auto?

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:1614
&gt; +    WebFrame *newFrame = kit(result.ptr());

I would have used auto here too.

&gt; Source/WebKitLegacy/mac/WebView/WebDataSource.mm:384
&gt; +        RetainPtr&lt;id&gt; newRep = repClass != nil ? adoptNS([[repClass alloc] init]) : nil;

Could also remove the &quot;!= nil&quot; here.

&gt; Source/WebKitLegacy/mac/WebView/WebScriptDebugger.mm:103
&gt; +        NSDictionary *info = @{
&gt; +            WebScriptErrorDescriptionKey: nsErrorMessage,
&gt; +            WebScriptErrorLineNumberKey: @(errorLine)
&gt; +        };

The nsErrorMessage here can be nil. Notice that the code above explicitly uses nsStringNilIfEmpty. The old code would quietly make an empty dictionary in that case. The new code will throw an Objective-C exception. I think the best behavior would be to just omit WebScriptErrorDescriptionKey in that case, which probably means two different dictionary literals depending on whether errorMsg is empty or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728789</commentid>
    <comment_count>13</comment_count>
      <attachid>420174</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-12 14:09:29 -0800</bug_when>
    <thetext>Comment on attachment 420174
Follow-up

review- because of the null check removed in WebPDFViewPlaceholder.mm and the nil in the dictionary literal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728800</commentid>
    <comment_count>14</comment_count>
      <attachid>420180</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-12 14:32:26 -0800</bug_when>
    <thetext>Created attachment 420180
Follow-up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728802</commentid>
    <comment_count>15</comment_count>
      <attachid>420180</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-12 14:38:40 -0800</bug_when>
    <thetext>Comment on attachment 420180
Follow-up

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

Darn it, spotted another possible problem. I don’t think you can store literals into globals safely without retaining.

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:1321
&gt; +    static NSArray *attributes = @[

Not sure, but in non-ARC code like this I don’t think this is safe. I think it might autorelease and then store without retaining! So you might need to add a retain. Which is like the opposite of what we are trying to do here. Various options:

    static NeverDestroyed&lt;RetainPtr&lt;NSArray&gt;&gt;
    use retainPtr() and leakRef()
    add a retain
    Stop using globals ... why does this function have so many globals? There must be a better way, like storing these in a global object?

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:1351
&gt; +    static NSArray *commonMenuAttrs = @[

Ditto.

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:1459
&gt; +    static NSArray *menuButtonAttrs = @[

Again.

&gt; Source/WebCore/editing/cocoa/HTMLConverter.mm:1935
&gt; +                    auto newStyle = adoptNS([paragraphStyle mutableCopy]);

Can also delete the &quot;newStyle = nil&quot; line below since we did this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728808</commentid>
    <comment_count>16</comment_count>
      <attachid>420180</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-12 14:45:04 -0800</bug_when>
    <thetext>Comment on attachment 420180
Follow-up

So unless I am wrong about those literals in globals, this has to be another review-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728810</commentid>
    <comment_count>17</comment_count>
      <attachid>420183</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-12 14:59:56 -0800</bug_when>
    <thetext>Created attachment 420183
Follow-up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728814</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-12 15:02:29 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; Comment on attachment 420180 [details]
&gt; Follow-up
&gt; 
&gt; So unless I am wrong about those literals in globals, this has to be another
&gt; review-

Based on existing usage in the code base, you are very likely right. I have opted for retainPtr().leakRef() which was the minimal change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728853</commentid>
    <comment_count>19</comment_count>
      <attachid>420183</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-12 16:41:18 -0800</bug_when>
    <thetext>Comment on attachment 420183
Follow-up

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

&gt; Source/WebKitLegacy/mac/History/WebHistoryItem.mm:352
&gt;      NSArray *childDicts = [dict objectForKey:childrenKey];

Could get rid of this local and merge it into the next line.

&gt; Source/WebKitLegacy/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm:656
&gt; +                                                        windowFeatures:@{ }];

Existing indenting here is lining up the &quot;:&quot; characters. I prefer just putting things on one line, but this mix is messy.

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:1612
&gt; +    auto *newFrame = kit(result.ptr());

I don’t think this should be:

    auto *xxx =

Either of these makes sense to me:

    auto xxx =
    WebFrame *xxx =

And possibly if you want to emphasize it’s a pointer:

    auto* xxx =

But to put the * in the &quot;Objective-C&quot; place and use auto, doesn’t seem right.

&gt; Source/WebKitLegacy/mac/WebView/WebScriptDebugger.mm:100
&gt; +        if (NSString* nsErrorMessage = nsStringNilIfEmpty(errorMsg)) {

Seems like we want to move that &quot;*&quot; before nsErrorMessage. Also, could just name it errorMessage. Or could reverse the logic, write:

    if (errorMsg.isEmpty()) {

And then we would not even have to use nsStringNilIfEmpty at all.

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:2583
&gt; +                                            windowFeatures:@{ }];

Existing indenting here is lining up the &quot;:&quot; characters. I prefer just putting things on one line, but this mix is messy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728862</commentid>
    <comment_count>20</comment_count>
      <attachid>420195</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-12 16:52:48 -0800</bug_when>
    <thetext>Created attachment 420195
Follow-up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728890</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-12 18:16:49 -0800</bug_when>
    <thetext>Committed r272828: &lt;https://commits.webkit.org/r272828&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420195.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420078</attachid>
            <date>2021-02-11 18:54:46 -0800</date>
            <delta_ts>2021-02-11 19:15:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221780-20210211185445.patch</filename>
            <type>text/plain</type>
            <size>293328</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uN2FmOWU4MjlhM2Y0NDBlN2NiZmI0Yzk1MjQ0OTIz
ZjZiOWQ2NmZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIxLTAyLTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVz
YWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJl
bGVhc2VdIGluIFdlYktpdCBieSB1c2luZyBzbWFydCBwb2ludGVycy4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhcnJheU9mVGV4dEZvclRleHRN
YXJrZXJzOmF0dHJpYnV0ZWQ6XSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0
U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpwb3N0
VXNlckluZm9Gb3JDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBv
c3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb25G
b3JUZXh0Q29udHJvbCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgorICAgICAg
ICAqIGJyaWRnZS90ZXN0YmluZGluZ3MubW06CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpI
VE1MQ29udmVydGVyKToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRl
c0ZvckVsZW1lbnQpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZE1hcmtlcnNUb0xpc3Qp
OgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAqIGhpc3RvcnkvbWFjL0hp
c3RvcnlJdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OnNldFZpZXdT
dGF0ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjOjpleHBvc2VkVW5maWxsZWRBcmVhIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW06CisgICAgICAgICgtW1dlYkNvcmVNb3Rpb25NYW5h
Z2VyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQ29yZU1vdGlvbk1hbmFnZXIgaW5pdGlhbGl6
ZU9uTWFpblRocmVhZF0pOgorICAgICAgICAoLVtXZWJDb3JlTW90aW9uTWFuYWdlciBjaGVja0Ns
aWVudFN0YXR1c10pOgorICAgICAgICAoLVtXZWJDb3JlTW90aW9uTWFuYWdlciB1cGRhdGVdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW06CisgICAgICAgICgtW1dBS1Zp
ZXcgZGVhbGxvY10pOgorICAgICAgICAoLVtXQUtWaWV3IF9zdWJ2aWV3UmVmZXJlbmNlc10pOgor
ICAgICAgICAoLVtXQUtWaWV3IGFkZFN1YnZpZXc6XSk6CisgICAgICAgICgtW1dBS1ZpZXcgcmVt
b3ZlRnJvbVN1cGVydmlld10pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLVmlld0lu
dGVybmFsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViTmV0d29ya1N0YXRlT2JzZXJ2ZXIgaW5pdFdpdGhCbG9jazpd
KToKKyAgICAgICAgKC1bV2ViTmV0d29ya1N0YXRlT2JzZXJ2ZXIgZGVhbGxvY10pOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6Om1ha2VEZWxlZ2F0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5kV29y
ZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmROZXh0V29yZEZyb21JbmRleCk6CisK
KzIwMjEtMDItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXcgdXNhZ2Ugb2YgYWRvcHROUygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjE3NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXZpZXcgdXNhZ2Ugb2YgYWRvcHROUygpOgorICAgICAgICAxLiBN
YWtlIHN1cmUgd2UgY2FsbCBhZG9wdE5TKCkgYXMgc29vbiBhcyB3ZSBhbGxvY2F0ZSB0aGUgb2Jq
ZWN0IGluc3RlYWQgb2YgZG9pbmcgaXQgbGF0ZXIgb24sIGFzIHRoaXMgaXMgbGVzcyBlcnJvci1w
cm9uZQorICAgICAgICAyLiBGaXggY2FzZXMgd2hlcmUgd2UgY2FsbGVkIGFkb3B0TlMoKSBidXQg
cmVhbGx5IHNob3VsZCBoYXZlIHJldGFpbmVkIGluc3RlYWQgb2YgYWRvcHRpbmcKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVy
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmFk
ZEFuaW1hdGlvbkZvcktleSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1I
VFRQQm9keSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURhdGVUaW1lRm9ybWF0dGVyKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5jb2Rl
ZFByZWZlcmVuY2VWYWx1ZSk6CisKIDIwMjEtMDItMTEgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0
aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdW0ZDUl0gUmFuZ2UgaW5wdXRzIGhhdmUgYW4g
aW5jb3JyZWN0IFJUTCBhcHBlYXJhbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEzMDYwZmM0ZWQ3ZTIzZmM4MjIw
ZTliNjhmMjc2NDhlMmY3ZmQ2OGIuLjc5ZTYzNGNjZmQ2Yjg2YTc1Nzg5NGMyZGI4OTg0NzYxMWNj
YWQxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMjEtMDItMTEgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2Yg
W29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjE3ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0g
aW4gV2ViS2l0IGJ5IHVzaW5nIHNtYXJ0IHBvaW50ZXJzLgorCisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dLT2JqZWN0Lm1tOgorICAgICAgICAoLVtXS09iamVjdCBkZWFsbG9jXSk6CisgICAgICAg
IChpbml0aWFsaXplVGFyZ2V0SWZOZWVkZWQpOgorICAgICAgICAoLVtXS09iamVjdCBmb3J3YXJk
aW5nVGFyZ2V0Rm9yU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dLT2JqZWN0IGZvcndhcmRJbnZv
Y2F0aW9uOl0pOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlUHJvcGVydHlBcHBsaWVyLm1tOgorICAgICAgICAoLVtVSVZpZXcgX3dlYl9zZXRTdWJ2aWV3
czpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfc25hcHNob3RSZWN0OmludG9JbWFnZU9mV2lkdGg6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBp
bml0V2l0aExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OmN1c3RvbVByb3RvY29sSUQ6
cmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBkZWFsbG9jXSk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3Rh
cnRMb2FkaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0lu
c3BlY3RvckhpZ2hsaWdodFZpZXcubW06CisgICAgICAgICgtW1dLSW5zcGVjdG9ySGlnaGxpZ2h0
VmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcgZGVhbGxvY10pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgX3JlbW92
ZUFsbExheWVyc10pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgX2NyZWF0
ZUxheWVyczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2VsZWN0UG9zaXRpb25BdFBvaW50
OnN0YXlpbmdXaXRoaW5Gb2N1c2VkRWxlbWVudDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnk6aW5EaXJlY3Rpb246
ZnJvbVBvaW50OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IG1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5OmluRGlyZWN0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dDp3aXRoQm91bmRhcnk6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS1Njcm9sbFZpZXcubW06CisgICAgICAgICgtW1dLU2Nyb2xsVmlldyBfdXBkYXRlRGVs
ZWdhdGVdKToKKyAgICAgICAgKC1bV0tTY3JvbGxWaWV3IGRlYWxsb2NdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW06CisgICAgICAgICgtW1dL
U2VsZWN0UG9wb3ZlciBpbml0V2l0aFZpZXc6aGFzR3JvdXBzOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1Rl
eHRJbnB1dFBhbmVsIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRQYW5lbCBpbml0
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbToKKyAgICAg
ICAgKCtbV0tQb3BvdmVyQ29sb3JXZWxsIF9jb2xvclBvcG92ZXJDcmVhdGVJZk5lY2Vzc2FyeTpd
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3RCYXNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbToKKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlUGFyZW50Ol0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbToKKyAgICAg
ICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBkZWFsbG9jXSk6CisgICAgICAgICgt
W1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgorCisyMDIxLTAyLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3IHVzYWdlIG9mIGFkb3B0TlMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3IHVzYWdlIG9mIGFkb3B0TlMoKToKKyAgICAg
ICAgMS4gTWFrZSBzdXJlIHdlIGNhbGwgYWRvcHROUygpIGFzIHNvb24gYXMgd2UgYWxsb2NhdGUg
dGhlIG9iamVjdCBpbnN0ZWFkIG9mIGRvaW5nIGl0IGxhdGVyIG9uLCBhcyB0aGlzIGlzIGxlc3Mg
ZXJyb3ItcHJvbmUKKyAgICAgICAgMi4gRml4IGNhc2VzIHdoZXJlIHdlIGNhbGxlZCBhZG9wdE5T
KCkgYnV0IHJlYWxseSBzaG91bGQgaGF2ZSByZXRhaW5lZCBpbnN0ZWFkIG9mIGFkb3B0aW5nCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3Qu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6
CisKIDIwMjEtMDItMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtDb2NvYV0gSVBDIGRlY29kZXIgaXMgdXNpbmcgZGVjb2RlZCBzaXplIHRvIGFsbG9jYXRlIG1l
bW9yeSBmb3IgYW4gYXJyYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA3MWQ2ZTM4
OGJlOWM5NTFiMTA0YzAzZWMwYzEzYjhlZjNmZjc4MTJlLi41Mjk2ZjQ1NDIzZjIzNmE0Nzc4OGEy
MzEwNzUxZjRlOGY4ZWFjZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMjEtMDItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE3ODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2Ug
ZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0IGJ5IHVzaW5nIHNtYXJ0
IHBvaW50ZXJzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9T
Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50SU9TOjpydW5PcGVuUGFuZWwpOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBkZWFs
bG9jXSk6CisgICAgICAgICgtW1dlYlBERlZpZXcgc2V0RGF0YVNvdXJjZTpdKToKKyAgICAgICAg
KC1bV2ViUERGVmlldyBfY2hlY2tQREZUaXRsZV0pOgorICAgICAgICAoLVtXZWJQREZWaWV3IHRp
dGxlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAg
ICAgICgtW1dlYlBERlZpZXdQbGFjZWhvbGRlciBfdXBkYXRlVGl0bGVGb3JEb2N1bWVudElmQXZh
aWxhYmxlXSk6CisKIDIwMjEtMDEtMTkgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIE1vZHVsYXJpemUgV2ViS2l0TGVnYWN5LmZyYW1ld29yawpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IGE3ZTI2MTU1N2U4MDczNWE3MzM1NDQ5MmY3ZDg0ZTc1ZTA2
ODA0MDUuLjZhNjdjMDMxZTlkZTBlNGM0OGUyNjA2OGFmMjM4YmM4MzcyMjY1ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODMgQEAKKzIwMjEtMDItMTEgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNh
Z2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE3ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVs
ZWFzZV0gaW4gV2ViS2l0IGJ5IHVzaW5nIHNtYXJ0IHBvaW50ZXJzLgorCisgICAgICAgICogRE9N
L0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBhYnNvbHV0ZVF1YWRz
XSk6CisgICAgICAgICgtW0RPTUhUTUxBcmVhRWxlbWVudCBhYnNvbHV0ZVF1YWRzV2l0aE93bmVy
Ol0pOgorICAgICAgICAqIERPTS9FeGNlcHRpb25IYW5kbGVycy5tbToKKyAgICAgICAgKHJhaXNl
RE9NRXJyb3JFeGNlcHRpb24pOgorICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVs
dFVJRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6
cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDpkZWZhdWx0VGV4dDppbml0aWF0
ZWRCeUZyYW1lOl0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeS5tbToKKyAgICAgICAg
KC1bV2ViSGlzdG9yeVByaXZhdGUgaW5pdF0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0
ZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIHJlbW92ZUl0ZW1Gcm9t
RGF0ZUNhY2hlczpdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgYWRkSXRlbVRvRGF0
ZUNhY2hlczpdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgdmlzaXRlZFVSTDp3aXRo
VGl0bGU6XSk6CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGFkZEl0ZW06ZGlzY2FyZER1
cGxpY2F0ZTpdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgcmVidWlsZEhpc3RvcnlC
eURheUlmTmVlZGVkOl0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSByZW1vdmVBbGxJ
dGVtc10pOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBvcmRlcmVkTGFzdFZpc2l0ZWRE
YXlzXSk6CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGxvYWRIaXN0b3J5R3V0c0Zyb21V
Ukw6c2F2ZWRJdGVtc0NvdW50OmNvbGxlY3REaXNjYXJkZWRJdGVtc0ludG86ZXJyb3I6XSk6Cisg
ICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGFkZFZpc2l0ZWRMaW5rc1RvVmlzaXRlZExpbmtT
dG9yZTpdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeSBsb2FkRnJvbVVSTDplcnJvcjpdKToKKyAg
ICAgICAgKC1bV2ViSGlzdG9yeSBfdmlzaXRlZFVSTDp3aXRoVGl0bGU6bWV0aG9kOndhc0ZhaWx1
cmU6XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbToKKyAgICAgICAgKC1b
V2ViSGlzdG9yeUl0ZW0gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246XSk6CisgICAg
ICAgICogTWlzYy9XZWJEb3dubG9hZC5tbToKKyAgICAgICAgKC1bV2ViRG93bmxvYWRJbnRlcm5h
bCBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkRvd25sb2FkSW50ZXJuYWwgc2V0UmVhbERlbGVn
YXRlOl0pOgorICAgICAgICAoLVtXZWJEb3dubG9hZEludGVybmFsIGRvd25sb2FkRGlkQmVnaW46
XSk6CisgICAgICAgICgtW1dlYkRvd25sb2FkSW50ZXJuYWwgZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0pOgorICAgICAgICAoLVtXZWJEb3dubG9hZEludGVybmFs
IGRvd25sb2FkOmRpZFJlY2VpdmVSZXNwb25zZTpdKToKKyAgICAgICAgKC1bV2ViRG93bmxvYWRJ
bnRlcm5hbCBkb3dubG9hZDpkaWRSZWNlaXZlRGF0YU9mTGVuZ3RoOl0pOgorICAgICAgICAoLVtX
ZWJEb3dubG9hZEludGVybmFsIGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOl0pOgorICAgICAgICAoLVtXZWJEb3dubG9hZEludGVybmFsIGRvd25sb2FkOmRp
ZENyZWF0ZURlc3RpbmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJEb3dubG9hZEludGVybmFsIGRv
d25sb2FkRGlkRmluaXNoOl0pOgorICAgICAgICAoLVtXZWJEb3dubG9hZEludGVybmFsIGRvd25s
b2FkOmRpZEZhaWxXaXRoRXJyb3I6XSk6CisgICAgICAgICogTWlzYy9XZWJOU0RhdGFFeHRyYXMu
bW06CisgICAgICAgICgtW05TRGF0YSBfd2Via2l0X3BhcnNlUkZDODIySGVhZGVyRmllbGRzXSk6
CisgICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW06CisgICAgICAgICgtW05T
UGFzdGVib2FyZCBfd2ViX3dyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50Ol0pOgorICAg
ICAgICAoLVtOU1Bhc3RlYm9hcmQgX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVt
ZW50OlVSTDp0aXRsZTphcmNoaXZlOnNvdXJjZTpdKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyOjpzcGF3blBsdWdpbkhvc3QpOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpwZXJmb3JtUmVxdWVzdCk6CisgICAgICAgICog
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbToKKyAgICAgICAgKFdlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBwbHVn
aW5WaWV3OnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3
IGxvYWRQbHVnaW5SZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcg
bG9hZFJlcXVlc3Q6aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpdKToK
KyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dl
YlBsdWdpbkNvbnRyb2xsZXIgcGx1Z2luVmlldzpyZWNlaXZlZFJlc3BvbnNlOl0pOgorICAgICAg
ICAqIFBsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW06CisgICAgICAgICgtW1dlYlBsdWdpbkRh
dGFiYXNlIHJlZnJlc2hdKToKKyAgICAgICAgKC1bV2ViUGx1Z2luRGF0YWJhc2UgX3JlbW92ZVBs
dWdpbjpdKToKKyAgICAgICAgKC1bV2ViUGx1Z2luRGF0YWJhc2UgX3NjYW5Gb3JOZXdQbHVnaW5z
XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ2hyb21lQ2xp
ZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6bW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRl
ZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6cnVuT3Bl
blBhbmVsKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAg
ICAgIChhdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24pOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmZvcmNlTGF5b3V0Rm9yTm9uSFRNTCk6CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUpOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkgY29uc3QpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKToKKyAgICAgICAgKHBsdWdpblZp
ZXcpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW06CisgICAgICAgIChX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoLVtXZWJH
ZW9sb2NhdGlvblByb3ZpZGVySW5pdGlhbGl6YXRpb25MaXN0ZW5lciBpbml0aWFsaXphdGlvbkFs
bG93ZWRXZWJWaWV3Ol0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBpbml0XSk6
CisgICAgICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgaW5pdFdpdGhJbnNwZWN0
ZWRXZWJWaWV3OmlzVW5kZXJUZXN0Ol0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dD
b250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJv
bGxlciBmcm9udGVuZFdlYlZpZXddKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29u
dHJvbGxlciB3aW5kb3ddKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxl
ciBzaG93V2luZG93Ol0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVy
IHdlYlZpZXc6cnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjphbGxv
d011bHRpcGxlRmlsZXM6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVy
bWlzc2lvbik6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNoZWNrUGVybWlzc2lv
bik6CisgICAgICAgICogV2ViVmlldy9XZWJBcmNoaXZlLm1tOgorICAgICAgICAoLVtXZWJBcmNo
aXZlUHJpdmF0ZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFyY2hpdmUgaW5pdFdpdGhNYWlu
UmVzb3VyY2U6c3VicmVzb3VyY2VzOnN1YmZyYW1lQXJjaGl2ZXM6XSk6CisgICAgICAgICgtW1dl
YkFyY2hpdmUgbWFpblJlc291cmNlXSk6CisgICAgICAgICgtW1dlYkFyY2hpdmUgc3VicmVzb3Vy
Y2VzXSk6CisgICAgICAgICgtW1dlYkFyY2hpdmUgc3ViZnJhbWVBcmNoaXZlc10pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBf
ZG9jdW1lbnRGcmFnbWVudFdpdGhBcmNoaXZlOl0pOgorICAgICAgICAoLVtXZWJEYXRhU291cmNl
IF9tYWtlUmVwcmVzZW50YXRpb25dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZVByaXZhdGUgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJGcmFt
ZVByaXZhdGUgc2V0V2ViRnJhbWVWaWV3Ol0pOgorICAgICAgICAoK1tXZWJGcmFtZSBfY3JlYXRl
RnJhbWVXaXRoUGFnZTpmcmFtZU5hbWU6ZnJhbWVWaWV3Om93bmVyRWxlbWVudDpdKToKKyAgICAg
ICAgKCtbV2ViRnJhbWUgX2NyZWF0ZU1haW5GcmFtZVdpdGhQYWdlOmZyYW1lTmFtZTpmcmFtZVZp
ZXc6XSk6CisgICAgICAgICgrW1dlYkZyYW1lIF9jcmVhdGVNYWluRnJhbWVXaXRoU2ltcGxlSFRN
TERvY3VtZW50V2l0aFBhZ2U6ZnJhbWVWaWV3OnN0eWxlOl0pOgorICAgICAgICAoLVtXZWJGcmFt
ZSBnZXREaWN0YXRpb25SZXN1bHRSYW5nZXM6YW5kTWV0YWRhdGFzOl0pOgorICAgICAgICAoLVtX
ZWJGcmFtZSBmcmFtZVZpZXddKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwu
aDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tbToKKyAgICAgICAgKC1bV2ViRnJh
bWVWaWV3UHJpdmF0ZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Nyb2xs
Vmlld10pOgorICAgICAgICAoLVtXZWJGcmFtZVZpZXcgX2luc3RhbGxdKToKKyAgICAgICAgKC1b
V2ViRnJhbWVWaWV3IGluaXRXaXRoRnJhbWU6XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBf
c2V0Q3VzdG9tU2Nyb2xsVmlld0NsYXNzOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnVsbFNj
cmVlbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGlu
aXRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJI
VE1MVmlldyBfdXBkYXRlTW91c2VvdmVyV2l0aEV2ZW50Ol0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViTmF2aWdhdGlvbkRhdGEubW06CisgICAgICAgICgtW1dlYk5hdmlnYXRpb25EYXRhUHJpdmF0
ZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYk5hdmlnYXRpb25EYXRhIGluaXRXaXRoVVJMU3Ry
aW5nOnRpdGxlOm9yaWdpbmFsUmVxdWVzdDpyZXNwb25zZTpoYXNTdWJzdGl0dXRlRGF0YTpjbGll
bnRSZWRpcmVjdFNvdXJjZTpdKToKKyAgICAgICAgKC1bV2ViTmF2aWdhdGlvbkRhdGEgdXJsXSk6
CisgICAgICAgICgtW1dlYk5hdmlnYXRpb25EYXRhIHRpdGxlXSk6CisgICAgICAgICgtW1dlYk5h
dmlnYXRpb25EYXRhIG9yaWdpbmFsUmVxdWVzdF0pOgorICAgICAgICAoLVtXZWJOYXZpZ2F0aW9u
RGF0YSByZXNwb25zZV0pOgorICAgICAgICAoLVtXZWJOYXZpZ2F0aW9uRGF0YSBjbGllbnRSZWRp
cmVjdFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGRG9jdW1lbnRFeHRyYXMubW06
CisgICAgICAgIChhbGxTY3JpcHRzSW5QREZEb2N1bWVudCk6CisgICAgICAgICogV2ViVmlldy9X
ZWJQREZSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViUERGUmVwcmVzZW50YXRpb24g
ZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQ
REZWaWV3Lm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3IG1lbnVGb3JFdmVudDpdKToKKyAgICAg
ICAgKC1bV2ViUERGVmlldyBjb3VudE1hdGNoZXNGb3JUZXh0OmluRE9NUmFuZ2U6b3B0aW9uczps
aW1pdDptYXJrTWF0Y2hlczpdKToKKyAgICAgICAgKC1bV2ViUERGVmlldyBhdHRyaWJ1dGVkU3Ry
aW5nXSk6CisgICAgICAgICgtW1dlYlBERlZpZXcgc2VsZWN0aW9uSW1hZ2VGb3JjaW5nQmxhY2tU
ZXh0Ol0pOgorICAgICAgICAoLVtXZWJQREZWaWV3IF9tZW51SXRlbXNGcm9tUERGS2l0Rm9yRXZl
bnQ6XSk6CisgICAgICAgICgtW1dlYlBERlZpZXcgX25leHRNYXRjaEZvcjpkaXJlY3Rpb246Y2Fz
ZVNlbnNpdGl2ZTp3cmFwOmZyb21TZWxlY3Rpb246c3RhcnRJblNlbGVjdGlvbjpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlBvbGljeURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJQb2xpY3lE
ZWNpc2lvbkxpc3RlbmVyUHJpdmF0ZSBpbml0V2l0aFRhcmdldDphY3Rpb246XSk6CisgICAgICAg
ICgtW1dlYlBvbGljeURlY2lzaW9uTGlzdGVuZXJQcml2YXRlIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciBfdXNlUG9saWN5Ol0pOgorICAgICAgICAoLVtX
ZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyIF9pbnZhbGlkYXRlXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldElCQ3Jl
YXRvcklEOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW06CisgICAg
ICAgIChXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFyc2VkKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViVGV4dENvbXBs
ZXRpb25Db250cm9sbGVyIF9idWlsZFVJXSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyIGluaXRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlZpZXcgX3JlZ2lzdGVyRHJhZ2dlZFR5cGVzXSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgr
W1dlYlZpZXcgX3N1cHBvcnRlZEZpbGVFeHRlbnNpb25zXSk6CisgICAgICAgICgtW1dlYlZpZXcg
aW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTpmcmFtZTpwcmVmZXJlbmNlczpncm91cE5h
bWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Rvd25sb2FkVVJMOl0pOgorICAgICAgICAoLVtX
ZWJWaWV3IF9vcGVuTmV3V2luZG93V2l0aFJlcXVlc3Q6XSk6CisgICAgICAgICgtW1dlYlZpZXcg
X2RpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcg
Y2FyZXRDaGFuZ2VkXSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0QmFja2dyb3VuZENvbG9yOl0p
OgorICAgICAgICAoK1tXZWJWaWV3IHNldE1JTUVUeXBlc1Nob3duQXNIVE1MOl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IHNldFByZWZlcmVuY2VzOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldFBy
ZWZlcmVuY2VzSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRDdXJyZW50Tm9k
ZUhpZ2hsaWdodDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzdG9wTG9hZGluZ0FuZENsZWFyXSk6
CisgICAgICAgICgtW1dlYlZpZXcgX29wZW5GcmFtZUluTmV3V2luZG93RnJvbU1lbnU6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgX3NlYXJjaFdpdGhHb29nbGVGcm9tTWVudTpdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYldpbmRvd0FuaW1hdGlvbi5tbToKKyAgICAgICAgKC1bV2ViV2luZG93U2Nh
bGVBbmltYXRpb24gc2V0U3ViQW5pbWF0aW9uOl0pOgorCiAyMDIxLTAyLTEwICBSb2IgQnVpcyAg
PHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIGV2ZW50IGxvb3AgdG8gc2V0IHRpdGxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDNjZWU5NmZlMzZm
ODRkYjkyNDRhYTA5MDVkMTZmZmY3MDEwNTM1M2EuLmQ0NzI5MDdmNjM1MzNlNDg2Yjk0NTQ4MTdi
OTM0ZjJiMjJjYmMzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CkBAIC0yMzYxLDE2ICsyMzYxLDE0IEBAIC0gKE5TQXJyYXkgKilhcnJheU9mVGV4dEZvclRleHRN
YXJrZXJzOihOU0FycmF5ICopbWFya2VycyBhdHRyaWJ1dGVkOihCT09MKWF0dHJpCiAgICAgICAg
ICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlz
dE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIG1ha2VDb250YWluZXJPZmZzZXRQ
b3NpdGlvbihpdC5yYW5nZSgpLnN0YXJ0KSk7CiAKICAgICAgICAgICAgICAgICBpZiAoIWxpc3RN
YXJrZXJUZXh0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBOU011dGFibGVBdHRy
aWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nID0gW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0XTsKLSAgICAgICAgICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5k
VGV4dChhdHRyU3RyaW5nLCAmbm9kZSwgbGlzdE1hcmtlclRleHQpOwotICAgICAgICAgICAgICAg
ICAgICBbYXJyYXkgYWRkT2JqZWN0OmF0dHJTdHJpbmddOwotICAgICAgICAgICAgICAgICAgICBb
YXR0clN0cmluZyByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBhdHRyU3RyaW5n
ID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5n
LmdldCgpLCAmbm9kZSwgbGlzdE1hcmtlclRleHQpOworICAgICAgICAgICAgICAgICAgICBbYXJy
YXkgYWRkT2JqZWN0OmF0dHJTdHJpbmcuZ2V0KCldOwogICAgICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKmF0dHJTdHJpbmcgPSBbW05T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdOwotICAgICAgICAgICAgICAgIEFY
QXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoYXR0clN0cmluZywgJm5vZGUsIGl0LnRleHQoKS5j
cmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkpOwotICAgICAgICAgICAgICAgIFth
cnJheSBhZGRPYmplY3Q6YXR0clN0cmluZ107Ci0gICAgICAgICAgICAgICAgW2F0dHJTdHJpbmcg
cmVsZWFzZV07CisgICAgICAgICAgICAgICAgYXV0byBhdHRyU3RyaW5nID0gYWRvcHROUyhbW05T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAgICAgICBB
WEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcuZ2V0KCksICZub2RlLCBpdC50
ZXh0KCkuY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBbYXJyYXkgYWRkT2JqZWN0OmF0dHJTdHJpbmcuZ2V0KCldOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgTm9kZSogcmVwbGFjZWROb2RlID0gaXQubm9k
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0
Q2FjaGVNYWMubW0KaW5kZXggMDZlZWM2YTliNmM5NjM2MDJjOTUzYjJkYmUxMjQ1NWZkMWFiYTVk
Yy4uZGM0Y2QxMzA5MzAxZTJjNjk2NTMwYTY1NmYwNjI1Mjk5OTliMmNkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBA
IC00MjMsNyArNDIzLDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdl
UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QKICAgICBpZiAoIW9iamVj
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqdXNlckluZm8g
PSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NV07CisgICAg
YXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OjVdKTsKICAgICBpZiAobV9pc1N5bmNocm9uaXppbmdTZWxlY3Rpb24pCiAg
ICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4
dFN0YXRlU3luY0tleV07CiAgICAgaWYgKGludGVudC50eXBlICE9IEFYVGV4dFN0YXRlQ2hhbmdl
VHlwZVVua25vd24pIHsKQEAgLTQ2MiwxMiArNDYyLDEwIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2Jq
ZWN0CiAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6d3JhcHBlciBmb3JLZXk6TlNBY2Nlc3Np
YmlsaXR5VGV4dENoYW5nZUVsZW1lbnRdOwogCiAgICAgaWYgKGF1dG8gcm9vdCA9IHJvb3RXZWJB
cmVhKCkpIHsKLSAgICAgICAgQVhQb3N0Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKHJvb3RXZWJB
cmVhKCktPndyYXBwZXIoKSwgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0Q2hhbmdlZE5vdGlm
aWNhdGlvbiwgdXNlckluZm8pOworICAgICAgICBBWFBvc3ROb3RpZmljYXRpb25XaXRoVXNlcklu
Zm8ocm9vdFdlYkFyZWEoKS0+d3JhcHBlcigpLCBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRD
aGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mby5nZXQoKSk7CiAgICAgICAgIGlmIChyb290LT53
cmFwcGVyKCkgIT0gb2JqZWN0LT53cmFwcGVyKCkpCi0gICAgICAgICAgICBBWFBvc3ROb3RpZmlj
YXRpb25XaXRoVXNlckluZm8ob2JqZWN0LT53cmFwcGVyKCksIE5TQWNjZXNzaWJpbGl0eVNlbGVj
dGVkVGV4dENoYW5nZWROb3RpZmljYXRpb24sIHVzZXJJbmZvKTsKKyAgICAgICAgICAgIEFYUG9z
dE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhvYmplY3QtPndyYXBwZXIoKSwgTlNBY2Nlc3NpYmls
aXR5U2VsZWN0ZWRUZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbiwgdXNlckluZm8uZ2V0KCkpOwogICAg
IH0KLQotICAgIFt1c2VySW5mbyByZWxlYXNlXTsKIH0KIAogc3RhdGljIHZvaWQgYWRkVGV4dE1h
cmtlckZvcihOU011dGFibGVEaWN0aW9uYXJ5KiBjaGFuZ2UsIEFYQ29yZU9iamVjdCYgb2JqZWN0
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQpAQCAtNTEyLDcgKzUxMCw3IEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9u
KEFjY2Vzc2liaWxpdHlPYmplY3QqCiAKIHN0YXRpYyB2b2lkIHBvc3RVc2VySW5mb0ZvckNoYW5n
ZXMoQVhDb3JlT2JqZWN0JiByb290V2ViQXJlYSwgQVhDb3JlT2JqZWN0JiBvYmplY3QsIE5TTXV0
YWJsZUFycmF5KiBjaGFuZ2VzKQogewotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnVzZXJJbmZv
ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjRdOworICAg
IGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eTo0XSk7CiAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpAKHBsYXRmb3JtQ2hh
bmdlVHlwZUZvcldlYkNvcmVDaGFuZ2VUeXBlKEFYVGV4dFN0YXRlQ2hhbmdlVHlwZUVkaXQpKSBm
b3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dFN0YXRlQ2hhbmdlVHlwZUtleV07CiAgICAgaWYgKGNo
YW5nZXMuY291bnQpCiAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6Y2hhbmdlcyBmb3JLZXk6
TlNBY2Nlc3NpYmlsaXR5VGV4dENoYW5nZVZhbHVlc107CkBAIC01MjAsMTEgKzUxOCw5IEBAIHN0
YXRpYyB2b2lkIHBvc3RVc2VySW5mb0ZvckNoYW5nZXMoQVhDb3JlT2JqZWN0JiByb290V2ViQXJl
YSwgQVhDb3JlT2JqZWN0JiBvYmplCiAgICAgaWYgKGlkIHdyYXBwZXIgPSBvYmplY3Qud3JhcHBl
cigpKQogICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OndyYXBwZXIgZm9yS2V5Ok5TQWNjZXNz
aWJpbGl0eVRleHRDaGFuZ2VFbGVtZW50XTsKIAotICAgIEFYUG9zdE5vdGlmaWNhdGlvbldpdGhV
c2VySW5mbyhyb290V2ViQXJlYS53cmFwcGVyKCksIE5TQWNjZXNzaWJpbGl0eVZhbHVlQ2hhbmdl
ZE5vdGlmaWNhdGlvbiwgdXNlckluZm8pOworICAgIEFYUG9zdE5vdGlmaWNhdGlvbldpdGhVc2Vy
SW5mbyhyb290V2ViQXJlYS53cmFwcGVyKCksIE5TQWNjZXNzaWJpbGl0eVZhbHVlQ2hhbmdlZE5v
dGlmaWNhdGlvbiwgdXNlckluZm8uZ2V0KCkpOwogICAgIGlmIChyb290V2ViQXJlYS53cmFwcGVy
KCkgIT0gb2JqZWN0LndyYXBwZXIoKSkKLSAgICAgICAgQVhQb3N0Tm90aWZpY2F0aW9uV2l0aFVz
ZXJJbmZvKG9iamVjdC53cmFwcGVyKCksIE5TQWNjZXNzaWJpbGl0eVZhbHVlQ2hhbmdlZE5vdGlm
aWNhdGlvbiwgdXNlckluZm8pOwotCi0gICAgW3VzZXJJbmZvIHJlbGVhc2VdOworICAgICAgICBB
WFBvc3ROb3RpZmljYXRpb25XaXRoVXNlckluZm8ob2JqZWN0LndyYXBwZXIoKSwgTlNBY2Nlc3Np
YmlsaXR5VmFsdWVDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mby5nZXQoKSk7CiB9CiAKIHZv
aWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9u
KEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWFRleHRFZGl0VHlwZSBkZWxldGlvblR5cGUsIGNvbnN0
IFN0cmluZyYgZGVsZXRlZFRleHQsIEFYVGV4dEVkaXRUeXBlIGluc2VydGlvblR5cGUsIGNvbnN0
IFN0cmluZyYgaW5zZXJ0ZWRUZXh0LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQpA
QCAtNTM1LDE1ICs1MzEsMTQgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2Vt
ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QKICAgICBpZiAoIW9i
amVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNNdXRhYmxlQXJyYXkgKmNoYW5nZXMgPSBb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjJdOworICAgIGF1dG8gY2hh
bmdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eToy
XSk7CiAgICAgaWYgKE5TRGljdGlvbmFyeSAqY2hhbmdlID0gdGV4dFJlcGxhY2VtZW50Q2hhbmdl
RGljdGlvbmFyeSgqb2JqZWN0LCBkZWxldGlvblR5cGUsIGRlbGV0ZWRUZXh0LCBwb3NpdGlvbikp
CiAgICAgICAgIFtjaGFuZ2VzIGFkZE9iamVjdDpjaGFuZ2VdOwogICAgIGlmIChOU0RpY3Rpb25h
cnkgKmNoYW5nZSA9IHRleHRSZXBsYWNlbWVudENoYW5nZURpY3Rpb25hcnkoKm9iamVjdCwgaW5z
ZXJ0aW9uVHlwZSwgaW5zZXJ0ZWRUZXh0LCBwb3NpdGlvbikpCiAgICAgICAgIFtjaGFuZ2VzIGFk
ZE9iamVjdDpjaGFuZ2VdOwogCiAgICAgaWYgKGF1dG8qIHJvb3QgPSByb290V2ViQXJlYSgpKQot
ICAgICAgICBwb3N0VXNlckluZm9Gb3JDaGFuZ2VzKCpyb290LCAqb2JqZWN0LCBjaGFuZ2VzKTsK
LSAgICBbY2hhbmdlcyByZWxlYXNlXTsKKyAgICAgICAgcG9zdFVzZXJJbmZvRm9yQ2hhbmdlcygq
cm9vdCwgKm9iamVjdCwgY2hhbmdlcy5nZXQoKSk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woQVhD
b3JlT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIGNvbnN0IFN0cmlu
ZyYgaW5zZXJ0ZWRUZXh0LCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENvbnRyb2wp
CkBAIC01NTQsMTUgKzU0OSwxNCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFj
ZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEFYQ29yZQogICAgIGlmICgh
b2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVBcnJheSAqY2hhbmdlcyA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml07CisgICAgYXV0byBj
aGFuZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OjJdKTsKICAgICBpZiAoTlNEaWN0aW9uYXJ5ICpjaGFuZ2UgPSB0ZXh0UmVwbGFjZW1lbnRDaGFu
Z2VEaWN0aW9uYXJ5KCpvYmplY3QsIEFYVGV4dEVkaXRUeXBlRGVsZXRlLCBkZWxldGVkVGV4dCwg
dGV4dENvbnRyb2wpKQogICAgICAgICBbY2hhbmdlcyBhZGRPYmplY3Q6Y2hhbmdlXTsKICAgICBp
ZiAoTlNEaWN0aW9uYXJ5ICpjaGFuZ2UgPSB0ZXh0UmVwbGFjZW1lbnRDaGFuZ2VEaWN0aW9uYXJ5
KCpvYmplY3QsIEFYVGV4dEVkaXRUeXBlSW5zZXJ0LCBpbnNlcnRlZFRleHQsIHRleHRDb250cm9s
KSkKICAgICAgICAgW2NoYW5nZXMgYWRkT2JqZWN0OmNoYW5nZV07CiAKICAgICBpZiAoYXV0byog
cm9vdCA9IHJvb3RXZWJBcmVhKCkpCi0gICAgICAgIHBvc3RVc2VySW5mb0ZvckNoYW5nZXMoKnJv
b3QsICpvYmplY3QsIGNoYW5nZXMpOwotICAgIFtjaGFuZ2VzIHJlbGVhc2VdOworICAgICAgICBw
b3N0VXNlckluZm9Gb3JDaGFuZ2VzKCpyb290LCAqb2JqZWN0LCBjaGFuZ2VzLmdldCgpKTsKIH0K
IAogdm9pZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90aWZpY2F0
aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4RnJhbWVPYmplY3QsIEFYTG9hZGluZ0V2ZW50IGxv
YWRpbmdFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXgg
MmY3ZjcyYmFhZTNkZDE4ODUyZjhkN2Q1YzFhMmRlODhiNGY1YWYwNi4uZWRmNDU3NGQyMTMwMTE2
YjRmMjBhYTY0YzMxODA5OTM5ODQyNTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0KQEAgLTEzMjEsNyArMTMyMSw2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgIHN0YXRpYyBOU0FycmF5KiBidXR0b25BdHRycyA9IG5pbDsKICAg
ICBzdGF0aWMgTlNBcnJheSogc2Nyb2xsVmlld0F0dHJzID0gbmlsOwogICAgIHN0YXRpYyBOU0Fy
cmF5KiBpbmNyZW1lbnRvckF0dHJzID0gbmlsOwotICAgIE5TTXV0YWJsZUFycmF5KiB0ZW1wQXJy
YXk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgPT0gbmlsKSB7CiAgICAgICAgIGF0dHJpYnV0ZXMgPSBb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czogTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJp
YnV0ZSwKICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGUsCkBAIC0x
MzY0LDE1ICsxMzYzLDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKICAgICB9CiAgICAgaWYgKGFuY2hvckF0
dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tl
eUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eUxpbmtSZWxhdGlvbnNoaXBUeXBlQXR0cmlidXRlXTsKLSAgICAgICAgYW5jaG9yQXR0cnMgPSBb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBB
cnJheSByZWxlYXNlXTsKKyAgICAgICAgYW5jaG9yQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKHdlYkFyZWFBdHRy
cyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwog
ICAgICAgICAvLyBXZWJBcmVhcyBzaG91bGQgbm90IGV4cG9zZSBBWFN1YnJvbGUuCiAgICAgICAg
IFt0ZW1wQXJyYXkgcmVtb3ZlT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGVd
OwogICAgICAgICAvLyBXZWJBcmVhcyBzaG91bGQgbm90IGV4cG9zZSBhbmNlc3RvciBhdHRyaWJ1
dGVzCkBAIC0xMzg3LDExICsxMzg1LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDYXJl
dEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVd
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlXZWJTZXNzaW9u
SURBdHRyaWJ1dGVdOwotICAgICAgICB3ZWJBcmVhQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAg
ICAgICAgd2ViQXJlYUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBB
cnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmICh0ZXh0QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAg
IHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmli
dXRlc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TnVtYmVyT2ZDaGFyYWN0ZXJzQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0QXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2Vs
ZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGVdOwpAQCAtMTQwMyw1NyArMTQwMCw1MSBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVBsYWNlaG9sZGVyVmFsdWVBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF1dG9maWxsZWRB
dHRyaWJ1dGVdOwotICAgICAgICB0ZXh0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAg
dGV4dEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQo
KV07CiAgICAgfQogICAgIGlmIChsaXN0QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJh
eSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107Cisg
ICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwotICAgICAgICBsaXN0QXR0cnMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxl
YXNlXTsKKyAgICAgICAgbGlzdEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5
OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmIChsaXN0Qm94QXR0cnMgPT0gbmlsKSB7
Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6bGlzdEF0dHJzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6bGlzdEF0dHJzXSk7CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgbGlzdEJveEF0dHJzID0gW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFz
ZV07CisgICAgICAgIGxpc3RCb3hBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KICAgICBpZiAocmFuZ2VBdHRycyA9PSBuaWwpIHsK
LSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlWYWx1ZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwotICAgICAgICByYW5n
ZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAg
ICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIHJhbmdlQXR0cnMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKG1l
bnVCYXJBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0cnNdOworICAgICAgICBhdXRvIHRl
bXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpj
b21tb25NZW51QXR0cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICBtZW51QmFyQXR0cnMgPSBbW05TQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsK
KyAgICAgICAgbWVudUJhckF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRl
bXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmIChtZW51QXR0cnMgPT0gbmlsKSB7Ci0gICAg
ICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29t
bW9uTWVudUF0dHJzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJzXSk7CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNp
YmxlQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAg
bWVudUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0g
ICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIG1lbnVBdHRycyA9IFtbTlNBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KICAgICBpZiAo
bWVudUl0ZW1BdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0cnNdOworICAgICAgICBhdXRv
IHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTpjb21tb25NZW51QXR0cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUhlbHBBdHRyaWJ1dGVdOwpAQCAtMTQ2Nyw4ICsxNDU4
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYTWVudUl0ZW1QcmltYXJ5VUlFbGVtZW50QXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2Vy
dmVzQXNUaXRsZUZvclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlGb2N1c2VkQXR0cmlidXRlXTsKLSAgICAgICAgbWVudUl0
ZW1BdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAg
ICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBtZW51SXRlbUF0dHJzID0gW1tOU0Fy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlm
IChtZW51QnV0dG9uQXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIG1lbnVCdXR0b25BdHRycyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1
dGUsCkBAIC0xNDgzLDQyICsxNDczLDM4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5BdHRyaWJ1dGUsIG5pbF07CiAgICAgfQogICAgIGlmIChjb250cm9sQXR0cnMgPT0gbmlsKSB7
Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6YXR0cmlidXRlc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVd
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlB
dHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlS
ZXF1aXJlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdOwotICAgICAgICBjb250cm9sQXR0cnMgPSBbW05TQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSBy
ZWxlYXNlXTsKKyAgICAgICAgY29udHJvbEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmIChpbmNyZW1lbnRvckF0dHJz
ID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluY3JlbWVudEJ1dHRv
bkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eURlY3JlbWVudEJ1dHRvbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0cmlidXRl
XTsKLSAgICAgICAgaW5jcmVtZW50b3JBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBp
bmNyZW1lbnRvckF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJh
eS5nZXQoKV07CiAgICAgfQogICAgIGlmIChidXR0b25BdHRycyA9PSBuaWwpIHsKLSAgICAgICAg
dGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1
dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICAvLyBCdXR0b25zIHNo
b3VsZCBub3QgZXhwb3NlIEFYVmFsdWUuCiAgICAgICAgIFt0ZW1wQXJyYXkgcmVtb3ZlT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1dGVdOwot
ICAgICAgICBidXR0b25BdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1w
QXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBidXR0b25BdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAg
IH0KICAgICBpZiAoY29tYm9Cb3hBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0g
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb250cm9sQXR0cnNdOworICAg
ICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTpjb250cm9sQXR0cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5RXhwYW5kZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0gICAgICAgIGNv
bWJvQm94QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsK
LSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgY29tYm9Cb3hBdHRycyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KICAg
ICBpZiAodGFibGVBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0
ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKQEAgLTE1MzEsOTEgKzE1MTcsODAg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJvd0NvdW50QXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQUNvbHVtbkNvdW50QXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQVJv
d0NvdW50QXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVBdHRycyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwor
ICAgICAgICB0YWJsZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBB
cnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmICh0YWJsZVJvd0F0dHJzID09IG5pbCkgewotICAg
ICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0
dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluZGV4QXR0cmlidXRlXTsKLSAgICAgICAgdGFi
bGVSb3dBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwot
ICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICB0YWJsZVJvd0F0dHJzID0gW1tO
U0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAg
IGlmICh0YWJsZUNvbEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRv
IHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eUluZGV4QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5SGVhZGVyQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVD
b2xBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAg
ICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICB0YWJsZUNvbEF0dHJzID0gW1tOU0Fy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlm
ICh0YWJsZUNlbGxBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0
ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlSb3dJbmRleFJhbmdlQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dI
ZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5QVJJQUNvbHVtbkluZGV4QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQVJvd0luZGV4QXR0cmlidXRlXTsKLSAg
ICAgICAgdGFibGVDZWxsQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVt
cEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgdGFibGVDZWxs
QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsK
ICAgICB9CiAgICAgaWYgKGdyb3VwQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107CisgICAg
ICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwotICAgICAgICBncm91cEF0dHJz
ID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0
ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIGdyb3VwQXR0cnMgPSBbW05TQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKGlucHV0SW1h
Z2VBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTpidXR0b25BdHRyc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmJ1dHRvbkF0
dHJzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0
dHJpYnV0ZV07Ci0gICAgICAgIGlucHV0SW1hZ2VBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAg
ICAgICBpbnB1dEltYWdlQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVt
cEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKHBhc3N3b3JkRmllbGRBdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVk
QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
SW52YWxpZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eVBsYWNlaG9sZGVyVmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF1dG9maWxsZWRBdHRyaWJ1dGVdOwotICAgICAg
ICBwYXNzd29yZEZpZWxkQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVt
cEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgcGFzc3dvcmRG
aWVsZEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQo
KV07CiAgICAgfQogICAgIGlmICh0YWJMaXN0QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBB
cnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107
CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5VGFic0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAg
ICAgICB0YWJMaXN0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFy
cmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgdGFiTGlzdEF0dHJz
ID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAg
fQogICAgIGlmIChvdXRsaW5lQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107CisgICAgICAg
IGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0g
ICAgICAgIG91dGxpbmVBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1w
QXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBvdXRsaW5lQXR0
cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAg
ICB9CiAgICAgaWYgKG91dGxpbmVSb3dBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5
ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0YWJsZVJvd0F0dHJzXTsK
KyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6dGFibGVSb3dBdHRyc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zaW5nQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkQnlSb3dBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zdXJlTGV2
ZWxBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlEaXNjbG9zZWRSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSByZW1vdmVPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOwotICAgICAgICBvdXRsaW5lUm93QXR0
cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAg
W3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgb3V0bGluZVJvd0F0dHJzID0gW1tOU0FycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmIChz
Y3JvbGxWaWV3QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107CisgICAgICAgIGF1dG8gdGVt
cEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0
dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
Q29udGVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1dGVdOwot
ICAgICAgICBzY3JvbGxWaWV3QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgc2Nyb2xs
Vmlld0F0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQo
KV07CiAgICAgfQogCiAgICAgTlNBcnJheSAqb2JqZWN0QXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7
CkBAIC0zMTI4LDcgKzMxMDMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKICAgICB9CiAKICAgICBpZiAodGV4dFBhcmFtQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIE5T
TXV0YWJsZUFycmF5KiB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OnBhcmFtQXR0cnNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpwYXJhbUF0dHJzXSk7CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYTGluZUZvckluZGV4UGFyYW1ldGVy
aXplZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyop
a0FYUmFuZ2VGb3JMaW5lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYU3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0
cmlidXRlXTsKQEAgLTMxMzgsMjIgKzMxMTMsMTkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FY
UlRGRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhBdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJp
emVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilr
QVhTdHlsZVJhbmdlRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKLSAgICAgICAgdGV4
dFBhcmFtQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsK
LSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgdGV4dFBhcmFtQXR0cnMgPSBb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAg
ICAgaWYgKHRhYmxlUGFyYW1BdHRycyA9PSBuaWwpIHsKLSAgICAgICAgTlNNdXRhYmxlQXJyYXkq
IHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6cGFyYW1B
dHRyc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OnBhcmFtQXR0cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q2VsbEZvckNvbHVtbkFuZFJvd1BhcmFtZXRlcml6ZWRB
dHRyaWJ1dGVdOwotICAgICAgICB0YWJsZVBhcmFtQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAg
ICAgICAgdGFibGVQYXJhbUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRl
bXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmICghd2ViQXJlYVBhcmFtQXR0cnMpIHsKLSAg
ICAgICAgTlNNdXRhYmxlQXJyYXkqIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6cGFyYW1BdHRyc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnBhcmFtQXR0cnNdKTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlckZv
ckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJc1ZhbGlkUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluZGV4Rm9y
VGV4dE1hcmtlclBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwotICAgICAgICB3ZWJBcmVhUGFyYW1B
dHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAg
ICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICB3ZWJBcmVhUGFyYW1BdHRycyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KIAogICAg
IGlmIChiYWNraW5nT2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
dGVzdGJpbmRpbmdzLm1tCmluZGV4IGRlYjgwOTcyNWJjYjA1ZGNhNGU0YWE0NjRmODhkYTMwN2Ey
MTg3YTguLmM1OTBkNDkzMDc5ZmJlN2Q2MzFmNGIwNTk1ZDZiNDYyYzY1MTk1OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQpAQCAtMjQ1LDkgKzI0NSw5IEBAIGludCBtYWlu
KGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgaW50ZXJwLnNldEdsb2JhbE9iamVjdChn
bG9iYWwpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGlu
dGVycC5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgCi0gICAgICAgIE15Rmlyc3RJbnRlcmZhY2Ug
Km15SW50ZXJmYWNlID0gW1tNeUZpcnN0SW50ZXJmYWNlIGFsbG9jXSBpbml0XTsKKyAgICAgICAg
YXV0byBteUludGVyZmFjZSA9IGFkb3B0TlMoW1tNeUZpcnN0SW50ZXJmYWNlIGFsbG9jXSBpbml0
XSk7CiAgICAgICAgIAotICAgICAgICBnbG9iYWwucHV0KGxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEdsb2JhbE9iamVjdCwgIm15SW50ZXJmYWNlIiks
IEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpPYmplY3RpdmVDTGFuZ3Vh
Z2UsICh2b2lkICopbXlJbnRlcmZhY2UpKTsKKyAgICAgICAgZ2xvYmFsLnB1dChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3QsICJt
eUludGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6T2Jq
ZWN0aXZlQ0xhbmd1YWdlLCAodm9pZCAqKW15SW50ZXJmYWNlLmdldCgpKSk7CiAgICAgICAgIAog
ICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7IGkrKykgewogICAgICAgICAgICAgY29u
c3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0RnJvbUZpbGUoYXJndltpXSk7CkBAIC0yNzgs
NyArMjc4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBbbXlJbnRlcmZhY2UgcmVsZWFzZV07Cisg
ICAgICAgIG15SW50ZXJmYWNlID0gbmlsOwogICAgICAgICBbcG9vbCBkcmFpbl07CiAgICAgfSAv
LyBlbmQgYmxvY2ssIHNvIHRoYXQgSW50ZXJwcmV0ZXIgYW5kIGdsb2JhbCBnZXQgZGVsZXRlZAog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmlu
ZGV4IDVhOGI0ZmY0YTIwYjRiNTg1ODBjNDFjNTlmZjFlNWM1MDhiZGNlMTEuLmJhYzY4ZTg4OTBh
MzY3YTUwZmE3MGQ5Mzk4ZGE3ZTU1YTQ0NTM3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTI5MywxOSArMjkzLDE5IEBAIHByaXZhdGU6
CiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8Q0ZUeXBlUmVmPiwgUmVmUHRyPEVsZW1lbnQ+PiBtX3Rl
eHRUYWJsZUZvb3RlcnM7CiAgICAgSGFzaE1hcDxSZWZQdHI8RWxlbWVudD4sIFJldGFpblB0cjxO
U0RpY3Rpb25hcnk+PiBtX2FnZ3JlZ2F0ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudHM7CiAKLSAgICBO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICpfYXR0clN0cjsKLSAgICBOU011dGFibGVEaWN0aW9u
YXJ5ICpfZG9jdW1lbnRBdHRyczsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZz4gX2F0dHJTdHI7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IF9kb2N1
bWVudEF0dHJzOwogICAgIE5TVVJMICpfYmFzZVVSTDsKLSAgICBOU011dGFibGVBcnJheSAqX3Rl
eHRMaXN0czsKLSAgICBOU011dGFibGVBcnJheSAqX3RleHRCbG9ja3M7Ci0gICAgTlNNdXRhYmxl
QXJyYXkgKl90ZXh0VGFibGVzOwotICAgIE5TTXV0YWJsZUFycmF5ICpfdGV4dFRhYmxlU3BhY2lu
Z3M7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKl90ZXh0VGFibGVQYWRkaW5nczsKLSAgICBOU011dGFi
bGVBcnJheSAqX3RleHRUYWJsZVJvd3M7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKl90ZXh0VGFibGVS
b3dBcnJheXM7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKl90ZXh0VGFibGVSb3dCYWNrZ3JvdW5kQ29s
b3JzOwotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9mb250Q2FjaGU7Ci0gICAgTlNNdXRhYmxl
QXJyYXkgKl93cml0aW5nRGlyZWN0aW9uQXJyYXk7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBfdGV4dExpc3RzOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX3RleHRCbG9j
a3M7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfdGV4dFRhYmxlczsKKyAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IF90ZXh0VGFibGVTcGFjaW5nczsKKyAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IF90ZXh0VGFibGVQYWRkaW5nczsKKyAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IF90ZXh0VGFibGVSb3dzOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
X3RleHRUYWJsZVJvd0FycmF5czsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF90ZXh0
VGFibGVSb3dCYWNrZ3JvdW5kQ29sb3JzOworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9u
YXJ5PiBfZm9udENhY2hlOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX3dyaXRpbmdE
aXJlY3Rpb25BcnJheTsKICAgICAKICAgICBDR0Zsb2F0IF9kZWZhdWx0VGFiSW50ZXJ2YWw7CiAg
ICAgTlNVSW50ZWdlciBfZG9tUmFuZ2VTdGFydEluZGV4OwpAQCAtMzYwLDE5ICszNjAsMTkgQEAg
SFRNTENvbnZlcnRlcjo6SFRNTENvbnZlcnRlcihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiAg
ICAgOiBtX3N0YXJ0KG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihyYW5nZS5zdGFydCkpCiAg
ICAgLCBtX2VuZChtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24ocmFuZ2UuZW5kKSkKIHsKLSAg
ICBfYXR0clN0ciA9IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF07Ci0g
ICAgX2RvY3VtZW50QXR0cnMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwor
ICAgIF9hdHRyU3RyID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRdKTsKKyAgICBfZG9jdW1lbnRBdHRycyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgX2Jhc2VVUkwgPSBuaWw7Ci0gICAgX3RleHRMaXN0cyA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIF90ZXh0QmxvY2tzID0gW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgX3RleHRUYWJsZXMgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XTsKLSAgICBfdGV4dFRhYmxlU3BhY2luZ3MgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XTsKLSAgICBfdGV4dFRhYmxlUGFkZGluZ3MgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XTsKLSAgICBfdGV4dFRhYmxlUm93cyA9IFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdOwotICAgIF90ZXh0VGFibGVSb3dBcnJheXMgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XTsKLSAgICBfdGV4dFRhYmxlUm93QmFja2dyb3VuZENvbG9ycyA9IFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIF9mb250Q2FjaGUgPSBbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIF93cml0aW5nRGlyZWN0aW9uQXJyYXkgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICBfdGV4dExpc3RzID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgX3RleHRCbG9ja3MgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBfdGV4dFRhYmxlcyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIF90ZXh0VGFibGVTcGFjaW5ncyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIF90ZXh0VGFibGVQ
YWRkaW5ncyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIF90
ZXh0VGFibGVSb3dzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Cisg
ICAgX3RleHRUYWJsZVJvd0FycmF5cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOworICAgIF90ZXh0VGFibGVSb3dCYWNrZ3JvdW5kQ29sb3JzID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgX2ZvbnRDYWNoZSA9IGFkb3B0TlMoW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgX3dyaXRpbmdEaXJlY3Rpb25B
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCiAgICAgX2Rl
ZmF1bHRUYWJJbnRlcnZhbCA9IDM2OwogICAgIF9kb21SYW5nZVN0YXJ0SW5kZXggPSAwOwpAQCAt
Mzg1LDIxICszODUsNyBAQCBIVE1MQ29udmVydGVyOjpIVE1MQ29udmVydGVyKGNvbnN0IFNpbXBs
ZVJhbmdlJiByYW5nZSkKICAgICBfY2FjaGVzID0gbWFrZVVuaXF1ZTxIVE1MQ29udmVydGVyQ2Fj
aGVzPigpOwogfQogCi1IVE1MQ29udmVydGVyOjp+SFRNTENvbnZlcnRlcigpCi17Ci0gICAgW19h
dHRyU3RyIHJlbGVhc2VdOwotICAgIFtfZG9jdW1lbnRBdHRycyByZWxlYXNlXTsKLSAgICBbX3Rl
eHRMaXN0cyByZWxlYXNlXTsKLSAgICBbX3RleHRCbG9ja3MgcmVsZWFzZV07Ci0gICAgW190ZXh0
VGFibGVzIHJlbGVhc2VdOwotICAgIFtfdGV4dFRhYmxlU3BhY2luZ3MgcmVsZWFzZV07Ci0gICAg
W190ZXh0VGFibGVQYWRkaW5ncyByZWxlYXNlXTsKLSAgICBbX3RleHRUYWJsZVJvd3MgcmVsZWFz
ZV07Ci0gICAgW190ZXh0VGFibGVSb3dBcnJheXMgcmVsZWFzZV07Ci0gICAgW190ZXh0VGFibGVS
b3dCYWNrZ3JvdW5kQ29sb3JzIHJlbGVhc2VdOwotICAgIFtfZm9udENhY2hlIHJlbGVhc2VdOwot
ICAgIFtfd3JpdGluZ0RpcmVjdGlvbkFycmF5IHJlbGVhc2VdOwotfQorSFRNTENvbnZlcnRlcjo6
fkhUTUxDb252ZXJ0ZXIoKSA9IGRlZmF1bHQ7CiAKIEF0dHJpYnV0ZWRTdHJpbmcgSFRNTENvbnZl
cnRlcjo6Y29udmVydCgpCiB7CkBAIC05NzgsNyArOTY0LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1M
Q29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgaWYgKCFmb250KSB7CiAgICAgICAgIFN0cmluZyBmb250TmFtZSA9IF9jYWNoZXMtPnBy
b3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5Rm9udEZhbWlseSk7CiAgICAg
ICAgIGlmIChmb250TmFtZS5sZW5ndGgoKSkKLSAgICAgICAgICAgIGZvbnQgPSBfZm9udEZvck5h
bWVBbmRTaXplKGZvbnROYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIGZvbnRTaXplLCBf
Zm9udENhY2hlKTsKKyAgICAgICAgICAgIGZvbnQgPSBfZm9udEZvck5hbWVBbmRTaXplKGZvbnRO
YW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIGZvbnRTaXplLCBfZm9udENhY2hlLmdldCgp
KTsKICAgICAgICAgaWYgKCFmb250KQogICAgICAgICAgICAgZm9udCA9IFtQbGF0Zm9ybUZvbnRD
bGFzcyBmb250V2l0aE5hbWU6QCJUaW1lcyIgc2l6ZTpmb250U2l6ZV07CiAKQEAgLTEwODQsMTEg
KzEwNzAsMTEgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0
ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBFbGVtZW50KiBibG9ja0VsZW1l
bnQgPSBfYmxvY2tMZXZlbEVsZW1lbnRGb3JOb2RlKCZlbGVtZW50KTsKICAgICBpZiAoJmVsZW1l
bnQgIT0gYmxvY2tFbGVtZW50ICYmIFtfd3JpdGluZ0RpcmVjdGlvbkFycmF5IGNvdW50XSA+IDAp
Ci0gICAgICAgIFthdHRycyBzZXRPYmplY3Q6W05TQXJyYXkgYXJyYXlXaXRoQXJyYXk6X3dyaXRp
bmdEaXJlY3Rpb25BcnJheV0gZm9yS2V5Ok5TV3JpdGluZ0RpcmVjdGlvbkF0dHJpYnV0ZU5hbWVd
OworICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OltOU0FycmF5IGFycmF5V2l0aEFycmF5Ol93cml0
aW5nRGlyZWN0aW9uQXJyYXkuZ2V0KCldIGZvcktleTpOU1dyaXRpbmdEaXJlY3Rpb25BdHRyaWJ1
dGVOYW1lXTsKIAogICAgIGlmIChibG9ja0VsZW1lbnQpIHsKICAgICAgICAgRWxlbWVudCYgY29y
ZUJsb2NrRWxlbWVudCA9ICpibG9ja0VsZW1lbnQ7Ci0gICAgICAgIE5TTXV0YWJsZVBhcmFncmFw
aFN0eWxlICpwYXJhZ3JhcGhTdHlsZSA9IFtkZWZhdWx0UGFyYWdyYXBoU3R5bGUoKSBtdXRhYmxl
Q29weV07CisgICAgICAgIGF1dG8gcGFyYWdyYXBoU3R5bGUgPSBhZG9wdE5TKFtkZWZhdWx0UGFy
YWdyYXBoU3R5bGUoKSBtdXRhYmxlQ29weV0pOwogICAgICAgICB1bnNpZ25lZCBoZWFkaW5nID0g
MDsKICAgICAgICAgaWYgKGNvcmVCbG9ja0VsZW1lbnQuaGFzVGFnTmFtZShoMVRhZykpCiAgICAg
ICAgICAgICBoZWFkaW5nID0gMTsKQEAgLTExNTAsMTEgKzExMzYsMTAgQEAgTlNEaWN0aW9uYXJ5
ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQpCiAgICAgICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldFBhcmFncmFwaFNwYWNp
bmc6bWFyZ2luQm90dG9tXTsKICAgICAgICAgfQogICAgICAgICBpZiAoW190ZXh0TGlzdHMgY291
bnRdID4gMCkKLSAgICAgICAgICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRUZXh0TGlzdHM6X3RleHRM
aXN0c107CisgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0VGV4dExpc3RzOl90ZXh0TGlz
dHMuZ2V0KCldOwogICAgICAgICBpZiAoW190ZXh0QmxvY2tzIGNvdW50XSA+IDApCi0gICAgICAg
ICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0VGV4dEJsb2NrczpfdGV4dEJsb2Nrc107Ci0gICAgICAg
IFthdHRycyBzZXRPYmplY3Q6cGFyYWdyYXBoU3R5bGUgZm9yS2V5Ok5TUGFyYWdyYXBoU3R5bGVB
dHRyaWJ1dGVOYW1lXTsKLSAgICAgICAgW3BhcmFncmFwaFN0eWxlIHJlbGVhc2VdOworICAgICAg
ICAgICAgW3BhcmFncmFwaFN0eWxlIHNldFRleHRCbG9ja3M6X3RleHRCbG9ja3MuZ2V0KCldOwor
ICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OnBhcmFncmFwaFN0eWxlLmdldCgpIGZvcktleTpOU1Bh
cmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZV07CiAgICAgfQogICAgIHJldHVybiBhdHRyczsKIH0K
QEAgLTE5MDksNyArMTg5NCw3IEBAIHZvaWQgSFRNTENvbnZlcnRlcjo6X2FkZE1hcmtlcnNUb0xp
c3QoTlNUZXh0TGlzdCAqbGlzdCwgTlNSYW5nZSByYW5nZSkKICAgICBOU0RpY3Rpb25hcnkgKmF0
dHJzVG9JbnNlcnQgPSBuaWw7CiAgICAgUGxhdGZvcm1Gb250ICpmb250OwogICAgIE5TUGFyYWdy
YXBoU3R5bGUgKnBhcmFncmFwaFN0eWxlOwotICAgIE5TTXV0YWJsZVBhcmFncmFwaFN0eWxlICpu
ZXdTdHlsZTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlUGFyYWdyYXBoU3R5bGU+IG5ld1N0eWxl
OwogICAgIE5TVGV4dFRhYiAqdGFiID0gbmlsOwogICAgIE5TVGV4dFRhYiAqdGFiVG9SZW1vdmU7
CiAgICAgTlNSYW5nZSBwYXJhZ3JhcGhSYW5nZTsKQEAgLTE5NDgsNyArMTkzMyw3IEBAIHZvaWQg
SFRNTENvbnZlcnRlcjo6X2FkZE1hcmtlcnNUb0xpc3QoTlNUZXh0TGlzdCAqbGlzdCwgTlNSYW5n
ZSByYW5nZSkKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFncmFwaFJhbmdlLmxvY2F0aW9u
IDwgX2RvbVJhbmdlU3RhcnRJbmRleCkKICAgICAgICAgICAgICAgICAgICAgICAgIF9kb21SYW5n
ZVN0YXJ0SW5kZXggKz0gaW5zZXJ0TGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgbmV3U3R5bGUgPSBbcGFyYWdyYXBoU3R5bGUgbXV0YWJsZUNvcHldOwor
ICAgICAgICAgICAgICAgICAgICBuZXdTdHlsZSA9IGFkb3B0TlMoW3BhcmFncmFwaFN0eWxlIG11
dGFibGVDb3B5XSk7CiAgICAgICAgICAgICAgICAgICAgIGxpc3RMb2NhdGlvbiA9IChsaXN0SW5k
ZXggKyAxKSAqIDM2OwogICAgICAgICAgICAgICAgICAgICBtYXJrZXJMb2NhdGlvbiA9IGxpc3RM
b2NhdGlvbiAtIDI1OwogICAgICAgICAgICAgICAgICAgICBbbmV3U3R5bGUgc2V0Rmlyc3RMaW5l
SGVhZEluZGVudDowXTsKQEAgLTE5NjQsMTQgKzE5NDksMTAgQEAgdm9pZCBIVE1MQ29udmVydGVy
OjpfYWRkTWFya2Vyc1RvTGlzdChOU1RleHRMaXN0ICpsaXN0LCBOU1JhbmdlIHJhbmdlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHRhYiA9IFtb
UGxhdGZvcm1OU1RleHRUYWIgYWxsb2NdIGluaXRXaXRoVHlwZTpOU0xlZnRUYWJTdG9wVHlwZSBs
b2NhdGlvbjptYXJrZXJMb2NhdGlvbl07Ci0gICAgICAgICAgICAgICAgICAgIFtuZXdTdHlsZSBh
ZGRUYWJTdG9wOnRhYl07Ci0gICAgICAgICAgICAgICAgICAgIFt0YWIgcmVsZWFzZV07Ci0gICAg
ICAgICAgICAgICAgICAgIHRhYiA9IFtbUGxhdGZvcm1OU1RleHRUYWIgYWxsb2NdIGluaXRXaXRo
VGV4dEFsaWdubWVudDpOU1RleHRBbGlnbm1lbnROYXR1cmFsIGxvY2F0aW9uOmxpc3RMb2NhdGlv
biBvcHRpb25zOkB7IH1dOwotICAgICAgICAgICAgICAgICAgICBbbmV3U3R5bGUgYWRkVGFiU3Rv
cDp0YWJdOwotICAgICAgICAgICAgICAgICAgICBbdGFiIHJlbGVhc2VdOwotICAgICAgICAgICAg
ICAgICAgICBbX2F0dHJTdHIgYWRkQXR0cmlidXRlOk5TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVO
YW1lIHZhbHVlOm5ld1N0eWxlIHJhbmdlOnBhcmFncmFwaFJhbmdlXTsKLSAgICAgICAgICAgICAg
ICAgICAgW25ld1N0eWxlIHJlbGVhc2VdOworICAgICAgICAgICAgICAgICAgICBbbmV3U3R5bGUg
YWRkVGFiU3RvcDphZG9wdE5TKFtbUGxhdGZvcm1OU1RleHRUYWIgYWxsb2NdIGluaXRXaXRoVHlw
ZTpOU0xlZnRUYWJTdG9wVHlwZSBsb2NhdGlvbjptYXJrZXJMb2NhdGlvbl0pLmdldCgpXTsKKyAg
ICAgICAgICAgICAgICAgICAgW25ld1N0eWxlIGFkZFRhYlN0b3A6YWRvcHROUyhbW1BsYXRmb3Jt
TlNUZXh0VGFiIGFsbG9jXSBpbml0V2l0aFRleHRBbGlnbm1lbnQ6TlNUZXh0QWxpZ25tZW50TmF0
dXJhbCBsb2NhdGlvbjpsaXN0TG9jYXRpb24gb3B0aW9uczpAeyB9XSkuZ2V0KCldOworICAgICAg
ICAgICAgICAgICAgICBbX2F0dHJTdHIgYWRkQXR0cmlidXRlOk5TUGFyYWdyYXBoU3R5bGVBdHRy
aWJ1dGVOYW1lIHZhbHVlOm5ld1N0eWxlLmdldCgpIHJhbmdlOnBhcmFncmFwaFJhbmdlXTsKKyAg
ICAgICAgICAgICAgICAgICAgbmV3U3R5bGUgPSBuaWw7CiAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICBpZHggPSBOU01heFJhbmdlKHBhcmFncmFwaFJhbmdlKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjMzOCwxMiArMjMxOSw4IEBAIHN0YXRpYyBOU0Zp
bGVXcmFwcGVyICpmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwg
TlNVUkwgKlVSTCkKICAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgICAgICB9CiAgICAg
fQotICAgIAotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbW05TTXV0YWJsZVVS
TFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOlVSTF07CiAKLSAgICBOU0NhY2hlZFVSTFJlc3Bv
bnNlICpjYWNoZWRSZXNwb25zZSA9IFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gY2FjaGVk
UmVzcG9uc2VGb3JSZXF1ZXN0OnJlcXVlc3RdOwotICAgIFtyZXF1ZXN0IHJlbGVhc2VdOwotICAg
IAorICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJlc3BvbnNlID0gW1tOU1VSTENhY2hl
IHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJlcXVlc3Q6YWRvcHROUyhbW05TTXV0
YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOlVSTF0pLmdldCgpXTsKICAgICBpZiAo
Y2FjaGVkUmVzcG9uc2UpIHsKICAgICAgICAgTlNGaWxlV3JhcHBlciAqd3JhcHBlciA9IFtbW05T
RmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpbY2FjaGVkUmVz
cG9uc2UgZGF0YV1dIGF1dG9yZWxlYXNlXTsKICAgICAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVk
RmlsZW5hbWU6W1tjYWNoZWRSZXNwb25zZSByZXNwb25zZV0gc3VnZ2VzdGVkRmlsZW5hbWVdXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvbWFjL0hpc3RvcnlJdGVtTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9tYWMvSGlzdG9yeUl0ZW1NYWMubW0KaW5kZXggNzAw
ZDFjNTBiNmY1MGNjNDliMzFkNTJmMWM2ZjA3M2IxYTJhODUxNC4uOTY3YzE1ZDExNmNkNmZmZjYx
MWE1NTY3YmQyMzI1NDFhOTNlNWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9tYWMvSGlzdG9yeUl0ZW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9tYWMv
SGlzdG9yeUl0ZW1NYWMubW0KQEAgLTM3LDkgKzM3LDcgQEAgaWQgSGlzdG9yeUl0ZW06OnZpZXdT
dGF0ZSgpIGNvbnN0CiAKIHZvaWQgSGlzdG9yeUl0ZW06OnNldFZpZXdTdGF0ZShpZCBzdGF0ZVBM
aXN0KQogewotICAgIGlkIG5ld1N0YXRlID0gW3N0YXRlUExpc3QgY29weV07Ci0gICAgbV92aWV3
U3RhdGUgPSBuZXdTdGF0ZTsKLSAgICBbbmV3U3RhdGUgcmVsZWFzZV07CisgICAgbV92aWV3U3Rh
dGUgPSBhZG9wdE5TKFtzdGF0ZVBMaXN0IGNvcHldKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQppbmRleCAx
YTdkNTIwZGYyNmM0Y2E2NTg4MmFhNWYzZGEzZGNhNGQ1ODk4NGRkLi5lNTcwNDMxMGRhODVmZGU0
MWJjMTMzNzkyMmIyNDUxOTliZWZhMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYy5tbQpAQCAtMjQ0LDE4ICsyNDQsMTYgQEAgdW5zaWduZWQgU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6ZXhwb3NlZFVuZmlsbGVkQXJlYSgpIGNvbnN0CiAK
ICAgICB3aGlsZSAoIWxheWVyUXVldWUuaXNFbXB0eSgpICYmIHRpbGVzLmlzRW1wdHkoKSkgewog
ICAgICAgICBDQUxheWVyKiBsYXllciA9IGxheWVyUXVldWUudGFrZUZpcnN0KCk7Ci0gICAgICAg
IE5TQXJyYXkqIHN1YmxheWVycyA9IFtbbGF5ZXIgc3VibGF5ZXJzXSBjb3B5XTsKKyAgICAgICAg
YXV0byBzdWJsYXllcnMgPSBhZG9wdE5TKFtbbGF5ZXIgc3VibGF5ZXJzXSBjb3B5XSk7CiAKICAg
ICAgICAgLy8gSWYgdGhpcyBsYXllciBpcyB0aGUgcGFyZW50IG9mIGEgdGlsZSwgaXQgaXMgdGhl
IHBhcmVudCBvZiBhbGwgb2YgdGhlIHRpbGVzIGFuZCBub3RoaW5nIGVsc2UuCiAgICAgICAgIGlm
IChbW1tzdWJsYXllcnMgb2JqZWN0QXRJbmRleDowXSB2YWx1ZUZvcktleTpAImlzVGlsZSJdIGJv
b2xWYWx1ZV0pIHsKLSAgICAgICAgICAgIGZvciAoQ0FMYXllciogc3VibGF5ZXIgaW4gc3VibGF5
ZXJzKQorICAgICAgICAgICAgZm9yIChDQUxheWVyKiBzdWJsYXllciBpbiBzdWJsYXllcnMuZ2V0
KCkpCiAgICAgICAgICAgICAgICAgdGlsZXMuYXBwZW5kKHN1YmxheWVyKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGZvciAoQ0FMYXllciogc3VibGF5ZXIgaW4gc3VibGF5ZXJzKQor
ICAgICAgICAgICAgZm9yIChDQUxheWVyKiBzdWJsYXllciBpbiBzdWJsYXllcnMuZ2V0KCkpCiAg
ICAgICAgICAgICAgICAgbGF5ZXJRdWV1ZS5hcHBlbmQoc3VibGF5ZXIpOwogICAgICAgICB9Ci0K
LSAgICAgICAgW3N1YmxheWVycyByZWxlYXNlXTsKICAgICB9CiAKICAgICBGbG9hdFBvaW50IGNs
YW1wZWRTY3JvbGxQb3NpdGlvbiA9IGNsYW1wU2Nyb2xsUG9zaXRpb24oY3VycmVudFNjcm9sbFBv
c2l0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0KaW5kZXggMDFj
NWUyZGE2ZDhiNDU4ODllYTVhZTMxYWY1MzI2MzU5MGRhZTY2My4uY2JjODRmZjU0OGQ5NjM3ZjU2
MjkxOTI4NzllMTQwODNlZGJlM2YzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0Nv
Y29hLm1tCkBAIC0zMjAsMjIgKzMyMCwyMiBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1D
QUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAogICAg
ICAgICBpZiAob3BlcmF0aW9uKQogICAgICAgICAgICAgYW1vdW50ID0gZG93bmNhc3Q8QmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikuYW1vdW50KCk7CiAKLSAgICAg
ICAgQ0lWZWN0b3IqIHJvd1ZlY3RvciA9IG51bGxwdHI7CisgICAgICAgIFJldGFpblB0cjxDSVZl
Y3Rvcj4gcm93VmVjdG9yOwogICAgICAgICBzd2l0Y2ggKGludGVybmFsRmlsdGVyUHJvcGVydHlJ
bmRleCkgewotICAgICAgICBjYXNlIDA6IHJvd1ZlY3RvciA9IFtbQ0lWZWN0b3IgYWxsb2NdIGlu
aXRXaXRoWDpXZWJDb3JlOjpibGVuZChzZXBpYU5vbmVDb25zdGFudHNbMF1bMF0sIHNlcGlhRnVs
bENvbnN0YW50c1swXVswXSwgYW1vdW50KQorICAgICAgICBjYXNlIDA6IHJvd1ZlY3RvciA9IGFk
b3B0TlMoW1tDSVZlY3RvciBhbGxvY10gaW5pdFdpdGhYOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9u
ZUNvbnN0YW50c1swXVswXSwgc2VwaWFGdWxsQ29uc3RhbnRzWzBdWzBdLCBhbW91bnQpCiAgICAg
ICAgICAgICBZOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50c1swXVsxXSwgc2VwaWFG
dWxsQ29uc3RhbnRzWzBdWzFdLCBhbW91bnQpCi0gICAgICAgICAgICBaOldlYkNvcmU6OmJsZW5k
KHNlcGlhTm9uZUNvbnN0YW50c1swXVsyXSwgc2VwaWFGdWxsQ29uc3RhbnRzWzBdWzJdLCBhbW91
bnQpIFc6MF07CisgICAgICAgICAgICBaOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50
c1swXVsyXSwgc2VwaWFGdWxsQ29uc3RhbnRzWzBdWzJdLCBhbW91bnQpIFc6MF0pOwogICAgICAg
ICAgICAgYnJlYWs7IC8vIGlucHV0UlZlY3RvcgotICAgICAgICBjYXNlIDE6IHJvd1ZlY3RvciA9
IFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRoWDpXZWJDb3JlOjpibGVuZChzZXBpYU5vbmVDb25z
dGFudHNbMV1bMF0sIHNlcGlhRnVsbENvbnN0YW50c1sxXVswXSwgYW1vdW50KQorICAgICAgICBj
YXNlIDE6IHJvd1ZlY3RvciA9IGFkb3B0TlMoW1tDSVZlY3RvciBhbGxvY10gaW5pdFdpdGhYOldl
YkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50c1sxXVswXSwgc2VwaWFGdWxsQ29uc3RhbnRz
WzFdWzBdLCBhbW91bnQpCiAgICAgICAgICAgICBZOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNv
bnN0YW50c1sxXVsxXSwgc2VwaWFGdWxsQ29uc3RhbnRzWzFdWzFdLCBhbW91bnQpCi0gICAgICAg
ICAgICBaOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50c1sxXVsyXSwgc2VwaWFGdWxs
Q29uc3RhbnRzWzFdWzJdLCBhbW91bnQpIFc6MF07CisgICAgICAgICAgICBaOldlYkNvcmU6OmJs
ZW5kKHNlcGlhTm9uZUNvbnN0YW50c1sxXVsyXSwgc2VwaWFGdWxsQ29uc3RhbnRzWzFdWzJdLCBh
bW91bnQpIFc6MF0pOwogICAgICAgICAgICAgYnJlYWs7IC8vIGlucHV0R1ZlY3RvcgotICAgICAg
ICBjYXNlIDI6IHJvd1ZlY3RvciA9IFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRoWDpXZWJDb3Jl
OjpibGVuZChzZXBpYU5vbmVDb25zdGFudHNbMl1bMF0sIHNlcGlhRnVsbENvbnN0YW50c1syXVsw
XSwgYW1vdW50KQorICAgICAgICBjYXNlIDI6IHJvd1ZlY3RvciA9IGFkb3B0TlMoW1tDSVZlY3Rv
ciBhbGxvY10gaW5pdFdpdGhYOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50c1syXVsw
XSwgc2VwaWFGdWxsQ29uc3RhbnRzWzJdWzBdLCBhbW91bnQpCiAgICAgICAgICAgICBZOldlYkNv
cmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50c1syXVsxXSwgc2VwaWFGdWxsQ29uc3RhbnRzWzJd
WzFdLCBhbW91bnQpCi0gICAgICAgICAgICBaOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0
YW50c1syXVsyXSwgc2VwaWFGdWxsQ29uc3RhbnRzWzJdWzJdLCBhbW91bnQpIFc6MF07CisgICAg
ICAgICAgICBaOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50c1syXVsyXSwgc2VwaWFG
dWxsQ29uc3RhbnRzWzJdWzJdLCBhbW91bnQpIFc6MF0pOwogICAgICAgICAgICAgYnJlYWs7IC8v
IGlucHV0QlZlY3RvcgogICAgICAgICB9Ci0gICAgICAgIHZhbHVlID0gYWRvcHROUyhyb3dWZWN0
b3IpOworICAgICAgICB2YWx1ZSA9IFdURk1vdmUocm93VmVjdG9yKTsKICNlbmRpZgogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0zNzUsMTQgKzM3NSwxNCBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4g
UGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKGNvbnN0IEZpbHRlck9w
ZXJhdAogICAgICAgICAvLyBUaGUgY29sb3IgbWF0cml4IGFuaW1hdGlvbiBmb3IgaW52ZXJ0IGRv
ZXMgYSBzY2FsZSBvZiBlYWNoIGNvbG9yIGNvbXBvbmVudCBieSBhIHZhbHVlIHRoYXQgZ29lcyBm
cm9tIAogICAgICAgICAvLyAxICh3aGVuIGFtb3VudCBpcyAwKSB0byAtMSAod2hlbiBhbW91bnQg
aXMgMSkuIFRoZW4gdGhlIGNvbG9yIHZhbHVlcyBhcmUgb2Zmc2V0IGJ5IGFtb3VudC4gVGhpcyBo
YXMgdGhlCiAgICAgICAgIC8vIGVmZmVjdCBvZiBwZXJmb3JtaW5nIHRoZSBvcGVyYXRpb246IGMn
ID0gYyAqIC0xICsgMSwgd2hpY2ggaW52ZXJ0cyB0aGUgY29sb3IuCi0gICAgICAgIENJVmVjdG9y
KiByb3dWZWN0b3IgPSAwOworICAgICAgICBSZXRhaW5QdHI8Q0lWZWN0b3I+IHJvd1ZlY3RvcjsK
ICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpIHsKLSAgICAgICAg
Y2FzZSAwOiByb3dWZWN0b3IgPSBbW0NJVmVjdG9yIGFsbG9jXSBpbml0V2l0aFg6bXVsdGlwbGll
ciBZOjAgWjowIFc6MF07IGJyZWFrOyAvLyBpbnB1dFJWZWN0b3IKLSAgICAgICAgY2FzZSAxOiBy
b3dWZWN0b3IgPSBbW0NJVmVjdG9yIGFsbG9jXSBpbml0V2l0aFg6MCBZOm11bHRpcGxpZXIgWjow
IFc6MF07IGJyZWFrOyAvLyBpbnB1dEdWZWN0b3IKLSAgICAgICAgY2FzZSAyOiByb3dWZWN0b3Ig
PSBbW0NJVmVjdG9yIGFsbG9jXSBpbml0V2l0aFg6MCBZOjAgWjptdWx0aXBsaWVyIFc6MF07IGJy
ZWFrOyAvLyBpbnB1dEJWZWN0b3IKLSAgICAgICAgY2FzZSAzOiByb3dWZWN0b3IgPSBbW0NJVmVj
dG9yIGFsbG9jXSBpbml0V2l0aFg6YW1vdW50IFk6YW1vdW50IFo6YW1vdW50IFc6MF07IGJyZWFr
OyAvLyBpbnB1dEJpYXNWZWN0b3IKKyAgICAgICAgY2FzZSAwOiByb3dWZWN0b3IgPSBhZG9wdE5T
KFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRoWDptdWx0aXBsaWVyIFk6MCBaOjAgVzowXSk7IGJy
ZWFrOyAvLyBpbnB1dFJWZWN0b3IKKyAgICAgICAgY2FzZSAxOiByb3dWZWN0b3IgPSBhZG9wdE5T
KFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRoWDowIFk6bXVsdGlwbGllciBaOjAgVzowXSk7IGJy
ZWFrOyAvLyBpbnB1dEdWZWN0b3IKKyAgICAgICAgY2FzZSAyOiByb3dWZWN0b3IgPSBhZG9wdE5T
KFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRoWDowIFk6MCBaOm11bHRpcGxpZXIgVzowXSk7IGJy
ZWFrOyAvLyBpbnB1dEJWZWN0b3IKKyAgICAgICAgY2FzZSAzOiByb3dWZWN0b3IgPSBhZG9wdE5T
KFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRoWDphbW91bnQgWTphbW91bnQgWjphbW91bnQgVzow
XSk7IGJyZWFrOyAvLyBpbnB1dEJpYXNWZWN0b3IKICAgICAgICAgfQotICAgICAgICB2YWx1ZSA9
IGFkb3B0TlMocm93VmVjdG9yKTsKKyAgICAgICAgdmFsdWUgPSBXVEZNb3ZlKHJvd1ZlY3Rvcik7
CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDE0LDEzICs0MTQsMTMgQEAgUmV0
YWluUHRyPE5TVmFsdWU+IFBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlv
bihjb25zdCBGaWx0ZXJPcGVyYXQKICAgICAgICAgaWYgKG9wZXJhdGlvbikKICAgICAgICAgICAg
IGFtb3VudCA9IGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+
KCpvcGVyYXRpb24pLmFtb3VudCgpOwogICAgICAgICAKLSAgICAgICAgQ0lWZWN0b3IqIHJvd1Zl
Y3RvciA9IG51bGxwdHI7CisgICAgICAgIFJldGFpblB0cjxDSVZlY3Rvcj4gcm93VmVjdG9yOwog
ICAgICAgICBzd2l0Y2ggKGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkgewotICAgICAgICBj
YXNlIDA6IHJvd1ZlY3RvciA9IFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRoWDphbW91bnQgWTow
IFo6MCBXOjBdOyBicmVhazsgLy8gaW5wdXRSVmVjdG9yCi0gICAgICAgIGNhc2UgMTogcm93VmVj
dG9yID0gW1tDSVZlY3RvciBhbGxvY10gaW5pdFdpdGhYOjAgWTphbW91bnQgWjowIFc6MF07IGJy
ZWFrOyAvLyBpbnB1dEdWZWN0b3IKLSAgICAgICAgY2FzZSAyOiByb3dWZWN0b3IgPSBbW0NJVmVj
dG9yIGFsbG9jXSBpbml0V2l0aFg6MCBZOjAgWjphbW91bnQgVzowXTsgYnJlYWs7IC8vIGlucHV0
QlZlY3RvcgorICAgICAgICBjYXNlIDA6IHJvd1ZlY3RvciA9IGFkb3B0TlMoW1tDSVZlY3RvciBh
bGxvY10gaW5pdFdpdGhYOmFtb3VudCBZOjAgWjowIFc6MF0pOyBicmVhazsgLy8gaW5wdXRSVmVj
dG9yCisgICAgICAgIGNhc2UgMTogcm93VmVjdG9yID0gYWRvcHROUyhbW0NJVmVjdG9yIGFsbG9j
XSBpbml0V2l0aFg6MCBZOmFtb3VudCBaOjAgVzowXSk7IGJyZWFrOyAvLyBpbnB1dEdWZWN0b3IK
KyAgICAgICAgY2FzZSAyOiByb3dWZWN0b3IgPSBhZG9wdE5TKFtbQ0lWZWN0b3IgYWxsb2NdIGlu
aXRXaXRoWDowIFk6MCBaOmFtb3VudCBXOjBdKTsgYnJlYWs7IC8vIGlucHV0QlZlY3RvcgogICAg
ICAgICB9Ci0gICAgICAgIHZhbHVlID0gYWRvcHROUyhyb3dWZWN0b3IpOworICAgICAgICB2YWx1
ZSA9IFdURk1vdmUocm93VmVjdG9yKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IDI0YjllZGU0YWI2ZjZkYmE3MDFm
NmMzYTQ5YWNmZjc0MTRjY2E0MmYuLjAyNzI1NGM5ZGJlZWU3ZTJjMDZmNTBiNGUxZjdiYTYzMGE1
ZTY1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC01MDYsOSArNTA2
LDkgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6YWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0
IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWEKIHsKICAgICAvLyBBZGQgdGhlIGRlbGVnYXRl
CiAgICAgaWYgKCFtX2RlbGVnYXRlKSB7Ci0gICAgICAgIFdlYkFuaW1hdGlvbkRlbGVnYXRlKiB3
ZWJBbmltYXRpb25EZWxlZ2F0ZSA9IFtbV2ViQW5pbWF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRd
OwotICAgICAgICBtX2RlbGVnYXRlID0gYWRvcHROUyh3ZWJBbmltYXRpb25EZWxlZ2F0ZSk7Cisg
ICAgICAgIGF1dG8gd2ViQW5pbWF0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQW5pbWF0aW9u
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICAgICAgW3dlYkFuaW1hdGlvbkRlbGVnYXRlIHNl
dE93bmVyOnRoaXNdOworICAgICAgICBtX2RlbGVnYXRlID0gV1RGTW92ZSh3ZWJBbmltYXRpb25E
ZWxlZ2F0ZSk7CiAgICAgfQogICAgIAogICAgIENBQW5pbWF0aW9uICpwcm9wZXJ0eUFuaW1hdGlv
biA9IHN0YXRpY19jYXN0PENBQW5pbWF0aW9uICo+KGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRp
b25Db2NvYT4oYW5pbWF0aW9uKS5wbGF0Zm9ybUFuaW1hdGlvbigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLmgKaW5kZXggYzJiMzQ2
MDIyOGVjOWQzZGJlOWNjYzk5NmY3ZmYwMWZhYzlkYTZmMS4uNDc0OTk3MjgwNTIyYTEyZTNjM2Qy
MjU1MzgxMmY0YTQ3MTVmM2Q2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLmgKQEAgLTM3LDExICszNywxMSBAQCBjbGFzcyBNb3Rp
b25NYW5hZ2VyQ2xpZW50OwogfQogCiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVN
b3Rpb25NYW5hZ2VyIDogTlNPYmplY3QgewotICAgIENNTW90aW9uTWFuYWdlciogbV9tb3Rpb25N
YW5hZ2VyOwotICAgIENMTG9jYXRpb25NYW5hZ2VyKiBtX2xvY2F0aW9uTWFuYWdlcjsKKyAgICBS
ZXRhaW5QdHI8Q01Nb3Rpb25NYW5hZ2VyPiBtX21vdGlvbk1hbmFnZXI7CisgICAgUmV0YWluUHRy
PENMTG9jYXRpb25NYW5hZ2VyPiBtX2xvY2F0aW9uTWFuYWdlcjsKICAgICBXZWFrSGFzaFNldDxX
ZWJDb3JlOjpNb3Rpb25NYW5hZ2VyQ2xpZW50PiBtX2RldmljZU1vdGlvbkNsaWVudHM7CiAgICAg
V2Vha0hhc2hTZXQ8V2ViQ29yZTo6TW90aW9uTWFuYWdlckNsaWVudD4gbV9kZXZpY2VPcmllbnRh
dGlvbkNsaWVudHM7Ci0gICAgTlNUaW1lciogbV91cGRhdGVUaW1lcjsKKyAgICBSZXRhaW5QdHI8
TlNUaW1lcj4gbV91cGRhdGVUaW1lcjsKICAgICBCT09MIG1fZ3lyb0F2YWlsYWJsZTsKICAgICBC
T09MIG1faGVhZGluZ0F2YWlsYWJsZTsKICAgICBCT09MIG1faW5pdGlhbGl6ZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KaW5k
ZXggZjJkZDA5NzU0YjhmYTllMzRlZmZlYWU3MjYxNWQ5ZWNiMDg1NzNmZi4uMWY2MThhZDViNDc3
ZDAxMzdhN2M1OWVjZjMyOTc2YWIxYzdiYWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQpAQCAtODksMTMgKzg5LDExIEBA
IC0gKHZvaWQpZGVhbGxvYwogCiAgICAgaWYgKG1faGVhZGluZ0F2YWlsYWJsZSkKICAgICAgICAg
W21fbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0hlYWRpbmddOwotICAgIFttX2xvY2F0aW9u
TWFuYWdlciByZWxlYXNlXTsKIAogICAgIGlmIChtX2d5cm9BdmFpbGFibGUpCiAgICAgICAgIFtt
X21vdGlvbk1hbmFnZXIgc3RvcERldmljZU1vdGlvblVwZGF0ZXNdOwogICAgIGVsc2UKICAgICAg
ICAgW21fbW90aW9uTWFuYWdlciBzdG9wQWNjZWxlcm9tZXRlclVwZGF0ZXNdOwotICAgIFttX21v
dGlvbk1hbmFnZXIgcmVsZWFzZV07CiAKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CkBAIC0xNDIs
MTYgKzE0MCwxNiBAQCAtICh2b2lkKWluaXRpYWxpemVPbk1haW5UaHJlYWQKIHsKICAgICBBU1NF
UlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsKIAotICAgIG1fbW90aW9uTWFuYWdlciA9IFthbGxv
Y0NNTW90aW9uTWFuYWdlckluc3RhbmNlKCkgaW5pdF07CisgICAgbV9tb3Rpb25NYW5hZ2VyID0g
YWRvcHROUyhbYWxsb2NDTU1vdGlvbk1hbmFnZXJJbnN0YW5jZSgpIGluaXRdKTsKIAotICAgIG1f
Z3lyb0F2YWlsYWJsZSA9IG1fbW90aW9uTWFuYWdlci5kZXZpY2VNb3Rpb25BdmFpbGFibGU7Cisg
ICAgbV9neXJvQXZhaWxhYmxlID0gW21fbW90aW9uTWFuYWdlciBkZXZpY2VNb3Rpb25BdmFpbGFi
bGVdOwogCiAgICAgaWYgKG1fZ3lyb0F2YWlsYWJsZSkKLSAgICAgICAgbV9tb3Rpb25NYW5hZ2Vy
LmRldmljZU1vdGlvblVwZGF0ZUludGVydmFsID0ga01vdGlvblVwZGF0ZUludGVydmFsOworICAg
ICAgICBbbV9tb3Rpb25NYW5hZ2VyIHNldERldmljZU1vdGlvblVwZGF0ZUludGVydmFsOiBrTW90
aW9uVXBkYXRlSW50ZXJ2YWxdOwogICAgIGVsc2UKLSAgICAgICAgbV9tb3Rpb25NYW5hZ2VyLmFj
Y2VsZXJvbWV0ZXJVcGRhdGVJbnRlcnZhbCA9IGtNb3Rpb25VcGRhdGVJbnRlcnZhbDsKKyAgICAg
ICAgW21fbW90aW9uTWFuYWdlciBzZXRBY2NlbGVyb21ldGVyVXBkYXRlSW50ZXJ2YWw6IGtNb3Rp
b25VcGRhdGVJbnRlcnZhbF07CiAKLSAgICBtX2xvY2F0aW9uTWFuYWdlciA9IFthbGxvY0NMTG9j
YXRpb25NYW5hZ2VySW5zdGFuY2UoKSBpbml0XTsKKyAgICBtX2xvY2F0aW9uTWFuYWdlciA9IGFk
b3B0TlMoW2FsbG9jQ0xMb2NhdGlvbk1hbmFnZXJJbnN0YW5jZSgpIGluaXRdKTsKICAgICBtX2hl
YWRpbmdBdmFpbGFibGUgPSBbZ2V0Q0xMb2NhdGlvbk1hbmFnZXJDbGFzcygpIGhlYWRpbmdBdmFp
bGFibGVdOwogCiAgICAgbV9pbml0aWFsaXplZCA9IFlFUzsKQEAgLTE4OCwxMCArMTg2LDggQEAg
LSAodm9pZCljaGVja0NsaWVudFN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdHM6WUVTXSByZXRhaW5dOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgTlNUaW1lciAqdGltZXIgPSBtX3VwZGF0ZVRp
bWVyOworICAgICAgICBbbV91cGRhdGVUaW1lciBpbnZhbGlkYXRlXTsKICAgICAgICAgbV91cGRh
dGVUaW1lciA9IG5pbDsKLSAgICAgICAgW3RpbWVyIGludmFsaWRhdGVdOwotICAgICAgICBbdGlt
ZXIgcmVsZWFzZV07CiAKICAgICAgICAgaWYgKG1fZ3lyb0F2YWlsYWJsZSkKICAgICAgICAgICAg
IFttX21vdGlvbk1hbmFnZXIgc3RvcERldmljZU1vdGlvblVwZGF0ZXNdOwpAQCAtMjExLDExICsy
MDcsMTEgQEAgLSAodm9pZCl1cGRhdGUKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFdl
IHNob3VsZCwgaG93ZXZlciwgZ3VhcmQgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBtYW5hZ2VycyBy
ZXR1cm4gbmlsIGRhdGEuCi0gICAgQ01EZXZpY2VNb3Rpb24gKmRldmljZU1vdGlvbiA9IG1fbW90
aW9uTWFuYWdlci5kZXZpY2VNb3Rpb247CisgICAgQ01EZXZpY2VNb3Rpb24gKmRldmljZU1vdGlv
biA9IFttX21vdGlvbk1hbmFnZXIgZGV2aWNlTW90aW9uXTsKICAgICBpZiAobV9neXJvQXZhaWxh
YmxlICYmIGRldmljZU1vdGlvbikKLSAgICAgICAgW3NlbGYgc2VuZE1vdGlvbkRhdGE6ZGV2aWNl
TW90aW9uIHdpdGhIZWFkaW5nOm1fbG9jYXRpb25NYW5hZ2VyLmhlYWRpbmddOworICAgICAgICBb
c2VsZiBzZW5kTW90aW9uRGF0YTpkZXZpY2VNb3Rpb24gd2l0aEhlYWRpbmc6W21fbG9jYXRpb25N
YW5hZ2VyIGhlYWRpbmddXTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKENNQWNjZWxlcm9tZXRl
ckRhdGEgKmFjY2VsZXJvbWV0ZXJEYXRhID0gbV9tb3Rpb25NYW5hZ2VyLmFjY2VsZXJvbWV0ZXJE
YXRhKQorICAgICAgICBpZiAoQ01BY2NlbGVyb21ldGVyRGF0YSAqYWNjZWxlcm9tZXRlckRhdGEg
PSBbbV9tb3Rpb25NYW5hZ2VyIGFjY2VsZXJvbWV0ZXJEYXRhXSkKICAgICAgICAgICAgIFtzZWxm
IHNlbmRBY2NlbGVyb21ldGVyRGF0YTphY2NlbGVyb21ldGVyRGF0YV07CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCmluZGV4IDI0N2Y5MmZlOWFk
MzNmMzM2OTRjMzkyYjVhMmI5Yjk2MGI1NmE4MGEuLjA2ZjA2YTU2ODI3N2VjOGJiNTZhYjBlZWM2
NGQ4NTU2YWJkMzM3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93
YWsvV0FLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1Zp
ZXcubW0KQEAgLTI0NSw4ICsyNDUsNiBAQCAtICh2b2lkKWRlYWxsb2MKICAgICAgICAgV0tSZWxl
YXNlICh2aWV3UmVmKTsKICAgICB9CiAgICAgCi0gICAgW3N1YnZpZXdSZWZlcmVuY2VzIHJlbGVh
c2VdOwotICAgIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMjYzLDcgKzI2MSw3IEBA
IC0gKFdLVmlld1JlZilfdmlld1JlZgogLSAoTlNNdXRhYmxlU2V0ICopX3N1YnZpZXdSZWZlcmVu
Y2VzCiB7CiAgICAgaWYgKCFzdWJ2aWV3UmVmZXJlbmNlcykKLSAgICAgICAgc3Vidmlld1JlZmVy
ZW5jZXMgPSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07CisgICAgICAgIHN1YnZpZXdSZWZl
cmVuY2VzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwogICAgIHJldHVy
biBzdWJ2aWV3UmVmZXJlbmNlczsKIH0KIApAQCAtMzI4LDEzICszMjYsMTIgQEAgLSAoV0FLVmll
dyAqKWxhc3RTY3JvbGxhYmxlQW5jZXN0b3IKIAogLSAodm9pZClhZGRTdWJ2aWV3OihXQUtWaWV3
ICopc3VidmlldwogewotICAgIFtzdWJ2aWV3IHJldGFpbl07CisgICAgYXV0byBwcm90ZWN0ZWRT
dWJWaWV3ID0gcmV0YWluUHRyKHN1YlZpZXcpOwogICAgIFtzdWJ2aWV3IHJlbW92ZUZyb21TdXBl
cnZpZXddOwogICAgIFdLVmlld0FkZFN1YnZpZXcgKHZpZXdSZWYsIFtzdWJ2aWV3IF92aWV3UmVm
XSk7CiAgICAgCiAgICAgLy8gS2VlcCBhIHJlZmVyZW5jZSB0byBzdWJ2aWV3IHNvIGl0IHN0aWNr
cyBhcm91bmQuCiAgICAgW1tzZWxmIF9zdWJ2aWV3UmVmZXJlbmNlc10gYWRkT2JqZWN0OnN1YnZp
ZXddOwotICAgIFtzdWJ2aWV3IHJlbGVhc2VdOwogfQogCiAtICh2b2lkKXdpbGxSZW1vdmVTdWJ2
aWV3OihXQUtWaWV3ICopc3VidmlldwpAQCAtMzQ0LDEwICszNDEsOSBAQCAtICh2b2lkKXdpbGxS
ZW1vdmVTdWJ2aWV3OihXQUtWaWV3ICopc3VidmlldwogCiAtICh2b2lkKXJlbW92ZUZyb21TdXBl
cnZpZXcKIHsKLSAgICBXQUtWaWV3ICpvbGRTdXBlcnZpZXcgPSBbW3NlbGYgc3VwZXJ2aWV3XSBy
ZXRhaW5dOworICAgIFJldGFpblB0cjxXQUtWaWV3PiBvbGRTdXBlcnZpZXcgPSBbc2VsZiBzdXBl
cnZpZXddOwogICAgIFdLVmlld1JlbW92ZUZyb21TdXBlcnZpZXcgKHZpZXdSZWYpOwogICAgIFtb
b2xkU3VwZXJ2aWV3IF9zdWJ2aWV3UmVmZXJlbmNlc10gcmVtb3ZlT2JqZWN0OnNlbGZdOwotICAg
IFtvbGRTdXBlcnZpZXcgcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRv
dwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3SW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlld0ludGVybmFs
LmgKaW5kZXggY2FkMDYyODM3MTkwOTcxZDQ2NjZlOWFhN2MwY2Q5OGYxOGVjMGZhNC4uMjA4ZDJm
MDY1MWU2ODhkNzFjNTEzZWYwMGU0NmUzMTNiYjdlOGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXdJbnRlcm5hbC5oCkBAIC0zNiw3ICszNiw3IEBA
CiAKICAgICAvLyBUaGlzIGFycmF5IGlzIG9ubHkgdXNlZCB0byBrZWVwIFdBS1ZpZXdzIGFsaXZl
LgogICAgIC8vIFRoZSBhY3R1YWwgc3Vidmlld3MgYXJlIG1haW50YWluZWQgYnkgdGhlIFdLVmll
dy4KLSAgICBOU011dGFibGVTZXQgKnN1YnZpZXdSZWZlcmVuY2VzOworICAgIFJldGFpblB0cjxO
U011dGFibGVTZXQ+IHN1YnZpZXdSZWZlcmVuY2VzOwogCiAgICAgQk9PTCBfaXNIaWRkZW47CiAg
ICAgQk9PTCBfZHJhd3NPd25EZXNjZW5kYW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggYTE5ZDMxNGYyNTlhZjE1YjE0YjlkYTc1N2M4ZmU1
NzFiZTkwYmJmYi4uZjMyNmE2OWY5NTYwZmMzNDFmZGJjNDYwNzU4OWFjMDA3YTY4NjJmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1NSw5
ICsyNTUsNyBAQCBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVi
b2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAKIHN0YXRpYyB2b2lkIHdyaXRlRmlsZVdyYXBw
ZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QmIG5ld0NoYW5nZUNvdW50KQogewotICAgIE5TVGV4dEF0
dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRo
RmlsZVdyYXBwZXI6d3JhcHBlcl07Ci0gICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcgPSBb
TlNBdHRyaWJ1dGVkU3RyaW5nIGF0dHJpYnV0ZWRTdHJpbmdXaXRoQXR0YWNobWVudDphdHRhY2ht
ZW50XTsKLSAgICBbYXR0YWNobWVudCByZWxlYXNlXTsKKyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcg
KnN0cmluZyA9IFtOU0F0dHJpYnV0ZWRTdHJpbmcgYXR0cmlidXRlZFN0cmluZ1dpdGhBdHRhY2ht
ZW50OmFkb3B0TlMoW1tOU1RleHRBdHRhY2htZW50IGFsbG9jXSBpbml0V2l0aEZpbGVXcmFwcGVy
OndyYXBwZXJdKS5nZXQoKV07CiAKICAgICBOU0RhdGEgKlJURkREYXRhID0gW3N0cmluZyBSVEZE
RnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dOwogICAgIGlmICghUlRGRERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCmluZGV4
IDBmYWVkZjg0YmQ1NjczYzU4Y2YxZmI2NGI4MzVhMDk5MzNhNzc4ZDcuLjI5NThmMWJjZTM5ZWNl
Yzk4NmRiODg1MjlmMTU4ZDcyMmZhZDY2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCkBAIC0y
NDEsOSArMjQxLDcgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXpl
Vm9pY2VMaXN0KCkKICAgICAgICAgTlNTdHJpbmcgKnZvaWNlVVJJID0gW2F0dHJpYnV0ZXMgb2Jq
ZWN0Rm9yS2V5Ok5TVm9pY2VJZGVudGlmaWVyXTsKICAgICAgICAgTlNTdHJpbmcgKm5hbWUgPSBb
YXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNWb2ljZU5hbWVdOwogICAgICAgICBOU1N0cmluZyAq
bGFuZ3VhZ2UgPSBbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNWb2ljZUxvY2FsZUlkZW50aWZp
ZXJdOwotICAgICAgICBOU0xvY2FsZSAqbG9jYWxlID0gW1tOU0xvY2FsZSBhbGxvY10gaW5pdFdp
dGhMb2NhbGVJZGVudGlmaWVyOmxhbmd1YWdlXTsKLSAgICAgICAgTlNTdHJpbmcgKmRlZmF1bHRW
b2ljZVVSSSA9IHNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZpZXJGb3JMb2Nh
bGUobG9jYWxlKTsKLSAgICAgICAgW2xvY2FsZSByZWxlYXNlXTsKKyAgICAgICAgTlNTdHJpbmcg
KmRlZmF1bHRWb2ljZVVSSSA9IHNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZp
ZXJGb3JMb2NhbGUoYWRvcHROUyhbW05TTG9jYWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50
aWZpZXI6bGFuZ3VhZ2VdKS5nZXQoKSk7CiAKICAgICAgICAgLy8gQ2hhbmdlIHRvIEJDUC00NyBm
b3JtYXQgYXMgZGVmaW5lZCBieSBzcGVjLgogICAgICAgICBsYW5ndWFnZSA9IFtsYW5ndWFnZSBz
dHJpbmdCeVJlcGxhY2luZ09jY3VycmVuY2VzT2ZTdHJpbmc6QCJfIiB3aXRoU3RyaW5nOkAiLSJd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQppbmRl
eCBiYWM1YWY1ZGUxZWNmZWY5ODhlYjAzZjIwOWRhNWRmZGM2NjI4NGUxLi43ZTJmNmFhNTJkY2Rl
MzIxNDcwMTU5MTY2ZTU0OGEwY2M5YWY0ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtMjYwLDcgKzI2MCw3IEBAIFJldGFpblB0cjxO
U051bWJlcj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpncmFkdWFsRGVjb2RlclJlZnJl
c2hDb3VudCgpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9k
ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9Ci0g
ICAgcmV0dXJuIGFkb3B0TlMoW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6KHByaW1lSW5mby5sZWFk
aW5nRnJhbWVzIC8gbV9kZXN0aW5hdGlvbkZvcm1hdC5tRnJhbWVzUGVyUGFja2V0KV0pOworICAg
IHJldHVybiByZXRhaW5QdHIoW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6KHByaW1lSW5mby5sZWFk
aW5nRnJhbWVzIC8gbV9kZXN0aW5hdGlvbkZvcm1hdC5tRnJhbWVzUGVyUGFja2V0KV0pOwogfQog
CiBDTVNhbXBsZUJ1ZmZlclJlZiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1
ZmZlcldpdGhOdW1QYWNrZXRzKFVJbnQzMiBudW1QYWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QgZmls
bEJ1ZmZlckxpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCA1NjU1NTQ4N2E3OGIw
YTA0ZGI3MTI4ZGI0MGE4ZjU3ZTJiOWVkYmI0Li5kODZmNGM5MDVlYmZlMjdjNzNiMjVhN2Y2M2I2
MzA1YjlmZWJmNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTE1NiwxMiArMTU2
LDEyIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpuc1JlcXVl
c3QgPSBbbV9uc1JlcXVlc3QuZ2V0KCkgbXV0YWJsZUNvcHldOworICAgIGF1dG8gbnNSZXF1ZXN0
ID0gYWRvcHROUyhbbV9uc1JlcXVlc3QuZ2V0KCkgbXV0YWJsZUNvcHldKTsKIAogICAgIGlmIChu
c1JlcXVlc3QpCiAgICAgICAgIFtuc1JlcXVlc3Qgc2V0VVJMOnVybCgpXTsKICAgICBlbHNlCi0g
ICAgICAgIG5zUmVxdWVzdCA9IFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhV
Ukw6dXJsKCldOworICAgICAgICBuc1JlcXVlc3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVx
dWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsKCldKTsKIAogICAgIGlmIChSZXNvdXJjZVJlcXVl
c3Q6Omh0dHBQaXBlbGluaW5nRW5hYmxlZCgpKQogICAgICAgICBDRlVSTFJlcXVlc3RTZXRTaG91
bGRQaXBlbGluZUhUVFAoW25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSwgdHJ1ZSwgdHJ1ZSk7CkBA
IC0xODcsNyArMTg3LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1S
ZXF1ZXN0KCkKICAgICAgICAgW25zUmVxdWVzdCBzZXRIVFRQTWV0aG9kOmh0dHBNZXRob2QoKV07
CiAgICAgW25zUmVxdWVzdCBzZXRIVFRQU2hvdWxkSGFuZGxlQ29va2llczphbGxvd0Nvb2tpZXMo
KV07CiAKLSAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpzaXRlRm9yQ29va2llcyhtX3NhbWVT
aXRlRGlzcG9zaXRpb24sIG5zUmVxdWVzdC5VUkwpIGZvcktleTpAIl9rQ0ZIVFRQQ29va2llUG9s
aWN5UHJvcGVydHlTaXRlRm9yQ29va2llcyJdOworICAgIFtuc1JlcXVlc3QgX3NldFByb3BlcnR5
OnNpdGVGb3JDb29raWVzKG1fc2FtZVNpdGVEaXNwb3NpdGlvbiwgW25zUmVxdWVzdCBVUkxdKSBm
b3JLZXk6QCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5U2l0ZUZvckNvb2tpZXMiXTsKICAg
ICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTptX2lzVG9wU2l0ZSA/IEBZRVMgOiBATk8gZm9yS2V5
OkAiX2tDRkhUVFBDb29raWVQb2xpY3lQcm9wZXJ0eUlzVG9wTGV2ZWxOYXZpZ2F0aW9uIl07CiAK
ICAgICAvLyBDYW5ub3QganVzdCB1c2Ugc2V0QWxsSFRUUEhlYWRlckZpZWxkcyBoZXJlLCBiZWNh
dXNlIGl0IGRvZXMgbm90IHJlbW92ZSBoZWFkZXJzLgpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQg
UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgU3RyaW5nIHBh
cnRpdGlvbiA9IGNhY2hlUGFydGl0aW9uKCk7CiAgICAgaWYgKCFwYXJ0aXRpb24uaXNOdWxsKCkg
JiYgIXBhcnRpdGlvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgTlNTdHJpbmcgKnBhcnRpdGlvblZh
bHVlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOnBhcnRpdGlvbi51dGY4KCkuZGF0
YSgpXTsKLSAgICAgICAgW05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6cGFydGl0aW9uVmFsdWUg
Zm9yS2V5OihOU1N0cmluZyAqKV9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSBpblJlcXVlc3Q6bnNS
ZXF1ZXN0XTsKKyAgICAgICAgW05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6cGFydGl0aW9uVmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKV9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSBpblJlcXVlc3Q6
bnNSZXF1ZXN0LmdldCgpXTsKICAgICB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0yMjIsNyAr
MjIyLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkK
ICAgICB9CiAjZW5kaWYKIAotICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhuc1JlcXVlc3QpOwor
ICAgIG1fbnNSZXF1ZXN0ID0gV1RGTW92ZShuc1JlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkKQEAgLTIzMiwxNiArMjMyLDE2IEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0g
W21fbnNSZXF1ZXN0LmdldCgpIG11dGFibGVDb3B5XTsKKyAgICBhdXRvIG5zUmVxdWVzdCA9IGFk
b3B0TlMoW21fbnNSZXF1ZXN0LmdldCgpIG11dGFibGVDb3B5XSk7CiAKICAgICBpZiAobnNSZXF1
ZXN0KQogICAgICAgICBbbnNSZXF1ZXN0IHNldFVSTDp1cmwoKV07CiAgICAgZWxzZQotICAgICAg
ICBuc1JlcXVlc3QgPSBbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOnVy
bCgpXTsKKyAgICAgICAgbnNSZXF1ZXN0ID0gYWRvcHROUyhbW05TTXV0YWJsZVVSTFJlcXVlc3Qg
YWxsb2NdIGluaXRXaXRoVVJMOnVybCgpXSk7CiAKICAgICBGb3JtRGF0YSogZm9ybURhdGEgPSBo
dHRwQm9keSgpOwogICAgIGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEtPmlzRW1wdHkoKSkKLSAg
ICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkobnNSZXF1ZXN0LCBmb3JtRGF0YSk7CisgICAgICAg
IFdlYkNvcmU6OnNldEhUVFBCb2R5KG5zUmVxdWVzdC5nZXQoKSwgZm9ybURhdGEpOwogCiAgICAg
aWYgKE5TSW5wdXRTdHJlYW0gKmJvZHlTdHJlYW0gPSBbbnNSZXF1ZXN0IEhUVFBCb2R5U3RyZWFt
XSkgewogICAgICAgICAvLyBGb3Igc3RyZWFtcywgcHJvdmlkZSBhIENvbnRlbnQtTGVuZ3RoIHRv
IGF2b2lkIHVzaW5nIGNodW5rZWQgZW5jb2RpbmcsIGFuZCB0byBnZXQgYWNjdXJhdGUgdG90YWwg
bGVuZ3RoIGluIGNhbGxiYWNrcy4KQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFJlc291cmNlUmVx
dWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkKICAgICAgICAgfQogICAgIH0KIAotICAg
IG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhuc1JlcXVlc3QpOworICAgIG1fbnNSZXF1ZXN0ID0gV1RG
TW92ZShuc1JlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNl
c3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL05ldHdvcmtTdGF0ZU5vdGlmaWVy
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRl
Tm90aWZpZXJJT1MubW0KaW5kZXggZmIxMDk0NmZlYzkzYmYxZWYxNDYwNTU2NzllZWI4ODlkMWVk
OGNhYi4uZWVlYmU3NWU5MmE0YThhNzQyYTVlZmQ5ZGJhMTk5MjdjMTRiZmVkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZp
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29y
a1N0YXRlTm90aWZpZXJJT1MubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCisjaW1w
b3J0IDx3dGYvQmxvY2tQdHIuaD4KIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW1w
b3J0IDxBcHBTdXBwb3J0L0NQTmV0d29ya09ic2VydmVyLmg+CkBAIC00Miw3ICs0Myw3IEBAIEBl
bmQKICNlbmRpZgogCiBAaW50ZXJmYWNlIFdlYk5ldHdvcmtTdGF0ZU9ic2VydmVyIDogTlNPYmpl
Y3QgewotICAgIHZvaWQgKF5ibG9jaykoKTsKKyAgICBCbG9ja1B0ciBibG9jazsKIH0KIC0gKGlk
KWluaXRXaXRoQmxvY2s6KHZvaWQgKF4pKCkpYmxvY2s7CiBAZW5kCkBAIC01NCwxMyArNTUsMTIg
QEAgLSAoaWQpaW5pdFdpdGhCbG9jazoodm9pZCAoXikoKSlvYnNlcnZlckJsb2NrCiAgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgW1tDUE5l
dHdvcmtPYnNlcnZlciBzaGFyZWROZXR3b3JrT2JzZXJ2ZXJdIGFkZE5ldHdvcmtSZWFjaGFibGVP
YnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihuZXR3b3JrU3RhdGVDaGFuZ2VkOildOwot
ICAgIGJsb2NrID0gW29ic2VydmVyQmxvY2sgY29weV07CisgICAgYmxvY2sgPSBtYWtlQmxvY2tQ
dHIob2JzZXJ2ZXJCbG9jayk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpZGVhbGxv
YwogewotICAgIFtibG9jayByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFu
ZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VI
YW5kbGVNYWMubW0KaW5kZXggZDFlOGMwMmEzOTBmZmRmMzBhNzVjZDY0NzI2ODVkZTA3N2JiNzQ0
YS4uYjJjYmFiN2M4YWNmMmMzOTVmOTg0NzBhNTBiZjA3ODJkOTEyY2E1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVN
YWMubW0KQEAgLTMxNSwxNCArMzE1LDEwIEBAIGlkIFJlc291cmNlSGFuZGxlOjptYWtlRGVsZWdh
dGUoYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgUmVmUHRyPFN5bmNocm9uCiB7CiAg
ICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRlKTsKIAotICAgIGlkIDxOU1VSTENvbm5lY3Rpb25EZWxl
Z2F0ZT4gZGVsZWdhdGU7CiAgICAgaWYgKHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKQotICAg
ICAgICBkZWxlZ2F0ZSA9IFtbV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aEhhbmRsZTp0aGlzIG1lc3NhZ2VRdWV1ZTpXVEZNb3ZlKHF1
ZXVlKV07CisgICAgICAgIGQtPm1fZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEhhbmRsZTp0aGlz
IG1lc3NhZ2VRdWV1ZTpXVEZNb3ZlKHF1ZXVlKV0pOwogICAgIGVsc2UKLSAgICAgICAgZGVsZWdh
dGUgPSBbW1dlYkNvcmVSZXNvdXJjZUhhbmRsZVdpdGhDcmVkZW50aWFsU3RvcmFnZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhIYW5kbGU6dGhpcyBtZXNzYWdlUXVldWU6
V1RGTW92ZShxdWV1ZSldOwotCi0gICAgZC0+bV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIFtk
ZWxlZ2F0ZSByZWxlYXNlXTsKKyAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJD
b3JlUmVzb3VyY2VIYW5kbGVXaXRoQ3JlZGVudGlhbFN0b3JhZ2VBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoSGFuZGxlOnRoaXMgbWVzc2FnZVF1ZXVlOldURk1vdmUocXVl
dWUpXSk7CiAKICAgICByZXR1cm4gZC0+bV9kZWxlZ2F0ZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxlQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsZUNvY29hLm1tCmluZGV4IGY3Njkw
OTNkYzJjODk3ZjJkNzgxYTZmNDgyMTQxYWRlM2RhYzRhOTkuLjA4NDRlOTBkNmMwNDhkNGU5N2Vk
NDllNmZiN2U0ZjQ5Y2I0OWU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvY29jb2EvTG9jYWxlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbQpAQCAtNTEsMTMgKzUxLDEzIEBAIHN0ZDo6dW5pcXVl
X3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIAog
c3RhdGljIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGNyZWF0ZURhdGVUaW1lRm9ybWF0dGVy
KE5TTG9jYWxlKiBsb2NhbGUsIE5TQ2FsZW5kYXIqIGNhbGVuZGFyLCBOU0RhdGVGb3JtYXR0ZXJT
dHlsZSBkYXRlU3R5bGUsIE5TRGF0ZUZvcm1hdHRlclN0eWxlIHRpbWVTdHlsZSkKIHsKLSAgICBO
U0RhdGVGb3JtYXR0ZXIgKmZvcm1hdHRlciA9IFtbTlNEYXRlRm9ybWF0dGVyIGFsbG9jXSBpbml0
XTsKKyAgICBhdXRvIGZvcm1hdHRlciA9IGFkb3B0TlMoW1tOU0RhdGVGb3JtYXR0ZXIgYWxsb2Nd
IGluaXRdKTsKICAgICBbZm9ybWF0dGVyIHNldExvY2FsZTpsb2NhbGVdOwogICAgIFtmb3JtYXR0
ZXIgc2V0RGF0ZVN0eWxlOmRhdGVTdHlsZV07CiAgICAgW2Zvcm1hdHRlciBzZXRUaW1lU3R5bGU6
dGltZVN0eWxlXTsKICAgICBbZm9ybWF0dGVyIHNldFRpbWVab25lOltOU1RpbWVab25lIHRpbWVa
b25lV2l0aEFiYnJldmlhdGlvbjpAIlVUQyJdXTsKICAgICBbZm9ybWF0dGVyIHNldENhbGVuZGFy
OmNhbGVuZGFyXTsKLSAgICByZXR1cm4gYWRvcHROUyhmb3JtYXR0ZXIpOworICAgIHJldHVybiBm
b3JtYXR0ZXI7CiB9CiAKIExvY2FsZUNvY29hOjpMb2NhbGVDb2NvYShjb25zdCBBdG9tU3RyaW5n
JiBsb2NhbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9U
ZXh0Qm91bmRhcmllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRC
b3VuZGFyaWVzLm1tCmluZGV4IDQwOTBiNjY4OWMxNmVlOTBiYjBmMTI5ZDBjNDg0Mjg1NDY4Njk3
NzAuLjVmMzZkMDgzMTQ4NmM5ZDllNGZjOTNiOWJkZjFkNjE3N2MyMGU2NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCkBAIC0x
ODEsOSArMTgxLDggQEAgc3RhdGljIHZvaWQgZmluZENvbXBsZXhXb3JkQm91bmRhcnkoU3RyaW5n
VmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGludCogc3RhcnQsIGkKIHZvaWQgZmluZFdvcmRCb3Vu
ZGFyeShTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgaW50KiBzdGFydCwgaW50KiBlbmQp
CiB7CiAjaWYgVVNFKEFQUEtJVCkKLSAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRT
dHJpbmcgPSBbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6dGV4dC5j
cmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCldOworICAgIGF1dG8gYXR0cmlidXRl
ZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3Ry
aW5nOnRleHQuY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpXSk7CiAgICAgTlNS
YW5nZSByYW5nZSA9IFthdHRyaWJ1dGVkU3RyaW5nIGRvdWJsZUNsaWNrQXRJbmRleDpzdGQ6Om1p
bjx1bnNpZ25lZD4ocG9zaXRpb24sIHRleHQubGVuZ3RoKCkgLSAxKV07Ci0gICAgW2F0dHJpYnV0
ZWRTdHJpbmcgcmVsZWFzZV07CiAgICAgKnN0YXJ0ID0gcmFuZ2UubG9jYXRpb247CiAgICAgKmVu
ZCA9IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoOwogI2Vsc2UKQEAgLTIzMiw5ICsyMzEs
OCBAQCB2b2lkIGZpbmRFbmRXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRp
b24sIGludCogZW5kKQogaW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQs
IGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKQogeyAgIAogI2lmIFVTRShBUFBLSVQpCi0gICAg
TlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRleHQuY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29weWlu
ZygpLmdldCgpXTsKKyAgICBhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0ZXh0LmNyZWF0ZU5TU3RyaW5nV2l0
aG91dENvcHlpbmcoKS5nZXQoKV0pOwogICAgIGludCByZXN1bHQgPSBbYXR0cmlidXRlZFN0cmlu
ZyBuZXh0V29yZEZyb21JbmRleDpwb3NpdGlvbiBmb3J3YXJkOmZvcndhcmRdOwotICAgIFthdHRy
aWJ1dGVkU3RyaW5nIHJlbGVhc2VdOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIC8v
IFRoaXMgdmVyeSBsaWtlbHkgd29uJ3QgYmVoYXZlIGV4YWN0bHkgbGlrZSB0aGUgbm9uLWlQaG9u
ZSB2ZXJzaW9uLCBidXQgaXQgd29ya3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KaW5k
ZXggNjNhOWY5YmQxZWQxZDc1MmM0Zjg0OWVlNjE4NzA2N2E5ZjU2MjQ0YS4uMjUxNTQ2OTA1NjNj
NWFlOGY2ZDE4YmMxNDg0OGY1NjJiOWE3Y2QzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMubW0KQEAgLTEwOSw3ICsxMDksNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjplbmNvZGVkUHJlZmVy
ZW5jZVZhbHVlKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleQogewogICAg
IGF1dG8gdXNlckRlZmF1bHRzID0gYWRvcHROUyhbW05TVXNlckRlZmF1bHRzIGFsbG9jXSBpbml0
V2l0aFN1aXRlTmFtZTpkb21haW5dKTsKICAgICBpZCB2YWx1ZSA9IFt1c2VyRGVmYXVsdHMgb2Jq
ZWN0Rm9yS2V5OmtleV07Ci0gICAgYXV0byBkYXRhID0gYWRvcHROUyhbTlNLZXllZEFyY2hpdmVy
IGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OnZhbHVlIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZ
RVMgZXJyb3I6bnVsbHB0cl0pOworICAgIGF1dG8gZGF0YSA9IHJldGFpblB0cihbTlNLZXllZEFy
Y2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OnZhbHVlIHJlcXVpcmluZ1NlY3VyZUNv
ZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOwogICAgIHJldHVybiBbZGF0YSBiYXNlNjRFbmNvZGVk
U3RyaW5nV2l0aE9wdGlvbnM6MF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dLT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tPYmpl
Y3QubW0KaW5kZXggNzM2NjEwNWNiMTFhZjA1ZmE4OWQxYmNmNzM4OWVlNjEyNDlhMWExNC4uM2E4
ZTM0YzQzYzkyOGVjMzFjNzgzZjhiNWYwNmJmOWExNDUxY2Q1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV0tPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV0tPYmplY3QubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIldLT2JqZWN0
LmgiCiAKICNpbXBvcnQgIkFQSU9iamVjdC5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
CiBAaW50ZXJmYWNlIE5TT2JqZWN0ICgpCiAtIChCT09MKWlzTlNBcnJheV9fOwpAQCAtNDUsMTMg
KzQ2LDEyIEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLT2JqZWN0IHsKICAgICBCT09MIF9o
YXNJbml0aWFsaXplZFRhcmdldDsKLSAgICBOU09iamVjdCAqX3RhcmdldDsKKyAgICBSZXRhaW5Q
dHI8TlNPYmplY3Q+IF90YXJnZXQ7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewogICAgIEFQSTo6
T2JqZWN0Ojpmcm9tV0tPYmplY3RFeHRyYVNwYWNlKHNlbGYpLn5PYmplY3QoKTsKLSAgICBbX3Rh
cmdldCByZWxlYXNlXTsKIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTYyLDcgKzYyLDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIGluaXRpYWxpemVUYXJnZXRJZk5lZWRlZChXS09iamVjdCAq
c2VsZikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2VsZi0+X2hhc0luaXRpYWxpemVkVGFyZ2V0
ID0gWUVTOwotICAgIHNlbGYtPl90YXJnZXQgPSBbc2VsZiBfd2ViX2NyZWF0ZVRhcmdldF07Cisg
ICAgc2VsZi0+X3RhcmdldCA9IGFkb3B0TlMoW3NlbGYgX3dlYl9jcmVhdGVUYXJnZXRdKTsKIH0K
IAogLSAoQk9PTClpc0VxdWFsOihpZClvYmplY3QKQEAgLTExNyw3ICsxMTcsNyBAQCAtIChpZClm
b3J3YXJkaW5nVGFyZ2V0Rm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvcgogewogICAgIGluaXRpYWxp
emVUYXJnZXRJZk5lZWRlZChzZWxmKTsKIAotICAgIHJldHVybiBfdGFyZ2V0OworICAgIHJldHVy
biBfdGFyZ2V0LmdldCgpOwogfQogCiAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCkBAIC0xNTcs
NyArMTU3LDcgQEAgLSAodm9pZClmb3J3YXJkSW52b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52
b2NhdGlvbgogewogICAgIGluaXRpYWxpemVUYXJnZXRJZk5lZWRlZChzZWxmKTsKIAotICAgIFtp
bnZvY2F0aW9uIGludm9rZVdpdGhUYXJnZXQ6X3RhcmdldF07CisgICAgW2ludm9jYXRpb24gaW52
b2tlV2l0aFRhcmdldDpfdGFyZ2V0LmdldCgpXTsKIH0KIAogLSAoTlNNZXRob2RTaWduYXR1cmUg
KiltZXRob2RTaWduYXR1cmVGb3JTZWxlY3RvcjooU0VMKXNlbApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBw
bGllci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KaW5kZXggMGZkNzBkNmY3ZmJkODY1N2MxYTUyMWZlMTEy
NjYyMDY0NDg3ZGZkZi4uYTFhZTMxZjUxZGU0MTE2MjlhZjhmNDRiMDdjYzYyMjRkOWRjYzNiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCkBAIC02OSwxMCAr
NjksMTAgQEAgLSAodm9pZClfd2ViX3NldFN1YnZpZXdzOihOU0FycmF5ICopbmV3U3Vidmlld3MK
ICAgICB9CiAKICAgICAvLyBSZW1vdmUgdmlld3MgYXQgdGhlIGVuZC4KLSAgICBOU011dGFibGVB
cnJheSAqdmlld3NUb1JlbW92ZSA9IG5pbDsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
IHZpZXdzVG9SZW1vdmU7CiAgICAgYXV0byBhcHBlbmRWaWV3VG9SZW1vdmUgPSBbJnZpZXdzVG9S
ZW1vdmVdKFVJVmlldyAqdmlldykgewogICAgICAgICBpZiAoIXZpZXdzVG9SZW1vdmUpCi0gICAg
ICAgICAgICB2aWV3c1RvUmVtb3ZlID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Cisg
ICAgICAgICAgICB2aWV3c1RvUmVtb3ZlID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CiAKICAgICAgICAgW3ZpZXdzVG9SZW1vdmUgYWRkT2JqZWN0OnZpZXddOwogICAg
IH07CkBAIC04NCwxMCArODQsOCBAQCAtICh2b2lkKV93ZWJfc2V0U3Vidmlld3M6KE5TQXJyYXkg
KiluZXdTdWJ2aWV3cwogICAgICAgICAgICAgYXBwZW5kVmlld1RvUmVtb3ZlKHN1YnZpZXcpOwog
ICAgIH0KIAotICAgIGlmICh2aWV3c1RvUmVtb3ZlKSB7CisgICAgaWYgKHZpZXdzVG9SZW1vdmUp
CiAgICAgICAgIFt2aWV3c1RvUmVtb3ZlIG1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOkBzZWxl
Y3RvcihyZW1vdmVGcm9tU3VwZXJ2aWV3KV07Ci0gICAgICAgIFt2aWV3c1RvUmVtb3ZlIHJlbGVh
c2VdOwotICAgIH0KIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
aW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCA4YzFmZTk2MGMxYTZmY2RiNDNhYTAwODA3Y2RkOTVl
ZWNlZTJlYWRhLi4wZjY5NGJhOGRjZjZlZmYyNWMwZDdmNjVmMzdmYzQzYzc5NWU3MzhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAt
NTksNiArNTksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9WZXJzaW9uQ2hlY2tzLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL0dy
YXBoaWNzU2VydmljZXNTUEkuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8
d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCkBA
IC0zMDMyLDExICszMDMzLDggQEAgLSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdElu
Vmlld0Nvb3JkaW5hdGVzIGludG9JbWFnZU9mV2lkdGg6KENHRmxvYXQpaW0KIHsKICAgICBpZiAo
X2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRh
dGVNb2RlOjpOb3RSZXNpemluZykgewogICAgICAgICAvLyBEZWZlciBzbmFwc2hvdHRpbmcgdW50
aWwgYWZ0ZXIgdGhlIGN1cnJlbnQgcmVzaXplIGNvbXBsZXRlcy4KLSAgICAgICAgdm9pZCAoXmNv
cGllZENvbXBsZXRpb25IYW5kbGVyKShDR0ltYWdlUmVmKSA9IFtjb21wbGV0aW9uSGFuZGxlciBj
b3B5XTsKLSAgICAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gcmV0YWluZWRTZWxmID0gc2VsZjsK
LSAgICAgICAgX2NhbGxiYWNrc0RlZmVycmVkRHVyaW5nUmVzaXplLmFwcGVuZChbcmV0YWluZWRT
ZWxmLCByZWN0SW5WaWV3Q29vcmRpbmF0ZXMsIGltYWdlV2lkdGgsIGNvcGllZENvbXBsZXRpb25I
YW5kbGVyXSB7Ci0gICAgICAgICAgICBbcmV0YWluZWRTZWxmIF9zbmFwc2hvdFJlY3Q6cmVjdElu
Vmlld0Nvb3JkaW5hdGVzIGludG9JbWFnZU9mV2lkdGg6aW1hZ2VXaWR0aCBjb21wbGV0aW9uSGFu
ZGxlcjpjb3BpZWRDb21wbGV0aW9uSGFuZGxlcl07Ci0gICAgICAgICAgICBbY29waWVkQ29tcGxl
dGlvbkhhbmRsZXIgcmVsZWFzZV07CisgICAgICAgIF9jYWxsYmFja3NEZWZlcnJlZER1cmluZ1Jl
c2l6ZS5hcHBlbmQoW3JldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgcmVjdEluVmlld0Nv
b3JkaW5hdGVzLCBpbWFnZVdpZHRoLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgIFtyZXRhaW5lZFNlbGYgX3NuYXBzaG90
UmVjdDpyZWN0SW5WaWV3Q29vcmRpbmF0ZXMgaW50b0ltYWdlT2ZXaWR0aDppbWFnZVdpZHRoIGNv
bXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyLmdldCgpXTsKICAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0K
aW5kZXggMTUxMjI5MDQ1ZjEzZTljZGRiZTA5MWU2MjdiZmExZmUyMDZkZTI4OS4uN2ZiN2Y4YWEz
NmUwZTVmZmI4M2M2MjAyYzZiOTQ0Yzg0N2ZhYmJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudC5tbQpAQCAtMzcsNyArMzcsNyBAQCBAcHJpdmF0ZQogICAgIFdlYWtQdHI8V2Vi
S2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eT4gX2N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5OwogICAgIFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCBfY3VzdG9tUHJv
dG9jb2xJRDsKICAgICBOU1VSTENhY2hlU3RvcmFnZVBvbGljeSBfc3RvcmFnZVBvbGljeTsKLSAg
ICBOU1VSTENvbm5lY3Rpb24gKl91cmxDb25uZWN0aW9uOworICAgIFJldGFpblB0cjxOU1VSTENv
bm5lY3Rpb24+IF91cmxDb25uZWN0aW9uOwogfQogLSAoaWQpaW5pdFdpdGhMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTooV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSYpY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgY3VzdG9tUHJvdG9jb2xJRDooV2ViS2l0
OjpMZWdhY3lDdXN0b21Qcm90b2NvbElEKWN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdDsKIC0gKHZvaWQpY2FuY2VsOwpAQCAtNTYsNyArNTYsNyBAQCAtIChp
ZClpbml0V2l0aExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OihXZWJLaXQ6OkxlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYQogICAgIF9jdXN0b21Qcm90b2NvbElEID0gY3VzdG9tUHJvdG9j
b2xJRDsKICAgICBfc3RvcmFnZVBvbGljeSA9IE5TVVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZDsK
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIF91cmxDb25uZWN0
aW9uID0gW1tOU1VSTENvbm5lY3Rpb24gYWxsb2NdIGluaXRXaXRoUmVxdWVzdDpyZXF1ZXN0IGRl
bGVnYXRlOnNlbGYgc3RhcnRJbW1lZGlhdGVseTpOT107CisgICAgX3VybENvbm5lY3Rpb24gPSBh
ZG9wdE5TKFtbTlNVUkxDb25uZWN0aW9uIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdCBk
ZWxlZ2F0ZTpzZWxmIHN0YXJ0SW1tZWRpYXRlbHk6Tk9dKTsKICAgICBbX3VybENvbm5lY3Rpb24g
c2NoZWR1bGVJblJ1bkxvb3A6W05TUnVuTG9vcCBtYWluUnVuTG9vcF0gZm9yTW9kZTpOU1J1bkxv
b3BDb21tb25Nb2Rlc107CiAgICAgW191cmxDb25uZWN0aW9uIHN0YXJ0XTsKICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTY3LDcgKzY3LDYgQEAgLSAoaWQpaW5pdFdp
dGhMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooV2ViS2l0OjpMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmEKIC0gKHZvaWQpZGVhbGxvYwogewogICAgIFtfdXJsQ29ubmVjdGlvbiBjYW5j
ZWxdOwotICAgIFtfdXJsQ29ubmVjdGlvbiByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107
CiB9CiAKQEAgLTE0NSwxMSArMTQ0LDEwIEBAIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50OjpzdGFydExvYWRpbmcoTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyCiAgICAg
aWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBXS0N1c3RvbVByb3RvY29sTG9h
ZGVyICpsb2FkZXIgPSBbW1dLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgYWxsb2NdIGluaXRXaXRoTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6bWFuYWdlciBjdXN0b21Qcm90b2NvbElEOmN1
c3RvbVByb3RvY29sSUQgcmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBhdXRvIGxvYWRlciA9IGFkb3B0
TlMoW1tXS0N1c3RvbVByb3RvY29sTG9hZGVyIGFsbG9jXSBpbml0V2l0aExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5Om1hbmFnZXIgY3VzdG9tUHJvdG9jb2xJRDpjdXN0b21Qcm90b2Nv
bElEIHJlcXVlc3Q6cmVxdWVzdF0pOwogICAgIEFTU0VSVChsb2FkZXIpOwogICAgIEFTU0VSVCgh
bV9sb2FkZXJNYXAuY29udGFpbnMoY3VzdG9tUHJvdG9jb2xJRCkpOwotICAgIG1fbG9hZGVyTWFw
LmFkZChjdXN0b21Qcm90b2NvbElELCBsb2FkZXIpOwotICAgIFtsb2FkZXIgcmVsZWFzZV07Cisg
ICAgbV9sb2FkZXJNYXAuYWRkKGN1c3RvbVByb3RvY29sSUQsIFdURk1vdmUobG9hZGVyKSk7CiB9
CiAKIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OjpzdG9wTG9hZGluZyhM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYsIFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJv
dG9jb2xJRCBjdXN0b21Qcm90b2NvbElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmgK
aW5kZXggMzAxYmFiMTEwOWNlN2ZmNjc0YTM2MjNhYjFjYTE5YTkwNjcyZWY0NS4uMTg3MTkxZmY2
MDQ1YmQ1MGYzYWZjNDNiMGNhMGJhYzMzZWJlZmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxp
Z2h0Vmlldy5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0luc3BlY3Rvck92
ZXJsYXkuaD4KIAogQGludGVyZmFjZSBXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgOiBVSVZpZXcg
ewotICAgIE5TTXV0YWJsZUFycmF5ICpfbGF5ZXJzOyAvLyBDQVNoYXBlTGF5ZXJzLgorICAgIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4gX2xheWVyczsgLy8gQ0FTaGFwZUxheWVycy4KIH0KIC0g
KHZvaWQpdXBkYXRlOihjb25zdCBXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQm
KWhpZ2hsaWdodDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KaW5kZXgg
NmJhZjY2YjlmM2MyMmU3MzYyODMzYzUzZTU1ZWVhYzQ0NjMyM2FlOS4uNDQxMjQ0MzdjMjQzNDI1
YzNlZGRiOTkzNzZjZDYyMjRmMmZjMTZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcubW0KQEAgLTM3LDIwICszNywxOSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZToo
Q0dSZWN0KWZyYW1lCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZy
YW1lXSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgX2xheWVycyA9IFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRdOworICAgIF9sYXllcnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7
CiAgICAgW3NlbGYgX3JlbW92ZUFsbExheWVyc107Ci0gICAgW19sYXllcnMgcmVsZWFzZV07CiAg
ICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtICh2b2lkKV9yZW1vdmVBbGxMYXllcnMKIHsKLSAg
ICBmb3IgKENBU2hhcGVMYXllciAqbGF5ZXIgaW4gX2xheWVycykKKyAgICBmb3IgKENBU2hhcGVM
YXllciAqbGF5ZXIgaW4gX2xheWVycy5nZXQoKSkKICAgICAgICAgW2xheWVyIHJlbW92ZUZyb21T
dXBlcmxheWVyXTsKICAgICBbX2xheWVycyByZW1vdmVBbGxPYmplY3RzXTsKIH0KQEAgLTYzLDEw
ICs2Miw5IEBAIC0gKHZvaWQpX2NyZWF0ZUxheWVyczooTlNVSW50ZWdlciludW1MYXllcnMKICAg
ICBbc2VsZiBfcmVtb3ZlQWxsTGF5ZXJzXTsKIAogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsg
aSA8IG51bUxheWVyczsgKytpKSB7Ci0gICAgICAgIENBU2hhcGVMYXllciAqbGF5ZXIgPSBbW0NB
U2hhcGVMYXllciBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtfbGF5ZXJzIGFkZE9iamVjdDpsYXll
cl07Ci0gICAgICAgIFtzZWxmLmxheWVyIGFkZFN1YmxheWVyOmxheWVyXTsKLSAgICAgICAgW2xh
eWVyIHJlbGVhc2VdOworICAgICAgICBhdXRvIGxheWVyID0gYWRvcHROUyhbW0NBU2hhcGVMYXll
ciBhbGxvY10gaW5pdF0pOworICAgICAgICBbX2xheWVycyBhZGRPYmplY3Q6bGF5ZXIuZ2V0KCld
OworICAgICAgICBbc2VsZi5sYXllciBhZGRTdWJsYXllcjpsYXllci5nZXQoKV07CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4IDkxZjI0ZWFkMTc0NDEyYTQ1NmQ3
YzYyYmNkNGM3YmU4NmIzMTRhMzEuLjEzMmI0ZTkyOTU2OWE1N2JiMDM3Mzg2Y2I3MmI5NmJjNTRh
MWVkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yNTgsMTIgKzI1OCw5IEBA
IHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29uc3QgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFr
ZU5vZGUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9w
ZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewotICAgIGF1dG8gbWFrZVdpdGhMYXllciA9IFsmXSAoUmV0
YWluUHRyPENBTGF5ZXI+IGxheWVyKSB7CisgICAgYXV0byBtYWtlV2l0aExheWVyID0gWyZdIChS
ZXRhaW5QdHI8Q0FMYXllcj4mJiBsYXllcikgewogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsK
ICAgICB9OwotICAgIGF1dG8gbWFrZUFkb3B0aW5nTGF5ZXIgPSBbJl0gKENBTGF5ZXIqIGxheWVy
KSB7Ci0gICAgICAgIHJldHVybiBtYWtlV2l0aExheWVyKGFkb3B0TlMobGF5ZXIpKTsKLSAgICB9
OwogCiAgICAgc3dpdGNoIChwcm9wZXJ0aWVzLnR5cGUpIHsKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlTGF5ZXI6CkBAIC0yNzcsMTMgKzI3NCwxMyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29u
c3QgUmVtb3RlTAogICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0
aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKLSAgICAgICAgcmV0dXJuIG1ha2VBZG9wdGlu
Z0xheWVyKFtbQ0FUcmFuc2Zvcm1MYXllciBhbGxvY10gaW5pdF0pOworICAgICAgICByZXR1cm4g
bWFrZVdpdGhMYXllcihhZG9wdE5TKFtbQ0FUcmFuc2Zvcm1MYXllciBhbGxvY10gaW5pdF0pKTsK
IAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVCYWNrZHJvcExheWVyOgogICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXI6
CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZURhcmtTeXN0ZW1CYWNrZHJvcExh
eWVyOgogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCi0gICAgICAgIHJldHVybiBtYWtlQWRv
cHRpbmdMYXllcihbW0NBQmFja2Ryb3BMYXllciBhbGxvY10gaW5pdF0pOworICAgICAgICByZXR1
cm4gbWFrZVdpdGhMYXllcihhZG9wdE5TKFtbQ0FCYWNrZHJvcExheWVyIGFsbG9jXSBpbml0XSkp
OwogI2Vsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBS
ZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVy
SUQpOwpAQCAtMjk2LDcgKzI5Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVO
b2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAgICAgICAg
IHJldHVybiBtYWtlV2l0aExheWVyKFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4
dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZVNoYXBlTGF5ZXI6Ci0gICAgICAgIHJldHVybiBtYWtlQWRvcHRpbmdM
YXllcihbW0NBU2hhcGVMYXllciBhbGxvY10gaW5pdF0pOworICAgICAgICByZXR1cm4gbWFrZVdp
dGhMYXllcihhZG9wdE5TKFtbQ0FTaGFwZUxheWVyIGFsbG9jXSBpbml0XSkpOwogICAgICAgICAg
ICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggZTQ4MDg1ZDIyNWQyMjk5ZDUy
Yjc0OWRiZTdhZjM2MDM1M2RlMDVhNy4uNTFlMzk2Nzc0NDVmOWFiNGJhYTVmOWYzMDY3Mzk1MzZj
NjkzMjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAt
NDAsMTIgKzQwLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25z
dCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMmIHBy
b3BlcnRpZXMpCiB7Ci0gICAgYXV0byBtYWtlV2l0aFZpZXcgPSBbJl0gKFJldGFpblB0cjxVSVZp
ZXc+IHZpZXcpIHsKKyAgICBhdXRvIG1ha2VXaXRoVmlldyA9IFsmXSAoUmV0YWluUHRyPFVJVmll
dz4mJiB2aWV3KSB7CiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZU5v
ZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZSh2aWV3KSk7CiAgICAgfTsKLSAgICBhdXRv
IG1ha2VBZG9wdGluZ1ZpZXcgPSBbJl0gKFVJVmlldyogdmlldykgewotICAgICAgICByZXR1cm4g
bWFrZVdpdGhWaWV3KGFkb3B0TlModmlldykpOwotICAgIH07CiAKICAgICBzd2l0Y2ggKHByb3Bl
cnRpZXMudHlwZSkgewogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllcjoK
QEAgLTU0LDIyICs1MSwyMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4g
UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKLSAgICAgICAgcmV0dXJuIG1ha2VB
ZG9wdGluZ1ZpZXcoW1tXS0NvbXBvc2l0aW5nVmlldyBhbGxvY10gaW5pdF0pOworICAgICAgICBy
ZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlMoW1tXS0NvbXBvc2l0aW5nVmlldyBhbGxvY10gaW5p
dF0pKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdU
aWxlTGF5ZXI6CiAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRo
UGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUJhY2tkcm9wTGF5ZXI6Ci0gICAgICAgIHJldHVybiBtYWtlQWRvcHRpbmdW
aWV3KFtbV0tTaW1wbGVCYWNrZHJvcFZpZXcgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VXaXRoVmlldyhhZG9wdE5TKFtbV0tTaW1wbGVCYWNrZHJvcFZpZXcgYWxsb2NdIGluaXRd
KSk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGlnaHRTeXN0ZW1CYWNr
ZHJvcExheWVyOgotICAgICAgICByZXR1cm4gbWFrZUFkb3B0aW5nVmlldyhbW1dLQmFja2Ryb3BW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gcHJpdmF0ZVN0eWxlOl9VSUJhY2tk
cm9wVmlld1N0eWxlX0xpZ2h0XSk7CisgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHRO
UyhbW1dLQmFja2Ryb3BWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gcHJpdmF0
ZVN0eWxlOl9VSUJhY2tkcm9wVmlld1N0eWxlX0xpZ2h0XSkpOwogCiAgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyOgotICAgICAgICByZXR1
cm4gbWFrZUFkb3B0aW5nVmlldyhbW1dLQmFja2Ryb3BWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdFplcm8gcHJpdmF0ZVN0eWxlOl9VSUJhY2tkcm9wVmlld1N0eWxlX0RhcmtdKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKFtbV0tCYWNrZHJvcFZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBwcml2YXRlU3R5bGU6X1VJQmFja2Ryb3BWaWV3U3R5
bGVfRGFya10pKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zv
cm1MYXllcjoKLSAgICAgICAgcmV0dXJuIG1ha2VBZG9wdGluZ1ZpZXcoW1tXS1RyYW5zZm9ybVZp
ZXcgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKFtb
V0tUcmFuc2Zvcm1WaWV3IGFsbG9jXSBpbml0XSkpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
QVZQbGF5ZXJMYXllcjoKQEAgLTg0LDE2ICs4MSwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
TGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3Rl
TAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhXVEZNb3Zl
KHZpZXcpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbWFrZUFkb3B0aW5nVmlldyhbW1dL
Q29tcG9zaXRpbmdWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgICAgIHJldHVybiBtYWtlV2l0aFZp
ZXcoYWRvcHROUyhbW1dLQ29tcG9zaXRpbmdWaWV3IGFsbG9jXSBpbml0XSkpOwogCiAgICAgY2Fz
ZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNoYXBlTGF5ZXI6Ci0gICAgICAgIHJldHVybiBt
YWtlQWRvcHRpbmdWaWV3KFtbV0tTaGFwZVZpZXcgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKFtbV0tTaGFwZVZpZXcgYWxsb2NdIGluaXRdKSk7CiAK
ICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXI6
CiAgICAgICAgIGlmICghbV9pc0RlYnVnTGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgICAgIHJldHVy
biBtYWtlQWRvcHRpbmdWaWV3KFtbV0tDaGlsZFNjcm9sbFZpZXcgYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1dLQ2hpbGRTY3JvbGxWaWV3
IGFsbG9jXSBpbml0XSkpOwogICAgICAgICAvLyBUaGUgZGVidWcgaW5kaWNhdG9yIHBhcmVudHMg
dmlld3MgdW5kZXIgbGF5ZXJzLCB3aGljaCBjYW4gY2F1c2UgY3Jhc2hlcyB3aXRoIFVJU2Nyb2xs
Vmlldy4KLSAgICAgICAgcmV0dXJuIG1ha2VBZG9wdGluZ1ZpZXcoW1tVSVZpZXcgYWxsb2NdIGlu
aXRdKTsKKyAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKFtbVUlWaWV3IGFsbG9j
XSBpbml0XSkpOwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCBjZWM4N2M1OGYwMTFjYTdkYTQ5OTNjZjE1M2MxZDZmZTcyNDVh
NGI4Li41MDhhYWUyZmQ1ZDkwMTNiOTQ1ODViMGI3ZWQyOGJkYmVkMjk1MjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTQyNjEsMzkgKzQyNjEsMjggQEAgLSAodm9pZClzZWxlY3RQb3NpdGlvbkF0UG9p
bnQ6KENHUG9pbnQpcG9pbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWMKIC0g
KHZvaWQpX3NlbGVjdFBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2ludCBzdGF5aW5nV2l0aGlu
Rm9jdXNlZEVsZW1lbnQ6KEJPT0wpc3RheWluZ1dpdGhpbkZvY3VzZWRFbGVtZW50IGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIF91c2lu
Z0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZRVM7Ci0gICAgVUlXS1NlbGVjdGlvbkNvbXBsZXRpb25I
YW5kbGVyIHNlbGVjdGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgY29weV07Ci0gICAg
UmV0YWluUHRyPFdLQ29udGVudFZpZXc+IHZpZXcgPSBzZWxmOwogCi0gICAgX3BhZ2UtPnNlbGVj
dFBvc2l0aW9uQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHN0YXlpbmdXaXRoaW5G
b2N1c2VkRWxlbWVudCwgW3ZpZXcsIHNlbGVjdGlvbkhhbmRsZXJdKCkgewotICAgICAgICBzZWxl
Y3Rpb25IYW5kbGVyKCk7CisgICAgX3BhZ2UtPnNlbGVjdFBvc2l0aW9uQXRQb2ludChXZWJDb3Jl
OjpJbnRQb2ludChwb2ludCksIHN0YXlpbmdXaXRoaW5Gb2N1c2VkRWxlbWVudCwgW3ZpZXcgPSBy
ZXRhaW5QdHIoc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHZp
ZXctPl91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsKLSAgICAgICAgW3NlbGVjdGlvbkhh
bmRsZXIgcmVsZWFzZV07CiAgICAgfSk7CiB9CiAKIC0gKHZvaWQpc2VsZWN0UG9zaXRpb25BdEJv
dW5kYXJ5OihVSVRleHRHcmFudWxhcml0eSlncmFudWxhcml0eSBpbkRpcmVjdGlvbjooVUlUZXh0
RGlyZWN0aW9uKWRpcmVjdGlvbiBmcm9tUG9pbnQ6KENHUG9pbnQpcG9pbnQgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgX3VzaW5nR2Vz
dHVyZUZvclNlbGVjdGlvbiA9IFlFUzsKLSAgICBVSVdLU2VsZWN0aW9uQ29tcGxldGlvbkhhbmRs
ZXIgc2VsZWN0aW9uSGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKLSAgICBSZXRh
aW5QdHI8V0tDb250ZW50Vmlldz4gdmlldyA9IHNlbGY7Ci0gICAgCi0gICAgX3BhZ2UtPnNlbGVj
dFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQocG9pbnQp
LCB0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51bGFyaXR5KSwgdG9XS1NlbGVjdGlvbkRpcmVjdGlv
bihkaXJlY3Rpb24pLCBzZWxmLl9oYXNGb2N1c2VkRWxlbWVudCwgW3ZpZXcsIHNlbGVjdGlvbkhh
bmRsZXJdKCkgewotICAgICAgICBzZWxlY3Rpb25IYW5kbGVyKCk7CisgICAgX3BhZ2UtPnNlbGVj
dFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQocG9pbnQp
LCB0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51bGFyaXR5KSwgdG9XS1NlbGVjdGlvbkRpcmVjdGlv
bihkaXJlY3Rpb24pLCBzZWxmLl9oYXNGb2N1c2VkRWxlbWVudCwgW3ZpZXcgPSByZXRhaW5QdHIo
c2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHZpZXctPl91c2lu
Z0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsKLSAgICAgICAgW3NlbGVjdGlvbkhhbmRsZXIgcmVs
ZWFzZV07CiAgICAgfSk7CiB9CiAKIC0gKHZvaWQpbW92ZVNlbGVjdGlvbkF0Qm91bmRhcnk6KFVJ
VGV4dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5IGluRGlyZWN0aW9uOihVSVRleHREaXJlY3Rpb24p
ZGlyZWN0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFu
ZGxlcgogewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZRVM7Ci0gICAgVUlXS1Nl
bGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIHNlbGVjdGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhh
bmRsZXIgY29weV07Ci0gICAgUmV0YWluUHRyPFdLQ29udGVudFZpZXc+IHZpZXcgPSBzZWxmOwot
ICAgIAotICAgIF9wYWdlLT5tb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odG9X
S1RleHRHcmFudWxhcml0eShncmFudWxhcml0eSksIHRvV0tTZWxlY3Rpb25EaXJlY3Rpb24oZGly
ZWN0aW9uKSwgW3ZpZXcsIHNlbGVjdGlvbkhhbmRsZXJdIHsKLSAgICAgICAgc2VsZWN0aW9uSGFu
ZGxlcigpOworICAgIF9wYWdlLT5tb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24o
dG9XS1RleHRHcmFudWxhcml0eShncmFudWxhcml0eSksIHRvV0tTZWxlY3Rpb25EaXJlY3Rpb24o
ZGlyZWN0aW9uKSwgW3ZpZXcgPSByZXRhaW5QdHIoc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgICAgICB2aWV3LT5fdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87Ci0g
ICAgICAgIFtzZWxlY3Rpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgIH0pOwogfQogCkBAIC00MzI1
LDEyICs0MzE0LDkgQEAgLSAodm9pZCl1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQ6KENH
UG9pbnQpcG9pbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4KIAogLSAodm9pZCl1cGRhdGVT
ZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQ6KENHUG9pbnQpcG9pbnQgd2l0aEJvdW5kYXJ5OihVSVRl
eHRHcmFudWxhcml0eSlncmFudWxhcml0eSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCBzZWxlY3Rpb25FbmRJc01vdmluZykpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBVSVdLU2Vs
ZWN0aW9uV2l0aERpcmVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIHNlbGVjdGlvbkhhbmRsZXIgPSBb
Y29tcGxldGlvbkhhbmRsZXIgY29weV07Ci0gICAgCiAgICAgKytfc3VwcHJlc3NOb25FZGl0YWJs
ZVNpbmdsZVRhcFRleHRJbnRlcmFjdGlvbkNvdW50OwotICAgIF9wYWdlLT51cGRhdGVTZWxlY3Rp
b25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHRv
V0tUZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpLCBzZWxmLl9oYXNGb2N1c2VkRWxlbWVudCwg
W3NlbGVjdGlvbkhhbmRsZXIsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIChib29s
IGVuZElzTW92aW5nKSB7Ci0gICAgICAgIHNlbGVjdGlvbkhhbmRsZXIoZW5kSXNNb3ZpbmcpOwot
ICAgICAgICBbc2VsZWN0aW9uSGFuZGxlciByZWxlYXNlXTsKKyAgICBfcGFnZS0+dXBkYXRlU2Vs
ZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQp
LCB0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51bGFyaXR5KSwgc2VsZi5faGFzRm9jdXNlZEVsZW1l
bnQsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciks
IHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIChib29sIGVuZElzTW92aW5nKSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVuZElzTW92aW5nKTsKICAgICAgICAgLS1wcm90ZWN0
ZWRTZWxmLT5fc3VwcHJlc3NOb25FZGl0YWJsZVNpbmdsZVRhcFRleHRJbnRlcmFjdGlvbkNvdW50
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
U2Nyb2xsVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcu
bW0KaW5kZXggNTI4YjgwYzI3ZWFlZjNhM2QyNTY2NWY0YTdhOTAyYzc2MzUyZWRjMC4uNGYxN2Vj
Njc2YzA1MmFhZWYwMGNmNTYyOWM2YTk3YjQ5ZjZhZTU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCkBAIC0xMjUsNyArMTI1LDcgQEAgQGVuZAogCiBA
aW1wbGVtZW50YXRpb24gV0tTY3JvbGxWaWV3IHsKICAgICBXZWFrT2JqQ1B0cjxpZCA8VUlTY3Jv
bGxWaWV3RGVsZWdhdGU+PiBfZXh0ZXJuYWxEZWxlZ2F0ZTsKLSAgICBXS1Njcm9sbFZpZXdEZWxl
Z2F0ZUZvcndhcmRlciAqX2RlbGVnYXRlRm9yd2FyZGVyOworICAgIFJldGFpblB0cjxXS1Njcm9s
bFZpZXdEZWxlZ2F0ZUZvcndhcmRlcj4gX2RlbGVnYXRlRm9yd2FyZGVyOwogCiAvLyBGSVhNRTog
TGlrZWx5IHdlIGNhbiByZW1vdmUgdGhpcyBzcGVjaWFsIGNhc2UgZm9yIHdhdGNoT1MgYW5kIHR2
T1MuCiAjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQpAQCAtMjA1
LDIzICsyMDUsMjAgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2du
aXplciAqKWdlc3R1cmVSZWNvZ25pemVyIHNob3VsZEJlUmVxdWkKIAogLSAodm9pZClfdXBkYXRl
RGVsZWdhdGUKIHsKLSAgICBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUZvcndhcmRlciAqb2xkRm9yd2Fy
ZGVyID0gX2RlbGVnYXRlRm9yd2FyZGVyOwotICAgIF9kZWxlZ2F0ZUZvcndhcmRlciA9IG5pbDsK
KyAgICBhdXRvIG9sZEZvcndhcmRlciA9IHN0ZDo6ZXhjaGFuZ2UoX2RlbGVnYXRlRm9yd2FyZGVy
LCBuaWwpOwogICAgIGF1dG8gZXh0ZXJuYWxEZWxlZ2F0ZSA9IF9leHRlcm5hbERlbGVnYXRlLmdl
dCgpOwogICAgIGlmICghZXh0ZXJuYWxEZWxlZ2F0ZSkKICAgICAgICAgW3N1cGVyIHNldERlbGVn
YXRlOl9pbnRlcm5hbERlbGVnYXRlXTsKICAgICBlbHNlIGlmICghX2ludGVybmFsRGVsZWdhdGUp
CiAgICAgICAgIFtzdXBlciBzZXREZWxlZ2F0ZTpleHRlcm5hbERlbGVnYXRlLmdldCgpXTsKICAg
ICBlbHNlIHsKLSAgICAgICAgX2RlbGVnYXRlRm9yd2FyZGVyID0gW1tXS1Njcm9sbFZpZXdEZWxl
Z2F0ZUZvcndhcmRlciBhbGxvY10gaW5pdFdpdGhJbnRlcm5hbERlbGVnYXRlOl9pbnRlcm5hbERl
bGVnYXRlIGV4dGVybmFsRGVsZWdhdGU6ZXh0ZXJuYWxEZWxlZ2F0ZS5nZXQoKV07CisgICAgICAg
IF9kZWxlZ2F0ZUZvcndhcmRlciA9IGFkb3B0TlMoW1tXS1Njcm9sbFZpZXdEZWxlZ2F0ZUZvcndh
cmRlciBhbGxvY10gaW5pdFdpdGhJbnRlcm5hbERlbGVnYXRlOl9pbnRlcm5hbERlbGVnYXRlIGV4
dGVybmFsRGVsZWdhdGU6ZXh0ZXJuYWxEZWxlZ2F0ZS5nZXQoKV0pOwogICAgICAgICBbc3VwZXIg
c2V0RGVsZWdhdGU6X2RlbGVnYXRlRm9yd2FyZGVyXTsKICAgICB9Ci0gICAgW29sZEZvcndhcmRl
ciByZWxlYXNlXTsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW19kZWxlZ2F0ZUZvcndh
cmRlciByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW0K
aW5kZXggNTc3MTRiODM1NWVkZDQ3MTJlNmUyODJmYTg3ZWZlMmVmNGM4OWE0Mi4uOWE1YzA3NzUx
MWZhMDM2ZjgyNzY2OWFhM2ExNGNhNDVjNDJhZmJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW0KQEAgLTQw
MSwyNiArNDAxLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZp
ZXcgKil2aWV3IGhhc0dyb3VwczooQk9PTCloYXNHcm91cHMKIAogICAgIF90YWJsZVZpZXdDb250
cm9sbGVyID0gYWRvcHROUyhbW1dLU2VsZWN0VGFibGVWaWV3Q29udHJvbGxlciBhbGxvY10gaW5p
dFdpdGhWaWV3OnZpZXcgaGFzR3JvdXBzOmhhc0dyb3Vwc10pOwogICAgIFtfdGFibGVWaWV3Q29u
dHJvbGxlciBzZXRQb3BvdmVyOnNlbGZdOwotICAgIFVJVmlld0NvbnRyb2xsZXIgKnBvcG92ZXJW
aWV3Q29udHJvbGxlciA9IF90YWJsZVZpZXdDb250cm9sbGVyLmdldCgpOwotICAgIFVJTmF2aWdh
dGlvbkNvbnRyb2xsZXIgKm5hdkNvbnRyb2xsZXIgPSBuaWw7CisgICAgUmV0YWluUHRyPFVJVmll
d0NvbnRyb2xsZXI+IHBvcG92ZXJWaWV3Q29udHJvbGxlciA9IF90YWJsZVZpZXdDb250cm9sbGVy
LmdldCgpOwogICAgIEJPT0wgbmVlZHNOYXZpZ2F0aW9uQ29udHJvbGxlciA9ICF2aWV3LmZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24udGl0bGUuaXNFbXB0eSgpOwotICAgIGlmIChuZWVkc05hdmln
YXRpb25Db250cm9sbGVyKSB7Ci0gICAgICAgIG5hdkNvbnRyb2xsZXIgPSBbW1VJTmF2aWdhdGlv
bkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoUm9vdFZpZXdDb250cm9sbGVyOl90YWJsZVZpZXdD
b250cm9sbGVyLmdldCgpXTsKLSAgICAgICAgcG9wb3ZlclZpZXdDb250cm9sbGVyID0gbmF2Q29u
dHJvbGxlcjsKLSAgICB9CisgICAgaWYgKG5lZWRzTmF2aWdhdGlvbkNvbnRyb2xsZXIpCisgICAg
ICAgIHBvcG92ZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tVSU5hdmlnYXRpb25Db250cm9s
bGVyIGFsbG9jXSBpbml0V2l0aFJvb3RWaWV3Q29udHJvbGxlcjpfdGFibGVWaWV3Q29udHJvbGxl
ci5nZXQoKV0pOwogICAgIAogICAgIENHU2l6ZSBwb3BvdmVyU2l6ZSA9IFtfdGFibGVWaWV3Q29u
dHJvbGxlci5nZXQoKS50YWJsZVZpZXcgc2l6ZVRoYXRGaXRzOkNHU2l6ZU1ha2UoMzIwLCBDR0ZM
T0FUX01BWCldOwogICAgIGlmIChuZWVkc05hdmlnYXRpb25Db250cm9sbGVyKQogICAgICAgICBb
KFVJTmF2aWdhdGlvbkNvbnRyb2xsZXIgKilwb3BvdmVyVmlld0NvbnRyb2xsZXIgdG9wVmlld0Nv
bnRyb2xsZXJdLnByZWZlcnJlZENvbnRlbnRTaXplID0gcG9wb3ZlclNpemU7CiAgICAgZWxzZQot
ICAgICAgICBwb3BvdmVyVmlld0NvbnRyb2xsZXIucHJlZmVycmVkQ29udGVudFNpemUgPSBwb3Bv
dmVyU2l6ZTsKKyAgICAgICAgW3BvcG92ZXJWaWV3Q29udHJvbGxlciBzZXRQcmVmZXJyZWRDb250
ZW50U2l6ZTogcG9wb3ZlclNpemVdOwogICAgIAogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCi0gICAgc2VsZi5wb3BvdmVyQ29udHJvbGxlciA9IFtbW1VJUG9wb3ZlckNv
bnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ29udGVudFZpZXdDb250cm9sbGVyOnBvcG92ZXJWaWV3
Q29udHJvbGxlcl0gYXV0b3JlbGVhc2VdOworICAgIHNlbGYucG9wb3ZlckNvbnRyb2xsZXIgPSBb
W1tVSVBvcG92ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRlbnRWaWV3Q29udHJvbGxl
cjpwb3BvdmVyVmlld0NvbnRyb2xsZXIuZ2V0KCldIGF1dG9yZWxlYXNlXTsKICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAotICAgIFtuYXZDb250cm9sbGVyIHJlbGVhc2Vd
OwotCiAjaWYgIVVTRShVSUtJVF9LRVlCT0FSRF9BRERJVElPTlMpCiAgICAgW1tVSUtleWJvYXJk
SW1wbCBzaGFyZWRJbnN0YW5jZV0gc2V0RGVsZWdhdGU6X3RhYmxlVmlld0NvbnRyb2xsZXIuZ2V0
KCldOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tU
ZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5tbQppbmRleCAzNTI3NWRmOGZkN2NjYzQwNWM2
NzMyZDFjODhmYzE5NDdjZTFhNjJmLi4wZjg2YTU2ZWFhYTQwODRlZTdiY2Y5ZGM4ZDhjNmQwMzMz
NWQ0ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0SW5w
dXRXaW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
S1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW0KQEAgLTQ2LDcgKzQ2LDcgQEAgLSAoTlNBcnJh
eSAqKXZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQKIEBlbmQKIAogQGludGVyZmFjZSBXS1Rl
eHRJbnB1dFBhbmVsIDogV2ViUGFuZWwgewotICAgIE5TVGV4dFZpZXcgKl9pbnB1dFRleHRWaWV3
OworICAgIFJldGFpblB0cjxOU1RleHRWaWV3PiBfaW5wdXRUZXh0VmlldzsKIH0KIAogLSAoTlNU
ZXh0SW5wdXRDb250ZXh0ICopX2lucHV0Q29udGV4dDsKQEAgLTY1LDggKzY1LDYgQEAgLSAodm9p
ZClkZWFsbG9jCiB7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBy
ZW1vdmVPYnNlcnZlcjpzZWxmXTsKICAgICAKLSAgICBbX2lucHV0VGV4dFZpZXcgcmVsZWFzZV07
Ci0gICAgCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC04MiwxMyArODAsMTIgQEAgLSAo
aWQpaW5pdAogICAgICAKICAgICBbc2VsZiBzZXRGcmFtZTpmcmFtZSBkaXNwbGF5Ok5PXTsKICAg
ICAgICAgCi0gICAgX2lucHV0VGV4dFZpZXcgPSBbW1dLVGV4dElucHV0VmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpbKE5TVmlldyAqKXNlbGYuY29udGVudFZpZXcgZnJhbWVdXTsKLSAgICBfaW5w
dXRUZXh0Vmlldy5hdXRvcmVzaXppbmdNYXNrID0gTlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3
SGVpZ2h0U2l6YWJsZSB8IE5TVmlld01heFhNYXJnaW4gfCBOU1ZpZXdNaW5YTWFyZ2luIHwgTlNW
aWV3TWF4WU1hcmdpbiB8IE5TVmlld01pbllNYXJnaW47CisgICAgX2lucHV0VGV4dFZpZXcgPSBh
ZG9wdE5TKFtbV0tUZXh0SW5wdXRWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOlsoTlNWaWV3ICop
c2VsZi5jb250ZW50VmlldyBmcmFtZV1dKTsKKyAgICBbX2lucHV0VGV4dFZpZXcgc2V0QXV0b3Jl
c2l6aW5nTWFzazogTlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZSB8IE5T
Vmlld01heFhNYXJnaW4gfCBOU1ZpZXdNaW5YTWFyZ2luIHwgTlNWaWV3TWF4WU1hcmdpbiB8IE5T
Vmlld01pbllNYXJnaW5dOwogICAgICAgICAKLSAgICBOU1Njcm9sbFZpZXcqIHNjcm9sbFZpZXcg
PSBbW05TU2Nyb2xsVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbKE5TVmlldyAqKXNlbGYuY29u
dGVudFZpZXcgZnJhbWVdXTsKLSAgICBzY3JvbGxWaWV3LmRvY3VtZW50VmlldyA9IF9pbnB1dFRl
eHRWaWV3OwotICAgIHNlbGYuY29udGVudFZpZXcgPSBzY3JvbGxWaWV3OwotICAgIFtzY3JvbGxW
aWV3IHJlbGVhc2VdOworICAgIGF1dG8gc2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tOU1Njcm9sbFZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6WyhOU1ZpZXcgKilzZWxmLmNvbnRlbnRWaWV3IGZyYW1l
XV0pOworICAgIFtzY3JvbGxWaWV3IHNldERvY3VtZW50VmlldzogX2lucHV0VGV4dFZpZXcuZ2V0
KCldOworICAgIHNlbGYuY29udGVudFZpZXcgPSBzY3JvbGxWaWV3LmdldCgpOwogICAgICAgICAK
ICAgICBbc2VsZiBzZXRGbG9hdGluZ1BhbmVsOllFU107CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQppbmRleCBhYzcyZWFjZTZjMWNmZTAx
NDEzZjY1NTQ3OGMzNzU3ZjYyNjM2YThjLi45ZjBlMjM5ZjQyNWViN2NlOTUyZGU1NDE3NmZjMDRm
MDQwZmUxZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29s
b3JQaWNrZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9y
UGlja2VyTWFjLm1tCkBAIC0xMzgsMTAgKzEzOCw5IEBAICsgKE5TUG9wb3ZlciAqKV9jb2xvclBv
cG92ZXJDcmVhdGVJZk5lY2Vzc2FyeTooQk9PTClmb3JjZUNyZWF0aW9uCiAgICAgICAgIFtwb3Bv
dmVyIF9zZXRSZXF1aXJlc0NvcnJlY3RDb250ZW50QXBwZWFyYW5jZTpZRVNdOwogICAgICAgICBw
b3BvdmVyLmJlaGF2aW9yID0gTlNQb3BvdmVyQmVoYXZpb3JUcmFuc2llbnQ7CiAKLSAgICAgICAg
TlNDb2xvclBvcG92ZXJDb250cm9sbGVyICpjb250cm9sbGVyID0gW1tOU0NsYXNzRnJvbVN0cmlu
ZyhAIk5TQ29sb3JQb3BvdmVyQ29udHJvbGxlciIpIGFsbG9jXSBpbml0XTsKLSAgICAgICAgcG9w
b3Zlci5jb250ZW50Vmlld0NvbnRyb2xsZXIgPSBjb250cm9sbGVyOwotICAgICAgICBjb250cm9s
bGVyLnBvcG92ZXIgPSBwb3BvdmVyOwotICAgICAgICBbY29udHJvbGxlciByZWxlYXNlXTsKKyAg
ICAgICAgYXV0byBjb250cm9sbGVyID0gYWRvcHROUyhbW05TQ2xhc3NGcm9tU3RyaW5nKEAiTlND
b2xvclBvcG92ZXJDb250cm9sbGVyIikgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgcG9wb3Zlci5j
b250ZW50Vmlld0NvbnRyb2xsZXIgPSBjb250cm9sbGVyLmdldCgpOworICAgICAgICBbY29udHJv
bGxlciBzZXRQb3BvdmVyOiBwb3BvdmVyXTsKIAogICAgICAgICBjb2xvclBvcG92ZXIgPSBwb3Bv
dmVyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgK
aW5kZXggYzhkOGEyM2NhYzIwMDc3MTk5YTc0NjcxMzA0MjMyYTU4MjEyOGQzMS4uZjgxYTZjN2Iz
Y2JkZjcwZDQ3YTA1MDIyYzUxMzIyY2RlMDM1NDRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgV2ViUGFnZTsK
IEBpbnRlcmZhY2UgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UgOiBOU09iamVjdCB7
CiAgICAgTmFrZWRQdHI8V2ViS2l0OjpXZWJQYWdlPiBtX3BhZ2U7CiAgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgaWQgbV9wYXJlbnQ7CisgICAgUmV0YWluUHRyPGlk
PiBtX3BhcmVudDsKICAgICBib29sIG1faGFzTWFpbkZyYW1lUGx1Z2luOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KaW5kZXggN2RhNTkzZTIwMGQ0
NGYwZmNmNzg5MzM4NmViNWE3NTY0NGQ4NmM2Zi4uYWEzYmVjMGQwNmM4OGNiNWM3Y2UxOWEzMjM4
ZTk3ZGUwZGE0MGM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
QmFzZS5tbQpAQCAtMTMxLDEwICsxMzEsOCBAQCAtICh2b2lkKXNldEhhc01haW5GcmFtZVBsdWdp
bjooYm9vbCloYXNQbHVnaW4KIC0gKHZvaWQpc2V0UmVtb3RlUGFyZW50OihpZClwYXJlbnQKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChwYXJlbnQgIT0gbV9wYXJlbnQp
IHsKLSAgICAgICAgW21fcGFyZW50IHJlbGVhc2VdOwotICAgICAgICBtX3BhcmVudCA9IFtwYXJl
bnQgcmV0YWluXTsKLSAgICB9CisgICAgaWYgKHBhcmVudCAhPSBtX3BhcmVudCkKKyAgICAgICAg
bV9wYXJlbnQgPSBwYXJlbnQ7CiB9CiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVt
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFjLm1tCmluZGV4IGZh
MzY2ZDg2NjRhZjUyNTA0NDUxZWE4NGY4ZDQ5MjdlYzBjYjAxNTkuLjZkYWJjZmMyNzU0ZTVhZDNh
NDE5MTgxYzJhNjE2Y2Q4MGFiMGQ3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0TWFjLm1tCkBAIC02Myw3ICs2Myw2IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0CiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBOU0FjY2Vzc2li
aWxpdHlVbnJlZ2lzdGVyVW5pcXVlSWRGb3JVSUVsZW1lbnQoc2VsZik7Ci0gICAgW21fcGFyZW50
IHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMTYxLDcgKzE2MCw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7CiAgICAgCiAgICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZV0pCi0g
ICAgICAgIHJldHVybiBtX3BhcmVudDsKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50LmdldCgpOwog
ICAgIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlX
aW5kb3dBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gW21fcGFyZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1dGVdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLm1tCmluZGV4IDc1MDgxZDFmNTUxNjhjYzJhMTM1M2FlY2Q2ZDk5NzQ1ZmU2OGYz
MGQuLjA2ODcwMzI2NmZkYjc1NjczYjE0MGEwMTViYWE0OTU0NWVhYmI3M2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnRJT1MubW0KQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudElP
Uzo6cnVuT3BlblBhbmVsKEZyYW1lJiwgRmlsZUNob29zZXImIGNob29zZXIpCiB7CiAgICAgYXV0
byYgc2V0dGluZ3MgPSBjaG9vc2VyLnNldHRpbmdzKCk7CiAgICAgQk9PTCBhbGxvd011bHRpcGxl
RmlsZXMgPSBzZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVzOwotICAgIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyICpsaXN0ZW5lciA9IFtbV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgYWxs
b2NdIGluaXRXaXRoQ2hvb3NlcjpjaG9vc2VyXTsKKyAgICBhdXRvIGxpc3RlbmVyID0gYWRvcHRO
UyhbW1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGFsbG9jXSBpbml0V2l0aENob29zZXI6Y2hv
b3Nlcl0pOwogCiAgICAgV2ViTWVkaWFDYXB0dXJlVHlwZSBjYXB0dXJlVHlwZSA9IFdlYk1lZGlh
Q2FwdHVyZVR5cGVOb25lOwogI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQpAQCAtMTQ2LDEzICsx
NDYsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OnJ1bk9wZW5QYW5lbChGcmFtZSYsIEZp
bGVDaG9vc2VyJiBjaG9vc2VyKQogICAgIH07CiAKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50
KCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBsaXN0ZW5lciA9
IHJldGFpblB0cihsaXN0ZW5lciksIGNvbmZpZ3VyYXRpb24gPSByZXRhaW5QdHIoY29uZmlndXJh
dGlvbildIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBsaXN0ZW5l
ciA9IFdURk1vdmUobGlzdGVuZXIpLCBjb25maWd1cmF0aW9uID0gcmV0YWluUHRyKGNvbmZpZ3Vy
YXRpb24pXSB7CiAgICAgICAgICAgICBbW3dlYlZpZXcoKSBfVUlLaXREZWxlZ2F0ZUZvcndhcmRl
cl0gd2ViVmlldzp3ZWJWaWV3KCkgcnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRM
aXN0ZW5lcjpsaXN0ZW5lci5nZXQoKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
OwogICAgICAgICB9KTsKICAgICB9IGVsc2UKLSAgICAgICAgW1t3ZWJWaWV3KCkgX1VJS2l0RGVs
ZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldygpIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0
b25XaXRoUmVzdWx0TGlzdGVuZXI6bGlzdGVuZXIgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
XTsKLQotICAgIFtsaXN0ZW5lciByZWxlYXNlXTsKKyAgICAgICAgW1t3ZWJWaWV3KCkgX1VJS2l0
RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldygpIHJ1bk9wZW5QYW5lbEZvckZpbGVC
dXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6bGlzdGVuZXIuZ2V0KCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXTsKIH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OnNob3dTaGFyZVNoZWV0
KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3
SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1t
CmluZGV4IGJlNWQ2NDdmZGRiYjBiY2NlYzUzMTdjMjc3OTE1ODY3MTI2MzhjODguLjhhZTMyYWE0
ZTFiN2I1ZDIyNDVmOGJlODQ0NGZmZTEwNTBmZDEyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTY5LDcgKzY5LDcgQEAgc3Rh
dGljIENHQ29sb3JSZWYgY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZShDR0Zsb2F0IHdoaXRl
LCBDR0Zsb2F0IGFscGhhKQogQGltcGxlbWVudGF0aW9uIFdlYlBERlZpZXcgewogICAgIEJPT0wg
ZGF0YVNvdXJjZUhhc0JlZW5TZXQ7CiAgICAgQ0dQREZEb2N1bWVudFJlZiBfUERGRG9jdW1lbnQ7
Ci0gICAgTlNTdHJpbmcgKl90aXRsZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF90aXRsZTsK
ICAgICBDR1JlY3QgKl9wYWdlUmVjdHM7CiB9CiAKQEAgLTEwOSw3ICsxMDksNiBAQCAtICh2b2lk
KWRlYWxsb2MKICAgICBpZiAoX1BERkRvY3VtZW50ICE9IE5VTEwpCiAgICAgICAgIENHUERGRG9j
dW1lbnRSZWxlYXNlKF9QREZEb2N1bWVudCk7CiAgICAgZnJlZShfcGFnZVJlY3RzKTsKLSAgICBb
X3RpdGxlIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMjAzLDcgKzIw
Miw3IEBAIC0gKHZvaWQpc2V0RGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFfdGl0bGUpCi0gICAgICAgIF90aXRsZSA9IFtb
W1tkYXRhU291cmNlIHJlcXVlc3RdIFVSTF0gbGFzdFBhdGhDb21wb25lbnRdIGNvcHldOworICAg
ICAgICBfdGl0bGUgPSBhZG9wdE5TKFtbW1tkYXRhU291cmNlIHJlcXVlc3RdIFVSTF0gbGFzdFBh
dGhDb21wb25lbnRdIGNvcHldKTsKIAogICAgIFdBS1ZpZXcgKiBzdXBlcnZpZXcgPSBbc2VsZiBz
dXBlcnZpZXddOwogICAgIApAQCAtMjk2LDggKzI5NSw3IEBAIC0gKHZvaWQpX2NoZWNrUERGVGl0
bGUKICAgICAgICAgdGl0bGUgPSBbKE5TU3RyaW5nICopQ0dQREZTdHJpbmdDb3B5VGV4dFN0cmlu
Zyh2YWx1ZSkgYXV0b3JlbGVhc2VdOwogCiAgICAgaWYgKFt0aXRsZSBsZW5ndGhdKSB7Ci0gICAg
ICAgIFtfdGl0bGUgcmVsZWFzZV07Ci0gICAgICAgIF90aXRsZSA9IFt0aXRsZSBjb3B5XTsKKyAg
ICAgICAgX3RpdGxlID0gYWRvcHROUyhbdGl0bGUgY29weV0pOwogICAgICAgICBjb3JlKFtzZWxm
IF9mcmFtZV0pLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7IHRp
dGxlLCBUZXh0RGlyZWN0aW9uOjpMVFIgfSk7CiAgICAgfQogfQpAQCAtMzQ0LDcgKzM0Miw3IEBA
IC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIAogLSAoTlNTdHJpbmcgKil0aXRsZQogewot
ICAgIHJldHVybiBfdGl0bGU7CisgICAgcmV0dXJuIF90aXRsZS5nZXQoKTsKIH0KIAogLSAodW5z
aWduZWQpcGFnZU51bWJlckZvclJlY3Q6KENHUmVjdClyZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCmluZGV4
IGZlNDQ5NjZiMDkxMmU5NGFlNGNkZDU2ZWFhNzQ1NjkzYjYxNDFhMjguLjY5NmRmNWI2OTExM2Yx
NTI4OTk1ZGQyZDNhMjAyN2M1NWIzNGE2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCkBAIC0zMjgsMTkg
KzMyOCwxNyBAQCAtICh2b2lkKV91cGRhdGVUaXRsZUZvckRvY3VtZW50SWZBdmFpbGFibGUKICAg
ICBpZiAoIV9kb2N1bWVudCB8fCAhQ0dQREZEb2N1bWVudElzVW5sb2NrZWQoX2RvY3VtZW50KSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNTdHJpbmcgKnRpdGxlID0gbmlsOworICAgIFJldGFp
blB0cjxOU1N0cmluZz4gdGl0bGU7CiAKICAgICBDR1BERkRpY3Rpb25hcnlSZWYgaW5mbyA9IENH
UERGRG9jdW1lbnRHZXRJbmZvKF9kb2N1bWVudCk7CiAgICAgQ0dQREZTdHJpbmdSZWYgdmFsdWU7
CiAgICAgaWYgKENHUERGRGljdGlvbmFyeUdldFN0cmluZyhpbmZvLCAiVGl0bGUiLCAmdmFsdWUp
KQotICAgICAgICB0aXRsZSA9IChOU1N0cmluZyAqKUNHUERGU3RyaW5nQ29weVRleHRTdHJpbmco
dmFsdWUpOworICAgICAgICB0aXRsZSA9IGFkb3B0TlMoKE5TU3RyaW5nICopQ0dQREZTdHJpbmdD
b3B5VGV4dFN0cmluZyh2YWx1ZSkpOwogCiAgICAgaWYgKFt0aXRsZSBsZW5ndGhdKSB7Ci0gICAg
ICAgIFtzZWxmIHNldFRpdGxlOnRpdGxlXTsKLSAgICAgICAgW1tzZWxmIF9mcmFtZV0gX2Rpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlOnRpdGxlXTsKKyAgICAgICAgW3NlbGYgc2V0VGl0bGU6dGl0bGUu
Z2V0KCldOworICAgICAgICBbW3NlbGYgX2ZyYW1lXSBfZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGU6
dGl0bGUuZ2V0KCldOwogICAgIH0KLQotICAgIFt0aXRsZSByZWxlYXNlXTsKIH0KIAogLSAoQ0dS
ZWN0KV9nZXRQREZQYWdlQm91bmRzOihDR1BERlBhZ2VSZWYpcGFnZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggYjUyMDY4ZDVj
NWYzNTE2MzBiY2NlOTFjZDI0NTc1ZjUxYjNjMDJlYy4uOGNhZjc1OGI4YTY1MGU4YmZjMzhlNzEw
ZGU0N2Y1MmE4YzgxNTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0xODMsOSArMTgzLDggQEAgLSAoTlNBcnJheSAqKWFi
c29sdXRlUXVhZHMKICAgICB9CiAKICAgICBpZiAoIVtxdWFkcyBjb3VudF0pIHsKLSAgICAgICAg
V0tRdWFkT2JqZWN0KiBxdWFkT2JqZWN0ID0gW1tXS1F1YWRPYmplY3QgYWxsb2NdIGluaXRXaXRo
UXVhZDpbc2VsZiBhYnNvbHV0ZVF1YWRdXTsKLSAgICAgICAgcXVhZHMgPSBAW3F1YWRPYmplY3Rd
OwotICAgICAgICBbcXVhZE9iamVjdCByZWxlYXNlXTsKKyAgICAgICAgYXV0byBxdWFkT2JqZWN0
ID0gYWRvcHROUyhbW1dLUXVhZE9iamVjdCBhbGxvY10gaW5pdFdpdGhRdWFkOltzZWxmIGFic29s
dXRlUXVhZF1dKTsKKyAgICAgICAgcXVhZHMgPSBAW3F1YWRPYmplY3QuZ2V0KCldOwogICAgIH0K
IAogICAgIHJldHVybiBxdWFkczsKQEAgLTM2MCw5ICszNTksOCBAQCAtIChOU0FycmF5ICopYm91
bmRpbmdCb3hlc1dpdGhPd25lcjooRE9NTm9kZSAqKW93bmVyCiAKIC0gKE5TQXJyYXkgKilhYnNv
bHV0ZVF1YWRzV2l0aE93bmVyOihET01Ob2RlICopb3duZXIKIHsKLSAgICBXS1F1YWRPYmplY3Qg
KnF1YWRPYmplY3QgPSBbW1dLUXVhZE9iamVjdCBhbGxvY10gaW5pdFdpdGhRdWFkOltzZWxmIGFi
c29sdXRlUXVhZFdpdGhPd25lcjpvd25lcl1dOwotICAgIE5TQXJyYXkgKnF1YWRBcnJheSA9IEBb
cXVhZE9iamVjdF07Ci0gICAgW3F1YWRPYmplY3QgcmVsZWFzZV07CisgICAgYXV0byBxdWFkT2Jq
ZWN0ID0gYWRvcHROUyhbW1dLUXVhZE9iamVjdCBhbGxvY10gaW5pdFdpdGhRdWFkOltzZWxmIGFi
c29sdXRlUXVhZFdpdGhPd25lcjpvd25lcl1dKTsKKyAgICBOU0FycmF5ICpxdWFkQXJyYXkgPSBA
W3F1YWRPYmplY3QuZ2V0KCldOwogICAgIHJldHVybiBxdWFkQXJyYXk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbQppbmRleCBjOGJl
NTUxYjg1MGJjZTE3MjNhMmYxMTRlMmRlZTZjZTZkZDI5NWExLi43OWQ3YzAwMzZmMDgwOGMwMjFj
YjExZmU3ZTU1MzdkY2FlMjRiMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRXhjZXB0aW9uSGFuZGxlcnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCkBAIC00MiwxOSArNDIsMTUgQEAgc3RhdGljIE5PX1JF
VFVSTiB2b2lkIHJhaXNlRE9NRXJyb3JFeGNlcHRpb24oV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YykKIAogICAgIGF1dG8gZGVzY3JpcHRpb24gPSBXZWJDb3JlOjpET01FeGNlcHRpb246OmRlc2Ny
aXB0aW9uKGVjKTsKIAotICAgIE5TU3RyaW5nICpyZWFzb247CisgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiByZWFzb247CiAgICAgaWYgKGRlc2NyaXB0aW9uLm5hbWUpCi0gICAgICAgIHJlYXNvbiA9
IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiKioqICVzOiAlQCAlZCIsIGRlc2Ny
aXB0aW9uLm5hbWUuY2hhcmFjdGVycygpLCBET01FeGNlcHRpb24sIGRlc2NyaXB0aW9uLmxlZ2Fj
eUNvZGVdOworICAgICAgICByZWFzb24gPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRX
aXRoRm9ybWF0OkAiKioqICVzOiAlQCAlZCIsIGRlc2NyaXB0aW9uLm5hbWUuY2hhcmFjdGVycygp
LCBET01FeGNlcHRpb24sIGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGVdKTsKICAgICBlbHNlCi0gICAg
ICAgIHJlYXNvbiA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiKioqICVAICVk
IiwgRE9NRXhjZXB0aW9uLCBkZXNjcmlwdGlvbi5sZWdhY3lDb2RlXTsKKyAgICAgICAgcmVhc29u
ID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIioqKiAlQCAlZCIs
IERPTUV4Y2VwdGlvbiwgZGVzY3JpcHRpb24ubGVnYWN5Q29kZV0pOwogCi0gICAgTlNEaWN0aW9u
YXJ5ICp1c2VySW5mbyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRL
ZXlzOkAoZGVzY3JpcHRpb24ubGVnYWN5Q29kZSksIERPTUV4Y2VwdGlvbiwgbmlsXTsKLQotICAg
IE5TRXhjZXB0aW9uICpleGNlcHRpb24gPSBbTlNFeGNlcHRpb24gZXhjZXB0aW9uV2l0aE5hbWU6
RE9NRXhjZXB0aW9uIHJlYXNvbjpyZWFzb24gdXNlckluZm86dXNlckluZm9dOwotCi0gICAgW3Jl
YXNvbiByZWxlYXNlXTsKLSAgICBbdXNlckluZm8gcmVsZWFzZV07CisgICAgYXV0byB1c2VySW5m
byA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6
QChkZXNjcmlwdGlvbi5sZWdhY3lDb2RlKSwgRE9NRXhjZXB0aW9uLCBuaWxdKTsKIAorICAgIE5T
RXhjZXB0aW9uICpleGNlcHRpb24gPSBbTlNFeGNlcHRpb24gZXhjZXB0aW9uV2l0aE5hbWU6RE9N
RXhjZXB0aW9uIHJlYXNvbjpyZWFzb24uZ2V0KCkgdXNlckluZm86dXNlckluZm8uZ2V0KCldOwog
ICAgIFtleGNlcHRpb24gcmFpc2VdOwogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMv
V2ViRGVmYXVsdFVJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0
RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tCmluZGV4IGRjYjdjOTMxYzk2Nzc2ZmQw
OGY0OTZhZmJjOWYxZjRkMjBlZTIxM2EuLjBmNTg4ZDIwMWZiODYzZDRjNTM0NjYzZWE5NTQxMTJk
YjRmN2VlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxl
Z2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQpAQCAtMzEsNiArMzEs
NyBAQAogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0
ZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlZpZXcuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiV2ViSmF2YVNjcmlwdFRl
eHRJbnB1dFBhbmVsLmgiCkBAIC0xOTIsNyArMTkzLDcgQEAgLSAoQk9PTCl3ZWJWaWV3OiAoV2Vi
VmlldyAqKXd2IHJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcg
KikKIC0gKE5TU3RyaW5nICopd2ViVmlldzogKFdlYlZpZXcgKil3diBydW5KYXZhU2NyaXB0VGV4
dElucHV0UGFuZWxXaXRoUHJvbXB0OihOU1N0cmluZyAqKXByb21wdCBkZWZhdWx0VGV4dDooTlNT
dHJpbmcgKilkZWZhdWx0VGV4dCBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7
CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBh
bmVsICpwYW5lbCA9IFtbV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsIGFsbG9jXSBpbml0V2l0
aFByb21wdDpwcm9tcHQgdGV4dDpkZWZhdWx0VGV4dF07CisgICAgYXV0byBwYW5lbCA9IGFkb3B0
TlMoW1tXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwgYWxsb2NdIGluaXRXaXRoUHJvbXB0OnBy
b21wdCB0ZXh0OmRlZmF1bHRUZXh0XSk7CiAgICAgW3BhbmVsIHNob3dXaW5kb3c6bmlsXTsKICAg
ICBOU1N0cmluZyAqcmVzdWx0OwogICAgIGlmIChbTlNBcHAgcnVuTW9kYWxGb3JXaW5kb3c6W3Bh
bmVsIHdpbmRvd11dKQpAQCAtMjAwLDcgKzIwMSw2IEBAIC0gKE5TU3RyaW5nICopd2ViVmlldzog
KFdlYlZpZXcgKil3diBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OihOU1N0
CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBuaWw7CiAgICAgW1twYW5lbCB3aW5kb3ddIGNs
b3NlXTsKLSAgICBbcGFuZWwgcmVsZWFzZV07CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCiAg
ICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rv
cnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlz
dG9yeS5tbQppbmRleCBmMjc0NzBkYmMzMDBjYWEwZTVjYzAyOWEyN2IyZGExMzlmYWYyMWVmLi45
YmYzMDIwYWEzMjZlOTY1OTU5ZDY0YzZmODAwZDE2NTI1OWEwYmNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCkBAIC03OSw5ICs3OSw5IEBAIEBl
bmQKIAogQGludGVyZmFjZSBXZWJIaXN0b3J5UHJpdmF0ZSA6IE5TT2JqZWN0IHsKIEBwcml2YXRl
Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX2VudHJpZXNCeVVSTDsKKyAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlRGljdGlvbmFyeT4gX2VudHJpZXNCeVVSTDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGF0ZVRvRW50cmllc01hcD4gX2VudHJpZXNCeURhdGU7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKl9v
cmRlcmVkTGFzdFZpc2l0ZWREYXlzOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX29y
ZGVyZWRMYXN0VmlzaXRlZERheXM7CiAgICAgQk9PTCBpdGVtTGltaXRTZXQ7CiAgICAgaW50IGl0
ZW1MaW1pdDsKICAgICBCT09MIGFnZUluRGF5c0xpbWl0U2V0OwpAQCAtMTMxLDcgKzEzMSw3IEBA
IC0gKGlkKWluaXQKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0g
ICAgX2VudHJpZXNCeVVSTCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Cisg
ICAgX2VudHJpZXNCeVVSTCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0XSk7CiAgICAgX2VudHJpZXNCeURhdGUgPSBtYWtlVW5pcXVlPERhdGVUb0VudHJpZXNNYXA+
KCk7CiAKICAgICByZXR1cm4gc2VsZjsKQEAgLTEzOSw4ICsxMzksNiBAQCAtIChpZClpbml0CiAK
IC0gKHZvaWQpZGVhbGxvYwogewotICAgIFtfZW50cmllc0J5VVJMIHJlbGVhc2VdOwotICAgIFtf
b3JkZXJlZExhc3RWaXNpdGVkRGF5cyByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9
CiAKQEAgLTIzOCw3ICsyMzYsNiBAQCAtIChCT09MKXJlbW92ZUl0ZW1Gcm9tRGF0ZUNhY2hlczoo
V2ViSGlzdG9yeUl0ZW0gKillbnRyeQogICAgIGlmIChbZW50cmllc0ZvckRhdGUgY291bnRdID09
IDApIHsKICAgICAgICAgX2VudHJpZXNCeURhdGUtPnJlbW92ZShpdCk7CiAgICAgICAgIC8vIENs
ZWFyIF9vcmRlcmVkTGFzdFZpc2l0ZWREYXlzIHNvIGl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgd2hl
biBuZXh0IHJlcXVlc3RlZC4KLSAgICAgICAgW19vcmRlcmVkTGFzdFZpc2l0ZWREYXlzIHJlbGVh
c2VdOwogICAgICAgICBfb3JkZXJlZExhc3RWaXNpdGVkRGF5cyA9IG5pbDsKICAgICB9CiAgICAg
CkBAIC0yNzQsMTEgKzI3MSw5IEBAIC0gKHZvaWQpYWRkSXRlbVRvRGF0ZUNhY2hlczooV2ViSGlz
dG9yeUl0ZW0gKillbnRyeQogICAgICAgICBbc2VsZiBpbnNlcnRJdGVtOmVudHJ5IGZvckRhdGVL
ZXk6ZGF0ZUtleV07CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIG5vIG90aGVyIGVudHJpZXMgZXhp
c3QgZm9yIHRoaXMgZGF0ZQotICAgICAgICBOU011dGFibGVBcnJheSAqZW50cmllcyA9IFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czomZW50cnkgY291bnQ6MV07Ci0gICAg
ICAgIF9lbnRyaWVzQnlEYXRlLT5zZXQoZGF0ZUtleSwgZW50cmllcyk7Ci0gICAgICAgIFtlbnRy
aWVzIHJlbGVhc2VdOworICAgICAgICBhdXRvIGVudHJpZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czomZW50cnkgY291bnQ6MV0pOworICAgICAgICBf
ZW50cmllc0J5RGF0ZS0+c2V0KGRhdGVLZXksIGVudHJpZXMuZ2V0KCkpOwogICAgICAgICAvLyBD
bGVhciBfb3JkZXJlZExhc3RWaXNpdGVkRGF5cyBzbyBpdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIHdo
ZW4gbmV4dCByZXF1ZXN0ZWQuCi0gICAgICAgIFtfb3JkZXJlZExhc3RWaXNpdGVkRGF5cyByZWxl
YXNlXTsKICAgICAgICAgX29yZGVyZWRMYXN0VmlzaXRlZERheXMgPSBuaWw7CiAgICAgfQogfQpA
QCAtMjkxLDI2ICsyODYsMjUgQEAgLSAoV2ViSGlzdG9yeUl0ZW0gKil2aXNpdGVkVVJMOihOU1VS
TCAqKXVybCB3aXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUKICAgICBOU1N0cmluZyAqVVJMU3Ry
aW5nID0gW3VybCBfd2ViX29yaWdpbmFsRGF0YUFzU3RyaW5nXTsKICAgICBpZiAoIVVSTFN0cmlu
ZykKICAgICAgICAgVVJMU3RyaW5nID0gQCIiOwotICAgIFdlYkhpc3RvcnlJdGVtICplbnRyeSA9
IFtfZW50cmllc0J5VVJMIG9iamVjdEZvcktleTpVUkxTdHJpbmddOworICAgIFJldGFpblB0cjxX
ZWJIaXN0b3J5SXRlbT4gZW50cnkgPSBbX2VudHJpZXNCeVVSTCBvYmplY3RGb3JLZXk6VVJMU3Ry
aW5nXTsKIAogICAgIGlmIChlbnRyeSkgewotICAgICAgICBMT0coSGlzdG9yeSwgIlVwZGF0aW5n
IGdsb2JhbCBoaXN0b3J5IGVudHJ5ICVAIiwgZW50cnkpOworICAgICAgICBMT0coSGlzdG9yeSwg
IlVwZGF0aW5nIGdsb2JhbCBoaXN0b3J5IGVudHJ5ICVAIiwgZW50cnkuZ2V0KCkpOwogICAgICAg
ICAvLyBSZW1vdmUgdGhlIGl0ZW0gZnJvbSBkYXRlIGNhY2hlcyBiZWZvcmUgY2hhbmdpbmcgaXRz
IGxhc3QgdmlzaXRlZCBkYXRlLiAgT3RoZXJ3aXNlIHdlIG1pZ2h0IGdldCBkdXBsaWNhdGUgZW50
cmllcwogICAgICAgICAvLyBhcyBzZWVuIGluIDxyZGFyOi8vcHJvYmxlbS82NTcwNTczPi4KLSAg
ICAgICAgQk9PTCBpdGVtV2FzSW5EYXRlQ2FjaGVzID0gW3NlbGYgcmVtb3ZlSXRlbUZyb21EYXRl
Q2FjaGVzOmVudHJ5XTsKKyAgICAgICAgQk9PTCBpdGVtV2FzSW5EYXRlQ2FjaGVzID0gW3NlbGYg
cmVtb3ZlSXRlbUZyb21EYXRlQ2FjaGVzOmVudHJ5LmdldCgpXTsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChpdGVtV2FzSW5EYXRlQ2FjaGVzLCBpdGVtV2FzSW5EYXRlQ2FjaGVzKTsKIAogICAgICAg
ICBbZW50cnkgX3Zpc2l0ZWRXaXRoVGl0bGU6dGl0bGVdOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IExPRyhIaXN0b3J5LCAiQWRkaW5nIG5ldyBnbG9iYWwgaGlzdG9yeSBlbnRyeSBmb3IgJUAiLCB1
cmwpOwotICAgICAgICBlbnRyeSA9IFtbV2ViSGlzdG9yeUl0ZW0gYWxsb2NdIGluaXRXaXRoVVJM
U3RyaW5nOlVSTFN0cmluZyB0aXRsZTp0aXRsZSBsYXN0VmlzaXRlZFRpbWVJbnRlcnZhbDpbTlNE
YXRlIHRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZV1dOwotICAgICAgICBbX2VudHJpZXNC
eVVSTCBzZXRPYmplY3Q6ZW50cnkgZm9yS2V5OlVSTFN0cmluZ107Ci0gICAgICAgIFtlbnRyeSBy
ZWxlYXNlXTsKKyAgICAgICAgZW50cnkgPSBhZG9wdE5TKFtbV2ViSGlzdG9yeUl0ZW0gYWxsb2Nd
IGluaXRXaXRoVVJMU3RyaW5nOlVSTFN0cmluZyB0aXRsZTp0aXRsZSBsYXN0VmlzaXRlZFRpbWVJ
bnRlcnZhbDpbTlNEYXRlIHRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZV1dKTsKKyAgICAg
ICAgW19lbnRyaWVzQnlVUkwgc2V0T2JqZWN0OmVudHJ5LmdldCgpIGZvcktleTpVUkxTdHJpbmdd
OwogICAgIH0KICAgICAKLSAgICBbc2VsZiBhZGRJdGVtVG9EYXRlQ2FjaGVzOmVudHJ5XTsKKyAg
ICBbc2VsZiBhZGRJdGVtVG9EYXRlQ2FjaGVzOmVudHJ5LmdldCgpXTsKIAotICAgIHJldHVybiBl
bnRyeTsKKyAgICByZXR1cm4gZW50cnkuZ2V0KCk7CiB9CiAKIC0gKEJPT0wpYWRkSXRlbTooV2Vi
SGlzdG9yeUl0ZW0gKillbnRyeSBkaXNjYXJkRHVwbGljYXRlOihCT09MKWRpc2NhcmREdXBsaWNh
dGUKQEAgLTMyMSwzMyArMzE1LDIyIEBAIC0gKEJPT0wpYWRkSXRlbTooV2ViSGlzdG9yeUl0ZW0g
KillbnRyeSBkaXNjYXJkRHVwbGljYXRlOihCT09MKWRpc2NhcmREdXBsaWNhdGUKICAgICBOU1N0
cmluZyAqVVJMU3RyaW5nID0gW2VudHJ5IFVSTFN0cmluZ107CiAKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBXZWJIaXN0b3J5SXRlbSAqb2xkRW50cnkgPSBbX2VudHJpZXNCeVVSTCBv
YmplY3RGb3JLZXk6VVJMU3RyaW5nXTsKLSAgICBpZiAob2xkRW50cnkpIHsKKyAgICBpZiAoYXV0
byBvbGRFbnRyeSA9IHJldGFpblB0cihbX2VudHJpZXNCeVVSTCBvYmplY3RGb3JLZXk6VVJMU3Ry
aW5nXSkpIHsKICAgICAgICAgaWYgKGRpc2NhcmREdXBsaWNhdGUpCiAgICAgICAgICAgICByZXR1
cm4gTk87CiAKLSAgICAgICAgLy8gVGhlIGxhc3QgcmVmZXJlbmNlIHRvIG9sZEVudHJ5IG1pZ2h0
IGJlIHRoaXMgZGljdGlvbmFyeSwgc28gd2UgaG9sZCBvbnRvIGEgcmVmZXJlbmNlCi0gICAgICAg
IC8vIHVudGlsIHdlJ3JlIGRvbmUgd2l0aCBvbGRFbnRyeS4KLSAgICAgICAgW29sZEVudHJ5IHJl
dGFpbl07CiAgICAgICAgIFtzZWxmIHJlbW92ZUl0ZW1Gb3JVUkxTdHJpbmc6VVJMU3RyaW5nXTsK
LSAgICAgICAgW29sZEVudHJ5IHJlbGVhc2VdOwogICAgIH0KIAogICAgIFtzZWxmIGFkZEl0ZW1U
b0RhdGVDYWNoZXM6ZW50cnldOwogICAgIFtfZW50cmllc0J5VVJMIHNldE9iamVjdDplbnRyeSBm
b3JLZXk6VVJMU3RyaW5nXTsKICNlbHNlCi0gICAgV2ViSGlzdG9yeUl0ZW0gKm90aGVyRW50cnkg
PSBbX2VudHJpZXNCeVVSTCBvYmplY3RGb3JLZXk6VVJMU3RyaW5nXTsKLSAgICBpZiAob3RoZXJF
bnRyeSkgeworICAgIGlmIChhdXRvIG90aGVyRW50cnkgPSByZXRhaW5QdHIoW19lbnRyaWVzQnlV
Ukwgb2JqZWN0Rm9yS2V5OlVSTFN0cmluZ10pKSB7CiAgICAgICAgIGlmIChkaXNjYXJkRHVwbGlj
YXRlKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgICAgIGlmIChbb3RoZXJFbnRyeSBs
YXN0VmlzaXRlZFRpbWVJbnRlcnZhbF0gPCBbZW50cnkgbGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWxd
KSB7Ci0gICAgICAgICAgICAvLyBUaGUgbGFzdCByZWZlcmVuY2UgdG8gb2xkRW50cnkgbWlnaHQg
YmUgdGhpcyBkaWN0aW9uYXJ5LCBzbyB3ZSBob2xkIG9udG8gYSByZWZlcmVuY2UKLSAgICAgICAg
ICAgIC8vIHVudGlsIHdlJ3JlIGRvbmUgd2l0aCBvbGRFbnRyeS4KLSAgICAgICAgICAgIFtvdGhl
ckVudHJ5IHJldGFpbl07CiAgICAgICAgICAgICBbc2VsZiByZW1vdmVJdGVtRm9yVVJMU3RyaW5n
OlVSTFN0cmluZ107Ci0gICAgICAgICAgICBbb3RoZXJFbnRyeSByZWxlYXNlXTsKLQogICAgICAg
ICAgICAgW3NlbGYgYWRkSXRlbVRvRGF0ZUNhY2hlczplbnRyeV07CiAgICAgICAgICAgICBbX2Vu
dHJpZXNCeVVSTCBzZXRPYmplY3Q6ZW50cnkgZm9yS2V5OlVSTFN0cmluZ107CiAgICAgICAgIH0g
ZWxzZQpAQCAtMzY4LDEwICszNTEsOCBAQCAtICh2b2lkKXJlYnVpbGRIaXN0b3J5QnlEYXlJZk5l
ZWRlZDooV2ViSGlzdG9yeSAqKXdlYkhpc3RvcnkKICAgICBhdXRvIGVudHJ5QXJyYXlzID0gY29w
eVRvVmVjdG9yKF9lbnRyaWVzQnlEYXRlLT52YWx1ZXMoKSk7CiAgICAgX2VudHJpZXNCeURhdGUt
PmNsZWFyKCk7CiAgICAgCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZW50cmllc0J5VVJMID0g
X2VudHJpZXNCeVVSTDsKLSAgICBfZW50cmllc0J5VVJMID0gbmlsOworICAgIGF1dG8gZW50cmll
c0J5VVJMID0gc3RkOjpleGNoYW5nZShfZW50cmllc0J5VVJMLCBuaWwpOwogICAgIAotICAgIFtf
b3JkZXJlZExhc3RWaXNpdGVkRGF5cyByZWxlYXNlXTsKICAgICBfb3JkZXJlZExhc3RWaXNpdGVk
RGF5cyA9IG5pbDsKICAgICAKICAgICBOU0FycmF5ICphbGxFbnRyaWVzID0gW2VudHJpZXNCeVVS
TCBhbGxWYWx1ZXNdOwpAQCAtNDIzLDcgKzQwNCw2IEBAIC0gKEJPT0wpcmVtb3ZlQWxsSXRlbXMK
ICAgICBbX2VudHJpZXNCeVVSTCByZW1vdmVBbGxPYmplY3RzXTsKIAogICAgIC8vIENsZWFyIF9v
cmRlcmVkTGFzdFZpc2l0ZWREYXlzIHNvIGl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgd2hlbiBuZXh0
IHJlcXVlc3RlZC4KLSAgICBbX29yZGVyZWRMYXN0VmlzaXRlZERheXMgcmVsZWFzZV07CiAgICAg
X29yZGVyZWRMYXN0VmlzaXRlZERheXMgPSBuaWw7CiAKICAgICBXZWJWaXNpdGVkTGlua1N0b3Jl
OjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKTsKQEAgLTQ1OCwxNSArNDM4LDE0IEBAIC0gKE5TQXJy
YXkgKilvcmRlcmVkTGFzdFZpc2l0ZWREYXlzCiAKICAgICAgICAgc3RkOjpzb3J0KGRheXNBc1Rp
bWVJbnRlcnZhbHMuYmVnaW4oKSwgZGF5c0FzVGltZUludGVydmFscy5lbmQoKSk7CiAgICAgICAg
IHNpemVfdCBjb3VudCA9IGRheXNBc1RpbWVJbnRlcnZhbHMuc2l6ZSgpOwotICAgICAgICBfb3Jk
ZXJlZExhc3RWaXNpdGVkRGF5cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2Fw
YWNpdHk6Y291bnRdOworICAgICAgICBfb3JkZXJlZExhc3RWaXNpdGVkRGF5cyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3VudF0pOwogICAgICAg
ICBmb3IgKGludCBpID0gY291bnQgLSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgTlNU
aW1lSW50ZXJ2YWwgaW50ZXJ2YWwgPSBkYXlzQXNUaW1lSW50ZXJ2YWxzW2ldOwotICAgICAgICAg
ICAgTlNDYWxlbmRhckRhdGUgKmRhdGUgPSBbW05TQ2FsZW5kYXJEYXRlIGFsbG9jXSBpbml0V2l0
aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTppbnRlcnZhbF07Ci0gICAgICAgICAgICBb
X29yZGVyZWRMYXN0VmlzaXRlZERheXMgYWRkT2JqZWN0OmRhdGVdOwotICAgICAgICAgICAgW2Rh
dGUgcmVsZWFzZV07CisgICAgICAgICAgICBhdXRvIGRhdGUgPSBhZG9wdE5TKFtbTlNDYWxlbmRh
ckRhdGUgYWxsb2NdIGluaXRXaXRoVGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlOmludGVy
dmFsXSk7CisgICAgICAgICAgICBbX29yZGVyZWRMYXN0VmlzaXRlZERheXMgYWRkT2JqZWN0OmRh
dGUuZ2V0KCldOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBfb3JkZXJlZExhc3RWaXNp
dGVkRGF5czsKKyAgICByZXR1cm4gX29yZGVyZWRMYXN0VmlzaXRlZERheXMuZ2V0KCk7CiB9CiAK
IC0gKE5TQXJyYXkgKilvcmRlcmVkSXRlbXNMYXN0VmlzaXRlZE9uRGF5OihOU0NhbGVuZGFyRGF0
ZSAqKWRhdGUKQEAgLTU5Myw3ICs1NzIsNyBAQCAtIChCT09MKWxvYWRIaXN0b3J5R3V0c0Zyb21V
Ukw6KE5TVVJMICopVVJMIHNhdmVkSXRlbXNDb3VudDooaW50ICopbnVtYmVyT2ZJdGVtcwogCiAg
ICAgZm9yIChOU0RpY3Rpb25hcnkgKml0ZW1Bc0RpY3Rpb25hcnkgaW4gYXJyYXkpIHsKICAgICAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBXZWJIaXN0b3J5SXRlbSAqaXRlbSA9
IFtbV2ViSGlzdG9yeUl0ZW0gYWxsb2NdIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9u
Oml0ZW1Bc0RpY3Rpb25hcnldOworICAgICAgICAgICAgYXV0byBpdGVtID0gYWRvcHROUyhbW1dl
Ykhpc3RvcnlJdGVtIGFsbG9jXSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjppdGVt
QXNEaWN0aW9uYXJ5XSk7CiAKICAgICAgICAgICAgIC8vIGl0ZW0gd2l0aG91dCBVUkwgaXMgdXNl
bGVzczsgZGF0YSBvbiBkaXNrIG11c3QgaGF2ZSBiZWVuIGJhZDsgaWdub3JlCiAgICAgICAgICAg
ICBpZiAoW2l0ZW0gVVJMU3RyaW5nXSkgewpAQCAtNjAzLDE2ICs1ODIsMTQgQEAgLSAoQk9PTCls
b2FkSGlzdG9yeUd1dHNGcm9tVVJMOihOU1VSTCAqKVVSTCBzYXZlZEl0ZW1zQ291bnQ6KGludCAq
KW51bWJlck9mSXRlbXMKICAgICAgICAgICAgICAgICAgICAgYWdlTGltaXRQYXNzZWQgPSBZRVM7
CiAKICAgICAgICAgICAgICAgICBpZiAoYWdlTGltaXRQYXNzZWQgfHwgaXRlbUxpbWl0UGFzc2Vk
KQotICAgICAgICAgICAgICAgICAgICBbZGlzY2FyZGVkSXRlbXMgYWRkT2JqZWN0Oml0ZW1dOwor
ICAgICAgICAgICAgICAgICAgICBbZGlzY2FyZGVkSXRlbXMgYWRkT2JqZWN0Oml0ZW0uZ2V0KCld
OwogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoW3NlbGYg
YWRkSXRlbTppdGVtIGRpc2NhcmREdXBsaWNhdGU6WUVTXSkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKFtzZWxmIGFkZEl0ZW06aXRlbS5nZXQoKSBkaXNjYXJkRHVwbGljYXRlOllFU10pCiAgICAg
ICAgICAgICAgICAgICAgICAgICArKygqbnVtYmVyT2ZJdGVtc0xvYWRlZCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICgqbnVtYmVyT2ZJdGVtc0xvYWRlZCA9PSBpdGVtQ291bnRMaW1pdCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGl0ZW1MaW1pdFBhc3NlZCA9IFlFUzsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIFtpdGVtIHJlbGVhc2VdOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC02NjksNyArNjQ2LDcgQEAgLSAoQk9PTClzYXZlVG9VUkw6KE5T
VVJMICopVVJMIGVycm9yOihOU0Vycm9yICoqKWVycm9yCiAKIC0gKHZvaWQpYWRkVmlzaXRlZExp
bmtzVG9WaXNpdGVkTGlua1N0b3JlOihXZWJWaXNpdGVkTGlua1N0b3JlJil2aXNpdGVkTGlua1N0
b3JlCiB7Ci0gICAgZm9yIChOU1N0cmluZyAqdXJsU3RyaW5nIGluIF9lbnRyaWVzQnlVUkwpCisg
ICAgZm9yIChOU1N0cmluZyAqdXJsU3RyaW5nIGluIF9lbnRyaWVzQnlVUkwuZ2V0KCkpCiAgICAg
ICAgIHZpc2l0ZWRMaW5rU3RvcmUuYWRkVmlzaXRlZExpbmsodXJsU3RyaW5nKTsKIH0KIApAQCAt
Nzg4LDExICs3NjUsOSBAQCAtIChXZWJIaXN0b3J5SXRlbSAqKWl0ZW1Gb3JVUkw6KE5TVVJMICop
VVJMCiAKIC0gKEJPT0wpbG9hZEZyb21VUkw6KE5TVVJMICopVVJMIGVycm9yOihOU0Vycm9yICoq
KWVycm9yCiB7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKmRpc2NhcmRlZEl0ZW1zID0gW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF07ICAgIAotICAgIGlmICghW19oaXN0b3J5UHJpdmF0ZSBsb2Fk
RnJvbVVSTDpVUkwgY29sbGVjdERpc2NhcmRlZEl0ZW1zSW50bzpkaXNjYXJkZWRJdGVtcyBlcnJv
cjplcnJvcl0pIHsKLSAgICAgICAgW2Rpc2NhcmRlZEl0ZW1zIHJlbGVhc2VdOworICAgIGF1dG8g
ZGlzY2FyZGVkSXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsK
KyAgICBpZiAoIVtfaGlzdG9yeVByaXZhdGUgbG9hZEZyb21VUkw6VVJMIGNvbGxlY3REaXNjYXJk
ZWRJdGVtc0ludG86ZGlzY2FyZGVkSXRlbXMuZ2V0KCkgZXJyb3I6ZXJyb3JdKQogICAgICAgICBy
ZXR1cm4gTk87Ci0gICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJUaHJl
YWRQb3N0Tm90aWZpY2F0aW9uKFdlYkhpc3RvcnlMb2FkZWROb3RpZmljYXRpb24sIHNlbGYsIG5p
bCk7CkBAIC04MDMsOSArNzc4LDggQEAgLSAoQk9PTClsb2FkRnJvbVVSTDooTlNVUkwgKilVUkwg
ZXJyb3I6KE5TRXJyb3IgKiopZXJyb3IKICNlbmRpZgogCiAgICAgaWYgKFtkaXNjYXJkZWRJdGVt
cyBjb3VudF0pCi0gICAgICAgIFtzZWxmIF9zZW5kTm90aWZpY2F0aW9uOldlYkhpc3RvcnlJdGVt
c0Rpc2NhcmRlZFdoaWxlTG9hZGluZ05vdGlmaWNhdGlvbiBlbnRyaWVzOmRpc2NhcmRlZEl0ZW1z
XTsKKyAgICAgICAgW3NlbGYgX3NlbmROb3RpZmljYXRpb246V2ViSGlzdG9yeUl0ZW1zRGlzY2Fy
ZGVkV2hpbGVMb2FkaW5nTm90aWZpY2F0aW9uIGVudHJpZXM6ZGlzY2FyZGVkSXRlbXMuZ2V0KCld
OwogCi0gICAgW2Rpc2NhcmRlZEl0ZW1zIHJlbGVhc2VdOwogICAgIHJldHVybiBZRVM7CiB9CiAK
QEAgLTg4NSw5ICs4NTksOCBAQCAtICh2b2lkKV92aXNpdGVkVVJMOihOU1VSTCAqKXVybCB3aXRo
VGl0bGU6KE5TU3RyaW5nICopdGl0bGUgbWV0aG9kOihOU1N0cmluZyAqKQogCiAgICAgZW50cnkt
Pl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzID0gbnVsbHB0cjsKIAotICAgIE5TQXJyYXkgKmVudHJp
ZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czplbnRyeSwgbmlsXTsKLSAgICBb
c2VsZiBfc2VuZE5vdGlmaWNhdGlvbjpXZWJIaXN0b3J5SXRlbXNBZGRlZE5vdGlmaWNhdGlvbiBl
bnRyaWVzOmVudHJpZXNdOwotICAgIFtlbnRyaWVzIHJlbGVhc2VdOworICAgIGF1dG8gZW50cmll
cyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6ZW50cnksIG5pbF0p
OworICAgIFtzZWxmIF9zZW5kTm90aWZpY2F0aW9uOldlYkhpc3RvcnlJdGVtc0FkZGVkTm90aWZp
Y2F0aW9uIGVudHJpZXM6ZW50cmllcy5nZXQoKV07CiB9CiAKIC0gKHZvaWQpX2FkZFZpc2l0ZWRM
aW5rc1RvVmlzaXRlZExpbmtTdG9yZTooV2ViVmlzaXRlZExpbmtTdG9yZSAmKXZpc2l0ZWRMaW5r
U3RvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlz
dG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJ
dGVtLm1tCmluZGV4IDg3ZTYyOWY5OTQ5ZjEyMTQ4MDRiZmVkNGEwMmIxNDY3NWU3Y2NiNmUuLmNi
MTZjZDc1MjJmMGJhOTZhY2ExNTAxZmI0Njk1ZTg0NGQ0NzE3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtMzUyLDkgKzM1
Miw4IEBAIC0gKGlkKWluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOihOU0RpY3Rpb25h
cnkgKilkaWN0CiAgICAgTlNBcnJheSAqY2hpbGREaWN0cyA9IFtkaWN0IG9iamVjdEZvcktleTpj
aGlsZHJlbktleV07CiAgICAgaWYgKGNoaWxkRGljdHMpIHsKICAgICAgICAgZm9yIChpbnQgaSA9
IFtjaGlsZERpY3RzIGNvdW50XSAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgICAgICBXZWJI
aXN0b3J5SXRlbSAqY2hpbGQgPSBbW1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0RnJvbURpY3Rp
b25hcnlSZXByZXNlbnRhdGlvbjpbY2hpbGREaWN0cyBvYmplY3RBdEluZGV4OmldXTsKKyAgICAg
ICAgICAgIGF1dG8gY2hpbGQgPSBhZG9wdE5TKFtbV2ViSGlzdG9yeUl0ZW0gYWxsb2NdIGluaXRG
cm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOltjaGlsZERpY3RzIG9iamVjdEF0SW5kZXg6aV1d
KTsKICAgICAgICAgICAgIGNvcmUoX3ByaXZhdGUpLT5hZGRDaGlsZEl0ZW0oKmNvcmUoY2hpbGQt
Pl9wcml2YXRlKSk7Ci0gICAgICAgICAgICBbY2hpbGQgcmVsZWFzZV07CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRG93bmxv
YWQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCmluZGV4
IDUwNTk4ZGVlNWM1ZDE4Y2Q1YTFjZDIxMGEyZDIxYWZjZmU3ODNhY2QuLjJmY2IwMGFkYjI0YWNi
NjVkY2YzNzliMWFmZmQyN2Y3OTQ3ZDk1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViRG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJEb3dubG9hZC5tbQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBjYWxsT25E
ZWxlZ2F0ZVRocmVhZEFuZFdhaXQoQ2FsbGFibGUmJiB3b3JrKQogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIEBpbnRlcmZhY2UgV2ViRG93bmxvYWRJbnRlcm5hbCA6IE5TT2JqZWN0IDxOU1VS
TERvd25sb2FkRGVsZWdhdGU+IHsKLSAgICBpZCByZWFsRGVsZWdhdGU7CisgICAgUmV0YWluUHRy
PGlkPiByZWFsRGVsZWdhdGU7CiB9CiAtICh2b2lkKXNldFJlYWxEZWxlZ2F0ZTooaWQpcmVhbERl
bGVnYXRlOwogQGVuZApAQCAtODEsMTQgKzgxLDExIEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJEb3du
bG9hZEludGVybmFsCiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIFtyZWFsRGVsZWdhdGUgcmVs
ZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtICh2b2lkKXNldFJlYWxEZWxlZ2F0
ZTooaWQpcmQKIHsKLSAgICBbcmQgcmV0YWluXTsKLSAgICBbcmVhbERlbGVnYXRlIHJlbGVhc2Vd
OwogICAgIHJlYWxEZWxlZ2F0ZSA9IHJkOwogfQogCkBAIC0xMTEsNyArMTA4LDcgQEAgLSAoQk9P
TClyZXNwb25kc1RvU2VsZWN0b3I6KFNFTClzZWxlY3RvcgogCiAtICh2b2lkKWRvd25sb2FkRGlk
QmVnaW46KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZAogewotICAgIGNhbGxPbkRlbGVnYXRlVGhy
ZWFkKFtyZWFsRGVsZWdhdGUgPSByZXRhaW5QdHIocmVhbERlbGVnYXRlKSwgZG93bmxvYWQgPSBy
ZXRhaW5QdHIoZG93bmxvYWQpXSB7CisgICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxl
Z2F0ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQpXSB7CiAg
ICAgICAgIFtyZWFsRGVsZWdhdGUgZG93bmxvYWREaWRCZWdpbjpkb3dubG9hZC5nZXQoKV07CiAg
ICAgfSk7CiB9CkBAIC0xNDAsMTEgKzEzNywxMSBAQCAtICh2b2lkKWRvd25sb2FkOihOU1VSTERv
d25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOUwog
ICAgIH0KIAogICAgIGlmIChbcmVhbERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOildKSB7Ci0gICAg
ICAgIGNhbGxPbkRlbGVnYXRlVGhyZWFkKFtyZWFsRGVsZWdhdGUgPSByZXRhaW5QdHIocmVhbERl
bGVnYXRlKSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQpLCBjaGFsbGVuZ2UgPSByZXRh
aW5QdHIoY2hhbGxlbmdlKV0geworICAgICAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERl
bGVnYXRlID0gcmVhbERlbGVnYXRlLCBkb3dubG9hZCA9IHJldGFpblB0cihkb3dubG9hZCksIGNo
YWxsZW5nZSA9IHJldGFpblB0cihjaGFsbGVuZ2UpXSB7CiAgICAgICAgICAgICBbcmVhbERlbGVn
YXRlIGRvd25sb2FkOmRvd25sb2FkLmdldCgpIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTpjaGFsbGVuZ2UuZ2V0KCldOwogICAgICAgICB9KTsKICAgICB9IGVsc2UgewotICAgICAg
ICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxl
Z2F0ZSksIGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKSwgY2hhbGxlbmdlID0gcmV0YWlu
UHRyKGNoYWxsZW5nZSldIHsKKyAgICAgICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxl
Z2F0ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQpLCBjaGFs
bGVuZ2UgPSByZXRhaW5QdHIoY2hhbGxlbmdlKV0gewogICAgICAgICAgICAgTlNXaW5kb3cgKndp
bmRvdyA9IG5pbDsKICAgICAgICAgICAgIGlmIChbcmVhbERlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoZG93bmxvYWRXaW5kb3dGb3JBdXRoZW50aWNhdGlvblNoZWV0OildKQog
ICAgICAgICAgICAgICAgIHdpbmRvdyA9IFtyZWFsRGVsZWdhdGUgZG93bmxvYWRXaW5kb3dGb3JB
dXRoZW50aWNhdGlvblNoZWV0OihXZWJEb3dubG9hZCAqKWRvd25sb2FkLmdldCgpXTsKQEAgLTE1
NywxNCArMTU0LDE0IEBAIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9h
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TCiAKIC0gKHZvaWQpZG93bmxv
YWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVz
cG9uc2UgKilyZXNwb25zZQogewotICAgIGNhbGxPbkRlbGVnYXRlVGhyZWFkKFtyZWFsRGVsZWdh
dGUgPSByZXRhaW5QdHIocmVhbERlbGVnYXRlKSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxv
YWQpLCByZXNwb25zZSA9IHJldGFpblB0cihyZXNwb25zZSldIHsKKyAgICBjYWxsT25EZWxlZ2F0
ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmVhbERlbGVnYXRlLCBkb3dubG9hZCA9IHJldGFpblB0
cihkb3dubG9hZCksIHJlc3BvbnNlID0gcmV0YWluUHRyKHJlc3BvbnNlKV0gewogICAgICAgICBb
cmVhbERlbGVnYXRlIGRvd25sb2FkOmRvd25sb2FkLmdldCgpIGRpZFJlY2VpdmVSZXNwb25zZTpy
ZXNwb25zZS5nZXQoKV07CiAgICAgfSk7CiB9CiAKIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93
bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlRGF0YU9mTGVuZ3RoOihOU1VJbnRlZ2VyKWxlbmd0
aAogewotICAgIGNhbGxPbkRlbGVnYXRlVGhyZWFkKFtyZWFsRGVsZWdhdGUgPSByZXRhaW5QdHIo
cmVhbERlbGVnYXRlKSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQpLCBsZW5ndGhdIHsK
KyAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmVhbERlbGVnYXRlLCBk
b3dubG9hZCA9IHJldGFpblB0cihkb3dubG9hZCksIGxlbmd0aF0gewogICAgICAgICBbcmVhbERl
bGVnYXRlIGRvd25sb2FkOmRvd25sb2FkLmdldCgpIGRpZFJlY2VpdmVEYXRhT2ZMZW5ndGg6bGVu
Z3RoXTsKICAgICB9KTsKIH0KQEAgLTE4MSwyOCArMTc4LDI4IEBAIC0gKEJPT0wpZG93bmxvYWQ6
KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZTooTlNTCiAKIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZQog
ewotICAgIGNhbGxPbkRlbGVnYXRlVGhyZWFkKFtyZWFsRGVsZWdhdGUgPSByZXRhaW5QdHIocmVh
bERlbGVnYXRlKSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQpLCBmaWxlbmFtZSA9IHJl
dGFpblB0cihmaWxlbmFtZSldIHsKKyAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVn
YXRlID0gcmVhbERlbGVnYXRlLCBkb3dubG9hZCA9IHJldGFpblB0cihkb3dubG9hZCksIGZpbGVu
YW1lID0gcmV0YWluUHRyKGZpbGVuYW1lKV0gewogICAgICAgICBbcmVhbERlbGVnYXRlIGRvd25s
b2FkOmRvd25sb2FkLmdldCgpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
OmZpbGVuYW1lLmdldCgpXTsKICAgICB9KTsKIH0KIAogLSAodm9pZClkb3dubG9hZDooTlNVUkxE
b3dubG9hZCAqKWRvd25sb2FkIGRpZENyZWF0ZURlc3RpbmF0aW9uOihOU1N0cmluZyAqKXBhdGgK
IHsKLSAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJl
YWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKSwgcGF0aCA9IHJldGFp
blB0cihwYXRoKV0geworICAgIGNhbGxPbkRlbGVnYXRlVGhyZWFkKFtyZWFsRGVsZWdhdGUgPSBy
ZWFsRGVsZWdhdGUsIGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKSwgcGF0aCA9IHJldGFp
blB0cihwYXRoKV0gewogICAgICAgICBbcmVhbERlbGVnYXRlIGRvd25sb2FkOmRvd25sb2FkLmdl
dCgpIGRpZENyZWF0ZURlc3RpbmF0aW9uOnBhdGguZ2V0KCldOwogICAgIH0pOwogfQogCiAtICh2
b2lkKWRvd25sb2FkRGlkRmluaXNoOihOU1VSTERvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBj
YWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0
ZSksIGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKV0geworICAgIGNhbGxPbkRlbGVnYXRl
VGhyZWFkKFtyZWFsRGVsZWdhdGUgPSByZWFsRGVsZWdhdGUsIGRvd25sb2FkID0gcmV0YWluUHRy
KGRvd25sb2FkKV0gewogICAgICAgICBbcmVhbERlbGVnYXRlIGRvd25sb2FkRGlkRmluaXNoOmRv
d25sb2FkLmdldCgpXTsKICAgICB9KTsKIH0KIAogLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3du
bG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgogewotICAg
IGNhbGxPbkRlbGVnYXRlVGhyZWFkKFtyZWFsRGVsZWdhdGUgPSByZXRhaW5QdHIocmVhbERlbGVn
YXRlKSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQpLCBlcnJvciA9IHJldGFpblB0cihl
cnJvcildIHsKKyAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmVhbERl
bGVnYXRlLCBkb3dubG9hZCA9IHJldGFpblB0cihkb3dubG9hZCksIGVycm9yID0gcmV0YWluUHRy
KGVycm9yKV0gewogICAgICAgICBbcmVhbERlbGVnYXRlIGRvd25sb2FkOmRvd25sb2FkLmdldCgp
IGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IuZ2V0KCldOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQppbmRleCBjNjk0ZTUyMDlj
NGY5MGNkODJmNzg4ODhmZTg2NDI1YThmZmU0ODg5Li4wZGRlMjg3YzJmMDRjOTYwOTY0MTQ4ZGRm
YjJjMzM0MzgyZTUxNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYk5TRGF0YUV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dl
Yk5TRGF0YUV4dHJhcy5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5
L1dlYk5TRGF0YUV4dHJhc1ByaXZhdGUuaD4KIAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4K
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBOU1N0cmluZyAoV2ViTlNE
YXRhRXh0cmFzSW50ZXJuYWwpCiAtIChOU1N0cmluZyAqKV93ZWJfY2FwaXRhbGl6ZVJGQzgyMkhl
YWRlckZpZWxkTmFtZTsKQEAgLTMxMSwxMSArMzEyLDEwIEBAIC0gKE5TTXV0YWJsZURpY3Rpb25h
cnkgKilfd2Via2l0X3BhcnNlUkZDODIySGVhZGVyRmllbGRzCiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAvLyBNZXJnZSB0aGUgY29udGludWF0aW9uIG9mIHRoZSBwcmV2aW91cyBoZWFkZXIK
ICAgICAgICAgICAgIE5TU3RyaW5nICpjdXJyZW50VmFsdWUgPSBbaGVhZGVyRmllbGRzIG9iamVj
dEZvcktleTpsYXN0S2V5XTsKLSAgICAgICAgICAgIE5TU3RyaW5nICpuZXdWYWx1ZSA9IFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0ZXM6bGluZSBsZW5ndGg6bGluZUxlbmd0aCBlbmNvZGlu
ZzpOU0lTT0xhdGluMVN0cmluZ0VuY29kaW5nXTsKKyAgICAgICAgICAgIGF1dG8gbmV3VmFsdWUg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0ZXM6bGluZSBsZW5ndGg6bGlu
ZUxlbmd0aCBlbmNvZGluZzpOU0lTT0xhdGluMVN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgICAg
ICBBU1NFUlQoY3VycmVudFZhbHVlKTsKICAgICAgICAgICAgIEFTU0VSVChuZXdWYWx1ZSk7Ci0g
ICAgICAgICAgICBbaGVhZGVyRmllbGRzIHNldE9iamVjdDpbY3VycmVudFZhbHVlIHN0cmluZ0J5
QXBwZW5kaW5nU3RyaW5nOm5ld1ZhbHVlXSBmb3JLZXk6bGFzdEtleV07Ci0gICAgICAgICAgICBb
bmV3VmFsdWUgcmVsZWFzZV07CisgICAgICAgICAgICBbaGVhZGVyRmllbGRzIHNldE9iamVjdDpb
Y3VycmVudFZhbHVlIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOm5ld1ZhbHVlLmdldCgpXSBmb3JL
ZXk6bGFzdEtleV07CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBCcmFuZCBuZXcg
aGVhZGVyCiAgICAgICAgICAgICBjb25zdCBVSW50OCogY29sb247CkBAIC0zMzEsMTMgKzMzMSwx
MiBAQCAtIChOU011dGFibGVEaWN0aW9uYXJ5ICopX3dlYmtpdF9wYXJzZVJGQzgyMkhlYWRlckZp
ZWxkcwogICAgICAgICAgICAgICAgIGlmICgqY29sb24gIT0gJyAnICYmICpjb2xvbiAhPSAnXHQn
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IE5TU3RyaW5nICp2YWx1ZSA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0ZXM6Y29sb24g
bGVuZ3RoOmVvbCAtIGNvbG9uIGVuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5nRW5jb2RpbmddOwor
ICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdp
dGhCeXRlczpjb2xvbiBsZW5ndGg6ZW9sIC0gY29sb24gZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJp
bmdFbmNvZGluZ10pOwogICAgICAgICAgICAgaWYgKE5TU3RyaW5nICpvbGRWYWx1ZSA9IFtoZWFk
ZXJGaWVsZHMgb2JqZWN0Rm9yS2V5Omxhc3RLZXldKSB7Ci0gICAgICAgICAgICAgICAgW3ZhbHVl
IGF1dG9yZWxlYXNlXTsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoRm9ybWF0OkAiJUAsICVAIiwgb2xkVmFsdWUsIHZhbHVlXTsKKyAgICAgICAgICAg
ICAgICBhdXRvIG5ld1ZhbHVlID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIl
QCwgJUAiLCBvbGRWYWx1ZSwgdmFsdWUuZ2V0KCldOworICAgICAgICAgICAgICAgIHZhbHVlID0g
V1RGTW92ZShuZXdWYWx1ZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBbaGVhZGVyRmll
bGRzIHNldE9iamVjdDp2YWx1ZSBmb3JLZXk6bGFzdEtleV07Ci0gICAgICAgICAgICBbdmFsdWUg
cmVsZWFzZV07CisgICAgICAgICAgICBbaGVhZGVyRmllbGRzIHNldE9iamVjdDp2YWx1ZS5nZXQo
KSBmb3JLZXk6bGFzdEtleV07CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KaW5kZXggNTY4
ZTNmNTkzNjY3ZGFiODMzZDAwNGFiMjJmYTEzZDA3ZWY5NWU3MC4uNGFlMGM3OTBlM2IwMmNmZmFh
MjQ5YWYzM2E3N2E0ZGJmYmY3MmY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KQEAgLTE5MywxMCArMTkzLDggQEAg
KyAoaW50KV93ZWJfc2V0RmluZFBhc3RlYm9hcmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdp
dGhPd25lcjooaWQpb3duZXIKIAogLSAodm9pZClfd2ViX3dyaXRlRmlsZVdyYXBwZXJBc1JURkRB
dHRhY2htZW50OihOU0ZpbGVXcmFwcGVyICopd3JhcHBlcgogewotICAgIE5TVGV4dEF0dGFjaG1l
bnQgKmF0dGFjaG1lbnQgPSBbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRmlsZVdy
YXBwZXI6d3JhcHBlcl07Ci0gICAgCi0gICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcgPSBb
TlNBdHRyaWJ1dGVkU3RyaW5nIGF0dHJpYnV0ZWRTdHJpbmdXaXRoQXR0YWNobWVudDphdHRhY2ht
ZW50XTsKLSAgICBbYXR0YWNobWVudCByZWxlYXNlXTsKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBh
ZG9wdE5TKFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5pdFdpdGhGaWxlV3JhcHBlcjp3cmFw
cGVyXSk7CisgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcgPSBbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGF0dHJpYnV0ZWRTdHJpbmdXaXRoQXR0YWNobWVudDphdHRhY2htZW50LmdldCgpXTsKICAg
ICAKICAgICBOU0RhdGEgKlJURkREYXRhID0gW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJh
bmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dOwogICAgIFtz
ZWxmIHNldERhdGE6UlRGRERhdGEgZm9yVHlwZTpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKV07
CkBAIC0zMTcsOSArMzE1LDggQEAgLSAoaWQpX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VG
b3JFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudAogICAgIGlmIChjdXN0b21EYXRhQnVmZmVy
KQogICAgICAgICBbc2VsZiBzZXREYXRhOmN1c3RvbURhdGFCdWZmZXIuZ2V0KCkgZm9yVHlwZTpA
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCi0gICAgTlNBcnJheSAqZXh0
ZW5zaW9ucyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOmV4dGVuc2lvbiwgbmls
XTsKLSAgICBbc2VsZiBzZXRQcm9wZXJ0eUxpc3Q6ZXh0ZW5zaW9ucyBmb3JUeXBlOmxlZ2FjeUZp
bGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldOwotICAgIFtleHRlbnNpb25zIHJlbGVhc2VdOwor
ICAgIGF1dG8gZXh0ZW5zaW9ucyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9i
amVjdHM6ZXh0ZW5zaW9uLCBuaWxdKTsKKyAgICBbc2VsZiBzZXRQcm9wZXJ0eUxpc3Q6ZXh0ZW5z
aW9ucy5nZXQoKSBmb3JUeXBlOmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldOwog
CiAgICAgcmV0dXJuIHNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2Vy
Lm1tCmluZGV4IDk1NjFkMjJlYmJmYjllYTQ5ZDRmODgzNmIyZjBmZDU5NWNhNjhkMzkuLmJiZWE3
ZWE2MjYyYzJmNDBlM2Y0M2Y2ZGRjYjYyNzJlZTBlMzI0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5Ib3N0TWFuYWdlci5tbQpAQCAtMTcyLDE2ICsxNzIsMTQgQEAgYm9vbCBOZXRzY2FwZVBs
dWdpbkhvc3RNYW5hZ2VyOjpzcGF3blBsdWdpbkhvc3QoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
LCBjcHVfdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNh
dGlvbiBuYW1lLiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWyhOU1N0cmluZyop
cGx1Z2luUGF0aCBsYXN0UGF0aENvbXBvbmVudF0gc3RyaW5nQnlEZWxldGluZ1BhdGhFeHRlbnNp
b25dLCBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXV07CiAgICAgCi0g
ICAgTlNEaWN0aW9uYXJ5ICpob3N0UHJvcGVydGllcyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0V2l0aE9iamVjdHNBbmRLZXlzOgorICAgIGF1dG8gaG9zdFByb3BlcnRpZXMgPSBhZG9wdE5T
KFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZU5hbWUsIEAidmlzaWJsZU5hbWUiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5TU3RyaW5nICopcGx1Z2luUGF0
aCwgQCJidW5kbGVQYXRoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5p
bF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdKTsKICAgICAKLSAg
ICBkYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlz
dDpob3N0UHJvcGVydGllcyBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCBv
cHRpb25zOjAgZXJyb3I6TlVMTF07CisgICAgZGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6
YXRpb24gZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6aG9zdFByb3BlcnRpZXMuZ2V0KCkgZm9ybWF0Ok5T
UHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOk5VTExdOwogICAg
IEFTU0VSVChkYXRhKTsKIAotICAgIFtob3N0UHJvcGVydGllcyByZWxlYXNlXTsKLQogICAgIFBy
b2Nlc3NTZXJpYWxOdW1iZXIgcHNuOwogCiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCBi
NzBlNzVlM2VlY2RkNThjYWI5MWNmODE1YzBhNjRiZTg5ZDM5YWJjLi41MWM1OWVjODQ4YTc0MDE5
ZWZlNGQ0MDg4ZWM3ZWMyMWRmNTg2NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tCkBAIC02NTEsMTEgKzY1MSwxMCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eTo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzdCkK
ICAgICAgICAgZnJhbWUgPSBraXQoY29yZShbbV9wbHVnaW5WaWV3IHdlYkZyYW1lXSktPmxvYWRl
cigpLmZpbmRGcmFtZUZvck5hdmlnYXRpb24oZnJhbWVOYW1lKSk7CiAgICAgICAgIGlmICghZnJh
bWUpIHsKICAgICAgICAgICAgIFdlYlZpZXcgKmN1cnJlbnRXZWJWaWV3ID0gW21fcGx1Z2luVmll
dyB3ZWJWaWV3XTsKLSAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZmVhdHVyZXMgPSBbW05TRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgICAgICAgICBhdXRvIGZlYXR1cmVzID0gYWRvcHRO
UyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgV2ViVmlldyAqbmV3
V2ViVmlldyA9IFtbY3VycmVudFdlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6
Y3VycmVudFdlYlZpZXcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0Om5pbAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lu
ZG93RmVhdHVyZXM6ZmVhdHVyZXNdOwotICAgICAgICAgICAgW2ZlYXR1cmVzIHJlbGVhc2VdOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2luZG93RmVhdHVyZXM6ZmVhdHVyZXMuZ2V0KCldOwogCiAgICAgICAgICAgICBp
ZiAoIW5ld1dlYlZpZXcpIHsKICAgICAgICAgICAgICAgICBfV0tQSExvYWRVUkxOb3RpZnkobV9w
bHVnaW5Ib3N0UHJveHktPnBvcnQoKSwgbV9wbHVnaW5JRCwgcGx1Z2luUmVxdWVzdC0+cmVxdWVz
dElEKCksIE5QRVJSX0dFTkVSSUNfRVJST1IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggYTRm
ZTkwYjZhY2E1NWQ5NTg2MDk5ZWYxNjQ0M2NmMmZhOTNmOThkYi4uMGIzMjY3MjcyMmY4YzkwMjQ1
N2ZiNDUzZDIyMTYyMWE2YmExZjIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBAIC02MTMsMjAg
KzYxMywxOCBAQCB2b2lkIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRGaW5pc2hMb2FkaW5n
KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikKIAogdm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0
cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBj
aGFyKiBieXRlcywgaW50IGxlbmd0aCkKIHsKLSAgICBOU0RhdGEgKmRhdGEgPSBbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToodm9pZCopYnl0ZXMgbGVuZ3RoOmxlbmd0aCBmcmVl
V2hlbkRvbmU6Tk9dOworICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGlu
aXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWJ5dGVzIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25l
Ok5PXSk7CiAKICAgICBBU1NFUlQoW2RhdGEgbGVuZ3RoXSA+IDApOwogICAgIAogICAgIGlmICht
X3RyYW5zZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZKSB7CiAgICAgICAgIGlmICghbV9kZWxpdmVy
eURhdGEpCiAgICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVE
YXRhIGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OltkYXRhIGxlbmd0aF1dKTsKLSAgICAgICAgW21f
ZGVsaXZlcnlEYXRhLmdldCgpIGFwcGVuZERhdGE6ZGF0YV07CisgICAgICAgIFttX2RlbGl2ZXJ5
RGF0YS5nZXQoKSBhcHBlbmREYXRhOmRhdGEuZ2V0KCldOwogICAgICAgICBkZWxpdmVyRGF0YSgp
OwogICAgIH0KICAgICBpZiAobV90cmFuc2Zlck1vZGUgPT0gTlBfQVNGSUxFIHx8IG1fdHJhbnNm
ZXJNb2RlID09IE5QX0FTRklMRU9OTFkpCi0gICAgICAgIGRlbGl2ZXJEYXRhVG9GaWxlKGRhdGEp
OwotICAgIAotICAgIFtkYXRhIHJlbGVhc2VdOworICAgICAgICBkZWxpdmVyRGF0YVRvRmlsZShk
YXRhLmdldCgpKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IGFiZGU4NjFjZmYw
Mjc3NWIwMWQ1Y2ZiNjUxMjJlNTg0MTIyMjE0MDMuLjA2ODdiYmJiZTgwZjViN2Q4N2IyNzhmOTE4
MzkwNTBjMDVlMGQ3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xMDM0LDEzICsxMDM0LDEyIEBA
IC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNlaXZlZERhdGE6KE5T
RGF0YSAqKWRhdGEKICAgICAgICAgaWYgKFtzZWxmIF9zaG91bGRDYW5jZWxTcmNTdHJlYW1dKSB7
CiAgICAgICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IFtbc2VsZiBkYXRhU291cmNl
XSByZXNwb25zZV07CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIE5TRXJyb3IgKmVycm9yID0g
W1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6V2ViS2l0RXJyb3JQbHVn
SW5XaWxsSGFuZGxlTG9hZAorICAgICAgICAgICAgYXV0byBlcnJvciA9IGFkb3B0TlMoW1tOU0Vy
cm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6V2ViS2l0RXJyb3JQbHVnSW5XaWxs
SGFuZGxlTG9hZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGVudFVSTDpbcmVzcG9uc2UgVVJMXQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luUGFnZVVSTDpu
aWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBsdWdpbk5hbWU6bmlsIC8vIEZJWE1FOiBHZXQgdGhpcyBmcm9tIHNvbWV3aGVyZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNSU1FVHlwZTpbcmVzcG9uc2UgTUlNRVR5cGVdXTsKLSAgICAgICAgICAgIFtbc2VsZiBk
YXRhU291cmNlXSBfZG9jdW1lbnRMb2FkZXJdLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9y
KTsKLSAgICAgICAgICAgIFtlcnJvciByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6W3Jlc3BvbnNl
IE1JTUVUeXBlXV0pOworICAgICAgICAgICAgW1tzZWxmIGRhdGFTb3VyY2VdIF9kb2N1bWVudExv
YWRlcl0tPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IuZ2V0KCkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTE3NywxMSArMTE3NiwxMCBAQCAtICh2
b2lkKWxvYWRQbHVnaW5SZXF1ZXN0OihXZWJQbHVnaW5SZXF1ZXN0ICopcGx1Z2luUmVxdWVzdAog
ICAgICAgICBmcmFtZSA9IGtpdChjb3JlKFtzZWxmIHdlYkZyYW1lXSktPmxvYWRlcigpLmZpbmRG
cmFtZUZvck5hdmlnYXRpb24oZnJhbWVOYW1lKSk7CiAgICAgICAgIGlmIChmcmFtZSA9PSBuaWwp
IHsKICAgICAgICAgICAgIFdlYlZpZXcgKmN1cnJlbnRXZWJWaWV3ID0gW3NlbGYgd2ViVmlld107
Ci0gICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmZlYXR1cmVzID0gW1tOU0RpY3Rpb25hcnkgYWxs
b2NdIGluaXRdOworICAgICAgICAgICAgYXV0byBmZWF0dXJlcyA9IGFkb3B0TlMoW1tOU0RpY3Rp
b25hcnkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIFdlYlZpZXcgKm5ld1dlYlZpZXcgPSBb
W2N1cnJlbnRXZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OmN1cnJlbnRXZWJW
aWV3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0ZlYXR1cmVz
OmZlYXR1cmVzXTsKLSAgICAgICAgICAgIFtmZWF0dXJlcyByZWxlYXNlXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp
bmRvd0ZlYXR1cmVzOmZlYXR1cmVzLmdldCgpXTsKIAogICAgICAgICAgICAgaWYgKCFuZXdXZWJW
aWV3KSB7CiAgICAgICAgICAgICAgICAgaWYgKFtwbHVnaW5SZXF1ZXN0IHNlbmROb3RpZmljYXRp
b25dKSB7CkBAIC0xMjczLDEzICsxMjcxLDEyIEBAIC0gKE5QRXJyb3IpbG9hZFJlcXVlc3Q6KE5T
TXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0IGluVGFyZ2V0Oihjb25zdCBjaGFyICopY1RhCiAg
ICAgICAgIGlmIChfZXZlbnRIYW5kbGVyKQogICAgICAgICAgICAgY3VycmVudEV2ZW50SXNVc2Vy
R2VzdHVyZSA9IF9ldmVudEhhbmRsZXItPmN1cnJlbnRFdmVudElzVXNlckdlc3R1cmUoKTsKICAg
ICAgICAgCi0gICAgICAgIFdlYlBsdWdpblJlcXVlc3QgKnBsdWdpblJlcXVlc3QgPSBbW1dlYlBs
dWdpblJlcXVlc3QgYWxsb2NdIGluaXRXaXRoUmVxdWVzdDpyZXF1ZXN0IAorICAgICAgICBhdXRv
IHBsdWdpblJlcXVlc3QgPSBhZG9wdE5TKFtbV2ViUGx1Z2luUmVxdWVzdCBhbGxvY10gaW5pdFdp
dGhSZXF1ZXN0OnJlcXVlc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVOYW1lOnRhcmdldAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vdGlmeURhdGE6bm90aWZ5RGF0YSAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kTm90aWZp
Y2F0aW9uOnNlbmROb3RpZmljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0RnJvbVVzZXJHZXN0dXJlOmN1cnJl
bnRFdmVudElzVXNlckdlc3R1cmVdOwotICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNl
bGVjdG9yKGxvYWRQbHVnaW5SZXF1ZXN0Oikgd2l0aE9iamVjdDpwbHVnaW5SZXF1ZXN0IGFmdGVy
RGVsYXk6MF07Ci0gICAgICAgIFtwbHVnaW5SZXF1ZXN0IHJlbGVhc2VdOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkU3RhcnRG
cm9tVXNlckdlc3R1cmU6Y3VycmVudEV2ZW50SXNVc2VyR2VzdHVyZV0pOworICAgICAgICBbc2Vs
ZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGxvYWRQbHVnaW5SZXF1ZXN0Oikgd2l0aE9iamVj
dDpwbHVnaW5SZXF1ZXN0LmdldCgpIGFmdGVyRGVsYXk6MF07CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgYXV0byBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHJlcXVlc3Qs
IHBsdWdpbiwgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQppbmRl
eCA2YjU2ZDczMGZjNWY4YTU3MmQ3YjI5NDM4OWY5NzNkM2E5OTRiNDAzLi43YjgyZGVmMDZhZjBj
MTA5ZTI3ODA4ZjJjZjdiNTBmMTFlY2IwZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLm1tCkBAIC01NzIsMTMgKzU3
MiwxMiBAQCAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWRS
ZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbgogICAgIGVsc2UgewogICAgICAgICAvLyBD
YW5jZWwgdGhlIGxvYWQgc2luY2UgdGhpcyBwbHVnLWluIGRvZXMgaXRzIG93biBsb2FkaW5nLgog
ICAgICAgICAvLyBGSVhNRTogU2VlIDxyZGFyOi8vcHJvYmxlbS80MjU4MDA4PiBmb3IgYSBwcm9i
bGVtIHdpdGggdGhpcy4KLSAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBbW05TRXJyb3IgYWxsb2Nd
IF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTpXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2Fk
CisgICAgICAgIGF1dG8gZXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gX2luaXRXaXRo
UGx1Z2luRXJyb3JDb2RlOldlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFVS
TDpbcmVzcG9uc2UgVVJMXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwbHVnaW5QYWdlVVJMOm5pbAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5OYW1lOm5pbCAvLyBGSVhNRTog
R2V0IHRoaXMgZnJvbSBzb21ld2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTpbcmVzcG9uc2UgTUlNRVR5cGVdXTsK
LSAgICAgICAgW19kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPmNhbmNlbE1haW5SZXNvdXJj
ZUxvYWQoZXJyb3IpOwotICAgICAgICBbZXJyb3IgcmVsZWFzZV07CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6W3Jlc3Bv
bnNlIE1JTUVUeXBlXV0pOworICAgICAgICBbX2RhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+
Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvci5nZXQoKSk7CiAgICAgfSAgICAgICAgCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0
YWJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFi
YXNlLm1tCmluZGV4IDA5M2U2OTc1ZDQxZWM4MjhhYjUyY2YzOGQ0Yjk2NmQ4ZjNmOTVlMTUuLmRh
MDQ4NjlkZGMxNWE0NmQwNWY5YjZlOWU2NjA3Mjk0ZGRhZDlmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQpAQCAtMjg3
LDcgKzI4Nyw3IEBAIC0gKHZvaWQpcmVmcmVzaAogICAgICAgICAgICAgW3NlbGYgX2FkZFBsdWdp
bjpwbHVnaW5dOwogCiAgICAgICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBNSU1FIHR5cGVzLgotICAg
ICAgICBOU011dGFibGVTZXQgKk1JTUVUeXBlcyA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0
XTsKKyAgICAgICAgYXV0byBNSU1FVHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9j
XSBpbml0XSk7CiAgICAgICAgIHBsdWdpbkVudW1lcmF0b3IgPSBbcGx1Z2lucyBvYmplY3RFbnVt
ZXJhdG9yXTsKICAgICAgICAgd2hpbGUgKChwbHVnaW4gPSBbcGx1Z2luRW51bWVyYXRvciBuZXh0
T2JqZWN0XSkpIHsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHBsdWdpbkluZm8gPSBbcGx1Z2lu
IHBsdWdpbkluZm9dOwpAQCAtMzE4LDcgKzMxOCw2IEBAIC0gKHZvaWQpcmVmcmVzaAogICAgICAg
ICAgICAgaWYgKHNlbGYgPT0gc2hhcmVkRGF0YWJhc2UpCiAgICAgICAgICAgICAgICAgW1dlYlZp
ZXcgX3JlZ2lzdGVyUGx1Z2luTUlNRVR5cGU6TUlNRVR5cGVdOwogICAgICAgICB9Ci0gICAgICAg
IFtNSU1FVHlwZXMgcmVsZWFzZV07CiAgICAgfQogfQogCkBAIC00NTIsMTcgKzQ1MSwxNiBAQCAt
ICh2b2lkKV9yZW1vdmVQbHVnaW46KFdlYkJhc2VQbHVnaW5QYWNrYWdlICopcGx1Z2luCiAgICAg
Ly8gUmVtb3ZlIHBsdWctaW4gZnJvbSBkYXRhYmFzZQogICAgIE5TU3RyaW5nICpwbHVnaW5QYXRo
ID0gW3BsdWdpbiBwYXRoXTsKICAgICBBU1NFUlQocGx1Z2luUGF0aCk7Ci0gICAgW3BsdWdpbiBy
ZXRhaW5dOworICAgIGF1dG8gcHJvdGVjdGVkUGx1Z2luID0gcmV0YWluUHRyKHBsdWdpbik7CiAg
ICAgW3BsdWdpbnMgcmVtb3ZlT2JqZWN0Rm9yS2V5OnBsdWdpblBhdGhdOwogICAgIFtwbHVnaW4g
d2FzUmVtb3ZlZEZyb21QbHVnaW5EYXRhYmFzZTpzZWxmXTsKLSAgICBbcGx1Z2luIHJlbGVhc2Vd
OwogfQogCiAtIChOU011dGFibGVTZXQgKilfc2NhbkZvck5ld1BsdWdpbnMKIHsKICAgICBOU011
dGFibGVTZXQgKm5ld1BsdWdpbnMgPSBbTlNNdXRhYmxlU2V0IHNldF07CiAgICAgTlNFbnVtZXJh
dG9yICpkaXJlY3RvcnlFbnVtZXJhdG9yID0gW1tzZWxmIF9wbHVnSW5QYXRoc10gb2JqZWN0RW51
bWVyYXRvcl07Ci0gICAgTlNNdXRhYmxlU2V0ICp1bmlxdWVGaWxlbmFtZXMgPSBbW05TTXV0YWJs
ZVNldCBhbGxvY10gaW5pdF07CisgICAgYXV0byB1bmlxdWVGaWxlbmFtZXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7CiAgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFn
ZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAgICAgTlNTdHJpbmcgKnBsdWdp
bkRpcmVjdG9yeTsKICAgICB3aGlsZSAoKHBsdWdpbkRpcmVjdG9yeSA9IFtkaXJlY3RvcnlFbnVt
ZXJhdG9yIG5leHRPYmplY3RdKSAhPSBuaWwpIHsKQEAgLTQ4NCw3ICs0ODIsNiBAQCAtIChOU011
dGFibGVTZXQgKilfc2NhbkZvck5ld1BsdWdpbnMKICAgICAgICAgICAgICAgICBbbmV3UGx1Z2lu
cyBhZGRPYmplY3Q6cGx1Z2luUGFja2FnZV07CiAgICAgICAgIH0KICAgICB9Ci0gICAgW3VuaXF1
ZUZpbGVuYW1lcyByZWxlYXNlXTsKICAgICAKICAgICByZXR1cm4gbmV3UGx1Z2luczsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQppbmRleCA4NmFmYTBlOWQzN2FjZmUzZWQzNGNjMDRjMmYwMDRmMWU1ZGVj
ZWQ1Li5kNzk0MDcxMjMyZTIyZTgzNDQxYzVmOGJlMzgwYjQ4ZjlhZWVmNGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCkBAIC0yNTMsNTEgKzI1MywzOCBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcwog
I2VuZGlmCiAgICAgCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OndpbmRvd0ZlYXR1cmVzOildKSB7
Ci0gICAgICAgIE5TTnVtYmVyICp4ID0gZmVhdHVyZXMueCA/IFtbTlNOdW1iZXIgYWxsb2NdIGlu
aXRXaXRoRmxvYXQ6KmZlYXR1cmVzLnhdIDogbmlsOwotICAgICAgICBOU051bWJlciAqeSA9IGZl
YXR1cmVzLnkgPyBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEZsb2F0OipmZWF0dXJlcy55XSA6
IG5pbDsKLSAgICAgICAgTlNOdW1iZXIgKndpZHRoID0gZmVhdHVyZXMud2lkdGggPyBbW05TTnVt
YmVyIGFsbG9jXSBpbml0V2l0aEZsb2F0OipmZWF0dXJlcy53aWR0aF0gOiBuaWw7Ci0gICAgICAg
IE5TTnVtYmVyICpoZWlnaHQgPSBmZWF0dXJlcy5oZWlnaHQgPyBbW05TTnVtYmVyIGFsbG9jXSBp
bml0V2l0aEZsb2F0OipmZWF0dXJlcy5oZWlnaHRdIDogbmlsOwotICAgICAgICBOU051bWJlciAq
bWVudUJhclZpc2libGUgPSBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMu
bWVudUJhclZpc2libGVdOwotICAgICAgICBOU051bWJlciAqc3RhdHVzQmFyVmlzaWJsZSA9IFtb
TlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlXTsK
LSAgICAgICAgTlNOdW1iZXIgKnRvb2xCYXJWaXNpYmxlID0gW1tOU051bWJlciBhbGxvY10gaW5p
dFdpdGhCb29sOmZlYXR1cmVzLnRvb2xCYXJWaXNpYmxlXTsKLSAgICAgICAgTlNOdW1iZXIgKnNj
cm9sbGJhcnNWaXNpYmxlID0gW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVz
LnNjcm9sbGJhcnNWaXNpYmxlXTsKLSAgICAgICAgTlNOdW1iZXIgKnJlc2l6YWJsZSA9IFtbTlNO
dW1iZXIgYWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy5yZXNpemFibGVdOwotICAgICAgICBO
U051bWJlciAqZnVsbHNjcmVlbiA9IFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0
dXJlcy5mdWxsc2NyZWVuXTsKLSAgICAgICAgTlNOdW1iZXIgKmRpYWxvZyA9IFtbTlNOdW1iZXIg
YWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy5kaWFsb2ddOworICAgICAgICBhdXRvIHggPSBm
ZWF0dXJlcy54ID8gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEZsb2F0OipmZWF0
dXJlcy54XSkgOiBuaWw7CisgICAgICAgIGF1dG8geSA9IGZlYXR1cmVzLnkgPyBhZG9wdE5TKFtb
TlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoRmxvYXQ6KmZlYXR1cmVzLnldKSA6IG5pbDsKKyAgICAg
ICAgYXV0byB3aWR0aCA9IGZlYXR1cmVzLndpZHRoID8gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9j
XSBpbml0V2l0aEZsb2F0OipmZWF0dXJlcy53aWR0aF0pIDogbmlsOworICAgICAgICBhdXRvIGhl
aWdodCA9IGZlYXR1cmVzLmhlaWdodCA/IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdp
dGhGbG9hdDoqZmVhdHVyZXMuaGVpZ2h0XSkgOiBuaWw7CisgICAgICAgIGF1dG8gbWVudUJhclZp
c2libGUgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy5t
ZW51QmFyVmlzaWJsZV0pOworICAgICAgICBhdXRvIHN0YXR1c0JhclZpc2libGUgPSBhZG9wdE5T
KFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxl
XSk7CisgICAgICAgIGF1dG8gdG9vbEJhclZpc2libGUgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxs
b2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy50b29sQmFyVmlzaWJsZV0pOworICAgICAgICBhdXRv
IHNjcm9sbGJhcnNWaXNpYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJv
b2w6ZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGVdKTsKKyAgICAgICAgYXV0byByZXNpemFibGUg
PSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy5yZXNpemFi
bGVdKTsKKyAgICAgICAgYXV0byBmdWxsc2NyZWVuID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9j
XSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMuZnVsbHNjcmVlbl0pOworICAgICAgICBhdXRvIGRpYWxv
ZyA9IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLmRpYWxv
Z10pOwogICAgICAgICAKLSAgICAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdEZlYXR1cmVz
ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudUJhclZpc2li
bGUsIEAibWVudUJhclZpc2libGUiLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXR1c0JhclZpc2libGUsIEAic3RhdHVzQmFyVmlzaWJsZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sQmFyVmlzaWJsZSwg
QCJ0b29sQmFyVmlzaWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzY3JvbGxiYXJzVmlzaWJsZSwgQCJzY3JvbGxiYXJzVmlzaWJsZSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemFibGUsIEAicmVzaXph
YmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxz
Y3JlZW4sIEAiZnVsbHNjcmVlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWFsb2csIEAiZGlhbG9nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgICAgIGF1dG8gZGljdEZlYXR1cmVzID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51QmFyVmlz
aWJsZS5nZXQoKSwgQCJtZW51QmFyVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0dXNCYXJWaXNpYmxlLmdldCgpLCBAInN0YXR1c0JhclZp
c2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9v
bEJhclZpc2libGUuZ2V0KCksIEAidG9vbEJhclZpc2libGUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYmFyc1Zpc2libGUuZ2V0KCksIEAic2Ny
b2xsYmFyc1Zpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzaXphYmxlLmdldCgpLCBAInJlc2l6YWJsZSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuLmdldCgpLCBAImZ1bGxzY3JlZW4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nLmdl
dCgpLCBAImRpYWxvZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuaWxdKTsKICAgICAgICAgCiAgICAgICAgIGlmICh4KQotICAgICAgICAgICAgW2RpY3RG
ZWF0dXJlcyBzZXRPYmplY3Q6eCBmb3JLZXk6QCJ4Il07CisgICAgICAgICAgICBbZGljdEZlYXR1
cmVzIHNldE9iamVjdDp4LmdldCgpIGZvcktleTpAIngiXTsKICAgICAgICAgaWYgKHkpCi0gICAg
ICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDp5IGZvcktleTpAInkiXTsKKyAgICAgICAg
ICAgIFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0OnkuZ2V0KCkgZm9yS2V5OkAieSJdOwogICAgICAg
ICBpZiAod2lkdGgpCi0gICAgICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDp3aWR0aCBm
b3JLZXk6QCJ3aWR0aCJdOworICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6d2lk
dGguZ2V0KCkgZm9yS2V5OkAid2lkdGgiXTsKICAgICAgICAgaWYgKGhlaWdodCkKLSAgICAgICAg
ICAgIFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0OmhlaWdodCBmb3JLZXk6QCJoZWlnaHQiXTsKKyAg
ICAgICAgICAgIFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0OmhlaWdodC5nZXQoKSBmb3JLZXk6QCJo
ZWlnaHQiXTsKICAgICAgICAgCi0gICAgICAgIG5ld1dlYlZpZXcgPSBDYWxsVUlEZWxlZ2F0ZSht
X3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDp3aW5k
b3dGZWF0dXJlczopLCBuaWwsIGRpY3RGZWF0dXJlcyk7Ci0gICAgICAgIAotICAgICAgICBbZGlj
dEZlYXR1cmVzIHJlbGVhc2VdOwotICAgICAgICBbeCByZWxlYXNlXTsKLSAgICAgICAgW3kgcmVs
ZWFzZV07Ci0gICAgICAgIFt3aWR0aCByZWxlYXNlXTsKLSAgICAgICAgW2hlaWdodCByZWxlYXNl
XTsKLSAgICAgICAgW21lbnVCYXJWaXNpYmxlIHJlbGVhc2VdOwotICAgICAgICBbc3RhdHVzQmFy
VmlzaWJsZSByZWxlYXNlXTsKLSAgICAgICAgW3Rvb2xCYXJWaXNpYmxlIHJlbGVhc2VdOwotICAg
ICAgICBbc2Nyb2xsYmFyc1Zpc2libGUgcmVsZWFzZV07Ci0gICAgICAgIFtyZXNpemFibGUgcmVs
ZWFzZV07Ci0gICAgICAgIFtmdWxsc2NyZWVuIHJlbGVhc2VdOwotICAgICAgICBbZGlhbG9nIHJl
bGVhc2VdOworICAgICAgICBuZXdXZWJWaWV3ID0gQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBA
c2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6d2luZG93RmVhdHVyZXM6
KSwgbmlsLCBkaWN0RmVhdHVyZXMuZ2V0KCkpOwogICAgIH0gZWxzZSBpZiAoZmVhdHVyZXMuZGlh
bG9nICYmIFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6Y3Jl
YXRlV2ViVmlld01vZGFsRGlhbG9nV2l0aFJlcXVlc3Q6KV0pIHsKICAgICAgICAgbmV3V2ViVmll
dyA9IENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2Vi
Vmlld01vZGFsRGlhbG9nV2l0aFJlcXVlc3Q6KSwgbmlsKTsKICAgICB9IGVsc2UgewpAQCAtNDYz
LDI1ICs0NTAsMjMgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUo
TWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXYKICAgICB9CiAKICAgICBOU1N0
cmluZyAqbWVzc2FnZVNvdXJjZSA9IHN0cmluZ0Zvck1lc3NhZ2VTb3VyY2Uoc291cmNlKTsKLSAg
ICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzQW5kS2V5czoKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgogICAgICAgICAoTlNTdHJpbmcg
KiltZXNzYWdlLCBAIm1lc3NhZ2UiLAogICAgICAgICBAKGxpbmVOdW1iZXIpLCBAImxpbmVOdW1i
ZXIiLAogICAgICAgICBAKGNvbHVtbk51bWJlciksIEAiY29sdW1uTnVtYmVyIiwKICAgICAgICAg
KE5TU3RyaW5nICopc291cmNlVVJMLCBAInNvdXJjZVVSTCIsCiAgICAgICAgIG1lc3NhZ2VTb3Vy
Y2UsIEAiTWVzc2FnZVNvdXJjZSIsCiAgICAgICAgIHN0cmluZ0Zvck1lc3NhZ2VMZXZlbChsZXZl
bCksIEAiTWVzc2FnZUxldmVsIiwKLSAgICAgICAgTlVMTF07CisgICAgICAgIE5VTExdKTsKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW1tbbV93ZWJWaWV3IF9VSUtpdERlbGVnYXRl
Rm9yd2FyZGVyXSBhc3luY0ZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgYWRkTWVzc2FnZVRv
Q29uc29sZTpkaWN0aW9uYXJ5IHdpdGhTb3VyY2U6bWVzc2FnZVNvdXJjZV07CisgICAgW1tbbV93
ZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSBhc3luY0ZvcndhcmRlcl0gd2ViVmlldzpt
X3dlYlZpZXcgYWRkTWVzc2FnZVRvQ29uc29sZTpkaWN0aW9uYXJ5LmdldCgpIHdpdGhTb3VyY2U6
bWVzc2FnZVNvdXJjZV07CiAjZWxzZQogICAgIGlmIChyZXNwb25kc1RvTmV3U2VsZWN0b3IpCi0g
ICAgICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIGRpY3Rpb25hcnksIG1l
c3NhZ2VTb3VyY2UpOworICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9y
LCBkaWN0aW9uYXJ5LmdldCgpLCBtZXNzYWdlU291cmNlKTsKICAgICBlbHNlCi0gICAgICAgIENh
bGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIGRpY3Rpb25hcnkpOworICAgICAgICBD
YWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCBkaWN0aW9uYXJ5LmdldCgpKTsKICNl
bmRpZgotCi0gICAgW2RpY3Rpb25hcnkgcmVsZWFzZV07CiB9CiAKIGJvb2wgV2ViQ2hyb21lQ2xp
ZW50OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQpAQCAtNjY4LDkgKzY1Myw4IEBA
IHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyRW1iCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojptb3VzZURp
ZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkIG1v
ZGlmaWVyRmxhZ3MsIGNvbnN0IFN0cmluZyYgdG9vbFRpcCwgVGV4dERpcmVjdGlvbikKIHsKLSAg
ICBXZWJFbGVtZW50RGljdGlvbmFyeSAqZWxlbWVudCA9IFtbV2ViRWxlbWVudERpY3Rpb25hcnkg
YWxsb2NdIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpyZXN1bHRdOwotICAgIFttX3dlYlZpZXcgX21v
dXNlRGlkTW92ZU92ZXJFbGVtZW50OmVsZW1lbnQgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdz
XTsKLSAgICBbZWxlbWVudCByZWxlYXNlXTsKKyAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdE5TKFtb
V2ViRWxlbWVudERpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpyZXN1bHRd
KTsKKyAgICBbbV93ZWJWaWV3IF9tb3VzZURpZE1vdmVPdmVyRWxlbWVudDplbGVtZW50LmdldCgp
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFnc107CiAgICAgc2V0VG9vbFRpcCh0b29sVGlwKTsK
IH0KIApAQCAtNjk0LDkgKzY3OCw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERh
dGFiYXNlUXVvdGEoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiB7CiAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKLSAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2Vi
T3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3Vy
aXR5T3JpZ2luOiZmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpXTsKLSAgICBDYWxs
VUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmZyYW1lOmV4Y2VlZGVkRGF0
YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOmRhdGFiYXNlOiksIGtpdCgmZnJhbWUpLCB3ZWJP
cmlnaW4sIChOU1N0cmluZyAqKWRhdGFiYXNlTmFtZSk7Ci0gICAgW3dlYk9yaWdpbiByZWxlYXNl
XTsKKyAgICBhdXRvIHdlYk9yaWdpbiA9IGFkb3B0TlMoW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxv
Y10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOiZmcmFtZS5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpXSk7CisgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Io
d2ViVmlldzpmcmFtZTpleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjpkYXRh
YmFzZTopLCBraXQoJmZyYW1lKSwgd2ViT3JpZ2luLmdldCgpLCAoTlNTdHJpbmcgKilkYXRhYmFz
ZU5hbWUpOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpAQCAtNzEwLDkgKzY5
Myw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAKLSAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJTZWN1
cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOiZvcmlnaW5d
OwotICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZXhjZWVk
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp0b3RhbFNwYWNl
TmVlZGVkOiksIHdlYk9yaWdpbiwgc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4odG90YWxTcGFjZU5l
ZWRlZCkpOwotICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07CisgICAgYXV0byB3ZWJPcmlnaW4gPSBh
ZG9wdE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0
eU9yaWdpbjomb3JpZ2luXSk7CisgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0
b3Iod2ViVmlldzpleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5
T3JpZ2luOnRvdGFsU3BhY2VOZWVkZWQ6KSwgd2ViT3JpZ2luLmdldCgpLCBzdGF0aWNfY2FzdDxO
U1VJbnRlZ2VyPih0b3RhbFNwYWNlTmVlZGVkKSk7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCiB9CkBAIC03ODIsMTUgKzc2NCwxNCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVu
T3BlblBhbmVsKEZyYW1lJiwgRmlsZUNob29zZXImIGNob29zZXIpCiB7CiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCiAgICAgQk9PTCBhbGxvd011bHRpcGxlRmlsZXMgPSBjaG9vc2Vy
LnNldHRpbmdzKCkuYWxsb3dzTXVsdGlwbGVGaWxlczsKLSAgICBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lciAqbGlzdGVuZXIgPSBbW1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGFsbG9jXSBp
bml0V2l0aENob29zZXI6Y2hvb3Nlcl07CisgICAgYXV0byBsaXN0ZW5lciA9IGFkb3B0TlMoW1tX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDaG9vc2VyOmNob29zZXJd
KTsKICAgICBpZCBkZWxlZ2F0ZSA9IFttX3dlYlZpZXcgVUlEZWxlZ2F0ZV07CiAgICAgaWYgKFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVs
Rm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjphbGxvd011bHRpcGxlRmlsZXM6KV0pCi0g
ICAgICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6cnVuT3Bl
blBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjphbGxvd011bHRpcGxlRmlsZXM6
KSwgbGlzdGVuZXIsIGFsbG93TXVsdGlwbGVGaWxlcyk7CisgICAgICAgIENhbGxVSURlbGVnYXRl
KG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldp
dGhSZXN1bHRMaXN0ZW5lcjphbGxvd011bHRpcGxlRmlsZXM6KSwgbGlzdGVuZXIuZ2V0KCksIGFs
bG93TXVsdGlwbGVGaWxlcyk7CiAgICAgZWxzZSBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3Vs
dExpc3RlbmVyOildKQotICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rv
cih3ZWJWaWV3OnJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KSwg
bGlzdGVuZXIpOworICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3
ZWJWaWV3OnJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KSwgbGlz
dGVuZXIuZ2V0KCkpOwogICAgIGVsc2UKICAgICAgICAgW2xpc3RlbmVyIGNhbmNlbF07Ci0gICAg
W2xpc3RlbmVyIHJlbGVhc2VdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIApA
QCAtMTA3OSw5ICsxMDYwLDggQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4aXRGdWxsU2NyZWVu
Rm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewogICAgIFNFTCBzZWxlY3RvciA9IEBzZWxl
Y3Rvcih3ZWJWaWV3OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudDpsaXN0ZW5lcjopOwogICAgIGlm
IChbW21fd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7
Ci0gICAgICAgIFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciogbGlzdGVuZXIgPSBbW1dlYktpdEZ1
bGxTY3JlZW5MaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhFbGVtZW50OmVsZW1lbnRdOwotICAgICAg
ICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCBraXQoZWxlbWVudCksIGxpc3Rl
bmVyKTsKLSAgICAgICAgW2xpc3RlbmVyIHJlbGVhc2VdOworICAgICAgICBhdXRvIGxpc3RlbmVy
ID0gYWRvcHROUyhbW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhFbGVt
ZW50OmVsZW1lbnRdKTsKKyAgICAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rv
ciwga2l0KGVsZW1lbnQpLCBsaXN0ZW5lci5nZXQoKSk7CiAgICAgfQogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCAwMWVjMDNlYTg3YmM0
MTA2MmJiNmRmNTViNTgwYTllYWFhZmNlYmUxLi4wYTE2NDljMGE4MjNhNTkwOGEzMzMwMjYzZDI3
ZWMwNzQ4MWQ5Y2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MzQsNyArNDM0LDcgQEAgdm9p
ZCBfV2ViQ3JlYXRlRnJhZ21lbnQoRG9jdW1lbnQmLCBOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgRnJh
Z21lbnRBbmRSZXNvdXJjZXMmKQogc3RhdGljIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0
dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIG5lZWRz
IHRvIGJlIGtlcHQgaW4gc3luYyB3aXRoIGlkZW50aWNhbGx5IG5hbWVkIG9uZSBpbiBXZWJDb3Jl
LCB3aGljaCBpcyB1c2VkIG9uIG5ld2VyIE9TIHZlcnNpb25zLgotICAgIE5TTXV0YWJsZUFycmF5
ICpleGNsdWRlZEVsZW1lbnRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmpl
Y3RzOgorICAgIGF1dG8gZXhjbHVkZWRFbGVtZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgogICAgICAgICAvLyBPbWl0IHN0eWxlIHNpbmNlIHdl
IHdhbnQgc3R5bGUgdG8gYmUgaW5saW5lIHNvIHRoZSBmcmFnbWVudCBjYW4gYmUgZWFzaWx5IGlu
c2VydGVkLgogICAgICAgICBAInN0eWxlIiwKICAgICAgICAgLy8gT21pdCB4bWwgc28gdGhlIHJl
c3VsdCBpcyBub3QgWEhUTUwuCkBAIC00NDcsMTYgKzQ0NywxNCBAQCBzdGF0aWMgTlNEaWN0aW9u
YXJ5ICphdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24oKQogICAgICAgICAv
LyBPbWl0IG9iamVjdCBzbyBubyBmaWxlIGF0dGFjaG1lbnRzIGFyZSBwYXJ0IG9mIHRoZSBmcmFn
bWVudC4KICAgICAgICAgQCJvYmplY3QiLAogI2VuZGlmCi0gICAgICAgIG5pbF07CisgICAgICAg
IG5pbF0pOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFi
bGVkKCkpCiAgICAgICAgIFtleGNsdWRlZEVsZW1lbnRzIGFkZE9iamVjdDpAIm9iamVjdCJdOwog
I2VuZGlmCiAKLSAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBAeyBOU0V4Y2x1ZGVkRWxl
bWVudHNEb2N1bWVudEF0dHJpYnV0ZTogZXhjbHVkZWRFbGVtZW50cyB9OwotCi0gICAgW2V4Y2x1
ZGVkRWxlbWVudHMgcmVsZWFzZV07CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gQHsg
TlNFeGNsdWRlZEVsZW1lbnRzRG9jdW1lbnRBdHRyaWJ1dGU6IGV4Y2x1ZGVkRWxlbWVudHMuZ2V0
KCkgfTsKIAogICAgIHJldHVybiBkaWN0aW9uYXJ5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQppbmRleCBmNzVmODBjNjc0Y2EwMDMxMzYzNjMzZGQ1MzUxNTFlZTQwYTA2MWQ1Li41OWY4
MzI2N2NmMzE3ODUzNzljNTRmYzEzZThhZGI5NjllMTI1MjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQpAQCAtMjU4LDcgKzI1OCw3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmZvcmNlTGF5b3V0T25SZXN0b3JlRnJvbUJhY2tGb3J3YXJkQ2FjaGUoKQogCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpmb3JjZUxheW91dEZvck5vbkhUTUwoKQogewotICAgIFdlYkZyYW1l
VmlldyAqdGhpc1ZpZXcgPSBtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3OworICAg
IGF1dG8gdGhpc1ZpZXcgPSBtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3OwogICAg
IE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqdGhpc0RvY3VtZW50VmlldyA9IFt0aGlzVmlldyBk
b2N1bWVudFZpZXddOwogICAgIEFTU0VSVCh0aGlzRG9jdW1lbnRWaWV3ICE9IG5pbCk7CiAgICAg
CkBAIC04MzYsMTEgKzgzNiwxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKE9wdGlvblNldDxXZWJDb3JlOjpMYQogV2ViQ29yZTo6
RnJhbWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2Vi
Q29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIFdlYkNvcmU6Ok5ld0ZyYW1lT3BlbmVyUG9saWN5KQog
ewogICAgIFdlYlZpZXcgKmN1cnJlbnRXZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdl
dCgpKTsKLSAgICBOU0RpY3Rpb25hcnkgKmZlYXR1cmVzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdOworICAgIGF1dG8gZmVhdHVyZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0XSk7CiAgICAgV2ViVmlldyAqbmV3V2ViVmlldyA9IFtbY3VycmVudFdlYlZpZXcgX1VJ
RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6Y3VycmVudFdlYlZpZXcgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVXZWJWaWV3V2l0aFJlcXVl
c3Q6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2luZG93RmVhdHVyZXM6ZmVhdHVyZXNdOwotICAgIFtmZWF0dXJlcyByZWxlYXNl
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aW5kb3dGZWF0dXJlczpmZWF0dXJlcy5nZXQoKV07CiAgICAgCiAjaWYgVVNFKFBMVUdJ
Tl9IT1NUX1BST0NFU1MpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlmIChu
ZXdXZWJWaWV3KQpAQCAtMTAwOCw5ICsxMDA3LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgTlNEYXRhICpuc0RhdGEgPSBbW05TRGF0
YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZy
ZWVXaGVuRG9uZTpOT107Ci0gICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOm5z
RGF0YV07Ci0gICAgW25zRGF0YSByZWxlYXNlXTsKKyAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMo
W1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxl
bmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKKyAgICBbZGF0YVNvdXJjZShsb2FkZXIpIF9yZWNlaXZl
ZERhdGE6bnNEYXRhLmdldCgpXTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIpCkBAIC0xMzE5LDEw
ICsxMzE3LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRhU291
cmNlUmVwbGFjZW1lbnQoKQogICAgIC8vIGEgbm9uLWVkaXRvciBpcyBmaXJzdFJlcG9uZGVyIGl0
IHdpbGwgbm90IGJlIGFmZmVjdGVkIGJ5IGVuZEVkaXRpbmdGb3I6LgogICAgIC8vIFBvdGVudGlh
bGx5IG9uZSBkYXkgc29tZW9uZSBjb3VsZCB3cml0ZSBhIERvY1ZpZXcgd2hvc2UgZWRpdG9ycyB3
ZXJlIG5vdCBhbGwKICAgICAvLyByZXBsYWNlZCBieSBsb2FkaW5nIG5ldyBjb250ZW50LCBidXQg
dGhhdCBkb2VzIG5vdCBhcHBseSBjdXJyZW50bHkuCi0gICAgTlNWaWV3ICpmcmFtZVZpZXcgPSBt
X3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3OworICAgIGF1dG8gZnJhbWVWaWV3ID0g
bV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldzsKICAgICBOU1dpbmRvdyAqd2luZG93
ID0gW2ZyYW1lVmlldyB3aW5kb3ddOwogICAgIE5TUmVzcG9uZGVyICpmaXJzdFJlc3AgPSBbd2lu
ZG93IGZpcnN0UmVzcG9uZGVyXTsKLSAgICBpZiAoW2ZpcnN0UmVzcCBpc0tpbmRPZkNsYXNzOltO
U1ZpZXcgY2xhc3NdXSAmJiBbKE5TVmlldyAqKWZpcnN0UmVzcCBpc0Rlc2NlbmRhbnRPZjpmcmFt
ZVZpZXddKQorICAgIGlmIChbZmlyc3RSZXNwIGlzS2luZE9mQ2xhc3M6W05TVmlldyBjbGFzc11d
ICYmIFsoTlNWaWV3ICopZmlyc3RSZXNwIGlzRGVzY2VuZGFudE9mOmZyYW1lVmlldy5nZXQoKV0p
CiAgICAgICAgIFt3aW5kb3cgZW5kRWRpdGluZ0ZvcjpmaXJzdFJlc3BdOwogI2VuZGlmCiB9CkBA
IC0xMzMxLDkgKzEzMjksOCBAQCBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZQogewogICAgIGF1dG8g
bG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXJNYWM6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRl
RGF0YSk7CiAKLSAgICBXZWJEYXRhU291cmNlICpkYXRhU291cmNlID0gW1tXZWJEYXRhU291cmNl
IGFsbG9jXSBfaW5pdFdpdGhEb2N1bWVudExvYWRlcjpsb2FkZXIuY29weVJlZigpXTsKLSAgICBs
b2FkZXItPnNldERhdGFTb3VyY2UoZGF0YVNvdXJjZSwgZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdl
dCgpKSk7Ci0gICAgW2RhdGFTb3VyY2UgcmVsZWFzZV07CisgICAgYXV0byBkYXRhU291cmNlID0g
YWRvcHROUyhbW1dlYkRhdGFTb3VyY2UgYWxsb2NdIF9pbml0V2l0aERvY3VtZW50TG9hZGVyOmxv
YWRlci5jb3B5UmVmKCldKTsKKyAgICBsb2FkZXItPnNldERhdGFTb3VyY2UoZGF0YVNvdXJjZS5n
ZXQoKSwgZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSk7CiAKICAgICByZXR1cm4gV1RGTW92
ZShsb2FkZXIpOwogfQpAQCAtMTM2OCw3ICsxMzY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUs
IGMKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVk
RnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqIGNhY2hlZEZyYW1lKQogewotICAgIGNhY2hlZEZy
YW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShtYWtlVW5pcXVlPFdlYkNhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhPihtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50
VmlldykpOworICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShtYWtl
VW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihbbV93ZWJGcmFtZS0+X3ByaXZhdGUt
PndlYkZyYW1lVmlldyBkb2N1bWVudFZpZXddKSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGlzIGZyYW1lIGlzIGdvaW5nIHRvIGJl
IGNhY2hlZC4gU3RvcCBhbGwgcGx1Z2lucy4KQEAgLTE0MzUsMTUgKzE0MzIsMTQgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAg
ICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAg
W3dlYlZpZXcgcmVtb3ZlUGx1Z2luSW5zdGFuY2VWaWV3c0ZvcjoobV93ZWJGcmFtZS5nZXQoKSld
OwogICAgIAotICAgIE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqZG9jdW1lbnRWaWV3ID0gW21f
d2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgX21ha2VEb2N1bWVudFZpZXdGb3JEYXRh
U291cmNlOmRhdGFTb3VyY2VdOworICAgIFJldGFpblB0cjxOU1ZpZXcgPFdlYkRvY3VtZW50Vmll
dz4+IGRvY3VtZW50VmlldyA9IFttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3IF9t
YWtlRG9jdW1lbnRWaWV3Rm9yRGF0YVNvdXJjZTpkYXRhU291cmNlXTsKICNlbHNlCi0gICAgTlNW
aWV3IDxXZWJEb2N1bWVudFZpZXc+ICpkb2N1bWVudFZpZXcgPSBuaWw7CisgICAgUmV0YWluUHRy
PE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3Pj4gZG9jdW1lbnRWaWV3OwogCiAgICAgLy8gRmFzdCBw
YXRoIHRoYXQgc2tpcHMgaW5pdGlhbGl6YXRpb24gb2Ygb2JqYyBjbGFzcyBvYmplY3RzLgogICAg
IGlmICh3aWxsUHJvZHVjZUhUTUxWaWV3KSB7Ci0gICAgICAgIGRvY3VtZW50VmlldyA9IFtbV2Vi
SFRNTFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6W21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJG
cmFtZVZpZXcgYm91bmRzXV07Ci0gICAgICAgIFttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJh
bWVWaWV3IF9zZXREb2N1bWVudFZpZXc6ZG9jdW1lbnRWaWV3XTsKLSAgICAgICAgW2RvY3VtZW50
VmlldyByZWxlYXNlXTsKKyAgICAgICAgZG9jdW1lbnRWaWV3ID0gYWRvcHROUyhbW1dlYkhUTUxW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOlttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVW
aWV3IGJvdW5kc11dKTsKKyAgICAgICAgW21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZp
ZXcgX3NldERvY3VtZW50Vmlldzpkb2N1bWVudFZpZXcuZ2V0KCldOwogICAgIH0gZWxzZQogICAg
ICAgICBkb2N1bWVudFZpZXcgPSBbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBf
bWFrZURvY3VtZW50Vmlld0ZvckRhdGFTb3VyY2U6ZGF0YVNvdXJjZV07CiAjZW5kaWYKQEAgLTE1
NzAsMTAgKzE1NjYsOSBAQCBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rp
b25EaWN0aW9uYXJ5KGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BYwogCiAgICAgaWYgKGF1dG8g
bW91c2VFdmVudERhdGEgPSBhY3Rpb24ubW91c2VFdmVudERhdGEoKSkgewogICAgICAgICBjb25z
dGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJl
cXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFs
bG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKLSAgICAgICAgV2ViRWxlbWVudERpY3Rpb25hcnkgKmVs
ZW1lbnQgPSBbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXQotICAgICAgICAgICAgaW5pdFdp
dGhIaXRUZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFuZGxlcigpLmhp
dFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnREYXRhLT5hYnNvbHV0ZUxvY2F0aW9uLCBoaXRU
eXBlKV07Ci0gICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OmVsZW1lbnQgZm9yS2V5OldlYkFjdGlv
bkVsZW1lbnRLZXldOwotICAgICAgICBbZWxlbWVudCByZWxlYXNlXTsKKyAgICAgICAgYXV0byBl
bGVtZW50ID0gYWRvcHROUyhbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXQorICAgICAgICAg
ICAgaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFu
ZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnREYXRhLT5hYnNvbHV0ZUxvY2F0
aW9uLCBoaXRUeXBlKV0pOworICAgICAgICBbcmVzdWx0IHNldE9iamVjdDplbGVtZW50LmdldCgp
IGZvcktleTpXZWJBY3Rpb25FbGVtZW50S2V5XTsKIAogICAgICAgICBpZiAobW91c2VFdmVudERh
dGEtPmlzVHJ1c3RlZCkKICAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OkAobW91c2VFdmVu
dERhdGEtPmJ1dHRvbikgZm9yS2V5OldlYkFjdGlvbkJ1dHRvbktleV07CkBAIC0xNjE0LDEwICsx
NjA5LDkgQEAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlRnJhbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWIKICAgICAKICAgICBBU1NFUlQobV93ZWJG
cmFtZSk7CiAgICAgCi0gICAgV2ViRnJhbWVWaWV3ICpjaGlsZFZpZXcgPSBbW1dlYkZyYW1lVmll
dyBhbGxvY10gaW5pdF07CisgICAgYXV0byBjaGlsZFZpZXcgPSBhZG9wdE5TKFtbV2ViRnJhbWVW
aWV3IGFsbG9jXSBpbml0XSk7CiAgICAgCi0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiByZXN1
bHQgPSBbV2ViRnJhbWUgX2NyZWF0ZVN1YmZyYW1lV2l0aE93bmVyRWxlbWVudDomb3duZXJFbGVt
ZW50IGZyYW1lTmFtZTpuYW1lIGZyYW1lVmlldzpjaGlsZFZpZXddOwotICAgIFtjaGlsZFZpZXcg
cmVsZWFzZV07CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiByZXN1bHQgPSBbV2ViRnJhbWUg
X2NyZWF0ZVN1YmZyYW1lV2l0aE93bmVyRWxlbWVudDomb3duZXJFbGVtZW50IGZyYW1lTmFtZTpu
YW1lIGZyYW1lVmlldzpjaGlsZFZpZXcuZ2V0KCldOwogCiAgICAgV2ViRnJhbWUgKm5ld0ZyYW1l
ID0ga2l0KHJlc3VsdC5nZXQoKSk7CiAKQEAgLTE2OTksMTIgKzE2OTMsMTEgQEAgc3RhdGljIE5T
VmlldyAqcGx1Z2luVmlldyhXZWJGcmFtZSAqZnJhbWUsIFdlYlBsdWdpblBhY2thZ2UgKnBsdWdp
blBhY2thZ2UsCiAgICAgV2ViUGx1Z2luQ29udHJvbGxlciAqcGx1Z2luQ29udHJvbGxlciA9IFtk
b2NWaWV3IF9wbHVnaW5Db250cm9sbGVyXTsKIAogICAgIC8vIFN0b3JlIGF0dHJpYnV0ZXMgaW4g
YSBkaWN0aW9uYXJ5IHNvIHRoZXkgY2FuIGJlIHBhc3NlZCB0byBXZWJQbHVnaW5zLgotICAgIE5T
TXV0YWJsZURpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0czphdHRyaWJ1dGVWYWx1ZXMgZm9yS2V5czphdHRyaWJ1dGVOYW1l
c107CisgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czphdHRyaWJ1dGVWYWx1ZXMgZm9yS2V5czphdHRyaWJ1dGVO
YW1lc10pOwogCiAgICAgW3BsdWdpblBhY2thZ2UgbG9hZF07CiAgICAgQ2xhc3Mgdmlld0ZhY3Rv
cnkgPSBbcGx1Z2luUGFja2FnZSB2aWV3RmFjdG9yeV07CiAgICAgCi0gICAgTlNWaWV3ICp2aWV3
ID0gbmlsOwogICAgIE5TRGljdGlvbmFyeSAqYXJndW1lbnRzID0gbmlsOwogCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVuZGVjbGFyZWQtc2VsZWN0b3IiKQpAQCAtMTcxNCw3ICsxNzA3LDcgQEAg
SUdOT1JFX1dBUk5JTkdTX0VORAogICAgIGlmIChbdmlld0ZhY3RvcnkgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czopXSkgewogICAgICAgICBhcmd1
bWVudHMgPSBAewogICAgICAgICAgICAgV2ViUGx1Z0luQmFzZVVSTEtleTogYmFzZVVSTCwKLSAg
ICAgICAgICAgIFdlYlBsdWdJbkF0dHJpYnV0ZXNLZXk6IGF0dHJpYnV0ZXMsCisgICAgICAgICAg
ICBXZWJQbHVnSW5BdHRyaWJ1dGVzS2V5OiBhdHRyaWJ1dGVzLmdldCgpLAogICAgICAgICAgICAg
V2ViUGx1Z0luQ29udGFpbmVyS2V5OiBwbHVnaW5Db250cm9sbGVyLAogICAgICAgICAgICAgV2Vi
UGx1Z0luTW9kZUtleTogQChsb2FkTWFudWFsbHkgPyBXZWJQbHVnSW5Nb2RlRnVsbCA6IFdlYlBs
dWdJbk1vZGVFbWJlZCksCiAgICAgICAgICAgICBXZWJQbHVnSW5TaG91bGRMb2FkTWFpblJlc291
cmNlS2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6IWxvYWRNYW51YWxseV0sCkBAIC0xNzI0
LDE3ICsxNzE3LDE0IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICB9IGVsc2UgaWYgKFt2aWV3
RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0b3I6b2xkU2VsZWN0b3JdKSB7CiAgICAgICAgIGFyZ3Vt
ZW50cyA9IEB7CiAgICAgICAgICAgICBXZWJQbHVnaW5CYXNlVVJMS2V5OiBiYXNlVVJMLAotICAg
ICAgICAgICAgV2ViUGx1Z2luQXR0cmlidXRlc0tleTogYXR0cmlidXRlcywKKyAgICAgICAgICAg
IFdlYlBsdWdpbkF0dHJpYnV0ZXNLZXk6IGF0dHJpYnV0ZXMuZ2V0KCksCiAgICAgICAgICAgICBX
ZWJQbHVnaW5Db250YWluZXJLZXk6IHBsdWdpbkNvbnRyb2xsZXIsCiAgICAgICAgICAgICBXZWJQ
bHVnSW5Db250YWluaW5nRWxlbWVudEtleTogZWxlbWVudCwKICAgICAgICAgfTsKICAgICAgICAg
TE9HKFBsdWdpbnMsICJhcmd1bWVudHM6XG4lQCIsIGFyZ3VtZW50cyk7CiAgICAgfQogCi0gICAg
dmlldyA9IFtwbHVnaW5Db250cm9sbGVyIHBsdWdJblZpZXdXaXRoQXJndW1lbnRzOmFyZ3VtZW50
cyBmcm9tUGx1Z2luUGFja2FnZTpwbHVnaW5QYWNrYWdlXTsKLSAgICBbYXR0cmlidXRlcyByZWxl
YXNlXTsKLQotICAgIHJldHVybiB2aWV3OworICAgIHJldHVybiBbcGx1Z2luQ29udHJvbGxlciBw
bHVnSW5WaWV3V2l0aEFyZ3VtZW50czphcmd1bWVudHMgZnJvbVBsdWdpblBhY2thZ2U6cGx1Z2lu
UGFja2FnZV07CiB9CiAKIGNsYXNzIFBsdWdpbldpZGdldCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVn
aW5WaWV3QmFzZSB7CkBAIC0xOTAyLDE4ICsxODkyLDE2IEBAIFJlZlB0cjxXZWJDb3JlOjpXaWRn
ZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50
U2l6CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6cGx1Z0luVmlld1dpdGhB
cmd1bWVudHM6KTsKICAgICBpZiAoW1t3ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxl
Y3RvcjpzZWxlY3Rvcl0pIHsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHM6Y3JlYXRlTlNBcnJheShwYXJhbVZhbHVl
cykuZ2V0KCkgZm9yS2V5czphdHRyaWJ1dGVLZXlzLmdldCgpXTsKLSAgICAgICAgTlNEaWN0aW9u
YXJ5ICphcmd1bWVudHMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5k
S2V5czoKKyAgICAgICAgYXV0byBhcmd1bWVudHMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgogICAgICAgICAgICAgYXR0cmlidXRlcywgV2Vi
UGx1Z0luQXR0cmlidXRlc0tleSwKICAgICAgICAgICAgIEAobG9hZE1hbnVhbGx5ID8gV2ViUGx1
Z0luTW9kZUZ1bGwgOiBXZWJQbHVnSW5Nb2RlRW1iZWQpLCBXZWJQbHVnSW5Nb2RlS2V5LAogICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOiFsb2FkTWFudWFsbHldLCBXZWJQbHVn
SW5TaG91bGRMb2FkTWFpblJlc291cmNlS2V5LAogICAgICAgICAgICAga2l0KCZlbGVtZW50KSwg
V2ViUGx1Z0luQ29udGFpbmluZ0VsZW1lbnRLZXksCiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGJlIHBhc3NpbmcgYmFzZSBVUkwsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM1MjE1Pi4KICAgICAgICAgICAgIHBsdWdpblVSTCwgV2ViUGx1Z0lu
QmFzZVVSTEtleSwgLy8gcGx1Z2luVVJMIG1pZ2h0IGJlIG5pbCwgc28gYWRkIGl0IGxhc3QKLSAg
ICAgICAgICAgIG5pbF07Ci0KLSAgICAgICAgTlNWaWV3ICp2aWV3ID0gQ2FsbFVJRGVsZWdhdGUo
d2ViVmlldywgc2VsZWN0b3IsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICBuaWxdKTsKIAotICAg
ICAgICBbYXJndW1lbnRzIHJlbGVhc2VdOworICAgICAgICBOU1ZpZXcgKnZpZXcgPSBDYWxsVUlE
ZWxlZ2F0ZSh3ZWJWaWV3LCBzZWxlY3RvciwgYXJndW1lbnRzLmdldCgpKTsKIAogICAgICAgICBp
ZiAodmlldykKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsdWdpbldpZGdldCh2
aWV3KSk7CkBAIC0xOTg3LDExICsxOTc1LDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6CiAg
ICAgICAgICAgICAgICAgcGx1Z2luUGFnZVVSTCA9IFVSTCgpOwogICAgICAgICAgICAgTlNTdHJp
bmcgKnBsdWdpbk5hbWUgPSBwbHVnaW5QYWNrYWdlID8gKE5TU3RyaW5nICopW3BsdWdpblBhY2th
Z2UgcGx1Z2luSW5mb10ubmFtZSA6IG5pbDsKIAotICAgICAgICAgICAgTlNFcnJvciAqZXJyb3Ig
PSBbW05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTplcnJvckNvZGUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRlbnRVUkw6cGx1Z2luVVJMIHBsdWdpblBhZ2VVUkw6cGx1Z2luUGFnZVVSTCBwbHVnaW5O
YW1lOnBsdWdpbk5hbWUgTUlNRVR5cGU6TUlNRVR5cGVdOworICAgICAgICAgICAgYXV0byBlcnJv
ciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6ZXJy
b3JDb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZW50VVJMOnBsdWdpblVSTCBwbHVnaW5QYWdlVVJMOnBsdWdpblBhZ2VV
UkwgcGx1Z2luTmFtZTpwbHVnaW5OYW1lIE1JTUVUeXBlOk1JTUVUeXBlXSk7CiAgICAgICAgICAg
ICBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5wbHVnSW5GYWlsZWRX
aXRoRXJyb3JGdW5jLCBbbV93ZWJGcmFtZS5nZXQoKSB3ZWJWaWV3XSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBAc2VsZWN0b3Iod2ViVmlldzpwbHVnSW5GYWlsZWRXaXRo
RXJyb3I6ZGF0YVNvdXJjZTopLCBlcnJvciwgW21fd2ViRnJhbWUuZ2V0KCkgX2RhdGFTb3VyY2Vd
KTsKLSAgICAgICAgICAgIFtlcnJvciByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBAc2VsZWN0b3Iod2ViVmlldzpwbHVnSW5GYWlsZWRXaXRoRXJyb3I6ZGF0
YVNvdXJjZTopLCBlcnJvci5nZXQoKSwgW21fd2ViRnJhbWUuZ2V0KCkgX2RhdGFTb3VyY2VdKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5tbQppbmRleCBiZGExNGI0YTI2YmJiYTc3MDRiZjU2ZGUxMTRmMDlhYzUyODhiNDg5Li4x
ZWQxNDM4YWM2NmUwNTVhMTJlZmYxODY3NTM5Y2I1MWQ5MmMxNzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5tbQpAQCAtMTIxLDEzICsxMjEsMTAgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNs
aWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtb
V2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjom
ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCldOwotICAgIFdlYkdlb2xvY2F0aW9u
UG9saWN5TGlzdGVuZXIqIGxpc3RlbmVyID0gW1tXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVy
IGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uOmdlb2xvY2F0aW9uXTsKKyAgICBhdXRvIHdlYk9y
aWdpbiA9IGFkb3B0TlMoW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29y
ZVNlY3VyaXR5T3JpZ2luOiZmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKV0pOwor
ICAgIGF1dG8gbGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5l
ciBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvbjpnZW9sb2NhdGlvbl0pOwogCi0gICAgQ2FsbFVJ
RGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2luLCBraXQoZnJhbWUpLCBsaXN0
ZW5lcik7Ci0KLSAgICBbd2ViT3JpZ2luIHJlbGVhc2VdOwotICAgIFtsaXN0ZW5lciByZWxlYXNl
XTsKKyAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4uZ2V0
KCksIGtpdChmcmFtZSksIGxpc3RlbmVyLmdldCgpKTsKICNlbHNlCiAgICAgUmV0YWluUHRyPFdl
Ykdlb2xvY2F0aW9uUHJvdmlkZXJJbml0aWFsaXphdGlvbkxpc3RlbmVyPiBsaXN0ZW5lciA9IGFk
b3B0TlMoW1tXZWJHZW9sb2NhdGlvblByb3ZpZGVySW5pdGlhbGl6YXRpb25MaXN0ZW5lciBhbGxv
Y10gaW5pdFdpdGhHZW9sb2NhdGlvbjpnZW9sb2NhdGlvbl0pOwogICAgIFtbbV93ZWJWaWV3IF9n
ZW9sb2NhdGlvblByb3ZpZGVyXSBpbml0aWFsaXplR2VvbG9jYXRpb25Gb3JXZWJWaWV3Om1fd2Vi
VmlldyBsaXN0ZW5lcjpsaXN0ZW5lci5nZXQoKV07CkBAIC0yMjQsMTIgKzIyMSwxMCBAQCAtICh2
b2lkKWluaXRpYWxpemF0aW9uQWxsb3dlZFdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3CiAgICAg
RnJhbWUqIGZyYW1lID0gbV9nZW9sb2NhdGlvbi0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm47Ci0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2Vi
U2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjomZnJh
bWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCldOwotICAgIFdlYkdlb2xvY2F0aW9uUG9s
aWN5TGlzdGVuZXIgKmxpc3RlbmVyID0gW1tXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIGFs
bG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uOm1fZ2VvbG9jYXRpb24uZ2V0KCkgZm9yV2ViVmlldzp3
ZWJWaWV3XTsKKyAgICBhdXRvIHdlYk9yaWdpbiA9IGFkb3B0TlMoW1tXZWJTZWN1cml0eU9yaWdp
biBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOiZmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKV0pOworICAgIGF1dG8gbGlzdGVuZXIgPSBhZG9wdE5TKFtbV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvbjptX2dl
b2xvY2F0aW9uLmdldCgpIGZvcldlYlZpZXc6d2ViVmlld10pOwogICAgIFNFTCBzZWxlY3RvciA9
IEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21P
cmlnaW46ZnJhbWU6bGlzdGVuZXI6KTsKLSAgICBDYWxsVUlEZWxlZ2F0ZSh3ZWJWaWV3LCBzZWxl
Y3Rvciwgd2ViT3JpZ2luLCBraXQoZnJhbWUpLCBsaXN0ZW5lcik7Ci0gICAgW3dlYk9yaWdpbiBy
ZWxlYXNlXTsKLSAgICBbbGlzdGVuZXIgcmVsZWFzZV07CisgICAgQ2FsbFVJRGVsZWdhdGUod2Vi
Vmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbi5nZXQoKSwga2l0KGZyYW1lKSwgbGlzdGVuZXIuZ2V0
KCkpOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tCmluZGV4IDY2ZjY2NzI3NzNmNjg2YzhmYzU5ZmIzYzljOTEzNTJjOWM1NWE3NTguLmEy
YzU0YjMzMmI1MTFhNmZkOTU0NGMyY2NiY2ZkYTZhMWY3YjEzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIGNvbnN0IENHRmxvYXQgaW5pdGlhbFdp
bmRvd0hlaWdodCA9IDY1MDsKIEBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxl
ciA6IE5TV2luZG93Q29udHJvbGxlciA8TlNXaW5kb3dEZWxlZ2F0ZSwgV2ViUG9saWN5RGVsZWdh
dGUsIFdlYlVJRGVsZWdhdGU+IHsKIEBwcml2YXRlCiAgICAgUmV0YWluUHRyPFdlYlZpZXc+IF9p
bnNwZWN0ZWRXZWJWaWV3OwotICAgIFdlYlZpZXcqIF9mcm9udGVuZFdlYlZpZXc7CisgICAgUmV0
YWluUHRyPFdlYlZpZXc+IF9mcm9udGVuZFdlYlZpZXc7CiAgICAgTmFrZWRQdHI8V2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ+IF9mcm9udGVuZENsaWVudDsKICAgICBXZWJJbnNwZWN0b3JDbGll
bnQqIF9pbnNwZWN0b3JDbGllbnQ7CiAgICAgQk9PTCBfYXR0YWNoZWRUb0luc3BlY3RlZFdlYlZp
ZXc7CkBAIC00NzUsNyArNDc1LDcgQEAgLSAoaWQpaW5pdAogCiAgICAgLy8gS2VlcCBwcmVmZXJl
bmNlcyBzZXBhcmF0ZSBmcm9tIHRoZSByZXN0IG9mIHRoZSBjbGllbnQsIG1ha2luZyBzdXJlIHdl
IGFyZSB1c2luZyBleHBlY3RlZCBwcmVmZXJlbmNlIHZhbHVlcy4KIAotICAgIFdlYlByZWZlcmVu
Y2VzICpwcmVmZXJlbmNlcyA9IFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdOworICAgIGF1
dG8gcHJlZmVyZW5jZXMgPSBhZG9wdE5TKFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsK
ICAgICBbcHJlZmVyZW5jZXMgc2V0QWxsb3dzQW5pbWF0ZWRJbWFnZXM6WUVTXTsKICAgICBbcHJl
ZmVyZW5jZXMgc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVy
ZW5jZXMgc2V0QXV0b3NhdmVzOk5PXTsKQEAgLTQ5NCwxNCArNDk0LDEyIEBAIC0gKGlkKWluaXQK
ICAgICBbcHJlZmVyZW5jZXMgc2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMczpZRVNdOwog
ICAgIFtwcmVmZXJlbmNlcyBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3k6V2ViQWxsb3dBbGxTdG9y
YWdlXTsKIAotICAgIF9mcm9udGVuZFdlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRdOwot
ICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldFByZWZlcmVuY2VzOnByZWZlcmVuY2VzXTsKKyAgICBf
ZnJvbnRlbmRXZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKKyAgICBb
X2Zyb250ZW5kV2ViVmlldyBzZXRQcmVmZXJlbmNlczpwcmVmZXJlbmNlcy5nZXQoKV07CiAgICAg
W19mcm9udGVuZFdlYlZpZXcgc2V0UHJvaGliaXRzTWFpbkZyYW1lU2Nyb2xsaW5nOllFU107CiAg
ICAgW19mcm9udGVuZFdlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpzZWxmXTsKICAgICBbX2Zyb250ZW5k
V2ViVmlldyBzZXRQb2xpY3lEZWxlZ2F0ZTpzZWxmXTsKIAotICAgIFtwcmVmZXJlbmNlcyByZWxl
YXNlXTsKLQogICAgIFtzZWxmIHNldFdpbmRvd0ZyYW1lQXV0b3NhdmVOYW1lOkAiV2ViIEluc3Bl
Y3RvciAyIl07CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC01MTQsMTYgKzUxMiwxNCBAQCAtIChp
ZClpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGlzVW5kZXJUZXN0
OihCT09MKWlzVW5kZXJUZXN0CiAgICAgX2luc3BlY3RlZFdlYlZpZXcgPSB3ZWJWaWV3OwogCiAg
ICAgTlNTdHJpbmcgKnBhZ2VQYXRoID0gaXNVbmRlclRlc3QgPyBbc2VsZiBpbnNwZWN0b3JUZXN0
UGFnZVBhdGhdIDogW3NlbGYgaW5zcGVjdG9yUGFnZVBhdGhdOwotICAgIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCA9IFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOiBwYWdlUGF0aF1dOwotICAgIFtbX2Zyb250ZW5kV2ViVmlldyBtYWluRnJhbWVd
IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotICAgIFtyZXF1ZXN0IHJlbGVhc2VdOworICAgIGF1dG8g
cmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VS
TCBmaWxlVVJMV2l0aFBhdGg6IHBhZ2VQYXRoXV0pOworICAgIFtbX2Zyb250ZW5kV2ViVmlldyBt
YWluRnJhbWVdIGxvYWRSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOwogCiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIFtfZnJvbnRlbmRXZWJWaWV3IHJlbGVhc2Vd
OwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtNTUyLDMyICs1NDgsMjkgQEAgLSAoTlNT
dHJpbmcgKilpbnNwZWN0b3JUZXN0UGFnZVBhdGgKIAogLSAoV2ViVmlldyAqKWZyb250ZW5kV2Vi
VmlldwogewotICAgIHJldHVybiBfZnJvbnRlbmRXZWJWaWV3OworICAgIHJldHVybiBfZnJvbnRl
bmRXZWJWaWV3LmdldCgpOwogfQogCiAtIChOU1dpbmRvdyAqKXdpbmRvdwogewotICAgIE5TV2lu
ZG93ICp3aW5kb3cgPSBbc3VwZXIgd2luZG93XTsKLSAgICBpZiAod2luZG93KQorICAgIGlmIChh
dXRvICp3aW5kb3cgPSBbc3VwZXIgd2luZG93XSkKICAgICAgICAgcmV0dXJuIHdpbmRvdzsKIAog
ICAgIE5TVUludGVnZXIgc3R5bGVNYXNrID0gTlNXaW5kb3dTdHlsZU1hc2tUaXRsZWQgfCBOU1dp
bmRvd1N0eWxlTWFza0Nsb3NhYmxlIHwgTlNXaW5kb3dTdHlsZU1hc2tNaW5pYXR1cml6YWJsZSB8
IE5TV2luZG93U3R5bGVNYXNrUmVzaXphYmxlIHwgTlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6ZUNv
bnRlbnRWaWV3OwotICAgIHdpbmRvdyA9IFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVu
dFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCBpbml0aWFsV2luZG93V2lkdGgsIGluaXRpYWxXaW5kb3dI
ZWlnaHQpIHN0eWxlTWFzazpzdHlsZU1hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVk
IGRlZmVyOk5PXTsKKyAgICBhdXRvIHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10g
aW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAsIGluaXRpYWxXaW5kb3dXaWR0aCwg
aW5pdGlhbFdpbmRvd0hlaWdodCkgc3R5bGVNYXNrOnN0eWxlTWFzayBiYWNraW5nOk5TQmFja2lu
Z1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKICAgICBbd2luZG93IHNldERlbGVnYXRlOnNlbGZd
OwogICAgIFt3aW5kb3cgc2V0TWluU2l6ZTpOU01ha2VTaXplKG1pbmltdW1XaW5kb3dXaWR0aCwg
bWluaW11bVdpbmRvd0hlaWdodCldOwogICAgIFt3aW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9y
Oihbd2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl0gfCBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlv
ckZ1bGxTY3JlZW5QcmltYXJ5KV07CiAKLSAgICBDR0Zsb2F0IGFwcHJveGltYXRlbHlIYWxmU2Ny
ZWVuU2l6ZSA9ICh3aW5kb3cuc2NyZWVuLmZyYW1lLnNpemUud2lkdGggLyAyKSAtIDQ7CisgICAg
Q0dGbG9hdCBhcHByb3hpbWF0ZWx5SGFsZlNjcmVlblNpemUgPSAoW3dpbmRvdyBzY3JlZW5dLmZy
YW1lLnNpemUud2lkdGggLyAyKSAtIDQ7CiAgICAgQ0dGbG9hdCBtaW5pbXVtRnVsbFNjcmVlbldp
ZHRoID0gc3RkOjptYXg8Q0dGbG9hdD4oNjM2LCBhcHByb3hpbWF0ZWx5SGFsZlNjcmVlblNpemUp
OwogICAgIFt3aW5kb3cgc2V0TWluRnVsbFNjcmVlbkNvbnRlbnRTaXplOk5TTWFrZVNpemUobWlu
aW11bUZ1bGxTY3JlZW5XaWR0aCwgbWluaW11bVdpbmRvd0hlaWdodCldOwogICAgIFt3aW5kb3cg
c2V0Q29sbGVjdGlvbkJlaGF2aW9yOihbd2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl0gfCBOU1dp
bmRvd0NvbGxlY3Rpb25CZWhhdmlvckZ1bGxTY3JlZW5BbGxvd3NUaWxpbmcpXTsKIAotICAgIHdp
bmRvdy50aXRsZWJhckFwcGVhcnNUcmFuc3BhcmVudCA9IFlFUzsKLQotICAgIFtzZWxmIHNldFdp
bmRvdzp3aW5kb3ddOwotICAgIFt3aW5kb3cgcmVsZWFzZV07CisgICAgW3dpbmRvdyBzZXRUaXRs
ZWJhckFwcGVhcnNUcmFuc3BhcmVudDogWUVTXTsKIAotICAgIHJldHVybiB3aW5kb3c7CisgICAg
W3NlbGYgc2V0V2luZG93OndpbmRvdy5nZXQoKV07CisgICAgcmV0dXJuIHdpbmRvdy5nZXQoKTsK
IH0KIAogLy8gTUFSSzogLQpAQCAtNjU5LDggKzY1Miw4IEBAIC0gKElCQWN0aW9uKXNob3dXaW5k
b3c6KGlkKXNlbmRlcgogICAgICAgICBXZWJGcmFtZVZpZXcgKmZyYW1lVmlldyA9IFtbX2luc3Bl
Y3RlZFdlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBmcmFtZVZpZXddOwogCiAgICAgICAgIFtfZnJv
bnRlbmRXZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgICAgICBbX2luc3BlY3RlZFdl
YlZpZXcuZ2V0KCkgYWRkU3VidmlldzpfZnJvbnRlbmRXZWJWaWV3IHBvc2l0aW9uZWQ6TlNXaW5k
b3dCZWxvdyByZWxhdGl2ZVRvOihOU1ZpZXcgKilmcmFtZVZpZXddOwotICAgICAgICBbW19pbnNw
ZWN0ZWRXZWJWaWV3LmdldCgpIHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOl9mcm9udGVuZFdl
YlZpZXddOworICAgICAgICBbX2luc3BlY3RlZFdlYlZpZXcuZ2V0KCkgYWRkU3VidmlldzpfZnJv
bnRlbmRXZWJWaWV3LmdldCgpIHBvc2l0aW9uZWQ6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOihO
U1ZpZXcgKilmcmFtZVZpZXddOworICAgICAgICBbW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIHdp
bmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOl9mcm9udGVuZFdlYlZpZXcuZ2V0KCldOwogCiAgICAg
ICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmlld1dpZHRoU2l6
YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUgfCBOU1ZpZXdNYXhZTWFyZ2luKV07CiAgICAgICAg
IFtmcmFtZVZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazooTlNWaWV3V2lkdGhTaXphYmxlIHwgTlNW
aWV3SGVpZ2h0U2l6YWJsZSB8IE5TVmlld01pbllNYXJnaW4pXTsKQEAgLTY3Myw3ICs2NjYsNyBA
QCAtIChJQkFjdGlvbilzaG93V2luZG93OihpZClzZW5kZXIKICAgICAgICAgW19mcm9udGVuZFdl
YlZpZXcgc2V0RnJhbWU6W2NvbnRlbnRWaWV3IGZyYW1lXV07CiAgICAgICAgIFtfZnJvbnRlbmRX
ZWJWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hl
aWdodFNpemFibGUpXTsKICAgICAgICAgW19mcm9udGVuZFdlYlZpZXcgcmVtb3ZlRnJvbVN1cGVy
dmlld107Ci0gICAgICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol9mcm9udGVuZFdlYlZpZXdd
OworICAgICAgICBbY29udGVudFZpZXcgYWRkU3VidmlldzpfZnJvbnRlbmRXZWJWaWV3LmdldCgp
XTsKIAogICAgICAgICBbc3VwZXIgc2hvd1dpbmRvdzpuaWxdOwogICAgIH0KQEAgLTc5Niw4ICs3
ODksOCBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgcnVuT3BlblBhbmVsRm9y
RmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjooaQogICAgICAgICBbcmVzdWx0TGlzdGVuZXIg
Y2hvb3NlRmlsZW5hbWVzOmZpbGVuYW1lc107CiAgICAgfTsKIAotICAgIGlmIChfZnJvbnRlbmRX
ZWJWaWV3LndpbmRvdykKLSAgICAgICAgW3BhbmVsIGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzpf
ZnJvbnRlbmRXZWJWaWV3LndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxl
cl07CisgICAgaWYgKFtfZnJvbnRlbmRXZWJWaWV3IHdpbmRvd10pCisgICAgICAgIFtwYW5lbCBi
ZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6W19mcm9udGVuZFdlYlZpZXcgd2luZG93XSBjb21wbGV0
aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihbcGFuZWwgcnVuTW9kYWxdKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVu
dC5tbQppbmRleCBhYjEyMzg5NzcyMzlhMjRkN2YzMGRiNjU4ZTgzYTI2OTVjNDdhYmM4Li5kOGU3
NDhiNTc5Y2JmZDZmNDI1YThkNDJhN2E5NDRiNmRlMmNjZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50Lm1tCkBAIC0xMzAsMTEgKzEzMCw5IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uQ2xp
ZW50OjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBX
CiAKICAgICBtX2V2ZXJSZXF1ZXN0ZWRQZXJtaXNzaW9uID0gdHJ1ZTsKIAotICAgIFdlYlNlY3Vy
aXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdp
dGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKV07CisgICAg
YXV0byB3ZWJPcmlnaW4gPSBhZG9wdE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0
V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpXSk7CiAg
ICAgCi0gICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2luLCBs
aXN0ZW5lcik7Ci0gICAgCi0gICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKKyAgICBDYWxsVUlEZWxl
Z2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4uZ2V0KCksIGxpc3RlbmVyKTsKIH0K
IAogYm9vbCBXZWJOb3RpZmljYXRpb25DbGllbnQ6Omhhc1BlbmRpbmdQZXJtaXNzaW9uUmVxdWVz
dHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0CkBAIC0xNDcsOSArMTQ1LDggQEAgYm9v
bCBXZWJOb3RpZmljYXRpb25DbGllbnQ6Omhhc1BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCoKIHZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpyZXF1ZXN0
UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotICAgIFdlYk5vdGlmaWNhdGlvblBvbGljeUxpc3RlbmVyICpsaXN0
ZW5lciA9IFtbV2ViTm90aWZpY2F0aW9uUG9saWN5TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ2Fs
bGJhY2s6V1RGTW92ZShjYWxsYmFjayldOwotICAgIHJlcXVlc3RQZXJtaXNzaW9uKGNvbnRleHQs
IGxpc3RlbmVyKTsKLSAgICBbbGlzdGVuZXIgcmVsZWFzZV07CisgICAgYXV0byBsaXN0ZW5lciA9
IGFkb3B0TlMoW1tXZWJOb3RpZmljYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhD
YWxsYmFjazpXVEZNb3ZlKGNhbGxiYWNrKV0pOworICAgIHJlcXVlc3RQZXJtaXNzaW9uKGNvbnRl
eHQsIGxpc3RlbmVyLmdldCgpKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAK
QEAgLTE1OSw5ICsxNTYsOCBAQCBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gV2ViTm90
aWZpY2F0aW9uQ2xpZW50OjpjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlYwogICAgICAgICByZXR1
cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uOjpEZW5pZWQ7CiAgICAgaWYgKCFbW21f
d2ViVmlldyBwcmVmZXJlbmNlc10gbm90aWZpY2F0aW9uc0VuYWJsZWRdKQogICAgICAgICByZXR1
cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uOjpEZW5pZWQ7Ci0gICAgV2ViU2VjdXJp
dHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0
aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpXTsKLSAgICBX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uIHBlcm1pc3Npb24gPSBbW21fd2ViVmlldyBfbm90aWZp
Y2F0aW9uUHJvdmlkZXJdIHBvbGljeUZvck9yaWdpbjp3ZWJPcmlnaW5dOwotICAgIFt3ZWJPcmln
aW4gcmVsZWFzZV07CisgICAgYXV0byB3ZWJPcmlnaW4gPSBhZG9wdE5TKFtbV2ViU2VjdXJpdHlP
cmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpjb250ZXh0LT5zZWN1
cml0eU9yaWdpbigpXSk7CisgICAgV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbiBwZXJtaXNzaW9u
ID0gW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSBwb2xpY3lGb3JPcmlnaW46d2Vi
T3JpZ2luLmdldCgpXTsKICAgICBzd2l0Y2ggKHBlcm1pc3Npb24pIHsKICAgICAgICAgY2FzZSBX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uQWxsb3dlZDoKICAgICAgICAgICAgIHJldHVybiBOb3Rp
ZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb246OkdyYW50ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0KaW5kZXggMjU5YzdlOWVhNmQ1MWJmMGM3NDY5
OTdkZmJkYTc5N2MxZWIwODhhNy4uMWZmMmY1NDYyZDY1MjMzNjA4ZDZhYWE1MTUyZjQ2ZGIxZmEw
YjY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJBcmNo
aXZlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5t
bQpAQCAtNTMsOSArNTMsOSBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJTdWJmcmFtZUFy
Y2hpdmVzS2V5ID0gQCJXZWJTdWJmcmFtZUFyY2hpdmVzIjsKIAogQGludGVyZmFjZSBXZWJBcmNo
aXZlUHJpdmF0ZSA6IE5TT2JqZWN0IHsKIEBwdWJsaWMKLSAgICBXZWJSZXNvdXJjZSAqY2FjaGVk
TWFpblJlc291cmNlOwotICAgIE5TQXJyYXkgKmNhY2hlZFN1YnJlc291cmNlczsKLSAgICBOU0Fy
cmF5ICpjYWNoZWRTdWJmcmFtZUFyY2hpdmVzOworICAgIFJldGFpblB0cjxXZWJSZXNvdXJjZT4g
Y2FjaGVkTWFpblJlc291cmNlOworICAgIFJldGFpblB0cjxOU0FycmF5PiBjYWNoZWRTdWJyZXNv
dXJjZXM7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IGNhY2hlZFN1YmZyYW1lQXJjaGl2ZXM7CiBA
cHJpdmF0ZQogICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZTsKIH0KQEAg
LTExMiwxMCArMTEyLDYgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgaWYgKFdlYkNvcmVPYmpDU2No
ZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtXZWJBcmNoaXZlUHJpdmF0ZSBjbGFzc10sIHNl
bGYpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgW2NhY2hlZE1haW5SZXNvdXJjZSByZWxl
YXNlXTsKLSAgICBbY2FjaGVkU3VicmVzb3VyY2VzIHJlbGVhc2VdOwotICAgIFtjYWNoZWRTdWJm
cmFtZUFyY2hpdmVzIHJlbGVhc2VdOwotICAgIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApA
QCAtMTU2LDIxICsxNTIsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWFpblJlc291cmNl
OihXZWJSZXNvdXJjZSAqKW1haW5SZXNvdXJjZSBzdWJyZXNvdXJjZXM6KE4KIAogICAgIF9wcml2
YXRlID0gW1tXZWJBcmNoaXZlUHJpdmF0ZSBhbGxvY10gaW5pdF07CiAKLSAgICBfcHJpdmF0ZS0+
Y2FjaGVkTWFpblJlc291cmNlID0gW21haW5SZXNvdXJjZSByZXRhaW5dOworICAgIF9wcml2YXRl
LT5jYWNoZWRNYWluUmVzb3VyY2UgPSBtYWluUmVzb3VyY2U7CiAgICAgaWYgKCFfcHJpdmF0ZS0+
Y2FjaGVkTWFpblJlc291cmNlKSB7CiAgICAgICAgIFtzZWxmIHJlbGVhc2VdOwogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIH0KICAgICAKICAgICBpZiAoIXN1YnJlc291cmNlcyB8fCBpc0FycmF5
T2ZDbGFzcyhzdWJyZXNvdXJjZXMsIFtXZWJSZXNvdXJjZSBjbGFzc10pKQotICAgICAgICBfcHJp
dmF0ZS0+Y2FjaGVkU3VicmVzb3VyY2VzID0gW3N1YnJlc291cmNlcyByZXRhaW5dOworICAgICAg
ICBfcHJpdmF0ZS0+Y2FjaGVkU3VicmVzb3VyY2VzID0gc3VicmVzb3VyY2VzOwogICAgIGVsc2Ug
ewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAK
ICAgICBpZiAoIXN1YmZyYW1lQXJjaGl2ZXMgfHwgaXNBcnJheU9mQ2xhc3Moc3ViZnJhbWVBcmNo
aXZlcywgW1dlYkFyY2hpdmUgY2xhc3NdKSkKLSAgICAgICAgX3ByaXZhdGUtPmNhY2hlZFN1YmZy
YW1lQXJjaGl2ZXMgPSBbc3ViZnJhbWVBcmNoaXZlcyByZXRhaW5dOworICAgICAgICBfcHJpdmF0
ZS0+Y2FjaGVkU3ViZnJhbWVBcmNoaXZlcyA9IHN1YmZyYW1lQXJjaGl2ZXM7CiAgICAgZWxzZSB7
CiAgICAgICAgIFtzZWxmIHJlbGVhc2VdOwogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjY5LDEx
ICsyNjUsMTIgQEAgLSAoV2ViUmVzb3VyY2UgKiltYWluUmVzb3VyY2UKICAgICBpZiAoIV9wcml2
YXRlLT5jYWNoZWRNYWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvcmVBcmNoaXZl
ID0gW19wcml2YXRlIGNvcmVBcmNoaXZlXSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIG1haW5S
ZXNvdXJjZSA9IGNvcmVBcmNoaXZlLT5tYWluUmVzb3VyY2UoKSkKLSAgICAgICAgICAgICAgICBf
cHJpdmF0ZS0+Y2FjaGVkTWFpblJlc291cmNlID0gW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRX
aXRoQ29yZVJlc291cmNlOiptYWluUmVzb3VyY2VdOworICAgICAgICAgICAgICAgIF9wcml2YXRl
LT5jYWNoZWRNYWluUmVzb3VyY2UgPSBhZG9wdE5TKFtbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0
V2l0aENvcmVSZXNvdXJjZToqbWFpblJlc291cmNlXSk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
Ci0gICAgcmV0dXJuIFtbX3ByaXZhdGUtPmNhY2hlZE1haW5SZXNvdXJjZSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIGNhY2hlZE1haW5SZXNvdXJjZUNvcHkgPSBfcHJpdmF0ZS0+Y2Fj
aGVkTWFpblJlc291cmNlOworICAgIHJldHVybiBjYWNoZWRNYWluUmVzb3VyY2VDb3B5LmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKE5TQXJyYXkgKilzdWJyZXNvdXJjZXMKQEAgLTI4NSwxNiArMjgy
LDIwIEBAIC0gKE5TQXJyYXkgKilzdWJyZXNvdXJjZXMKICAgICBpZiAoIV9wcml2YXRlLT5jYWNo
ZWRTdWJyZXNvdXJjZXMpIHsKICAgICAgICAgYXV0byBjb3JlQXJjaGl2ZSA9IFtfcHJpdmF0ZSBj
b3JlQXJjaGl2ZV07CiAgICAgICAgIGlmICghY29yZUFyY2hpdmUpCi0gICAgICAgICAgICBfcHJp
dmF0ZS0+Y2FjaGVkU3VicmVzb3VyY2VzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0XTsKKyAgICAg
ICAgICAgIF9wcml2YXRlLT5jYWNoZWRTdWJyZXNvdXJjZXMgPSBhZG9wdE5TKFtbTlNBcnJheSBh
bGxvY10gaW5pdF0pOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIF9wcml2YXRlLT5jYWNo
ZWRTdWJyZXNvdXJjZXMgPSBjcmVhdGVOU0FycmF5KGNvcmVBcmNoaXZlLT5zdWJyZXNvdXJjZXMo
KSwgW10gKGF1dG8mIHN1YnJlc291cmNlKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0
TlMoW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNlOnN1YnJlc291cmNl
LmdldCgpXSk7Ci0gICAgICAgICAgICB9KS5sZWFrUmVmKCk7CisgICAgICAgICAgICB9KTsKICAg
ICAgICAgfQogICAgIH0KICAgICAvLyBNYWludGFpbiB0aGUgV2ViS2l0IDMgYmVoYXZpb3Igb2Yg
dGhpcyBBUEksIHdoaWNoIGlzIGRvY3VtZW50ZWQgYW5kCiAgICAgLy8gcmVsaWVkIHVwb24gYnkg
c29tZSBjbGllbnRzLCBvZiByZXR1cm5pbmcgbmlsIGlmIHRoZXJlIGFyZSBubyBzdWJyZXNvdXJj
ZXMuCi0gICAgcmV0dXJuIFtfcHJpdmF0ZS0+Y2FjaGVkU3VicmVzb3VyY2VzIGNvdW50XSA/IFtb
X3ByaXZhdGUtPmNhY2hlZFN1YnJlc291cmNlcyByZXRhaW5dIGF1dG9yZWxlYXNlXSA6IG5pbDsK
KyAgICBpZiAoIVtfcHJpdmF0ZS0+Y2FjaGVkU3VicmVzb3VyY2VzIGNvdW50XSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgIGF1dG8gY2FjaGVkU3VicmVzb3VyY2VzQ29weSA9IF9wcml2YXRl
LT5jYWNoZWRTdWJyZXNvdXJjZXM7CisgICAgcmV0dXJuIGNhY2hlZFN1YnJlc291cmNlc0NvcHku
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNBcnJheSAqKXN1YmZyYW1lQXJjaGl2ZXMKQEAgLTMw
NiwxNSArMzA3LDE2IEBAIC0gKE5TQXJyYXkgKilzdWJmcmFtZUFyY2hpdmVzCiAgICAgaWYgKCFf
cHJpdmF0ZS0+Y2FjaGVkU3ViZnJhbWVBcmNoaXZlcykgewogICAgICAgICBhdXRvKiBjb3JlQXJj
aGl2ZSA9IFtfcHJpdmF0ZSBjb3JlQXJjaGl2ZV07CiAgICAgICAgIGlmICghY29yZUFyY2hpdmUp
Ci0gICAgICAgICAgICBfcHJpdmF0ZS0+Y2FjaGVkU3ViZnJhbWVBcmNoaXZlcyA9IFtbTlNBcnJh
eSBhbGxvY10gaW5pdF07CisgICAgICAgICAgICBfcHJpdmF0ZS0+Y2FjaGVkU3ViZnJhbWVBcmNo
aXZlcyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgX3ByaXZhdGUtPmNhY2hlZFN1YmZyYW1lQXJjaGl2ZXMgPSBjcmVhdGVOU0Fy
cmF5KGNvcmVBcmNoaXZlLT5zdWJmcmFtZUFyY2hpdmVzKCksIFtdIChhdXRvJiBhcmNoaXZlKSB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBcmNoaXZlIGFsbG9jXSBfaW5p
dFdpdGhDb3JlTGVnYWN5V2ViQXJjaGl2ZTpzdGF0aWNfY2FzdDxMZWdhY3lXZWJBcmNoaXZlKj4o
YXJjaGl2ZS5wdHIoKSldKTsKLSAgICAgICAgICAgIH0pLmxlYWtSZWYoKTsKKyAgICAgICAgICAg
IH0pOwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHJldHVybiBbW19wcml2YXRlLT5jYWNo
ZWRTdWJmcmFtZUFyY2hpdmVzIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gY2FjaGVk
U3ViZnJhbWVBcmNoaXZlc0NvcHkgPSBfcHJpdmF0ZS0+Y2FjaGVkU3ViZnJhbWVBcmNoaXZlczsK
KyAgICByZXR1cm4gY2FjaGVkU3ViZnJhbWVBcmNoaXZlc0NvcHkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoTlNEYXRhICopZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDFiNTk3MTY0Njg1M2E2ZDE2YmE2Mjg2ZTBjYTNmYjNm
YmRmMTNmNDkuLjY0OGE0NDBiZTI0M2FhOTdiMDlmNzIzZDM2NDcwZjJhODhjYjk1NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAg
LTMxMiwxMyArMzEyLDEyIEBAIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFn
bWVudFdpdGhBcmNoaXZlOihXZWJBcmNoaXZlICopYXJjaGl2ZQogICAgIGlmIChtYWluUmVzb3Vy
Y2UpIHsKICAgICAgICAgTlNTdHJpbmcgKk1JTUVUeXBlID0gW21haW5SZXNvdXJjZSBNSU1FVHlw
ZV07CiAgICAgICAgIGlmIChbV2ViVmlldyBjYW5TaG93TUlNRVR5cGVBc0hUTUw6TUlNRVR5cGVd
KSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqbWFya3VwU3RyaW5nID0gW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhEYXRhOlttYWluUmVzb3VyY2UgZGF0YV0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddOworICAgICAgICAgICAgYXV0byBtYXJrdXBTdHJpbmcgPSBhZG9wdE5TKFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpbbWFpblJlc291cmNlIGRhdGFdIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBzZWVtcyBwb29y
IGZvcm0gdG8gZG8gdGhpcyBhcyBhIHNpZGUgZWZmZWN0IG9mIGdldHRpbmcgYSBkb2N1bWVudCBm
cmFnbWVudAogICAgICAgICAgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5hZGRBbGxB
cmNoaXZlUmVzb3VyY2VzKCpbYXJjaGl2ZSBfY29yZUxlZ2FjeVdlYkFyY2hpdmVdKTsKIAotICAg
ICAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbW3NlbGYgd2ViRnJhbWVd
IF9kb2N1bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzptYXJrdXBTdHJpbmcgYmFzZVVSTFN0
cmluZzpbW21haW5SZXNvdXJjZSBVUkxdIF93ZWJfb3JpZ2luYWxEYXRhQXNTdHJpbmddXTsKLSAg
ICAgICAgICAgIFttYXJrdXBTdHJpbmcgcmVsZWFzZV07CisgICAgICAgICAgICBET01Eb2N1bWVu
dEZyYWdtZW50ICpmcmFnbWVudCA9IFtbc2VsZiB3ZWJGcmFtZV0gX2RvY3VtZW50RnJhZ21lbnRX
aXRoTWFya3VwU3RyaW5nOm1hcmt1cFN0cmluZy5nZXQoKSBiYXNlVVJMU3RyaW5nOltbbWFpblJl
c291cmNlIFVSTF0gX3dlYl9vcmlnaW5hbERhdGFBc1N0cmluZ11dOwogICAgICAgICAgICAgcmV0
dXJuIGZyYWdtZW50OwogICAgICAgICB9IGVsc2UgaWYgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShNSU1FVHlwZSkpIHsKICAgICAgICAgICAgIHJl
dHVybiBbc2VsZiBfZG9jdW1lbnRGcmFnbWVudFdpdGhJbWFnZVJlc291cmNlOm1haW5SZXNvdXJj
ZV07CkBAIC0zODUsOSArMzg0LDggQEAgLSAodm9pZClfbWFrZVJlcHJlc2VudGF0aW9uCiAKICAg
ICAvLyBDaGVjayBpZiB0aGUgZGF0YSBzb3VyY2Ugd2FzIGFscmVhZHkgYm91bmQ/CiAgICAgaWYg
KCFbW3NlbGYgcmVwcmVzZW50YXRpb25dIGlzS2luZE9mQ2xhc3M6cmVwQ2xhc3NdKSB7Ci0gICAg
ICAgIGlkIG5ld1JlcCA9IHJlcENsYXNzICE9IG5pbCA/IFsoTlNPYmplY3QgKilbcmVwQ2xhc3Mg
YWxsb2NdIGluaXRdIDogbmlsOwotICAgICAgICBbc2VsZiBfc2V0UmVwcmVzZW50YXRpb246KGlk
IDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPiluZXdSZXBdOwotICAgICAgICBbbmV3UmVwIHJl
bGVhc2VdOworICAgICAgICBSZXRhaW5QdHI8aWQ+IG5ld1JlcCA9IHJlcENsYXNzICE9IG5pbCA/
IGFkb3B0TlMoWyhOU09iamVjdCAqKVtyZXBDbGFzcyBhbGxvY10gaW5pdF0pIDogbmlsOworICAg
ICAgICBbc2VsZiBfc2V0UmVwcmVzZW50YXRpb246KGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0
aW9uPiluZXdSZXAuZ2V0KCldOwogICAgIH0KIAogICAgIGlkPFdlYkRvY3VtZW50UmVwcmVzZW50
YXRpb24+IHJlcHJlc2VudGF0aW9uID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+cmVwcmVzZW50YXRp
b24uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpp
bmRleCBkZTI0OTY4OGFiNjhmNzk4OTAyMDg0NzhmNmFjNDM0ZmVjYTA5ODI1Li5hNGFlYzU5ZTQx
MmZmZDljOWE3YmM4ZTZlNTBiM2IwNjM3OWE5ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTE4OSwxNSArMTg5LDExIEBAIEBpbXBsZW1lbnRh
dGlvbiBXZWJGcmFtZVByaXZhdGUKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW3dlYkZyYW1l
VmlldyByZWxlYXNlXTsKLQogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClzZXRX
ZWJGcmFtZVZpZXc6KFdlYkZyYW1lVmlldyAqKXYKIHsgCi0gICAgW3YgcmV0YWluXTsKLSAgICBb
d2ViRnJhbWVWaWV3IHJlbGVhc2VdOwogICAgIHdlYkZyYW1lVmlldyA9IHY7CiB9CiAKQEAgLTMw
Niw5ICszMDIsOCBAQCArIChSZWY8V2ViQ29yZTo6RnJhbWU+KV9jcmVhdGVGcmFtZVdpdGhQYWdl
OihXZWJDb3JlOjpQYWdlKilwYWdlIGZyYW1lTmFtZTooY29ucwogewogICAgIFdlYlZpZXcgKndl
YlZpZXcgPSBraXQocGFnZSk7CiAKLSAgICBXZWJGcmFtZSAqZnJhbWUgPSBbW3NlbGYgYWxsb2Nd
IF9pbml0V2l0aFdlYkZyYW1lVmlldzpmcmFtZVZpZXcgd2ViVmlldzp3ZWJWaWV3XTsKLSAgICBh
dXRvIGNvcmVGcmFtZSA9IFdlYkNvcmU6OkZyYW1lOjpjcmVhdGUocGFnZSwgb3duZXJFbGVtZW50
LCBtYWtlVW5pcXVlUmVmPFdlYkZyYW1lTG9hZGVyQ2xpZW50PihmcmFtZSkpOwotICAgIFtmcmFt
ZSByZWxlYXNlXTsKKyAgICBSZXRhaW5QdHI8V2ViRnJhbWU+IGZyYW1lID0gYWRvcHROUyhbW3Nl
bGYgYWxsb2NdIF9pbml0V2l0aFdlYkZyYW1lVmlldzpmcmFtZVZpZXcgd2ViVmlldzp3ZWJWaWV3
XSk7CisgICAgYXV0byBjb3JlRnJhbWUgPSBXZWJDb3JlOjpGcmFtZTo6Y3JlYXRlKHBhZ2UsIG93
bmVyRWxlbWVudCwgbWFrZVVuaXF1ZVJlZjxXZWJGcmFtZUxvYWRlckNsaWVudD4oZnJhbWUuZ2V0
KCkpKTsKICAgICBmcmFtZS0+X3ByaXZhdGUtPmNvcmVGcmFtZSA9IGNvcmVGcmFtZS5wdHIoKTsK
IAogICAgIGNvcmVGcmFtZS5nZXQoKS50cmVlKCkuc2V0TmFtZShuYW1lKTsKQEAgLTMyOCwxMCAr
MzIzLDkgQEAgKyAodm9pZClfY3JlYXRlTWFpbkZyYW1lV2l0aFBhZ2U6KFdlYkNvcmU6OlBhZ2Uq
KXBhZ2UgZnJhbWVOYW1lOihjb25zdCBTdHJpbmcmKW4KIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3
ID0ga2l0KHBhZ2UpOwogCi0gICAgV2ViRnJhbWUgKmZyYW1lID0gW1tzZWxmIGFsbG9jXSBfaW5p
dFdpdGhXZWJGcmFtZVZpZXc6ZnJhbWVWaWV3IHdlYlZpZXc6d2ViVmlld107CisgICAgUmV0YWlu
UHRyPFdlYkZyYW1lPiBmcmFtZSA9IGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhXZWJG
cmFtZVZpZXc6ZnJhbWVWaWV3IHdlYlZpZXc6d2ViVmlld10pOwogICAgIGZyYW1lLT5fcHJpdmF0
ZS0+Y29yZUZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOwotICAgIHN0YXRpY19jYXN0PFdlYkZy
YW1lTG9hZGVyQ2xpZW50Jj4ocGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkpLnNl
dFdlYkZyYW1lKCpmcmFtZSk7Ci0gICAgW2ZyYW1lIHJlbGVhc2VdOworICAgIHN0YXRpY19jYXN0
PFdlYkZyYW1lTG9hZGVyQ2xpZW50Jj4ocGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50
KCkpLnNldFdlYkZyYW1lKCpmcmFtZS5nZXQoKSk7CiAKICAgICBwYWdlLT5tYWluRnJhbWUoKS50
cmVlKCkuc2V0TmFtZShuYW1lKTsKICAgICBwYWdlLT5tYWluRnJhbWUoKS5pbml0KCk7CkBAIC0z
NTYsMTIgKzM1MCwxMSBAQCArICh2b2lkKV9jcmVhdGVNYWluRnJhbWVXaXRoU2ltcGxlSFRNTERv
Y3VtZW50V2l0aFBhZ2U6KFdlYkNvcmU6OlBhZ2UqKXBhZ2UgZnJhbQogewogICAgIFdlYlZpZXcg
KndlYlZpZXcgPSBraXQocGFnZSk7CiAgICAgCi0gICAgV2ViRnJhbWUgKmZyYW1lID0gW1tzZWxm
IGFsbG9jXSBfaW5pdFdpdGhXZWJGcmFtZVZpZXc6ZnJhbWVWaWV3IHdlYlZpZXc6d2ViVmlld107
Ci0gICAgZnJhbWUtPl9wcml2YXRlLT5jb3JlRnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7Ci0g
ICAgc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQmPihwYWdlLT5tYWluRnJhbWUoKS5s
b2FkZXIoKS5jbGllbnQoKSkuc2V0V2ViRnJhbWUoKmZyYW1lKTsKLSAgICBbZnJhbWUgcmVsZWFz
ZV07CisgICAgYXV0byBmcmFtZSA9IGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhXZWJG
cmFtZVZpZXc6ZnJhbWVWaWV3IHdlYlZpZXc6d2ViVmlld10pOworICAgIGZyYW1lLmdldCgpLT5f
cHJpdmF0ZS0+Y29yZUZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOworICAgIHN0YXRpY19jYXN0
PFdlYkZyYW1lTG9hZGVyQ2xpZW50Jj4ocGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50
KCkpLnNldFdlYkZyYW1lKCpmcmFtZS5nZXQoKSk7CiAKLSAgICBmcmFtZS0+X3ByaXZhdGUtPmNv
cmVGcmFtZS0+aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnQoc3R5bGUsIGNyZWF0ZVVuaXF1ZVdl
YkRhdGFVUkwoKSk7CisgICAgZnJhbWUuZ2V0KCktPl9wcml2YXRlLT5jb3JlRnJhbWUtPmluaXRX
aXRoU2ltcGxlSFRNTERvY3VtZW50KHN0eWxlLCBjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCkpOwog
fQogI2VuZGlmCiAKQEAgLTE3MzEsNyArMTcyNCw3IEBAIC0gKHZvaWQpZ2V0RGljdGF0aW9uUmVz
dWx0UmFuZ2VzOihOU0FycmF5ICoqKW91dFJhbmdlcyBhbmRNZXRhZGF0YXM6KE5TQXJyYXkgKiop
CiAgICAgYXV0byYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwog
ICAgIGF1dG8gcm9vdCA9IHNlbGVjdGlvbi5pc05vbmUoKSA/IGZyYW1lLT5kb2N1bWVudCgpLT5i
b2R5T3JGcmFtZXNldCgpIDogc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIAotICAg
IERPTVJhbmdlICpwcmV2aW91c0RPTVJhbmdlID0gbmlsOworICAgIFJldGFpblB0cjxET01SYW5n
ZT4gcHJldmlvdXNET01SYW5nZTsKICAgICBpZCBwcmV2aW91c01ldGFkYXRhID0gbmlsOwogCiAg
ICAgZm9yIChXZWJDb3JlOjpOb2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IFdlYkNvcmU6
Ok5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKSB7CkBAIC0xNzU4LDEzICsxNzUxLDExIEBAIC0g
KHZvaWQpZ2V0RGljdGF0aW9uUmVzdWx0UmFuZ2VzOihOU0FycmF5ICoqKW91dFJhbmdlcyBhbmRN
ZXRhZGF0YXM6KE5TQXJyYXkgKiopCiAgICAgICAgICAgICAgICAgLy8gSXQgaXMgcG9zc2libGUg
Zm9yIGEgRG9jdW1lbnRNYXJrZXIgdG8gYmUgc3BsaXQgYnkgZWRpdGluZy4gQWRqYWNlbnQgbWFy
a2VycyB3aXRoIHRoZQogICAgICAgICAgICAgICAgIC8vIHRoZSBzYW1lIG1ldGFkYXRhIGFyZSBm
b3IgdGhlIHNhbWUgcmVzdWx0LiBTbyBjb21iaW5lIHRoZWlyIHJhbmdlcy4KICAgICAgICAgICAg
ICAgICBBU1NFUlQocHJldmlvdXNET01SYW5nZSA9PSBbcmFuZ2VzIGxhc3RPYmplY3RdKTsKLSAg
ICAgICAgICAgICAgICBbcHJldmlvdXNET01SYW5nZSByZXRhaW5dOwogICAgICAgICAgICAgICAg
IFtyYW5nZXMgcmVtb3ZlTGFzdE9iamVjdF07CiAgICAgICAgICAgICAgICAgRE9NTm9kZSAqc3Rh
cnRDb250YWluZXIgPSBbZG9tUmFuZ2Ugc3RhcnRDb250YWluZXJdOwogICAgICAgICAgICAgICAg
IGludCBzdGFydE9mZnNldCA9IFtkb21SYW5nZSBzdGFydE9mZnNldF07CiAgICAgICAgICAgICAg
ICAgW3ByZXZpb3VzRE9NUmFuZ2Ugc2V0RW5kOnN0YXJ0Q29udGFpbmVyIG9mZnNldDpzdGFydE9m
ZnNldF07Ci0gICAgICAgICAgICAgICAgW3JhbmdlcyBhZGRPYmplY3Q6cHJldmlvdXNET01SYW5n
ZV07Ci0gICAgICAgICAgICAgICAgW3ByZXZpb3VzRE9NUmFuZ2UgcmVsZWFzZV07CisgICAgICAg
ICAgICAgICAgW3JhbmdlcyBhZGRPYmplY3Q6cHJldmlvdXNET01SYW5nZS5nZXQoKV07CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yMzkwLDcgKzIzODEsNyBAQCAtIChOU1N0
cmluZyAqKW5hbWUKIAogLSAoV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3CiB7Ci0gICAgcmV0dXJu
IF9wcml2YXRlLT53ZWJGcmFtZVZpZXc7CisgICAgcmV0dXJuIF9wcml2YXRlLT53ZWJGcmFtZVZp
ZXcuZ2V0KCk7CiB9CiAKIC0gKFdlYlZpZXcgKil3ZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCmluZGV4IDMwYzQ4ZDE1ZTlm
NjE3OWE5OTVkMTlhOTNlN2ExYjIyZDFhMzAzMTAuLjY5YTgxMmRhZjI0YzJmNmM3NjQ4OGU4ZDM4
ZjMxZjAwNmUzZTI3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWVJbnRlcm5hbC5oCkBAIC04Nyw3ICs4Nyw3IEBAIFdlYlZpZXcgKmdldFdlYlZp
ZXcoV2ViRnJhbWUgKndlYkZyYW1lKTsKIEBpbnRlcmZhY2UgV2ViRnJhbWVQcml2YXRlIDogTlNP
YmplY3QgewogQHB1YmxpYwogICAgIE5ha2VkUHRyPFdlYkNvcmU6OkZyYW1lPiBjb3JlRnJhbWU7
Ci0gICAgV2ViRnJhbWVWaWV3ICp3ZWJGcmFtZVZpZXc7CisgICAgUmV0YWluUHRyPFdlYkZyYW1l
Vmlldz4gd2ViRnJhbWVWaWV3OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTY3JpcHREZWJ1Z2dl
cj4gc2NyaXB0RGVidWdnZXI7CiAgICAgaWQgaW50ZXJuYWxMb2FkRGVsZWdhdGU7CiAgICAgQk9P
TCBzaG91bGRDcmVhdGVSZW5kZXJlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWVWaWV3Lm1tCmluZGV4IDBmYjA1NTA3MWYwZGQ0Y2FlZDNmNjExZGU0NDdi
ZjczNDYwMWE0ZjYuLmI2MTZmYTdiZjY0ZTRkOTc5ZmJkMDY4MWFiYjNhZjAzOTI2M2E4NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCkBA
IC0xMTAsNyArMTEwLDcgQEAgQGVuZAogQGludGVyZmFjZSBXZWJGcmFtZVZpZXdQcml2YXRlIDog
TlNPYmplY3QgewogQHB1YmxpYwogICAgIFdlYkZyYW1lICp3ZWJGcmFtZTsKLSAgICBXZWJEeW5h
bWljU2Nyb2xsQmFyc1ZpZXcgKmZyYW1lU2Nyb2xsVmlldzsKKyAgICBSZXRhaW5QdHI8V2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3PiBmcmFtZVNjcm9sbFZpZXc7CiAgICAgQk9PTCBpbmNsdWRlZElu
V2ViS2l0U3RhdGlzdGljczsKIH0KIEBlbmQKQEAgLTExOSw3ICsxMTksNiBAQCBAaW1wbGVtZW50
YXRpb24gV2ViRnJhbWVWaWV3UHJpdmF0ZQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbZnJh
bWVTY3JvbGxWaWV3IHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMjM3
LDcgKzIzNiw3IEBAIC0gKFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyAqKV9zY3JvbGxWaWV3CiAg
ICAgLy8gYWZ0ZXIgX3ByaXZhdGUgaGFzIGJlZW4gbmlsbGVkIG91dC4KICAgICBpZiAoX3ByaXZh
dGUgPT0gbmlsKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+ZnJh
bWVTY3JvbGxWaWV3OworICAgIHJldHVybiBfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3LmdldCgp
OwogfQogCiAtIChmbG9hdClfdmVydGljYWxQYWdlU2Nyb2xsRGlzdGFuY2UKQEAgLTMxNiw3ICsz
MTUsNyBAQCAtICh2b2lkKV9pbnN0YWxsCiAKICAgICBhdXRvKiB2aWV3ID0gZnJhbWUtPnZpZXco
KTsKIAotICAgIHZpZXctPnNldFBsYXRmb3JtV2lkZ2V0KF9wcml2YXRlLT5mcmFtZVNjcm9sbFZp
ZXcpOworICAgIHZpZXctPnNldFBsYXRmb3JtV2lkZ2V0KF9wcml2YXRlLT5mcmFtZVNjcm9sbFZp
ZXcuZ2V0KCkpOwogCiAgICAgLy8gRklYTUU6IEZyYW1lIHRyaWVzIHRvIGRvIHRoaXMgdG9vLiBJ
cyB0aGlzIGNvZGUgbmVlZGVkPwogICAgIGlmIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQqIG93bmVy
ID0gZnJhbWUtPm93bmVyUmVuZGVyZXIoKSkgewpAQCAtMzczLDcgKzM3Miw3IEBAIC0gKGlkKWlu
aXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQogCiAgICAgX3ByaXZhdGUgPSBbW1dlYkZyYW1lVmll
d1ByaXZhdGUgYWxsb2NdIGluaXRdOwogCi0gICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpz
Y3JvbGxWaWV3ID0gW1tXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLjBmLCAwLjBmLCBmcmFtZS5zaXplLndpZHRoLCBmcmFtZS5zaXplLmhl
aWdodCldOworICAgIGF1dG8gc2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tXZWJEeW5hbWljU2Nyb2xs
QmFyc1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLjBmLCAwLjBmLCBmcmFt
ZS5zaXplLndpZHRoLCBmcmFtZS5zaXplLmhlaWdodCldKTsKICAgICBfcHJpdmF0ZS0+ZnJhbWVT
Y3JvbGxWaWV3ID0gc2Nyb2xsVmlldzsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtz
Y3JvbGxWaWV3IHNldERlbGVnYXRlOnNlbGZdOwpAQCAtMzg1LDEyICszODQsMTIgQEAgLSAoaWQp
aW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCiAgICAgW3Njcm9sbFZpZXcgc2V0SGFzSG9yaXpv
bnRhbFNjcm9sbGVyOk5PXTsKICAgICBbc2Nyb2xsVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5T
Vmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVdOwogICAgIFtzY3JvbGxWaWV3
IHNldExpbmVTY3JvbGw6V2ViQ29yZTo6U2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpXTsK
LSAgICBbc2VsZiBhZGRTdWJ2aWV3OnNjcm9sbFZpZXddOworICAgIFtzZWxmIGFkZFN1YnZpZXc6
c2Nyb2xsVmlldy5nZXQoKV07CiAKICAgICAvLyBEb24ndCBjYWxsIG91ciBvdmVycmlkZGVuIHZl
cnNpb24gb2Ygc2V0TmV4dEtleVZpZXcgaGVyZTsgd2UgbmVlZCB0byBtYWtlIHRoZSBzdGFuZGFy
ZCBOU1ZpZXcKICAgICAvLyBsaW5rIGJldHdlZW4gdXMgYW5kIG91ciBzdWJ2aWV3IHNvIHRoYXQg
cHJldmlvdXNLZXlWaWV3IGFuZCBwcmV2aW91c1ZhbGlkS2V5VmlldyB3b3JrIGFzIGV4cGVjdGVk
LgogICAgIC8vIFRoaXMgd29ya3MgdG9nZXRoZXIgd2l0aCBvdXIgYmVjb21lRmlyc3RSZXNwb25k
ZXIgYW5kIHNldE5leHRLZXlWaWV3IG92ZXJyaWRlcy4KLSAgICBbc3VwZXIgc2V0TmV4dEtleVZp
ZXc6c2Nyb2xsVmlld107CisgICAgW3N1cGVyIHNldE5leHRLZXlWaWV3OnNjcm9sbFZpZXcuZ2V0
KCldOwogICAgIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTIzNCwzMSArMTIzMywyOSBAQCAt
ICh2b2lkKV9zZXRDdXN0b21TY3JvbGxWaWV3Q2xhc3M6KENsYXNzKWN1c3RvbUNsYXNzCiAgICAg
aWYgKCFbY3VzdG9tQ2xhc3MgaXNTdWJjbGFzc09mQ2xhc3M6W1dlYkR5bmFtaWNTY3JvbGxCYXJz
VmlldyBjbGFzc11dKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJEeW5hbWljU2Nyb2xsQmFy
c1ZpZXcgKm9sZFNjcm9sbFZpZXcgPSBfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3OyAvLyBhbHJl
YWR5IHJldGFpbmVkCi0gICAgTlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+ICpkb2N1bWVudFZpZXcg
PSBbW3NlbGYgZG9jdW1lbnRWaWV3XSByZXRhaW5dOworICAgIGF1dG8gb2xkU2Nyb2xsVmlldyA9
IF9wcml2YXRlLT5mcmFtZVNjcm9sbFZpZXc7IC8vIGFscmVhZHkgcmV0YWluZWQKKyAgICBhdXRv
IGRvY3VtZW50VmlldyA9IHJldGFpblB0cihbc2VsZiBkb2N1bWVudFZpZXddKTsKIAotICAgIFdl
YkR5bmFtaWNTY3JvbGxCYXJzVmlldyAqc2Nyb2xsVmlldyAgPSBbW2N1c3RvbUNsYXNzIGFsbG9j
XSBpbml0V2l0aEZyYW1lOltvbGRTY3JvbGxWaWV3IGZyYW1lXV07CisgICAgUmV0YWluUHRyPFdl
YkR5bmFtaWNTY3JvbGxCYXJzVmlldz4gc2Nyb2xsVmlldyAgPSBhZG9wdE5TKFtbY3VzdG9tQ2xh
c3MgYWxsb2NdIGluaXRXaXRoRnJhbWU6W29sZFNjcm9sbFZpZXcgZnJhbWVdXSk7CiAgICAgW3Nj
cm9sbFZpZXcgc2V0Q29udGVudFZpZXc6W1tbV2ViQ2xpcFZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6W3Njcm9sbFZpZXcgYm91bmRzXV0gYXV0b3JlbGVhc2VdXTsKICAgICBbc2Nyb2xsVmlldyBz
ZXREcmF3c0JhY2tncm91bmQ6W29sZFNjcm9sbFZpZXcgZHJhd3NCYWNrZ3JvdW5kXV07CiAgICAg
W3Njcm9sbFZpZXcgc2V0SGFzVmVydGljYWxTY3JvbGxlcjpbb2xkU2Nyb2xsVmlldyBoYXNWZXJ0
aWNhbFNjcm9sbGVyXV07CiAgICAgW3Njcm9sbFZpZXcgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGVy
OltvbGRTY3JvbGxWaWV3IGhhc0hvcml6b250YWxTY3JvbGxlcl1dOwogICAgIFtzY3JvbGxWaWV3
IHNldEF1dG9yZXNpemluZ01hc2s6W29sZFNjcm9sbFZpZXcgYXV0b3Jlc2l6aW5nTWFza11dOwog
ICAgIFtzY3JvbGxWaWV3IHNldExpbmVTY3JvbGw6W29sZFNjcm9sbFZpZXcgbGluZVNjcm9sbF1d
OwotICAgIFtzZWxmIGFkZFN1YnZpZXc6c2Nyb2xsVmlld107CisgICAgW3NlbGYgYWRkU3Vidmll
dzpzY3JvbGxWaWV3LmdldCgpXTsKIAogICAgIC8vIGRvbid0IGNhbGwgb3VyIG92ZXJyaWRkZW4g
dmVyc2lvbiBoZXJlOyB3ZSBuZWVkIHRvIG1ha2UgdGhlIHN0YW5kYXJkIE5TVmlldyBsaW5rIGJl
dHdlZW4gdXMKICAgICAvLyBhbmQgb3VyIHN1YnZpZXcgc28gdGhhdCBwcmV2aW91c0tleVZpZXcg
YW5kIHByZXZpb3VzVmFsaWRLZXlWaWV3IHdvcmsgYXMgZXhwZWN0ZWQuIFRoaXMgd29ya3MKICAg
ICAvLyB0b2dldGhlciB3aXRoIG91ciBiZWNvbWVGaXJzdFJlc3BvbmRlciBhbmQgc2V0TmV4dEtl
eVZpZXcgb3ZlcnJpZGVzLgotICAgIFtzdXBlciBzZXROZXh0S2V5VmlldzpzY3JvbGxWaWV3XTsK
KyAgICBbc3VwZXIgc2V0TmV4dEtleVZpZXc6c2Nyb2xsVmlldy5nZXQoKV07CiAKLSAgICBfcHJp
dmF0ZS0+ZnJhbWVTY3JvbGxWaWV3ID0gc2Nyb2xsVmlldzsKKyAgICBfcHJpdmF0ZS0+ZnJhbWVT
Y3JvbGxWaWV3ID0gV1RGTW92ZShzY3JvbGxWaWV3KTsKIAotICAgIFtzZWxmIF9zZXREb2N1bWVu
dFZpZXc6ZG9jdW1lbnRWaWV3XTsKKyAgICBbc2VsZiBfc2V0RG9jdW1lbnRWaWV3OmRvY3VtZW50
Vmlldy5nZXQoKV07CiAgICAgW3NlbGYgX2luc3RhbGxdOwogCiAgICAgW29sZFNjcm9sbFZpZXcg
cmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAgW29sZFNjcm9sbFZpZXcgcmVsZWFzZV07Ci0gICAg
W2RvY3VtZW50VmlldyByZWxlYXNlXTsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxs
U2NyZWVuQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KaW5kZXggYjg0NDRmNzMxODViNDJjMzUzNDI5ODI4NWUz
MjdhYjM2OTkwM2M5Mi4uODZmMjBkMmJmODgyODQ0Yzk1ZmJkYWYwOGJjZWE5ZTg0MjQ5MmIwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVu
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1
bGxTY3JlZW5Db250cm9sbGVyLm1tCkBAIC04MSw5ICs4MSw4IEBAIEBpbXBsZW1lbnRhdGlvbiBX
ZWJGdWxsU2NyZWVuQ29udHJvbGxlcgogLSAoaWQpaW5pdAogewogICAgIC8vIERvIG5vdCBkZWZl
ciB3aW5kb3cgY3JlYXRpb24sIHRvIG1ha2Ugc3VyZSAtd2luZG93TnVtYmVyIGlzIGNyZWF0ZWQg
KG5lZWRlZCBieSBXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbikuCi0gICAgTlNXaW5kb3cgKndpbmRv
dyA9IFtbV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6
TlNaZXJvUmVjdCBzdHlsZU1hc2s6TlNXaW5kb3dTdHlsZU1hc2tDbG9zYWJsZSBiYWNraW5nOk5T
QmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dOwotICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhXaW5kb3c6d2luZG93XTsKLSAgICBbd2luZG93IHJlbGVhc2VdOworICAgIGF1dG8gd2luZG93
ID0gYWRvcHROUyhbW1dlYkNvcmVGdWxsU2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRl
bnRSZWN0Ok5TWmVyb1JlY3Qgc3R5bGVNYXNrOk5TV2luZG93U3R5bGVNYXNrQ2xvc2FibGUgYmFj
a2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CisgICAgc2VsZiA9IFtzdXBl
ciBpbml0V2l0aFdpbmRvdzp3aW5kb3cuZ2V0KCldOwogICAgIGlmICghc2VsZikKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICBbc2VsZiB3aW5kb3dEaWRMb2FkXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDk2MjBlODZmYjBhNzIwMTQw
MWMyY2FkNTUxZGUyY2ZiODg4OWJlZGIuLjY2ZmI4MTY4NjdjMTUxOTk1ZGJmNTVkMTczNTdiMGU5
ZTIxMDE5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQpAQCAtMTkxMSwxMyArMTkxMSwxMCBAQCAtICh2b2lkKV91cGRhdGVNb3VzZW92ZXJX
aXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudAogICAgIE5TVmlldyAqaGl0VmlldyA9IFtjb250ZW50
VmlldyBoaXRUZXN0OmxvY2F0aW9uRm9ySGl0VGVzdF07CiAgICAgZm9yY2VXZWJIVE1MVmlld0hp
dFRlc3QgPSBOTzsKICAgICAKLSAgICBXZWJIVE1MVmlldyAqdmlldyA9IG5pbDsKKyAgICBSZXRh
aW5QdHI8V2ViSFRNTFZpZXc+IHZpZXc7CiAgICAgaWYgKFtoaXRWaWV3IGlzS2luZE9mQ2xhc3M6
W1dlYkhUTUxWaWV3IGNsYXNzXV0pCiAgICAgICAgIHZpZXcgPSAoV2ViSFRNTFZpZXcgKiloaXRW
aWV3OyAgICAKIAotICAgIGlmICh2aWV3KQotICAgICAgICBbdmlldyByZXRhaW5dOwotCiAgICAg
aWYgKGxhc3RIaXRWaWV3ICE9IHZpZXcgJiYgbGFzdEhpdFZpZXcgJiYgW2xhc3RIaXRWaWV3IF9m
cmFtZV0pIHsKICAgICAgICAgLy8gSWYgd2UgYXJlIG1vdmluZyBvdXQgb2YgYSB2aWV3IChvciBm
cmFtZSksIGxldCdzIHByZXRlbmQgdGhlIG1vdXNlIG1vdmVkCiAgICAgICAgIC8vIGFsbCB0aGUg
d2F5IG91dCBvZiB0aGF0IHZpZXcuIEJ1dCB3ZSBoYXZlIHRvIGFjY291bnQgZm9yIHNjcm9sbGlu
ZywgYmVjYXVzZQpAQCAtMTkzOCw3ICsxOTM1LDcgQEAgLSAodm9pZClfdXBkYXRlTW91c2VvdmVy
V2l0aEV2ZW50OihOU0V2ZW50ICopZXZlbnQKICAgICAgICAgICAgIGxhc3RIaXRDb3JlRnJhbWUt
PmV2ZW50SGFuZGxlcigpLm1vdXNlTW92ZWQoZXZlbnQsIFtbc2VsZiBfd2ViVmlld10gX3ByZXNz
dXJlRXZlbnRdKTsKICAgICB9CiAKLSAgICBsYXN0SGl0VmlldyA9IHZpZXc7CisgICAgbGFzdEhp
dFZpZXcgPSB2aWV3LmdldCgpOwogCiAgICAgaWYgKHZpZXcpIHsKICAgICAgICAgaWYgKGF1dG8q
IGNvcmVGcmFtZSA9IGNvcmUoW3ZpZXcgX2ZyYW1lXSkpIHsKQEAgLTE5NTUsOCArMTk1Miw2IEBA
IC0gKHZvaWQpX3VwZGF0ZU1vdXNlb3ZlcldpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50CiAgICAg
ICAgICAgICAgICAgY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS5wYXNzTW91c2VNb3ZlZEV2ZW50
VG9TY3JvbGxiYXJzKGV2ZW50LCBbW3NlbGYgX3dlYlZpZXddIF9wcmVzc3VyZUV2ZW50XSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICBbdmlldyByZWxlYXNlXTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTmF2
aWdhdGlvbkRhdGEubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk5hdmln
YXRpb25EYXRhLm1tCmluZGV4IDA2ZTRhNjAzMDE2OGFhYzI0NTY0MDAxN2QzOTg2OTc4ZTIzZjEy
N2EuLjYzOGMzYTVlNGY3OWMyMTI5MDg1ZjMwM2NlZGVmZmQ4ZmNmNDA2MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTmF2aWdhdGlvbkRhdGEubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJOYXZpZ2F0aW9uRGF0YS5tbQpA
QCAtMjQsMTYgKzI0LDE3IEBACiAgKi8KIAogI2ltcG9ydCAiV2ViTmF2aWdhdGlvbkRhdGEuaCIK
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBXZWJOYXZpZ2F0aW9uRGF0
YVByaXZhdGUgOiBOU09iamVjdAogewogQHB1YmxpYwotICAgIE5TU3RyaW5nICp1cmw7Ci0gICAg
TlNTdHJpbmcgKnRpdGxlOwotICAgIE5TVVJMUmVxdWVzdCAqb3JpZ2luYWxSZXF1ZXN0OwotICAg
IE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gdXJsOwor
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gdGl0bGU7CisgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVz
dD4gb3JpZ2luYWxSZXF1ZXN0OworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25z
ZTsKICAgICBCT09MIGhhc1N1YnN0aXR1dGVEYXRhOwotICAgIE5TU3RyaW5nICpjbGllbnRSZWRp
cmVjdFNvdXJjZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNsaWVudFJlZGlyZWN0U291cmNl
OwogfQogCiBAZW5kCkBAIC00MiwxMiArNDMsNiBAQCBAaW1wbGVtZW50YXRpb24gV2ViTmF2aWdh
dGlvbkRhdGFQcml2YXRlCiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIFt1cmwgcmVsZWFzZV07
Ci0gICAgW3RpdGxlIHJlbGVhc2VdOwotICAgIFtvcmlnaW5hbFJlcXVlc3QgcmVsZWFzZV07Ci0g
ICAgW3Jlc3BvbnNlIHJlbGVhc2VdOwotICAgIFtjbGllbnRSZWRpcmVjdFNvdXJjZSByZWxlYXNl
XTsKLQogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtNjIsMzQgKzU3LDM0IEBAIC0gKGlk
KWluaXRXaXRoVVJMU3RyaW5nOihOU1N0cmluZyAqKXVybCB0aXRsZTooTlNTdHJpbmcgKil0aXRs
ZSBvcmlnaW5hbFJlcXVlc3Q6CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgX3ByaXZhdGUgPSBb
W1dlYk5hdmlnYXRpb25EYXRhUHJpdmF0ZSBhbGxvY10gaW5pdF07CiAgICAgCi0gICAgX3ByaXZh
dGUtPnVybCA9IFt1cmwgcmV0YWluXTsKLSAgICBfcHJpdmF0ZS0+dGl0bGUgPSBbdGl0bGUgcmV0
YWluXTsKLSAgICBfcHJpdmF0ZS0+b3JpZ2luYWxSZXF1ZXN0ID0gW3JlcXVlc3QgcmV0YWluXTsK
LSAgICBfcHJpdmF0ZS0+cmVzcG9uc2UgPSBbcmVzcG9uc2UgcmV0YWluXTsKKyAgICBfcHJpdmF0
ZS0+dXJsID0gdXJsOworICAgIF9wcml2YXRlLT50aXRsZSA9IHRpdGxlOworICAgIF9wcml2YXRl
LT5vcmlnaW5hbFJlcXVlc3QgPSByZXF1ZXN0OworICAgIF9wcml2YXRlLT5yZXNwb25zZSA9IHJl
c3BvbnNlOwogICAgIF9wcml2YXRlLT5oYXNTdWJzdGl0dXRlRGF0YSA9IGhhc1N1YnN0aXR1dGVE
YXRhOwotICAgIF9wcml2YXRlLT5jbGllbnRSZWRpcmVjdFNvdXJjZSA9IFtyZWRpcmVjdFNvdXJj
ZSByZXRhaW5dOworICAgIF9wcml2YXRlLT5jbGllbnRSZWRpcmVjdFNvdXJjZSA9IHJlZGlyZWN0
U291cmNlOwogICAgIAogICAgIHJldHVybiBzZWxmOwogfQogCiAtIChOU1N0cmluZyAqKXVybAog
ewotICAgIHJldHVybiBfcHJpdmF0ZS0+dXJsOworICAgIHJldHVybiBfcHJpdmF0ZS0+dXJsLmdl
dCgpOwogfQogCiAtIChOU1N0cmluZyAqKXRpdGxlCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT50
aXRsZTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPnRpdGxlLmdldCgpOwogfQogCiAtIChOU1VSTFJl
cXVlc3QgKilvcmlnaW5hbFJlcXVlc3QKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPm9yaWdpbmFs
UmVxdWVzdDsKKyAgICByZXR1cm4gX3ByaXZhdGUtPm9yaWdpbmFsUmVxdWVzdC5nZXQoKTsKIH0K
IAogLSAoTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5y
ZXNwb25zZTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPnJlc3BvbnNlLmdldCgpOwogfQogCiAtIChC
T09MKWhhc1N1YnN0aXR1dGVEYXRhCkBAIC05OSw3ICs5NCw3IEBAIC0gKEJPT0wpaGFzU3Vic3Rp
dHV0ZURhdGEKIAogLSAoTlNTdHJpbmcgKiljbGllbnRSZWRpcmVjdFNvdXJjZQogewotICAgIHJl
dHVybiBfcHJpdmF0ZS0+Y2xpZW50UmVkaXJlY3RTb3VyY2U7CisgICAgcmV0dXJuIF9wcml2YXRl
LT5jbGllbnRSZWRpcmVjdFNvdXJjZS5nZXQoKTsKIH0KIAogLSAodm9pZClkZWFsbG9jCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERkRvY3VtZW50RXh0
cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZEb2N1bWVudEV4
dHJhcy5tbQppbmRleCAxNzdjZTkzYmVlODM4M2EwNGVhY2M3Y2IxZjAwNmJhNGVkZWI4MTFjLi4y
NjY1ODlhNmExMWYzNDk1OTFhM2Y3Yjc5MTg1MDQzMmRlODQ4ZmQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERkRvY3VtZW50RXh0cmFzLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGRG9jdW1lbnRFeHRyYXMubW0K
QEAgLTExOSwxMiArMTE5LDExIEBAIE5TQXJyYXkgKmFsbFNjcmlwdHNJblBERkRvY3VtZW50KENH
UERGRG9jdW1lbnRSZWYgcGRmRG9jdW1lbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBOU1N0cmluZ0VuY29kaW5nIGVuY29kaW5nID0gKGxlbmd0aCA+IDEgJiYgYnl0ZXNbMF0g
PT0gMHhGRSAmJiBieXRlc1sxXSA9PSAweEZGKSA/IE5TVW5pY29kZVN0cmluZ0VuY29kaW5nIDog
TlNVVEY4U3RyaW5nRW5jb2Rpbmc7Ci0gICAgICAgIE5TU3RyaW5nICpzY3JpcHQgPSBbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmJ5dGVzIGxlbmd0aDpsZW5ndGggZW5jb2Rpbmc6ZW5j
b2RpbmddOworICAgICAgICBhdXRvIHNjcmlwdCA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhCeXRlczpieXRlcyBsZW5ndGg6bGVuZ3RoIGVuY29kaW5nOmVuY29kaW5nXSk7CiAg
ICAgICAgIGlmICghc2NyaXB0KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgW3Nj
cmlwdHMgYWRkT2JqZWN0OnNjcmlwdF07Ci0gICAgICAgIFtzY3JpcHQgcmVsZWFzZV07CisgICAg
ICAgIFtzY3JpcHRzIGFkZE9iamVjdDpzY3JpcHQuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVy
biBzY3JpcHRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQREZSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUERGUmVwcmVzZW50YXRpb24ubW0KaW5kZXggZWJjYTNiMDg0ZTZiNWYwMWEzYjVjZmRhZmU3
Y2ExYWVjMjk0ZDM5MC4uNTJmMzBhMDk2YTEyYTJjMDQzYjU1NmZjOTQzZWM5ZWU0ZmRkZTk0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNl
bnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJl
cHJlc2VudGF0aW9uLm1tCkBAIC0xMjEsMTEgKzEyMSwxMCBAQCAtICh2b2lkKWZpbmlzaGVkTG9h
ZGluZ1dpdGhEYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogICAgIH0KIAog
ICAgIFdlYlBERlZpZXcgKnZpZXcgPSAoV2ViUERGVmlldyAqKVtbW2RhdGFTb3VyY2Ugd2ViRnJh
bWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKLSAgICBQREZEb2N1bWVudCAqZG9jID0gW1tb
W3NlbGYgY2xhc3NdIFBERkRvY3VtZW50Q2xhc3NdIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV07
Ci0gICAgW3ZpZXcgc2V0UERGRG9jdW1lbnQ6ZG9jXTsKKyAgICBhdXRvIGRvYyA9IGFkb3B0TlMo
W1tbW3NlbGYgY2xhc3NdIFBERkRvY3VtZW50Q2xhc3NdIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0
YV0pOworICAgIFt2aWV3IHNldFBERkRvY3VtZW50OmRvYy5nZXQoKV07CiAKLSAgICBOU0FycmF5
ICpzY3JpcHRzID0gYWxsU2NyaXB0c0luUERGRG9jdW1lbnQoZG9jKTsKLSAgICBbZG9jIHJlbGVh
c2VdOworICAgIE5TQXJyYXkgKnNjcmlwdHMgPSBhbGxTY3JpcHRzSW5QREZEb2N1bWVudChkb2Mu
Z2V0KCkpOwogICAgIGRvYyA9IG5pbDsKIAogICAgIGlmICghW3NjcmlwdHMgY291bnRdKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmluZGV4IGY3ZjNl
MzE1ODA3MTVhN2QyMzJmNTYzMGNiZmVlNDkxMzI1YWY5MWUuLjIxMzM3ZjJkYWIyYzU3ZGNmYTEy
OWFjYjc3YjQ4MmU2NTZiNjM3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlBERlZpZXcubW0KQEAgLTM5MCwxMiArMzkwLDExIEBAIC0gKE5TTWVudSAqKW1lbnVG
b3JFdmVudDooTlNFdmVudCAqKXRoZUV2ZW50CiAgICAgLy8gVG8gbWF0Y2ggdGhlIFBERktpdCBz
dHlsZSwgd2UnbGwgYWRkIE9wZW4gd2l0aCBQcmV2aWV3IGV2ZW4gd2hlbiB0aGVyZSdzIG5vIGRv
Y3VtZW50IHlldCB0byB2aWV3LCBhbmQKICAgICAvLyBkaXNhYmxlIGl0IHVzaW5nIHZhbGlkYXRl
VXNlckludGVyZmFjZUl0ZW0uCiAgICAgTlNTdHJpbmcgKnRpdGxlID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6VUlfU1RSSU5HX0lOVEVSTkFMKCJPcGVuIHdpdGggJUAiLCAiY29udGV4dCBt
ZW51IGl0ZW0gZm9yIFBERiIpLCBhcHBOYW1lXTsKLSAgICBOU01lbnVJdGVtICppdGVtID0gW1tO
U01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOnRpdGxlIGFjdGlvbjpAc2VsZWN0b3IoX29w
ZW5XaXRoRmluZGVyOikga2V5RXF1aXZhbGVudDpAIiJdOworICAgIGF1dG8gaXRlbSA9IHJldGFp
blB0cihbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6dGl0bGUgYWN0aW9uOkBzZWxl
Y3Rvcihfb3BlbldpdGhGaW5kZXI6KSBrZXlFcXVpdmFsZW50OkAiIl0pOwogICAgIFtpdGVtIHNl
dFRhZzpXZWJNZW51SXRlbVRhZ09wZW5XaXRoRGVmYXVsdEFwcGxpY2F0aW9uXTsKICAgICBpZiAo
YXBwSWNvbikKICAgICAgICAgW2l0ZW0gc2V0SW1hZ2U6YXBwSWNvbl07Ci0gICAgW2l0ZW1zIGlu
c2VydE9iamVjdDppdGVtIGF0SW5kZXg6MF07Ci0gICAgW2l0ZW0gcmVsZWFzZV07CisgICAgW2l0
ZW1zIGluc2VydE9iamVjdDppdGVtLmdldCgpIGF0SW5kZXg6MF07CiAgICAgCiAgICAgW2l0ZW1z
IGluc2VydE9iamVjdDpbTlNNZW51SXRlbSBzZXBhcmF0b3JJdGVtXSBhdEluZGV4OjFdOwogICAg
IApAQCAtNjQyLDcgKzY0MSw3IEBAIC0gKE5TVUludGVnZXIpY291bnRNYXRjaGVzRm9yVGV4dDoo
TlNTdHJpbmcgKilzdHJpbmcgaW5ET01SYW5nZTooRE9NUmFuZ2UgKilyYW5nCiAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgUERGU2VsZWN0aW9uICpwcmV2aW91c01hdGNoID0gbmlsOwotICAgIE5T
TXV0YWJsZUFycmF5ICptYXRjaGVzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTpsaW1pdF07CisgICAgYXV0byBtYXRjaGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmxpbWl0XSk7CiAKICAgICBmb3IgKDs7KSB7CiAg
ICAgICAgIFBERlNlbGVjdGlvbiAqbmV4dE1hdGNoID0gW3NlbGYgX25leHRNYXRjaEZvcjpzdHJp
bmcgZGlyZWN0aW9uOllFUyBjYXNlU2Vuc2l0aXZlOiEob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25z
Q2FzZUluc2Vuc2l0aXZlKSB3cmFwOk5PIGZyb21TZWxlY3Rpb246cHJldmlvdXNNYXRjaCBzdGFy
dEluU2VsZWN0aW9uOk5PXTsKQEAgLTY1Niw4ICs2NTUsNyBAQCAtIChOU1VJbnRlZ2VyKWNvdW50
TWF0Y2hlc0ZvclRleHQ6KE5TU3RyaW5nICopc3RyaW5nIGluRE9NUmFuZ2U6KERPTVJhbmdlICop
cmFuZwogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgW3NlbGYgX3NldFRleHRNYXRj
aGVzOm1hdGNoZXNdOwotICAgIFttYXRjaGVzIHJlbGVhc2VdOworICAgIFtzZWxmIF9zZXRUZXh0
TWF0Y2hlczptYXRjaGVzLmdldCgpXTsKICAgICAKICAgICByZXR1cm4gW21hdGNoZXMgY291bnRd
OwogfQpAQCAtNzA4LDEyICs3MDYsMTEgQEAgLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmli
dXRlZFN0cmluZwogICAgIC8vIGNoYW5naW5nIHRoZSBzZWxlY3Rpb24gaXMgYSBoYWNrLCBidXQg
dGhlIG9ubHkgd2F5IHRvIGdldCBhbiBhdHRyIHN0cmluZyBpcyB2aWEgUERGU2VsZWN0aW9uCiAg
ICAgCiAgICAgLy8gbXVzdCBjb3B5IHRoaXMgc2VsZWN0aW9uIG9iamVjdCBiZWNhdXNlIHdlIGNo
YW5nZSB0aGUgc2VsZWN0aW9uIHdoaWNoIHNlZW1zIHRvIHJlbGVhc2UgaXQKLSAgICBQREZTZWxl
Y3Rpb24gKnNhdmVkU2VsZWN0aW9uID0gW1tQREZTdWJ2aWV3IGN1cnJlbnRTZWxlY3Rpb25dIGNv
cHldOworICAgIGF1dG8gc2F2ZWRTZWxlY3Rpb24gPSBhZG9wdE5TKFtbUERGU3VidmlldyBjdXJy
ZW50U2VsZWN0aW9uXSBjb3B5XSk7CiAgICAgW1BERlN1YnZpZXcgc2VsZWN0QWxsOm5pbF07CiAg
ICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpyZXN1bHQgPSBbW1BERlN1YnZpZXcgY3VycmVudFNlbGVj
dGlvbl0gYXR0cmlidXRlZFN0cmluZ107CiAgICAgaWYgKHNhdmVkU2VsZWN0aW9uKSB7Ci0gICAg
ICAgIFtQREZTdWJ2aWV3IHNldEN1cnJlbnRTZWxlY3Rpb246c2F2ZWRTZWxlY3Rpb25dOwotICAg
ICAgICBbc2F2ZWRTZWxlY3Rpb24gcmVsZWFzZV07CisgICAgICAgIFtQREZTdWJ2aWV3IHNldEN1
cnJlbnRTZWxlY3Rpb246c2F2ZWRTZWxlY3Rpb24uZ2V0KCldOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBiZWhhdmlvciBvZiBzZXRDdXJyZW50U2VsZWN0aW9uOm5pbCBpcyBub3Qg
ZG9jdW1lbnRlZCAtIGNoZWNrIDQxODI5MzQgZm9yIHByb2dyZXNzCiAgICAgICAgIC8vIE90aGVy
d2lzZSwgd2UgY291bGQgY29sbGFwc2UgdGhpcyBjb2RlIHdpdGggdGhlIGNhc2UgYWJvdmUuCkBA
IC04NzQsNyArODcxLDcgQEAgLSAoTlNJbWFnZSAqKXNlbGVjdGlvbkltYWdlRm9yY2luZ0JsYWNr
VGV4dDooQk9PTClmb3JjZUJsYWNrVGV4dAogICAgIC8vIENvbnZlcnQgdGhlIHNlbGVjdGlvbiB0
byBhbiBhdHRyaWJ1dGVkIHN0cmluZywgYW5kIGRyYXcgdGhhdC4KICAgICAvLyBGSVhNRSA0NjIx
MTU0OiB0aGlzIGRvZXNuJ3QgaGFuZGxlIGl0YWxpY3MgKGFuZCBtYXliZSBvdGhlciBzdHlsZXMp
CiAgICAgLy8gRklYTUUgNDYwNDM2NjogdGhpcyBkb2Vzbid0IGhhbmRsZSB0ZXh0IGF0IG5vbi1h
Y3R1YWwgc2l6ZQotICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJp
bmcgPSBbW3NlbGYgc2VsZWN0ZWRBdHRyaWJ1dGVkU3RyaW5nXSBtdXRhYmxlQ29weV07CisgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRTdHJpbmcgPSBh
ZG9wdE5TKFtbc2VsZiBzZWxlY3RlZEF0dHJpYnV0ZWRTdHJpbmddIG11dGFibGVDb3B5XSk7CiAg
ICAgTlNSYW5nZSB3aG9sZVN0cmluZ1JhbmdlID0gTlNNYWtlUmFuZ2UoMCwgW2F0dHJpYnV0ZWRT
dHJpbmcgbGVuZ3RoXSk7CiAgICAgCiAgICAgLy8gTW9kaWZ5IHRoZSBzdHlsZXMgaW4gdGhlIGF0
dHJpYnV0ZWQgc3RyaW5nIHRvIGRyYXcgYmxhY2sgdGV4dCwgbm8gYmFja2dyb3VuZCwgYW5kIG5v
IHVuZGVybGluZS4gV2UgZHJhdyAKQEAgLTg5MSw4ICs4ODgsNiBAQCAtIChOU0ltYWdlICopc2Vs
ZWN0aW9uSW1hZ2VGb3JjaW5nQmxhY2tUZXh0OihCT09MKWZvcmNlQmxhY2tUZXh0CiAgICAgW3Nl
bGVjdGlvbkltYWdlIGxvY2tGb2N1c107CiAgICAgW2F0dHJpYnV0ZWRTdHJpbmcgZHJhd0F0UG9p
bnQ6TlNaZXJvUG9pbnRdOwogICAgIFtzZWxlY3Rpb25JbWFnZSB1bmxvY2tGb2N1c107Ci0gICAg
Ci0gICAgW2F0dHJpYnV0ZWRTdHJpbmcgcmVsZWFzZV07CiAKICAgICByZXR1cm4gc2VsZWN0aW9u
SW1hZ2U7CiB9CkBAIC0xMTA2LDcgKzExMDEsNyBAQCAtIChOU011dGFibGVBcnJheSAqKV9tZW51
SXRlbXNGcm9tUERGS2l0Rm9yRXZlbnQ6KE5TRXZlbnQgKil0aGVFdmVudAogICAgIE5TTXV0YWJs
ZUFycmF5ICpjb3BpZWRJdGVtcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5kZWNsYXJlZC1zZWxlY3RvciIpCi0gICAgTlNEaWN0aW9uYXJ5ICph
Y3Rpb25zVG9UYWdzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtl
eXM6CisgICAgYXV0byBhY3Rpb25zVG9UYWdzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgQChXZWJNZW51SXRlbVBERkFjdHVh
bFNpemUpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldEFjdHVhbFNpemU6KSks
CiAgICAgICAgIEAoV2ViTWVudUl0ZW1QREZab29tSW4pLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihA
c2VsZWN0b3Ioem9vbUluOikpLAogICAgICAgICBAKFdlYk1lbnVJdGVtUERGWm9vbU91dCksIE5T
U3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcih6b29tT3V0OikpLApAQCAtMTExOCwyMCArMTEx
MywyMCBAQCBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVuZGVjbGFyZWQtc2VsZWN0b3IiKQogICAg
ICAgICBAKFdlYk1lbnVJdGVtUERGQ29udGludW91cyksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBz
ZWxlY3RvcihfdG9nZ2xlQ29udGludW91czopKSwKICAgICAgICAgQChXZWJNZW51SXRlbVBERk5l
eHRQYWdlKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKGdvVG9OZXh0UGFnZTopKSwK
ICAgICAgICAgQChXZWJNZW51SXRlbVBERlByZXZpb3VzUGFnZSksIE5TU3RyaW5nRnJvbVNlbGVj
dG9yKEBzZWxlY3Rvcihnb1RvUHJldmlvdXNQYWdlOikpLAotICAgICAgICBuaWxdOworICAgICAg
ICBuaWxdKTsKIElHTk9SRV9XQVJOSU5HU19FTkQKIAogICAgIC8vIExlYXZlIHRoZXNlIG1lbnUg
aXRlbXMgb3V0LCBzaW5jZSBXZWJLaXQgaW5zZXJ0cyBlcXVpdmFsZW50IG9uZXMuIE5vdGUgdGhh
dCB3ZSBsZWF2ZSBvdXQgUERGS2l0J3MgIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIKICAgICAvLyBp
dGVtIGhlcmUgYmVjYXVzZSBXZWJLaXQgYWxyZWFkeSBpbmNsdWRlcyBhbiBpdGVtIHdpdGggdGhl
IHNhbWUgdGl0bGUgYW5kIHB1cnBvc2UuIFdlIG1hcCBXZWJLaXQncyB0byBQREZLaXQncyAKICAg
ICAvLyAiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IiB2aWEgdGhlIGltcGxlbWVudGF0aW9uIG9mIC1b
V2ViUERGVmlldyBfbG9va1VwSW5EaWN0aW9uYXJ5RnJvbU1lbnU6XS4KLSAgICBOU1NldCAqdW53
YW50ZWRBY3Rpb25zID0gW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgorICAgIGF1dG8g
dW53YW50ZWRBY3Rpb25zID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVuZGVjbGFyZWQtc2VsZWN0b3IiKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZWFy
Y2hJblNwb3RsaWdodDopKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TU3RyaW5n
RnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2VhcmNoSW5Hb29nbGU6KSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NlYXJjaElu
RGljdGlvbmFyeTopKSwKIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihjb3B5OikpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5pbF0pOwogICAgIAogICAgIE5TRW51bWVyYXRvciAqZSA9IFtbW1BERlN1YnZpZXcgbWVu
dUZvckV2ZW50OnRoZUV2ZW50XSBpdGVtQXJyYXldIG9iamVjdEVudW1lcmF0b3JdOwogICAgIE5T
TWVudUl0ZW0gKml0ZW07CkBAIC0xMTQ0LDkgKzExMzksOCBAQCBJR05PUkVfV0FSTklOR1NfRU5E
CiAgICAgICAgIAogICAgICAgICAvLyBDb3B5IGl0ZW1zIHNpbmNlIGEgbWVudSBpdGVtIGNhbiBi
ZSBpbiBvbmx5IG9uZSBtZW51IGF0IGEgdGltZSwgYW5kIHdlIGRvbid0CiAgICAgICAgIC8vIHdh
bnQgdG8gbW9kaWZ5IHRoZSBvcmlnaW5hbCBtZW51IHN1cHBsaWVkIGJ5IFBERktpdC4KLSAgICAg
ICAgTlNNZW51SXRlbSAqaXRlbUNvcHkgPSBbaXRlbSBjb3B5XTsKLSAgICAgICAgW2NvcGllZEl0
ZW1zIGFkZE9iamVjdDppdGVtQ29weV07Ci0gICAgICAgIFtpdGVtQ29weSByZWxlYXNlXTsKKyAg
ICAgICAgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGl0ZW1Db3B5ID0gYWRvcHROUyhbaXRlbSBjb3B5
XSk7CisgICAgICAgIFtjb3BpZWRJdGVtcyBhZGRPYmplY3Q6aXRlbUNvcHkuZ2V0KCldOwogICAg
ICAgICAKICAgICAgICAgLy8gSW5jbHVkZSBhbGwgb2YgUERGS2l0J3Mgc2VwYXJhdG9ycyBmb3Ig
bm93LiBBdCB0aGUgZW5kIHdlJ2xsIHJlbW92ZSBhbnkgb25lcyB0aGF0IHdlcmUgbWFkZQogICAg
ICAgICAvLyB1c2VsZXNzIGJ5IHJlbW92aW5nIFBERktpdCdzIG1lbnUgaXRlbXMuCkBAIC0xMTc2
LDkgKzExNzAsNiBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICBMT0dfRVJST1Io
IlBERiBjb250ZXh0IG1lbnUgaXRlbSAlQCBjYW1lIHdpdGggdGFnICVkLCBzbyBubyBXZWJLaXQg
dGFnIHdhcyBhcHBsaWVkLiBUaGlzIGNvdWxkIG1lYW4gdGhhdCB0aGUgaXRlbSBkb2Vzbid0IGFw
cGVhciBpbiBjbGllbnRzIHN1Y2ggYXMgU2FmYXJpLiIsIFtpdGVtQ29weSB0aXRsZV0sIFtpdGVt
Q29weSB0YWddKTsKICAgICB9CiAgICAgCi0gICAgW2FjdGlvbnNUb1RhZ3MgcmVsZWFzZV07Ci0g
ICAgW3Vud2FudGVkQWN0aW9ucyByZWxlYXNlXTsKLSAgICAKICAgICAvLyBTaW5jZSB3ZSBtaWdo
dCBoYXZlIHJlbW92ZWQgZWxlbWVudHMgc3VwcGxpZWQgYnkgUERGS2l0LCBhbmQgd2Ugd2FudCB0
byBtaW5pbWl6ZSBvdXIgaGFyZHdpcmVkCiAgICAgLy8ga25vd2xlZGdlIG9mIHRoZSBvcmRlciBh
bmQgYXJyYW5nZW1lbnQgb2YgUERGS2l0J3MgbWVudSBpdGVtcywgd2UgbmVlZCB0byByZW1vdmUg
YW55IGJvZ3VzCiAgICAgLy8gc2VwYXJhdG9ycyB0aGF0IHdlcmUgbGVmdCBiZWhpbmQuCkBAIC0x
MjAxLDcgKzExOTIsNyBAQCAtIChQREZTZWxlY3Rpb24gKilfbmV4dE1hdGNoRm9yOihOU1N0cmlu
ZyAqKXN0cmluZyBkaXJlY3Rpb246KEJPT0wpZm9yd2FyZCBjYXNlUwogICAgIAogICAgIFBERkRv
Y3VtZW50ICpkb2N1bWVudCA9IFtQREZTdWJ2aWV3IGRvY3VtZW50XTsKICAgICAKLSAgICBQREZT
ZWxlY3Rpb24gKnNlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggPSBbaW5pdGlhbFNlbGVjdGlvbiBj
b3B5XTsKKyAgICBhdXRvIHNlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggPSBhZG9wdE5TKFtpbml0
aWFsU2VsZWN0aW9uIGNvcHldKTsKICAgICBpZiAoc3RhcnRJblNlbGVjdGlvbikgewogICAgICAg
ICAvLyBJbml0aWFsbHkgd2Ugd2FudCB0byBpbmNsdWRlIHRoZSBzZWxlY3RlZCB0ZXh0IGluIHRo
ZSBzZWFyY2guIFBERkRvY3VtZW50J3MgQVBJIGFsd2F5cyBzZWFyY2hlcyBmcm9tIGp1c3QKICAg
ICAgICAgLy8gcGFzdCB0aGUgcGFzc2VkLWluIHNlbGVjdGlvbiwgc28gd2UgbmVlZCB0byBwYXNz
IGEgc2VsZWN0aW9uIHRoYXQncyBtb2RpZmllZCBhcHByb3ByaWF0ZWx5LiAKQEAgLTEyMTgsOCAr
MTIwOSw3IEBAIC0gKFBERlNlbGVjdGlvbiAqKV9uZXh0TWF0Y2hGb3I6KE5TU3RyaW5nICopc3Ry
aW5nIGRpcmVjdGlvbjooQk9PTClmb3J3YXJkIGNhc2VTCiAgICAgICAgICAgICBbc2VsZWN0aW9u
Rm9ySW5pdGlhbFNlYXJjaCBleHRlbmRTZWxlY3Rpb25BdFN0YXJ0Oi1pbml0aWFsU2VsZWN0aW9u
TGVuZ3RoXTsKICAgICAgICAgfQogICAgIH0KLSAgICBQREZTZWxlY3Rpb24gKmZvdW5kU2VsZWN0
aW9uID0gW2RvY3VtZW50IGZpbmRTdHJpbmc6c3RyaW5nIGZyb21TZWxlY3Rpb246c2VsZWN0aW9u
Rm9ySW5pdGlhbFNlYXJjaCB3aXRoT3B0aW9uczpvcHRpb25zXTsKLSAgICBbc2VsZWN0aW9uRm9y
SW5pdGlhbFNlYXJjaCByZWxlYXNlXTsKKyAgICBQREZTZWxlY3Rpb24gKmZvdW5kU2VsZWN0aW9u
ID0gW2RvY3VtZW50IGZpbmRTdHJpbmc6c3RyaW5nIGZyb21TZWxlY3Rpb246c2VsZWN0aW9uRm9y
SW5pdGlhbFNlYXJjaC5nZXQoKSB3aXRoT3B0aW9uczpvcHRpb25zXTsKIAogICAgIC8vIElmIHdl
IGZpcnN0IHNlYXJjaGVkIGluIHRoZSBzZWxlY3Rpb24sIGFuZCB3ZSBmb3VuZCB0aGUgc2VsZWN0
aW9uLCBzZWFyY2ggYWdhaW4gZnJvbSBqdXN0IHBhc3QgdGhlIHNlbGVjdGlvbgogICAgIGlmIChz
dGFydEluU2VsZWN0aW9uICYmIF9QREZTZWxlY3Rpb25zQXJlRXF1YWwoZm91bmRTZWxlY3Rpb24s
IGluaXRpYWxTZWxlY3Rpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJQb2xpY3lEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUG9saWN5RGVsZWdhdGUubW0KaW5kZXggZmU3N2RjOTU4MThhN2VlMDliZjMxN2Fl
YWE0YmY0MjY0MGY0ZWVhNy4uZTI4YWI4ZjRhOGQyMGUyYmQwNTVlMTlkN2RkMzk1MjVmNWIxMGZk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQb2xpY3lE
ZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBvbGlj
eURlbGVnYXRlLm1tCkBAIC00Myw3ICs0Myw3IEBAIE5TU3RyaW5nICpXZWJBY3Rpb25PcmlnaW5h
bFVSTEtleSA9IEAiV2ViQWN0aW9uT3JpZ2luYWxVUkxLZXkiOwogQGludGVyZmFjZSBXZWJQb2xp
Y3lEZWNpc2lvbkxpc3RlbmVyUHJpdmF0ZSA6IE5TT2JqZWN0CiB7CiBAcHVibGljCi0gICAgaWQg
dGFyZ2V0OworICAgIFJldGFpblB0cjxpZD4gdGFyZ2V0OwogICAgIFNFTCBhY3Rpb247CiB9CiAK
QEAgLTU4LDE0ICs1OCwxMyBAQCAtIChpZClpbml0V2l0aFRhcmdldDooaWQpdCBhY3Rpb246KFNF
TClhCiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgdGFyZ2V0ID0gW3QgcmV0YWluXTsKKyAgICB0YXJnZXQgPSB0OwogICAg
IGFjdGlvbiA9IGE7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewot
ICAgIFt0YXJnZXQgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC05MSwx
NCArOTAsMTIgQEAgLSh2b2lkKWRlYWxsb2MKIC0gKHZvaWQpX3VzZVBvbGljeTooUG9saWN5QWN0
aW9uKXBvbGljeQogewogICAgIGlmIChfcHJpdmF0ZS0+dGFyZ2V0KQotICAgICAgICB3dGZPYmpD
TXNnU2VuZDx2b2lkPihfcHJpdmF0ZS0+dGFyZ2V0LCBfcHJpdmF0ZS0+YWN0aW9uLCBwb2xpY3kp
OworICAgICAgICB3dGZPYmpDTXNnU2VuZDx2b2lkPihfcHJpdmF0ZS0+dGFyZ2V0LmdldCgpLCBf
cHJpdmF0ZS0+YWN0aW9uLCBwb2xpY3kpOwogfQogCiAtICh2b2lkKV9pbnZhbGlkYXRlCiB7Ci0g
ICAgaWQgdGFyZ2V0ID0gX3ByaXZhdGUtPnRhcmdldDsKICAgICBfcHJpdmF0ZS0+dGFyZ2V0ID0g
bmlsOwotICAgIFt0YXJnZXQgcmVsZWFzZV07CiB9CiAKIC8vIFdlYlBvbGljeURlY2lzaW9uTGlz
dGVuZXIgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGIzYzhmY2FmM2U4NzY1ZTIwYWUzMDM0ZTc2NDZj
ODY0Mjg0NTIxMzAuLjMzM2EzMjQ3OTNkZGJjOGZhMGEwZWRmNjFkODY4YjQzMWEwYjVhNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5t
bQpAQCAtMTY1MSw5ICsxNjUxLDggQEAgc3RhdGljIE5TU3RyaW5nICpjbGFzc0lCQ3JlYXRvcklE
ID0gbmlsOwogCiArICh2b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpbmcKIHsK
LSAgICBOU1N0cmluZyAqb2xkID0gY2xhc3NJQkNyZWF0b3JJRDsKKyAgICBhdXRvIG9sZCA9IGFk
b3B0TlMoY2xhc3NJQkNyZWF0b3JJRCk7CiAgICAgY2xhc3NJQkNyZWF0b3JJRCA9IFtzdHJpbmcg
Y29weV07Ci0gICAgW29sZCByZWxlYXNlXTsKIH0KIAogLSAoQk9PTClpc0RPTVBhc3RlQWxsb3dl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHRE
ZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIubW0KaW5kZXggYjg0YzczNzAxOWVjZTM0ZTE5MGMyY2U3NzNiZjdhMWQ5ZDU4NmRmZS4u
YjJmNDIyNzgyMWZlMTdhNDUxNzI2NGM5ZjJlODEzMmY0MjRjNGNlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCkBAIC05
NywxNCArOTcsMTEgQEAgdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFyc2VkKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICAgICAgfQogICAgIH0g
ZWxzZSB7CiAgICAgICAgIE5TU3RyaW5nKiBuc0Vycm9yTWVzc2FnZSA9IG5zU3RyaW5nTmlsSWZF
bXB0eShlcnJvck1zZyk7Ci0gICAgICAgIE5TRGljdGlvbmFyeSAqaW5mbyA9IFtbTlNEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOm5zRXJyb3JNZXNzYWdlLCBXZWJTY3Jp
cHRFcnJvckRlc2NyaXB0aW9uS2V5LCBAKGVycm9yTGluZSksIFdlYlNjcmlwdEVycm9yTGluZU51
bWJlcktleSwgbmlsXTsKLSAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBbW05TRXJyb3IgYWxsb2Nd
IGluaXRXaXRoRG9tYWluOldlYlNjcmlwdEVycm9yRG9tYWluIGNvZGU6V2ViU2NyaXB0R2VuZXJh
bEVycm9yQ29kZSB1c2VySW5mbzppbmZvXTsKKyAgICAgICAgYXV0byBpbmZvID0gYWRvcHROUyhb
W05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpuc0Vycm9yTWVzc2Fn
ZSwgV2ViU2NyaXB0RXJyb3JEZXNjcmlwdGlvbktleSwgQChlcnJvckxpbmUpLCBXZWJTY3JpcHRF
cnJvckxpbmVOdW1iZXJLZXksIG5pbF0pOworICAgICAgICBhdXRvIGVycm9yID0gYWRvcHROUyhb
W05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldlYlNjcmlwdEVycm9yRG9tYWluIGNvZGU6
V2ViU2NyaXB0R2VuZXJhbEVycm9yQ29kZSB1c2VySW5mbzppbmZvLmdldCgpXSk7CiAKICAgICAg
ICAgaWYgKGltcGxlbWVudGF0aW9ucy0+ZmFpbGVkVG9QYXJzZVNvdXJjZUZ1bmMpCi0gICAgICAg
ICAgICBDYWxsU2NyaXB0RGVidWdEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmZhaWxlZFRvUGFy
c2VTb3VyY2VGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpmYWlsZWRUb1BhcnNlU291
cmNlOmJhc2VMaW5lTnVtYmVyOmZyb21VUkw6d2l0aEVycm9yOmZvcldlYkZyYW1lOiksIG5zU291
cmNlLCBmaXJzdExpbmUsIG5zVVJMLCBlcnJvciwgd2ViRnJhbWUpOwotCi0gICAgICAgIFtlcnJv
ciByZWxlYXNlXTsKLSAgICAgICAgW2luZm8gcmVsZWFzZV07CisgICAgICAgICAgICBDYWxsU2Ny
aXB0RGVidWdEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmZhaWxlZFRvUGFyc2VTb3VyY2VGdW5j
LCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpmYWlsZWRUb1BhcnNlU291cmNlOmJhc2VMaW5l
TnVtYmVyOmZyb21VUkw6d2l0aEVycm9yOmZvcldlYkZyYW1lOiksIG5zU291cmNlLCBmaXJzdExp
bmUsIG5zVVJMLCBlcnJvci5nZXQoKSwgd2ViRnJhbWUpOwogICAgIH0KIAogICAgIG1fY2FsbGlu
Z0RlbGVnYXRlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tCmluZGV4IDgwMWJl
ZmVjNzZkMDk2ZjkzZjBmNDhkNjNjZjg3ZGY5NWQ1NTFiYTAuLmY3OGU1NDQ1MWY1ZjczZDIzNmI5
YzNmMDNjOTQ0Yzc3YWFjZDlmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tCkBAIC04
OCwxNCArODgsMTMgQEAgLSAodm9pZClfYnVpbGRVSQogICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgdGFibGVGcmFtZS5zaXplID0gW05TU2Nyb2xsVmlldyBjb250
ZW50U2l6ZUZvckZyYW1lU2l6ZTpzY3JvbGxGcmFtZS5zaXplIGhhc0hvcml6b250YWxTY3JvbGxl
cjpOTyBoYXNWZXJ0aWNhbFNjcm9sbGVyOllFUyBib3JkZXJUeXBlOk5TTm9Cb3JkZXJdOwogICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIE5TVGFibGVDb2x1bW4gKmNv
bHVtbiA9IFtbTlNUYWJsZUNvbHVtbiBhbGxvY10gaW5pdF07CisgICAgYXV0byBjb2x1bW4gPSBh
ZG9wdE5TKFtbTlNUYWJsZUNvbHVtbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb2x1bW4gc2V0V2lk
dGg6dGFibGVGcmFtZS5zaXplLndpZHRoXTsKICAgICBbY29sdW1uIHNldEVkaXRhYmxlOk5PXTsK
ICAgICAKICAgICBfdGFibGVWaWV3ID0gW1tOU1RhYmxlVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTp0YWJsZUZyYW1lXTsKICAgICBbX3RhYmxlVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmll
d1dpZHRoU2l6YWJsZV07Ci0gICAgW190YWJsZVZpZXcgYWRkVGFibGVDb2x1bW46Y29sdW1uXTsK
LSAgICBbY29sdW1uIHJlbGVhc2VdOworICAgIFtfdGFibGVWaWV3IGFkZFRhYmxlQ29sdW1uOmNv
bHVtbi5nZXQoKV07CiAgICAgW190YWJsZVZpZXcgc2V0R3JpZFN0eWxlTWFzazpOU1RhYmxlVmll
d0dyaWROb25lXTsKICAgICBbX3RhYmxlVmlldyBzZXRDb3JuZXJWaWV3Om5pbF07CiAgICAgW190
YWJsZVZpZXcgc2V0SGVhZGVyVmlldzpuaWxdOwpAQCAtMTA1LDcgKzEwNCw3IEBAIC0gKHZvaWQp
X2J1aWxkVUkKICAgICBbX3RhYmxlVmlldyBzZXRUYXJnZXQ6c2VsZl07CiAgICAgW190YWJsZVZp
ZXcgc2V0RG91YmxlQWN0aW9uOkBzZWxlY3Rvcih0YWJsZUFjdGlvbjopXTsKICAgICAKLSAgICBO
U1Njcm9sbFZpZXcgKnNjcm9sbFZpZXcgPSBbW05TU2Nyb2xsVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpzY3JvbGxGcmFtZV07CisgICAgYXV0byBzY3JvbGxWaWV3ID0gYWRvcHROUyhbW05TU2Ny
b2xsVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpzY3JvbGxGcmFtZV0pOwogICAgIFtzY3JvbGxW
aWV3IHNldEJvcmRlclR5cGU6TlNOb0JvcmRlcl07CiAgICAgW3Njcm9sbFZpZXcgc2V0SGFzVmVy
dGljYWxTY3JvbGxlcjpZRVNdOwogICAgIFtzY3JvbGxWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6
TlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZV07CkBAIC0xMTQsOCArMTEz
LDcgQEAgLSAodm9pZClfYnVpbGRVSQogICAgIAogICAgIF9wb3B1cFdpbmRvdyA9IFtbTlNXaW5k
b3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6c2Nyb2xsRnJhbWUgc3R5bGVNYXNrOk5TV2lu
ZG93U3R5bGVNYXNrQm9yZGVybGVzcyBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVm
ZXI6Tk9dOwogICAgIFtfcG9wdXBXaW5kb3cgc2V0QWxwaGFWYWx1ZTowLjg4Zl07Ci0gICAgW19w
b3B1cFdpbmRvdyBzZXRDb250ZW50VmlldzpzY3JvbGxWaWV3XTsKLSAgICBbc2Nyb2xsVmlldyBy
ZWxlYXNlXTsKKyAgICBbX3BvcHVwV2luZG93IHNldENvbnRlbnRWaWV3OnNjcm9sbFZpZXcuZ2V0
KCldOwogICAgIFtfcG9wdXBXaW5kb3cgc2V0SGFzU2hhZG93OllFU107CiAgICAgW19wb3B1cFdp
bmRvdyBfc2V0Rm9yY2VBY3RpdmVDb250cm9sczpZRVNdOwogICAgIFtfcG9wdXBXaW5kb3cgc2V0
UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQppbmRl
eCAwNjUwZGJmMTUzYWNkOTI3MjlmZWIwNmVmNDQwZTg3MmM1YzI3MGE2Li5hMGRjMmI4ZGE5ZWZi
YjY4YTI4ZmZmMzVhMzFkOTUyNWEyNzJiNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Lm1tCkBAIC0xNDEsMTEgKzE0MSwxMCBAQCBAaW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlcgogLSAoaWQpaW5pdAogewogICAgIC8vIERvIG5vdCBkZWZlciB3aW5kb3cg
Y3JlYXRpb24sIHRvIG1ha2Ugc3VyZSAtd2luZG93TnVtYmVyIGlzIGNyZWF0ZWQgKG5lZWRlZCBi
eSBXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbikuCi0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbV2Vi
Q29yZUZ1bGxTY3JlZW5XaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNaZXJvUmVj
dCBzdHlsZU1hc2s6KE5TV2luZG93U3R5bGVNYXNrRnVsbFNpemVDb250ZW50VmlldyB8IE5TV2lu
ZG93U3R5bGVNYXNrUmVzaXphYmxlKSBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVm
ZXI6Tk9dOworICAgIGF1dG8gd2luZG93ID0gYWRvcHROUyhbW1dlYkNvcmVGdWxsU2NyZWVuV2lu
ZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TWmVyb1JlY3Qgc3R5bGVNYXNrOihOU1dp
bmRvd1N0eWxlTWFza0Z1bGxTaXplQ29udGVudFZpZXcgfCBOU1dpbmRvd1N0eWxlTWFza1Jlc2l6
YWJsZSkgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CiAgICAgW3dp
bmRvdyBzZXRDb2xsZWN0aW9uQmVoYXZpb3I6KFt3aW5kb3cgY29sbGVjdGlvbkJlaGF2aW9yXSB8
IE5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9yRnVsbFNjcmVlblByaW1hcnkpXTsKLSAgICB3aW5k
b3cuZGVsZWdhdGUgPSBzZWxmOwotICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhXaW5kb3c6d2lu
ZG93XTsKLSAgICBbd2luZG93IHJlbGVhc2VdOworICAgIFt3aW5kb3cgc2V0RGVsZWdhdGU6IHNl
bGZdOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhXaW5kb3c6d2luZG93LmdldCgpXTsKICAg
ICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgX3BsYXliYWNrTW9kZWwgPSBX
ZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZjQ3OGNhYTc4MjZl
NmIxODBhMmQzOWI3OGU4Y2I2ZThjYWMxNGMzNS4uN2RkMjY1MGZlNzNkMmFhYzViZjU2OTlmYzdm
M2RjYTFmYzRlNGYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQpAQCAtMTMzMiwxMSArMTMzMiwxMCBAQCAtICh2b2lkKV9yZWdpc3RlckRyYWdnZWRUeXBl
cwogewogICAgIE5TQXJyYXkgKmVkaXRhYmxlVHlwZXMgPSBbV2ViSFRNTFZpZXcgX2luc2VydGFi
bGVQYXN0ZWJvYXJkVHlwZXNdOwogICAgIE5TQXJyYXkgKlVSTFR5cGVzID0gW05TUGFzdGVib2Fy
ZCBfd2ViX2RyYWdUeXBlc0ZvclVSTF07Ci0gICAgTlNNdXRhYmxlU2V0ICp0eXBlcyA9IFtbTlNN
dXRhYmxlU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OmVkaXRhYmxlVHlwZXNdOworICAgIGF1dG8g
dHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OmVkaXRh
YmxlVHlwZXNdKTsKICAgICBbdHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpVUkxUeXBlc107CiAg
ICAgW3R5cGVzIGFkZE9iamVjdDpbV2ViSFRNTFZpZXcgX2R1bW15UGFzdGVib2FyZFR5cGVdXTsK
ICAgICBbc2VsZiByZWdpc3RlckZvckRyYWdnZWRUeXBlczpbdHlwZXMgYWxsT2JqZWN0c11dOwot
ICAgIFt0eXBlcyByZWxlYXNlXTsKIH0KIAogc3RhdGljIGJvb2wgbmVlZHNPdXRsb29rUXVpcmtz
U2NyaXB0KCkKQEAgLTE0NDksMTAgKzE0NDgsOSBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXph
dGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAog
I2VuZGlmCiAKICAgICBOU1JlY3QgZiA9IFtzZWxmIGZyYW1lXTsKLSAgICBXZWJGcmFtZVZpZXcg
KmZyYW1lVmlldyA9IFtbV2ViRnJhbWVWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOiBOU01ha2VS
ZWN0KDAsMCxmLnNpemUud2lkdGgsZi5zaXplLmhlaWdodCldOworICAgIGF1dG8gZnJhbWVWaWV3
ID0gYWRvcHROUyhbW1dlYkZyYW1lVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTogTlNNYWtlUmVj
dCgwLDAsZi5zaXplLndpZHRoLGYuc2l6ZS5oZWlnaHQpXSk7CiAgICAgW2ZyYW1lVmlldyBzZXRB
dXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVd
OwotICAgIFtzZWxmIGFkZFN1YnZpZXc6ZnJhbWVWaWV3XTsKLSAgICBbZnJhbWVWaWV3IHJlbGVh
c2VdOworICAgIFtzZWxmIGFkZFN1YnZpZXc6ZnJhbWVWaWV3LmdldCgpXTsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBpZiAoQ2xhc3MgZ2VzdHVyZUNsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmco
QCJOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyIikpIHsKQEAgLTE2MDksNyArMTYw
Nyw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJp
bmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAgICAgaWYgKFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpXZWJTbWFydEluc2VydERlbGV0ZUVu
YWJsZWRdKQogICAgICAgICBbc2VsZiBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ6W1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpXZWJTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWRdXTsKIAotICAgIFtXZWJGcmFtZSBfY3JlYXRlTWFpbkZyYW1lV2l0aFBh
Z2U6X3ByaXZhdGUtPnBhZ2UgZnJhbWVOYW1lOmZyYW1lTmFtZSBmcmFtZVZpZXc6ZnJhbWVWaWV3
XTsKKyAgICBbV2ViRnJhbWUgX2NyZWF0ZU1haW5GcmFtZVdpdGhQYWdlOl9wcml2YXRlLT5wYWdl
IGZyYW1lTmFtZTpmcmFtZU5hbWUgZnJhbWVWaWV3OmZyYW1lVmlldy5nZXQoKV07CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IFdlYlRocmVhZE5T
UnVuTG9vcCgpOwpAQCAtMTYzMSw3ICsxNjI5LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6
YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QK
ICAgICBOU1ZpZXcgKm5leHRLZXlWaWV3ID0gW3NlbGYgbmV4dEtleVZpZXddOwogICAgIGlmIChu
ZXh0S2V5VmlldyAmJiBuZXh0S2V5VmlldyAhPSBmcmFtZVZpZXcpCiAgICAgICAgIFtmcmFtZVZp
ZXcgc2V0TmV4dEtleVZpZXc6bmV4dEtleVZpZXddOwotICAgIFtzdXBlciBzZXROZXh0S2V5Vmll
dzpmcmFtZVZpZXddOworICAgIFtzdXBlciBzZXROZXh0S2V5VmlldzpmcmFtZVZpZXcuZ2V0KCld
OwogCiAgICAgaWYgKFtbc2VsZiBjbGFzc10gc2hvdWxkSW5jbHVkZUluV2ViS2l0U3RhdGlzdGlj
c10pCiAgICAgICAgICsrV2ViVmlld0NvdW50OwpAQCAtMTcyOCw3ICsxNzI2LDcgQEAgKyAoTlNB
cnJheSAqKV9zdXBwb3J0ZWRNSU1FVHlwZXMKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICsg
KE5TQXJyYXkgKilfc3VwcG9ydGVkRmlsZUV4dGVuc2lvbnMKIHsKLSAgICBOU011dGFibGVTZXQg
KmV4dGVuc2lvbnMgPSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07CisgICAgYXV0byBleHRl
bnNpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwogICAgIE5TQXJy
YXkgKk1JTUVUeXBlcyA9IFtzZWxmIF9zdXBwb3J0ZWRNSU1FVHlwZXNdOwogICAgIE5TRW51bWVy
YXRvciAqZW51bWVyYXRvciA9IFtNSU1FVHlwZXMgb2JqZWN0RW51bWVyYXRvcl07CiAgICAgTlNT
dHJpbmcgKk1JTUVUeXBlOwpAQCAtMTczOCw5ICsxNzM2LDcgQEAgKyAoTlNBcnJheSAqKV9zdXBw
b3J0ZWRGaWxlRXh0ZW5zaW9ucwogICAgICAgICAgICAgW2V4dGVuc2lvbnMgYWRkT2JqZWN0c0Zy
b21BcnJheTpleHRlbnNpb25zRm9yVHlwZV07CiAgICAgICAgIH0KICAgICB9Ci0gICAgTlNBcnJh
eSAqdW5pcXVlRXh0ZW5zaW9ucyA9IFtleHRlbnNpb25zIGFsbE9iamVjdHNdOwotICAgIFtleHRl
bnNpb25zIHJlbGVhc2VdOwotICAgIHJldHVybiB1bmlxdWVFeHRlbnNpb25zOworICAgIHJldHVy
biBbZXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKIH0KICNlbmRpZgogCkBAIC0xNzg1LDExICsxNzgx
LDkgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilz
dHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+ZHJhd3NCYWNrZ3Jv
dW5kID0gWUVTOwogICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBDR0NvbG9yUmV0YWlu
KFdlYkNvcmU6OmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKSk7CiAKLSAgICBX
ZWJGcmFtZVZpZXcgKmZyYW1lVmlldyA9IG5pbDsKLSAgICBmcmFtZVZpZXcgPSBbW1dlYkZyYW1l
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTogQ0dSZWN0TWFrZSgwLDAsZnJhbWUuc2l6ZS53aWR0
aCxmcmFtZS5zaXplLmhlaWdodCldOworICAgIGF1dG8gZnJhbWVWaWV3ID0gYWRvcHROUyhbW1dl
YkZyYW1lVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTogQ0dSZWN0TWFrZSgwLDAsZnJhbWUuc2l6
ZS53aWR0aCxmcmFtZS5zaXplLmhlaWdodCldKTsKICAgICBbZnJhbWVWaWV3IHNldEF1dG9yZXNp
emluZ01hc2s6TlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZV07Ci0gICAg
W3NlbGYgYWRkU3VidmlldzpmcmFtZVZpZXddOwotICAgIFtmcmFtZVZpZXcgcmVsZWFzZV07Cisg
ICAgW3NlbGYgYWRkU3VidmlldzpmcmFtZVZpZXcuZ2V0KCldOwogCiAgICAgX3ByaXZhdGUtPmdy
b3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIF9wcml2YXRlLT5wcmVm
ZXJlbmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAt
PmFkZFdlYlZpZXcoc2VsZik7CkBAIC0yNTc2LDIyICsyNTcwLDE4IEBAIC0gKFdlYkRvd25sb2Fk
ICopX2Rvd25sb2FkVVJMOihOU1VSTCAqKVVSTAogewogICAgIEFTU0VSVChVUkwpOwogCi0gICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJM
OlVSTF07CisgICAgYXV0byByZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10g
aW5pdFdpdGhVUkw6VVJMXSk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgot
ICAgIFdlYkRvd25sb2FkICpkb3dubG9hZCA9IFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoUmVx
dWVzdDpyZXF1ZXN0IGRlbGVnYXRlOl9wcml2YXRlLT5kb3dubG9hZERlbGVnYXRlIGRpcmVjdG9y
eTpuaWxdOworICAgIHJldHVybiBbV2ViRG93bmxvYWQgX2Rvd25sb2FkV2l0aFJlcXVlc3Q6cmVx
dWVzdC5nZXQoKSBkZWxlZ2F0ZTpfcHJpdmF0ZS0+ZG93bmxvYWREZWxlZ2F0ZSBkaXJlY3Rvcnk6
bmlsXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIFtyZXF1ZXN0IHJl
bGVhc2VdOwotCi0gICAgcmV0dXJuIGRvd25sb2FkOwogfQogCiAtIChXZWJWaWV3ICopX29wZW5O
ZXdXaW5kb3dXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIE5TRGlj
dGlvbmFyeSAqZmVhdHVyZXMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgYXV0
byBmZWF0dXJlcyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBX
ZWJWaWV3ICpuZXdXaW5kb3dXZWJWaWV3ID0gW1tzZWxmIF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3
ZWJWaWV3OnNlbGYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0Om5pbAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93RmVhdHVyZXM6ZmVhdHVyZXNdOwotICAg
IFtmZWF0dXJlcyByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpbmRvd0ZlYXR1cmVzOmZlYXR1cmVzLmdldCgpXTsKICAgICBp
ZiAoIW5ld1dpbmRvd1dlYlZpZXcpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTMzNjYsOSAr
MzM1Niw4IEBAIC0gKHZvaWQpX2RpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6KFdlYkZy
YW1lICopZnJhbWUKICAgICBpZiAoYXV0byogZWxlbWVudCA9IGRvY3VtZW50ID8gZG9jdW1lbnQt
PmZ1bGxzY3JlZW5NYW5hZ2VyKCkuY3VycmVudEZ1bGxzY3JlZW5FbGVtZW50KCkgOiAwKSB7CiAg
ICAgICAgIFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OmNsb3NlRnVsbFNjcmVlbldp
dGhMaXN0ZW5lcjopOwogICAgICAgICBpZiAoW19wcml2YXRlLT5VSURlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpzZWxlY3Rvcl0pIHsKLSAgICAgICAgICAgIFdlYktpdEZ1bGxTY3JlZW5MaXN0
ZW5lciAqbGlzdGVuZXIgPSBbW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciBhbGxvY10gaW5pdFdp
dGhFbGVtZW50OmVsZW1lbnRdOwotICAgICAgICAgICAgQ2FsbFVJRGVsZWdhdGUoc2VsZiwgc2Vs
ZWN0b3IsIGxpc3RlbmVyKTsKLSAgICAgICAgICAgIFtsaXN0ZW5lciByZWxlYXNlXTsKKyAgICAg
ICAgICAgIGF1dG8gbGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVy
IGFsbG9jXSBpbml0V2l0aEVsZW1lbnQ6ZWxlbWVudF0pOworICAgICAgICAgICAgQ2FsbFVJRGVs
ZWdhdGUoc2VsZiwgc2VsZWN0b3IsIGxpc3RlbmVyLmdldCgpKTsKICAgICAgICAgfSBlbHNlIGlm
IChfcHJpdmF0ZS0+bmV3RnVsbHNjcmVlbkNvbnRyb2xsZXIgJiYgW19wcml2YXRlLT5uZXdGdWxs
c2NyZWVuQ29udHJvbGxlciBpc0Z1bGxTY3JlZW5dKSB7CiAgICAgICAgICAgICBbX3ByaXZhdGUt
Pm5ld0Z1bGxzY3JlZW5Db250cm9sbGVyIGNsb3NlXTsKICAgICAgICAgfQpAQCAtMzYxMywxMSAr
MzYwMiwxMCBAQCAtICh2b2lkKXJlbW92ZUFsbENhcmV0Q2hhbmdlTGlzdGVuZXJzCiAtICh2b2lk
KWNhcmV0Q2hhbmdlZAogewogICAgIFtfcHJpdmF0ZS0+X2NhcmV0Q2hhbmdlTGlzdGVuZXIgY2Fy
ZXRDaGFuZ2VkXTsKLSAgICBOU1NldCAqY29weSA9IFtfcHJpdmF0ZS0+X2NhcmV0Q2hhbmdlTGlz
dGVuZXJzIGNvcHldOwotICAgIGZvciAoaWQgPFdlYkNhcmV0Q2hhbmdlTGlzdGVuZXI+IGxpc3Rl
bmVyIGluIGNvcHkpIHsKKyAgICBhdXRvIGNvcHkgPSBhZG9wdE5TKFtfcHJpdmF0ZS0+X2NhcmV0
Q2hhbmdlTGlzdGVuZXJzIGNvcHldKTsKKyAgICBmb3IgKGlkIDxXZWJDYXJldENoYW5nZUxpc3Rl
bmVyPiBsaXN0ZW5lciBpbiBjb3B5LmdldCgpKSB7CiAgICAgICAgIFtsaXN0ZW5lciBjYXJldENo
YW5nZWRdOwogICAgIH0KLSAgICBbY29weSByZWxlYXNlXTsKIH0KIAogLSAodm9pZClfY2xlYXJE
ZWxlZ2F0ZXMKQEAgLTM4NjEsOSArMzg0OSw4IEBAIC0gKHZvaWQpc2V0QmFja2dyb3VuZENvbG9y
OihOU0NvbG9yICopYmFja2dyb3VuZENvbG9yCiAgICAgaWYgKFtfcHJpdmF0ZS0+YmFja2dyb3Vu
ZENvbG9yIGlzRXF1YWw6YmFja2dyb3VuZENvbG9yXSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWQgb2xkID0gX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvcjsKKyAgICBhdXRvIG9sZCA9IGFkb3B0
TlMoX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvcik7CiAgICAgX3ByaXZhdGUtPmJhY2tncm91bmRD
b2xvciA9IFtiYWNrZ3JvdW5kQ29sb3IgcmV0YWluXTsKLSAgICBbb2xkIHJlbGVhc2VdOwogCiAg
ICAgW1tzZWxmIG1haW5GcmFtZV0gX3VwZGF0ZUJhY2tncm91bmRBbmRVcGRhdGVzV2hpbGVPZmZz
Y3JlZW5dOwogfQpAQCAtNTMwMCw3ICs1Mjg3LDcgQEAgKyAoTlNBcnJheSAqKU1JTUVUeXBlc1No
b3duQXNIVE1MCiAKICsgKHZvaWQpc2V0TUlNRVR5cGVzU2hvd25Bc0hUTUw6KE5TQXJyYXkgKilN
SU1FVHlwZXMKIHsKLSAgICBOU0RpY3Rpb25hcnkgKnZpZXdUeXBlcyA9IFtbV2ViRnJhbWVWaWV3
IF92aWV3VHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOllFU10gY29weV07CisgICAgYXV0byB2
aWV3VHlwZXMgPSBhZG9wdE5TKFtbV2ViRnJhbWVWaWV3IF92aWV3VHlwZXNBbGxvd0ltYWdlVHlw
ZU9taXNzaW9uOllFU10gY29weV0pOwogICAgIE5TRW51bWVyYXRvciAqZW51bWVyYXRvciA9IFt2
aWV3VHlwZXMga2V5RW51bWVyYXRvcl07CiAgICAgaWQga2V5OwogICAgIHdoaWxlICgoa2V5ID0g
W2VudW1lcmF0b3IgbmV4dE9iamVjdF0pKSB7CkBAIC01MzE0LDcgKzUzMDEsNiBAQCArICh2b2lk
KXNldE1JTUVUeXBlc1Nob3duQXNIVE1MOihOU0FycmF5ICopTUlNRVR5cGVzCiAgICAgICAgICAg
ICAgICAgcmVwcmVzZW50YXRpb25DbGFzczpbV2ViSFRNTFJlcHJlc2VudGF0aW9uIGNsYXNzXQog
ICAgICAgICAgICAgICAgIGZvck1JTUVUeXBlOltNSU1FVHlwZXMgb2JqZWN0QXRJbmRleDppXV07
CiAgICAgfQotICAgIFt2aWV3VHlwZXMgcmVsZWFzZV07CiB9CiAKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKQEAgLTU4MDksNyArNTc5NSw3IEBAIC0gKHZvaWQpc2V0UHJlZmVyZW5jZXM6KFdl
YlByZWZlcmVuY2VzICopcHJlZnMKIAogICAgIFtwcmVmcyB3aWxsQWRkVG9XZWJWaWV3XTsKIAot
ICAgIFdlYlByZWZlcmVuY2VzICpvbGRQcmVmcyA9IF9wcml2YXRlLT5wcmVmZXJlbmNlczsKKyAg
ICBhdXRvIG9sZFByZWZzID0gYWRvcHROUyhfcHJpdmF0ZS0+cHJlZmVyZW5jZXMpOwogCiAgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxm
IG5hbWU6V2ViUHJlZmVyZW5jZXNDaGFuZ2VkSW50ZXJuYWxOb3RpZmljYXRpb24gb2JqZWN0Oltz
ZWxmIHByZWZlcmVuY2VzXV07CiAgICAgW1dlYlByZWZlcmVuY2VzIF9yZW1vdmVSZWZlcmVuY2VG
b3JJZGVudGlmaWVyOltvbGRQcmVmcyBpZGVudGlmaWVyXV07CkBAIC01ODIzLDcgKzU4MDksNiBA
QCAtICh2b2lkKXNldFByZWZlcmVuY2VzOihXZWJQcmVmZXJlbmNlcyAqKXByZWZzCiAgICAgW1tz
ZWxmIHByZWZlcmVuY2VzXSBfcG9zdFByZWZlcmVuY2VzQ2hhbmdlZEFQSU5vdGlmaWNhdGlvbl07
CiAKICAgICBbb2xkUHJlZnMgZGlkUmVtb3ZlRnJvbVdlYlZpZXddOwotICAgIFtvbGRQcmVmcyBy
ZWxlYXNlXTsKIH0KIAogLSAoV2ViUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcwpAQCAtNTgzNCw5
ICs1ODE5LDggQEAgLSAoV2ViUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcwogLSAodm9pZClzZXRQ
cmVmZXJlbmNlc0lkZW50aWZpZXI6KE5TU3RyaW5nICopYW5JZGVudGlmaWVyCiB7CiAgICAgaWYg
KCFfcHJpdmF0ZS0+Y2xvc2VkICYmICFbYW5JZGVudGlmaWVyIGlzRXF1YWw6W1tzZWxmIHByZWZl
cmVuY2VzXSBpZGVudGlmaWVyXV0pIHsKLSAgICAgICAgV2ViUHJlZmVyZW5jZXMgKnByZWZzID0g
W1tXZWJQcmVmZXJlbmNlcyBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmFuSWRlbnRpZmllcl07
Ci0gICAgICAgIFtzZWxmIHNldFByZWZlcmVuY2VzOnByZWZzXTsKLSAgICAgICAgW3ByZWZzIHJl
bGVhc2VdOworICAgICAgICBhdXRvIHByZWZzID0gYWRvcHROUyhbW1dlYlByZWZlcmVuY2VzIGFs
bG9jXSBpbml0V2l0aElkZW50aWZpZXI6YW5JZGVudGlmaWVyXSk7CisgICAgICAgIFtzZWxmIHNl
dFByZWZlcmVuY2VzOnByZWZzLmdldCgpXTsKICAgICB9CiB9CiAKQEAgLTY4MDcsOSArNjc5MSw4
IEBAIC0gKEJPT0wpc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW4KIAogLSAodm9pZClzZXRDdXJy
ZW50Tm9kZUhpZ2hsaWdodDooV2ViTm9kZUhpZ2hsaWdodCAqKW5vZGVIaWdobGlnaHQKIHsKLSAg
ICBpZCBvbGQgPSBfcHJpdmF0ZS0+Y3VycmVudE5vZGVIaWdobGlnaHQ7CisgICAgYXV0byBvbGQg
PSBhZG9wdE5TKF9wcml2YXRlLT5jdXJyZW50Tm9kZUhpZ2hsaWdodCk7CiAgICAgX3ByaXZhdGUt
PmN1cnJlbnROb2RlSGlnaGxpZ2h0ID0gW25vZGVIaWdobGlnaHQgcmV0YWluXTsKLSAgICBbb2xk
IHJlbGVhc2VdOwogfQogCiAtIChXZWJOb2RlSGlnaGxpZ2h0ICopY3VycmVudE5vZGVIaWdobGln
aHQKQEAgLTcxNTMsMTIgKzcxMzYsMTEgQEAgLSAodm9pZClzdG9wTG9hZGluZ0FuZENsZWFyCiAK
ICAgICAgICAgV2ViRnJhbWVWaWV3ICptYWluRnJhbWVWaWV3ID0gW2ZyYW1lIGZyYW1lVmlld107
CiAgICAgICAgIGZsb2F0IHNjYWxlID0gW1ttYWluRnJhbWVWaWV3IGRvY3VtZW50Vmlld10gc2Nh
bGVdOwotICAgICAgICBXZWJQbGFpbldoaXRlVmlldyAqcGxhaW5XaGl0ZVZpZXcgPSBbW1dlYlBs
YWluV2hpdGVWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdOworICAgICAgICBh
dXRvIHBsYWluV2hpdGVWaWV3ID0gYWRvcHROUyhbW1dlYlBsYWluV2hpdGVWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKICAgICAgICAgW3BsYWluV2hpdGVWaWV3IHNldFNj
YWxlOnNjYWxlXTsKICAgICAgICAgW3BsYWluV2hpdGVWaWV3IHNldEZyYW1lOlttYWluRnJhbWVW
aWV3IGJvdW5kc11dOwotICAgICAgICBbbWFpbkZyYW1lVmlldyBfc2V0RG9jdW1lbnRWaWV3OnBs
YWluV2hpdGVWaWV3XTsKKyAgICAgICAgW21haW5GcmFtZVZpZXcgX3NldERvY3VtZW50Vmlldzpw
bGFpbldoaXRlVmlldy5nZXQoKV07CiAgICAgICAgIFtwbGFpbldoaXRlVmlldyBzZXROZWVkc0Rp
c3BsYXk6WUVTXTsKLSAgICAgICAgW3BsYWluV2hpdGVWaWV3IHJlbGVhc2VdOwogICAgIH0pOwog
fQogI2VuZGlmCkBAIC04NjcwLDExICs4NjUyLDEwIEBAIC0gKHZvaWQpX29wZW5GcmFtZUluTmV3
V2luZG93RnJvbU1lbnU6KE5TTWVudUl0ZW0gKilzZW5kZXIKICAgICBBU1NFUlQoW2VsZW1lbnQg
aXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pOwogCiAgICAgV2ViRGF0YVNvdXJj
ZSAqZGF0YVNvdXJjZSA9IFsoV2ViRnJhbWUgKilbZWxlbWVudCBvYmplY3RGb3JLZXk6V2ViRWxl
bWVudEZyYW1lS2V5XSBkYXRhU291cmNlXTsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
W2RhdGFTb3VyY2UgcmVxdWVzdF0gY29weV07CisgICAgYXV0byByZXF1ZXN0ID0gYWRvcHROUyhb
W2RhdGFTb3VyY2UgcmVxdWVzdF0gY29weV0pOwogICAgIEFTU0VSVChyZXF1ZXN0KTsKIAotICAg
IFtzZWxmIF9vcGVuTmV3V2luZG93V2l0aFJlcXVlc3Q6cmVxdWVzdF07Ci0gICAgW3JlcXVlc3Qg
cmVsZWFzZV07CisgICAgW3NlbGYgX29wZW5OZXdXaW5kb3dXaXRoUmVxdWVzdDpyZXF1ZXN0Lmdl
dCgpXTsKIH0KIAogLSAodm9pZClfc2VhcmNoV2l0aEdvb2dsZUZyb21NZW51OihpZClzZW5kZXIK
QEAgLTg2OTEsMTIgKzg2NzIsMTEgQEAgLSAodm9pZClfc2VhcmNoV2l0aEdvb2dsZUZyb21NZW51
OihpZClzZW5kZXIKIAogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9h
cmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXTsKICAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlw
ZXM6QFtXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSBvd25lcjpuaWxdOwot
ICAgIE5TTXV0YWJsZVN0cmluZyAqcyA9IFtzZWxlY3RlZFN0cmluZyBtdXRhYmxlQ29weV07Cisg
ICAgYXV0byBzID0gYWRvcHROUyhbc2VsZWN0ZWRTdHJpbmcgbXV0YWJsZUNvcHldKTsKICAgICBj
b25zdCB1bmljaGFyIG5vbkJyZWFraW5nU3BhY2VDaGFyYWN0ZXIgPSAweEEwOwogICAgIE5TU3Ry
aW5nICpub25CcmVha2luZ1NwYWNlU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZub25CcmVha2luZ1NwYWNlQ2hhcmFjdGVyIGxlbmd0aDoxXTsKICAgICBbcyByZXBsYWNl
T2NjdXJyZW5jZXNPZlN0cmluZzpub25CcmVha2luZ1NwYWNlU3RyaW5nIHdpdGhTdHJpbmc6QCIg
IiBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3MgbGVuZ3RoXSldOwotICAgIFtwYXN0
ZWJvYXJkIHNldFN0cmluZzpzIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2Fy
ZFR5cGUoKV07Ci0gICAgW3MgcmVsZWFzZV07CisgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOnMu
Z2V0KCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKIAog
ICAgIC8vIEZJWE1FOiBzZWVtcyBmcmFnaWxlIHRvIHVzZSB0aGUgc2VydmljZSBieSBuYW1lLCBi
dXQgdGhpcyBpcyB3aGF0IEFwcEtpdCBkb2VzCiAgICAgTlNQZXJmb3JtU2VydmljZShAIlNlYXJj
aCBXaXRoIEdvb2dsZSIsIHBhc3RlYm9hcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJXaW5kb3dBbmltYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYldpbmRvd0FuaW1hdGlvbi5tbQppbmRleCBhZmE3YjUxNDdiOTVk
YjdhZDRkNTc3YTY5MDhlODgwNDkwODk0YWVkLi5lMDBjOTg4ZmI0NTExZWQ2ZWU3Y2MxY2Q0MzQ1
NTQzMWI2YWFkOGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYldpbmRvd0FuaW1hdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYldpbmRvd0FuaW1hdGlvbi5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCA8cGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW1wb3J0IDx3dGYvTWF0aEV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBz
dGF0aWMgY29uc3QgQ0dGbG9hdCBzbG93TW90aW9uRmFjdG9yID0gMTA7CiAKQEAgLTE3OCw5ICsx
NzksOCBAQCAtICh2b2lkKXNldEN1cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylw
cm9ncmVzcwogCiAtICh2b2lkKXNldFN1YkFuaW1hdGlvbjooTlNBbmltYXRpb24gKilhbmltYXRp
b24KIHsKLSAgICBpZCBvbGRBbmltYXRpb24gPSBfc3ViQW5pbWF0aW9uOworICAgIGF1dG8gb2xk
QW5pbWF0aW9uID0gYWRvcHROUyhfc3ViQW5pbWF0aW9uKTsKICAgICBfc3ViQW5pbWF0aW9uID0g
W2FuaW1hdGlvbiByZXRhaW5dOwotICAgIFtvbGRBbmltYXRpb24gcmVsZWFzZV07CiB9CiAKIC0g
KE5TVGltZUludGVydmFsKWFkZGl0aW9uYWxEdXJhdGlvbk5lZWRlZFRvUmVhY2hGaW5hbEZyYW1l
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjEz
MWJkZTJhNDIwMjdmNjNlYWFmMzBkMGMwYzQ1N2M2NzQ5MTM4YS4uMjE2OGIzYWJkNmIyOWJmNDc0
Yjc5NTBjYTI5NDg1ZjZmYmVhNGU1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTAyLTExICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9m
IFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2Vd
IGluIFdlYktpdCBieSB1c2luZyBzbWFydCBwb2ludGVycy4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIpOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIpOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVu
ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAg
ICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cpOgorICAgICAgICAoZGVzdHJv
eVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cpOgorICAgICAgICAoZHVtcEZyYW1lQXNQREYpOgor
ICAgICAgICAoZHVtcEJhY2tGb3J3YXJkTGlzdEZvcldlYlZpZXcpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW06CisgICAgICAgICgrW0R1
bXBSZW5kZXJUcmVlUGFzdGVib2FyZCBfcGFzdGVib2FyZFdpdGhOYW1lOl0pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAo
LVtFdmVudFNlbmRpbmdDb250cm9sbGVyIG1vdXNlRG93bjp3aXRoTW9kaWZpZXJzOl0pOgorICAg
ICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIG1vdXNlVXA6d2l0aE1vZGlmaWVyczpdKToK
KyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZU1vdmVUb1g6WTpdKToKKyAg
ICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBrZXlEb3duOndpdGhNb2RpZmllcnM6d2l0
aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHNlbnRUb3Vj
aEV2ZW50T2ZUeXBlOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHRvdWNo
RW5kXSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgdG91Y2hDYW5jZWxdKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06Cisg
ICAgICAgICgtW1Jlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRS
ZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChUZXN0UnVubmVyOjph
cHBsaWNhdGlvbkNhY2hlRGlza1VzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6CisgICAgICAgIChUZXN0UnVubmVyOjpj
bGVhckJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChUZXN0UnVubmVyOjprZWVwV2ViSGlzdG9y
eSk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgIChUZXN0UnVubmVy
OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICgtW0FQSVRlc3REZWxlZ2F0
ZUlQaG9uZSBpbml0V2l0aFRlc3RSdW5uZXI6dXRmOERhdGE6YmFzZVVSTDpdKToKKyAgICAgICAg
KC1bQVBJVGVzdERlbGVnYXRlSVBob25lIGRlYWxsb2NdKToKKyAgICAgICAgKC1bQVBJVGVzdERl
bGVnYXRlSVBob25lIHJ1bl0pOgorICAgICAgICAoLVtBUElUZXN0RGVsZWdhdGVJUGhvbmUgX2Ns
ZWFuVXBdKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJh
c2VVUkwpOgorICAgICAgICAoLVtTeW5jaHJvbm91c0xvYWRlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1N5bmNocm9ub3VzTG9hZGVyIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOl0pOgorICAgICAgICAoK1tTeW5jaHJvbm91c0xvYWRlciBtYWtlUmVxdWVzdDp3
aXRoVXNlcm5hbWU6cGFzc3dvcmQ6XSk6CisgICAgICAgIChUZXN0UnVubmVyOjphZGRDaHJvbWVJ
bnB1dEZpZWxkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtV
SURlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9y
aWdpbjpmcmFtZTpsaXN0ZW5lcjpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB0aW1lckZpcmVk
XSk6CisgICAgICAgICgtW1VJRGVsZWdhdGUgZGVhbGxvY10pOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxp
c3RlbmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90
aWZpY2F0aW9uTGlzdGVuZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tOgor
ICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBpbnRlcnBvbGF0ZWRFdmVudHM6XSk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tOgorICAgICAg
ICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tOgorICAgICAgICAoV1RSOjpQ
bGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8uaDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLm1tOgorICAg
ICAgICAoLVtXZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mbyBkcmFnZ2VkSW1hZ2VdKToKKyAgICAgICAg
KC1bV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mbyBkcmFnZ2luZ1Bhc3RlYm9hcmRdKToKKyAg
ICAgICAgKC1bV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZV0pOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJk
Lm1tOgorICAgICAgICAoK1tXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZCBfcGFzdGVib2FyZFdp
dGhOYW1lOl0pOgorICAgICAgICAoLVtMb2NhbFBhc3RlYm9hcmQgX2FkZFR5cGVzV2l0aG91dFVw
ZGF0aW5nQ2hhbmdlQ291bnQ6b3duZXI6XSk6CisKIDIwMjEtMDItMTEgIEFha2FzaCBKYWluICA8
YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIGJ1aWxkLndlYmtpdC5vcmcgc2hvdWxk
IGRpc3BsYXkgY29tbWl0IGlkZW50aWZpZXIgaW4gYnVpbGRzCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCmluZGV4IDY0NWZj
ODYzY2VmMTBhMDBmNWJiNGI3ZDEzOWM2ZTBkY2U0MDhkZTEuLjQ5ODQwOWRiMWJhMGU2ODE3ZWZj
ZjZkMzJmYTQxNjdmMzUyYWU4YzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lv
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCkBAIC0xMDUwLDcgKzEwNTAsOCBAQCBi
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uQ2FsbGJhYwogICAgIC8vIE90aGVyIHBsYXRmb3JtcyBtYXkgYmUgZGlm
ZmVyZW50LgogICAgIGlmIChtX25vdGlmaWNhdGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSBbW0FjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyIGFsbG9jXSBpbml0XTsKKworICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9
IGFkb3B0TlMoW1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxvY10gaW5pdF0p
OwogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc2V0UGxhdGZvcm1FbGVtZW50OnBsYXRmb3Jt
VUlFbGVtZW50KCldOwogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc2V0Q2FsbGJhY2s6ZnVu
Y3Rpb25DYWxsYmFja107CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzdGFydE9ic2Vydmlu
Z107CkBAIC0xMDY0LDcgKzEwNjUsNiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJl
bW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkKICAgICBBU1NFUlQobV9ub3RpZmljYXRpb25IYW5k
bGVyKTsKICAgICAKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHN0b3BPYnNlcnZpbmddOwot
ICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgbV9ub3RpZmljYXRpb25I
YW5kbGVyID0gbmlsOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IGU0YWZhYzY2MjU1ZTNlYTg5ZDZiNGQ5
MjAxZDBkODU0OGQ4ZDg5MDcuLjk2NmY0NjViZmFiMDc3YWU4MmNlY2I3YTE3MjE0YjQ4MmQ0NDA0
ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCkBAIC0xNDgwLDcgKzE0ODAsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTT2JqZWN0UmVmIGZ1bmN0aW9uQ2Fs
bGJhYwogICAgIC8vIE90aGVyIHBsYXRmb3JtcyBtYXkgYmUgZGlmZmVyZW50LgogICAgIGlmICht
X25vdGlmaWNhdGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX25vdGlm
aWNhdGlvbkhhbmRsZXIgPSBbW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGFsbG9j
XSBpbml0XTsKKworICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IGFkb3B0TlMoW1tBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFttX25vdGlmaWNh
dGlvbkhhbmRsZXIgc2V0UGxhdGZvcm1FbGVtZW50OnBsYXRmb3JtVUlFbGVtZW50KCldOwogICAg
IFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc2V0Q2FsbGJhY2s6ZnVuY3Rpb25DYWxsYmFja107CiAg
ICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzdGFydE9ic2VydmluZ107CkBAIC0xNDk0LDcgKzE0
OTUsNiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxp
c3RlbmVyKCkKICAgICBBU1NFUlQobV9ub3RpZmljYXRpb25IYW5kbGVyKTsKIAogICAgIFttX25v
dGlmaWNhdGlvbkhhbmRsZXIgc3RvcE9ic2VydmluZ107Ci0gICAgW21fbm90aWZpY2F0aW9uSGFu
ZGxlciByZWxlYXNlXTsKICAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSBuaWw7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCA2NDM2NTQ1YWI4
Zjk4NTZlZjIyYWQ3ZmMxNTYxYWJlNDcwYjhiZWRkLi4zNWFiZjFiZTVlZmZlNDZhNDkzMDE5NDc1
N2VhZTYxNDdmNDFlODlhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCkBAIC03MzUsMjEgKzczNSwxOSBAQCBXZWJWaWV3ICpjcmVhdGVXZWJWaWV3QW5kT2Zm
c2NyZWVuV2luZG93KCkKICAgICB1aVdpbmRvd1JlY3Qub3JpZ2luLnkgKz0gW1VJQXBwIHN0YXR1
c0JhckhlaWdodF07CiAgICAgVUlXaW5kb3cgKnVpV2luZG93ID0gW1tbVUlXaW5kb3cgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6dWlXaW5kb3dSZWN0XSBhdXRvcmVsZWFzZV07CiAKLSAgICBVSVZpZXdD
b250cm9sbGVyICp2aWV3Q29udHJvbGxlciA9IFtbVUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5p
dF07Ci0gICAgW3VpV2luZG93IHNldFJvb3RWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07
Ci0gICAgW3ZpZXdDb250cm9sbGVyIHJlbGVhc2VdOworICAgIGF1dG8gdmlld0NvbnRyb2xsZXIg
PSBhZG9wdE5TKFtbVUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgIFt1aVdpbmRv
dyBzZXRSb290Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXIuZ2V0KCldOwogCiAgICAgLy8g
VGhlIFVJV2luZG93IGFuZCBVSVdlYkJyb3dzZXJWaWV3IGFyZSByZWxlYXNlZCB3aGVuIHRoZSBE
dW1wUmVuZGVyVHJlZVdpbmRvdyBpcyBjbG9zZWQuCiAgICAgZHJ0V2luZG93LnVpV2luZG93ID0g
dWlXaW5kb3c7CiAgICAgZHJ0V2luZG93LmJyb3dzZXJWaWV3ID0gd2ViQnJvd3NlclZpZXc7CiAK
LSAgICBEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXcgKnNjcm9sbFZpZXcgPSBbW0R1bXBSZW5k
ZXJUcmVlV2ViU2Nyb2xsVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpsYXlvdXRUZXN0Vmlld3Bv
cnRSZWN0XTsKKyAgICBhdXRvIHNjcm9sbFZpZXcgPSBhZG9wdE5TKFtbRHVtcFJlbmRlclRyZWVX
ZWJTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmxheW91dFRlc3RWaWV3cG9ydFJlY3Rd
KTsKICAgICBbc2Nyb2xsVmlldyBhZGRTdWJ2aWV3OndlYkJyb3dzZXJWaWV3XTsKIAotICAgIFt2
aWV3Q29udHJvbGxlci52aWV3IGFkZFN1YnZpZXc6c2Nyb2xsVmlld107Ci0gICAgW3Njcm9sbFZp
ZXcgcmVsZWFzZV07CisgICAgW1t2aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3OnNjcm9s
bFZpZXcuZ2V0KCldOwogCi0gICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFuZGFyZFZpZXdwb3J0
KHdlYkJyb3dzZXJWaWV3LCBzY3JvbGxWaWV3KTsKKyAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0
YW5kYXJkVmlld3BvcnQod2ViQnJvd3NlclZpZXcsIHNjcm9sbFZpZXcuZ2V0KCkpOwogI2VuZGlm
CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTc5MSw5ICs3ODksOCBAQCBzdGF0aWMg
dm9pZCBkZXN0cm95V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyhXZWJWaWV3ICp3ZWJWaWV3KQog
CiAgICAgW3dpbmRvdyBjbG9zZV07IC8vIHJlbGVhc2VzIHdoZW4gY2xvc2VkCiAjZWxzZQotICAg
IFVJV2luZG93ICp1aVdpbmRvdyA9IFtnV2ViQnJvd3NlclZpZXcgd2luZG93XTsKKyAgICBhdXRv
IHVpV2luZG93ID0gYWRvcHROUyhbZ1dlYkJyb3dzZXJWaWV3IHdpbmRvd10pOwogICAgIFt1aVdp
bmRvdyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICBbdWlXaW5kb3cgcmVsZWFzZV07CiAjZW5k
aWYKIAogICAgIFt3ZWJWaWV3IHJlbGVhc2VdOwpAQCAtMTQ1NCwxNyArMTQ1MSwxNSBAQCBzdGF0
aWMgTlNEYXRhICpkdW1wRnJhbWVBc1BERihXZWJGcmFtZSAqZnJhbWUpCiAgICAgW3ByaW50SW5m
b0RpY3Qgc2V0T2JqZWN0Ok5TUHJpbnRTYXZlSm9iIGZvcktleTpOU1ByaW50Sm9iRGlzcG9zaXRp
b25dOwogICAgIFtwcmludEluZm9EaWN0IHNldE9iamVjdDpwYXRoIGZvcktleTpOU1ByaW50U2F2
ZVBhdGhdOwogCi0gICAgTlNQcmludEluZm8gKnByaW50SW5mbyA9IFtbTlNQcmludEluZm8gYWxs
b2NdIGluaXRXaXRoRGljdGlvbmFyeTpwcmludEluZm9EaWN0XTsKKyAgICBhdXRvIHByaW50SW5m
byA9IGFkb3B0TlMoW1tOU1ByaW50SW5mbyBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OnByaW50
SW5mb0RpY3RdKTsKICAgICBbcHJpbnRJbmZvIHNldEhvcml6b250YWxQYWdpbmF0aW9uOk5TQXV0
b1BhZ2luYXRpb25dOwogICAgIFtwcmludEluZm8gc2V0VmVydGljYWxQYWdpbmF0aW9uOk5TQXV0
b1BhZ2luYXRpb25dOwogICAgIFtwcmludEluZm8gc2V0VmVydGljYWxseUNlbnRlcmVkOk5PXTsK
IAotICAgIE5TUHJpbnRPcGVyYXRpb24gKnByaW50T3BlcmF0aW9uID0gW05TUHJpbnRPcGVyYXRp
b24gcHJpbnRPcGVyYXRpb25XaXRoVmlldzpbZnJhbWUgZnJhbWVWaWV3XSBwcmludEluZm86cHJp
bnRJbmZvXTsKKyAgICBOU1ByaW50T3BlcmF0aW9uICpwcmludE9wZXJhdGlvbiA9IFtOU1ByaW50
T3BlcmF0aW9uIHByaW50T3BlcmF0aW9uV2l0aFZpZXc6W2ZyYW1lIGZyYW1lVmlld10gcHJpbnRJ
bmZvOnByaW50SW5mby5nZXQoKV07CiAgICAgW3ByaW50T3BlcmF0aW9uIHNldFNob3dQYW5lbHM6
Tk9dOwogICAgIFtwcmludE9wZXJhdGlvbiBydW5PcGVyYXRpb25dOwogCi0gICAgW3ByaW50SW5m
byByZWxlYXNlXTsKLQogICAgIE5TRGF0YSAqcGRmRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250
ZW50c09mRmlsZTpwYXRoXTsKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJl
bW92ZUZpbGVBdFBhdGg6cGF0aCBoYW5kbGVyOm5pbF07CiAKQEAgLTE0ODEsNyArMTQ3Niw3IEBA
IHN0YXRpYyB2b2lkIGR1bXBCYWNrRm9yd2FyZExpc3RGb3JXZWJWaWV3KFdlYlZpZXcgKnZpZXcp
CiAKICAgICAvLyBQcmludCBvdXQgYWxsIGl0ZW1zIGluIHRoZSBsaXN0IGFmdGVyIHByZXZUZXN0
QkZJdGVtLCB3aGljaCB3YXMgZnJvbSB0aGUgcHJldmlvdXMgdGVzdAogICAgIC8vIEdhdGhlciBp
dGVtcyBmcm9tIHRoZSBlbmQgb2YgdGhlIGxpc3QsIHRoZSBwcmludCB0aGVtIG91dCBmcm9tIG9s
ZGVzdCB0byBuZXdlc3QKLSAgICBOU011dGFibGVBcnJheSAqaXRlbXNUb1ByaW50ID0gW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgYXV0byBpdGVtc1RvUHJpbnQgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKGludCBpID0gW2JmTGlz
dCBmb3J3YXJkTGlzdENvdW50XTsgaSA+IDA7IGktLSkgewogICAgICAgICBXZWJIaXN0b3J5SXRl
bSAqaXRlbSA9IFtiZkxpc3QgaXRlbUF0SW5kZXg6aV07CiAgICAgICAgIC8vIHNvbWV0aGluZyBp
cyB3cm9uZyBpZiB0aGUgaXRlbSBmcm9tIHRoZSBsYXN0IHRlc3QgaXMgaW4gdGhlIGZvcndhcmQg
cGFydCBvZiB0aGUgYi9mIGxpc3QKQEAgLTE1MDMsNyArMTQ5OCw2IEBAIHN0YXRpYyB2b2lkIGR1
bXBCYWNrRm9yd2FyZExpc3RGb3JXZWJWaWV3KFdlYlZpZXcgKnZpZXcpCiAgICAgZm9yIChpbnQg
aSA9IFtpdGVtc1RvUHJpbnQgY291bnRdLTE7IGkgPj0gMDsgaS0tKQogICAgICAgICBkdW1wSGlz
dG9yeUl0ZW0oW2l0ZW1zVG9QcmludCBvYmplY3RBdEluZGV4OmldLCA4LCBpID09IGN1cnJlbnRJ
dGVtSW5kZXgpOwogCi0gICAgW2l0ZW1zVG9QcmludCByZWxlYXNlXTsKICAgICBwcmludGYoIj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVi
b2FyZC5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9h
cmQubW0KaW5kZXggOTgwNzczNmYzODNkMmVlNzYwMGZiZWNjZWM3NGZlY2U0ODJlYWRkOS4uNDE2
Mjg4OTM1MzM1ZjYzODg2ZDRiMGE1ODM4NGY1ODVmZWZkN2I1OSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCkBAIC02OCwx
MyArNjgsMTEgQEAgKyAoTlNQYXN0ZWJvYXJkICopX3Bhc3RlYm9hcmRXaXRoTmFtZTooTlNTdHJp
bmcgKiluYW1lCiAgICAgICAgIG5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkxv
Y2FsUGFzdGVib2FyZCVkIiwgKytudW1iZXJdOwogICAgIGlmICghbG9jYWxQYXN0ZWJvYXJkcykK
ICAgICAgICAgbG9jYWxQYXN0ZWJvYXJkcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF07Ci0gICAgTG9jYWxQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW2xvY2FsUGFzdGVib2Fy
ZHMgb2JqZWN0Rm9yS2V5Om5hbWVdOwotICAgIGlmIChwYXN0ZWJvYXJkKQorICAgIGlmIChMb2Nh
bFBhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbbG9jYWxQYXN0ZWJvYXJkcyBvYmplY3RGb3JLZXk6
bmFtZV0pCiAgICAgICAgIHJldHVybiBwYXN0ZWJvYXJkOwotICAgIHBhc3RlYm9hcmQgPSBbW0xv
Y2FsUGFzdGVib2FyZCBhbGxvY10gaW5pdFdpdGhOYW1lOm5hbWVdOwotICAgIFtsb2NhbFBhc3Rl
Ym9hcmRzIHNldE9iamVjdDpwYXN0ZWJvYXJkIGZvcktleTpuYW1lXTsKLSAgICBbcGFzdGVib2Fy
ZCByZWxlYXNlXTsKLSAgICByZXR1cm4gcGFzdGVib2FyZDsKKyAgICBhdXRvIHBhc3RlYm9hcmQg
PSBhZG9wdE5TKFtbTG9jYWxQYXN0ZWJvYXJkIGFsbG9jXSBpbml0V2l0aE5hbWU6bmFtZV0pOwor
ICAgIFtsb2NhbFBhc3RlYm9hcmRzIHNldE9iamVjdDpwYXN0ZWJvYXJkLmdldCgpIGZvcktleTpu
YW1lXTsKKyAgICByZXR1cm4gcGFzdGVib2FyZC5nZXQoKTsKIH0KIAogKyAodm9pZClyZWxlYXNl
TG9jYWxQYXN0ZWJvYXJkcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCA4Mjc1MWJjNWI3NDE3MTU1Y2U1YjU0NGFjODcwYTZj
OWRkM2RiMjEzLi43ZWQ5YThkZWI1OTI3ODk0NzNmYTEyOWEzYmMyZWJjOGNhM2I3YzRlIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5t
bQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5t
bQpAQCAtNTg0LDcgKzU4NCw3IEBAIC0gKHZvaWQpbW91c2VEb3duOihpbnQpYnV0dG9uTnVtYmVy
IHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCopbW9kaWZpZXJzCiAgICAgCiAjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNFdmVudFR5cGUgZXZlbnRUeXBlID0gZXZlbnRUeXBl
Rm9yTW91c2VCdXR0b25BbmRBY3Rpb24oYnV0dG9uTnVtYmVyLCBNb3VzZURvd24pOwotICAgIE5T
RXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmV2ZW50VHlwZQorICAg
IGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmV2ZW50
VHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOmxh
c3RNb3VzZVBvc2l0aW9uIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2Rp
ZmllckZsYWdzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0K
QEAgLTU5MiwyMyArNTkyLDIzIEBAIC0gKHZvaWQpbW91c2VEb3duOihpbnQpYnV0dG9uTnVtYmVy
IHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCopbW9kaWZpZXJzCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1
cnJlbnRDb250ZXh0XSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVu
dE51bWJlcjorK2V2ZW50TnVtYmVyIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGlja0NvdW50OmNsaWNrQ291bnQgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJlc3N1cmU6MC4wXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcmVzc3VyZTowLjBdKTsKICNlbHNlCi0gICAgV2ViRXZlbnQgKmV2ZW50ID0g
W1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhNb3VzZUV2ZW50VHlwZTpXZWJFdmVudE1vdXNlRG93
bgorICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoTW91
c2VFdmVudFR5cGU6V2ViRXZlbnRNb3VzZURvd24KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRp
bWVdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbjpsYXN0TW91c2VQb3NpdGlvbl07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpsYXN0TW91c2VQb3NpdGlvbl0p
OwogI2VuZGlmCiAKICAgICBOU1ZpZXcgKnN1YlZpZXcgPSBbW21haW5GcmFtZSB3ZWJWaWV3XSBo
aXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV07CiAgICAgaWYgKHN1YlZpZXcpIHsKICNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6
ZXZlbnRdOworICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07CiAj
ZW5kaWYKICAgICAgICAgewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAgICAg
YXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IGV2ZW50UHJlc3NlZE1vdXNl
QnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KHN1YlZpZXcsIGV2ZW50KTsKKyAgICAgICAg
ICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBldmVudFByZXNzZWRN
b3VzZUJ1dHRvbnNTd2l6emxlckZvclZpZXdBbmRFdmVudChzdWJWaWV3LCBldmVudC5nZXQoKSk7
CiAjZW5kaWYKLSAgICAgICAgICAgIFtzdWJWaWV3IG1vdXNlRG93bjpldmVudF07CisgICAgICAg
ICAgICBbc3ViVmlldyBtb3VzZURvd246ZXZlbnQuZ2V0KCldOwogICAgICAgICB9CiAjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07
CkBAIC02MTYsMTAgKzYxNiw2IEBAIC0gKHZvaWQpbW91c2VEb3duOihpbnQpYnV0dG9uTnVtYmVy
IHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCopbW9kaWZpZXJzCiAgICAgICAgIGlmIChi
dXR0b25OdW1iZXIgPT0gTGVmdE1vdXNlQnV0dG9uKQogICAgICAgICAgICAgbGVmdE1vdXNlQnV0
dG9uRG93biA9IFlFUzsKICAgICB9Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtl
dmVudCByZWxlYXNlXTsKLSNlbmRpZgogfQogCiAtICh2b2lkKW1vdXNlRG93bjooaW50KWJ1dHRv
bk51bWJlcgpAQCAtNjc2LDcgKzY3Miw3IEBAIC0gKHZvaWQpbW91c2VVcDooaW50KWJ1dHRvbk51
bWJlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QqKW1vZGlmaWVycwogICAgIFtbW21h
aW5GcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKICNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBOU0V2ZW50VHlwZSBldmVudFR5cGUgPSBldmVudFR5cGVGb3JNb3Vz
ZUJ1dHRvbkFuZEFjdGlvbihidXR0b25OdW1iZXIsIE1vdXNlVXApOwotICAgIE5TRXZlbnQgKmV2
ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmV2ZW50VHlwZQorICAgIGF1dG8gZXZl
bnQgPSByZXRhaW5QdHIoW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmV2ZW50VHlwZQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOmxhc3RNb3VzZVBv
c2l0aW9uIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdz
OmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KQEAgLTY4NCwx
MSArNjgwLDExIEBAIC0gKHZvaWQpbW91c2VVcDooaW50KWJ1dHRvbk51bWJlciB3aXRoTW9kaWZp
ZXJzOihXZWJTY3JpcHRPYmplY3QqKW1vZGlmaWVycwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4
dF0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnROdW1iZXI6Kytl
dmVudE51bWJlciAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tD
b3VudDpjbGlja0NvdW50IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByZXNzdXJlOjAuMF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJlc3N1cmU6MC4wXSk7CiAjZWxzZQotICAgIFdlYkV2ZW50ICpldmVudCA9IFtbV2ViRXZlbnQg
YWxsb2NdIGluaXRXaXRoTW91c2VFdmVudFR5cGU6V2ViRXZlbnRNb3VzZVVwCisgICAgYXV0byBl
dmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhNb3VzZUV2ZW50VHlwZTpX
ZWJFdmVudE1vdXNlVXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpsYXN0
TW91c2VQb3NpdGlvbl07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2NhdGlvbjpsYXN0TW91c2VQb3NpdGlvbl0pOwogI2VuZGlmCiAKICAg
ICBOU1ZpZXcgKnRhcmdldFZpZXcgPSBbW21haW5GcmFtZSB3ZWJWaWV3XSBoaXRUZXN0OltldmVu
dCBsb2NhdGlvbkluV2luZG93XV07CkBAIC02OTgsMTMgKzY5NCwxMyBAQCAtICh2b2lkKW1vdXNl
VXA6KGludClidXR0b25OdW1iZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0Kiltb2Rp
ZmllcnMKICAgICB0YXJnZXRWaWV3ID0gdGFyZ2V0VmlldyA/IHRhcmdldFZpZXcgOiBbW21haW5G
cmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CiAgICAgYXNzZXJ0KHRhcmdldFZpZXcpOwog
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2
ZW50XTsKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07CiAjZW5kaWYK
ICAgICB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIGF1dG8gZXZlbnRQcmVz
c2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxl
ckZvclZpZXdBbmRFdmVudCh0YXJnZXRWaWV3LCBldmVudCk7CisgICAgICAgIGF1dG8gZXZlbnRQ
cmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6
emxlckZvclZpZXdBbmRFdmVudCh0YXJnZXRWaWV3LCBldmVudC5nZXQoKSk7CiAjZW5kaWYKLSAg
ICAgICAgW3RhcmdldFZpZXcgbW91c2VVcDpldmVudF07CisgICAgICAgIFt0YXJnZXRWaWV3IG1v
dXNlVXA6ZXZlbnQuZ2V0KCldOwogICAgIH0KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOwpAQCAtNzMwLDEwICs3MjYsNiBAQCAtICh2
b2lkKW1vdXNlVXA6KGludClidXR0b25OdW1iZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2Jq
ZWN0Kiltb2RpZmllcnMKICAgICAgICAgZHJhZ2dpbmdJbmZvID0gbmlsOwogICAgIH0KICNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBbZXZlbnQgcmVsZWFzZV07Ci0jZW5k
aWYKIH0KIAogLSAodm9pZCltb3VzZVVwOihpbnQpYnV0dG9uTnVtYmVyCkBAIC03NTcsNyArNzQ5
LDcgQEAgLSAodm9pZCltb3VzZU1vdmVUb1g6KGludCl4IFk6KGludCl5CiAgICAgTlNWaWV3ICp2
aWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBOU1BvaW50IG5ld01vdXNlUG9zaXRpb24gPSBbdmlldyBjb252ZXJ0UG9pbnQ6TlNNYWtlUG9p
bnQoeCwgW3ZpZXcgZnJhbWVdLnNpemUuaGVpZ2h0IC0geSkgdG9WaWV3Om5pbF07Ci0gICAgTlNF
dmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6KGxlZnRNb3VzZUJ1dHRv
bkRvd24gPyBOU0V2ZW50VHlwZUxlZnRNb3VzZURyYWdnZWQgOiBOU0V2ZW50VHlwZU1vdXNlTW92
ZWQpCisgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5
cGU6KGxlZnRNb3VzZUJ1dHRvbkRvd24gPyBOU0V2ZW50VHlwZUxlZnRNb3VzZURyYWdnZWQgOiBO
U0V2ZW50VHlwZU1vdXNlTW92ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9jYXRpb246bmV3TW91c2VQb3NpdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb2RpZmllckZsYWdzOjAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KQEAgLTc2NSwyMyAr
NzU3LDIzIEBAIC0gKHZvaWQpbW91c2VNb3ZlVG9YOihpbnQpeCBZOihpbnQpeQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4
dCBjdXJyZW50Q29udGV4dF0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXZlbnROdW1iZXI6KytldmVudE51bWJlciAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xpY2tDb3VudDoobGVmdE1vdXNlQnV0dG9uRG93biA/IGNsaWNrQ291bnQgOiAw
KSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzc3VyZTowLjBd
OwotICAgIENHRXZlbnRSZWYgY2dFdmVudCA9IGV2ZW50LkNHRXZlbnQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3N1cmU6MC4wXSk7CisgICAgQ0dFdmVudFJl
ZiBjZ0V2ZW50ID0gW2V2ZW50IENHRXZlbnRdOwogICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVG
aWVsZChjZ0V2ZW50LCBrQ0dNb3VzZUV2ZW50RGVsdGFYLCBuZXdNb3VzZVBvc2l0aW9uLnggLSBs
YXN0TW91c2VQb3NpdGlvbi54KTsKICAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dF
dmVudCwga0NHTW91c2VFdmVudERlbHRhWSwgbmV3TW91c2VQb3NpdGlvbi55IC0gbGFzdE1vdXNl
UG9zaXRpb24ueSk7Ci0gICAgZXZlbnQgPSBbTlNFdmVudCBldmVudFdpdGhDR0V2ZW50OmNnRXZl
bnRdOworICAgIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6Y2dF
dmVudF0pOwogICAgIGxhc3RNb3VzZVBvc2l0aW9uID0gbmV3TW91c2VQb3NpdGlvbjsKICNlbHNl
CiAgICAgbGFzdE1vdXNlUG9zaXRpb24gPSBbdmlldyBjb252ZXJ0UG9pbnQ6TlNNYWtlUG9pbnQo
eCwgeSkgdG9WaWV3Om5pbF07Ci0gICAgV2ViRXZlbnQgKmV2ZW50ID0gW1tXZWJFdmVudCBhbGxv
Y10gaW5pdFdpdGhNb3VzZUV2ZW50VHlwZTpXZWJFdmVudE1vdXNlTW92ZWQKKyAgICBhdXRvIGV2
ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aE1vdXNlRXZlbnRUeXBlOldl
YkV2ZW50TW91c2VNb3ZlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOmxh
c3RNb3VzZVBvc2l0aW9uXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2F0aW9uOmxhc3RNb3VzZVBvc2l0aW9uXSk7CiAjZW5kaWYgLy8g
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBOU1ZpZXcgKnN1YlZpZXcgPSBbW21haW5GcmFt
ZSB3ZWJWaWV3XSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV07CiAgICAgaWYgKHN1
YlZpZXcpIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgW05TQXBwIF9zZXRD
dXJyZW50RXZlbnQ6ZXZlbnRdOworICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVu
dC5nZXQoKV07CiAjZW5kaWYKICAgICAgICAgaWYgKGxlZnRNb3VzZUJ1dHRvbkRvd24pIHsKICNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTc5MiwyNSArNzg0LDIxIEBAIC0gKHZvaWQpbW91
c2VNb3ZlVG9YOihpbnQpeCBZOihpbnQpeQogICAgICAgICAgICAgICAgIFtbbWFpbkZyYW1lIHdl
YlZpZXddIGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm9dOwogICAgICAgICAgICAgfSBlbHNl
IHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgICAgICAgICBhdXRvIGV2ZW50
UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dp
enpsZXJGb3JWaWV3QW5kRXZlbnQoc3ViVmlldywgZXZlbnQpOworICAgICAgICAgICAgICAgIGF1
dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBldmVudFByZXNzZWRNb3VzZUJ1
dHRvbnNTd2l6emxlckZvclZpZXdBbmRFdmVudChzdWJWaWV3LCBldmVudC5nZXQoKSk7CiAjZW5k
aWYKLSAgICAgICAgICAgICAgICBbc3ViVmlldyBtb3VzZURyYWdnZWQ6ZXZlbnRdOworICAgICAg
ICAgICAgICAgIFtzdWJWaWV3IG1vdXNlRHJhZ2dlZDpldmVudC5nZXQoKV07CiAgICAgICAgICAg
ICB9CiAjZW5kaWYKICAgICAgICAgfSBlbHNlIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICAgICAgICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBldmVu
dFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlckZvclZpZXdBbmRFdmVudChzdWJWaWV3LCBldmVu
dCk7CisgICAgICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0g
ZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXJGb3JWaWV3QW5kRXZlbnQoc3ViVmlldywg
ZXZlbnQuZ2V0KCkpOwogI2VuZGlmCi0gICAgICAgICAgICBbc3ViVmlldyBtb3VzZU1vdmVkOmV2
ZW50XTsKKyAgICAgICAgICAgIFtzdWJWaWV3IG1vdXNlTW92ZWQ6ZXZlbnQuZ2V0KCldOwogICAg
ICAgICB9CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtOU0FwcCBfc2V0Q3Vy
cmVudEV2ZW50Om5pbF07CiAjZW5kaWYKICAgICB9Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgIFtldmVudCByZWxlYXNlXTsKLSNlbmRpZgogfQogCiAtICh2b2lkKW1vdXNlU2Nyb2xs
QnlYOihpbnQpeCBhbmRZOihpbnQpeSBjb250aW51b3VzbHk6KEJPT0wpY29udGludW91c2x5CkBA
IC0xMTY3LDcgKzExNTUsNyBAQCAtICh2b2lkKWtleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVy
IHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycwogICAgIFtbW21haW5G
cmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKIAogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlw
ZTpOU0V2ZW50VHlwZUtleURvd24KKyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50
IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duCiAgICAgICAgICAgICAgICAgICAg
ICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQogICAgICAgICAgICAgICAgICAgICAgICAg
bW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
c3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KQEAgLTExNzYsMjEgKzExNjQsMjEgQEAgLSAo
dm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3Jp
cHRPYmplY3QgKiltb2RpZmllcnMKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6
ZXZlbnRDaGFyYWN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlzQVJlcGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlD
b2RlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV0pOwogI2Vsc2UK
LSAgICBXZWJFdmVudCAqZXZlbnQgPSBbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50
VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNo
YXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJG
bGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwg
a2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0
ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV07CisgICAgYXV0byBldmVudCA9IGFkb3B0
TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3du
IHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFj
dGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdzKW1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8g
d2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBj
aGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6
MF0gPT0gJ1x0JyldKTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
W05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2
ZW50OmV2ZW50LmdldCgpXTsKICNlbmRpZgotICAgIFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2lu
ZG93XSBmaXJzdFJlc3BvbmRlcl0ga2V5RG93bjpldmVudF07CisgICAgW1tbW21haW5GcmFtZSB3
ZWJWaWV3XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBrZXlEb3duOmV2ZW50LmdldCgpXTsKICNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxd
OwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBldmVudCA9IFtOU0V2
ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcAorICAgIGV2ZW50ID0gcmV0YWlu
UHRyKFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcAogICAgICAgICAg
ICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncwogICAgICAgICAgICAgICAgICAg
ICAgICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCkBAIC0xMTk5LDIzICsxMTg3
LDE4IEBAIC0gKHZvaWQpa2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVy
czooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtl
eUNvZGU6a2V5Q29kZV07CisgICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVd
KTsKICNlbHNlCi0gICAgW2V2ZW50IHJlbGVhc2VdOwotICAgIGV2ZW50ID0gW1tXZWJFdmVudCBh
bGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6W3NlbGYg
Y3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2Vi
RXZlbnRGbGFncyltb2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJ
bnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDow
XSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXTsKKyAg
ICBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6
V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVy
czpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllckZsYWdzIGlz
UmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2Rl
OltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFy
YWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKKyAgICBbTlNBcHAg
X3NldEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07CiAjZW5kaWYKLSAgICBbW1tbbWFpbkZyYW1l
IHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50XTsKKyAgICBbW1tb
bWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50Lmdl
dCgpXTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbTlNBcHAgX3NldEN1cnJlbnRF
dmVudDpuaWxdOwogI2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtldmVu
dCByZWxlYXNlXTsKLSNlbmRpZgogfQogCiAtICh2b2lkKWtleURvd25XcmFwcGVyOihOU1N0cmlu
ZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMg
d2l0aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCkBAIC0xNDk0LDkgKzE0NzcsOSBA
QCAtICh2b2lkKXNldFRvdWNoTW9kaWZpZXI6KE5TU3RyaW5nKiltb2RpZmllck5hbWUgdmFsdWU6
KEJPT0wpZmxhZwogCiAtICh2b2lkKXNlbnRUb3VjaEV2ZW50T2ZUeXBlOihXZWJFdmVudFR5cGUp
dHlwZQogewotICAgIE5TTXV0YWJsZUFycmF5ICp0b3VjaExvY2F0aW9ucyA9IFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6W3RvdWNoZXMgY291bnRdXTsKLSAgICBOU011
dGFibGVBcnJheSAqdG91Y2hJZGVudGlmaWVycyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6W3RvdWNoZXMgY291bnRdXTsKLSAgICBOU011dGFibGVBcnJheSAqdG91
Y2hQaGFzZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Olt0b3Vj
aGVzIGNvdW50XV07CisgICAgYXV0byB0b3VjaExvY2F0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpbdG91Y2hlcyBjb3VudF1dKTsKKyAgICBh
dXRvIHRvdWNoSWRlbnRpZmllcnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6W3RvdWNoZXMgY291bnRdXSk7CisgICAgYXV0byB0b3VjaFBoYXNlcyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpbdG91Y2hl
cyBjb3VudF1dKTsKICAgICAKICAgICBDR1BvaW50IGNlbnRyb2lkID0gQ0dQb2ludFplcm87CiAg
ICAgTlNVSW50ZWdlciB0b3VjaGVzRG93bkNvdW50ID0gMDsKQEAgLTE1MjAsMjUgKzE1MDMsMjAg
QEAgLSAodm9pZClzZW50VG91Y2hFdmVudE9mVHlwZTooV2ViRXZlbnRUeXBlKXR5cGUKICAgICBl
bHNlCiAgICAgICAgIGNlbnRyb2lkID0gQ0dQb2ludFplcm87CiAKLSAgICBXZWJFdmVudCAqZXZl
bnQgPSBbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aFRvdWNoRXZlbnRUeXBlOnR5cGUKKyAgICBh
dXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aFRvdWNoRXZlbnRU
eXBlOnR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lU3Rh
bXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2NhdGlvbjpjZW50cm9pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyluZXh0RXZlbnRGbGFncwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNoQ291bnQ6W3RvdWNoZXMg
Y291bnRdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hMb2Nh
dGlvbnM6dG91Y2hMb2NhdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0b3VjaElkZW50aWZpZXJzOnRvdWNoSWRlbnRpZmllcnMKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0b3VjaFBoYXNlczp0b3VjaFBoYXNlcworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNoTG9jYXRpb25zOnRvdWNoTG9jYXRp
b25zLmdldCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hJ
ZGVudGlmaWVyczp0b3VjaElkZW50aWZpZXJzLmdldCgpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG91Y2hQaGFzZXM6dG91Y2hQaGFzZXMuZ2V0KCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0dlc3R1cmU6KHRvdWNoZXNEb3duQ291
bnQgPiAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlc3R1cmVT
Y2FsZToxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VzdHVyZVJv
dGF0aW9uOjBdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlc3R1
cmVSb3RhdGlvbjowXSk7CiAgICAgLy8gRW5zdXJlIHRoYXQgbGF5b3V0IGlzIHVwLXRvLWRhdGUg
c28gdGhhdCBoaXQtdGVzdGluZyB0aHJvdWdoIFdBS1ZpZXdzIHdvcmtzIGNvcnJlY3RseS4KICAg
ICBbbWFpbkZyYW1lIHVwZGF0ZUxheW91dF07Ci0gICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHdp
bmRvd10gc2VuZEV2ZW50U3luY2hyb25vdXNseTpldmVudF07Ci0gICAgW2V2ZW50IHJlbGVhc2Vd
OwotICAgIAotICAgIFt0b3VjaExvY2F0aW9ucyByZWxlYXNlXTsKLSAgICBbdG91Y2hJZGVudGlm
aWVycyByZWxlYXNlXTsKLSAgICBbdG91Y2hQaGFzZXMgcmVsZWFzZV07CisgICAgW1tbbWFpbkZy
YW1lIHdlYlZpZXddIHdpbmRvd10gc2VuZEV2ZW50U3luY2hyb25vdXNseTpldmVudC5nZXQoKV07
CiAgICAgCiAgICAgbmV4dEV2ZW50RmxhZ3MgPSAwOwogfQpAQCAtMTU1NywyOCArMTUzNSwyNiBA
QCAtICh2b2lkKXRvdWNoRW5kCiB7CiAgICAgW3NlbGYgc2VudFRvdWNoRXZlbnRPZlR5cGU6V2Vi
RXZlbnRUb3VjaEVuZF07CiAKLSAgICBOU011dGFibGVBcnJheSAqdG91Y2hlc1RvUmVtb3ZlID0g
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgYXV0byB0b3VjaGVzVG9SZW1vdmUg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKFN5bnRo
ZXRpY1RvdWNoICpjdXJyVG91Y2ggaW4gdG91Y2hlcykgewogICAgICAgICBpZiAoY3VyclRvdWNo
LnBoYXNlID09IFVJVG91Y2hQaGFzZUVuZGVkKQogICAgICAgICAgICAgW3RvdWNoZXNUb1JlbW92
ZSBhZGRPYmplY3Q6Y3VyclRvdWNoXTsKICAgICB9CiAKLSAgICBbdG91Y2hlcyByZW1vdmVPYmpl
Y3RzSW5BcnJheTp0b3VjaGVzVG9SZW1vdmVdOwotICAgIFt0b3VjaGVzVG9SZW1vdmUgcmVsZWFz
ZV07CisgICAgW3RvdWNoZXMgcmVtb3ZlT2JqZWN0c0luQXJyYXk6dG91Y2hlc1RvUmVtb3ZlLmdl
dCgpXTsKIH0KIAogLSAodm9pZCl0b3VjaENhbmNlbAogewogICAgIFtzZWxmIHNlbnRUb3VjaEV2
ZW50T2ZUeXBlOldlYkV2ZW50VG91Y2hDYW5jZWxdOwogCi0gICAgTlNNdXRhYmxlQXJyYXkgKnRv
dWNoZXNUb1JlbW92ZSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIGF1dG8g
dG91Y2hlc1RvUmVtb3ZlID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
CiAgICAgZm9yIChTeW50aGV0aWNUb3VjaCAqY3VyclRvdWNoIGluIHRvdWNoZXMpIHsKICAgICAg
ICAgaWYgKGN1cnJUb3VjaC5waGFzZSA9PSBVSVRvdWNoUGhhc2VDYW5jZWxsZWQpCiAgICAgICAg
ICAgICBbdG91Y2hlc1RvUmVtb3ZlIGFkZE9iamVjdDpjdXJyVG91Y2hdOwogICAgIH0KIAotICAg
IFt0b3VjaGVzIHJlbW92ZU9iamVjdHNJbkFycmF5OnRvdWNoZXNUb1JlbW92ZV07Ci0gICAgW3Rv
dWNoZXNUb1JlbW92ZSByZWxlYXNlXTsKKyAgICBbdG91Y2hlcyByZW1vdmVPYmplY3RzSW5BcnJh
eTp0b3VjaGVzVG9SZW1vdmUuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCA1ZGYxMTY5NjgxNzAz
NjBlNGE1YzczZDEzMzc4N2ZmMjhhNTNiNTk1Li5lMjQ5YWJmMGRmNTM4NGFmOTNkNmI3YTBhN2Fh
OWJiZDAzMmE4NmRiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNl
TG9hZERlbGVnYXRlLm1tCkBAIC0xNzgsOSArMTc4LDggQEAgLShOU1VSTFJlcXVlc3QgKil3ZWJW
aWV3OiAoV2ViVmlldyAqKXd2IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1ZXN0OiAo
TlMKICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0ID0gW3JlcXVlc3QgbXV0YWJs
ZUNvcHldOwogICAgIGNvbnN0IHNldDxzdHJpbmc+JiBjbGVhckhlYWRlcnMgPSBnVGVzdFJ1bm5l
ci0+d2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzKCk7CiAgICAgZm9yIChzZXQ8c3RyaW5nPjo6
Y29uc3RfaXRlcmF0b3IgaGVhZGVyID0gY2xlYXJIZWFkZXJzLmJlZ2luKCk7IGhlYWRlciAhPSBj
bGVhckhlYWRlcnMuZW5kKCk7ICsraGVhZGVyKSB7Ci0gICAgICAgIE5TU3RyaW5nICpuc0hlYWRl
ciA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzpoZWFkZXItPmNfc3RyKCld
OwotICAgICAgICBbbmV3UmVxdWVzdCBzZXRWYWx1ZTpuaWwgZm9ySFRUUEhlYWRlckZpZWxkOm5z
SGVhZGVyXTsKLSAgICAgICAgW25zSGVhZGVyIHJlbGVhc2VdOworICAgICAgICBhdXRvIG5zSGVh
ZGVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6aGVhZGVy
LT5jX3N0cigpXSk7CisgICAgICAgIFtuZXdSZXF1ZXN0IHNldFZhbHVlOm5pbCBmb3JIVFRQSGVh
ZGVyRmllbGQ6bnNIZWFkZXIuZ2V0KCldOwogICAgIH0KICAgICBpZiAoYXV0byogZGVzdGluYXRp
b24gPSBnVGVzdFJ1bm5lci0+cmVkaXJlY3Rpb25EZXN0aW5hdGlvbkZvclVSTChbW3VybCBhYnNv
bHV0ZVN0cmluZ10gVVRGOFN0cmluZ10pKQogICAgICAgICBbbmV3UmVxdWVzdCBzZXRVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmRlc3RpbmF0
aW9uXV1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJN
YWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCA4
NDUwOWUwZWIwYTEwYWNlY2QyMWZjYjVjYmQ3OTgxNDY1NDkyODdmLi5kYzA0Yzg3YjU3OThhMWEy
M2I2NTQ3NTkyYzJmNDRiOWYwYmVkYjYxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVz
dFJ1bm5lck1hYy5tbQpAQCAtMTU4LDIwICsxNTgsMTcgQEAgdm9pZCBUZXN0UnVubmVyOjpjbGVh
ckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCkKIAogbG9uZyBsb25nIFRlc3RSdW5uZXI6OmFwcGxpY2F0
aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQogewotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdXJsQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOwotICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmlnaW4g
PSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dOwotICAgIGxvbmcgbG9uZyB1
c2FnZSA9IFtXZWJBcHBsaWNhdGlvbkNhY2hlIGRpc2tVc2FnZUZvck9yaWdpbjpvcmlnaW5dOwot
ICAgIFtvcmlnaW4gcmVsZWFzZV07CisgICAgYXV0byB1cmxDRiA9IGFkb3B0Q0YoSlNTdHJpbmdD
b3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7CisgICAgYXV0byBvcmlnaW4g
PSBhZG9wdE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKXVybENGLmdldCgpXV0pOworICAgIGxv
bmcgbG9uZyB1c2FnZSA9IFtXZWJBcHBsaWNhdGlvbkNhY2hlIGRpc2tVc2FnZUZvck9yaWdpbjpv
cmlnaW4uZ2V0KCldOwogICAgIHJldHVybiB1c2FnZTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpj
bGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQogewotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOwotCi0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKm9y
aWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKXVybENGLmdldCgpXV07Ci0gICAgW1dlYkFw
cGxpY2F0aW9uQ2FjaGUgZGVsZXRlQ2FjaGVGb3JPcmlnaW46b3JpZ2luXTsKLSAgICBbb3JpZ2lu
IHJlbGVhc2VdOworICAgIGF1dG8gdXJsQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOworICAgIGF1dG8gb3JpZ2luID0gYWRvcHROUyhb
W1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzooX19icmlkZ2UgTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dKTsKKyAgICBbV2ViQXBwbGljYXRp
b25DYWNoZSBkZWxldGVDYWNoZUZvck9yaWdpbjpvcmlnaW4uZ2V0KCldOwogfQogCiBzdGF0aWMg
SlNPYmplY3RSZWYgb3JpZ2luc0FycmF5VG9KUyhKU0NvbnRleHRSZWYgY29udGV4dCwgTlNBcnJh
eSAqb3JpZ2lucykKQEAgLTIxOSwxNiArMjE2LDE1IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2xvc2VJ
ZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCkKIHZvaWQgVGVzdFJ1bm5lcjo6Y2xlYXJCYWNrRm9y
d2FyZExpc3QoKQogewogICAgIFdlYkJhY2tGb3J3YXJkTGlzdCAqYmFja0ZvcndhcmRMaXN0ID0g
W1ttYWluRnJhbWUgd2ViVmlld10gYmFja0ZvcndhcmRMaXN0XTsKLSAgICBXZWJIaXN0b3J5SXRl
bSAqaXRlbSA9IFtbYmFja0ZvcndhcmRMaXN0IGN1cnJlbnRJdGVtXSByZXRhaW5dOworICAgIGF1
dG8gaXRlbSA9IHJldGFpblB0cihbYmFja0ZvcndhcmRMaXN0IGN1cnJlbnRJdGVtXSk7CiAKICAg
ICAvLyBXZSBjbGVhciB0aGUgaGlzdG9yeSBieSBzZXR0aW5nIHRoZSBiYWNrL2ZvcndhcmQgbGlz
dCdzIGNhcGFjaXR5IHRvIDAKICAgICAvLyB0aGVuIHJlc3RvcmluZyBpdCBiYWNrIGFuZCBhZGRp
bmcgYmFjayB0aGUgY3VycmVudCBpdGVtLgogICAgIGludCBjYXBhY2l0eSA9IFtiYWNrRm9yd2Fy
ZExpc3QgY2FwYWNpdHldOwogICAgIFtiYWNrRm9yd2FyZExpc3Qgc2V0Q2FwYWNpdHk6MF07CiAg
ICAgW2JhY2tGb3J3YXJkTGlzdCBzZXRDYXBhY2l0eTpjYXBhY2l0eV07Ci0gICAgW2JhY2tGb3J3
YXJkTGlzdCBhZGRJdGVtOml0ZW1dOwotICAgIFtiYWNrRm9yd2FyZExpc3QgZ29Ub0l0ZW06aXRl
bV07Ci0gICAgW2l0ZW0gcmVsZWFzZV07CisgICAgW2JhY2tGb3J3YXJkTGlzdCBhZGRJdGVtOml0
ZW0uZ2V0KCldOworICAgIFtiYWNrRm9yd2FyZExpc3QgZ29Ub0l0ZW06aXRlbS5nZXQoKV07CiB9
CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBUZXN0UnVubmVyOjpjb3B5RGVjb2RlZEhvc3RO
YW1lKEpTU3RyaW5nUmVmIG5hbWUpCkBAIC0yNTcsMTEgKzI1Myw4IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6ZGlzcGxheUFuZFRyYWNrUmVwYWludHMoKQogCiB2b2lkIFRlc3RSdW5uZXI6OmtlZXBXZWJI
aXN0b3J5KCkKIHsKLSAgICBpZiAoIVtXZWJIaXN0b3J5IG9wdGlvbmFsU2hhcmVkSGlzdG9yeV0p
IHsKLSAgICAgICAgV2ViSGlzdG9yeSAqaGlzdG9yeSA9IFtbV2ViSGlzdG9yeSBhbGxvY10gaW5p
dF07Ci0gICAgICAgIFtXZWJIaXN0b3J5IHNldE9wdGlvbmFsU2hhcmVkSGlzdG9yeTpoaXN0b3J5
XTsKLSAgICAgICAgW2hpc3RvcnkgcmVsZWFzZV07Ci0gICAgfQorICAgIGlmICghW1dlYkhpc3Rv
cnkgb3B0aW9uYWxTaGFyZWRIaXN0b3J5XSkKKyAgICAgICAgW1dlYkhpc3Rvcnkgc2V0T3B0aW9u
YWxTaGFyZWRIaXN0b3J5OmFkb3B0TlMoW1tXZWJIaXN0b3J5IGFsbG9jXSBpbml0XSkuZ2V0KCld
OwogfQogCiBpbnQgVGVzdFJ1bm5lcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdHMoKQpAQCAtNDE3LDkgKzQxMCw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q3Vz
dG9tUG9saWN5RGVsZWdhdGUoYm9vbCBzZXREZWxlZ2F0ZSwgYm9vbCBwZXJtaXNzaXZlKQogCiB2
b2lkIFRlc3RSdW5uZXI6OnNldERhdGFiYXNlUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3Rh
KQogeyAgICAKLSAgICBXZWJTZWN1cml0eU9yaWdpbiAqb3JpZ2luID0gW1tXZWJTZWN1cml0eU9y
aWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxlOi8vLyJd
XTsKKyAgICBhdXRvIG9yaWdpbiA9IGFkb3B0TlMoW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10g
aW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxlOi8vLyJdXSk7CiAgICAgW1tv
cmlnaW4gZGF0YWJhc2VRdW90YU1hbmFnZXJdIHNldFF1b3RhOnF1b3RhXTsKLSAgICBbb3JpZ2lu
IHJlbGVhc2VdOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OmdvQmFjaygpCkBAIC00NDMsMTcgKzQz
NSwxNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNh
blByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBibwogICAgIC8vIER1bXBSZW5kZXJUcmVlIGNv
bmZpZ3VyZWQgdGhlIFdlYlZpZXcgdG8gdXNlIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJN
b2NrLgogICAgIGlkPFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXI+IHByb3ZpZGVyID0gW1tt
YWluRnJhbWUgd2ViVmlld10gX2RldmljZU9yaWVudGF0aW9uUHJvdmlkZXJdOwogICAgIFdlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrICptb2NrUHJvdmlkZXIgPSBzdGF0aWNfY2FzdDxX
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayo+KHByb3ZpZGVyKTsKLSAgICBXZWJEZXZp
Y2VPcmllbnRhdGlvbiAqb3JpZW50YXRpb24gPSBbW1dlYkRldmljZU9yaWVudGF0aW9uIGFsbG9j
XSBpbml0V2l0aENhblByb3ZpZGVBbHBoYTpjYW5Qcm92aWRlQWxwaGEgYWxwaGE6YWxwaGEgY2Fu
UHJvdmlkZUJldGE6Y2FuUHJvdmlkZUJldGEgYmV0YTpiZXRhIGNhblByb3ZpZGVHYW1tYTpjYW5Q
cm92aWRlR2FtbWEgZ2FtbWE6Z2FtbWFdOwotICAgIFttb2NrUHJvdmlkZXIgc2V0T3JpZW50YXRp
b246b3JpZW50YXRpb25dOwotICAgIFtvcmllbnRhdGlvbiByZWxlYXNlXTsKKyAgICBhdXRvIG9y
aWVudGF0aW9uID0gYWRvcHROUyhbW1dlYkRldmljZU9yaWVudGF0aW9uIGFsbG9jXSBpbml0V2l0
aENhblByb3ZpZGVBbHBoYTpjYW5Qcm92aWRlQWxwaGEgYWxwaGE6YWxwaGEgY2FuUHJvdmlkZUJl
dGE6Y2FuUHJvdmlkZUJldGEgYmV0YTpiZXRhIGNhblByb3ZpZGVHYW1tYTpjYW5Qcm92aWRlR2Ft
bWEgZ2FtbWE6Z2FtbWFdKTsKKyAgICBbbW9ja1Byb3ZpZGVyIHNldE9yaWVudGF0aW9uOm9yaWVu
dGF0aW9uLmdldCgpXTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFj
eSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hl
YWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCwg
Ym9vbCBwcm92aWRlc0Zsb29yTGV2ZWwsIGRvdWJsZSBmbG9vckxldmVsKQogewotICAgIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uID0gbmlsOworICAgIFJldGFpblB0cjxXZWJHZW9s
b2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbjsKICAgICBpZiAoIXByb3ZpZGVzQWx0aXR1ZGUgJiYg
IXByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSAmJiAhcHJvdmlkZXNIZWFkaW5nICYmICFwcm92aWRl
c1NwZWVkKSB7CiAgICAgICAgIC8vIFRlc3QgdGhlIGV4cG9zZWQgQVBJLgotICAgICAgICBwb3Np
dGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhUaW1lc3RhbXA6
V2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpIGxhdGl0dWRlOmxh
dGl0dWRlIGxvbmdpdHVkZTpsb25naXR1ZGUgYWNjdXJhY3k6YWNjdXJhY3ldOworICAgICAgICBw
b3NpdGlvbiA9IGFkb3B0TlMoW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0
aFRpbWVzdGFtcDpXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkg
bGF0aXR1ZGU6bGF0aXR1ZGUgbG9uZ2l0dWRlOmxvbmdpdHVkZSBhY2N1cmFjeTphY2N1cmFjeV0p
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
IGdlb2xvY2F0aW9uUG9zaXRpb24geyBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2go
KS5zZWNvbmRzKCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5IH07CiAgICAgICAgIGlm
IChwcm92aWRlc0FsdGl0dWRlKQpAQCAtNDY2LDEwICs0NTcsOSBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZAogICAgICAgICAgICAgZ2VvbG9jYXRpb25Qb3NpdGlvbi5zcGVlZCA9IHNwZWVkOwog
ICAgICAgICBpZiAocHJvdmlkZXNGbG9vckxldmVsKQogICAgICAgICAgICAgZ2VvbG9jYXRpb25Q
b3NpdGlvbi5mbG9vckxldmVsID0gZmxvb3JMZXZlbDsKLSAgICAgICAgcG9zaXRpb24gPSBbW1dl
Ykdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjoo
V1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSldOworICAgICAgICBwb3NpdGlvbiA9IGFkb3B0
TlMoW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uUG9z
aXRpb246KFdURk1vdmUoZ2VvbG9jYXRpb25Qb3NpdGlvbikpXSk7CiAgICAgfQotICAgIFtbTW9j
a0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzZXRQb3NpdGlvbjpwb3NpdGlvbl07Ci0gICAg
W3Bvc2l0aW9uIHJlbGVhc2VdOworICAgIFtbTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVk
XSBzZXRQb3NpdGlvbjpwb3NpdGlvbi5nZXQoKV07CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVmIG1lc3Nh
Z2UpCkBAIC04NDAsOSArODMwLDkgQEAgQGVuZAogQGludGVyZmFjZSBBUElUZXN0RGVsZWdhdGVJ
UGhvbmUgOiBOU09iamVjdCA8V2ViRnJhbWVMb2FkRGVsZWdhdGU+CiB7CiAgICAgVGVzdFJ1bm5l
ciogdGVzdFJ1bm5lcjsKLSAgICBOU0RhdGEgKmRhdGE7Ci0gICAgTlNVUkwgKmJhc2VVUkw7Ci0g
ICAgV2ViVmlldyAqd2ViVmlldzsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOworICAgIFJl
dGFpblB0cjxOU1VSTD4gYmFzZVVSTDsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldzsK
IH0KIC0gKGlkKWluaXRXaXRoVGVzdFJ1bm5lcjooVGVzdFJ1bm5lciopdGVzdFJ1bm5lciB1dGY4
RGF0YTooSlNTdHJpbmdSZWYpZGF0YSBiYXNlVVJMOihKU1N0cmluZ1JlZiliYXNlVVJMOwogLSAo
dm9pZClydW47CkBAIC04NTcsMTUgKzg0NywxMyBAQCAtIChpZClpbml0V2l0aFRlc3RSdW5uZXI6
KFRlc3RSdW5uZXIqKXJ1bm5lciB1dGY4RGF0YTooSlNTdHJpbmdSZWYpZGF0YVN0cmluZyBiYQog
ICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgdGVzdFJ1bm5lciA9IHJ1bm5lcjsKLSAgICBkYXRh
ID0gW1soX19icmlkZ2UgTlNTdHJpbmcgKilhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGRhdGFTdHJpbmcpKS5nZXQoKSBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ10gcmV0YWluXTsKLSAgICBiYXNlVVJMID0gW1tOU1VSTCBVUkxX
aXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzZVVSTFN0cmluZykpLmdldCgpXSByZXRhaW5dOwor
ICAgIGRhdGEgPSBbKF9fYnJpZGdlIE5TU3RyaW5nICopYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhU3RyaW5nKSkuZ2V0KCkgZGF0YVVzaW5nRW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIGJhc2VVUkwgPSBbTlNVUkwgVVJMV2l0
aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGJhc2VVUkxTdHJpbmcpKS5nZXQoKV07CiAgICAgcmV0dXJu
IHNlbGY7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIFtkYXRhIHJlbGVhc2VdOwotICAg
IFtiYXNlVVJMIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtODc4LDkg
Kzg2Niw5IEBAIC0gKHZvaWQpcnVuCiAKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAKLSAgICB3ZWJW
aWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1l
OkAiIiBncm91cE5hbWU6QCIiXTsKKyAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6QCIiIGdyb3VwTmFtZTpAIiJd
KTsKICAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpzZWxmXTsKLSAgICBbW3dlYlZp
ZXcgbWFpbkZyYW1lXSBsb2FkRGF0YTpkYXRhIE1JTUVUeXBlOkAidGV4dC9odG1sIiB0ZXh0RW5j
b2RpbmdOYW1lOkAidXRmLTgiIGJhc2VVUkw6YmFzZVVSTF07CisgICAgW1t3ZWJWaWV3IG1haW5G
cmFtZV0gbG9hZERhdGE6ZGF0YS5nZXQoKSBNSU1FVHlwZTpAInRleHQvaHRtbCIgdGV4dEVuY29k
aW5nTmFtZTpAInV0Zi04IiBiYXNlVVJMOmJhc2VVUkwuZ2V0KCldOwogfQogCiAtICh2b2lkKV9j
bGVhblVwCkBAIC04OTIsNyArODgwLDYgQEAgLSAodm9pZClfY2xlYW5VcAogCiAgICAgW3dlYlZp
ZXcgX2NsZWFyRGVsZWdhdGVzXTsKICAgICBbd2ViVmlldyBjbG9zZV07Ci0gICAgW3dlYlZpZXcg
cmVsZWFzZV07CiAgICAgd2ViVmlldyA9IG5pbDsKIAogICAgIHRlc3RSdW5uZXItPm5vdGlmeURv
bmUoKTsKQEAgLTkzOCwxMSArOTI1LDExIEBAIHZvaWQgVGVzdFJ1bm5lcjo6YXBpVGVzdE5ld1dp
bmRvd0RhdGFMb2FkQmFzZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwgSlNTdHJpbmdSCiAgICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRmOERhdGFDRiA9IGFkb3B0Q0YoSlNTdHJpbmdD
b3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXRmOERhdGEpKTsKICAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBiYXNlVVJMQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJhc2VVUkwpKTsKIAotICAgICAgICBXZWJWaWV3ICp3
ZWJWaWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVO
YW1lOkAiIiBncm91cE5hbWU6QCIiXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6QCIiIGdy
b3VwTmFtZTpAIiJdKTsKIAogICAgICAgICBib29sIGRvbmUgPSBmYWxzZTsKLSAgICAgICAgQVBJ
VGVzdERlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbQVBJVGVzdERlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aENvbXBsZXRpb25Db25kaXRpb246JmRvbmVdOwotICAgICAgICBbd2ViVmlldyBzZXRGcmFtZUxv
YWREZWxlZ2F0ZTpkZWxlZ2F0ZV07CisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
QVBJVGVzdERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aENvbXBsZXRpb25Db25kaXRpb246JmRvbmVd
KTsKKyAgICAgICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OwogCiAgICAgICAgIFtbd2ViVmlldyBtYWluRnJhbWVdIGxvYWREYXRhOlsoX19icmlkZ2UgTlNT
dHJpbmcgKil1dGY4RGF0YUNGLmdldCgpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSBNSU1FVHlwZTpAInRleHQvaHRtbCIgdGV4dEVuY29kaW5nTmFtZTpAInV0Zi04IiBi
YXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWJhc2VVUkxD
Ri5nZXQoKV1dOwogCkBAIC05NTcsOCArOTQ0LDYgQEAgdm9pZCBUZXN0UnVubmVyOjphcGlUZXN0
TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMKEpTU3RyaW5nUmVmIHV0ZjhEYXRhLCBKU1N0cmluZ1IK
ICNlbmRpZgogCiAgICAgICAgIFt3ZWJWaWV3IGNsb3NlXTsKLSAgICAgICAgW3dlYlZpZXcgcmVs
ZWFzZV07Ci0gICAgICAgIFtkZWxlZ2F0ZSByZWxlYXNlXTsKICAgICB9CiB9CiAKQEAgLTk3OCw4
ICs5NjMsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKlN5bmNocm9ub3VzTG9hZGVyUnVuTG9vcE1vZGUg
PSBAIkR1bXBSZW5kZXJUcmVlU3luY2hyb25vdXNMb2FkZQogCiBAaW50ZXJmYWNlIFN5bmNocm9u
b3VzTG9hZGVyIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPgogewotICAgIE5T
U3RyaW5nICptX3VzZXJuYW1lOwotICAgIE5TU3RyaW5nICptX3Bhc3N3b3JkOworICAgIFJldGFp
blB0cjxOU1N0cmluZz4gbV91c2VybmFtZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fcGFz
c3dvcmQ7CiAgICAgQk9PTCBtX2lzRG9uZTsKIH0KICsgKHZvaWQpbWFrZVJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3Qgd2l0aFVzZXJuYW1lOihOU1N0cmluZyAqKXVzZXJuYW1lIHBhc3N3
b3JkOihOU1N0cmluZyAqKXBhc3N3b3JkOwpAQCAtOTg4LDkgKzk3Myw2IEBAIEBlbmQKIEBpbXBs
ZW1lbnRhdGlvbiBTeW5jaHJvbm91c0xvYWRlciA6IE5TT2JqZWN0CiAtICh2b2lkKWRlYWxsb2MK
IHsKLSAgICBbbV91c2VybmFtZSByZWxlYXNlXTsKLSAgICBbbV9wYXNzd29yZCByZWxlYXNlXTsK
LQogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMTAwNCw3ICs5ODYsNyBAQCAtICh2b2lk
KWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbgogSUdOT1JFX1dBUk5JTkdTX0VORAogewogICAgIGlmIChbY2hhbGxl
bmdlIHByZXZpb3VzRmFpbHVyZUNvdW50XSA9PSAwKSB7Ci0gICAgICAgIFJldGFpblB0cjxOU1VS
TENyZWRlbnRpYWw+IGNyZWRlbnRpYWwgPSBhZG9wdE5TKFtbTlNVUkxDcmVkZW50aWFsIGFsbG9j
XSAgaW5pdFdpdGhVc2VyOm1fdXNlcm5hbWUgcGFzc3dvcmQ6bV9wYXNzd29yZCBwZXJzaXN0ZW5j
ZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25dKTsKKyAgICAgICAgUmV0YWlu
UHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbCA9IGFkb3B0TlMoW1tOU1VSTENyZWRlbnRp
YWwgYWxsb2NdICBpbml0V2l0aFVzZXI6bV91c2VybmFtZS5nZXQoKSBwYXNzd29yZDptX3Bhc3N3
b3JkLmdldCgpIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lv
bl0pOwogICAgICAgICBbW2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlh
bC5nZXQoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2VdOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTAyNywyMSArMTAwOSwxOCBAQCArICh2b2lkKW1ha2VSZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpdGhVc2VybmFtZTooTlNTdHJpbmcgKil1c2VybmFt
ZSBwYQogICAgIEFTU0VSVCghW1tyZXF1ZXN0IFVSTF0gdXNlcl0pOwogICAgIEFTU0VSVCghW1ty
ZXF1ZXN0IFVSTF0gcGFzc3dvcmRdKTsKIAotICAgIFN5bmNocm9ub3VzTG9hZGVyICpkZWxlZ2F0
ZSA9IFtbU3luY2hyb25vdXNMb2FkZXIgYWxsb2NdIGluaXRdOwotICAgIGRlbGVnYXRlLT5tX3Vz
ZXJuYW1lID0gW3VzZXJuYW1lIGNvcHldOwotICAgIGRlbGVnYXRlLT5tX3Bhc3N3b3JkID0gW3Bh
c3N3b3JkIGNvcHldOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU3luY2hyb25vdXNM
b2FkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS0+bV91c2VybmFtZSA9IGFk
b3B0TlMoW3VzZXJuYW1lIGNvcHldKTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS0+bV9wYXNzd29yZCA9
IGFkb3B0TlMoW3Bhc3N3b3JkIGNvcHldKTsKIAotICAgIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVj
dGlvbiA9IFtbTlNVUkxDb25uZWN0aW9uIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdCBk
ZWxlZ2F0ZTpkZWxlZ2F0ZSBzdGFydEltbWVkaWF0ZWx5Ok5PXTsKKyAgICBhdXRvIGNvbm5lY3Rp
b24gPSBhZG9wdE5TKFtbTlNVUkxDb25uZWN0aW9uIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVx
dWVzdCBkZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKSBzdGFydEltbWVkaWF0ZWx5Ok5PXSk7CiAgICAg
W2Nvbm5lY3Rpb24gc2NoZWR1bGVJblJ1bkxvb3A6W05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0g
Zm9yTW9kZTpTeW5jaHJvbm91c0xvYWRlclJ1bkxvb3BNb2RlXTsKICAgICBbY29ubmVjdGlvbiBz
dGFydF07CiAgICAgCi0gICAgd2hpbGUgKCFkZWxlZ2F0ZS0+bV9pc0RvbmUpCisgICAgd2hpbGUg
KCFkZWxlZ2F0ZS5nZXQoKS0+bV9pc0RvbmUpCiAgICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRS
dW5Mb29wXSBydW5Nb2RlOlN5bmNocm9ub3VzTG9hZGVyUnVuTG9vcE1vZGUgYmVmb3JlRGF0ZTpb
TlNEYXRlIGRpc3RhbnRGdXR1cmVdXTsKIAogICAgIFtjb25uZWN0aW9uIGNhbmNlbF07Ci0gICAg
Ci0gICAgW2Nvbm5lY3Rpb24gcmVsZWFzZV07Ci0gICAgW2RlbGVnYXRlIHJlbGVhc2VdOwogfQog
CiBAZW5kCkBAIC0xMDg1LDEzICsxMDY0LDEyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VGV4dERp
cmVjdGlvbihKU1N0cmluZ1JlZiBkaXJlY3Rpb25OYW1lKQogdm9pZCBUZXN0UnVubmVyOjphZGRD
aHJvbWVJbnB1dEZpZWxkKCkKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBOU1Rl
eHRGaWVsZCAqdGV4dEZpZWxkID0gW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDEwMCwgMjApXTsKLSAgICB0ZXh0RmllbGQudGFnID0gMTsKLSAgICBb
W1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gY29udGVudFZpZXddIGFkZFN1YnZpZXc6dGV4
dEZpZWxkXTsKLSAgICBbdGV4dEZpZWxkIHJlbGVhc2VdOworICAgIGF1dG8gdGV4dEZpZWxkID0g
YWRvcHROUyhbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMTAwLCAyMCldKTsKKyAgICBbdGV4dEZpZWxkIHNldFRhZzogMV07CisgICAgW1tbW21haW5G
cmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnRleHRGaWVsZC5n
ZXQoKV07CiAgICAgCiAgICAgW3RleHRGaWVsZCBzZXROZXh0S2V5VmlldzpbbWFpbkZyYW1lIHdl
YlZpZXddXTsKLSAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXROZXh0S2V5Vmlldzp0ZXh0Rmll
bGRdOworICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldE5leHRLZXlWaWV3OnRleHRGaWVsZC5n
ZXQoKV07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1VJRGVsZWdhdGUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLmgKaW5k
ZXggY2YxOWZmZDZmYTQ2YmZkZjUzNDk2ZGZkNjgxODE4YWQwOGIwYjEzYy4uMzE2NTVkYmNlYjA4
ZjRmODg4OGEzYjFkZjJlYTE0ZWMyMzU2OGYzNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1VJRGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlE
ZWxlZ2F0ZS5oCkBAIC0zNSwxMSArMzUsMTIgQEAKICNlbmRpZgogCiAjaW1wb3J0IDxXZWJLaXQv
V2ViVUlEZWxlZ2F0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW50ZXJmYWNl
IFVJRGVsZWdhdGUgOiBOU09iamVjdCA8V2ViVUlEZWxlZ2F0ZT4gewogQHByaXZhdGUKICAgICBO
U1BvaW50IHdpbmRvd09yaWdpbjsKLSAgICBOU011dGFibGVTZXQgKm1fcGVuZGluZ0dlb2xvY2F0
aW9uUGVybWlzc2lvbkxpc3RlbmVyczsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PiBtX3Bl
bmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25MaXN0ZW5lcnM7CiAgICAgTlNUaW1lciAqbV90aW1l
cjsKICAgICBCT09MIG1fZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KaW5kZXggMDhkZjEwNDAxYjI4YTBjMzczYTM2
NjUwM2Q5ODhkYTgyNjMzY2RlZS4uZmRjYjA0ZDQ5OGJkOWEwMmM0NjBlNmQzZDMwZTgyM2U1MTU1
MzZhZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KQEAgLTI1Miw3ICsy
NTIsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46KAogewogICAgIGlmICghZ1Rlc3RSdW5uZXIt
PmlzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0KCkpIHsKICAgICAgICAgaWYgKCFtX3BlbmRpbmdH
ZW9sb2NhdGlvblBlcm1pc3Npb25MaXN0ZW5lcnMpCi0gICAgICAgICAgICBtX3BlbmRpbmdHZW9s
b2NhdGlvblBlcm1pc3Npb25MaXN0ZW5lcnMgPSBbW05TTXV0YWJsZVNldCBzZXRdIHJldGFpbl07
CisgICAgICAgICAgICBtX3BlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25MaXN0ZW5lcnMgPSBb
TlNNdXRhYmxlU2V0IHNldF07CiAgICAgICAgIFttX3BlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Np
b25MaXN0ZW5lcnMgYWRkT2JqZWN0Omxpc3RlbmVyXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTI5MCw3ICsyOTAsNiBAQCAtICh2b2lkKXRpbWVyRmlyZWQKICAgICAgICAgICAgIFtsaXN0
ZW5lciBkZW55XTsKICAgICB9CiAgICAgW21fcGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvbkxp
c3RlbmVycyByZW1vdmVBbGxPYmplY3RzXTsKLSAgICBbbV9wZW5kaW5nR2VvbG9jYXRpb25QZXJt
aXNzaW9uTGlzdGVuZXJzIHJlbGVhc2VdOwogICAgIG1fcGVuZGluZ0dlb2xvY2F0aW9uUGVybWlz
c2lvbkxpc3RlbmVycyA9IG5pbDsKIH0KIApAQCAtNDM3LDggKzQzNiw2IEBAIC0gKHZvaWQpZGVh
bGxvYwogICAgIFtkcmFnZ2luZ0luZm8gcmVsZWFzZV07CiAgICAgZHJhZ2dpbmdJbmZvID0gbmls
OwogI2VuZGlmCi0gICAgW21fcGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvbkxpc3RlbmVycyBy
ZWxlYXNlXTsKLSAgICBtX3BlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25MaXN0ZW5lcnMgPSBu
aWw7CiAKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudElPUy5tbQppbmRleCAxOWU5ZTljYjI4NWFiMjJjODVlNjRiYjE0MmVkZjIxMjdj
YjNkNzI2Li5kMTIwZDE1MWQ4YTAzMDE4M2FiODJjMWNmMDhiNDMzYmM0NGMzNTVkIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KQEAgLTEwMjEsNyArMTAyMSw4
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIo
SlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrCiAgICAgLy8gT3RoZXIgcGxhdGZvcm1zIG1heSBi
ZSBkaWZmZXJlbnQuCiAgICAgaWYgKG1fbm90aWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IFtbQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIgYWxsb2NdIGluaXRdOworCisgICAgbV9ub3RpZmljYXRpb25IYW5k
bGVyID0gYWRvcHROUyhbW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGFsbG9jXSBp
bml0XSk7CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzZXRQbGF0Zm9ybUVsZW1lbnQ6cGxh
dGZvcm1VSUVsZW1lbnQoKV07CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzZXRDYWxsYmFj
azpmdW5jdGlvbkNhbGxiYWNrXTsKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHN0YXJ0T2Jz
ZXJ2aW5nXTsKQEAgLTEwMzUsNyArMTAzNiw2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQogICAgIEFTU0VSVChtX25vdGlmaWNhdGlv
bkhhbmRsZXIpOwogICAgIAogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc3RvcE9ic2Vydmlu
Z107Ci0gICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciByZWxlYXNlXTsKICAgICBtX25vdGlmaWNh
dGlvbkhhbmRsZXIgPSBuaWw7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCBiZjZhNzBmY2U0ZDkzNWRhM2Q2OGRm
NjYxNjNiOTU2NGU2ODZkMWJmLi43ZTNlYjFjNjY5MWNiMmVlYzFiOTQ0ODQ4NTY2MDZmODBmNzVk
MzdlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE1
ODksNyArMTU4OSw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0
aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrCiAgICAgLy8gT3RoZXIgcGxh
dGZvcm1zIG1heSBiZSBkaWZmZXJlbnQuCiAgICAgaWYgKG1fbm90aWZpY2F0aW9uSGFuZGxlcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IFtbQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgYWxsb2NdIGluaXRdOworCisgICAgbV9ub3Rp
ZmljYXRpb25IYW5kbGVyID0gYWRvcHROUyhbW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzZXRQbGF0Zm9y
bUVsZW1lbnQ6cGxhdGZvcm1VSUVsZW1lbnQoKV07CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxl
ciBzZXRDYWxsYmFjazpmdW5jdGlvbkNhbGxiYWNrXTsKICAgICBbbV9ub3RpZmljYXRpb25IYW5k
bGVyIHN0YXJ0T2JzZXJ2aW5nXTsKQEAgLTE2MDMsNyArMTYwNCw2IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQogICAgIEFTU0VSVCht
X25vdGlmaWNhdGlvbkhhbmRsZXIpOwogCiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzdG9w
T2JzZXJ2aW5nXTsKLSAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgIG1f
bm90aWZpY2F0aW9uSGFuZGxlciA9IG5pbDsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KaW5kZXggMGM0
NDYzMzViMjQwZDZhN2UwNjc0MTRjYTljMzA0MGFhNmUzNTQ2My4uZmZmYjE5MDQ0YzAyNTI4MTQz
ZGI1NGMxMzU2MzM5YTgyZDdkN2I0YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvSElERXZlbnRHZW5lcmF0b3IubW0KQEAgLTEwNDIsOSArMTA0Miw5IEBAIC0gKE5TQXJyYXkg
KilpbnRlcnBvbGF0ZWRFdmVudHM6KE5TRGljdGlvbmFyeSAqKWludGVycG9sYXRpb25zRGljdGlv
bmFyeQogICAgIE5TQXJyYXkgKmVuZFRvdWNoZXMgPSBlbmRFdmVudFtISURFdmVudFRvdWNoZXNL
ZXldOwogICAgIAogICAgIHdoaWxlICh0aW1lIDwgZW5kVGltZSkgewotICAgICAgICBOU011dGFi
bGVEaWN0aW9uYXJ5ICpuZXdFdmVudCA9IFtlbmRFdmVudCBtdXRhYmxlQ29weV07CisgICAgICAg
IGF1dG8gbmV3RXZlbnQgPSBhZG9wdE5TKFtlbmRFdmVudCBtdXRhYmxlQ29weV0pOwogICAgICAg
ICBkb3VibGUgdGltZVJhdGlvID0gKHRpbWUgLSBzdGFydFRpbWUpIC8gKGVuZFRpbWUgLSBzdGFy
dFRpbWUpOwotICAgICAgICBuZXdFdmVudFtISURFdmVudFRpbWVPZmZzZXRLZXldID0gQCh0aW1l
KTsKKyAgICAgICAgbmV3RXZlbnQuZ2V0KClbSElERXZlbnRUaW1lT2Zmc2V0S2V5XSA9IEAodGlt
ZSk7CiAgICAgICAgIAogICAgICAgICBOU0VudW1lcmF0b3IgKnN0YXJ0RW51bWVyYXRvciA9IFtz
dGFydFRvdWNoZXMgb2JqZWN0RW51bWVyYXRvcl07CiAgICAgICAgIE5TRGljdGlvbmFyeSAqc3Rh
cnRUb3VjaDsKQEAgLTEwNTgsMjcgKzEwNTgsMjUgQEAgLSAoTlNBcnJheSAqKWludGVycG9sYXRl
ZEV2ZW50czooTlNEaWN0aW9uYXJ5ICopaW50ZXJwb2xhdGlvbnNEaWN0aW9uYXJ5CiAgICAgICAg
ICAgICAgICAgZW5kVG91Y2ggPSBbZW5kRW51bWVyYXRvciBuZXh0T2JqZWN0XTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKGVuZFRvdWNoKSB7Ci0gICAgICAgICAgICAgICAgTlNNdXRh
YmxlRGljdGlvbmFyeSAqbmV3VG91Y2ggPSBbZW5kVG91Y2ggbXV0YWJsZUNvcHldOworICAgICAg
ICAgICAgICAgIGF1dG8gbmV3VG91Y2ggPSBhZG9wdE5TKFtlbmRUb3VjaCBtdXRhYmxlQ29weV0p
OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChuZXdUb3VjaFtISURFdmVu
dFhLZXldICE9IHN0YXJ0VG91Y2hbSElERXZlbnRYS2V5XSkKLSAgICAgICAgICAgICAgICAgICAg
bmV3VG91Y2hbSElERXZlbnRYS2V5XSA9IEAoaW50ZXJwb2xhdGlvbnNbaW50ZXJwb2xhdGlvblR5
cGVdKFtzdGFydFRvdWNoW0hJREV2ZW50WEtleV0gZG91YmxlVmFsdWVdLCBbZW5kVG91Y2hbSElE
RXZlbnRYS2V5XSBkb3VibGVWYWx1ZV0sIHRpbWVSYXRpbykpOworICAgICAgICAgICAgICAgIGlm
IChuZXdUb3VjaC5nZXQoKVtISURFdmVudFhLZXldICE9IHN0YXJ0VG91Y2hbSElERXZlbnRYS2V5
XSkKKyAgICAgICAgICAgICAgICAgICAgbmV3VG91Y2guZ2V0KClbSElERXZlbnRYS2V5XSA9IEAo
aW50ZXJwb2xhdGlvbnNbaW50ZXJwb2xhdGlvblR5cGVdKFtzdGFydFRvdWNoW0hJREV2ZW50WEtl
eV0gZG91YmxlVmFsdWVdLCBbZW5kVG91Y2hbSElERXZlbnRYS2V5XSBkb3VibGVWYWx1ZV0sIHRp
bWVSYXRpbykpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChuZXdUb3Vj
aFtISURFdmVudFlLZXldICE9IHN0YXJ0VG91Y2hbSElERXZlbnRZS2V5XSkKLSAgICAgICAgICAg
ICAgICAgICAgbmV3VG91Y2hbSElERXZlbnRZS2V5XSA9IEAoaW50ZXJwb2xhdGlvbnNbaW50ZXJw
b2xhdGlvblR5cGVdKFtzdGFydFRvdWNoW0hJREV2ZW50WUtleV0gZG91YmxlVmFsdWVdLCBbZW5k
VG91Y2hbSElERXZlbnRZS2V5XSBkb3VibGVWYWx1ZV0sIHRpbWVSYXRpbykpOworICAgICAgICAg
ICAgICAgIGlmIChuZXdUb3VjaC5nZXQoKVtISURFdmVudFlLZXldICE9IHN0YXJ0VG91Y2hbSElE
RXZlbnRZS2V5XSkKKyAgICAgICAgICAgICAgICAgICAgbmV3VG91Y2guZ2V0KClbSElERXZlbnRZ
S2V5XSA9IEAoaW50ZXJwb2xhdGlvbnNbaW50ZXJwb2xhdGlvblR5cGVdKFtzdGFydFRvdWNoW0hJ
REV2ZW50WUtleV0gZG91YmxlVmFsdWVdLCBbZW5kVG91Y2hbSElERXZlbnRZS2V5XSBkb3VibGVW
YWx1ZV0sIHRpbWVSYXRpbykpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlm
IChuZXdUb3VjaFtISURFdmVudFByZXNzdXJlS2V5XSAhPSBzdGFydFRvdWNoW0hJREV2ZW50UHJl
c3N1cmVLZXldKQotICAgICAgICAgICAgICAgICAgICBuZXdUb3VjaFtISURFdmVudFByZXNzdXJl
S2V5XSA9IEAoaW50ZXJwb2xhdGlvbnNbaW50ZXJwb2xhdGlvblR5cGVdKFtzdGFydFRvdWNoW0hJ
REV2ZW50UHJlc3N1cmVLZXldIGRvdWJsZVZhbHVlXSwgW2VuZFRvdWNoW0hJREV2ZW50UHJlc3N1
cmVLZXldIGRvdWJsZVZhbHVlXSwgdGltZVJhdGlvKSk7CisgICAgICAgICAgICAgICAgaWYgKG5l
d1RvdWNoLmdldCgpW0hJREV2ZW50UHJlc3N1cmVLZXldICE9IHN0YXJ0VG91Y2hbSElERXZlbnRQ
cmVzc3VyZUtleV0pCisgICAgICAgICAgICAgICAgICAgIG5ld1RvdWNoLmdldCgpW0hJREV2ZW50
UHJlc3N1cmVLZXldID0gQChpbnRlcnBvbGF0aW9uc1tpbnRlcnBvbGF0aW9uVHlwZV0oW3N0YXJ0
VG91Y2hbSElERXZlbnRQcmVzc3VyZUtleV0gZG91YmxlVmFsdWVdLCBbZW5kVG91Y2hbSElERXZl
bnRQcmVzc3VyZUtleV0gZG91YmxlVmFsdWVdLCB0aW1lUmF0aW8pKTsKICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBbbmV3VG91Y2hlcyBhZGRPYmplY3Q6bmV3VG91Y2hdOwotICAg
ICAgICAgICAgICAgIFtuZXdUb3VjaCByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICBbbmV3VG91
Y2hlcyBhZGRPYmplY3Q6bmV3VG91Y2guZ2V0KCldOwogICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgTlNMb2coQCJNaXNzaW5nIEVuZCBUb3VjaCB3aXRoIElEOiAlbGQiLCAobG9u
ZylzdGFydFRvdWNoSUQpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBuZXdFdmVudFtI
SURFdmVudFRvdWNoZXNLZXldID0gbmV3VG91Y2hlczsKKyAgICAgICAgbmV3RXZlbnQuZ2V0KClb
SElERXZlbnRUb3VjaGVzS2V5XSA9IG5ld1RvdWNoZXM7CiAgICAgICAgIAotICAgICAgICBbaW50
ZXJwb2xhdGVkRXZlbnRzIGFkZE9iamVjdDpuZXdFdmVudF07Ci0gICAgICAgIFtuZXdFdmVudCBy
ZWxlYXNlXTsKKyAgICAgICAgW2ludGVycG9sYXRlZEV2ZW50cyBhZGRPYmplY3Q6bmV3RXZlbnQu
Z2V0KCldOwogICAgICAgICB0aW1lICs9IHRpbWVTdGVwOwogICAgIH0KICAgICAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQppbmRleCAwMjEx
MTFjZTE0NTQ1ZDAwMDQ0OWNkMmY5YzAwNDM1NTIzYWNmYmI1Li5lODA2ZDY3M2EwY2FhYzkwNWQ4
ZmNlNTlmNDM5ZGNjMTI5OTU4MTc3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tCkBAIC0yMDksOSArMjA5LDcgQEAgUGxhdGZvcm1XZWJW
aWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiogY29uZmlndXJhdGlv
biwgY29uc3QgVGUKICAgICBtX3dpbmRvdy5iYWNrZ3JvdW5kQ29sb3IgPSBbVUlDb2xvciBsaWdo
dEdyYXlDb2xvcl07CiAgICAgbV93aW5kb3cucGxhdGZvcm1XZWJWaWV3ID0gdGhpczsKIAotICAg
IFVJVmlld0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyID0gW1tQbGF0Zm9ybVdlYlZpZXdDb250
cm9sbGVyIGFsbG9jXSBpbml0XTsKLSAgICBbbV93aW5kb3cgc2V0Um9vdFZpZXdDb250cm9sbGVy
OnZpZXdDb250cm9sbGVyXTsKLSAgICBbdmlld0NvbnRyb2xsZXIgcmVsZWFzZV07CisgICAgW21f
d2luZG93IHNldFJvb3RWaWV3Q29udHJvbGxlcjphZG9wdE5TKFtbUGxhdGZvcm1XZWJWaWV3Q29u
dHJvbGxlciBhbGxvY10gaW5pdF0pLmdldCgpXTsKIAogICAgIG1fdmlldyA9IFtbVGVzdFJ1bm5l
cldLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTp2aWV3UmVjdEZvcldpbmRvd1JlY3QocmVj
dCwgV2ViVmlld1NpemluZ01vZGU6OkRlZmF1bHQpIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2Vi
Vmlld01hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01h
Yy5tbQppbmRleCA0NjhhMTJkODQ3ZjllZGM3NWRhNjBkNzAyZjUwYWE4ZTdiMWUwOTIxLi42YWZm
M2YxZGQ5YTk2NWM3OWUyNzgwM2NjYmQzMTQ3NzY5Njg4YTkyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCkBAIC0xNDksMTQgKzE0OSwx
MyBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6ZGlkSW5pdGlhbGl6ZUNsaWVudHMoKQogCiB2b2lk
IFBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCiB7Ci0gICAgTlNUZXh0Rmll
bGQgKnRleHRGaWVsZCA9IFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCAxMDAsIDIwKV07Ci0gICAgdGV4dEZpZWxkLnRhZyA9IDE7Ci0gICAgW1ttX3dp
bmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp0ZXh0RmllbGRdOwotICAgIFt0ZXh0RmllbGQg
cmVsZWFzZV07CisgICAgYXV0byB0ZXh0RmllbGQgPSBhZG9wdE5TKFtbTlNUZXh0RmllbGQgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDIwKV0pOworICAgIFt0ZXh0
RmllbGQgc2V0VGFnOiAxXTsKKyAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3
OnRleHRGaWVsZC5nZXQoKV07CiAKICAgICBOU1ZpZXcgKnZpZXcgPSBwbGF0Zm9ybVZpZXcoKTsK
ICAgICBbdGV4dEZpZWxkIHNldE5leHRLZXlWaWV3OnZpZXddOwotICAgIFt2aWV3IHNldE5leHRL
ZXlWaWV3OnRleHRGaWVsZF07CisgICAgW3ZpZXcgc2V0TmV4dEtleVZpZXc6dGV4dEZpZWxkLmdl
dCgpXTsKIH0KIAogdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQo
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5l
ckRyYWdnaW5nSW5mby5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1
bm5lckRyYWdnaW5nSW5mby5oCmluZGV4IDIyZjQ3MTQ5OWFkM2ZkZDA4OTlhNWUzY2UxMjk4Njhj
Y2UxMTNlNmUuLjVkYzQ4OWM5ZTE4ZGM5YTE2YmJhNGQzMGZiNTEzOGM4YWI3ZmQ4MmQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJEcmFnZ2lu
Z0luZm8uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVy
RHJhZ2dpbmdJbmZvLmgKQEAgLTI1LDEyICsyNSwxNCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQog
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCiBAaW50ZXJmYWNlIFdlYktpdFRlc3RSdW5u
ZXJEcmFnZ2luZ0luZm8gOiBOU09iamVjdCA8TlNEcmFnZ2luZ0luZm8+IHsKIEBwcml2YXRlCiAg
ICAgTlNTaXplIF9vZmZzZXQ7Ci0gICAgTlNJbWFnZSAqX2RyYWdnZWRJbWFnZTsKLSAgICBOU1Bh
c3RlYm9hcmQgKl9kcmFnZ2luZ1Bhc3RlYm9hcmQ7Ci0gICAgaWQgX2RyYWdnaW5nU291cmNlOwor
ICAgIFJldGFpblB0cjxOU0ltYWdlPiBfZHJhZ2dlZEltYWdlOworICAgIFJldGFpblB0cjxOU1Bh
c3RlYm9hcmQ+IF9kcmFnZ2luZ1Bhc3RlYm9hcmQ7CisgICAgUmV0YWluUHRyPGlkPiBfZHJhZ2dp
bmdTb3VyY2U7CiB9CiAKIC0gKGlkKWluaXRXaXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBvZmZz
ZXQ6KE5TU2l6ZSlvZmZzZXQgcGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBz
b3VyY2U6KGlkKXNvdXJjZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFj
L1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8ubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9XZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLm1tCmluZGV4IDU2NWRiMmYxMjRmOGYy
YzMyNDhlOWMzMjFiY2M4ZTljOGRkY2I4ZTIuLmU2MDNiNGIyYThiYTY2NjQ1ZWU5MGE2YTNhYzNl
ZTU1YzRhNjc5NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktp
dFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8ubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbQpAQCAtNDEsOSArNDEsOSBAQCAtIChp
ZClpbml0V2l0aEltYWdlOihOU0ltYWdlICopaW1hZ2Ugb2Zmc2V0OihOU1NpemUpb2Zmc2V0IHBh
c3RlYm9hcmQ6KE5TUGFzdGVibwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIF9kcmFnZ2VkSW1hZ2UgPSBbaW1hZ2UgcmV0YWluXTsKLSAgICBfZHJhZ2dpbmdQYXN0
ZWJvYXJkID0gW3Bhc3RlYm9hcmQgcmV0YWluXTsKLSAgICBfZHJhZ2dpbmdTb3VyY2UgPSBbc291
cmNlIHJldGFpbl07CisgICAgX2RyYWdnZWRJbWFnZSA9IGltYWdlOworICAgIF9kcmFnZ2luZ1Bh
c3RlYm9hcmQgPSBwYXN0ZWJvYXJkOworICAgIF9kcmFnZ2luZ1NvdXJjZSA9IHNvdXJjZTsKICAg
ICBfb2Zmc2V0ID0gb2Zmc2V0OwogICAgIAogICAgIHJldHVybiBzZWxmOwpAQCAtNTEsOSArNTEs
NiBAQCAtIChpZClpbml0V2l0aEltYWdlOihOU0ltYWdlICopaW1hZ2Ugb2Zmc2V0OihOU1NpemUp
b2Zmc2V0IHBhc3RlYm9hcmQ6KE5TUGFzdGVibwogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBb
X2RyYWdnZWRJbWFnZSByZWxlYXNlXTsKLSAgICBbX2RyYWdnaW5nUGFzdGVib2FyZCByZWxlYXNl
XTsKLSAgICBbX2RyYWdnaW5nU291cmNlIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIApAQCAtODIsMTcgKzc5LDE3IEBAIC0gKE5TUG9pbnQpZHJhZ2dlZEltYWdlTG9jYXRpb24K
IAogLSAoTlNJbWFnZSAqKWRyYWdnZWRJbWFnZQogewotICAgIHJldHVybiBfZHJhZ2dlZEltYWdl
OworICAgIHJldHVybiBfZHJhZ2dlZEltYWdlLmdldCgpOwogfQogCiAtIChOU1Bhc3RlYm9hcmQg
KilkcmFnZ2luZ1Bhc3RlYm9hcmQKIHsKLSAgICByZXR1cm4gX2RyYWdnaW5nUGFzdGVib2FyZDsK
KyAgICByZXR1cm4gX2RyYWdnaW5nUGFzdGVib2FyZC5nZXQoKTsKIH0KIAogLSAoaWQpZHJhZ2dp
bmdTb3VyY2UKIHsKLSAgICByZXR1cm4gX2RyYWdnaW5nU291cmNlOworICAgIHJldHVybiBfZHJh
Z2dpbmdTb3VyY2UuZ2V0KCk7CiB9CiAKIC0gKGludClkcmFnZ2luZ1NlcXVlbmNlTnVtYmVyCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFz
dGVib2FyZC5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQ
YXN0ZWJvYXJkLm1tCmluZGV4IDBkMzA0ZmMyODRhMjg4M2NmZDBmNzJlMmY5NjYwNTBjZjI1ZWRi
MGYuLmIzYWQyMzdjYWQ5NWIzNjEwNzNmOGM5MzZiNmI4ZTRjZDNkYjY5OTkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1t
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJv
YXJkLm1tCkBAIC01NywxMyArNTcsMTEgQEAgKyAoTlNQYXN0ZWJvYXJkICopX3Bhc3RlYm9hcmRX
aXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCiAgICAgICAgIG5hbWUgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIkxvY2FsUGFzdGVib2FyZCVkIiwgKytudW1iZXJdOwogICAgIGlmICghbG9j
YWxQYXN0ZWJvYXJkcykKICAgICAgICAgbG9jYWxQYXN0ZWJvYXJkcyA9IFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgTG9jYWxQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0g
W2xvY2FsUGFzdGVib2FyZHMgb2JqZWN0Rm9yS2V5Om5hbWVdOwotICAgIGlmIChwYXN0ZWJvYXJk
KQorICAgIGlmIChMb2NhbFBhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbbG9jYWxQYXN0ZWJvYXJk
cyBvYmplY3RGb3JLZXk6bmFtZV0pCiAgICAgICAgIHJldHVybiBwYXN0ZWJvYXJkOwotICAgIHBh
c3RlYm9hcmQgPSBbW0xvY2FsUGFzdGVib2FyZCBhbGxvY10gaW5pdFdpdGhOYW1lOm5hbWVdOwot
ICAgIFtsb2NhbFBhc3RlYm9hcmRzIHNldE9iamVjdDpwYXN0ZWJvYXJkIGZvcktleTpuYW1lXTsK
LSAgICBbcGFzdGVib2FyZCByZWxlYXNlXTsKLSAgICByZXR1cm4gcGFzdGVib2FyZDsKKyAgICBh
dXRvIHBhc3RlYm9hcmQgPSBhZG9wdE5TKFtbTG9jYWxQYXN0ZWJvYXJkIGFsbG9jXSBpbml0V2l0
aE5hbWU6bmFtZV0pOworICAgIFtsb2NhbFBhc3RlYm9hcmRzIHNldE9iamVjdDpwYXN0ZWJvYXJk
LmdldCgpIGZvcktleTpuYW1lXTsKKyAgICByZXR1cm4gcGFzdGVib2FyZC5nZXQoKTsKIH0KIAog
Ly8gVGhpcyBtZXRob2QgY3Jhc2hlcyB3aGVuIGNhbGxlZCBvbiBMb2NhbFBhc3RlYm9hcmQuCkBA
IC0xNTEsMTUgKzE0OSwxNCBAQCAtICh2b2lkKV9hZGRUeXBlc1dpdGhvdXRVcGRhdGluZ0NoYW5n
ZUNvdW50OihOU0FycmF5ICopbmV3VHlwZXMgb3duZXI6KGlkKW5ld093bgogICAgIHVuc2lnbmVk
IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgTlNTdHJpbmcg
KnR5cGUgPSBbbmV3VHlwZXMgb2JqZWN0QXRJbmRleDppXTsKLSAgICAgICAgTlNTdHJpbmcgKnNl
dFR5cGUgPSBbX3R5cGVzU2V0IG1lbWJlcjp0eXBlXTsKKyAgICAgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBzZXRUeXBlID0gW190eXBlc1NldCBtZW1iZXI6dHlwZV07CiAgICAgICAgIGlmICghc2V0
VHlwZSkgewotICAgICAgICAgICAgc2V0VHlwZSA9IFt0eXBlIGNvcHldOwotICAgICAgICAgICAg
W190eXBlc0FycmF5IGFkZE9iamVjdDpzZXRUeXBlXTsKLSAgICAgICAgICAgIFtfdHlwZXNTZXQg
YWRkT2JqZWN0OnNldFR5cGVdOwotICAgICAgICAgICAgW3NldFR5cGUgcmVsZWFzZV07CisgICAg
ICAgICAgICBzZXRUeXBlID0gYWRvcHROUyhbdHlwZSBjb3B5XSk7CisgICAgICAgICAgICBbX3R5
cGVzQXJyYXkgYWRkT2JqZWN0OnNldFR5cGUuZ2V0KCldOworICAgICAgICAgICAgW190eXBlc1Nl
dCBhZGRPYmplY3Q6c2V0VHlwZS5nZXQoKV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5ld093
bmVyICYmIFtuZXdPd25lciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhc3RlYm9hcmQ6
cHJvdmlkZURhdGFGb3JUeXBlOildKQotICAgICAgICAgICAgW25ld093bmVyIHBhc3RlYm9hcmQ6
c2VsZiBwcm92aWRlRGF0YUZvclR5cGU6c2V0VHlwZV07CisgICAgICAgICAgICBbbmV3T3duZXIg
cGFzdGVib2FyZDpzZWxmIHByb3ZpZGVEYXRhRm9yVHlwZTpzZXRUeXBlLmdldCgpXTsKICAgICB9
CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420079</attachid>
            <date>2021-02-11 19:15:51 -0800</date>
            <delta_ts>2021-02-11 19:29:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221780-20210211191550.patch</filename>
            <type>text/plain</type>
            <size>292699</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uN2FmOWU4MjlhM2Y0NDBlN2NiZmI0Yzk1MjQ0OTIz
ZjZiOWQ2NmZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIxLTAyLTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVz
YWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJl
bGVhc2VdIGluIFdlYktpdCBieSB1c2luZyBzbWFydCBwb2ludGVycy4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhcnJheU9mVGV4dEZvclRleHRN
YXJrZXJzOmF0dHJpYnV0ZWQ6XSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0
U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpwb3N0
VXNlckluZm9Gb3JDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBv
c3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb25G
b3JUZXh0Q29udHJvbCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgorICAgICAg
ICAqIGJyaWRnZS90ZXN0YmluZGluZ3MubW06CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpI
VE1MQ29udmVydGVyKToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRl
c0ZvckVsZW1lbnQpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZE1hcmtlcnNUb0xpc3Qp
OgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAqIGhpc3RvcnkvbWFjL0hp
c3RvcnlJdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OnNldFZpZXdT
dGF0ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjOjpleHBvc2VkVW5maWxsZWRBcmVhIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW06CisgICAgICAgICgtW1dlYkNvcmVNb3Rpb25NYW5h
Z2VyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQ29yZU1vdGlvbk1hbmFnZXIgaW5pdGlhbGl6
ZU9uTWFpblRocmVhZF0pOgorICAgICAgICAoLVtXZWJDb3JlTW90aW9uTWFuYWdlciBjaGVja0Ns
aWVudFN0YXR1c10pOgorICAgICAgICAoLVtXZWJDb3JlTW90aW9uTWFuYWdlciB1cGRhdGVdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW06CisgICAgICAgICgtW1dBS1Zp
ZXcgZGVhbGxvY10pOgorICAgICAgICAoLVtXQUtWaWV3IF9zdWJ2aWV3UmVmZXJlbmNlc10pOgor
ICAgICAgICAoLVtXQUtWaWV3IGFkZFN1YnZpZXc6XSk6CisgICAgICAgICgtW1dBS1ZpZXcgcmVt
b3ZlRnJvbVN1cGVydmlld10pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLVmlld0lu
dGVybmFsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViTmV0d29ya1N0YXRlT2JzZXJ2ZXIgaW5pdFdpdGhCbG9jazpd
KToKKyAgICAgICAgKC1bV2ViTmV0d29ya1N0YXRlT2JzZXJ2ZXIgZGVhbGxvY10pOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6Om1ha2VEZWxlZ2F0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5kV29y
ZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmROZXh0V29yZEZyb21JbmRleCk6CisK
KzIwMjEtMDItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXcgdXNhZ2Ugb2YgYWRvcHROUygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjE3NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXZpZXcgdXNhZ2Ugb2YgYWRvcHROUygpOgorICAgICAgICAxLiBN
YWtlIHN1cmUgd2UgY2FsbCBhZG9wdE5TKCkgYXMgc29vbiBhcyB3ZSBhbGxvY2F0ZSB0aGUgb2Jq
ZWN0IGluc3RlYWQgb2YgZG9pbmcgaXQgbGF0ZXIgb24sIGFzIHRoaXMgaXMgbGVzcyBlcnJvci1w
cm9uZQorICAgICAgICAyLiBGaXggY2FzZXMgd2hlcmUgd2UgY2FsbGVkIGFkb3B0TlMoKSBidXQg
cmVhbGx5IHNob3VsZCBoYXZlIHJldGFpbmVkIGluc3RlYWQgb2YgYWRvcHRpbmcKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVy
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmFk
ZEFuaW1hdGlvbkZvcktleSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1I
VFRQQm9keSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURhdGVUaW1lRm9ybWF0dGVyKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5jb2Rl
ZFByZWZlcmVuY2VWYWx1ZSk6CisKIDIwMjEtMDItMTEgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0
aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdW0ZDUl0gUmFuZ2UgaW5wdXRzIGhhdmUgYW4g
aW5jb3JyZWN0IFJUTCBhcHBlYXJhbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEzMDYwZmM0ZWQ3ZTIzZmM4MjIw
ZTliNjhmMjc2NDhlMmY3ZmQ2OGIuLjc5ZTYzNGNjZmQ2Yjg2YTc1Nzg5NGMyZGI4OTg0NzYxMWNj
YWQxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMjEtMDItMTEgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2Yg
W29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjE3ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0g
aW4gV2ViS2l0IGJ5IHVzaW5nIHNtYXJ0IHBvaW50ZXJzLgorCisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dLT2JqZWN0Lm1tOgorICAgICAgICAoLVtXS09iamVjdCBkZWFsbG9jXSk6CisgICAgICAg
IChpbml0aWFsaXplVGFyZ2V0SWZOZWVkZWQpOgorICAgICAgICAoLVtXS09iamVjdCBmb3J3YXJk
aW5nVGFyZ2V0Rm9yU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dLT2JqZWN0IGZvcndhcmRJbnZv
Y2F0aW9uOl0pOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlUHJvcGVydHlBcHBsaWVyLm1tOgorICAgICAgICAoLVtVSVZpZXcgX3dlYl9zZXRTdWJ2aWV3
czpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfc25hcHNob3RSZWN0OmludG9JbWFnZU9mV2lkdGg6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBp
bml0V2l0aExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OmN1c3RvbVByb3RvY29sSUQ6
cmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBkZWFsbG9jXSk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3Rh
cnRMb2FkaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0lu
c3BlY3RvckhpZ2hsaWdodFZpZXcubW06CisgICAgICAgICgtW1dLSW5zcGVjdG9ySGlnaGxpZ2h0
VmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcgZGVhbGxvY10pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgX3JlbW92
ZUFsbExheWVyc10pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgX2NyZWF0
ZUxheWVyczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2VsZWN0UG9zaXRpb25BdFBvaW50
OnN0YXlpbmdXaXRoaW5Gb2N1c2VkRWxlbWVudDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnk6aW5EaXJlY3Rpb246
ZnJvbVBvaW50OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IG1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5OmluRGlyZWN0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dDp3aXRoQm91bmRhcnk6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS1Njcm9sbFZpZXcubW06CisgICAgICAgICgtW1dLU2Nyb2xsVmlldyBfdXBkYXRlRGVs
ZWdhdGVdKToKKyAgICAgICAgKC1bV0tTY3JvbGxWaWV3IGRlYWxsb2NdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW06CisgICAgICAgICgtW1dL
U2VsZWN0UG9wb3ZlciBpbml0V2l0aFZpZXc6aGFzR3JvdXBzOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1Rl
eHRJbnB1dFBhbmVsIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRQYW5lbCBpbml0
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbToKKyAgICAg
ICAgKCtbV0tQb3BvdmVyQ29sb3JXZWxsIF9jb2xvclBvcG92ZXJDcmVhdGVJZk5lY2Vzc2FyeTpd
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3RCYXNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbToKKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlUGFyZW50Ol0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbToKKyAgICAg
ICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBkZWFsbG9jXSk6CisgICAgICAgICgt
W1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgorCisyMDIxLTAyLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3IHVzYWdlIG9mIGFkb3B0TlMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3IHVzYWdlIG9mIGFkb3B0TlMoKToKKyAgICAg
ICAgMS4gTWFrZSBzdXJlIHdlIGNhbGwgYWRvcHROUygpIGFzIHNvb24gYXMgd2UgYWxsb2NhdGUg
dGhlIG9iamVjdCBpbnN0ZWFkIG9mIGRvaW5nIGl0IGxhdGVyIG9uLCBhcyB0aGlzIGlzIGxlc3Mg
ZXJyb3ItcHJvbmUKKyAgICAgICAgMi4gRml4IGNhc2VzIHdoZXJlIHdlIGNhbGxlZCBhZG9wdE5T
KCkgYnV0IHJlYWxseSBzaG91bGQgaGF2ZSByZXRhaW5lZCBpbnN0ZWFkIG9mIGFkb3B0aW5nCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3Qu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6
CisKIDIwMjEtMDItMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtDb2NvYV0gSVBDIGRlY29kZXIgaXMgdXNpbmcgZGVjb2RlZCBzaXplIHRvIGFsbG9jYXRlIG1l
bW9yeSBmb3IgYW4gYXJyYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA3MWQ2ZTM4
OGJlOWM5NTFiMTA0YzAzZWMwYzEzYjhlZjNmZjc4MTJlLi41Mjk2ZjQ1NDIzZjIzNmE0Nzc4OGEy
MzEwNzUxZjRlOGY4ZWFjZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMjEtMDItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE3ODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2Ug
ZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0IGJ5IHVzaW5nIHNtYXJ0
IHBvaW50ZXJzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9T
Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50SU9TOjpydW5PcGVuUGFuZWwpOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBkZWFs
bG9jXSk6CisgICAgICAgICgtW1dlYlBERlZpZXcgc2V0RGF0YVNvdXJjZTpdKToKKyAgICAgICAg
KC1bV2ViUERGVmlldyBfY2hlY2tQREZUaXRsZV0pOgorICAgICAgICAoLVtXZWJQREZWaWV3IHRp
dGxlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAg
ICAgICgtW1dlYlBERlZpZXdQbGFjZWhvbGRlciBfdXBkYXRlVGl0bGVGb3JEb2N1bWVudElmQXZh
aWxhYmxlXSk6CisKIDIwMjEtMDEtMTkgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIE1vZHVsYXJpemUgV2ViS2l0TGVnYWN5LmZyYW1ld29yawpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IGE3ZTI2MTU1N2U4MDczNWE3MzM1NDQ5MmY3ZDg0ZTc1ZTA2
ODA0MDUuLjZhNjdjMDMxZTlkZTBlNGM0OGUyNjA2OGFmMjM4YmM4MzcyMjY1ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODMgQEAKKzIwMjEtMDItMTEgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNh
Z2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE3ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVs
ZWFzZV0gaW4gV2ViS2l0IGJ5IHVzaW5nIHNtYXJ0IHBvaW50ZXJzLgorCisgICAgICAgICogRE9N
L0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBhYnNvbHV0ZVF1YWRz
XSk6CisgICAgICAgICgtW0RPTUhUTUxBcmVhRWxlbWVudCBhYnNvbHV0ZVF1YWRzV2l0aE93bmVy
Ol0pOgorICAgICAgICAqIERPTS9FeGNlcHRpb25IYW5kbGVycy5tbToKKyAgICAgICAgKHJhaXNl
RE9NRXJyb3JFeGNlcHRpb24pOgorICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVs
dFVJRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6
cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDpkZWZhdWx0VGV4dDppbml0aWF0
ZWRCeUZyYW1lOl0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeS5tbToKKyAgICAgICAg
KC1bV2ViSGlzdG9yeVByaXZhdGUgaW5pdF0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0
ZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIHJlbW92ZUl0ZW1Gcm9t
RGF0ZUNhY2hlczpdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgYWRkSXRlbVRvRGF0
ZUNhY2hlczpdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgdmlzaXRlZFVSTDp3aXRo
VGl0bGU6XSk6CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGFkZEl0ZW06ZGlzY2FyZER1
cGxpY2F0ZTpdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgcmVidWlsZEhpc3RvcnlC
eURheUlmTmVlZGVkOl0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSByZW1vdmVBbGxJ
dGVtc10pOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBvcmRlcmVkTGFzdFZpc2l0ZWRE
YXlzXSk6CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGxvYWRIaXN0b3J5R3V0c0Zyb21V
Ukw6c2F2ZWRJdGVtc0NvdW50OmNvbGxlY3REaXNjYXJkZWRJdGVtc0ludG86ZXJyb3I6XSk6Cisg
ICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGFkZFZpc2l0ZWRMaW5rc1RvVmlzaXRlZExpbmtT
dG9yZTpdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeSBsb2FkRnJvbVVSTDplcnJvcjpdKToKKyAg
ICAgICAgKC1bV2ViSGlzdG9yeSBfdmlzaXRlZFVSTDp3aXRoVGl0bGU6bWV0aG9kOndhc0ZhaWx1
cmU6XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbToKKyAgICAgICAgKC1b
V2ViSGlzdG9yeUl0ZW0gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246XSk6CisgICAg
ICAgICogTWlzYy9XZWJEb3dubG9hZC5tbToKKyAgICAgICAgKC1bV2ViRG93bmxvYWRJbnRlcm5h
bCBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkRvd25sb2FkSW50ZXJuYWwgc2V0UmVhbERlbGVn
YXRlOl0pOgorICAgICAgICAoLVtXZWJEb3dubG9hZEludGVybmFsIGRvd25sb2FkRGlkQmVnaW46
XSk6CisgICAgICAgICgtW1dlYkRvd25sb2FkSW50ZXJuYWwgZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0pOgorICAgICAgICAoLVtXZWJEb3dubG9hZEludGVybmFs
IGRvd25sb2FkOmRpZFJlY2VpdmVSZXNwb25zZTpdKToKKyAgICAgICAgKC1bV2ViRG93bmxvYWRJ
bnRlcm5hbCBkb3dubG9hZDpkaWRSZWNlaXZlRGF0YU9mTGVuZ3RoOl0pOgorICAgICAgICAoLVtX
ZWJEb3dubG9hZEludGVybmFsIGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOl0pOgorICAgICAgICAoLVtXZWJEb3dubG9hZEludGVybmFsIGRvd25sb2FkOmRp
ZENyZWF0ZURlc3RpbmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJEb3dubG9hZEludGVybmFsIGRv
d25sb2FkRGlkRmluaXNoOl0pOgorICAgICAgICAoLVtXZWJEb3dubG9hZEludGVybmFsIGRvd25s
b2FkOmRpZEZhaWxXaXRoRXJyb3I6XSk6CisgICAgICAgICogTWlzYy9XZWJOU0RhdGFFeHRyYXMu
bW06CisgICAgICAgICgtW05TRGF0YSBfd2Via2l0X3BhcnNlUkZDODIySGVhZGVyRmllbGRzXSk6
CisgICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW06CisgICAgICAgICgtW05T
UGFzdGVib2FyZCBfd2ViX3dyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50Ol0pOgorICAg
ICAgICAoLVtOU1Bhc3RlYm9hcmQgX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVt
ZW50OlVSTDp0aXRsZTphcmNoaXZlOnNvdXJjZTpdKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyOjpzcGF3blBsdWdpbkhvc3QpOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpwZXJmb3JtUmVxdWVzdCk6CisgICAgICAgICog
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbToKKyAgICAgICAgKFdlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBwbHVn
aW5WaWV3OnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3
IGxvYWRQbHVnaW5SZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcg
bG9hZFJlcXVlc3Q6aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpdKToK
KyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dl
YlBsdWdpbkNvbnRyb2xsZXIgcGx1Z2luVmlldzpyZWNlaXZlZFJlc3BvbnNlOl0pOgorICAgICAg
ICAqIFBsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW06CisgICAgICAgICgtW1dlYlBsdWdpbkRh
dGFiYXNlIHJlZnJlc2hdKToKKyAgICAgICAgKC1bV2ViUGx1Z2luRGF0YWJhc2UgX3JlbW92ZVBs
dWdpbjpdKToKKyAgICAgICAgKC1bV2ViUGx1Z2luRGF0YWJhc2UgX3NjYW5Gb3JOZXdQbHVnaW5z
XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ2hyb21lQ2xp
ZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6bW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRl
ZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6cnVuT3Bl
blBhbmVsKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAg
ICAgIChhdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24pOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmZvcmNlTGF5b3V0Rm9yTm9uSFRNTCk6CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUpOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkgY29uc3QpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKToKKyAgICAgICAgKHBsdWdpblZp
ZXcpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW06CisgICAgICAgIChX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoLVtXZWJH
ZW9sb2NhdGlvblByb3ZpZGVySW5pdGlhbGl6YXRpb25MaXN0ZW5lciBpbml0aWFsaXphdGlvbkFs
bG93ZWRXZWJWaWV3Ol0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBpbml0XSk6
CisgICAgICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgaW5pdFdpdGhJbnNwZWN0
ZWRXZWJWaWV3OmlzVW5kZXJUZXN0Ol0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dD
b250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJv
bGxlciBmcm9udGVuZFdlYlZpZXddKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29u
dHJvbGxlciB3aW5kb3ddKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxl
ciBzaG93V2luZG93Ol0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVy
IHdlYlZpZXc6cnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjphbGxv
d011bHRpcGxlRmlsZXM6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVy
bWlzc2lvbik6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNoZWNrUGVybWlzc2lv
bik6CisgICAgICAgICogV2ViVmlldy9XZWJBcmNoaXZlLm1tOgorICAgICAgICAoLVtXZWJBcmNo
aXZlUHJpdmF0ZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFyY2hpdmUgaW5pdFdpdGhNYWlu
UmVzb3VyY2U6c3VicmVzb3VyY2VzOnN1YmZyYW1lQXJjaGl2ZXM6XSk6CisgICAgICAgICgtW1dl
YkFyY2hpdmUgbWFpblJlc291cmNlXSk6CisgICAgICAgICgtW1dlYkFyY2hpdmUgc3VicmVzb3Vy
Y2VzXSk6CisgICAgICAgICgtW1dlYkFyY2hpdmUgc3ViZnJhbWVBcmNoaXZlc10pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBf
ZG9jdW1lbnRGcmFnbWVudFdpdGhBcmNoaXZlOl0pOgorICAgICAgICAoLVtXZWJEYXRhU291cmNl
IF9tYWtlUmVwcmVzZW50YXRpb25dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZVByaXZhdGUgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJGcmFt
ZVByaXZhdGUgc2V0V2ViRnJhbWVWaWV3Ol0pOgorICAgICAgICAoK1tXZWJGcmFtZSBfY3JlYXRl
RnJhbWVXaXRoUGFnZTpmcmFtZU5hbWU6ZnJhbWVWaWV3Om93bmVyRWxlbWVudDpdKToKKyAgICAg
ICAgKCtbV2ViRnJhbWUgX2NyZWF0ZU1haW5GcmFtZVdpdGhQYWdlOmZyYW1lTmFtZTpmcmFtZVZp
ZXc6XSk6CisgICAgICAgICgrW1dlYkZyYW1lIF9jcmVhdGVNYWluRnJhbWVXaXRoU2ltcGxlSFRN
TERvY3VtZW50V2l0aFBhZ2U6ZnJhbWVWaWV3OnN0eWxlOl0pOgorICAgICAgICAoLVtXZWJGcmFt
ZSBnZXREaWN0YXRpb25SZXN1bHRSYW5nZXM6YW5kTWV0YWRhdGFzOl0pOgorICAgICAgICAoLVtX
ZWJGcmFtZSBmcmFtZVZpZXddKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwu
aDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tbToKKyAgICAgICAgKC1bV2ViRnJh
bWVWaWV3UHJpdmF0ZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Nyb2xs
Vmlld10pOgorICAgICAgICAoLVtXZWJGcmFtZVZpZXcgX2luc3RhbGxdKToKKyAgICAgICAgKC1b
V2ViRnJhbWVWaWV3IGluaXRXaXRoRnJhbWU6XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBf
c2V0Q3VzdG9tU2Nyb2xsVmlld0NsYXNzOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnVsbFNj
cmVlbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGlu
aXRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJI
VE1MVmlldyBfdXBkYXRlTW91c2VvdmVyV2l0aEV2ZW50Ol0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViTmF2aWdhdGlvbkRhdGEubW06CisgICAgICAgICgtW1dlYk5hdmlnYXRpb25EYXRhUHJpdmF0
ZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYk5hdmlnYXRpb25EYXRhIGluaXRXaXRoVVJMU3Ry
aW5nOnRpdGxlOm9yaWdpbmFsUmVxdWVzdDpyZXNwb25zZTpoYXNTdWJzdGl0dXRlRGF0YTpjbGll
bnRSZWRpcmVjdFNvdXJjZTpdKToKKyAgICAgICAgKC1bV2ViTmF2aWdhdGlvbkRhdGEgdXJsXSk6
CisgICAgICAgICgtW1dlYk5hdmlnYXRpb25EYXRhIHRpdGxlXSk6CisgICAgICAgICgtW1dlYk5h
dmlnYXRpb25EYXRhIG9yaWdpbmFsUmVxdWVzdF0pOgorICAgICAgICAoLVtXZWJOYXZpZ2F0aW9u
RGF0YSByZXNwb25zZV0pOgorICAgICAgICAoLVtXZWJOYXZpZ2F0aW9uRGF0YSBjbGllbnRSZWRp
cmVjdFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGRG9jdW1lbnRFeHRyYXMubW06
CisgICAgICAgIChhbGxTY3JpcHRzSW5QREZEb2N1bWVudCk6CisgICAgICAgICogV2ViVmlldy9X
ZWJQREZSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViUERGUmVwcmVzZW50YXRpb24g
ZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQ
REZWaWV3Lm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3IG1lbnVGb3JFdmVudDpdKToKKyAgICAg
ICAgKC1bV2ViUERGVmlldyBjb3VudE1hdGNoZXNGb3JUZXh0OmluRE9NUmFuZ2U6b3B0aW9uczps
aW1pdDptYXJrTWF0Y2hlczpdKToKKyAgICAgICAgKC1bV2ViUERGVmlldyBhdHRyaWJ1dGVkU3Ry
aW5nXSk6CisgICAgICAgICgtW1dlYlBERlZpZXcgc2VsZWN0aW9uSW1hZ2VGb3JjaW5nQmxhY2tU
ZXh0Ol0pOgorICAgICAgICAoLVtXZWJQREZWaWV3IF9tZW51SXRlbXNGcm9tUERGS2l0Rm9yRXZl
bnQ6XSk6CisgICAgICAgICgtW1dlYlBERlZpZXcgX25leHRNYXRjaEZvcjpkaXJlY3Rpb246Y2Fz
ZVNlbnNpdGl2ZTp3cmFwOmZyb21TZWxlY3Rpb246c3RhcnRJblNlbGVjdGlvbjpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlBvbGljeURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJQb2xpY3lE
ZWNpc2lvbkxpc3RlbmVyUHJpdmF0ZSBpbml0V2l0aFRhcmdldDphY3Rpb246XSk6CisgICAgICAg
ICgtW1dlYlBvbGljeURlY2lzaW9uTGlzdGVuZXJQcml2YXRlIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciBfdXNlUG9saWN5Ol0pOgorICAgICAgICAoLVtX
ZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyIF9pbnZhbGlkYXRlXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldElCQ3Jl
YXRvcklEOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW06CisgICAg
ICAgIChXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFyc2VkKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViVGV4dENvbXBs
ZXRpb25Db250cm9sbGVyIF9idWlsZFVJXSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyIGluaXRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlZpZXcgX3JlZ2lzdGVyRHJhZ2dlZFR5cGVzXSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgr
W1dlYlZpZXcgX3N1cHBvcnRlZEZpbGVFeHRlbnNpb25zXSk6CisgICAgICAgICgtW1dlYlZpZXcg
aW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTpmcmFtZTpwcmVmZXJlbmNlczpncm91cE5h
bWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Rvd25sb2FkVVJMOl0pOgorICAgICAgICAoLVtX
ZWJWaWV3IF9vcGVuTmV3V2luZG93V2l0aFJlcXVlc3Q6XSk6CisgICAgICAgICgtW1dlYlZpZXcg
X2RpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcg
Y2FyZXRDaGFuZ2VkXSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0QmFja2dyb3VuZENvbG9yOl0p
OgorICAgICAgICAoK1tXZWJWaWV3IHNldE1JTUVUeXBlc1Nob3duQXNIVE1MOl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IHNldFByZWZlcmVuY2VzOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldFBy
ZWZlcmVuY2VzSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRDdXJyZW50Tm9k
ZUhpZ2hsaWdodDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzdG9wTG9hZGluZ0FuZENsZWFyXSk6
CisgICAgICAgICgtW1dlYlZpZXcgX29wZW5GcmFtZUluTmV3V2luZG93RnJvbU1lbnU6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgX3NlYXJjaFdpdGhHb29nbGVGcm9tTWVudTpdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYldpbmRvd0FuaW1hdGlvbi5tbToKKyAgICAgICAgKC1bV2ViV2luZG93U2Nh
bGVBbmltYXRpb24gc2V0U3ViQW5pbWF0aW9uOl0pOgorCiAyMDIxLTAyLTEwICBSb2IgQnVpcyAg
PHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIGV2ZW50IGxvb3AgdG8gc2V0IHRpdGxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDNjZWU5NmZlMzZm
ODRkYjkyNDRhYTA5MDVkMTZmZmY3MDEwNTM1M2EuLmQ0NzI5MDdmNjM1MzNlNDg2Yjk0NTQ4MTdi
OTM0ZjJiMjJjYmMzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CkBAIC0yMzYxLDE2ICsyMzYxLDE0IEBAIC0gKE5TQXJyYXkgKilhcnJheU9mVGV4dEZvclRleHRN
YXJrZXJzOihOU0FycmF5ICopbWFya2VycyBhdHRyaWJ1dGVkOihCT09MKWF0dHJpCiAgICAgICAg
ICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlz
dE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIG1ha2VDb250YWluZXJPZmZzZXRQ
b3NpdGlvbihpdC5yYW5nZSgpLnN0YXJ0KSk7CiAKICAgICAgICAgICAgICAgICBpZiAoIWxpc3RN
YXJrZXJUZXh0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBOU011dGFibGVBdHRy
aWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nID0gW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0XTsKLSAgICAgICAgICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5k
VGV4dChhdHRyU3RyaW5nLCAmbm9kZSwgbGlzdE1hcmtlclRleHQpOwotICAgICAgICAgICAgICAg
ICAgICBbYXJyYXkgYWRkT2JqZWN0OmF0dHJTdHJpbmddOwotICAgICAgICAgICAgICAgICAgICBb
YXR0clN0cmluZyByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBhdHRyU3RyaW5n
ID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5n
LmdldCgpLCAmbm9kZSwgbGlzdE1hcmtlclRleHQpOworICAgICAgICAgICAgICAgICAgICBbYXJy
YXkgYWRkT2JqZWN0OmF0dHJTdHJpbmcuZ2V0KCldOwogICAgICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKmF0dHJTdHJpbmcgPSBbW05T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdOwotICAgICAgICAgICAgICAgIEFY
QXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoYXR0clN0cmluZywgJm5vZGUsIGl0LnRleHQoKS5j
cmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkpOwotICAgICAgICAgICAgICAgIFth
cnJheSBhZGRPYmplY3Q6YXR0clN0cmluZ107Ci0gICAgICAgICAgICAgICAgW2F0dHJTdHJpbmcg
cmVsZWFzZV07CisgICAgICAgICAgICAgICAgYXV0byBhdHRyU3RyaW5nID0gYWRvcHROUyhbW05T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAgICAgICBB
WEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcuZ2V0KCksICZub2RlLCBpdC50
ZXh0KCkuY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBbYXJyYXkgYWRkT2JqZWN0OmF0dHJTdHJpbmcuZ2V0KCldOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgTm9kZSogcmVwbGFjZWROb2RlID0gaXQubm9k
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0
Q2FjaGVNYWMubW0KaW5kZXggMDZlZWM2YTliNmM5NjM2MDJjOTUzYjJkYmUxMjQ1NWZkMWFiYTVk
Yy4uZGM0Y2QxMzA5MzAxZTJjNjk2NTMwYTY1NmYwNjI1Mjk5OTliMmNkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBA
IC00MjMsNyArNDIzLDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdl
UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QKICAgICBpZiAoIW9iamVj
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqdXNlckluZm8g
PSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NV07CisgICAg
YXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OjVdKTsKICAgICBpZiAobV9pc1N5bmNocm9uaXppbmdTZWxlY3Rpb24pCiAg
ICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4
dFN0YXRlU3luY0tleV07CiAgICAgaWYgKGludGVudC50eXBlICE9IEFYVGV4dFN0YXRlQ2hhbmdl
VHlwZVVua25vd24pIHsKQEAgLTQ2MiwxMiArNDYyLDEwIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2Jq
ZWN0CiAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6d3JhcHBlciBmb3JLZXk6TlNBY2Nlc3Np
YmlsaXR5VGV4dENoYW5nZUVsZW1lbnRdOwogCiAgICAgaWYgKGF1dG8gcm9vdCA9IHJvb3RXZWJB
cmVhKCkpIHsKLSAgICAgICAgQVhQb3N0Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKHJvb3RXZWJB
cmVhKCktPndyYXBwZXIoKSwgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0Q2hhbmdlZE5vdGlm
aWNhdGlvbiwgdXNlckluZm8pOworICAgICAgICBBWFBvc3ROb3RpZmljYXRpb25XaXRoVXNlcklu
Zm8ocm9vdFdlYkFyZWEoKS0+d3JhcHBlcigpLCBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRD
aGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mby5nZXQoKSk7CiAgICAgICAgIGlmIChyb290LT53
cmFwcGVyKCkgIT0gb2JqZWN0LT53cmFwcGVyKCkpCi0gICAgICAgICAgICBBWFBvc3ROb3RpZmlj
YXRpb25XaXRoVXNlckluZm8ob2JqZWN0LT53cmFwcGVyKCksIE5TQWNjZXNzaWJpbGl0eVNlbGVj
dGVkVGV4dENoYW5nZWROb3RpZmljYXRpb24sIHVzZXJJbmZvKTsKKyAgICAgICAgICAgIEFYUG9z
dE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhvYmplY3QtPndyYXBwZXIoKSwgTlNBY2Nlc3NpYmls
aXR5U2VsZWN0ZWRUZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbiwgdXNlckluZm8uZ2V0KCkpOwogICAg
IH0KLQotICAgIFt1c2VySW5mbyByZWxlYXNlXTsKIH0KIAogc3RhdGljIHZvaWQgYWRkVGV4dE1h
cmtlckZvcihOU011dGFibGVEaWN0aW9uYXJ5KiBjaGFuZ2UsIEFYQ29yZU9iamVjdCYgb2JqZWN0
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQpAQCAtNTEyLDcgKzUxMCw3IEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9u
KEFjY2Vzc2liaWxpdHlPYmplY3QqCiAKIHN0YXRpYyB2b2lkIHBvc3RVc2VySW5mb0ZvckNoYW5n
ZXMoQVhDb3JlT2JqZWN0JiByb290V2ViQXJlYSwgQVhDb3JlT2JqZWN0JiBvYmplY3QsIE5TTXV0
YWJsZUFycmF5KiBjaGFuZ2VzKQogewotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnVzZXJJbmZv
ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjRdOworICAg
IGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eTo0XSk7CiAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpAKHBsYXRmb3JtQ2hh
bmdlVHlwZUZvcldlYkNvcmVDaGFuZ2VUeXBlKEFYVGV4dFN0YXRlQ2hhbmdlVHlwZUVkaXQpKSBm
b3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dFN0YXRlQ2hhbmdlVHlwZUtleV07CiAgICAgaWYgKGNo
YW5nZXMuY291bnQpCiAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6Y2hhbmdlcyBmb3JLZXk6
TlNBY2Nlc3NpYmlsaXR5VGV4dENoYW5nZVZhbHVlc107CkBAIC01MjAsMTEgKzUxOCw5IEBAIHN0
YXRpYyB2b2lkIHBvc3RVc2VySW5mb0ZvckNoYW5nZXMoQVhDb3JlT2JqZWN0JiByb290V2ViQXJl
YSwgQVhDb3JlT2JqZWN0JiBvYmplCiAgICAgaWYgKGlkIHdyYXBwZXIgPSBvYmplY3Qud3JhcHBl
cigpKQogICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OndyYXBwZXIgZm9yS2V5Ok5TQWNjZXNz
aWJpbGl0eVRleHRDaGFuZ2VFbGVtZW50XTsKIAotICAgIEFYUG9zdE5vdGlmaWNhdGlvbldpdGhV
c2VySW5mbyhyb290V2ViQXJlYS53cmFwcGVyKCksIE5TQWNjZXNzaWJpbGl0eVZhbHVlQ2hhbmdl
ZE5vdGlmaWNhdGlvbiwgdXNlckluZm8pOworICAgIEFYUG9zdE5vdGlmaWNhdGlvbldpdGhVc2Vy
SW5mbyhyb290V2ViQXJlYS53cmFwcGVyKCksIE5TQWNjZXNzaWJpbGl0eVZhbHVlQ2hhbmdlZE5v
dGlmaWNhdGlvbiwgdXNlckluZm8uZ2V0KCkpOwogICAgIGlmIChyb290V2ViQXJlYS53cmFwcGVy
KCkgIT0gb2JqZWN0LndyYXBwZXIoKSkKLSAgICAgICAgQVhQb3N0Tm90aWZpY2F0aW9uV2l0aFVz
ZXJJbmZvKG9iamVjdC53cmFwcGVyKCksIE5TQWNjZXNzaWJpbGl0eVZhbHVlQ2hhbmdlZE5vdGlm
aWNhdGlvbiwgdXNlckluZm8pOwotCi0gICAgW3VzZXJJbmZvIHJlbGVhc2VdOworICAgICAgICBB
WFBvc3ROb3RpZmljYXRpb25XaXRoVXNlckluZm8ob2JqZWN0LndyYXBwZXIoKSwgTlNBY2Nlc3Np
YmlsaXR5VmFsdWVDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mby5nZXQoKSk7CiB9CiAKIHZv
aWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9u
KEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWFRleHRFZGl0VHlwZSBkZWxldGlvblR5cGUsIGNvbnN0
IFN0cmluZyYgZGVsZXRlZFRleHQsIEFYVGV4dEVkaXRUeXBlIGluc2VydGlvblR5cGUsIGNvbnN0
IFN0cmluZyYgaW5zZXJ0ZWRUZXh0LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQpA
QCAtNTM1LDE1ICs1MzEsMTQgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2Vt
ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QKICAgICBpZiAoIW9i
amVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNNdXRhYmxlQXJyYXkgKmNoYW5nZXMgPSBb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjJdOworICAgIGF1dG8gY2hh
bmdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eToy
XSk7CiAgICAgaWYgKE5TRGljdGlvbmFyeSAqY2hhbmdlID0gdGV4dFJlcGxhY2VtZW50Q2hhbmdl
RGljdGlvbmFyeSgqb2JqZWN0LCBkZWxldGlvblR5cGUsIGRlbGV0ZWRUZXh0LCBwb3NpdGlvbikp
CiAgICAgICAgIFtjaGFuZ2VzIGFkZE9iamVjdDpjaGFuZ2VdOwogICAgIGlmIChOU0RpY3Rpb25h
cnkgKmNoYW5nZSA9IHRleHRSZXBsYWNlbWVudENoYW5nZURpY3Rpb25hcnkoKm9iamVjdCwgaW5z
ZXJ0aW9uVHlwZSwgaW5zZXJ0ZWRUZXh0LCBwb3NpdGlvbikpCiAgICAgICAgIFtjaGFuZ2VzIGFk
ZE9iamVjdDpjaGFuZ2VdOwogCiAgICAgaWYgKGF1dG8qIHJvb3QgPSByb290V2ViQXJlYSgpKQot
ICAgICAgICBwb3N0VXNlckluZm9Gb3JDaGFuZ2VzKCpyb290LCAqb2JqZWN0LCBjaGFuZ2VzKTsK
LSAgICBbY2hhbmdlcyByZWxlYXNlXTsKKyAgICAgICAgcG9zdFVzZXJJbmZvRm9yQ2hhbmdlcygq
cm9vdCwgKm9iamVjdCwgY2hhbmdlcy5nZXQoKSk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woQVhD
b3JlT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIGNvbnN0IFN0cmlu
ZyYgaW5zZXJ0ZWRUZXh0LCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENvbnRyb2wp
CkBAIC01NTQsMTUgKzU0OSwxNCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFj
ZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEFYQ29yZQogICAgIGlmICgh
b2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVBcnJheSAqY2hhbmdlcyA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml07CisgICAgYXV0byBj
aGFuZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OjJdKTsKICAgICBpZiAoTlNEaWN0aW9uYXJ5ICpjaGFuZ2UgPSB0ZXh0UmVwbGFjZW1lbnRDaGFu
Z2VEaWN0aW9uYXJ5KCpvYmplY3QsIEFYVGV4dEVkaXRUeXBlRGVsZXRlLCBkZWxldGVkVGV4dCwg
dGV4dENvbnRyb2wpKQogICAgICAgICBbY2hhbmdlcyBhZGRPYmplY3Q6Y2hhbmdlXTsKICAgICBp
ZiAoTlNEaWN0aW9uYXJ5ICpjaGFuZ2UgPSB0ZXh0UmVwbGFjZW1lbnRDaGFuZ2VEaWN0aW9uYXJ5
KCpvYmplY3QsIEFYVGV4dEVkaXRUeXBlSW5zZXJ0LCBpbnNlcnRlZFRleHQsIHRleHRDb250cm9s
KSkKICAgICAgICAgW2NoYW5nZXMgYWRkT2JqZWN0OmNoYW5nZV07CiAKICAgICBpZiAoYXV0byog
cm9vdCA9IHJvb3RXZWJBcmVhKCkpCi0gICAgICAgIHBvc3RVc2VySW5mb0ZvckNoYW5nZXMoKnJv
b3QsICpvYmplY3QsIGNoYW5nZXMpOwotICAgIFtjaGFuZ2VzIHJlbGVhc2VdOworICAgICAgICBw
b3N0VXNlckluZm9Gb3JDaGFuZ2VzKCpyb290LCAqb2JqZWN0LCBjaGFuZ2VzLmdldCgpKTsKIH0K
IAogdm9pZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90aWZpY2F0
aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4RnJhbWVPYmplY3QsIEFYTG9hZGluZ0V2ZW50IGxv
YWRpbmdFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXgg
MmY3ZjcyYmFhZTNkZDE4ODUyZjhkN2Q1YzFhMmRlODhiNGY1YWYwNi4uZWRmNDU3NGQyMTMwMTE2
YjRmMjBhYTY0YzMxODA5OTM5ODQyNTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0KQEAgLTEzMjEsNyArMTMyMSw2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgIHN0YXRpYyBOU0FycmF5KiBidXR0b25BdHRycyA9IG5pbDsKICAg
ICBzdGF0aWMgTlNBcnJheSogc2Nyb2xsVmlld0F0dHJzID0gbmlsOwogICAgIHN0YXRpYyBOU0Fy
cmF5KiBpbmNyZW1lbnRvckF0dHJzID0gbmlsOwotICAgIE5TTXV0YWJsZUFycmF5KiB0ZW1wQXJy
YXk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgPT0gbmlsKSB7CiAgICAgICAgIGF0dHJpYnV0ZXMgPSBb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czogTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJp
YnV0ZSwKICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGUsCkBAIC0x
MzY0LDE1ICsxMzYzLDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKICAgICB9CiAgICAgaWYgKGFuY2hvckF0
dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tl
eUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eUxpbmtSZWxhdGlvbnNoaXBUeXBlQXR0cmlidXRlXTsKLSAgICAgICAgYW5jaG9yQXR0cnMgPSBb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBB
cnJheSByZWxlYXNlXTsKKyAgICAgICAgYW5jaG9yQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKHdlYkFyZWFBdHRy
cyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwog
ICAgICAgICAvLyBXZWJBcmVhcyBzaG91bGQgbm90IGV4cG9zZSBBWFN1YnJvbGUuCiAgICAgICAg
IFt0ZW1wQXJyYXkgcmVtb3ZlT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGVd
OwogICAgICAgICAvLyBXZWJBcmVhcyBzaG91bGQgbm90IGV4cG9zZSBhbmNlc3RvciBhdHRyaWJ1
dGVzCkBAIC0xMzg3LDExICsxMzg1LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDYXJl
dEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVd
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlXZWJTZXNzaW9u
SURBdHRyaWJ1dGVdOwotICAgICAgICB3ZWJBcmVhQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAg
ICAgICAgd2ViQXJlYUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBB
cnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmICh0ZXh0QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAg
IHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmli
dXRlc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TnVtYmVyT2ZDaGFyYWN0ZXJzQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0QXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2Vs
ZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGVdOwpAQCAtMTQwMyw1NyArMTQwMCw1MSBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVBsYWNlaG9sZGVyVmFsdWVBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF1dG9maWxsZWRB
dHRyaWJ1dGVdOwotICAgICAgICB0ZXh0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAg
dGV4dEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQo
KV07CiAgICAgfQogICAgIGlmIChsaXN0QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJh
eSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107Cisg
ICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwotICAgICAgICBsaXN0QXR0cnMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxl
YXNlXTsKKyAgICAgICAgbGlzdEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5
OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmIChsaXN0Qm94QXR0cnMgPT0gbmlsKSB7
Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6bGlzdEF0dHJzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6bGlzdEF0dHJzXSk7CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgbGlzdEJveEF0dHJzID0gW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFz
ZV07CisgICAgICAgIGxpc3RCb3hBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KICAgICBpZiAocmFuZ2VBdHRycyA9PSBuaWwpIHsK
LSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlWYWx1ZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwotICAgICAgICByYW5n
ZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAg
ICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIHJhbmdlQXR0cnMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKG1l
bnVCYXJBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0cnNdOworICAgICAgICBhdXRvIHRl
bXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpj
b21tb25NZW51QXR0cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICBtZW51QmFyQXR0cnMgPSBbW05TQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsK
KyAgICAgICAgbWVudUJhckF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRl
bXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmIChtZW51QXR0cnMgPT0gbmlsKSB7Ci0gICAg
ICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29t
bW9uTWVudUF0dHJzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJzXSk7CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNp
YmxlQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAg
bWVudUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0g
ICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIG1lbnVBdHRycyA9IFtbTlNBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KICAgICBpZiAo
bWVudUl0ZW1BdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0cnNdOworICAgICAgICBhdXRv
IHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTpjb21tb25NZW51QXR0cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUhlbHBBdHRyaWJ1dGVdOwpAQCAtMTQ2Nyw4ICsxNDU4
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYTWVudUl0ZW1QcmltYXJ5VUlFbGVtZW50QXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2Vy
dmVzQXNUaXRsZUZvclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlGb2N1c2VkQXR0cmlidXRlXTsKLSAgICAgICAgbWVudUl0
ZW1BdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAg
ICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBtZW51SXRlbUF0dHJzID0gW1tOU0Fy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlm
IChtZW51QnV0dG9uQXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIG1lbnVCdXR0b25BdHRycyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1
dGUsCkBAIC0xNDgzLDQyICsxNDczLDM4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5BdHRyaWJ1dGUsIG5pbF07CiAgICAgfQogICAgIGlmIChjb250cm9sQXR0cnMgPT0gbmlsKSB7
Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6YXR0cmlidXRlc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVd
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlB
dHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlS
ZXF1aXJlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdOwotICAgICAgICBjb250cm9sQXR0cnMgPSBbW05TQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSBy
ZWxlYXNlXTsKKyAgICAgICAgY29udHJvbEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmIChpbmNyZW1lbnRvckF0dHJz
ID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluY3JlbWVudEJ1dHRv
bkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eURlY3JlbWVudEJ1dHRvbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0cmlidXRl
XTsKLSAgICAgICAgaW5jcmVtZW50b3JBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBp
bmNyZW1lbnRvckF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJh
eS5nZXQoKV07CiAgICAgfQogICAgIGlmIChidXR0b25BdHRycyA9PSBuaWwpIHsKLSAgICAgICAg
dGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1
dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICAvLyBCdXR0b25zIHNo
b3VsZCBub3QgZXhwb3NlIEFYVmFsdWUuCiAgICAgICAgIFt0ZW1wQXJyYXkgcmVtb3ZlT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1dGVdOwot
ICAgICAgICBidXR0b25BdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1w
QXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBidXR0b25BdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAg
IH0KICAgICBpZiAoY29tYm9Cb3hBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0g
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb250cm9sQXR0cnNdOworICAg
ICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTpjb250cm9sQXR0cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5RXhwYW5kZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0gICAgICAgIGNv
bWJvQm94QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsK
LSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgY29tYm9Cb3hBdHRycyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KICAg
ICBpZiAodGFibGVBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0
ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKQEAgLTE1MzEsOTEgKzE1MTcsODAg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJvd0NvdW50QXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQUNvbHVtbkNvdW50QXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQVJv
d0NvdW50QXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVBdHRycyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwor
ICAgICAgICB0YWJsZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBB
cnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmICh0YWJsZVJvd0F0dHJzID09IG5pbCkgewotICAg
ICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0
dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluZGV4QXR0cmlidXRlXTsKLSAgICAgICAgdGFi
bGVSb3dBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwot
ICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICB0YWJsZVJvd0F0dHJzID0gW1tO
U0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAg
IGlmICh0YWJsZUNvbEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRv
IHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eUluZGV4QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5SGVhZGVyQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVD
b2xBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAg
ICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICB0YWJsZUNvbEF0dHJzID0gW1tOU0Fy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlm
ICh0YWJsZUNlbGxBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0
ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlSb3dJbmRleFJhbmdlQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dI
ZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5QVJJQUNvbHVtbkluZGV4QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQVJvd0luZGV4QXR0cmlidXRlXTsKLSAg
ICAgICAgdGFibGVDZWxsQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVt
cEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgdGFibGVDZWxs
QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsK
ICAgICB9CiAgICAgaWYgKGdyb3VwQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107CisgICAg
ICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwotICAgICAgICBncm91cEF0dHJz
ID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0
ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIGdyb3VwQXR0cnMgPSBbW05TQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKGlucHV0SW1h
Z2VBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTpidXR0b25BdHRyc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmJ1dHRvbkF0
dHJzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0
dHJpYnV0ZV07Ci0gICAgICAgIGlucHV0SW1hZ2VBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAg
ICAgICBpbnB1dEltYWdlQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVt
cEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKHBhc3N3b3JkRmllbGRBdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVk
QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
SW52YWxpZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eVBsYWNlaG9sZGVyVmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF1dG9maWxsZWRBdHRyaWJ1dGVdOwotICAgICAg
ICBwYXNzd29yZEZpZWxkQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVt
cEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgcGFzc3dvcmRG
aWVsZEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQo
KV07CiAgICAgfQogICAgIGlmICh0YWJMaXN0QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBB
cnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107
CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5VGFic0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAg
ICAgICB0YWJMaXN0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFy
cmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgdGFiTGlzdEF0dHJz
ID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAg
fQogICAgIGlmIChvdXRsaW5lQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107CisgICAgICAg
IGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0g
ICAgICAgIG91dGxpbmVBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1w
QXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBvdXRsaW5lQXR0
cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAg
ICB9CiAgICAgaWYgKG91dGxpbmVSb3dBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5
ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0YWJsZVJvd0F0dHJzXTsK
KyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6dGFibGVSb3dBdHRyc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zaW5nQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkQnlSb3dBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zdXJlTGV2
ZWxBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlEaXNjbG9zZWRSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSByZW1vdmVPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOwotICAgICAgICBvdXRsaW5lUm93QXR0
cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAg
W3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgb3V0bGluZVJvd0F0dHJzID0gW1tOU0FycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmIChz
Y3JvbGxWaWV3QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107CisgICAgICAgIGF1dG8gdGVt
cEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0
dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
Q29udGVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1dGVdOwot
ICAgICAgICBzY3JvbGxWaWV3QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgc2Nyb2xs
Vmlld0F0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQo
KV07CiAgICAgfQogCiAgICAgTlNBcnJheSAqb2JqZWN0QXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7
CkBAIC0zMTI4LDcgKzMxMDMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKICAgICB9CiAKICAgICBpZiAodGV4dFBhcmFtQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIE5T
TXV0YWJsZUFycmF5KiB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OnBhcmFtQXR0cnNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpwYXJhbUF0dHJzXSk7CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYTGluZUZvckluZGV4UGFyYW1ldGVy
aXplZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyop
a0FYUmFuZ2VGb3JMaW5lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYU3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0
cmlidXRlXTsKQEAgLTMxMzgsMjIgKzMxMTMsMTkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FY
UlRGRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhBdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJp
emVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilr
QVhTdHlsZVJhbmdlRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKLSAgICAgICAgdGV4
dFBhcmFtQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsK
LSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgdGV4dFBhcmFtQXR0cnMgPSBb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAg
ICAgaWYgKHRhYmxlUGFyYW1BdHRycyA9PSBuaWwpIHsKLSAgICAgICAgTlNNdXRhYmxlQXJyYXkq
IHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6cGFyYW1B
dHRyc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OnBhcmFtQXR0cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q2VsbEZvckNvbHVtbkFuZFJvd1BhcmFtZXRlcml6ZWRB
dHRyaWJ1dGVdOwotICAgICAgICB0YWJsZVBhcmFtQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAg
ICAgICAgdGFibGVQYXJhbUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRl
bXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmICghd2ViQXJlYVBhcmFtQXR0cnMpIHsKLSAg
ICAgICAgTlNNdXRhYmxlQXJyYXkqIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6cGFyYW1BdHRyc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnBhcmFtQXR0cnNdKTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlckZv
ckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJc1ZhbGlkUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluZGV4Rm9y
VGV4dE1hcmtlclBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwotICAgICAgICB3ZWJBcmVhUGFyYW1B
dHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAg
ICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICB3ZWJBcmVhUGFyYW1BdHRycyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KIAogICAg
IGlmIChiYWNraW5nT2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
dGVzdGJpbmRpbmdzLm1tCmluZGV4IGRlYjgwOTcyNWJjYjA1ZGNhNGU0YWE0NjRmODhkYTMwN2Ey
MTg3YTguLmM1OTBkNDkzMDc5ZmJlN2Q2MzFmNGIwNTk1ZDZiNDYyYzY1MTk1OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQpAQCAtMjQ1LDkgKzI0NSw5IEBAIGludCBtYWlu
KGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgaW50ZXJwLnNldEdsb2JhbE9iamVjdChn
bG9iYWwpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGlu
dGVycC5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgCi0gICAgICAgIE15Rmlyc3RJbnRlcmZhY2Ug
Km15SW50ZXJmYWNlID0gW1tNeUZpcnN0SW50ZXJmYWNlIGFsbG9jXSBpbml0XTsKKyAgICAgICAg
YXV0byBteUludGVyZmFjZSA9IGFkb3B0TlMoW1tNeUZpcnN0SW50ZXJmYWNlIGFsbG9jXSBpbml0
XSk7CiAgICAgICAgIAotICAgICAgICBnbG9iYWwucHV0KGxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEdsb2JhbE9iamVjdCwgIm15SW50ZXJmYWNlIiks
IEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpPYmplY3RpdmVDTGFuZ3Vh
Z2UsICh2b2lkICopbXlJbnRlcmZhY2UpKTsKKyAgICAgICAgZ2xvYmFsLnB1dChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3QsICJt
eUludGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6T2Jq
ZWN0aXZlQ0xhbmd1YWdlLCAodm9pZCAqKW15SW50ZXJmYWNlLmdldCgpKSk7CiAgICAgICAgIAog
ICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7IGkrKykgewogICAgICAgICAgICAgY29u
c3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0RnJvbUZpbGUoYXJndltpXSk7CkBAIC0yNzgs
NyArMjc4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBbbXlJbnRlcmZhY2UgcmVsZWFzZV07Cisg
ICAgICAgIG15SW50ZXJmYWNlID0gbmlsOwogICAgICAgICBbcG9vbCBkcmFpbl07CiAgICAgfSAv
LyBlbmQgYmxvY2ssIHNvIHRoYXQgSW50ZXJwcmV0ZXIgYW5kIGdsb2JhbCBnZXQgZGVsZXRlZAog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmlu
ZGV4IDVhOGI0ZmY0YTIwYjRiNTg1ODBjNDFjNTlmZjFlNWM1MDhiZGNlMTEuLjcyZGExMWE3NTFl
OGY5ZGQzYTQ0MmQ1N2JkOTFjMmIxOWM1MzEzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTI5MywxOSArMjkzLDE5IEBAIHByaXZhdGU6
CiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8Q0ZUeXBlUmVmPiwgUmVmUHRyPEVsZW1lbnQ+PiBtX3Rl
eHRUYWJsZUZvb3RlcnM7CiAgICAgSGFzaE1hcDxSZWZQdHI8RWxlbWVudD4sIFJldGFpblB0cjxO
U0RpY3Rpb25hcnk+PiBtX2FnZ3JlZ2F0ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudHM7CiAKLSAgICBO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICpfYXR0clN0cjsKLSAgICBOU011dGFibGVEaWN0aW9u
YXJ5ICpfZG9jdW1lbnRBdHRyczsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZz4gX2F0dHJTdHI7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IF9kb2N1
bWVudEF0dHJzOwogICAgIE5TVVJMICpfYmFzZVVSTDsKLSAgICBOU011dGFibGVBcnJheSAqX3Rl
eHRMaXN0czsKLSAgICBOU011dGFibGVBcnJheSAqX3RleHRCbG9ja3M7Ci0gICAgTlNNdXRhYmxl
QXJyYXkgKl90ZXh0VGFibGVzOwotICAgIE5TTXV0YWJsZUFycmF5ICpfdGV4dFRhYmxlU3BhY2lu
Z3M7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKl90ZXh0VGFibGVQYWRkaW5nczsKLSAgICBOU011dGFi
bGVBcnJheSAqX3RleHRUYWJsZVJvd3M7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKl90ZXh0VGFibGVS
b3dBcnJheXM7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKl90ZXh0VGFibGVSb3dCYWNrZ3JvdW5kQ29s
b3JzOwotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9mb250Q2FjaGU7Ci0gICAgTlNNdXRhYmxl
QXJyYXkgKl93cml0aW5nRGlyZWN0aW9uQXJyYXk7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBfdGV4dExpc3RzOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX3RleHRCbG9j
a3M7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfdGV4dFRhYmxlczsKKyAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IF90ZXh0VGFibGVTcGFjaW5nczsKKyAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IF90ZXh0VGFibGVQYWRkaW5nczsKKyAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IF90ZXh0VGFibGVSb3dzOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
X3RleHRUYWJsZVJvd0FycmF5czsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF90ZXh0
VGFibGVSb3dCYWNrZ3JvdW5kQ29sb3JzOworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9u
YXJ5PiBfZm9udENhY2hlOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX3dyaXRpbmdE
aXJlY3Rpb25BcnJheTsKICAgICAKICAgICBDR0Zsb2F0IF9kZWZhdWx0VGFiSW50ZXJ2YWw7CiAg
ICAgTlNVSW50ZWdlciBfZG9tUmFuZ2VTdGFydEluZGV4OwpAQCAtMzYwLDE5ICszNjAsMTkgQEAg
SFRNTENvbnZlcnRlcjo6SFRNTENvbnZlcnRlcihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiAg
ICAgOiBtX3N0YXJ0KG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihyYW5nZS5zdGFydCkpCiAg
ICAgLCBtX2VuZChtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24ocmFuZ2UuZW5kKSkKIHsKLSAg
ICBfYXR0clN0ciA9IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF07Ci0g
ICAgX2RvY3VtZW50QXR0cnMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwor
ICAgIF9hdHRyU3RyID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRdKTsKKyAgICBfZG9jdW1lbnRBdHRycyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgX2Jhc2VVUkwgPSBuaWw7Ci0gICAgX3RleHRMaXN0cyA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIF90ZXh0QmxvY2tzID0gW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgX3RleHRUYWJsZXMgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XTsKLSAgICBfdGV4dFRhYmxlU3BhY2luZ3MgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XTsKLSAgICBfdGV4dFRhYmxlUGFkZGluZ3MgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XTsKLSAgICBfdGV4dFRhYmxlUm93cyA9IFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdOwotICAgIF90ZXh0VGFibGVSb3dBcnJheXMgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XTsKLSAgICBfdGV4dFRhYmxlUm93QmFja2dyb3VuZENvbG9ycyA9IFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIF9mb250Q2FjaGUgPSBbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIF93cml0aW5nRGlyZWN0aW9uQXJyYXkgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICBfdGV4dExpc3RzID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgX3RleHRCbG9ja3MgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBfdGV4dFRhYmxlcyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIF90ZXh0VGFibGVTcGFjaW5ncyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIF90ZXh0VGFibGVQ
YWRkaW5ncyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIF90
ZXh0VGFibGVSb3dzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Cisg
ICAgX3RleHRUYWJsZVJvd0FycmF5cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOworICAgIF90ZXh0VGFibGVSb3dCYWNrZ3JvdW5kQ29sb3JzID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgX2ZvbnRDYWNoZSA9IGFkb3B0TlMoW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgX3dyaXRpbmdEaXJlY3Rpb25B
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCiAgICAgX2Rl
ZmF1bHRUYWJJbnRlcnZhbCA9IDM2OwogICAgIF9kb21SYW5nZVN0YXJ0SW5kZXggPSAwOwpAQCAt
Mzg1LDIxICszODUsNyBAQCBIVE1MQ29udmVydGVyOjpIVE1MQ29udmVydGVyKGNvbnN0IFNpbXBs
ZVJhbmdlJiByYW5nZSkKICAgICBfY2FjaGVzID0gbWFrZVVuaXF1ZTxIVE1MQ29udmVydGVyQ2Fj
aGVzPigpOwogfQogCi1IVE1MQ29udmVydGVyOjp+SFRNTENvbnZlcnRlcigpCi17Ci0gICAgW19h
dHRyU3RyIHJlbGVhc2VdOwotICAgIFtfZG9jdW1lbnRBdHRycyByZWxlYXNlXTsKLSAgICBbX3Rl
eHRMaXN0cyByZWxlYXNlXTsKLSAgICBbX3RleHRCbG9ja3MgcmVsZWFzZV07Ci0gICAgW190ZXh0
VGFibGVzIHJlbGVhc2VdOwotICAgIFtfdGV4dFRhYmxlU3BhY2luZ3MgcmVsZWFzZV07Ci0gICAg
W190ZXh0VGFibGVQYWRkaW5ncyByZWxlYXNlXTsKLSAgICBbX3RleHRUYWJsZVJvd3MgcmVsZWFz
ZV07Ci0gICAgW190ZXh0VGFibGVSb3dBcnJheXMgcmVsZWFzZV07Ci0gICAgW190ZXh0VGFibGVS
b3dCYWNrZ3JvdW5kQ29sb3JzIHJlbGVhc2VdOwotICAgIFtfZm9udENhY2hlIHJlbGVhc2VdOwot
ICAgIFtfd3JpdGluZ0RpcmVjdGlvbkFycmF5IHJlbGVhc2VdOwotfQorSFRNTENvbnZlcnRlcjo6
fkhUTUxDb252ZXJ0ZXIoKSA9IGRlZmF1bHQ7CiAKIEF0dHJpYnV0ZWRTdHJpbmcgSFRNTENvbnZl
cnRlcjo6Y29udmVydCgpCiB7CkBAIC05NzgsNyArOTY0LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1M
Q29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgaWYgKCFmb250KSB7CiAgICAgICAgIFN0cmluZyBmb250TmFtZSA9IF9jYWNoZXMtPnBy
b3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5Rm9udEZhbWlseSk7CiAgICAg
ICAgIGlmIChmb250TmFtZS5sZW5ndGgoKSkKLSAgICAgICAgICAgIGZvbnQgPSBfZm9udEZvck5h
bWVBbmRTaXplKGZvbnROYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIGZvbnRTaXplLCBf
Zm9udENhY2hlKTsKKyAgICAgICAgICAgIGZvbnQgPSBfZm9udEZvck5hbWVBbmRTaXplKGZvbnRO
YW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIGZvbnRTaXplLCBfZm9udENhY2hlLmdldCgp
KTsKICAgICAgICAgaWYgKCFmb250KQogICAgICAgICAgICAgZm9udCA9IFtQbGF0Zm9ybUZvbnRD
bGFzcyBmb250V2l0aE5hbWU6QCJUaW1lcyIgc2l6ZTpmb250U2l6ZV07CiAKQEAgLTEwODQsMTEg
KzEwNzAsMTEgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0
ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBFbGVtZW50KiBibG9ja0VsZW1l
bnQgPSBfYmxvY2tMZXZlbEVsZW1lbnRGb3JOb2RlKCZlbGVtZW50KTsKICAgICBpZiAoJmVsZW1l
bnQgIT0gYmxvY2tFbGVtZW50ICYmIFtfd3JpdGluZ0RpcmVjdGlvbkFycmF5IGNvdW50XSA+IDAp
Ci0gICAgICAgIFthdHRycyBzZXRPYmplY3Q6W05TQXJyYXkgYXJyYXlXaXRoQXJyYXk6X3dyaXRp
bmdEaXJlY3Rpb25BcnJheV0gZm9yS2V5Ok5TV3JpdGluZ0RpcmVjdGlvbkF0dHJpYnV0ZU5hbWVd
OworICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OltOU0FycmF5IGFycmF5V2l0aEFycmF5Ol93cml0
aW5nRGlyZWN0aW9uQXJyYXkuZ2V0KCldIGZvcktleTpOU1dyaXRpbmdEaXJlY3Rpb25BdHRyaWJ1
dGVOYW1lXTsKIAogICAgIGlmIChibG9ja0VsZW1lbnQpIHsKICAgICAgICAgRWxlbWVudCYgY29y
ZUJsb2NrRWxlbWVudCA9ICpibG9ja0VsZW1lbnQ7Ci0gICAgICAgIE5TTXV0YWJsZVBhcmFncmFw
aFN0eWxlICpwYXJhZ3JhcGhTdHlsZSA9IFtkZWZhdWx0UGFyYWdyYXBoU3R5bGUoKSBtdXRhYmxl
Q29weV07CisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVQYXJhZ3JhcGhTdHlsZT4gcGFyYWdy
YXBoU3R5bGUgPSBhZG9wdE5TKFtkZWZhdWx0UGFyYWdyYXBoU3R5bGUoKSBtdXRhYmxlQ29weV0p
OwogICAgICAgICB1bnNpZ25lZCBoZWFkaW5nID0gMDsKICAgICAgICAgaWYgKGNvcmVCbG9ja0Vs
ZW1lbnQuaGFzVGFnTmFtZShoMVRhZykpCiAgICAgICAgICAgICBoZWFkaW5nID0gMTsKQEAgLTEx
NTAsMTEgKzExMzYsMTAgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0
dHJpYnV0ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgICAgICAgICAgW3Bh
cmFncmFwaFN0eWxlIHNldFBhcmFncmFwaFNwYWNpbmc6bWFyZ2luQm90dG9tXTsKICAgICAgICAg
fQogICAgICAgICBpZiAoW190ZXh0TGlzdHMgY291bnRdID4gMCkKLSAgICAgICAgICAgIFtwYXJh
Z3JhcGhTdHlsZSBzZXRUZXh0TGlzdHM6X3RleHRMaXN0c107CisgICAgICAgICAgICBbcGFyYWdy
YXBoU3R5bGUgc2V0VGV4dExpc3RzOl90ZXh0TGlzdHMuZ2V0KCldOwogICAgICAgICBpZiAoW190
ZXh0QmxvY2tzIGNvdW50XSA+IDApCi0gICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0VGV4
dEJsb2NrczpfdGV4dEJsb2Nrc107Ci0gICAgICAgIFthdHRycyBzZXRPYmplY3Q6cGFyYWdyYXBo
U3R5bGUgZm9yS2V5Ok5TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lXTsKLSAgICAgICAgW3Bh
cmFncmFwaFN0eWxlIHJlbGVhc2VdOworICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldFRl
eHRCbG9ja3M6X3RleHRCbG9ja3MuZ2V0KCldOworICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OnBh
cmFncmFwaFN0eWxlLmdldCgpIGZvcktleTpOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZV07
CiAgICAgfQogICAgIHJldHVybiBhdHRyczsKIH0KQEAgLTE5MDksNyArMTg5NCw3IEBAIHZvaWQg
SFRNTENvbnZlcnRlcjo6X2FkZE1hcmtlcnNUb0xpc3QoTlNUZXh0TGlzdCAqbGlzdCwgTlNSYW5n
ZSByYW5nZSkKICAgICBOU0RpY3Rpb25hcnkgKmF0dHJzVG9JbnNlcnQgPSBuaWw7CiAgICAgUGxh
dGZvcm1Gb250ICpmb250OwogICAgIE5TUGFyYWdyYXBoU3R5bGUgKnBhcmFncmFwaFN0eWxlOwot
ICAgIE5TTXV0YWJsZVBhcmFncmFwaFN0eWxlICpuZXdTdHlsZTsKKyAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlUGFyYWdyYXBoU3R5bGU+IG5ld1N0eWxlOwogICAgIE5TVGV4dFRhYiAqdGFiID0gbmls
OwogICAgIE5TVGV4dFRhYiAqdGFiVG9SZW1vdmU7CiAgICAgTlNSYW5nZSBwYXJhZ3JhcGhSYW5n
ZTsKQEAgLTE5NDgsNyArMTkzMyw3IEBAIHZvaWQgSFRNTENvbnZlcnRlcjo6X2FkZE1hcmtlcnNU
b0xpc3QoTlNUZXh0TGlzdCAqbGlzdCwgTlNSYW5nZSByYW5nZSkKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHBhcmFncmFwaFJhbmdlLmxvY2F0aW9uIDwgX2RvbVJhbmdlU3RhcnRJbmRleCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIF9kb21SYW5nZVN0YXJ0SW5kZXggKz0gaW5zZXJ0TGVuZ3Ro
OwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgbmV3U3R5bGUgPSBb
cGFyYWdyYXBoU3R5bGUgbXV0YWJsZUNvcHldOworICAgICAgICAgICAgICAgICAgICBuZXdTdHls
ZSA9IGFkb3B0TlMoW3BhcmFncmFwaFN0eWxlIG11dGFibGVDb3B5XSk7CiAgICAgICAgICAgICAg
ICAgICAgIGxpc3RMb2NhdGlvbiA9IChsaXN0SW5kZXggKyAxKSAqIDM2OwogICAgICAgICAgICAg
ICAgICAgICBtYXJrZXJMb2NhdGlvbiA9IGxpc3RMb2NhdGlvbiAtIDI1OwogICAgICAgICAgICAg
ICAgICAgICBbbmV3U3R5bGUgc2V0Rmlyc3RMaW5lSGVhZEluZGVudDowXTsKQEAgLTE5NjQsMTQg
KzE5NDksMTAgQEAgdm9pZCBIVE1MQ29udmVydGVyOjpfYWRkTWFya2Vyc1RvTGlzdChOU1RleHRM
aXN0ICpsaXN0LCBOU1JhbmdlIHJhbmdlKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIHRhYiA9IFtbUGxhdGZvcm1OU1RleHRUYWIgYWxsb2NdIGlu
aXRXaXRoVHlwZTpOU0xlZnRUYWJTdG9wVHlwZSBsb2NhdGlvbjptYXJrZXJMb2NhdGlvbl07Ci0g
ICAgICAgICAgICAgICAgICAgIFtuZXdTdHlsZSBhZGRUYWJTdG9wOnRhYl07Ci0gICAgICAgICAg
ICAgICAgICAgIFt0YWIgcmVsZWFzZV07Ci0gICAgICAgICAgICAgICAgICAgIHRhYiA9IFtbUGxh
dGZvcm1OU1RleHRUYWIgYWxsb2NdIGluaXRXaXRoVGV4dEFsaWdubWVudDpOU1RleHRBbGlnbm1l
bnROYXR1cmFsIGxvY2F0aW9uOmxpc3RMb2NhdGlvbiBvcHRpb25zOkB7IH1dOwotICAgICAgICAg
ICAgICAgICAgICBbbmV3U3R5bGUgYWRkVGFiU3RvcDp0YWJdOwotICAgICAgICAgICAgICAgICAg
ICBbdGFiIHJlbGVhc2VdOwotICAgICAgICAgICAgICAgICAgICBbX2F0dHJTdHIgYWRkQXR0cmli
dXRlOk5TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lIHZhbHVlOm5ld1N0eWxlIHJhbmdlOnBh
cmFncmFwaFJhbmdlXTsKLSAgICAgICAgICAgICAgICAgICAgW25ld1N0eWxlIHJlbGVhc2VdOwor
ICAgICAgICAgICAgICAgICAgICBbbmV3U3R5bGUgYWRkVGFiU3RvcDphZG9wdE5TKFtbUGxhdGZv
cm1OU1RleHRUYWIgYWxsb2NdIGluaXRXaXRoVHlwZTpOU0xlZnRUYWJTdG9wVHlwZSBsb2NhdGlv
bjptYXJrZXJMb2NhdGlvbl0pLmdldCgpXTsKKyAgICAgICAgICAgICAgICAgICAgW25ld1N0eWxl
IGFkZFRhYlN0b3A6YWRvcHROUyhbW1BsYXRmb3JtTlNUZXh0VGFiIGFsbG9jXSBpbml0V2l0aFRl
eHRBbGlnbm1lbnQ6TlNUZXh0QWxpZ25tZW50TmF0dXJhbCBsb2NhdGlvbjpsaXN0TG9jYXRpb24g
b3B0aW9uczpAeyB9XSkuZ2V0KCldOworICAgICAgICAgICAgICAgICAgICBbX2F0dHJTdHIgYWRk
QXR0cmlidXRlOk5TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lIHZhbHVlOm5ld1N0eWxlLmdl
dCgpIHJhbmdlOnBhcmFncmFwaFJhbmdlXTsKKyAgICAgICAgICAgICAgICAgICAgbmV3U3R5bGUg
PSBuaWw7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZHggPSBO
U01heFJhbmdlKHBhcmFncmFwaFJhbmdlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAt
MjMzOCwxMiArMjMxOSw4IEBAIHN0YXRpYyBOU0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBlckZvclVS
TChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlNVUkwgKlVSTCkKICAgICAgICAgICAgIHJl
dHVybiB3cmFwcGVyOwogICAgICAgICB9CiAgICAgfQotICAgIAotICAgIE5TTXV0YWJsZVVSTFJl
cXVlc3QgKnJlcXVlc3QgPSBbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJM
OlVSTF07CiAKLSAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZSA9IFtbTlNV
UkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0OnJlcXVlc3Rd
OwotICAgIFtyZXF1ZXN0IHJlbGVhc2VdOwotICAgIAorICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2Ug
KmNhY2hlZFJlc3BvbnNlID0gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNw
b25zZUZvclJlcXVlc3Q6YWRvcHROUyhbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRX
aXRoVVJMOlVSTF0pLmdldCgpXTsKICAgICBpZiAoY2FjaGVkUmVzcG9uc2UpIHsKICAgICAgICAg
TlNGaWxlV3JhcHBlciAqd3JhcHBlciA9IFtbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpbY2FjaGVkUmVzcG9uc2UgZGF0YV1dIGF1dG9yZWxlYXNlXTsK
ICAgICAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6W1tjYWNoZWRSZXNwb25zZSBy
ZXNwb25zZV0gc3VnZ2VzdGVkRmlsZW5hbWVdXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvbWFjL0hpc3RvcnlJdGVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9t
YWMvSGlzdG9yeUl0ZW1NYWMubW0KaW5kZXggNzAwZDFjNTBiNmY1MGNjNDliMzFkNTJmMWM2ZjA3
M2IxYTJhODUxNC4uOTY3YzE1ZDExNmNkNmZmZjYxMWE1NTY3YmQyMzI1NDFhOTNlNWRhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9tYWMvSGlzdG9yeUl0ZW1NYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9tYWMvSGlzdG9yeUl0ZW1NYWMubW0KQEAgLTM3LDkg
KzM3LDcgQEAgaWQgSGlzdG9yeUl0ZW06OnZpZXdTdGF0ZSgpIGNvbnN0CiAKIHZvaWQgSGlzdG9y
eUl0ZW06OnNldFZpZXdTdGF0ZShpZCBzdGF0ZVBMaXN0KQogewotICAgIGlkIG5ld1N0YXRlID0g
W3N0YXRlUExpc3QgY29weV07Ci0gICAgbV92aWV3U3RhdGUgPSBuZXdTdGF0ZTsKLSAgICBbbmV3
U3RhdGUgcmVsZWFzZV07CisgICAgbV92aWV3U3RhdGUgPSBhZG9wdE5TKFtzdGF0ZVBMaXN0IGNv
cHldKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQppbmRleCAxYTdkNTIwZGYyNmM0Y2E2NTg4MmFhNWYzZGEz
ZGNhNGQ1ODk4NGRkLi5lNTcwNDMxMGRhODVmZGU0MWJjMTMzNzkyMmIyNDUxOTliZWZhMTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQpAQCAtMjQ0LDE4
ICsyNDQsMTYgQEAgdW5zaWduZWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6
ZXhwb3NlZFVuZmlsbGVkQXJlYSgpIGNvbnN0CiAKICAgICB3aGlsZSAoIWxheWVyUXVldWUuaXNF
bXB0eSgpICYmIHRpbGVzLmlzRW1wdHkoKSkgewogICAgICAgICBDQUxheWVyKiBsYXllciA9IGxh
eWVyUXVldWUudGFrZUZpcnN0KCk7Ci0gICAgICAgIE5TQXJyYXkqIHN1YmxheWVycyA9IFtbbGF5
ZXIgc3VibGF5ZXJzXSBjb3B5XTsKKyAgICAgICAgYXV0byBzdWJsYXllcnMgPSBhZG9wdE5TKFtb
bGF5ZXIgc3VibGF5ZXJzXSBjb3B5XSk7CiAKICAgICAgICAgLy8gSWYgdGhpcyBsYXllciBpcyB0
aGUgcGFyZW50IG9mIGEgdGlsZSwgaXQgaXMgdGhlIHBhcmVudCBvZiBhbGwgb2YgdGhlIHRpbGVz
IGFuZCBub3RoaW5nIGVsc2UuCiAgICAgICAgIGlmIChbW1tzdWJsYXllcnMgb2JqZWN0QXRJbmRl
eDowXSB2YWx1ZUZvcktleTpAImlzVGlsZSJdIGJvb2xWYWx1ZV0pIHsKLSAgICAgICAgICAgIGZv
ciAoQ0FMYXllciogc3VibGF5ZXIgaW4gc3VibGF5ZXJzKQorICAgICAgICAgICAgZm9yIChDQUxh
eWVyKiBzdWJsYXllciBpbiBzdWJsYXllcnMuZ2V0KCkpCiAgICAgICAgICAgICAgICAgdGlsZXMu
YXBwZW5kKHN1YmxheWVyKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoQ0FM
YXllciogc3VibGF5ZXIgaW4gc3VibGF5ZXJzKQorICAgICAgICAgICAgZm9yIChDQUxheWVyKiBz
dWJsYXllciBpbiBzdWJsYXllcnMuZ2V0KCkpCiAgICAgICAgICAgICAgICAgbGF5ZXJRdWV1ZS5h
cHBlbmQoc3VibGF5ZXIpOwogICAgICAgICB9Ci0KLSAgICAgICAgW3N1YmxheWVycyByZWxlYXNl
XTsKICAgICB9CiAKICAgICBGbG9hdFBvaW50IGNsYW1wZWRTY3JvbGxQb3NpdGlvbiA9IGNsYW1w
U2Nyb2xsUG9zaXRpb24oY3VycmVudFNjcm9sbFBvc2l0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnND
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FGaWx0ZXJzQ29jb2EubW0KaW5kZXggMDFjNWUyZGE2ZDhiNDU4ODllYTVhZTMxYWY1MzI2
MzU5MGRhZTY2My4uY2JjODRmZjU0OGQ5NjM3ZjU2MjkxOTI4NzllMTQwODNlZGJlM2YzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUZpbHRlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tCkBAIC0zMjAsMjIgKzMyMCwyMiBA
QCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3Bl
cmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAogICAgICAgICBpZiAob3BlcmF0aW9uKQogICAgICAg
ICAgICAgYW1vdW50ID0gZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4o
Km9wZXJhdGlvbikuYW1vdW50KCk7CiAKLSAgICAgICAgQ0lWZWN0b3IqIHJvd1ZlY3RvciA9IG51
bGxwdHI7CisgICAgICAgIFJldGFpblB0cjxDSVZlY3Rvcj4gcm93VmVjdG9yOwogICAgICAgICBz
d2l0Y2ggKGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkgewotICAgICAgICBjYXNlIDA6IHJv
d1ZlY3RvciA9IFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRoWDpXZWJDb3JlOjpibGVuZChzZXBp
YU5vbmVDb25zdGFudHNbMF1bMF0sIHNlcGlhRnVsbENvbnN0YW50c1swXVswXSwgYW1vdW50KQor
ICAgICAgICBjYXNlIDA6IHJvd1ZlY3RvciA9IGFkb3B0TlMoW1tDSVZlY3RvciBhbGxvY10gaW5p
dFdpdGhYOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50c1swXVswXSwgc2VwaWFGdWxs
Q29uc3RhbnRzWzBdWzBdLCBhbW91bnQpCiAgICAgICAgICAgICBZOldlYkNvcmU6OmJsZW5kKHNl
cGlhTm9uZUNvbnN0YW50c1swXVsxXSwgc2VwaWFGdWxsQ29uc3RhbnRzWzBdWzFdLCBhbW91bnQp
Ci0gICAgICAgICAgICBaOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50c1swXVsyXSwg
c2VwaWFGdWxsQ29uc3RhbnRzWzBdWzJdLCBhbW91bnQpIFc6MF07CisgICAgICAgICAgICBaOldl
YkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50c1swXVsyXSwgc2VwaWFGdWxsQ29uc3RhbnRz
WzBdWzJdLCBhbW91bnQpIFc6MF0pOwogICAgICAgICAgICAgYnJlYWs7IC8vIGlucHV0UlZlY3Rv
cgotICAgICAgICBjYXNlIDE6IHJvd1ZlY3RvciA9IFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRo
WDpXZWJDb3JlOjpibGVuZChzZXBpYU5vbmVDb25zdGFudHNbMV1bMF0sIHNlcGlhRnVsbENvbnN0
YW50c1sxXVswXSwgYW1vdW50KQorICAgICAgICBjYXNlIDE6IHJvd1ZlY3RvciA9IGFkb3B0TlMo
W1tDSVZlY3RvciBhbGxvY10gaW5pdFdpdGhYOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0
YW50c1sxXVswXSwgc2VwaWFGdWxsQ29uc3RhbnRzWzFdWzBdLCBhbW91bnQpCiAgICAgICAgICAg
ICBZOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50c1sxXVsxXSwgc2VwaWFGdWxsQ29u
c3RhbnRzWzFdWzFdLCBhbW91bnQpCi0gICAgICAgICAgICBaOldlYkNvcmU6OmJsZW5kKHNlcGlh
Tm9uZUNvbnN0YW50c1sxXVsyXSwgc2VwaWFGdWxsQ29uc3RhbnRzWzFdWzJdLCBhbW91bnQpIFc6
MF07CisgICAgICAgICAgICBaOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50c1sxXVsy
XSwgc2VwaWFGdWxsQ29uc3RhbnRzWzFdWzJdLCBhbW91bnQpIFc6MF0pOwogICAgICAgICAgICAg
YnJlYWs7IC8vIGlucHV0R1ZlY3RvcgotICAgICAgICBjYXNlIDI6IHJvd1ZlY3RvciA9IFtbQ0lW
ZWN0b3IgYWxsb2NdIGluaXRXaXRoWDpXZWJDb3JlOjpibGVuZChzZXBpYU5vbmVDb25zdGFudHNb
Ml1bMF0sIHNlcGlhRnVsbENvbnN0YW50c1syXVswXSwgYW1vdW50KQorICAgICAgICBjYXNlIDI6
IHJvd1ZlY3RvciA9IGFkb3B0TlMoW1tDSVZlY3RvciBhbGxvY10gaW5pdFdpdGhYOldlYkNvcmU6
OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50c1syXVswXSwgc2VwaWFGdWxsQ29uc3RhbnRzWzJdWzBd
LCBhbW91bnQpCiAgICAgICAgICAgICBZOldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50
c1syXVsxXSwgc2VwaWFGdWxsQ29uc3RhbnRzWzJdWzFdLCBhbW91bnQpCi0gICAgICAgICAgICBa
OldlYkNvcmU6OmJsZW5kKHNlcGlhTm9uZUNvbnN0YW50c1syXVsyXSwgc2VwaWFGdWxsQ29uc3Rh
bnRzWzJdWzJdLCBhbW91bnQpIFc6MF07CisgICAgICAgICAgICBaOldlYkNvcmU6OmJsZW5kKHNl
cGlhTm9uZUNvbnN0YW50c1syXVsyXSwgc2VwaWFGdWxsQ29uc3RhbnRzWzJdWzJdLCBhbW91bnQp
IFc6MF0pOwogICAgICAgICAgICAgYnJlYWs7IC8vIGlucHV0QlZlY3RvcgogICAgICAgICB9Ci0g
ICAgICAgIHZhbHVlID0gYWRvcHROUyhyb3dWZWN0b3IpOworICAgICAgICB2YWx1ZSA9IFdURk1v
dmUocm93VmVjdG9yKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zNzUsMTQg
KzM3NSwxNCBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZh
bHVlRm9yT3BlcmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAogICAgICAgICAvLyBUaGUgY29sb3Ig
bWF0cml4IGFuaW1hdGlvbiBmb3IgaW52ZXJ0IGRvZXMgYSBzY2FsZSBvZiBlYWNoIGNvbG9yIGNv
bXBvbmVudCBieSBhIHZhbHVlIHRoYXQgZ29lcyBmcm9tIAogICAgICAgICAvLyAxICh3aGVuIGFt
b3VudCBpcyAwKSB0byAtMSAod2hlbiBhbW91bnQgaXMgMSkuIFRoZW4gdGhlIGNvbG9yIHZhbHVl
cyBhcmUgb2Zmc2V0IGJ5IGFtb3VudC4gVGhpcyBoYXMgdGhlCiAgICAgICAgIC8vIGVmZmVjdCBv
ZiBwZXJmb3JtaW5nIHRoZSBvcGVyYXRpb246IGMnID0gYyAqIC0xICsgMSwgd2hpY2ggaW52ZXJ0
cyB0aGUgY29sb3IuCi0gICAgICAgIENJVmVjdG9yKiByb3dWZWN0b3IgPSAwOworICAgICAgICBS
ZXRhaW5QdHI8Q0lWZWN0b3I+IHJvd1ZlY3RvcjsKICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZp
bHRlclByb3BlcnR5SW5kZXgpIHsKLSAgICAgICAgY2FzZSAwOiByb3dWZWN0b3IgPSBbW0NJVmVj
dG9yIGFsbG9jXSBpbml0V2l0aFg6bXVsdGlwbGllciBZOjAgWjowIFc6MF07IGJyZWFrOyAvLyBp
bnB1dFJWZWN0b3IKLSAgICAgICAgY2FzZSAxOiByb3dWZWN0b3IgPSBbW0NJVmVjdG9yIGFsbG9j
XSBpbml0V2l0aFg6MCBZOm11bHRpcGxpZXIgWjowIFc6MF07IGJyZWFrOyAvLyBpbnB1dEdWZWN0
b3IKLSAgICAgICAgY2FzZSAyOiByb3dWZWN0b3IgPSBbW0NJVmVjdG9yIGFsbG9jXSBpbml0V2l0
aFg6MCBZOjAgWjptdWx0aXBsaWVyIFc6MF07IGJyZWFrOyAvLyBpbnB1dEJWZWN0b3IKLSAgICAg
ICAgY2FzZSAzOiByb3dWZWN0b3IgPSBbW0NJVmVjdG9yIGFsbG9jXSBpbml0V2l0aFg6YW1vdW50
IFk6YW1vdW50IFo6YW1vdW50IFc6MF07IGJyZWFrOyAvLyBpbnB1dEJpYXNWZWN0b3IKKyAgICAg
ICAgY2FzZSAwOiByb3dWZWN0b3IgPSBhZG9wdE5TKFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRo
WDptdWx0aXBsaWVyIFk6MCBaOjAgVzowXSk7IGJyZWFrOyAvLyBpbnB1dFJWZWN0b3IKKyAgICAg
ICAgY2FzZSAxOiByb3dWZWN0b3IgPSBhZG9wdE5TKFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRo
WDowIFk6bXVsdGlwbGllciBaOjAgVzowXSk7IGJyZWFrOyAvLyBpbnB1dEdWZWN0b3IKKyAgICAg
ICAgY2FzZSAyOiByb3dWZWN0b3IgPSBhZG9wdE5TKFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRo
WDowIFk6MCBaOm11bHRpcGxpZXIgVzowXSk7IGJyZWFrOyAvLyBpbnB1dEJWZWN0b3IKKyAgICAg
ICAgY2FzZSAzOiByb3dWZWN0b3IgPSBhZG9wdE5TKFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRo
WDphbW91bnQgWTphbW91bnQgWjphbW91bnQgVzowXSk7IGJyZWFrOyAvLyBpbnB1dEJpYXNWZWN0
b3IKICAgICAgICAgfQotICAgICAgICB2YWx1ZSA9IGFkb3B0TlMocm93VmVjdG9yKTsKKyAgICAg
ICAgdmFsdWUgPSBXVEZNb3ZlKHJvd1ZlY3Rvcik7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtNDE0LDEzICs0MTQsMTMgQEAgUmV0YWluUHRyPE5TVmFsdWU+IFBsYXRmb3JtQ0FG
aWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbihjb25zdCBGaWx0ZXJPcGVyYXQKICAgICAg
ICAgaWYgKG9wZXJhdGlvbikKICAgICAgICAgICAgIGFtb3VudCA9IGRvd25jYXN0PEJhc2ljQ29t
cG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLmFtb3VudCgpOwogICAg
ICAgICAKLSAgICAgICAgQ0lWZWN0b3IqIHJvd1ZlY3RvciA9IG51bGxwdHI7CisgICAgICAgIFJl
dGFpblB0cjxDSVZlY3Rvcj4gcm93VmVjdG9yOwogICAgICAgICBzd2l0Y2ggKGludGVybmFsRmls
dGVyUHJvcGVydHlJbmRleCkgewotICAgICAgICBjYXNlIDA6IHJvd1ZlY3RvciA9IFtbQ0lWZWN0
b3IgYWxsb2NdIGluaXRXaXRoWDphbW91bnQgWTowIFo6MCBXOjBdOyBicmVhazsgLy8gaW5wdXRS
VmVjdG9yCi0gICAgICAgIGNhc2UgMTogcm93VmVjdG9yID0gW1tDSVZlY3RvciBhbGxvY10gaW5p
dFdpdGhYOjAgWTphbW91bnQgWjowIFc6MF07IGJyZWFrOyAvLyBpbnB1dEdWZWN0b3IKLSAgICAg
ICAgY2FzZSAyOiByb3dWZWN0b3IgPSBbW0NJVmVjdG9yIGFsbG9jXSBpbml0V2l0aFg6MCBZOjAg
WjphbW91bnQgVzowXTsgYnJlYWs7IC8vIGlucHV0QlZlY3RvcgorICAgICAgICBjYXNlIDA6IHJv
d1ZlY3RvciA9IGFkb3B0TlMoW1tDSVZlY3RvciBhbGxvY10gaW5pdFdpdGhYOmFtb3VudCBZOjAg
WjowIFc6MF0pOyBicmVhazsgLy8gaW5wdXRSVmVjdG9yCisgICAgICAgIGNhc2UgMTogcm93VmVj
dG9yID0gYWRvcHROUyhbW0NJVmVjdG9yIGFsbG9jXSBpbml0V2l0aFg6MCBZOmFtb3VudCBaOjAg
VzowXSk7IGJyZWFrOyAvLyBpbnB1dEdWZWN0b3IKKyAgICAgICAgY2FzZSAyOiByb3dWZWN0b3Ig
PSBhZG9wdE5TKFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRoWDowIFk6MCBaOmFtb3VudCBXOjBd
KTsgYnJlYWs7IC8vIGlucHV0QlZlY3RvcgogICAgICAgICB9Ci0gICAgICAgIHZhbHVlID0gYWRv
cHROUyhyb3dWZWN0b3IpOworICAgICAgICB2YWx1ZSA9IFdURk1vdmUocm93VmVjdG9yKTsKICNl
bmRpZgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
Lm1tCmluZGV4IDI0YjllZGU0YWI2ZjZkYmE3MDFmNmMzYTQ5YWNmZjc0MTRjY2E0MmYuLjAyNzI1
NGM5ZGJlZWU3ZTJjMDZmNTBiNGUxZjdiYTYzMGE1ZTY1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tCkBAIC01MDYsOSArNTA2LDkgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6YWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5p
bWEKIHsKICAgICAvLyBBZGQgdGhlIGRlbGVnYXRlCiAgICAgaWYgKCFtX2RlbGVnYXRlKSB7Ci0g
ICAgICAgIFdlYkFuaW1hdGlvbkRlbGVnYXRlKiB3ZWJBbmltYXRpb25EZWxlZ2F0ZSA9IFtbV2Vi
QW5pbWF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgICAgICBtX2RlbGVnYXRlID0gYWRv
cHROUyh3ZWJBbmltYXRpb25EZWxlZ2F0ZSk7CisgICAgICAgIGF1dG8gd2ViQW5pbWF0aW9uRGVs
ZWdhdGUgPSBhZG9wdE5TKFtbV2ViQW5pbWF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAg
ICAgICAgW3dlYkFuaW1hdGlvbkRlbGVnYXRlIHNldE93bmVyOnRoaXNdOworICAgICAgICBtX2Rl
bGVnYXRlID0gV1RGTW92ZSh3ZWJBbmltYXRpb25EZWxlZ2F0ZSk7CiAgICAgfQogICAgIAogICAg
IENBQW5pbWF0aW9uICpwcm9wZXJ0eUFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBQW5pbWF0aW9u
ICo+KGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYT4oYW5pbWF0aW9uKS5wbGF0Zm9y
bUFuaW1hdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJDb3JlTW90aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNv
cmVNb3Rpb25NYW5hZ2VyLmgKaW5kZXggYzJiMzQ2MDIyOGVjOWQzZGJlOWNjYzk5NmY3ZmYwMWZh
YzlkYTZmMS4uZDRhODYzOGYxNTFkNmNjMjAwODM5ODNjYWQ2MDhmZmNlNzAzYTE5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVW
SUNFX09SSUVOVEFUSU9OKQogCiAjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ29yZUxvY2F0aW9uLmg+
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha0hhc2hTZXQuaD4K
IAogY29uc3RleHByIGZsb2F0IGtNb3Rpb25VcGRhdGVJbnRlcnZhbCA9IDEuMGYgLyA2MC4wZjsK
QEAgLTM3LDExICszOCwxMSBAQCBjbGFzcyBNb3Rpb25NYW5hZ2VyQ2xpZW50OwogfQogCiBXRUJD
T1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVNb3Rpb25NYW5hZ2VyIDogTlNPYmplY3Qgewot
ICAgIENNTW90aW9uTWFuYWdlciogbV9tb3Rpb25NYW5hZ2VyOwotICAgIENMTG9jYXRpb25NYW5h
Z2VyKiBtX2xvY2F0aW9uTWFuYWdlcjsKKyAgICBSZXRhaW5QdHI8Q01Nb3Rpb25NYW5hZ2VyPiBt
X21vdGlvbk1hbmFnZXI7CisgICAgUmV0YWluUHRyPENMTG9jYXRpb25NYW5hZ2VyPiBtX2xvY2F0
aW9uTWFuYWdlcjsKICAgICBXZWFrSGFzaFNldDxXZWJDb3JlOjpNb3Rpb25NYW5hZ2VyQ2xpZW50
PiBtX2RldmljZU1vdGlvbkNsaWVudHM7CiAgICAgV2Vha0hhc2hTZXQ8V2ViQ29yZTo6TW90aW9u
TWFuYWdlckNsaWVudD4gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudHM7Ci0gICAgTlNUaW1lciog
bV91cGRhdGVUaW1lcjsKKyAgICBSZXRhaW5QdHI8TlNUaW1lcj4gbV91cGRhdGVUaW1lcjsKICAg
ICBCT09MIG1fZ3lyb0F2YWlsYWJsZTsKICAgICBCT09MIG1faGVhZGluZ0F2YWlsYWJsZTsKICAg
ICBCT09MIG1faW5pdGlhbGl6ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KaW5kZXggZjJkZDA5NzU0YjhmYTllMzRlZmZlYWU3
MjYxNWQ5ZWNiMDg1NzNmZi4uNDM4MTZmN2ZjNTU2YjE0OTFiYTY5YWIxMWY4OTllMjhiM2I3MzE4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25N
YW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9u
TWFuYWdlci5tbQpAQCAtODksMTMgKzg5LDExIEBAIC0gKHZvaWQpZGVhbGxvYwogCiAgICAgaWYg
KG1faGVhZGluZ0F2YWlsYWJsZSkKICAgICAgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRh
dGluZ0hlYWRpbmddOwotICAgIFttX2xvY2F0aW9uTWFuYWdlciByZWxlYXNlXTsKIAogICAgIGlm
IChtX2d5cm9BdmFpbGFibGUpCiAgICAgICAgIFttX21vdGlvbk1hbmFnZXIgc3RvcERldmljZU1v
dGlvblVwZGF0ZXNdOwogICAgIGVsc2UKICAgICAgICAgW21fbW90aW9uTWFuYWdlciBzdG9wQWNj
ZWxlcm9tZXRlclVwZGF0ZXNdOwotICAgIFttX21vdGlvbk1hbmFnZXIgcmVsZWFzZV07CiAKICAg
ICBbc3VwZXIgZGVhbGxvY107CiB9CkBAIC0xNDIsMTYgKzE0MCwxNiBAQCAtICh2b2lkKWluaXRp
YWxpemVPbk1haW5UaHJlYWQKIHsKICAgICBBU1NFUlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsK
IAotICAgIG1fbW90aW9uTWFuYWdlciA9IFthbGxvY0NNTW90aW9uTWFuYWdlckluc3RhbmNlKCkg
aW5pdF07CisgICAgbV9tb3Rpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTU1vdGlvbk1hbmFn
ZXJJbnN0YW5jZSgpIGluaXRdKTsKIAotICAgIG1fZ3lyb0F2YWlsYWJsZSA9IG1fbW90aW9uTWFu
YWdlci5kZXZpY2VNb3Rpb25BdmFpbGFibGU7CisgICAgbV9neXJvQXZhaWxhYmxlID0gbV9tb3Rp
b25NYW5hZ2VyLmdldCgpLmRldmljZU1vdGlvbkF2YWlsYWJsZTsKIAogICAgIGlmIChtX2d5cm9B
dmFpbGFibGUpCi0gICAgICAgIG1fbW90aW9uTWFuYWdlci5kZXZpY2VNb3Rpb25VcGRhdGVJbnRl
cnZhbCA9IGtNb3Rpb25VcGRhdGVJbnRlcnZhbDsKKyAgICAgICAgW21fbW90aW9uTWFuYWdlciBz
ZXREZXZpY2VNb3Rpb25VcGRhdGVJbnRlcnZhbDoga01vdGlvblVwZGF0ZUludGVydmFsXTsKICAg
ICBlbHNlCi0gICAgICAgIG1fbW90aW9uTWFuYWdlci5hY2NlbGVyb21ldGVyVXBkYXRlSW50ZXJ2
YWwgPSBrTW90aW9uVXBkYXRlSW50ZXJ2YWw7CisgICAgICAgIFttX21vdGlvbk1hbmFnZXIgc2V0
QWNjZWxlcm9tZXRlclVwZGF0ZUludGVydmFsOiBrTW90aW9uVXBkYXRlSW50ZXJ2YWxdOwogCi0g
ICAgbV9sb2NhdGlvbk1hbmFnZXIgPSBbYWxsb2NDTExvY2F0aW9uTWFuYWdlckluc3RhbmNlKCkg
aW5pdF07CisgICAgbV9sb2NhdGlvbk1hbmFnZXIgPSBhZG9wdE5TKFthbGxvY0NMTG9jYXRpb25N
YW5hZ2VySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgbV9oZWFkaW5nQXZhaWxhYmxlID0gW2dldENM
TG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBoZWFkaW5nQXZhaWxhYmxlXTsKIAogICAgIG1faW5pdGlh
bGl6ZWQgPSBZRVM7CkBAIC0xODgsMTAgKzE4Niw4IEBAIC0gKHZvaWQpY2hlY2tDbGllbnRTdGF0
dXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXBlYXRzOllFU10gcmV0YWluXTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIE5TVGltZXIgKnRpbWVyID0gbV91cGRhdGVUaW1lcjsKKyAgICAgICAgW21fdXBkYXRl
VGltZXIgaW52YWxpZGF0ZV07CiAgICAgICAgIG1fdXBkYXRlVGltZXIgPSBuaWw7Ci0gICAgICAg
IFt0aW1lciBpbnZhbGlkYXRlXTsKLSAgICAgICAgW3RpbWVyIHJlbGVhc2VdOwogCiAgICAgICAg
IGlmIChtX2d5cm9BdmFpbGFibGUpCiAgICAgICAgICAgICBbbV9tb3Rpb25NYW5hZ2VyIHN0b3BE
ZXZpY2VNb3Rpb25VcGRhdGVzXTsKQEAgLTIxMSwxMSArMjA3LDExIEBAIC0gKHZvaWQpdXBkYXRl
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBXZSBzaG91bGQsIGhvd2V2ZXIsIGd1YXJk
IGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgbWFuYWdlcnMgcmV0dXJuIG5pbCBkYXRhLgotICAgIENN
RGV2aWNlTW90aW9uICpkZXZpY2VNb3Rpb24gPSBtX21vdGlvbk1hbmFnZXIuZGV2aWNlTW90aW9u
OworICAgIENNRGV2aWNlTW90aW9uICpkZXZpY2VNb3Rpb24gPSBbbV9tb3Rpb25NYW5hZ2VyIGRl
dmljZU1vdGlvbl07CiAgICAgaWYgKG1fZ3lyb0F2YWlsYWJsZSAmJiBkZXZpY2VNb3Rpb24pCi0g
ICAgICAgIFtzZWxmIHNlbmRNb3Rpb25EYXRhOmRldmljZU1vdGlvbiB3aXRoSGVhZGluZzptX2xv
Y2F0aW9uTWFuYWdlci5oZWFkaW5nXTsKKyAgICAgICAgW3NlbGYgc2VuZE1vdGlvbkRhdGE6ZGV2
aWNlTW90aW9uIHdpdGhIZWFkaW5nOlttX2xvY2F0aW9uTWFuYWdlciBoZWFkaW5nXV07CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGlmIChDTUFjY2VsZXJvbWV0ZXJEYXRhICphY2NlbGVyb21ldGVyRGF0
YSA9IG1fbW90aW9uTWFuYWdlci5hY2NlbGVyb21ldGVyRGF0YSkKKyAgICAgICAgaWYgKENNQWNj
ZWxlcm9tZXRlckRhdGEgKmFjY2VsZXJvbWV0ZXJEYXRhID0gW21fbW90aW9uTWFuYWdlciBhY2Nl
bGVyb21ldGVyRGF0YV0pCiAgICAgICAgICAgICBbc2VsZiBzZW5kQWNjZWxlcm9tZXRlckRhdGE6
YWNjZWxlcm9tZXRlckRhdGFdOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV0FLVmlldy5tbQppbmRleCAyNDdmOTJmZTlhZDMzZjMzNjk0YzM5MmI1YTJiOWI5NjBi
NTZhODBhLi5mMjQzNWJmM2IxNjBkZjg4MDkzN2QyMmUzMjFhM2Q5YjU0NTBlZTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCkBAIC0yNDYsNyArMjQ2LDcg
QEAgLSAodm9pZClkZWFsbG9jCiAgICAgfQogICAgIAogICAgIFtzdWJ2aWV3UmVmZXJlbmNlcyBy
ZWxlYXNlXTsKLSAgICAKKwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMzI4LDEzICsz
MjgsMTIgQEAgLSAoV0FLVmlldyAqKWxhc3RTY3JvbGxhYmxlQW5jZXN0b3IKIAogLSAodm9pZClh
ZGRTdWJ2aWV3OihXQUtWaWV3ICopc3VidmlldwogewotICAgIFtzdWJ2aWV3IHJldGFpbl07Cisg
ICAgYXV0byBwcm90ZWN0ZWRTdWJWaWV3ID0gcmV0YWluUHRyKHN1YnZpZXcpOwogICAgIFtzdWJ2
aWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIFdLVmlld0FkZFN1YnZpZXcgKHZpZXdSZWYs
IFtzdWJ2aWV3IF92aWV3UmVmXSk7CiAgICAgCiAgICAgLy8gS2VlcCBhIHJlZmVyZW5jZSB0byBz
dWJ2aWV3IHNvIGl0IHN0aWNrcyBhcm91bmQuCiAgICAgW1tzZWxmIF9zdWJ2aWV3UmVmZXJlbmNl
c10gYWRkT2JqZWN0OnN1YnZpZXddOwotICAgIFtzdWJ2aWV3IHJlbGVhc2VdOwogfQogCiAtICh2
b2lkKXdpbGxSZW1vdmVTdWJ2aWV3OihXQUtWaWV3ICopc3VidmlldwpAQCAtMzQ0LDEwICszNDMs
OSBAQCAtICh2b2lkKXdpbGxSZW1vdmVTdWJ2aWV3OihXQUtWaWV3ICopc3VidmlldwogCiAtICh2
b2lkKXJlbW92ZUZyb21TdXBlcnZpZXcKIHsKLSAgICBXQUtWaWV3ICpvbGRTdXBlcnZpZXcgPSBb
W3NlbGYgc3VwZXJ2aWV3XSByZXRhaW5dOworICAgIFJldGFpblB0cjxXQUtWaWV3PiBvbGRTdXBl
cnZpZXcgPSBbc2VsZiBzdXBlcnZpZXddOwogICAgIFdLVmlld1JlbW92ZUZyb21TdXBlcnZpZXcg
KHZpZXdSZWYpOwogICAgIFtbb2xkU3VwZXJ2aWV3IF9zdWJ2aWV3UmVmZXJlbmNlc10gcmVtb3Zl
T2JqZWN0OnNlbGZdOwotICAgIFtvbGRTdXBlcnZpZXcgcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQp
dmlld0RpZE1vdmVUb1dpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQppbmRleCBhMTlkMzE0ZjI1OWFmMTViMTRiOWRhNzU3YzhmZTU3MWJlOTBiYmZi
Li5mMzI2YTY5Zjk1NjBmYzM0MWZkYmM0NjA3NTg5YWMwMDdhNjg2MmY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjU1LDkgKzI1NSw3IEBA
IHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2Um
IHBhc3RlYm9hcmRJbWFnZSkKIAogc3RhdGljIHZvaWQgd3JpdGVGaWxlV3JhcHBlckFzUlRGREF0
dGFjaG1lbnQoTlNGaWxlV3JhcHBlciAqd3JhcHBlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgaW50NjRfdCYgbmV3Q2hhbmdlQ291bnQpCiB7Ci0gICAgTlNUZXh0QXR0YWNobWVudCAq
YXR0YWNobWVudCA9IFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5pdFdpdGhGaWxlV3JhcHBl
cjp3cmFwcGVyXTsKLSAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtOU0F0dHJpYnV0
ZWRTdHJpbmcgYXR0cmlidXRlZFN0cmluZ1dpdGhBdHRhY2htZW50OmF0dGFjaG1lbnRdOwotICAg
IFthdHRhY2htZW50IHJlbGVhc2VdOworICAgIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0g
W05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0dGFjaG1lbnQ6YWRvcHRO
UyhbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRmlsZVdyYXBwZXI6d3JhcHBlcl0p
LmdldCgpXTsKIAogICAgIE5TRGF0YSAqUlRGRERhdGEgPSBbc3RyaW5nIFJURkRGcm9tUmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV07
CiAgICAgaWYgKCFSVEZERGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KaW5kZXggMGZhZWRmODRi
ZDU2NzNjNThjZjFmYjY0YjgzNWEwOTkzM2E3NzhkNy4uMjk1OGYxYmNlMzllY2VjOTg2ZGI4ODUy
OWYxNThkNzIyZmFkNjZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KQEAgLTI0MSw5ICsyNDEs
NyBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmluaXRpYWxpemVWb2ljZUxpc3Qo
KQogICAgICAgICBOU1N0cmluZyAqdm9pY2VVUkkgPSBbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6
TlNWb2ljZUlkZW50aWZpZXJdOwogICAgICAgICBOU1N0cmluZyAqbmFtZSA9IFthdHRyaWJ1dGVz
IG9iamVjdEZvcktleTpOU1ZvaWNlTmFtZV07CiAgICAgICAgIE5TU3RyaW5nICpsYW5ndWFnZSA9
IFthdHRyaWJ1dGVzIG9iamVjdEZvcktleTpOU1ZvaWNlTG9jYWxlSWRlbnRpZmllcl07Ci0gICAg
ICAgIE5TTG9jYWxlICpsb2NhbGUgPSBbW05TTG9jYWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlk
ZW50aWZpZXI6bGFuZ3VhZ2VdOwotICAgICAgICBOU1N0cmluZyAqZGVmYXVsdFZvaWNlVVJJID0g
c3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZShsb2NhbGUp
OwotICAgICAgICBbbG9jYWxlIHJlbGVhc2VdOworICAgICAgICBOU1N0cmluZyAqZGVmYXVsdFZv
aWNlVVJJID0gc3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2Fs
ZShhZG9wdE5TKFtbTlNMb2NhbGUgYWxsb2NdIGluaXRXaXRoTG9jYWxlSWRlbnRpZmllcjpsYW5n
dWFnZV0pLmdldCgpKTsKIAogICAgICAgICAvLyBDaGFuZ2UgdG8gQkNQLTQ3IGZvcm1hdCBhcyBk
ZWZpbmVkIGJ5IHNwZWMuCiAgICAgICAgIGxhbmd1YWdlID0gW2xhbmd1YWdlIHN0cmluZ0J5UmVw
bGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIl8iIHdpdGhTdHJpbmc6QCItIl07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmluZGV4IGJhYzVhZjVk
ZTFlY2ZlZjk4OGViMDNmMjA5ZGE1ZGZkYzY2Mjg0ZTEuLjdlMmY2YWE1MmRjZGUzMjE0NzAxNTkx
NjZlNTQ4YTBjYzlhZjRmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tCkBAIC0yNjAsNyArMjYwLDcgQEAgUmV0YWluUHRyPE5TTnVtYmVyPiBB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCkK
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KLSAgICByZXR1cm4g
YWRvcHROUyhbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoocHJpbWVJbmZvLmxlYWRpbmdGcmFtZXMg
LyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQpXSk7CisgICAgcmV0dXJuIHJl
dGFpblB0cihbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoocHJpbWVJbmZvLmxlYWRpbmdGcmFtZXMg
LyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQpXSk7CiB9CiAKIENNU2FtcGxl
QnVmZmVyUmVmIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVmZmVyV2l0aE51
bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlvQnVmZmVyTGlzdCBmaWxsQnVmZmVyTGlz
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVz
b3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IDU2NTU1NDg3YTc4YjBhMDRkYjcxMjhk
YjQwYThmNTdlMmI5ZWRiYjQuLmQ4NmY0YzkwNWViZmUyN2M3M2IyNWE3ZjYzYjYzMDViOWZlYmY2
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVz
b3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMTU2LDEyICsxNTYsMTIgQEAgdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5zUmVxdWVzdCA9IFttX25z
UmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV07CisgICAgYXV0byBuc1JlcXVlc3QgPSBhZG9wdE5T
KFttX25zUmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV0pOwogCiAgICAgaWYgKG5zUmVxdWVzdCkK
ICAgICAgICAgW25zUmVxdWVzdCBzZXRVUkw6dXJsKCldOwogICAgIGVsc2UKLSAgICAgICAgbnNS
ZXF1ZXN0ID0gW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmwoKV07
CisgICAgICAgIG5zUmVxdWVzdCA9IGFkb3B0TlMoW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9j
XSBpbml0V2l0aFVSTDp1cmwoKV0pOwogCiAgICAgaWYgKFJlc291cmNlUmVxdWVzdDo6aHR0cFBp
cGVsaW5pbmdFbmFibGVkKCkpCiAgICAgICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFBpcGVsaW5l
SFRUUChbbnNSZXF1ZXN0IF9DRlVSTFJlcXVlc3RdLCB0cnVlLCB0cnVlKTsKQEAgLTE4Nyw3ICsx
ODcsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQog
ICAgICAgICBbbnNSZXF1ZXN0IHNldEhUVFBNZXRob2Q6aHR0cE1ldGhvZCgpXTsKICAgICBbbnNS
ZXF1ZXN0IHNldEhUVFBTaG91bGRIYW5kbGVDb29raWVzOmFsbG93Q29va2llcygpXTsKIAotICAg
IFtuc1JlcXVlc3QgX3NldFByb3BlcnR5OnNpdGVGb3JDb29raWVzKG1fc2FtZVNpdGVEaXNwb3Np
dGlvbiwgbnNSZXF1ZXN0LlVSTCkgZm9yS2V5OkAiX2tDRkhUVFBDb29raWVQb2xpY3lQcm9wZXJ0
eVNpdGVGb3JDb29raWVzIl07CisgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6c2l0ZUZvckNv
b2tpZXMobV9zYW1lU2l0ZURpc3Bvc2l0aW9uLCBbbnNSZXF1ZXN0IFVSTF0pIGZvcktleTpAIl9r
Q0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlTaXRlRm9yQ29va2llcyJdOwogICAgIFtuc1JlcXVl
c3QgX3NldFByb3BlcnR5Om1faXNUb3BTaXRlID8gQFlFUyA6IEBOTyBmb3JLZXk6QCJfa0NGSFRU
UENvb2tpZVBvbGljeVByb3BlcnR5SXNUb3BMZXZlbE5hdmlnYXRpb24iXTsKIAogICAgIC8vIENh
bm5vdCBqdXN0IHVzZSBzZXRBbGxIVFRQSGVhZGVyRmllbGRzIGhlcmUsIGJlY2F1c2UgaXQgZG9l
cyBub3QgcmVtb3ZlIGhlYWRlcnMuCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBSZXNvdXJjZVJl
cXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICBTdHJpbmcgcGFydGl0aW9uID0g
Y2FjaGVQYXJ0aXRpb24oKTsKICAgICBpZiAoIXBhcnRpdGlvbi5pc051bGwoKSAmJiAhcGFydGl0
aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBOU1N0cmluZyAqcGFydGl0aW9uVmFsdWUgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6cGFydGl0aW9uLnV0ZjgoKS5kYXRhKCldOwotICAg
ICAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpwYXJ0aXRpb25WYWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5IGluUmVxdWVzdDpuc1JlcXVlc3RdOwor
ICAgICAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpwYXJ0aXRpb25WYWx1ZSBmb3JLZXk6
KE5TU3RyaW5nICopX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5IGluUmVxdWVzdDpuc1JlcXVlc3Qu
Z2V0KCldOwogICAgIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTIyMiw3ICsyMjIsNyBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIH0KICNl
bmRpZgogCi0gICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKG5zUmVxdWVzdCk7CisgICAgbV9uc1Jl
cXVlc3QgPSBXVEZNb3ZlKG5zUmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpk
b1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQpAQCAtMjMyLDE2ICsyMzIsMTYgQEAgdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpuc1JlcXVlc3QgPSBbbV9uc1JlcXVl
c3QuZ2V0KCkgbXV0YWJsZUNvcHldOworICAgIGF1dG8gbnNSZXF1ZXN0ID0gYWRvcHROUyhbbV9u
c1JlcXVlc3QuZ2V0KCkgbXV0YWJsZUNvcHldKTsKIAogICAgIGlmIChuc1JlcXVlc3QpCiAgICAg
ICAgIFtuc1JlcXVlc3Qgc2V0VVJMOnVybCgpXTsKICAgICBlbHNlCi0gICAgICAgIG5zUmVxdWVz
dCA9IFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsKCldOworICAg
ICAgICBuc1JlcXVlc3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5p
dFdpdGhVUkw6dXJsKCldKTsKIAogICAgIEZvcm1EYXRhKiBmb3JtRGF0YSA9IGh0dHBCb2R5KCk7
CiAgICAgaWYgKGZvcm1EYXRhICYmICFmb3JtRGF0YS0+aXNFbXB0eSgpKQotICAgICAgICBXZWJD
b3JlOjpzZXRIVFRQQm9keShuc1JlcXVlc3QsIGZvcm1EYXRhKTsKKyAgICAgICAgV2ViQ29yZTo6
c2V0SFRUUEJvZHkobnNSZXF1ZXN0LmdldCgpLCBmb3JtRGF0YSk7CiAKICAgICBpZiAoTlNJbnB1
dFN0cmVhbSAqYm9keVN0cmVhbSA9IFtuc1JlcXVlc3QgSFRUUEJvZHlTdHJlYW1dKSB7CiAgICAg
ICAgIC8vIEZvciBzdHJlYW1zLCBwcm92aWRlIGEgQ29udGVudC1MZW5ndGggdG8gYXZvaWQgdXNp
bmcgY2h1bmtlZCBlbmNvZGluZywgYW5kIHRvIGdldCBhY2N1cmF0ZSB0b3RhbCBsZW5ndGggaW4g
Y2FsbGJhY2tzLgpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1Vw
ZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9uc1JlcXVl
c3QgPSBhZG9wdE5TKG5zUmVxdWVzdCk7CisgICAgbV9uc1JlcXVlc3QgPSBXVEZNb3ZlKG5zUmVx
dWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbihDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklP
Uy5tbQppbmRleCBmYjEwOTQ2ZmVjOTNiZjFlZjE0NjA1NTY3OWVlYjg4OWQxZWQ4Y2FiLi5iOGU5
YjNjNzc3OTljZDYxY2Y5YzU5ZjA5OGI2YzZhYzQ1ZjYyZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3Rp
ZmllcklPUy5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFs
U2V0dGluZ3MuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKKyNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPEFwcFN1
cHBvcnQvQ1BOZXR3b3JrT2JzZXJ2ZXIuaD4KQEAgLTQyLDcgKzQzLDcgQEAgQGVuZAogI2VuZGlm
CiAKIEBpbnRlcmZhY2UgV2ViTmV0d29ya1N0YXRlT2JzZXJ2ZXIgOiBOU09iamVjdCB7Ci0gICAg
dm9pZCAoXmJsb2NrKSgpOworICAgIEJsb2NrUHRyPHZvaWQoKT4gYmxvY2s7CiB9CiAtIChpZClp
bml0V2l0aEJsb2NrOih2b2lkICheKSgpKWJsb2NrOwogQGVuZApAQCAtNTQsMTMgKzU1LDEyIEBA
IC0gKGlkKWluaXRXaXRoQmxvY2s6KHZvaWQgKF4pKCkpb2JzZXJ2ZXJCbG9jawogICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIFtbQ1BOZXR3
b3JrT2JzZXJ2ZXIgc2hhcmVkTmV0d29ya09ic2VydmVyXSBhZGROZXR3b3JrUmVhY2hhYmxlT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IobmV0d29ya1N0YXRlQ2hhbmdlZDopXTsKLSAg
ICBibG9jayA9IFtvYnNlcnZlckJsb2NrIGNvcHldOworICAgIGJsb2NrID0gbWFrZUJsb2NrUHRy
KG9ic2VydmVyQmxvY2spOwogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MK
IHsKLSAgICBbYmxvY2sgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRs
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFu
ZGxlTWFjLm1tCmluZGV4IGQxZThjMDJhMzkwZmZkZjMwYTc1Y2Q2NDcyNjg1ZGUwNzdiYjc0NGEu
LmIyY2JhYjdjOGFjZjJjMzk1Zjk4NDcwYTUwYmYwNzgyZDkxMmNhNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCkBAIC0zMTUsMTQgKzMxNSwxMCBAQCBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRl
KGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIFJlZlB0cjxTeW5jaHJvbgogewogICAg
IEFTU0VSVCghZC0+bV9kZWxlZ2F0ZSk7CiAKLSAgICBpZCA8TlNVUkxDb25uZWN0aW9uRGVsZWdh
dGU+IGRlbGVnYXRlOwogICAgIGlmIChzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkKLSAgICAg
ICAgZGVsZWdhdGUgPSBbW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhIYW5kbGU6dGhpcyBtZXNzYWdlUXVldWU6V1RGTW92ZShxdWV1
ZSldOworICAgICAgICBkLT5tX2RlbGVnYXRlID0gYWRvcHROUyhbW1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhIYW5kbGU6dGhpcyBt
ZXNzYWdlUXVldWU6V1RGTW92ZShxdWV1ZSldKTsKICAgICBlbHNlCi0gICAgICAgIGRlbGVnYXRl
ID0gW1tXZWJDb3JlUmVzb3VyY2VIYW5kbGVXaXRoQ3JlZGVudGlhbFN0b3JhZ2VBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoSGFuZGxlOnRoaXMgbWVzc2FnZVF1ZXVlOldU
Rk1vdmUocXVldWUpXTsKLQotICAgIGQtPm1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBbZGVs
ZWdhdGUgcmVsZWFzZV07CisgICAgICAgIGQtPm1fZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQ29y
ZVJlc291cmNlSGFuZGxlV2l0aENyZWRlbnRpYWxTdG9yYWdlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aEhhbmRsZTp0aGlzIG1lc3NhZ2VRdWV1ZTpXVEZNb3ZlKHF1ZXVl
KV0pOwogCiAgICAgcmV0dXJuIGQtPm1fZGVsZWdhdGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsZUNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbQppbmRleCBmNzY5MDkz
ZGMyYzg5N2YyZDc4MWE2ZjQ4MjE0MWFkZTNkYWM0YTk5Li4wODQ0ZTkwZDZjMDQ4ZDRlOTdlZDQ5
ZTZmYjdlNGY0OWNiNDllOWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2NvY29hL0xvY2FsZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvY29jb2EvTG9jYWxlQ29jb2EubW0KQEAgLTUxLDEzICs1MSwxMyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiAKIHN0
YXRpYyBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBjcmVhdGVEYXRlVGltZUZvcm1hdHRlcihO
U0xvY2FsZSogbG9jYWxlLCBOU0NhbGVuZGFyKiBjYWxlbmRhciwgTlNEYXRlRm9ybWF0dGVyU3R5
bGUgZGF0ZVN0eWxlLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSB0aW1lU3R5bGUpCiB7Ci0gICAgTlNE
YXRlRm9ybWF0dGVyICpmb3JtYXR0ZXIgPSBbW05TRGF0ZUZvcm1hdHRlciBhbGxvY10gaW5pdF07
CisgICAgYXV0byBmb3JtYXR0ZXIgPSBhZG9wdE5TKFtbTlNEYXRlRm9ybWF0dGVyIGFsbG9jXSBp
bml0XSk7CiAgICAgW2Zvcm1hdHRlciBzZXRMb2NhbGU6bG9jYWxlXTsKICAgICBbZm9ybWF0dGVy
IHNldERhdGVTdHlsZTpkYXRlU3R5bGVdOwogICAgIFtmb3JtYXR0ZXIgc2V0VGltZVN0eWxlOnRp
bWVTdHlsZV07CiAgICAgW2Zvcm1hdHRlciBzZXRUaW1lWm9uZTpbTlNUaW1lWm9uZSB0aW1lWm9u
ZVdpdGhBYmJyZXZpYXRpb246QCJVVEMiXV07CiAgICAgW2Zvcm1hdHRlciBzZXRDYWxlbmRhcjpj
YWxlbmRhcl07Ci0gICAgcmV0dXJuIGFkb3B0TlMoZm9ybWF0dGVyKTsKKyAgICByZXR1cm4gZm9y
bWF0dGVyOwogfQogCiBMb2NhbGVDb2NvYTo6TG9jYWxlQ29jb2EoY29uc3QgQXRvbVN0cmluZyYg
bG9jYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4
dEJvdW5kYXJpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91
bmRhcmllcy5tbQppbmRleCA0MDkwYjY2ODljMTZlZTkwYmIwZjEyOWQwYzQ4NDI4NTQ2ODY5Nzcw
Li41ZjM2ZDA4MzE0ODZjOWQ5ZTRmYzkzYjliZGYxZDYxNzdjMjBlNjQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQpAQCAtMTgx
LDkgKzE4MSw4IEBAIHN0YXRpYyB2b2lkIGZpbmRDb21wbGV4V29yZEJvdW5kYXJ5KFN0cmluZ1Zp
ZXcgdGV4dCwgaW50IHBvc2l0aW9uLCBpbnQqIHN0YXJ0LCBpCiB2b2lkIGZpbmRXb3JkQm91bmRh
cnkoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGludCogc3RhcnQsIGludCogZW5kKQog
ewogI2lmIFVTRShBUFBLSVQpCi0gICAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3Ry
aW5nID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRleHQuY3Jl
YXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpXTsKKyAgICBhdXRvIGF0dHJpYnV0ZWRT
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmlu
Zzp0ZXh0LmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKV0pOwogICAgIE5TUmFu
Z2UgcmFuZ2UgPSBbYXR0cmlidXRlZFN0cmluZyBkb3VibGVDbGlja0F0SW5kZXg6c3RkOjptaW48
dW5zaWduZWQ+KHBvc2l0aW9uLCB0ZXh0Lmxlbmd0aCgpIC0gMSldOwotICAgIFthdHRyaWJ1dGVk
U3RyaW5nIHJlbGVhc2VdOwogICAgICpzdGFydCA9IHJhbmdlLmxvY2F0aW9uOwogICAgICplbmQg
PSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aDsKICNlbHNlCkBAIC0yMzIsOSArMjMxLDgg
QEAgdm9pZCBmaW5kRW5kV29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgaW50IHBvc2l0aW9u
LCBpbnQqIGVuZCkKIGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldyB0ZXh0LCBp
bnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyZCkKIHsgICAKICNpZiBVU0UoQVBQS0lUKQotICAgIE5T
QXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFN0cmluZzp0ZXh0LmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmco
KS5nZXQoKV07CisgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6dGV4dC5jcmVhdGVOU1N0cmluZ1dpdGhv
dXRDb3B5aW5nKCkuZ2V0KCldKTsKICAgICBpbnQgcmVzdWx0ID0gW2F0dHJpYnV0ZWRTdHJpbmcg
bmV4dFdvcmRGcm9tSW5kZXg6cG9zaXRpb24gZm9yd2FyZDpmb3J3YXJkXTsKLSAgICBbYXR0cmli
dXRlZFN0cmluZyByZWxlYXNlXTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICAvLyBU
aGlzIHZlcnkgbGlrZWx5IHdvbid0IGJlaGF2ZSBleGFjdGx5IGxpa2UgdGhlIG5vbi1pUGhvbmUg
dmVyc2lvbiwgYnV0IGl0IHdvcmtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCmluZGV4
IDYzYTlmOWJkMWVkMWQ3NTJjNGY4NDllZTYxODcwNjdhOWY1NjI0NGEuLjI1MTU0NjkwNTYzYzVh
ZThmNmQxOGJjMTQ4NDhmNTYyYjlhN2NkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgU3RyaW5nIEludGVybmFsczo6ZW5jb2RlZFByZWZlcmVu
Y2VWYWx1ZShjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXkKIHsKICAgICBh
dXRvIHVzZXJEZWZhdWx0cyA9IGFkb3B0TlMoW1tOU1VzZXJEZWZhdWx0cyBhbGxvY10gaW5pdFdp
dGhTdWl0ZU5hbWU6ZG9tYWluXSk7CiAgICAgaWQgdmFsdWUgPSBbdXNlckRlZmF1bHRzIG9iamVj
dEZvcktleTprZXldOwotICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW05TS2V5ZWRBcmNoaXZlciBh
cmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDp2YWx1ZSByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVT
IGVycm9yOm51bGxwdHJdKTsKKyAgICBhdXRvIGRhdGEgPSByZXRhaW5QdHIoW05TS2V5ZWRBcmNo
aXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDp2YWx1ZSByZXF1aXJpbmdTZWN1cmVDb2Rp
bmc6WUVTIGVycm9yOm51bGxwdHJdKTsKICAgICByZXR1cm4gW2RhdGEgYmFzZTY0RW5jb2RlZFN0
cmluZ1dpdGhPcHRpb25zOjBdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XS09iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLT2JqZWN0
Lm1tCmluZGV4IDczNjYxMDVjYjExYWYwNWZhODlkMWJjZjczODllZTYxMjQ5YTFhMTQuLjNhOGUz
NGM0M2M5MjhlYzMxYzc4M2Y4YjVmMDZiZjlhMTQ1MWNkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dLT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1dLT2JqZWN0Lm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXS09iamVjdC5o
IgogCiAjaW1wb3J0ICJBUElPYmplY3QuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
QGludGVyZmFjZSBOU09iamVjdCAoKQogLSAoQk9PTClpc05TQXJyYXlfXzsKQEAgLTQ1LDEzICs0
NiwxMiBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS09iamVjdCB7CiAgICAgQk9PTCBfaGFz
SW5pdGlhbGl6ZWRUYXJnZXQ7Ci0gICAgTlNPYmplY3QgKl90YXJnZXQ7CisgICAgUmV0YWluUHRy
PE5TT2JqZWN0PiBfdGFyZ2V0OwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBBUEk6Ok9i
amVjdDo6ZnJvbVdLT2JqZWN0RXh0cmFTcGFjZShzZWxmKS5+T2JqZWN0KCk7Ci0gICAgW190YXJn
ZXQgcmVsZWFzZV07CiAKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CkBAIC02Miw3ICs2Miw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFsaXplVGFyZ2V0SWZOZWVkZWQoV0tPYmplY3QgKnNl
bGYpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNlbGYtPl9oYXNJbml0aWFsaXplZFRhcmdldCA9
IFlFUzsKLSAgICBzZWxmLT5fdGFyZ2V0ID0gW3NlbGYgX3dlYl9jcmVhdGVUYXJnZXRdOworICAg
IHNlbGYtPl90YXJnZXQgPSBhZG9wdE5TKFtzZWxmIF93ZWJfY3JlYXRlVGFyZ2V0XSk7CiB9CiAK
IC0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0CkBAIC0xMTcsNyArMTE3LDcgQEAgLSAoaWQpZm9y
d2FyZGluZ1RhcmdldEZvclNlbGVjdG9yOihTRUwpc2VsZWN0b3IKIHsKICAgICBpbml0aWFsaXpl
VGFyZ2V0SWZOZWVkZWQoc2VsZik7CiAKLSAgICByZXR1cm4gX3RhcmdldDsKKyAgICByZXR1cm4g
X3RhcmdldC5nZXQoKTsKIH0KIAogLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgpAQCAtMTU3LDcg
KzE1Nyw3IEBAIC0gKHZvaWQpZm9yd2FyZEludm9jYXRpb246KE5TSW52b2NhdGlvbiAqKWludm9j
YXRpb24KIHsKICAgICBpbml0aWFsaXplVGFyZ2V0SWZOZWVkZWQoc2VsZik7CiAKLSAgICBbaW52
b2NhdGlvbiBpbnZva2VXaXRoVGFyZ2V0Ol90YXJnZXRdOworICAgIFtpbnZvY2F0aW9uIGludm9r
ZVdpdGhUYXJnZXQ6X3RhcmdldC5nZXQoKV07CiB9CiAKIC0gKE5TTWV0aG9kU2lnbmF0dXJlICop
bWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6KFNFTClzZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxp
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlUHJvcGVydHlBcHBsaWVyLm1tCmluZGV4IDBmZDcwZDZmN2ZiZDg2NTdjMWE1MjFmZTExMjY2
MjA2NDQ4N2RmZGYuLmExYWUzMWY1MWRlNDExNjI5YWY4ZjQ0YjA3Y2M2MjI0ZDlkY2MzYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQpAQCAtNjksMTAgKzY5
LDEwIEBAIC0gKHZvaWQpX3dlYl9zZXRTdWJ2aWV3czooTlNBcnJheSAqKW5ld1N1YnZpZXdzCiAg
ICAgfQogCiAgICAgLy8gUmVtb3ZlIHZpZXdzIGF0IHRoZSBlbmQuCi0gICAgTlNNdXRhYmxlQXJy
YXkgKnZpZXdzVG9SZW1vdmUgPSBuaWw7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB2
aWV3c1RvUmVtb3ZlOwogICAgIGF1dG8gYXBwZW5kVmlld1RvUmVtb3ZlID0gWyZ2aWV3c1RvUmVt
b3ZlXShVSVZpZXcgKnZpZXcpIHsKICAgICAgICAgaWYgKCF2aWV3c1RvUmVtb3ZlKQotICAgICAg
ICAgICAgdmlld3NUb1JlbW92ZSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAg
ICAgICAgICAgdmlld3NUb1JlbW92ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOwogCiAgICAgICAgIFt2aWV3c1RvUmVtb3ZlIGFkZE9iamVjdDp2aWV3XTsKICAgICB9
OwpAQCAtODQsMTAgKzg0LDggQEAgLSAodm9pZClfd2ViX3NldFN1YnZpZXdzOihOU0FycmF5ICop
bmV3U3Vidmlld3MKICAgICAgICAgICAgIGFwcGVuZFZpZXdUb1JlbW92ZShzdWJ2aWV3KTsKICAg
ICB9CiAKLSAgICBpZiAodmlld3NUb1JlbW92ZSkgeworICAgIGlmICh2aWV3c1RvUmVtb3ZlKQog
ICAgICAgICBbdmlld3NUb1JlbW92ZSBtYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3RvcjpAc2VsZWN0
b3IocmVtb3ZlRnJvbVN1cGVydmlldyldOwotICAgICAgICBbdmlld3NUb1JlbW92ZSByZWxlYXNl
XTsKLSAgICB9CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lv
cy9XS1dlYlZpZXdJT1MubW0KaW5kZXggOGMxZmU5NjBjMWE2ZmNkYjQzYWEwMDgwN2NkZDk1ZWVj
ZWUyZWFkYS4uMGY2OTRiYThkY2Y2ZWZmMjVjMGQ3ZjY1ZjM3ZmM0M2M3OTVlNzM4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTU5
LDYgKzU5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNoZWNrcy5oPgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9HcmFw
aGljc1NlcnZpY2VzU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQpAQCAt
MzAzMiwxMSArMzAzMyw4IEBAIC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZp
ZXdDb29yZGluYXRlcyBpbnRvSW1hZ2VPZldpZHRoOihDR0Zsb2F0KWltCiB7CiAgICAgaWYgKF9k
eW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICE9IFdlYktpdDo6RHluYW1pY1ZpZXdwb3J0VXBkYXRl
TW9kZTo6Tm90UmVzaXppbmcpIHsKICAgICAgICAgLy8gRGVmZXIgc25hcHNob3R0aW5nIHVudGls
IGFmdGVyIHRoZSBjdXJyZW50IHJlc2l6ZSBjb21wbGV0ZXMuCi0gICAgICAgIHZvaWQgKF5jb3Bp
ZWRDb21wbGV0aW9uSGFuZGxlcikoQ0dJbWFnZVJlZikgPSBbY29tcGxldGlvbkhhbmRsZXIgY29w
eV07Ci0gICAgICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHJldGFpbmVkU2VsZiA9IHNlbGY7Ci0g
ICAgICAgIF9jYWxsYmFja3NEZWZlcnJlZER1cmluZ1Jlc2l6ZS5hcHBlbmQoW3JldGFpbmVkU2Vs
ZiwgcmVjdEluVmlld0Nvb3JkaW5hdGVzLCBpbWFnZVdpZHRoLCBjb3BpZWRDb21wbGV0aW9uSGFu
ZGxlcl0gewotICAgICAgICAgICAgW3JldGFpbmVkU2VsZiBfc25hcHNob3RSZWN0OnJlY3RJblZp
ZXdDb29yZGluYXRlcyBpbnRvSW1hZ2VPZldpZHRoOmltYWdlV2lkdGggY29tcGxldGlvbkhhbmRs
ZXI6Y29waWVkQ29tcGxldGlvbkhhbmRsZXJdOwotICAgICAgICAgICAgW2NvcGllZENvbXBsZXRp
b25IYW5kbGVyIHJlbGVhc2VdOworICAgICAgICBfY2FsbGJhY2tzRGVmZXJyZWREdXJpbmdSZXNp
emUuYXBwZW5kKFtyZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIHJlY3RJblZpZXdDb29y
ZGluYXRlcywgaW1hZ2VXaWR0aCwgY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgICAgICBbcmV0YWluZWRTZWxmIF9zbmFwc2hvdFJl
Y3Q6cmVjdEluVmlld0Nvb3JkaW5hdGVzIGludG9JbWFnZU9mV2lkdGg6aW1hZ2VXaWR0aCBjb21w
bGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlci5nZXQoKV07CiAgICAgICAgIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tCmlu
ZGV4IDE1MTIyOTA0NWYxM2U5Y2RkYmUwOTFlNjI3YmZhMWZlMjA2ZGUyODkuLjdmYjdmOGFhMzZl
MGU1ZmZiODNjNjIwMmM2Yjk0NGM4NDdmYWJiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQubW0KQEAgLTM3LDcgKzM3LDcgQEAgQHByaXZhdGUKICAgICBXZWFrUHRyPFdlYktp
dDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk+IF9jdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eTsKICAgICBXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sSUQgX2N1c3RvbVByb3Rv
Y29sSUQ7CiAgICAgTlNVUkxDYWNoZVN0b3JhZ2VQb2xpY3kgX3N0b3JhZ2VQb2xpY3k7Ci0gICAg
TlNVUkxDb25uZWN0aW9uICpfdXJsQ29ubmVjdGlvbjsKKyAgICBSZXRhaW5QdHI8TlNVUkxDb25u
ZWN0aW9uPiBfdXJsQ29ubmVjdGlvbjsKIH0KIC0gKGlkKWluaXRXaXRoTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHk6KFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkmKWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KFdlYktpdDo6
TGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCljdXN0b21Qcm90b2NvbElEIHJlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3Q7CiAtICh2b2lkKWNhbmNlbDsKQEAgLTU2LDcgKzU2LDcgQEAgLSAoaWQp
aW5pdFdpdGhMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooV2ViS2l0OjpMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmEKICAgICBfY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29s
SUQ7CiAgICAgX3N0b3JhZ2VQb2xpY3kgPSBOU1VSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWQ7CiAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBfdXJsQ29ubmVjdGlv
biA9IFtbTlNVUkxDb25uZWN0aW9uIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdCBkZWxl
Z2F0ZTpzZWxmIHN0YXJ0SW1tZWRpYXRlbHk6Tk9dOworICAgIF91cmxDb25uZWN0aW9uID0gYWRv
cHROUyhbW05TVVJMQ29ubmVjdGlvbiBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3QgZGVs
ZWdhdGU6c2VsZiBzdGFydEltbWVkaWF0ZWx5Ok5PXSk7CiAgICAgW191cmxDb25uZWN0aW9uIHNj
aGVkdWxlSW5SdW5Mb29wOltOU1J1bkxvb3AgbWFpblJ1bkxvb3BdIGZvck1vZGU6TlNSdW5Mb29w
Q29tbW9uTW9kZXNdOwogICAgIFtfdXJsQ29ubmVjdGlvbiBzdGFydF07CiAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC02Nyw3ICs2Nyw2IEBAIC0gKGlkKWluaXRXaXRo
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6KFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hCiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBbX3VybENvbm5lY3Rpb24gY2FuY2Vs
XTsKLSAgICBbX3VybENvbm5lY3Rpb24gcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwog
fQogCkBAIC0xNDUsMTEgKzE0NCwxMCBAQCB2b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudDo6c3RhcnRMb2FkaW5nKExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcgogICAgIGlm
ICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tDdXN0b21Qcm90b2NvbExvYWRl
ciAqbG9hZGVyID0gW1tXS0N1c3RvbVByb3RvY29sTG9hZGVyIGFsbG9jXSBpbml0V2l0aExlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Om1hbmFnZXIgY3VzdG9tUHJvdG9jb2xJRDpjdXN0
b21Qcm90b2NvbElEIHJlcXVlc3Q6cmVxdWVzdF07CisgICAgYXV0byBsb2FkZXIgPSBhZG9wdE5T
KFtbV0tDdXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eTptYW5hZ2VyIGN1c3RvbVByb3RvY29sSUQ6Y3VzdG9tUHJvdG9jb2xJ
RCByZXF1ZXN0OnJlcXVlc3RdKTsKICAgICBBU1NFUlQobG9hZGVyKTsKICAgICBBU1NFUlQoIW1f
bG9hZGVyTWFwLmNvbnRhaW5zKGN1c3RvbVByb3RvY29sSUQpKTsKLSAgICBtX2xvYWRlck1hcC5h
ZGQoY3VzdG9tUHJvdG9jb2xJRCwgbG9hZGVyKTsKLSAgICBbbG9hZGVyIHJlbGVhc2VdOworICAg
IG1fbG9hZGVyTWFwLmFkZChjdXN0b21Qcm90b2NvbElELCBXVEZNb3ZlKGxvYWRlcikpOwogfQog
CiB2b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcoTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCBXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3Rv
Y29sSUQgY3VzdG9tUHJvdG9jb2xJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5oCmlu
ZGV4IDMwMWJhYjExMDljZTdmZjY3NGEzNjIzYWIxY2ExOWE5MDY3MmVmNDUuLjE4NzE5MWZmNjA0
NWJkNTBmM2FmYzQzYjBjYTBiYWMzM2ViZWZkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdo
dFZpZXcuaApAQCAtMjksNyArMjksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JPdmVy
bGF5Lmg+CiAKIEBpbnRlcmZhY2UgV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3IDogVUlWaWV3IHsK
LSAgICBOU011dGFibGVBcnJheSAqX2xheWVyczsgLy8gQ0FTaGFwZUxheWVycy4KKyAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9sYXllcnM7IC8vIENBU2hhcGVMYXllcnMuCiB9CiAtICh2
b2lkKXVwZGF0ZTooY29uc3QgV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0Jilo
aWdobGlnaHQ7CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCmluZGV4IDZi
YWY2NmI5ZjNjMjJlNzM2MjgzM2M1M2U1NWVlYWM0NDYzMjNhZTkuLjQ0MTI0NDM3YzI0MzQyNWMz
ZWRkYjk5Mzc2Y2Q2MjI0ZjJmYzE2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3
Lm1tCkBAIC0zNywyMCArMzcsMTkgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENH
UmVjdClmcmFtZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFt
ZV0pKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIF9sYXllcnMgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XTsKKyAgICBfbGF5ZXJzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewog
ICAgIFtzZWxmIF9yZW1vdmVBbGxMYXllcnNdOwotICAgIFtfbGF5ZXJzIHJlbGVhc2VdOwogICAg
IFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClfcmVtb3ZlQWxsTGF5ZXJzCiB7Ci0gICAg
Zm9yIChDQVNoYXBlTGF5ZXIgKmxheWVyIGluIF9sYXllcnMpCisgICAgZm9yIChDQVNoYXBlTGF5
ZXIgKmxheWVyIGluIF9sYXllcnMuZ2V0KCkpCiAgICAgICAgIFtsYXllciByZW1vdmVGcm9tU3Vw
ZXJsYXllcl07CiAgICAgW19sYXllcnMgcmVtb3ZlQWxsT2JqZWN0c107CiB9CkBAIC02MywxMCAr
NjIsOSBAQCAtICh2b2lkKV9jcmVhdGVMYXllcnM6KE5TVUludGVnZXIpbnVtTGF5ZXJzCiAgICAg
W3NlbGYgX3JlbW92ZUFsbExheWVyc107CiAKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkg
PCBudW1MYXllcnM7ICsraSkgewotICAgICAgICBDQVNoYXBlTGF5ZXIgKmxheWVyID0gW1tDQVNo
YXBlTGF5ZXIgYWxsb2NdIGluaXRdOwotICAgICAgICBbX2xheWVycyBhZGRPYmplY3Q6bGF5ZXJd
OwotICAgICAgICBbc2VsZi5sYXllciBhZGRTdWJsYXllcjpsYXllcl07Ci0gICAgICAgIFtsYXll
ciByZWxlYXNlXTsKKyAgICAgICAgYXV0byBsYXllciA9IGFkb3B0TlMoW1tDQVNoYXBlTGF5ZXIg
YWxsb2NdIGluaXRdKTsKKyAgICAgICAgW19sYXllcnMgYWRkT2JqZWN0OmxheWVyLmdldCgpXTsK
KyAgICAgICAgW3NlbGYubGF5ZXIgYWRkU3VibGF5ZXI6bGF5ZXIuZ2V0KCldOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCA5MWYyNGVhZDE3NDQxMmE0NTZkN2M2
MmJjZDRjN2JlODZiMzE0YTMxLi4xMzJiNGU5Mjk1NjlhNTdiYjAzNzM4NmNiNzJiOTZiYzU0YTFl
ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjU4LDEyICsyNTgsOSBAQCB2
b2lkIFJlbW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyKGNvbnN0IFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpMYXllckNyZQogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VO
b2RlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVy
dGllcyYgcHJvcGVydGllcykKIHsKLSAgICBhdXRvIG1ha2VXaXRoTGF5ZXIgPSBbJl0gKFJldGFp
blB0cjxDQUxheWVyPiBsYXllcikgeworICAgIGF1dG8gbWFrZVdpdGhMYXllciA9IFsmXSAoUmV0
YWluUHRyPENBTGF5ZXI+JiYgbGF5ZXIpIHsKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVt
b3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKGxheWVyKSk7CiAg
ICAgfTsKLSAgICBhdXRvIG1ha2VBZG9wdGluZ0xheWVyID0gWyZdIChDQUxheWVyKiBsYXllcikg
ewotICAgICAgICByZXR1cm4gbWFrZVdpdGhMYXllcihhZG9wdE5TKGxheWVyKSk7Ci0gICAgfTsK
IAogICAgIHN3aXRjaCAocHJvcGVydGllcy50eXBlKSB7CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUxheWVyOgpAQCAtMjc3LDEzICsyNzQsMTMgQEAgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0
IFJlbW90ZUwKICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQ
bGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6Ci0gICAgICAgIHJldHVybiBtYWtlQWRvcHRpbmdM
YXllcihbW0NBVHJhbnNmb3JtTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VXaXRoTGF5ZXIoYWRvcHROUyhbW0NBVHJhbnNmb3JtTGF5ZXIgYWxsb2NdIGluaXRdKSk7CiAK
ICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQmFja2Ryb3BMYXllcjoKICAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyOgog
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVEYXJrU3lzdGVtQmFja2Ryb3BMYXll
cjoKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgICAgICByZXR1cm4gbWFrZUFkb3B0
aW5nTGF5ZXIoW1tDQUJhY2tkcm9wTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VXaXRoTGF5ZXIoYWRvcHROUyhbW0NBQmFja2Ryb3BMYXllciBhbGxvY10gaW5pdF0pKTsK
ICNlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gUmVt
b3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklE
KTsKQEAgLTI5Niw3ICsyOTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9k
ZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogICAgICAgICBy
ZXR1cm4gbWFrZVdpdGhMYXllcihbQ0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJ
RDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0SURdKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVTaGFwZUxheWVyOgotICAgICAgICByZXR1cm4gbWFrZUFkb3B0aW5nTGF5
ZXIoW1tDQVNoYXBlTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgcmV0dXJuIG1ha2VXaXRo
TGF5ZXIoYWRvcHROUyhbW0NBU2hhcGVMYXllciBhbGxvY10gaW5pdF0pKTsKICAgICAgICAgICAg
IAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXll
clRyZWVIb3N0SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCmluZGV4IGU0ODA4NWQyMjVkMjI5OWQ1MmI3
NDlkYmU3YWYzNjAzNTNkZTA1YTcuLjUxZTM5Njc3NDQ1ZjlhYjRiYWE1ZjlmMzA2NzM5NTM2YzY5
MzI2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KQEAgLTQw
LDEyICs0MCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3Qg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9w
ZXJ0aWVzKQogewotICAgIGF1dG8gbWFrZVdpdGhWaWV3ID0gWyZdIChSZXRhaW5QdHI8VUlWaWV3
PiB2aWV3KSB7CisgICAgYXV0byBtYWtlV2l0aFZpZXcgPSBbJl0gKFJldGFpblB0cjxVSVZpZXc+
JiYgdmlldykgewogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2Rl
Pihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUodmlldykpOwogICAgIH07Ci0gICAgYXV0byBt
YWtlQWRvcHRpbmdWaWV3ID0gWyZdIChVSVZpZXcqIHZpZXcpIHsKLSAgICAgICAgcmV0dXJuIG1h
a2VXaXRoVmlldyhhZG9wdE5TKHZpZXcpKTsKLSAgICB9OwogCiAgICAgc3dpdGNoIChwcm9wZXJ0
aWVzLnR5cGUpIHsKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXI6CkBA
IC01NCwyMiArNTEsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJl
bW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ0xheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6Ci0gICAgICAgIHJldHVybiBtYWtlQWRv
cHRpbmdWaWV3KFtbV0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKFtbV0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRd
KSk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGls
ZUxheWVyOgogICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBs
YWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVCYWNrZHJvcExheWVyOgotICAgICAgICByZXR1cm4gbWFrZUFkb3B0aW5nVmll
dyhbW1dLU2ltcGxlQmFja2Ryb3BWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgICAgIHJldHVybiBt
YWtlV2l0aFZpZXcoYWRvcHROUyhbW1dLU2ltcGxlQmFja2Ryb3BWaWV3IGFsbG9jXSBpbml0XSkp
OwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ry
b3BMYXllcjoKLSAgICAgICAgcmV0dXJuIG1ha2VBZG9wdGluZ1ZpZXcoW1tXS0JhY2tkcm9wVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIHByaXZhdGVTdHlsZTpfVUlCYWNrZHJv
cFZpZXdTdHlsZV9MaWdodF0pOworICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlMo
W1tXS0JhY2tkcm9wVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIHByaXZhdGVT
dHlsZTpfVUlCYWNrZHJvcFZpZXdTdHlsZV9MaWdodF0pKTsKIAogICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVEYXJrU3lzdGVtQmFja2Ryb3BMYXllcjoKLSAgICAgICAgcmV0dXJu
IG1ha2VBZG9wdGluZ1ZpZXcoW1tXS0JhY2tkcm9wVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RaZXJvIHByaXZhdGVTdHlsZTpfVUlCYWNrZHJvcFZpZXdTdHlsZV9EYXJrXSk7CisgICAg
ICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1dLQmFja2Ryb3BWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdFplcm8gcHJpdmF0ZVN0eWxlOl9VSUJhY2tkcm9wVmlld1N0eWxl
X0RhcmtdKSk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3Jt
TGF5ZXI6Ci0gICAgICAgIHJldHVybiBtYWtlQWRvcHRpbmdWaWV3KFtbV0tUcmFuc2Zvcm1WaWV3
IGFsbG9jXSBpbml0XSk7CisgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1dL
VHJhbnNmb3JtVmlldyBhbGxvY10gaW5pdF0pKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFW
UGxheWVyTGF5ZXI6CkBAIC04NCwxNiArODEsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxh
eWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoV1RGTW92ZSh2
aWV3KSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1ha2VBZG9wdGluZ1ZpZXcoW1tXS0Nv
bXBvc2l0aW5nVmlldyBhbGxvY10gaW5pdF0pOworICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3
KGFkb3B0TlMoW1tXS0NvbXBvc2l0aW5nVmlldyBhbGxvY10gaW5pdF0pKTsKIAogICAgIGNhc2Ug
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaGFwZUxheWVyOgotICAgICAgICByZXR1cm4gbWFr
ZUFkb3B0aW5nVmlldyhbW1dLU2hhcGVWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgICAgIHJldHVy
biBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1dLU2hhcGVWaWV3IGFsbG9jXSBpbml0XSkpOwogCiAg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyOgog
ICAgICAgICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpCi0gICAgICAgICAgICByZXR1cm4g
bWFrZUFkb3B0aW5nVmlldyhbW1dLQ2hpbGRTY3JvbGxWaWV3IGFsbG9jXSBpbml0XSk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlMoW1tXS0NoaWxkU2Nyb2xsVmlldyBh
bGxvY10gaW5pdF0pKTsKICAgICAgICAgLy8gVGhlIGRlYnVnIGluZGljYXRvciBwYXJlbnRzIHZp
ZXdzIHVuZGVyIGxheWVycywgd2hpY2ggY2FuIGNhdXNlIGNyYXNoZXMgd2l0aCBVSVNjcm9sbFZp
ZXcuCi0gICAgICAgIHJldHVybiBtYWtlQWRvcHRpbmdWaWV3KFtbVUlWaWV3IGFsbG9jXSBpbml0
XSk7CisgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1VJVmlldyBhbGxvY10g
aW5pdF0pKTsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KaW5kZXggY2VjODdjNThmMDExY2E3ZGE0OTkzY2YxNTNjMWQ2ZmU3MjQ1YTRi
OC4uNTA4YWFlMmZkNWQ5MDEzYjk0NTg1YjBiN2VkMjhiZGJlZDI5NTIzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCkBAIC00MjYxLDM5ICs0MjYxLDI4IEBAIC0gKHZvaWQpc2VsZWN0UG9zaXRpb25BdFBvaW50
OihDR1BvaW50KXBvaW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljCiAtICh2
b2lkKV9zZWxlY3RQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgc3RheWluZ1dpdGhpbkZv
Y3VzZWRFbGVtZW50OihCT09MKXN0YXlpbmdXaXRoaW5Gb2N1c2VkRWxlbWVudCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBfdXNpbmdH
ZXN0dXJlRm9yU2VsZWN0aW9uID0gWUVTOwotICAgIFVJV0tTZWxlY3Rpb25Db21wbGV0aW9uSGFu
ZGxlciBzZWxlY3Rpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldOwotICAgIFJl
dGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKIAotICAgIF9wYWdlLT5zZWxlY3RQ
b3NpdGlvbkF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCBzdGF5aW5nV2l0aGluRm9j
dXNlZEVsZW1lbnQsIFt2aWV3LCBzZWxlY3Rpb25IYW5kbGVyXSgpIHsKLSAgICAgICAgc2VsZWN0
aW9uSGFuZGxlcigpOworICAgIF9wYWdlLT5zZWxlY3RQb3NpdGlvbkF0UG9pbnQoV2ViQ29yZTo6
SW50UG9pbnQocG9pbnQpLCBzdGF5aW5nV2l0aGluRm9jdXNlZEVsZW1lbnQsIFt2aWV3ID0gcmV0
YWluUHRyKHNlbGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildKCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICB2aWV3
LT5fdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87Ci0gICAgICAgIFtzZWxlY3Rpb25IYW5k
bGVyIHJlbGVhc2VdOwogICAgIH0pOwogfQogCiAtICh2b2lkKXNlbGVjdFBvc2l0aW9uQXRCb3Vu
ZGFyeTooVUlUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkgaW5EaXJlY3Rpb246KFVJVGV4dERp
cmVjdGlvbilkaXJlY3Rpb24gZnJvbVBvaW50OihDR1BvaW50KXBvaW50IGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIF91c2luZ0dlc3R1
cmVGb3JTZWxlY3Rpb24gPSBZRVM7Ci0gICAgVUlXS1NlbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVy
IHNlbGVjdGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgY29weV07Ci0gICAgUmV0YWlu
UHRyPFdLQ29udGVudFZpZXc+IHZpZXcgPSBzZWxmOwotICAgIAotICAgIF9wYWdlLT5zZWxlY3RQ
b3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwg
dG9XS1RleHRHcmFudWxhcml0eShncmFudWxhcml0eSksIHRvV0tTZWxlY3Rpb25EaXJlY3Rpb24o
ZGlyZWN0aW9uKSwgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQsIFt2aWV3LCBzZWxlY3Rpb25IYW5k
bGVyXSgpIHsKLSAgICAgICAgc2VsZWN0aW9uSGFuZGxlcigpOworICAgIF9wYWdlLT5zZWxlY3RQ
b3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwg
dG9XS1RleHRHcmFudWxhcml0eShncmFudWxhcml0eSksIHRvV0tTZWxlY3Rpb25EaXJlY3Rpb24o
ZGlyZWN0aW9uKSwgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQsIFt2aWV3ID0gcmV0YWluUHRyKHNl
bGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
KCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICB2aWV3LT5fdXNpbmdH
ZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87Ci0gICAgICAgIFtzZWxlY3Rpb25IYW5kbGVyIHJlbGVh
c2VdOwogICAgIH0pOwogfQogCiAtICh2b2lkKW1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5OihVSVRl
eHRHcmFudWxhcml0eSlncmFudWxhcml0eSBpbkRpcmVjdGlvbjooVUlUZXh0RGlyZWN0aW9uKWRp
cmVjdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIKIHsKICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gWUVTOwotICAgIFVJV0tTZWxl
Y3Rpb25Db21wbGV0aW9uSGFuZGxlciBzZWxlY3Rpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5k
bGVyIGNvcHldOwotICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKLSAg
ICAKLSAgICBfcGFnZS0+bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHRvV0tU
ZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpLCB0b1dLU2VsZWN0aW9uRGlyZWN0aW9uKGRpcmVj
dGlvbiksIFt2aWV3LCBzZWxlY3Rpb25IYW5kbGVyXSB7Ci0gICAgICAgIHNlbGVjdGlvbkhhbmRs
ZXIoKTsKKyAgICBfcGFnZS0+bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHRv
V0tUZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpLCB0b1dLU2VsZWN0aW9uRGlyZWN0aW9uKGRp
cmVjdGlvbiksIFt2aWV3ID0gcmV0YWluUHRyKHNlbGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICAgICAgdmlldy0+X3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IE5POwotICAg
ICAgICBbc2VsZWN0aW9uSGFuZGxlciByZWxlYXNlXTsKICAgICB9KTsKIH0KIApAQCAtNDMyNSwx
MiArNDMxNCw5IEBAIC0gKHZvaWQpdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50OihDR1Bv
aW50KXBvaW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheCiAKIC0gKHZvaWQpdXBkYXRlU2Vs
ZWN0aW9uV2l0aEV4dGVudFBvaW50OihDR1BvaW50KXBvaW50IHdpdGhCb3VuZGFyeTooVUlUZXh0
R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wg
c2VsZWN0aW9uRW5kSXNNb3ZpbmcpKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgVUlXS1NlbGVj
dGlvbldpdGhEaXJlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBzZWxlY3Rpb25IYW5kbGVyID0gW2Nv
bXBsZXRpb25IYW5kbGVyIGNvcHldOwotICAgIAogICAgICsrX3N1cHByZXNzTm9uRWRpdGFibGVT
aW5nbGVUYXBUZXh0SW50ZXJhY3Rpb25Db3VudDsKLSAgICBfcGFnZS0+dXBkYXRlU2VsZWN0aW9u
V2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b1dL
VGV4dEdyYW51bGFyaXR5KGdyYW51bGFyaXR5KSwgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQsIFtz
ZWxlY3Rpb25IYW5kbGVyLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoYm9vbCBl
bmRJc01vdmluZykgewotICAgICAgICBzZWxlY3Rpb25IYW5kbGVyKGVuZElzTW92aW5nKTsKLSAg
ICAgICAgW3NlbGVjdGlvbkhhbmRsZXIgcmVsZWFzZV07CisgICAgX3BhZ2UtPnVwZGF0ZVNlbGVj
dGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwg
dG9XS1RleHRHcmFudWxhcml0eShncmFudWxhcml0eSksIHNlbGYuX2hhc0ZvY3VzZWRFbGVtZW50
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpLCBw
cm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoYm9vbCBlbmRJc01vdmluZykgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihlbmRJc01vdmluZyk7CiAgICAgICAgIC0tcHJvdGVjdGVk
U2VsZi0+X3N1cHByZXNzTm9uRWRpdGFibGVTaW5nbGVUYXBUZXh0SW50ZXJhY3Rpb25Db3VudDsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Nj
cm9sbFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1t
CmluZGV4IDUyOGI4MGMyN2VhZWYzYTNkMjU2NjVmNGE3YTkwMmM3NjM1MmVkYzAuLjRmMTdlYzY3
NmMwNTJhYWVmMDBjZjU2MjljNmE5N2I0OWY2YWU1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQpAQCAtMTI1LDcgKzEyNSw3IEBAIEBlbmQKIAogQGlt
cGxlbWVudGF0aW9uIFdLU2Nyb2xsVmlldyB7CiAgICAgV2Vha09iakNQdHI8aWQgPFVJU2Nyb2xs
Vmlld0RlbGVnYXRlPj4gX2V4dGVybmFsRGVsZWdhdGU7Ci0gICAgV0tTY3JvbGxWaWV3RGVsZWdh
dGVGb3J3YXJkZXIgKl9kZWxlZ2F0ZUZvcndhcmRlcjsKKyAgICBSZXRhaW5QdHI8V0tTY3JvbGxW
aWV3RGVsZWdhdGVGb3J3YXJkZXI+IF9kZWxlZ2F0ZUZvcndhcmRlcjsKIAogLy8gRklYTUU6IExp
a2VseSB3ZSBjYW4gcmVtb3ZlIHRoaXMgc3BlY2lhbCBjYXNlIGZvciB3YXRjaE9TIGFuZCB0dk9T
LgogI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKQEAgLTIwNSwy
MyArMjA1LDIwIEBAIC0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6
ZXIgKilnZXN0dXJlUmVjb2duaXplciBzaG91bGRCZVJlcXVpCiAKIC0gKHZvaWQpX3VwZGF0ZURl
bGVnYXRlCiB7Ci0gICAgV0tTY3JvbGxWaWV3RGVsZWdhdGVGb3J3YXJkZXIgKm9sZEZvcndhcmRl
ciA9IF9kZWxlZ2F0ZUZvcndhcmRlcjsKLSAgICBfZGVsZWdhdGVGb3J3YXJkZXIgPSBuaWw7Cisg
ICAgYXV0byBvbGRGb3J3YXJkZXIgPSBzdGQ6OmV4Y2hhbmdlKF9kZWxlZ2F0ZUZvcndhcmRlciwg
bmlsKTsKICAgICBhdXRvIGV4dGVybmFsRGVsZWdhdGUgPSBfZXh0ZXJuYWxEZWxlZ2F0ZS5nZXQo
KTsKICAgICBpZiAoIWV4dGVybmFsRGVsZWdhdGUpCiAgICAgICAgIFtzdXBlciBzZXREZWxlZ2F0
ZTpfaW50ZXJuYWxEZWxlZ2F0ZV07CiAgICAgZWxzZSBpZiAoIV9pbnRlcm5hbERlbGVnYXRlKQog
ICAgICAgICBbc3VwZXIgc2V0RGVsZWdhdGU6ZXh0ZXJuYWxEZWxlZ2F0ZS5nZXQoKV07CiAgICAg
ZWxzZSB7Ci0gICAgICAgIF9kZWxlZ2F0ZUZvcndhcmRlciA9IFtbV0tTY3JvbGxWaWV3RGVsZWdh
dGVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoSW50ZXJuYWxEZWxlZ2F0ZTpfaW50ZXJuYWxEZWxl
Z2F0ZSBleHRlcm5hbERlbGVnYXRlOmV4dGVybmFsRGVsZWdhdGUuZ2V0KCldOworICAgICAgICBf
ZGVsZWdhdGVGb3J3YXJkZXIgPSBhZG9wdE5TKFtbV0tTY3JvbGxWaWV3RGVsZWdhdGVGb3J3YXJk
ZXIgYWxsb2NdIGluaXRXaXRoSW50ZXJuYWxEZWxlZ2F0ZTpfaW50ZXJuYWxEZWxlZ2F0ZSBleHRl
cm5hbERlbGVnYXRlOmV4dGVybmFsRGVsZWdhdGUuZ2V0KCldKTsKICAgICAgICAgW3N1cGVyIHNl
dERlbGVnYXRlOl9kZWxlZ2F0ZUZvcndhcmRlcl07CiAgICAgfQotICAgIFtvbGRGb3J3YXJkZXIg
cmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIFtfZGVsZWdhdGVGb3J3YXJk
ZXIgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCmlu
ZGV4IDU3NzE0YjgzNTVlZGQ0NzEyZTZlMjgyZmE4N2VmZTJlZjRjODlhNDIuLjlhNWMwNzc1MTFm
YTAzNmY4Mjc2NjlhYTNhMTRjYTQ1YzQyYWZiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCkBAIC00MDEs
MjYgKzQwMSwyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3
ICopdmlldyBoYXNHcm91cHM6KEJPT0wpaGFzR3JvdXBzCiAKICAgICBfdGFibGVWaWV3Q29udHJv
bGxlciA9IGFkb3B0TlMoW1tXS1NlbGVjdFRhYmxlVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRX
aXRoVmlldzp2aWV3IGhhc0dyb3VwczpoYXNHcm91cHNdKTsKICAgICBbX3RhYmxlVmlld0NvbnRy
b2xsZXIgc2V0UG9wb3ZlcjpzZWxmXTsKLSAgICBVSVZpZXdDb250cm9sbGVyICpwb3BvdmVyVmll
d0NvbnRyb2xsZXIgPSBfdGFibGVWaWV3Q29udHJvbGxlci5nZXQoKTsKLSAgICBVSU5hdmlnYXRp
b25Db250cm9sbGVyICpuYXZDb250cm9sbGVyID0gbmlsOworICAgIFJldGFpblB0cjxVSVZpZXdD
b250cm9sbGVyPiBwb3BvdmVyVmlld0NvbnRyb2xsZXIgPSBfdGFibGVWaWV3Q29udHJvbGxlci5n
ZXQoKTsKICAgICBCT09MIG5lZWRzTmF2aWdhdGlvbkNvbnRyb2xsZXIgPSAhdmlldy5mb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uLnRpdGxlLmlzRW1wdHkoKTsKLSAgICBpZiAobmVlZHNOYXZpZ2F0
aW9uQ29udHJvbGxlcikgewotICAgICAgICBuYXZDb250cm9sbGVyID0gW1tVSU5hdmlnYXRpb25D
b250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFJvb3RWaWV3Q29udHJvbGxlcjpfdGFibGVWaWV3Q29u
dHJvbGxlci5nZXQoKV07Ci0gICAgICAgIHBvcG92ZXJWaWV3Q29udHJvbGxlciA9IG5hdkNvbnRy
b2xsZXI7Ci0gICAgfQorICAgIGlmIChuZWVkc05hdmlnYXRpb25Db250cm9sbGVyKQorICAgICAg
ICBwb3BvdmVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlOYXZpZ2F0aW9uQ29udHJvbGxl
ciBhbGxvY10gaW5pdFdpdGhSb290Vmlld0NvbnRyb2xsZXI6X3RhYmxlVmlld0NvbnRyb2xsZXIu
Z2V0KCldKTsKICAgICAKICAgICBDR1NpemUgcG9wb3ZlclNpemUgPSBbX3RhYmxlVmlld0NvbnRy
b2xsZXIuZ2V0KCkudGFibGVWaWV3IHNpemVUaGF0Rml0czpDR1NpemVNYWtlKDMyMCwgQ0dGTE9B
VF9NQVgpXTsKICAgICBpZiAobmVlZHNOYXZpZ2F0aW9uQ29udHJvbGxlcikKICAgICAgICAgWyhV
SU5hdmlnYXRpb25Db250cm9sbGVyICopcG9wb3ZlclZpZXdDb250cm9sbGVyIHRvcFZpZXdDb250
cm9sbGVyXS5wcmVmZXJyZWRDb250ZW50U2l6ZSA9IHBvcG92ZXJTaXplOwogICAgIGVsc2UKLSAg
ICAgICAgcG9wb3ZlclZpZXdDb250cm9sbGVyLnByZWZlcnJlZENvbnRlbnRTaXplID0gcG9wb3Zl
clNpemU7CisgICAgICAgIFtwb3BvdmVyVmlld0NvbnRyb2xsZXIgc2V0UHJlZmVycmVkQ29udGVu
dFNpemU6IHBvcG92ZXJTaXplXTsKICAgICAKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgIHNlbGYucG9wb3ZlckNvbnRyb2xsZXIgPSBbW1tVSVBvcG92ZXJDb250
cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjpwb3BvdmVyVmlld0Nv
bnRyb2xsZXJdIGF1dG9yZWxlYXNlXTsKKyAgICBzZWxmLnBvcG92ZXJDb250cm9sbGVyID0gW1tb
VUlQb3BvdmVyQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6
cG9wb3ZlclZpZXdDb250cm9sbGVyLmdldCgpXSBhdXRvcmVsZWFzZV07CiAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKLSAgICBbbmF2Q29udHJvbGxlciByZWxlYXNlXTsK
LQogI2lmICFVU0UoVUlLSVRfS0VZQk9BUkRfQURESVRJT05TKQogICAgIFtbVUlLZXlib2FyZElt
cGwgc2hhcmVkSW5zdGFuY2VdIHNldERlbGVnYXRlOl90YWJsZVZpZXdDb250cm9sbGVyLmdldCgp
XTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4
dElucHV0V2luZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
S1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW0KaW5kZXggMzUyNzVkZjhmZDdjY2M0MDVjNjcz
MmQxYzg4ZmMxOTQ3Y2UxYTYyZi4uMGY4NmE1NmVhYWE0MDg0ZWU3YmNmOWRjOGQ4YzZkMDMzMzVk
NGZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dElucHV0
V2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tU
ZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tCkBAIC00Niw3ICs0Niw3IEBAIC0gKE5TQXJyYXkg
Kil2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0CiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tUZXh0
SW5wdXRQYW5lbCA6IFdlYlBhbmVsIHsKLSAgICBOU1RleHRWaWV3ICpfaW5wdXRUZXh0VmlldzsK
KyAgICBSZXRhaW5QdHI8TlNUZXh0Vmlldz4gX2lucHV0VGV4dFZpZXc7CiB9CiAKIC0gKE5TVGV4
dElucHV0Q29udGV4dCAqKV9pbnB1dENvbnRleHQ7CkBAIC02NSw4ICs2NSw2IEBAIC0gKHZvaWQp
ZGVhbGxvYwogewogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVt
b3ZlT2JzZXJ2ZXI6c2VsZl07CiAgICAgCi0gICAgW19pbnB1dFRleHRWaWV3IHJlbGVhc2VdOwot
ICAgIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtODIsMTMgKzgwLDEyIEBAIC0gKGlk
KWluaXQKICAgICAgCiAgICAgW3NlbGYgc2V0RnJhbWU6ZnJhbWUgZGlzcGxheTpOT107CiAgICAg
ICAgIAotICAgIF9pbnB1dFRleHRWaWV3ID0gW1tXS1RleHRJbnB1dFZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6WyhOU1ZpZXcgKilzZWxmLmNvbnRlbnRWaWV3IGZyYW1lXV07Ci0gICAgX2lucHV0
VGV4dFZpZXcuYXV0b3Jlc2l6aW5nTWFzayA9IE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hl
aWdodFNpemFibGUgfCBOU1ZpZXdNYXhYTWFyZ2luIHwgTlNWaWV3TWluWE1hcmdpbiB8IE5TVmll
d01heFlNYXJnaW4gfCBOU1ZpZXdNaW5ZTWFyZ2luOworICAgIF9pbnB1dFRleHRWaWV3ID0gYWRv
cHROUyhbW1dLVGV4dElucHV0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbKE5TVmlldyAqKXNl
bGYuY29udGVudFZpZXcgZnJhbWVdXSk7CisgICAgW19pbnB1dFRleHRWaWV3IHNldEF1dG9yZXNp
emluZ01hc2s6IE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUgfCBOU1Zp
ZXdNYXhYTWFyZ2luIHwgTlNWaWV3TWluWE1hcmdpbiB8IE5TVmlld01heFlNYXJnaW4gfCBOU1Zp
ZXdNaW5ZTWFyZ2luXTsKICAgICAgICAgCi0gICAgTlNTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0g
W1tOU1Njcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6WyhOU1ZpZXcgKilzZWxmLmNvbnRl
bnRWaWV3IGZyYW1lXV07Ci0gICAgc2Nyb2xsVmlldy5kb2N1bWVudFZpZXcgPSBfaW5wdXRUZXh0
VmlldzsKLSAgICBzZWxmLmNvbnRlbnRWaWV3ID0gc2Nyb2xsVmlldzsKLSAgICBbc2Nyb2xsVmll
dyByZWxlYXNlXTsKKyAgICBhdXRvIHNjcm9sbFZpZXcgPSBhZG9wdE5TKFtbTlNTY3JvbGxWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOlsoTlNWaWV3ICopc2VsZi5jb250ZW50VmlldyBmcmFtZV1d
KTsKKyAgICBbc2Nyb2xsVmlldyBzZXREb2N1bWVudFZpZXc6IF9pbnB1dFRleHRWaWV3LmdldCgp
XTsKKyAgICBzZWxmLmNvbnRlbnRWaWV3ID0gc2Nyb2xsVmlldy5nZXQoKTsKICAgICAgICAgCiAg
ICAgW3NlbGYgc2V0RmxvYXRpbmdQYW5lbDpZRVNdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW0KaW5kZXggYWM3MmVhY2U2YzFjZmUwMTQx
M2Y2NTU0NzhjMzc1N2Y2MjYzNmE4Yy4uOWYwZTIzOWY0MjVlYjdjZTk1MmRlNTQxNzZmYzA0ZjA0
MGZlMWYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9y
UGlja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBp
Y2tlck1hYy5tbQpAQCAtMTM4LDEwICsxMzgsOSBAQCArIChOU1BvcG92ZXIgKilfY29sb3JQb3Bv
dmVyQ3JlYXRlSWZOZWNlc3Nhcnk6KEJPT0wpZm9yY2VDcmVhdGlvbgogICAgICAgICBbcG9wb3Zl
ciBfc2V0UmVxdWlyZXNDb3JyZWN0Q29udGVudEFwcGVhcmFuY2U6WUVTXTsKICAgICAgICAgcG9w
b3Zlci5iZWhhdmlvciA9IE5TUG9wb3ZlckJlaGF2aW9yVHJhbnNpZW50OwogCi0gICAgICAgIE5T
Q29sb3JQb3BvdmVyQ29udHJvbGxlciAqY29udHJvbGxlciA9IFtbTlNDbGFzc0Zyb21TdHJpbmco
QCJOU0NvbG9yUG9wb3ZlckNvbnRyb2xsZXIiKSBhbGxvY10gaW5pdF07Ci0gICAgICAgIHBvcG92
ZXIuY29udGVudFZpZXdDb250cm9sbGVyID0gY29udHJvbGxlcjsKLSAgICAgICAgY29udHJvbGxl
ci5wb3BvdmVyID0gcG9wb3ZlcjsKLSAgICAgICAgW2NvbnRyb2xsZXIgcmVsZWFzZV07CisgICAg
ICAgIGF1dG8gY29udHJvbGxlciA9IGFkb3B0TlMoW1tOU0NsYXNzRnJvbVN0cmluZyhAIk5TQ29s
b3JQb3BvdmVyQ29udHJvbGxlciIpIGFsbG9jXSBpbml0XSk7CisgICAgICAgIHBvcG92ZXIuY29u
dGVudFZpZXdDb250cm9sbGVyID0gY29udHJvbGxlci5nZXQoKTsKKyAgICAgICAgW2NvbnRyb2xs
ZXIgc2V0UG9wb3ZlcjogcG9wb3Zlcl07CiAKICAgICAgICAgY29sb3JQb3BvdmVyID0gcG9wb3Zl
cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCmlu
ZGV4IGM4ZDhhMjNjYWMyMDA3NzE5OWE3NDY3MTMwNDIzMmE1ODIxMjhkMzEuLmY4MWE2YzdiM2Ni
ZGY3MGQ0N2EwNTAyMmM1MTMyMmNkZTAzNTQ0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0QmFzZS5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdlYlBhZ2U7CiBA
aW50ZXJmYWNlIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIDogTlNPYmplY3Qgewog
ICAgIE5ha2VkUHRyPFdlYktpdDo6V2ViUGFnZT4gbV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIGlkIG1fcGFyZW50OworICAgIFJldGFpblB0cjxpZD4g
bV9wYXJlbnQ7CiAgICAgYm9vbCBtX2hhc01haW5GcmFtZVBsdWdpbjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCmluZGV4IDdkYTU5M2UyMDBkNDRm
MGZjZjc4OTMzODZlYjVhNzU2NDRkODZjNmYuLmFhM2JlYzBkMDZjODhjYjVjN2NlMTlhMzIzOGU5
N2RlMGRhNDBjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJh
c2UubW0KQEAgLTEzMSwxMCArMTMxLDggQEAgLSAodm9pZClzZXRIYXNNYWluRnJhbWVQbHVnaW46
KGJvb2wpaGFzUGx1Z2luCiAtICh2b2lkKXNldFJlbW90ZVBhcmVudDooaWQpcGFyZW50CiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAocGFyZW50ICE9IG1fcGFyZW50KSB7
Ci0gICAgICAgIFttX3BhcmVudCByZWxlYXNlXTsKLSAgICAgICAgbV9wYXJlbnQgPSBbcGFyZW50
IHJldGFpbl07Ci0gICAgfQorICAgIGlmIChwYXJlbnQgIT0gbV9wYXJlbnQpCisgICAgICAgIG1f
cGFyZW50ID0gcGFyZW50OwogfQogCiAtIChpZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbQppbmRleCBmYTM2
NmQ4NjY0YWY1MjUwNDQ1MWVhODRmOGQ0OTI3ZWMwY2IwMTU5Li42ZGFiY2ZjMjc1NGU1YWQzYTQx
OTE4MWMyYTYxNmNkODBhYjBkNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdE1hYy5tbQpAQCAtNjMsNyArNjMsNiBAQCBAaW1wbGVtZW50YXRpb24gV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdAogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgTlNBY2Nlc3NpYmls
aXR5VW5yZWdpc3RlclVuaXF1ZUlkRm9yVUlFbGVtZW50KHNlbGYpOwotICAgIFttX3BhcmVudCBy
ZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTE2MSw3ICsxNjAsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOwogICAgIAogICAgIGlmIChbYXR0cmli
dXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGVdKQotICAg
ICAgICByZXR1cm4gbV9wYXJlbnQ7CisgICAgICAgIHJldHVybiBtX3BhcmVudC5nZXQoKTsKICAg
ICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5V2lu
ZG93QXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFttX3BhcmVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElP
Uy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudElPUy5tbQppbmRleCA3NTA4MWQxZjU1MTY4Y2MyYTEzNTNhZWNkNmQ5OTc0NWZlNjhmMzBk
Li4wNjg3MDMyNjZmZGI3NTY3M2IxNDBhMDE1YmFhNDk1NDVlYWJiNzNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLm1tCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6
OnJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJiBjaG9vc2VyKQogewogICAgIGF1dG8m
IHNldHRpbmdzID0gY2hvb3Nlci5zZXR0aW5ncygpOwogICAgIEJPT0wgYWxsb3dNdWx0aXBsZUZp
bGVzID0gc2V0dGluZ3MuYWxsb3dzTXVsdGlwbGVGaWxlczsKLSAgICBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lciAqbGlzdGVuZXIgPSBbW1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGFsbG9j
XSBpbml0V2l0aENob29zZXI6Y2hvb3Nlcl07CisgICAgYXV0byBsaXN0ZW5lciA9IGFkb3B0TlMo
W1tXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDaG9vc2VyOmNob29z
ZXJdKTsKIAogICAgIFdlYk1lZGlhQ2FwdHVyZVR5cGUgY2FwdHVyZVR5cGUgPSBXZWJNZWRpYUNh
cHR1cmVUeXBlTm9uZTsKICNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKQEAgLTE0NiwxMyArMTQ2
LDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50SU9TOjpydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxl
Q2hvb3NlciYgY2hvb3NlcikKICAgICB9OwogCiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgp
KSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgbGlzdGVuZXIgPSBy
ZXRhaW5QdHIobGlzdGVuZXIpLCBjb25maWd1cmF0aW9uID0gcmV0YWluUHRyKGNvbmZpZ3VyYXRp
b24pXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgbGlzdGVuZXIg
PSBXVEZNb3ZlKGxpc3RlbmVyKSwgY29uZmlndXJhdGlvbiA9IHJldGFpblB0cihjb25maWd1cmF0
aW9uKV0gewogICAgICAgICAgICAgW1t3ZWJWaWV3KCkgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJd
IHdlYlZpZXc6d2ViVmlldygpIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlz
dGVuZXI6bGlzdGVuZXIuZ2V0KCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXTsK
ICAgICAgICAgfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIFtbd2ViVmlldygpIF9VSUtpdERlbGVn
YXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcoKSBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9u
V2l0aFJlc3VsdExpc3RlbmVyOmxpc3RlbmVyIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07
Ci0KLSAgICBbbGlzdGVuZXIgcmVsZWFzZV07CisgICAgICAgIFtbd2ViVmlldygpIF9VSUtpdERl
bGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcoKSBydW5PcGVuUGFuZWxGb3JGaWxlQnV0
dG9uV2l0aFJlc3VsdExpc3RlbmVyOmxpc3RlbmVyLmdldCgpIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbl07CiB9CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50SU9TOjpzaG93U2hhcmVTaGVldChT
aGFyZURhdGFXaXRoUGFyc2VkVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQpp
bmRleCBiZTVkNjQ3ZmRkYmIwYmNjZWM1MzE3YzI3NzkxNTg2NzEyNjM4Yzg4Li44YWUzMmFhNGUx
YjdiNWQyMjQ1ZjhiZTg0NDRmZmUxMDUwZmQxMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRp
YyBDR0NvbG9yUmVmIGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUoQ0dGbG9hdCB3aGl0ZSwg
Q0dGbG9hdCBhbHBoYSkKIEBpbXBsZW1lbnRhdGlvbiBXZWJQREZWaWV3IHsKICAgICBCT09MIGRh
dGFTb3VyY2VIYXNCZWVuU2V0OwogICAgIENHUERGRG9jdW1lbnRSZWYgX1BERkRvY3VtZW50Owot
ICAgIE5TU3RyaW5nICpfdGl0bGU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfdGl0bGU7CiAg
ICAgQ0dSZWN0ICpfcGFnZVJlY3RzOwogfQogCkBAIC0xMDksNyArMTA5LDYgQEAgLSAodm9pZClk
ZWFsbG9jCiAgICAgaWYgKF9QREZEb2N1bWVudCAhPSBOVUxMKQogICAgICAgICBDR1BERkRvY3Vt
ZW50UmVsZWFzZShfUERGRG9jdW1lbnQpOwogICAgIGZyZWUoX3BhZ2VSZWN0cyk7Ci0gICAgW190
aXRsZSByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTIwMyw3ICsyMDIs
NyBAQCAtICh2b2lkKXNldERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmICghX3RpdGxlKQotICAgICAgICBfdGl0bGUgPSBbW1tb
ZGF0YVNvdXJjZSByZXF1ZXN0XSBVUkxdIGxhc3RQYXRoQ29tcG9uZW50XSBjb3B5XTsKKyAgICAg
ICAgX3RpdGxlID0gYWRvcHROUyhbW1tbZGF0YVNvdXJjZSByZXF1ZXN0XSBVUkxdIGxhc3RQYXRo
Q29tcG9uZW50XSBjb3B5XSk7CiAKICAgICBXQUtWaWV3ICogc3VwZXJ2aWV3ID0gW3NlbGYgc3Vw
ZXJ2aWV3XTsKICAgICAKQEAgLTI5Niw4ICsyOTUsNyBAQCAtICh2b2lkKV9jaGVja1BERlRpdGxl
CiAgICAgICAgIHRpdGxlID0gWyhOU1N0cmluZyAqKUNHUERGU3RyaW5nQ29weVRleHRTdHJpbmco
dmFsdWUpIGF1dG9yZWxlYXNlXTsKIAogICAgIGlmIChbdGl0bGUgbGVuZ3RoXSkgewotICAgICAg
ICBbX3RpdGxlIHJlbGVhc2VdOwotICAgICAgICBfdGl0bGUgPSBbdGl0bGUgY29weV07CisgICAg
ICAgIF90aXRsZSA9IGFkb3B0TlMoW3RpdGxlIGNvcHldKTsKICAgICAgICAgY29yZShbc2VsZiBf
ZnJhbWVdKS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoeyB0aXRs
ZSwgVGV4dERpcmVjdGlvbjo6TFRSIH0pOwogICAgIH0KIH0KQEAgLTM0NCw3ICszNDIsNyBAQCAt
IChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiAKIC0gKE5TU3RyaW5nICopdGl0bGUKIHsKLSAg
ICByZXR1cm4gX3RpdGxlOworICAgIHJldHVybiBfdGl0bGUuZ2V0KCk7CiB9CiAKIC0gKHVuc2ln
bmVkKXBhZ2VOdW1iZXJGb3JSZWN0OihDR1JlY3QpcmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCBm
ZTQ0OTY2YjA5MTJlOTRhZTRjZGQ1NmVhYTc0NTY5M2I2MTQxYTI4Li42OTZkZjViNjkxMTNmMTUy
ODk5NWRkMmQzYTIwMjdjNTViMzRhNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQpAQCAtMzI4LDE5ICsz
MjgsMTcgQEAgLSAodm9pZClfdXBkYXRlVGl0bGVGb3JEb2N1bWVudElmQXZhaWxhYmxlCiAgICAg
aWYgKCFfZG9jdW1lbnQgfHwgIUNHUERGRG9jdW1lbnRJc1VubG9ja2VkKF9kb2N1bWVudCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIE5TU3RyaW5nICp0aXRsZSA9IG5pbDsKKyAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IHRpdGxlOwogCiAgICAgQ0dQREZEaWN0aW9uYXJ5UmVmIGluZm8gPSBDR1BE
RkRvY3VtZW50R2V0SW5mbyhfZG9jdW1lbnQpOwogICAgIENHUERGU3RyaW5nUmVmIHZhbHVlOwog
ICAgIGlmIChDR1BERkRpY3Rpb25hcnlHZXRTdHJpbmcoaW5mbywgIlRpdGxlIiwgJnZhbHVlKSkK
LSAgICAgICAgdGl0bGUgPSAoTlNTdHJpbmcgKilDR1BERlN0cmluZ0NvcHlUZXh0U3RyaW5nKHZh
bHVlKTsKKyAgICAgICAgdGl0bGUgPSBhZG9wdE5TKChOU1N0cmluZyAqKUNHUERGU3RyaW5nQ29w
eVRleHRTdHJpbmcodmFsdWUpKTsKIAogICAgIGlmIChbdGl0bGUgbGVuZ3RoXSkgewotICAgICAg
ICBbc2VsZiBzZXRUaXRsZTp0aXRsZV07Ci0gICAgICAgIFtbc2VsZiBfZnJhbWVdIF9kaXNwYXRj
aERpZFJlY2VpdmVUaXRsZTp0aXRsZV07CisgICAgICAgIFtzZWxmIHNldFRpdGxlOnRpdGxlLmdl
dCgpXTsKKyAgICAgICAgW1tzZWxmIF9mcmFtZV0gX2Rpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlOnRp
dGxlLmdldCgpXTsKICAgICB9Ci0KLSAgICBbdGl0bGUgcmVsZWFzZV07CiB9CiAKIC0gKENHUmVj
dClfZ2V0UERGUGFnZUJvdW5kczooQ0dQREZQYWdlUmVmKXBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGI1MjA2OGQ1YzVm
MzUxNjMwYmNjZTkxY2QyNDU3NWY1MWIzYzAyZWMuLjhjYWY3NThiOGE2NTBlOGJmYzM4ZTcxMGRl
NDdmNTJhOGM4MTU0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMTgzLDkgKzE4Myw4IEBAIC0gKE5TQXJyYXkgKilhYnNv
bHV0ZVF1YWRzCiAgICAgfQogCiAgICAgaWYgKCFbcXVhZHMgY291bnRdKSB7Ci0gICAgICAgIFdL
UXVhZE9iamVjdCogcXVhZE9iamVjdCA9IFtbV0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1
YWQ6W3NlbGYgYWJzb2x1dGVRdWFkXV07Ci0gICAgICAgIHF1YWRzID0gQFtxdWFkT2JqZWN0XTsK
LSAgICAgICAgW3F1YWRPYmplY3QgcmVsZWFzZV07CisgICAgICAgIGF1dG8gcXVhZE9iamVjdCA9
IGFkb3B0TlMoW1tXS1F1YWRPYmplY3QgYWxsb2NdIGluaXRXaXRoUXVhZDpbc2VsZiBhYnNvbHV0
ZVF1YWRdXSk7CisgICAgICAgIHF1YWRzID0gQFtxdWFkT2JqZWN0LmdldCgpXTsKICAgICB9CiAK
ICAgICByZXR1cm4gcXVhZHM7CkBAIC0zNjAsOSArMzU5LDggQEAgLSAoTlNBcnJheSAqKWJvdW5k
aW5nQm94ZXNXaXRoT3duZXI6KERPTU5vZGUgKilvd25lcgogCiAtIChOU0FycmF5ICopYWJzb2x1
dGVRdWFkc1dpdGhPd25lcjooRE9NTm9kZSAqKW93bmVyCiB7Ci0gICAgV0tRdWFkT2JqZWN0ICpx
dWFkT2JqZWN0ID0gW1tXS1F1YWRPYmplY3QgYWxsb2NdIGluaXRXaXRoUXVhZDpbc2VsZiBhYnNv
bHV0ZVF1YWRXaXRoT3duZXI6b3duZXJdXTsKLSAgICBOU0FycmF5ICpxdWFkQXJyYXkgPSBAW3F1
YWRPYmplY3RdOwotICAgIFtxdWFkT2JqZWN0IHJlbGVhc2VdOworICAgIGF1dG8gcXVhZE9iamVj
dCA9IGFkb3B0TlMoW1tXS1F1YWRPYmplY3QgYWxsb2NdIGluaXRXaXRoUXVhZDpbc2VsZiBhYnNv
bHV0ZVF1YWRXaXRoT3duZXI6b3duZXJdXSk7CisgICAgTlNBcnJheSAqcXVhZEFycmF5ID0gQFtx
dWFkT2JqZWN0LmdldCgpXTsKICAgICByZXR1cm4gcXVhZEFycmF5OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMubW0KaW5kZXggYzhiZTU1
MWI4NTBiY2UxNzIzYTJmMTE0ZTJkZWU2Y2U2ZGQyOTVhMS4uNzlkN2MwMDM2ZjA4MDhjMDIxY2Ix
MWZlN2U1NTM3ZGNhZTI0YjBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9FeGNlcHRpb25IYW5kbGVycy5tbQpAQCAtNDIsMTkgKzQyLDE1IEBAIHN0YXRpYyBOT19SRVRV
Uk4gdm9pZCByYWlzZURPTUVycm9yRXhjZXB0aW9uKFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMp
CiAKICAgICBhdXRvIGRlc2NyaXB0aW9uID0gV2ViQ29yZTo6RE9NRXhjZXB0aW9uOjpkZXNjcmlw
dGlvbihlYyk7CiAKLSAgICBOU1N0cmluZyAqcmVhc29uOworICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gcmVhc29uOwogICAgIGlmIChkZXNjcmlwdGlvbi5uYW1lKQotICAgICAgICByZWFzb24gPSBb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIioqKiAlczogJUAgJWQiLCBkZXNjcmlw
dGlvbi5uYW1lLmNoYXJhY3RlcnMoKSwgRE9NRXhjZXB0aW9uLCBkZXNjcmlwdGlvbi5sZWdhY3lD
b2RlXTsKKyAgICAgICAgcmVhc29uID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aEZvcm1hdDpAIioqKiAlczogJUAgJWQiLCBkZXNjcmlwdGlvbi5uYW1lLmNoYXJhY3RlcnMoKSwg
RE9NRXhjZXB0aW9uLCBkZXNjcmlwdGlvbi5sZWdhY3lDb2RlXSk7CiAgICAgZWxzZQotICAgICAg
ICByZWFzb24gPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIioqKiAlQCAlZCIs
IERPTUV4Y2VwdGlvbiwgZGVzY3JpcHRpb24ubGVnYWN5Q29kZV07CisgICAgICAgIHJlYXNvbiA9
IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIqKiogJUAgJWQiLCBE
T01FeGNlcHRpb24sIGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGVdKTsKIAotICAgIE5TRGljdGlvbmFy
eSAqdXNlckluZm8gPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5
czpAKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUpLCBET01FeGNlcHRpb24sIG5pbF07Ci0KLSAgICBO
U0V4Y2VwdGlvbiAqZXhjZXB0aW9uID0gW05TRXhjZXB0aW9uIGV4Y2VwdGlvbldpdGhOYW1lOkRP
TUV4Y2VwdGlvbiByZWFzb246cmVhc29uIHVzZXJJbmZvOnVzZXJJbmZvXTsKLQotICAgIFtyZWFz
b24gcmVsZWFzZV07Ci0gICAgW3VzZXJJbmZvIHJlbGVhc2VdOworICAgIGF1dG8gdXNlckluZm8g
PSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOkAo
ZGVzY3JpcHRpb24ubGVnYWN5Q29kZSksIERPTUV4Y2VwdGlvbiwgbmlsXSk7CiAKKyAgICBOU0V4
Y2VwdGlvbiAqZXhjZXB0aW9uID0gW05TRXhjZXB0aW9uIGV4Y2VwdGlvbldpdGhOYW1lOkRPTUV4
Y2VwdGlvbiByZWFzb246cmVhc29uLmdldCgpIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXTsKICAg
ICBbZXhjZXB0aW9uIHJhaXNlXTsKIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dl
YkRlZmF1bHRVSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERl
bGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQppbmRleCBkY2I3YzkzMWM5Njc3NmZkMDhm
NDk2YWZiYzlmMWY0ZDIwZWUyMTNhLi4wZjU4OGQyMDFmYjg2M2Q0YzUzNDY2M2VhOTU0MTEyZGI0
ZjdlZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdh
dGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0KQEAgLTMxLDYgKzMxLDcg
QEAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQ
cml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3LmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldlYkphdmFTY3JpcHRUZXh0
SW5wdXRQYW5lbC5oIgpAQCAtMTkyLDcgKzE5Myw3IEBAIC0gKEJPT0wpd2ViVmlldzogKFdlYlZp
ZXcgKil3diBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICop
CiAtIChOU1N0cmluZyAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdFRleHRJ
bnB1dFBhbmVsV2l0aFByb21wdDooTlNTdHJpbmcgKilwcm9tcHQgZGVmYXVsdFRleHQ6KE5TU3Ry
aW5nICopZGVmYXVsdFRleHQgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewog
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5l
bCAqcGFuZWwgPSBbW1dlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbCBhbGxvY10gaW5pdFdpdGhQ
cm9tcHQ6cHJvbXB0IHRleHQ6ZGVmYXVsdFRleHRdOworICAgIGF1dG8gcGFuZWwgPSBhZG9wdE5T
KFtbV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsIGFsbG9jXSBpbml0V2l0aFByb21wdDpwcm9t
cHQgdGV4dDpkZWZhdWx0VGV4dF0pOwogICAgIFtwYW5lbCBzaG93V2luZG93Om5pbF07CiAgICAg
TlNTdHJpbmcgKnJlc3VsdDsKICAgICBpZiAoW05TQXBwIHJ1bk1vZGFsRm9yV2luZG93OltwYW5l
bCB3aW5kb3ddXSkKQEAgLTIwMCw3ICsyMDEsNiBAQCAtIChOU1N0cmluZyAqKXdlYlZpZXc6IChX
ZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdAog
ICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gbmlsOwogICAgIFtbcGFuZWwgd2luZG93XSBjbG9z
ZV07Ci0gICAgW3BhbmVsIHJlbGVhc2VdOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAg
IHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5
L1dlYkhpc3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rv
cnkubW0KaW5kZXggZjI3NDcwZGJjMzAwY2FhMGU1Y2MwMjlhMjdiMmRhMTM5ZmFmMjFlZi4uOWJm
MzAyMGFhMzI2ZTk2NTk1OWQ2NGM2ZjgwMGQxNjUyNTlhMGJjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpAQCAtNzksOSArNzksOSBAQCBAZW5k
CiAKIEBpbnRlcmZhY2UgV2ViSGlzdG9yeVByaXZhdGUgOiBOU09iamVjdCB7CiBAcHJpdmF0ZQot
ICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9lbnRyaWVzQnlVUkw7CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+IF9lbnRyaWVzQnlVUkw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERh
dGVUb0VudHJpZXNNYXA+IF9lbnRyaWVzQnlEYXRlOwotICAgIE5TTXV0YWJsZUFycmF5ICpfb3Jk
ZXJlZExhc3RWaXNpdGVkRGF5czsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9vcmRl
cmVkTGFzdFZpc2l0ZWREYXlzOwogICAgIEJPT0wgaXRlbUxpbWl0U2V0OwogICAgIGludCBpdGVt
TGltaXQ7CiAgICAgQk9PTCBhZ2VJbkRheXNMaW1pdFNldDsKQEAgLTEzMSw3ICsxMzEsNyBAQCAt
IChpZClpbml0CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAg
IF9lbnRyaWVzQnlVUkwgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAg
IF9lbnRyaWVzQnlVUkwgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOwogICAgIF9lbnRyaWVzQnlEYXRlID0gbWFrZVVuaXF1ZTxEYXRlVG9FbnRyaWVzTWFwPigp
OwogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xMzksOCArMTM5LDYgQEAgLSAoaWQpaW5pdAogCiAt
ICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbX2VudHJpZXNCeVVSTCByZWxlYXNlXTsKLSAgICBbX29y
ZGVyZWRMYXN0VmlzaXRlZERheXMgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQog
CkBAIC0yMzgsNyArMjM2LDYgQEAgLSAoQk9PTClyZW1vdmVJdGVtRnJvbURhdGVDYWNoZXM6KFdl
Ykhpc3RvcnlJdGVtICopZW50cnkKICAgICBpZiAoW2VudHJpZXNGb3JEYXRlIGNvdW50XSA9PSAw
KSB7CiAgICAgICAgIF9lbnRyaWVzQnlEYXRlLT5yZW1vdmUoaXQpOwogICAgICAgICAvLyBDbGVh
ciBfb3JkZXJlZExhc3RWaXNpdGVkRGF5cyBzbyBpdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIHdoZW4g
bmV4dCByZXF1ZXN0ZWQuCi0gICAgICAgIFtfb3JkZXJlZExhc3RWaXNpdGVkRGF5cyByZWxlYXNl
XTsKICAgICAgICAgX29yZGVyZWRMYXN0VmlzaXRlZERheXMgPSBuaWw7CiAgICAgfQogICAgIApA
QCAtMjc0LDExICsyNzEsOSBAQCAtICh2b2lkKWFkZEl0ZW1Ub0RhdGVDYWNoZXM6KFdlYkhpc3Rv
cnlJdGVtICopZW50cnkKICAgICAgICAgW3NlbGYgaW5zZXJ0SXRlbTplbnRyeSBmb3JEYXRlS2V5
OmRhdGVLZXldOwogICAgIGVsc2UgewogICAgICAgICAvLyBubyBvdGhlciBlbnRyaWVzIGV4aXN0
IGZvciB0aGlzIGRhdGUKLSAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmVudHJpZXMgPSBbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6JmVudHJ5IGNvdW50OjFdOwotICAgICAg
ICBfZW50cmllc0J5RGF0ZS0+c2V0KGRhdGVLZXksIGVudHJpZXMpOwotICAgICAgICBbZW50cmll
cyByZWxlYXNlXTsKKyAgICAgICAgYXV0byBlbnRyaWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6JmVudHJ5IGNvdW50OjFdKTsKKyAgICAgICAgX2Vu
dHJpZXNCeURhdGUtPnNldChkYXRlS2V5LCBlbnRyaWVzLmdldCgpKTsKICAgICAgICAgLy8gQ2xl
YXIgX29yZGVyZWRMYXN0VmlzaXRlZERheXMgc28gaXQgd2lsbCBiZSByZWdlbmVyYXRlZCB3aGVu
IG5leHQgcmVxdWVzdGVkLgotICAgICAgICBbX29yZGVyZWRMYXN0VmlzaXRlZERheXMgcmVsZWFz
ZV07CiAgICAgICAgIF9vcmRlcmVkTGFzdFZpc2l0ZWREYXlzID0gbmlsOwogICAgIH0KIH0KQEAg
LTI5MSwyNiArMjg2LDI1IEBAIC0gKFdlYkhpc3RvcnlJdGVtICopdmlzaXRlZFVSTDooTlNVUkwg
Kil1cmwgd2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlCiAgICAgTlNTdHJpbmcgKlVSTFN0cmlu
ZyA9IFt1cmwgX3dlYl9vcmlnaW5hbERhdGFBc1N0cmluZ107CiAgICAgaWYgKCFVUkxTdHJpbmcp
CiAgICAgICAgIFVSTFN0cmluZyA9IEAiIjsKLSAgICBXZWJIaXN0b3J5SXRlbSAqZW50cnkgPSBb
X2VudHJpZXNCeVVSTCBvYmplY3RGb3JLZXk6VVJMU3RyaW5nXTsKKyAgICBSZXRhaW5QdHI8V2Vi
SGlzdG9yeUl0ZW0+IGVudHJ5ID0gW19lbnRyaWVzQnlVUkwgb2JqZWN0Rm9yS2V5OlVSTFN0cmlu
Z107CiAKICAgICBpZiAoZW50cnkpIHsKLSAgICAgICAgTE9HKEhpc3RvcnksICJVcGRhdGluZyBn
bG9iYWwgaGlzdG9yeSBlbnRyeSAlQCIsIGVudHJ5KTsKKyAgICAgICAgTE9HKEhpc3RvcnksICJV
cGRhdGluZyBnbG9iYWwgaGlzdG9yeSBlbnRyeSAlQCIsIGVudHJ5LmdldCgpKTsKICAgICAgICAg
Ly8gUmVtb3ZlIHRoZSBpdGVtIGZyb20gZGF0ZSBjYWNoZXMgYmVmb3JlIGNoYW5naW5nIGl0cyBs
YXN0IHZpc2l0ZWQgZGF0ZS4gIE90aGVyd2lzZSB3ZSBtaWdodCBnZXQgZHVwbGljYXRlIGVudHJp
ZXMKICAgICAgICAgLy8gYXMgc2VlbiBpbiA8cmRhcjovL3Byb2JsZW0vNjU3MDU3Mz4uCi0gICAg
ICAgIEJPT0wgaXRlbVdhc0luRGF0ZUNhY2hlcyA9IFtzZWxmIHJlbW92ZUl0ZW1Gcm9tRGF0ZUNh
Y2hlczplbnRyeV07CisgICAgICAgIEJPT0wgaXRlbVdhc0luRGF0ZUNhY2hlcyA9IFtzZWxmIHJl
bW92ZUl0ZW1Gcm9tRGF0ZUNhY2hlczplbnRyeS5nZXQoKV07CiAgICAgICAgIEFTU0VSVF9VTlVT
RUQoaXRlbVdhc0luRGF0ZUNhY2hlcywgaXRlbVdhc0luRGF0ZUNhY2hlcyk7CiAKICAgICAgICAg
W2VudHJ5IF92aXNpdGVkV2l0aFRpdGxlOnRpdGxlXTsKICAgICB9IGVsc2UgewogICAgICAgICBM
T0coSGlzdG9yeSwgIkFkZGluZyBuZXcgZ2xvYmFsIGhpc3RvcnkgZW50cnkgZm9yICVAIiwgdXJs
KTsKLSAgICAgICAgZW50cnkgPSBbW1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0V2l0aFVSTFN0
cmluZzpVUkxTdHJpbmcgdGl0bGU6dGl0bGUgbGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWw6W05TRGF0
ZSB0aW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGVdXTsKLSAgICAgICAgW19lbnRyaWVzQnlV
Ukwgc2V0T2JqZWN0OmVudHJ5IGZvcktleTpVUkxTdHJpbmddOwotICAgICAgICBbZW50cnkgcmVs
ZWFzZV07CisgICAgICAgIGVudHJ5ID0gYWRvcHROUyhbW1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBp
bml0V2l0aFVSTFN0cmluZzpVUkxTdHJpbmcgdGl0bGU6dGl0bGUgbGFzdFZpc2l0ZWRUaW1lSW50
ZXJ2YWw6W05TRGF0ZSB0aW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGVdXSk7CisgICAgICAg
IFtfZW50cmllc0J5VVJMIHNldE9iamVjdDplbnRyeS5nZXQoKSBmb3JLZXk6VVJMU3RyaW5nXTsK
ICAgICB9CiAgICAgCi0gICAgW3NlbGYgYWRkSXRlbVRvRGF0ZUNhY2hlczplbnRyeV07CisgICAg
W3NlbGYgYWRkSXRlbVRvRGF0ZUNhY2hlczplbnRyeS5nZXQoKV07CiAKLSAgICByZXR1cm4gZW50
cnk7CisgICAgcmV0dXJuIGVudHJ5LmdldCgpOwogfQogCiAtIChCT09MKWFkZEl0ZW06KFdlYkhp
c3RvcnlJdGVtICopZW50cnkgZGlzY2FyZER1cGxpY2F0ZTooQk9PTClkaXNjYXJkRHVwbGljYXRl
CkBAIC0zMjEsMzMgKzMxNSwyMiBAQCAtIChCT09MKWFkZEl0ZW06KFdlYkhpc3RvcnlJdGVtICop
ZW50cnkgZGlzY2FyZER1cGxpY2F0ZTooQk9PTClkaXNjYXJkRHVwbGljYXRlCiAgICAgTlNTdHJp
bmcgKlVSTFN0cmluZyA9IFtlbnRyeSBVUkxTdHJpbmddOwogCiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgV2ViSGlzdG9yeUl0ZW0gKm9sZEVudHJ5ID0gW19lbnRyaWVzQnlVUkwgb2Jq
ZWN0Rm9yS2V5OlVSTFN0cmluZ107Ci0gICAgaWYgKG9sZEVudHJ5KSB7CisgICAgaWYgKGF1dG8g
b2xkRW50cnkgPSByZXRhaW5QdHIoW19lbnRyaWVzQnlVUkwgb2JqZWN0Rm9yS2V5OlVSTFN0cmlu
Z10pKSB7CiAgICAgICAgIGlmIChkaXNjYXJkRHVwbGljYXRlKQogICAgICAgICAgICAgcmV0dXJu
IE5POwogCi0gICAgICAgIC8vIFRoZSBsYXN0IHJlZmVyZW5jZSB0byBvbGRFbnRyeSBtaWdodCBi
ZSB0aGlzIGRpY3Rpb25hcnksIHNvIHdlIGhvbGQgb250byBhIHJlZmVyZW5jZQotICAgICAgICAv
LyB1bnRpbCB3ZSdyZSBkb25lIHdpdGggb2xkRW50cnkuCi0gICAgICAgIFtvbGRFbnRyeSByZXRh
aW5dOwogICAgICAgICBbc2VsZiByZW1vdmVJdGVtRm9yVVJMU3RyaW5nOlVSTFN0cmluZ107Ci0g
ICAgICAgIFtvbGRFbnRyeSByZWxlYXNlXTsKICAgICB9CiAKICAgICBbc2VsZiBhZGRJdGVtVG9E
YXRlQ2FjaGVzOmVudHJ5XTsKICAgICBbX2VudHJpZXNCeVVSTCBzZXRPYmplY3Q6ZW50cnkgZm9y
S2V5OlVSTFN0cmluZ107CiAjZWxzZQotICAgIFdlYkhpc3RvcnlJdGVtICpvdGhlckVudHJ5ID0g
W19lbnRyaWVzQnlVUkwgb2JqZWN0Rm9yS2V5OlVSTFN0cmluZ107Ci0gICAgaWYgKG90aGVyRW50
cnkpIHsKKyAgICBpZiAoYXV0byBvdGhlckVudHJ5ID0gcmV0YWluUHRyKFtfZW50cmllc0J5VVJM
IG9iamVjdEZvcktleTpVUkxTdHJpbmddKSkgewogICAgICAgICBpZiAoZGlzY2FyZER1cGxpY2F0
ZSkKICAgICAgICAgICAgIHJldHVybiBOTzsKIAogICAgICAgICBpZiAoW290aGVyRW50cnkgbGFz
dFZpc2l0ZWRUaW1lSW50ZXJ2YWxdIDwgW2VudHJ5IGxhc3RWaXNpdGVkVGltZUludGVydmFsXSkg
ewotICAgICAgICAgICAgLy8gVGhlIGxhc3QgcmVmZXJlbmNlIHRvIG9sZEVudHJ5IG1pZ2h0IGJl
IHRoaXMgZGljdGlvbmFyeSwgc28gd2UgaG9sZCBvbnRvIGEgcmVmZXJlbmNlCi0gICAgICAgICAg
ICAvLyB1bnRpbCB3ZSdyZSBkb25lIHdpdGggb2xkRW50cnkuCi0gICAgICAgICAgICBbb3RoZXJF
bnRyeSByZXRhaW5dOwogICAgICAgICAgICAgW3NlbGYgcmVtb3ZlSXRlbUZvclVSTFN0cmluZzpV
UkxTdHJpbmddOwotICAgICAgICAgICAgW290aGVyRW50cnkgcmVsZWFzZV07Ci0KICAgICAgICAg
ICAgIFtzZWxmIGFkZEl0ZW1Ub0RhdGVDYWNoZXM6ZW50cnldOwogICAgICAgICAgICAgW19lbnRy
aWVzQnlVUkwgc2V0T2JqZWN0OmVudHJ5IGZvcktleTpVUkxTdHJpbmddOwogICAgICAgICB9IGVs
c2UKQEAgLTM2OCwxMCArMzUxLDggQEAgLSAodm9pZClyZWJ1aWxkSGlzdG9yeUJ5RGF5SWZOZWVk
ZWQ6KFdlYkhpc3RvcnkgKil3ZWJIaXN0b3J5CiAgICAgYXV0byBlbnRyeUFycmF5cyA9IGNvcHlU
b1ZlY3RvcihfZW50cmllc0J5RGF0ZS0+dmFsdWVzKCkpOwogICAgIF9lbnRyaWVzQnlEYXRlLT5j
bGVhcigpOwogICAgIAotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmVudHJpZXNCeVVSTCA9IF9l
bnRyaWVzQnlVUkw7Ci0gICAgX2VudHJpZXNCeVVSTCA9IG5pbDsKKyAgICBhdXRvIGVudHJpZXNC
eVVSTCA9IHN0ZDo6ZXhjaGFuZ2UoX2VudHJpZXNCeVVSTCwgbmlsKTsKICAgICAKLSAgICBbX29y
ZGVyZWRMYXN0VmlzaXRlZERheXMgcmVsZWFzZV07CiAgICAgX29yZGVyZWRMYXN0VmlzaXRlZERh
eXMgPSBuaWw7CiAgICAgCiAgICAgTlNBcnJheSAqYWxsRW50cmllcyA9IFtlbnRyaWVzQnlVUkwg
YWxsVmFsdWVzXTsKQEAgLTQyMyw3ICs0MDQsNiBAQCAtIChCT09MKXJlbW92ZUFsbEl0ZW1zCiAg
ICAgW19lbnRyaWVzQnlVUkwgcmVtb3ZlQWxsT2JqZWN0c107CiAKICAgICAvLyBDbGVhciBfb3Jk
ZXJlZExhc3RWaXNpdGVkRGF5cyBzbyBpdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIHdoZW4gbmV4dCBy
ZXF1ZXN0ZWQuCi0gICAgW19vcmRlcmVkTGFzdFZpc2l0ZWREYXlzIHJlbGVhc2VdOwogICAgIF9v
cmRlcmVkTGFzdFZpc2l0ZWREYXlzID0gbmlsOwogCiAgICAgV2ViVmlzaXRlZExpbmtTdG9yZTo6
cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7CkBAIC00NTgsMTUgKzQzOCwxNCBAQCAtIChOU0FycmF5
ICopb3JkZXJlZExhc3RWaXNpdGVkRGF5cwogCiAgICAgICAgIHN0ZDo6c29ydChkYXlzQXNUaW1l
SW50ZXJ2YWxzLmJlZ2luKCksIGRheXNBc1RpbWVJbnRlcnZhbHMuZW5kKCkpOwogICAgICAgICBz
aXplX3QgY291bnQgPSBkYXlzQXNUaW1lSW50ZXJ2YWxzLnNpemUoKTsKLSAgICAgICAgX29yZGVy
ZWRMYXN0VmlzaXRlZERheXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFj
aXR5OmNvdW50XTsKKyAgICAgICAgX29yZGVyZWRMYXN0VmlzaXRlZERheXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y291bnRdKTsKICAgICAgICAg
Zm9yIChpbnQgaSA9IGNvdW50IC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgIE5TVGlt
ZUludGVydmFsIGludGVydmFsID0gZGF5c0FzVGltZUludGVydmFsc1tpXTsKLSAgICAgICAgICAg
IE5TQ2FsZW5kYXJEYXRlICpkYXRlID0gW1tOU0NhbGVuZGFyRGF0ZSBhbGxvY10gaW5pdFdpdGhU
aW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGU6aW50ZXJ2YWxdOwotICAgICAgICAgICAgW19v
cmRlcmVkTGFzdFZpc2l0ZWREYXlzIGFkZE9iamVjdDpkYXRlXTsKLSAgICAgICAgICAgIFtkYXRl
IHJlbGVhc2VdOworICAgICAgICAgICAgYXV0byBkYXRlID0gYWRvcHROUyhbW05TQ2FsZW5kYXJE
YXRlIGFsbG9jXSBpbml0V2l0aFRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTppbnRlcnZh
bF0pOworICAgICAgICAgICAgW19vcmRlcmVkTGFzdFZpc2l0ZWREYXlzIGFkZE9iamVjdDpkYXRl
LmdldCgpXTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gX29yZGVyZWRMYXN0VmlzaXRl
ZERheXM7CisgICAgcmV0dXJuIF9vcmRlcmVkTGFzdFZpc2l0ZWREYXlzLmdldCgpOwogfQogCiAt
IChOU0FycmF5ICopb3JkZXJlZEl0ZW1zTGFzdFZpc2l0ZWRPbkRheTooTlNDYWxlbmRhckRhdGUg
KilkYXRlCkBAIC01OTMsNyArNTcyLDcgQEAgLSAoQk9PTClsb2FkSGlzdG9yeUd1dHNGcm9tVVJM
OihOU1VSTCAqKVVSTCBzYXZlZEl0ZW1zQ291bnQ6KGludCAqKW51bWJlck9mSXRlbXMKIAogICAg
IGZvciAoTlNEaWN0aW9uYXJ5ICppdGVtQXNEaWN0aW9uYXJ5IGluIGFycmF5KSB7CiAgICAgICAg
IEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgV2ViSGlzdG9yeUl0ZW0gKml0ZW0gPSBb
W1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpp
dGVtQXNEaWN0aW9uYXJ5XTsKKyAgICAgICAgICAgIGF1dG8gaXRlbSA9IGFkb3B0TlMoW1tXZWJI
aXN0b3J5SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246aXRlbUFz
RGljdGlvbmFyeV0pOwogCiAgICAgICAgICAgICAvLyBpdGVtIHdpdGhvdXQgVVJMIGlzIHVzZWxl
c3M7IGRhdGEgb24gZGlzayBtdXN0IGhhdmUgYmVlbiBiYWQ7IGlnbm9yZQogICAgICAgICAgICAg
aWYgKFtpdGVtIFVSTFN0cmluZ10pIHsKQEAgLTYwMywxNiArNTgyLDE0IEBAIC0gKEJPT0wpbG9h
ZEhpc3RvcnlHdXRzRnJvbVVSTDooTlNVUkwgKilVUkwgc2F2ZWRJdGVtc0NvdW50OihpbnQgKilu
dW1iZXJPZkl0ZW1zCiAgICAgICAgICAgICAgICAgICAgIGFnZUxpbWl0UGFzc2VkID0gWUVTOwog
CiAgICAgICAgICAgICAgICAgaWYgKGFnZUxpbWl0UGFzc2VkIHx8IGl0ZW1MaW1pdFBhc3NlZCkK
LSAgICAgICAgICAgICAgICAgICAgW2Rpc2NhcmRlZEl0ZW1zIGFkZE9iamVjdDppdGVtXTsKKyAg
ICAgICAgICAgICAgICAgICAgW2Rpc2NhcmRlZEl0ZW1zIGFkZE9iamVjdDppdGVtLmdldCgpXTsK
ICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFtzZWxmIGFk
ZEl0ZW06aXRlbSBkaXNjYXJkRHVwbGljYXRlOllFU10pCisgICAgICAgICAgICAgICAgICAgIGlm
IChbc2VsZiBhZGRJdGVtOml0ZW0uZ2V0KCkgZGlzY2FyZER1cGxpY2F0ZTpZRVNdKQogICAgICAg
ICAgICAgICAgICAgICAgICAgKysoKm51bWJlck9mSXRlbXNMb2FkZWQpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoKm51bWJlck9mSXRlbXNMb2FkZWQgPT0gaXRlbUNvdW50TGltaXQpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpdGVtTGltaXRQYXNzZWQgPSBZRVM7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBbaXRlbSByZWxlYXNlXTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtNjY5LDcgKzY0Niw3IEBAIC0gKEJPT0wpc2F2ZVRvVVJMOihOU1VS
TCAqKVVSTCBlcnJvcjooTlNFcnJvciAqKillcnJvcgogCiAtICh2b2lkKWFkZFZpc2l0ZWRMaW5r
c1RvVmlzaXRlZExpbmtTdG9yZTooV2ViVmlzaXRlZExpbmtTdG9yZSYpdmlzaXRlZExpbmtTdG9y
ZQogewotICAgIGZvciAoTlNTdHJpbmcgKnVybFN0cmluZyBpbiBfZW50cmllc0J5VVJMKQorICAg
IGZvciAoTlNTdHJpbmcgKnVybFN0cmluZyBpbiBfZW50cmllc0J5VVJMLmdldCgpKQogICAgICAg
ICB2aXNpdGVkTGlua1N0b3JlLmFkZFZpc2l0ZWRMaW5rKHVybFN0cmluZyk7CiB9CiAKQEAgLTc4
OCwxMSArNzY1LDkgQEAgLSAoV2ViSGlzdG9yeUl0ZW0gKilpdGVtRm9yVVJMOihOU1VSTCAqKVVS
TAogCiAtIChCT09MKWxvYWRGcm9tVVJMOihOU1VSTCAqKVVSTCBlcnJvcjooTlNFcnJvciAqKill
cnJvcgogewotICAgIE5TTXV0YWJsZUFycmF5ICpkaXNjYXJkZWRJdGVtcyA9IFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdOyAgICAKLSAgICBpZiAoIVtfaGlzdG9yeVByaXZhdGUgbG9hZEZy
b21VUkw6VVJMIGNvbGxlY3REaXNjYXJkZWRJdGVtc0ludG86ZGlzY2FyZGVkSXRlbXMgZXJyb3I6
ZXJyb3JdKSB7Ci0gICAgICAgIFtkaXNjYXJkZWRJdGVtcyByZWxlYXNlXTsKKyAgICBhdXRvIGRp
c2NhcmRlZEl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Cisg
ICAgaWYgKCFbX2hpc3RvcnlQcml2YXRlIGxvYWRGcm9tVVJMOlVSTCBjb2xsZWN0RGlzY2FyZGVk
SXRlbXNJbnRvOmRpc2NhcmRlZEl0ZW1zLmdldCgpIGVycm9yOmVycm9yXSkKICAgICAgICAgcmV0
dXJuIE5POwotICAgIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViVGhyZWFk
UG9zdE5vdGlmaWNhdGlvbihXZWJIaXN0b3J5TG9hZGVkTm90aWZpY2F0aW9uLCBzZWxmLCBuaWwp
OwpAQCAtODAzLDkgKzc3OCw4IEBAIC0gKEJPT0wpbG9hZEZyb21VUkw6KE5TVVJMICopVVJMIGVy
cm9yOihOU0Vycm9yICoqKWVycm9yCiAjZW5kaWYKIAogICAgIGlmIChbZGlzY2FyZGVkSXRlbXMg
Y291bnRdKQotICAgICAgICBbc2VsZiBfc2VuZE5vdGlmaWNhdGlvbjpXZWJIaXN0b3J5SXRlbXNE
aXNjYXJkZWRXaGlsZUxvYWRpbmdOb3RpZmljYXRpb24gZW50cmllczpkaXNjYXJkZWRJdGVtc107
CisgICAgICAgIFtzZWxmIF9zZW5kTm90aWZpY2F0aW9uOldlYkhpc3RvcnlJdGVtc0Rpc2NhcmRl
ZFdoaWxlTG9hZGluZ05vdGlmaWNhdGlvbiBlbnRyaWVzOmRpc2NhcmRlZEl0ZW1zLmdldCgpXTsK
IAotICAgIFtkaXNjYXJkZWRJdGVtcyByZWxlYXNlXTsKICAgICByZXR1cm4gWUVTOwogfQogCkBA
IC04ODUsOSArODU5LDggQEAgLSAodm9pZClfdmlzaXRlZFVSTDooTlNVUkwgKil1cmwgd2l0aFRp
dGxlOihOU1N0cmluZyAqKXRpdGxlIG1ldGhvZDooTlNTdHJpbmcgKikKIAogICAgIGVudHJ5LT5f
cHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IG51bGxwdHI7CiAKLSAgICBOU0FycmF5ICplbnRyaWVz
ID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6ZW50cnksIG5pbF07Ci0gICAgW3Nl
bGYgX3NlbmROb3RpZmljYXRpb246V2ViSGlzdG9yeUl0ZW1zQWRkZWROb3RpZmljYXRpb24gZW50
cmllczplbnRyaWVzXTsKLSAgICBbZW50cmllcyByZWxlYXNlXTsKKyAgICBhdXRvIGVudHJpZXMg
PSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOmVudHJ5LCBuaWxdKTsK
KyAgICBbc2VsZiBfc2VuZE5vdGlmaWNhdGlvbjpXZWJIaXN0b3J5SXRlbXNBZGRlZE5vdGlmaWNh
dGlvbiBlbnRyaWVzOmVudHJpZXMuZ2V0KCldOwogfQogCiAtICh2b2lkKV9hZGRWaXNpdGVkTGlu
a3NUb1Zpc2l0ZWRMaW5rU3RvcmU6KFdlYlZpc2l0ZWRMaW5rU3RvcmUgJil2aXNpdGVkTGlua1N0
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rv
cnlJdGVtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRl
bS5tbQppbmRleCA4N2U2MjlmOTk0OWYxMjE0ODA0YmZlZDRhMDJiMTQ2NzVlN2NjYjZlLi5jYjE2
Y2Q3NTIyZjBiYTk2YWNhMTUwMWZiNDY5NWU4NDRkNDcxNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTM1Miw5ICszNTIs
OCBAQCAtIChpZClpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5
ICopZGljdAogICAgIE5TQXJyYXkgKmNoaWxkRGljdHMgPSBbZGljdCBvYmplY3RGb3JLZXk6Y2hp
bGRyZW5LZXldOwogICAgIGlmIChjaGlsZERpY3RzKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBb
Y2hpbGREaWN0cyBjb3VudF0gLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICAgICAgV2ViSGlz
dG9yeUl0ZW0gKmNoaWxkID0gW1tXZWJIaXN0b3J5SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb246W2NoaWxkRGljdHMgb2JqZWN0QXRJbmRleDppXV07CisgICAgICAg
ICAgICBhdXRvIGNoaWxkID0gYWRvcHROUyhbW1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0RnJv
bURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpbY2hpbGREaWN0cyBvYmplY3RBdEluZGV4OmldXSk7
CiAgICAgICAgICAgICBjb3JlKF9wcml2YXRlKS0+YWRkQ2hpbGRJdGVtKCpjb3JlKGNoaWxkLT5f
cHJpdmF0ZSkpOwotICAgICAgICAgICAgW2NoaWxkIHJlbGVhc2VdOwogICAgICAgICB9CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkRvd25sb2Fk
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQppbmRleCA1
MDU5OGRlZTVjNWQxOGNkNWExY2QyMTBhMmQyMWFmY2ZlNzgzYWNkLi4yZmNiMDBhZGIyNGFjYjY1
ZGNmMzc5YjFhZmZkMjdmNzk0N2Q5NTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViRG93bmxvYWQubW0KQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgY2FsbE9uRGVs
ZWdhdGVUaHJlYWRBbmRXYWl0KENhbGxhYmxlJiYgd29yaykKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBAaW50ZXJmYWNlIFdlYkRvd25sb2FkSW50ZXJuYWwgOiBOU09iamVjdCA8TlNVUkxE
b3dubG9hZERlbGVnYXRlPiB7Ci0gICAgaWQgcmVhbERlbGVnYXRlOworICAgIFJldGFpblB0cjxp
ZD4gcmVhbERlbGVnYXRlOwogfQogLSAodm9pZClzZXRSZWFsRGVsZWdhdGU6KGlkKXJlYWxEZWxl
Z2F0ZTsKIEBlbmQKQEAgLTgxLDE0ICs4MSwxMSBAQCBAaW1wbGVtZW50YXRpb24gV2ViRG93bmxv
YWRJbnRlcm5hbAogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbcmVhbERlbGVnYXRlIHJlbGVh
c2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClzZXRSZWFsRGVsZWdhdGU6
KGlkKXJkCiB7Ci0gICAgW3JkIHJldGFpbl07Ci0gICAgW3JlYWxEZWxlZ2F0ZSByZWxlYXNlXTsK
ICAgICByZWFsRGVsZWdhdGUgPSByZDsKIH0KIApAQCAtMTExLDcgKzEwOCw3IEBAIC0gKEJPT0wp
cmVzcG9uZHNUb1NlbGVjdG9yOihTRUwpc2VsZWN0b3IKIAogLSAodm9pZClkb3dubG9hZERpZEJl
Z2luOihOU1VSTERvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBjYWxsT25EZWxlZ2F0ZVRocmVh
ZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0
YWluUHRyKGRvd25sb2FkKV0geworICAgIGNhbGxPbkRlbGVnYXRlVGhyZWFkKFtyZWFsRGVsZWdh
dGUgPSByZWFsRGVsZWdhdGUsIGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKV0gewogICAg
ICAgICBbcmVhbERlbGVnYXRlIGRvd25sb2FkRGlkQmVnaW46ZG93bmxvYWQuZ2V0KCldOwogICAg
IH0pOwogfQpAQCAtMTQwLDExICsxMzcsMTEgQEAgLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3du
bG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlMKICAg
ICB9CiAKICAgICBpZiAoW3JlYWxEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXSkgewotICAgICAg
ICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxl
Z2F0ZSksIGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKSwgY2hhbGxlbmdlID0gcmV0YWlu
UHRyKGNoYWxsZW5nZSldIHsKKyAgICAgICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxl
Z2F0ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQpLCBjaGFs
bGVuZ2UgPSByZXRhaW5QdHIoY2hhbGxlbmdlKV0gewogICAgICAgICAgICAgW3JlYWxEZWxlZ2F0
ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQoKSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6Y2hhbGxlbmdlLmdldCgpXTsKICAgICAgICAgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
Y2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJldGFpblB0cihyZWFsRGVsZWdh
dGUpLCBkb3dubG9hZCA9IHJldGFpblB0cihkb3dubG9hZCksIGNoYWxsZW5nZSA9IHJldGFpblB0
cihjaGFsbGVuZ2UpXSB7CisgICAgICAgIGNhbGxPbkRlbGVnYXRlVGhyZWFkKFtyZWFsRGVsZWdh
dGUgPSByZWFsRGVsZWdhdGUsIGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKSwgY2hhbGxl
bmdlID0gcmV0YWluUHRyKGNoYWxsZW5nZSldIHsKICAgICAgICAgICAgIE5TV2luZG93ICp3aW5k
b3cgPSBuaWw7CiAgICAgICAgICAgICBpZiAoW3JlYWxEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGRvd25sb2FkV2luZG93Rm9yQXV0aGVudGljYXRpb25TaGVldDopXSkKICAg
ICAgICAgICAgICAgICB3aW5kb3cgPSBbcmVhbERlbGVnYXRlIGRvd25sb2FkV2luZG93Rm9yQXV0
aGVudGljYXRpb25TaGVldDooV2ViRG93bmxvYWQgKilkb3dubG9hZC5nZXQoKV07CkBAIC0xNTcs
MTQgKzE1NCwxNCBAQCAtICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOUwogCiAtICh2b2lkKWRvd25sb2Fk
OihOU1VSTERvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3Bv
bnNlICopcmVzcG9uc2UKIHsKLSAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRl
ID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2Fk
KSwgcmVzcG9uc2UgPSByZXRhaW5QdHIocmVzcG9uc2UpXSB7CisgICAgY2FsbE9uRGVsZWdhdGVU
aHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93bmxvYWQgPSByZXRhaW5QdHIo
ZG93bmxvYWQpLCByZXNwb25zZSA9IHJldGFpblB0cihyZXNwb25zZSldIHsKICAgICAgICAgW3Jl
YWxEZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQoKSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVz
cG9uc2UuZ2V0KCldOwogICAgIH0pOwogfQogCiAtICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25s
b2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZURhdGFPZkxlbmd0aDooTlNVSW50ZWdlcilsZW5ndGgK
IHsKLSAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJl
YWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKSwgbGVuZ3RoXSB7Cisg
ICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93
bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQpLCBsZW5ndGhdIHsKICAgICAgICAgW3JlYWxEZWxl
Z2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQoKSBkaWRSZWNlaXZlRGF0YU9mTGVuZ3RoOmxlbmd0
aF07CiAgICAgfSk7CiB9CkBAIC0xODEsMjggKzE3OCwyOCBAQCAtIChCT09MKWRvd25sb2FkOihO
U1VSTERvd25sb2FkICopZG93bmxvYWQgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU6
KE5TUwogCiAtICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUKIHsK
LSAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxE
ZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKSwgZmlsZW5hbWUgPSByZXRh
aW5QdHIoZmlsZW5hbWUpXSB7CisgICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxlZ2F0
ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQpLCBmaWxlbmFt
ZSA9IHJldGFpblB0cihmaWxlbmFtZSldIHsKICAgICAgICAgW3JlYWxEZWxlZ2F0ZSBkb3dubG9h
ZDpkb3dubG9hZC5nZXQoKSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpm
aWxlbmFtZS5nZXQoKV07CiAgICAgfSk7CiB9CiAKIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93
bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVEZXN0aW5hdGlvbjooTlNTdHJpbmcgKilwYXRoCiB7
Ci0gICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJldGFpblB0cihyZWFs
RGVsZWdhdGUpLCBkb3dubG9hZCA9IHJldGFpblB0cihkb3dubG9hZCksIHBhdGggPSByZXRhaW5Q
dHIocGF0aCldIHsKKyAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmVh
bERlbGVnYXRlLCBkb3dubG9hZCA9IHJldGFpblB0cihkb3dubG9hZCksIHBhdGggPSByZXRhaW5Q
dHIocGF0aCldIHsKICAgICAgICAgW3JlYWxEZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQo
KSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpwYXRoLmdldCgpXTsKICAgICB9KTsKIH0KIAogLSAodm9p
ZClkb3dubG9hZERpZEZpbmlzaDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgY2Fs
bE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJldGFpblB0cihyZWFsRGVsZWdhdGUp
LCBkb3dubG9hZCA9IHJldGFpblB0cihkb3dubG9hZCldIHsKKyAgICBjYWxsT25EZWxlZ2F0ZVRo
cmVhZChbcmVhbERlbGVnYXRlID0gcmVhbERlbGVnYXRlLCBkb3dubG9hZCA9IHJldGFpblB0cihk
b3dubG9hZCldIHsKICAgICAgICAgW3JlYWxEZWxlZ2F0ZSBkb3dubG9hZERpZEZpbmlzaDpkb3du
bG9hZC5nZXQoKV07CiAgICAgfSk7CiB9CiAKIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxv
YWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKIHsKLSAgICBj
YWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0
ZSksIGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJy
b3IpXSB7CisgICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJlYWxEZWxl
Z2F0ZSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQpLCBlcnJvciA9IHJldGFpblB0cihl
cnJvcildIHsKICAgICAgICAgW3JlYWxEZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQoKSBk
aWRGYWlsV2l0aEVycm9yOmVycm9yLmdldCgpXTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNEYXRhRXh0cmFzLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KaW5kZXggYzY5NGU1MjA5YzRm
OTBjZDgyZjc4ODg4ZmU4NjQyNWE4ZmZlNDg4OS4uMGRkZTI4N2MyZjA0Yzk2MDk2NDE0OGRkZmIy
YzMzNDM4MmU1MTc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJOU0RhdGFFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJO
U0RhdGFFeHRyYXMubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9X
ZWJOU0RhdGFFeHRyYXNQcml2YXRlLmg+CiAKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbnRlcmZhY2UgTlNTdHJpbmcgKFdlYk5TRGF0
YUV4dHJhc0ludGVybmFsKQogLSAoTlNTdHJpbmcgKilfd2ViX2NhcGl0YWxpemVSRkM4MjJIZWFk
ZXJGaWVsZE5hbWU7CkBAIC0zMTEsMTEgKzMxMiwxMCBAQCAtIChOU011dGFibGVEaWN0aW9uYXJ5
ICopX3dlYmtpdF9wYXJzZVJGQzgyMkhlYWRlckZpZWxkcwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgLy8gTWVyZ2UgdGhlIGNvbnRpbnVhdGlvbiBvZiB0aGUgcHJldmlvdXMgaGVhZGVyCiAg
ICAgICAgICAgICBOU1N0cmluZyAqY3VycmVudFZhbHVlID0gW2hlYWRlckZpZWxkcyBvYmplY3RG
b3JLZXk6bGFzdEtleV07Ci0gICAgICAgICAgICBOU1N0cmluZyAqbmV3VmFsdWUgPSBbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmxpbmUgbGVuZ3RoOmxpbmVMZW5ndGggZW5jb2Rpbmc6
TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ107CisgICAgICAgICAgICBhdXRvIG5ld1ZhbHVlID0g
YWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmxpbmUgbGVuZ3RoOmxpbmVM
ZW5ndGggZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ10pOwogICAgICAgICAgICAg
QVNTRVJUKGN1cnJlbnRWYWx1ZSk7CiAgICAgICAgICAgICBBU1NFUlQobmV3VmFsdWUpOwotICAg
ICAgICAgICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6W2N1cnJlbnRWYWx1ZSBzdHJpbmdCeUFw
cGVuZGluZ1N0cmluZzpuZXdWYWx1ZV0gZm9yS2V5Omxhc3RLZXldOwotICAgICAgICAgICAgW25l
d1ZhbHVlIHJlbGVhc2VdOworICAgICAgICAgICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6W2N1
cnJlbnRWYWx1ZSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpuZXdWYWx1ZS5nZXQoKV0gZm9yS2V5
Omxhc3RLZXldOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQnJhbmQgbmV3IGhl
YWRlcgogICAgICAgICAgICAgY29uc3QgVUludDgqIGNvbG9uOwpAQCAtMzMxLDEzICszMzEsMTIg
QEAgLSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV93ZWJraXRfcGFyc2VSRkM4MjJIZWFkZXJGaWVs
ZHMKICAgICAgICAgICAgICAgICBpZiAoKmNvbG9uICE9ICcgJyAmJiAqY29sb24gIT0gJ1x0JykK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBO
U1N0cmluZyAqdmFsdWUgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmNvbG9uIGxl
bmd0aDplb2wgLSBjb2xvbiBlbmNvZGluZzpOU0lTT0xhdGluMVN0cmluZ0VuY29kaW5nXTsKKyAg
ICAgICAgICAgIGF1dG8gdmFsdWUgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
Qnl0ZXM6Y29sb24gbGVuZ3RoOmVvbCAtIGNvbG9uIGVuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5n
RW5jb2RpbmddKTsKICAgICAgICAgICAgIGlmIChOU1N0cmluZyAqb2xkVmFsdWUgPSBbaGVhZGVy
RmllbGRzIG9iamVjdEZvcktleTpsYXN0S2V5XSkgewotICAgICAgICAgICAgICAgIFt2YWx1ZSBh
dXRvcmVsZWFzZV07Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aEZvcm1hdDpAIiVALCAlQCIsIG9sZFZhbHVlLCB2YWx1ZV07CisgICAgICAgICAgICAg
ICAgYXV0byBuZXdWYWx1ZSA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiJUAs
ICVAIiwgb2xkVmFsdWUsIHZhbHVlLmdldCgpXTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IFdU
Rk1vdmUobmV3VmFsdWUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgW2hlYWRlckZpZWxk
cyBzZXRPYmplY3Q6dmFsdWUgZm9yS2V5Omxhc3RLZXldOwotICAgICAgICAgICAgW3ZhbHVlIHJl
bGVhc2VdOworICAgICAgICAgICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6dmFsdWUuZ2V0KCkg
Zm9yS2V5Omxhc3RLZXldOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCmluZGV4IDU2OGUz
ZjU5MzY2N2RhYjgzM2QwMDRhYjIyZmExM2QwN2VmOTVlNzAuLjRhZTBjNzkwZTNiMDJjZmZhYTI0
OWFmMzNhNzdhNGRiZmJmNzJmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCkBAIC0xOTMsMTAgKzE5Myw4IEBAICsg
KGludClfd2ViX3NldEZpbmRQYXN0ZWJvYXJkU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRo
T3duZXI6KGlkKW93bmVyCiAKIC0gKHZvaWQpX3dlYl93cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0
YWNobWVudDooTlNGaWxlV3JhcHBlciAqKXdyYXBwZXIKIHsKLSAgICBOU1RleHRBdHRhY2htZW50
ICphdHRhY2htZW50ID0gW1tOU1RleHRBdHRhY2htZW50IGFsbG9jXSBpbml0V2l0aEZpbGVXcmFw
cGVyOndyYXBwZXJdOwotICAgIAotICAgIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW05T
QXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0dGFjaG1lbnQ6YXR0YWNobWVu
dF07Ci0gICAgW2F0dGFjaG1lbnQgcmVsZWFzZV07CisgICAgYXV0byBhdHRhY2htZW50ID0gYWRv
cHROUyhbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRmlsZVdyYXBwZXI6d3JhcHBl
cl0pOworICAgIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW05TQXR0cmlidXRlZFN0cmlu
ZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0dGFjaG1lbnQ6YXR0YWNobWVudC5nZXQoKV07CiAgICAg
CiAgICAgTlNEYXRhICpSVEZERGF0YSA9IFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5n
ZSgwLCBbc3RyaW5nIGxlbmd0aF0pIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XTsKICAgICBbc2Vs
ZiBzZXREYXRhOlJURkREYXRhIGZvclR5cGU6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCldOwpA
QCAtMzE3LDkgKzMxNSw4IEBAIC0gKGlkKV93ZWJfZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlRm9y
RWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQKICAgICBpZiAoY3VzdG9tRGF0YUJ1ZmZlcikK
ICAgICAgICAgW3NlbGYgc2V0RGF0YTpjdXN0b21EYXRhQnVmZmVyLmdldCgpIGZvclR5cGU6QChQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAotICAgIE5TQXJyYXkgKmV4dGVu
c2lvbnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpleHRlbnNpb24sIG5pbF07
Ci0gICAgW3NlbGYgc2V0UHJvcGVydHlMaXN0OmV4dGVuc2lvbnMgZm9yVHlwZTpsZWdhY3lGaWxl
c1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpXTsKLSAgICBbZXh0ZW5zaW9ucyByZWxlYXNlXTsKKyAg
ICBhdXRvIGV4dGVuc2lvbnMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmpl
Y3RzOmV4dGVuc2lvbiwgbmlsXSk7CisgICAgW3NlbGYgc2V0UHJvcGVydHlMaXN0OmV4dGVuc2lv
bnMuZ2V0KCkgZm9yVHlwZTpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpXTsKIAog
ICAgIHJldHVybiBzb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5t
bQppbmRleCA5NTYxZDIyZWJiZmI5ZWE0OWQ0Zjg4MzZiMmYwZmQ1OTVjYTY4ZDM5Li5iYmVhN2Vh
NjI2MmMyZjQwZTNmNDNmNmRkY2I2MjcyZWUwZTMyNGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSG9zdE1hbmFnZXIubW0KQEAgLTE3MiwxNiArMTcyLDE0IEBAIGJvb2wgTmV0c2NhcGVQbHVn
aW5Ib3N0TWFuYWdlcjo6c3Bhd25QbHVnaW5Ib3N0KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwg
Y3B1X3R5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJhbmQgdGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRp
b24gbmFtZS4iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1soTlNTdHJpbmcqKXBs
dWdpblBhdGggbGFzdFBhdGhDb21wb25lbnRdIHN0cmluZ0J5RGVsZXRpbmdQYXRoRXh0ZW5zaW9u
XSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV1dOwogICAgIAotICAg
IE5TRGljdGlvbmFyeSAqaG9zdFByb3BlcnRpZXMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5p
dFdpdGhPYmplY3RzQW5kS2V5czoKKyAgICBhdXRvIGhvc3RQcm9wZXJ0aWVzID0gYWRvcHROUyhb
W05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVOYW1lLCBAInZpc2libGVOYW1lIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOU1N0cmluZyAqKXBsdWdpblBhdGgs
IEAiYnVuZGxlUGF0aCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxd
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSk7CiAgICAgCi0gICAg
ZGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6
aG9zdFByb3BlcnRpZXMgZm9ybWF0Ok5TUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgb3B0
aW9uczowIGVycm9yOk5VTExdOworICAgIGRhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0
aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0Omhvc3RQcm9wZXJ0aWVzLmdldCgpIGZvcm1hdDpOU1By
b3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpOVUxMXTsKICAgICBB
U1NFUlQoZGF0YSk7CiAKLSAgICBbaG9zdFByb3BlcnRpZXMgcmVsZWFzZV07Ci0KICAgICBQcm9j
ZXNzU2VyaWFsTnVtYmVyIHBzbjsKIAogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggYjcw
ZTc1ZTNlZWNkZDU4Y2FiOTFjZjgxNWMwYTY0YmU4OWQzOWFiYy4uNTFjNTllYzg0OGE3NDAxOWVm
ZTRkNDA4OGVjN2VjMjFkZjU4NjUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQpAQCAtNjUxLDExICs2NTEsMTAgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHBsdWdpblJlcXVlc3QpCiAg
ICAgICAgIGZyYW1lID0ga2l0KGNvcmUoW21fcGx1Z2luVmlldyB3ZWJGcmFtZV0pLT5sb2FkZXIo
KS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSkpOwogICAgICAgICBpZiAoIWZyYW1l
KSB7CiAgICAgICAgICAgICBXZWJWaWV3ICpjdXJyZW50V2ViVmlldyA9IFttX3BsdWdpblZpZXcg
d2ViVmlld107Ci0gICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmZlYXR1cmVzID0gW1tOU0RpY3Rp
b25hcnkgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgYXV0byBmZWF0dXJlcyA9IGFkb3B0TlMo
W1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIFdlYlZpZXcgKm5ld1dl
YlZpZXcgPSBbW2N1cnJlbnRXZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OmN1
cnJlbnRXZWJWaWV3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDpuaWwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRv
d0ZlYXR1cmVzOmZlYXR1cmVzXTsKLSAgICAgICAgICAgIFtmZWF0dXJlcyByZWxlYXNlXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdpbmRvd0ZlYXR1cmVzOmZlYXR1cmVzLmdldCgpXTsKIAogICAgICAgICAgICAgaWYg
KCFuZXdXZWJWaWV3KSB7CiAgICAgICAgICAgICAgICAgX1dLUEhMb2FkVVJMTm90aWZ5KG1fcGx1
Z2luSG9zdFByb3h5LT5wb3J0KCksIG1fcGx1Z2luSUQsIHBsdWdpblJlcXVlc3QtPnJlcXVlc3RJ
RCgpLCBOUEVSUl9HRU5FUklDX0VSUk9SKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCmluZGV4IGE0ZmU5
MGI2YWNhNTVkOTU4NjA5OWVmMTY0NDNjZjJmYTkzZjk4ZGIuLjBiMzI2NzI3MjJmOGM5MDI0NTdm
YjQ1M2QyMjE2MjFhNmJhMWYyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQpAQCAtNjEzLDIwICs2
MTMsMTggQEAgdm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyhO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopCiAKIHZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpCiB7Ci0gICAgTlNEYXRhICpkYXRhID0gW1tOU0RhdGEgYWxs
b2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWJ5dGVzIGxlbmd0aDpsZW5ndGggZnJlZVdo
ZW5Eb25lOk5PXTsKKyAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0
V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilieXRlcyBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpO
T10pOwogCiAgICAgQVNTRVJUKFtkYXRhIGxlbmd0aF0gPiAwKTsKICAgICAKICAgICBpZiAobV90
cmFuc2Zlck1vZGUgIT0gTlBfQVNGSUxFT05MWSkgewogICAgICAgICBpZiAoIW1fZGVsaXZlcnlE
YXRhKQogICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0
YSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpbZGF0YSBsZW5ndGhdXSk7Ci0gICAgICAgIFttX2Rl
bGl2ZXJ5RGF0YS5nZXQoKSBhcHBlbmREYXRhOmRhdGFdOworICAgICAgICBbbV9kZWxpdmVyeURh
dGEuZ2V0KCkgYXBwZW5kRGF0YTpkYXRhLmdldCgpXTsKICAgICAgICAgZGVsaXZlckRhdGEoKTsK
ICAgICB9CiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlID09IE5QX0FTRklMRSB8fCBtX3RyYW5zZmVy
TW9kZSA9PSBOUF9BU0ZJTEVPTkxZKQotICAgICAgICBkZWxpdmVyRGF0YVRvRmlsZShkYXRhKTsK
LSAgICAKLSAgICBbZGF0YSByZWxlYXNlXTsKKyAgICAgICAgZGVsaXZlckRhdGFUb0ZpbGUoZGF0
YS5nZXQoKSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCBhYmRlODYxY2ZmMDI3
NzViMDFkNWNmYjY1MTIyZTU4NDEyMjIxNDAzLi4wNjg3YmJiYmU4MGY1YjdkODdiMjc4ZjkxODM5
MDUwYzA1ZTBkN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTAzNCwxMyArMTAzNCwxMiBAQCAt
ICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihOU0Rh
dGEgKilkYXRhCiAgICAgICAgIGlmIChbc2VsZiBfc2hvdWxkQ2FuY2VsU3JjU3RyZWFtXSkgewog
ICAgICAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbW3NlbGYgZGF0YVNvdXJjZV0g
cmVzcG9uc2VdOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBOU0Vycm9yICplcnJvciA9IFtb
TlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJyb3JDb2RlOldlYktpdEVycm9yUGx1Z0lu
V2lsbEhhbmRsZUxvYWQKKyAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJv
ciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJyb3JDb2RlOldlYktpdEVycm9yUGx1Z0luV2lsbEhh
bmRsZUxvYWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRlbnRVUkw6W3Jlc3BvbnNlIFVSTF0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpblBhZ2VVUkw6bmls
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwbHVnaW5OYW1lOm5pbCAvLyBGSVhNRTogR2V0IHRoaXMgZnJvbSBzb21ld2hlcmUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTUlNRVR5cGU6W3Jlc3BvbnNlIE1JTUVUeXBlXV07Ci0gICAgICAgICAgICBbW3NlbGYgZGF0
YVNvdXJjZV0gX2RvY3VtZW50TG9hZGVyXS0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7
Ci0gICAgICAgICAgICBbZXJyb3IgcmVsZWFzZV07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOltyZXNwb25zZSBN
SU1FVHlwZV1dKTsKKyAgICAgICAgICAgIFtbc2VsZiBkYXRhU291cmNlXSBfZG9jdW1lbnRMb2Fk
ZXJdLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yLmdldCgpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTExNzcsMTEgKzExNzYsMTAgQEAgLSAodm9p
ZClsb2FkUGx1Z2luUmVxdWVzdDooV2ViUGx1Z2luUmVxdWVzdCAqKXBsdWdpblJlcXVlc3QKICAg
ICAgICAgZnJhbWUgPSBraXQoY29yZShbc2VsZiB3ZWJGcmFtZV0pLT5sb2FkZXIoKS5maW5kRnJh
bWVGb3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSkpOwogICAgICAgICBpZiAoZnJhbWUgPT0gbmlsKSB7
CiAgICAgICAgICAgICBXZWJWaWV3ICpjdXJyZW50V2ViVmlldyA9IFtzZWxmIHdlYlZpZXddOwot
ICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpmZWF0dXJlcyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0XTsKKyAgICAgICAgICAgIGF1dG8gZmVhdHVyZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBXZWJWaWV3ICpuZXdXZWJWaWV3ID0gW1tj
dXJyZW50V2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzpjdXJyZW50V2ViVmll
dwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dGZWF0dXJlczpm
ZWF0dXJlc107Ci0gICAgICAgICAgICBbZmVhdHVyZXMgcmVsZWFzZV07CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5k
b3dGZWF0dXJlczpmZWF0dXJlcy5nZXQoKV07CiAKICAgICAgICAgICAgIGlmICghbmV3V2ViVmll
dykgewogICAgICAgICAgICAgICAgIGlmIChbcGx1Z2luUmVxdWVzdCBzZW5kTm90aWZpY2F0aW9u
XSkgewpAQCAtMTI3MywxMyArMTI3MSwxMiBAQCAtIChOUEVycm9yKWxvYWRSZXF1ZXN0OihOU011
dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdCBpblRhcmdldDooY29uc3QgY2hhciAqKWNUYQogICAg
ICAgICBpZiAoX2V2ZW50SGFuZGxlcikKICAgICAgICAgICAgIGN1cnJlbnRFdmVudElzVXNlckdl
c3R1cmUgPSBfZXZlbnRIYW5kbGVyLT5jdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlKCk7CiAgICAg
ICAgIAotICAgICAgICBXZWJQbHVnaW5SZXF1ZXN0ICpwbHVnaW5SZXF1ZXN0ID0gW1tXZWJQbHVn
aW5SZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdCAKKyAgICAgICAgYXV0byBw
bHVnaW5SZXF1ZXN0ID0gYWRvcHROUyhbW1dlYlBsdWdpblJlcXVlc3QgYWxsb2NdIGluaXRXaXRo
UmVxdWVzdDpyZXF1ZXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lTmFtZTp0YXJnZXQKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub3RpZnlEYXRhOm5vdGlmeURhdGEgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZE5vdGlmaWNh
dGlvbjpzZW5kTm90aWZpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRTdGFydEZyb21Vc2VyR2VzdHVyZTpjdXJyZW50
RXZlbnRJc1VzZXJHZXN0dXJlXTsKLSAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxl
Y3Rvcihsb2FkUGx1Z2luUmVxdWVzdDopIHdpdGhPYmplY3Q6cGx1Z2luUmVxdWVzdCBhZnRlckRl
bGF5OjBdOwotICAgICAgICBbcGx1Z2luUmVxdWVzdCByZWxlYXNlXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0RnJv
bVVzZXJHZXN0dXJlOmN1cnJlbnRFdmVudElzVXNlckdlc3R1cmVdKTsKKyAgICAgICAgW3NlbGYg
cGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rvcihsb2FkUGx1Z2luUmVxdWVzdDopIHdpdGhPYmplY3Q6
cGx1Z2luUmVxdWVzdC5nZXQoKSBhZnRlckRlbGF5OjBdOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGF1dG8gc3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShyZXF1ZXN0LCBw
bHVnaW4sIHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW0KaW5kZXgg
NmI1NmQ3MzBmYzVmOGE1NzJkN2IyOTQzODlmOTczZDNhOTk0YjQwMy4uN2I4MmRlZjA2YWYwYzEw
OWUyNzgwOGYyY2Y3YjUwZjExZWNiMGQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQpAQCAtNTcyLDEzICs1NzIs
MTIgQEAgLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkUmVz
cG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb24KICAgICBlbHNlIHsKICAgICAgICAgLy8gQ2Fu
Y2VsIHRoZSBsb2FkIHNpbmNlIHRoaXMgcGx1Zy1pbiBkb2VzIGl0cyBvd24gbG9hZGluZy4KICAg
ICAgICAgLy8gRklYTUU6IFNlZSA8cmRhcjovL3Byb2JsZW0vNDI1ODAwOD4gZm9yIGEgcHJvYmxl
bSB3aXRoIHRoaXMuCi0gICAgICAgIE5TRXJyb3IgKmVycm9yID0gW1tOU0Vycm9yIGFsbG9jXSBf
aW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6V2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZAor
ICAgICAgICBhdXRvIGVycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBs
dWdpbkVycm9yQ29kZTpXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRVUkw6
W3Jlc3BvbnNlIFVSTF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGx1Z2luUGFnZVVSTDpuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luTmFtZTpuaWwgLy8gRklYTUU6IEdl
dCB0aGlzIGZyb20gc29tZXdoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6W3Jlc3BvbnNlIE1JTUVUeXBlXV07Ci0g
ICAgICAgIFtfZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5jYW5jZWxNYWluUmVzb3VyY2VM
b2FkKGVycm9yKTsKLSAgICAgICAgW2Vycm9yIHJlbGVhc2VdOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOltyZXNwb25z
ZSBNSU1FVHlwZV1dKTsKKyAgICAgICAgW19kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPmNh
bmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IuZ2V0KCkpOwogICAgIH0gICAgICAgIAogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFi
YXNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFz
ZS5tbQppbmRleCAwOTNlNjk3NWQ0MWVjODI4YWI1MmNmMzhkNGI5NjZkOGYzZjk1ZTE1Li5kYTA0
ODY5ZGRjMTVhNDZkMDVmOWI2ZTllNjYwNzI5NGRkYWQ5ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0KQEAgLTI4Nyw3
ICsyODcsNyBAQCAtICh2b2lkKXJlZnJlc2gKICAgICAgICAgICAgIFtzZWxmIF9hZGRQbHVnaW46
cGx1Z2luXTsKIAogICAgICAgICAvLyBCdWlsZCBhIGxpc3Qgb2YgTUlNRSB0eXBlcy4KLSAgICAg
ICAgTlNNdXRhYmxlU2V0ICpNSU1FVHlwZXMgPSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07
CisgICAgICAgIGF1dG8gTUlNRVR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10g
aW5pdF0pOwogICAgICAgICBwbHVnaW5FbnVtZXJhdG9yID0gW3BsdWdpbnMgb2JqZWN0RW51bWVy
YXRvcl07CiAgICAgICAgIHdoaWxlICgocGx1Z2luID0gW3BsdWdpbkVudW1lcmF0b3IgbmV4dE9i
amVjdF0pKSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBwbHVnaW5JbmZvID0gW3BsdWdpbiBw
bHVnaW5JbmZvXTsKQEAgLTMxOCw3ICszMTgsNiBAQCAtICh2b2lkKXJlZnJlc2gKICAgICAgICAg
ICAgIGlmIChzZWxmID09IHNoYXJlZERhdGFiYXNlKQogICAgICAgICAgICAgICAgIFtXZWJWaWV3
IF9yZWdpc3RlclBsdWdpbk1JTUVUeXBlOk1JTUVUeXBlXTsKICAgICAgICAgfQotICAgICAgICBb
TUlNRVR5cGVzIHJlbGVhc2VdOwogICAgIH0KIH0KIApAQCAtNDUyLDE3ICs0NTEsMTYgQEAgLSAo
dm9pZClfcmVtb3ZlUGx1Z2luOihXZWJCYXNlUGx1Z2luUGFja2FnZSAqKXBsdWdpbgogICAgIC8v
IFJlbW92ZSBwbHVnLWluIGZyb20gZGF0YWJhc2UKICAgICBOU1N0cmluZyAqcGx1Z2luUGF0aCA9
IFtwbHVnaW4gcGF0aF07CiAgICAgQVNTRVJUKHBsdWdpblBhdGgpOwotICAgIFtwbHVnaW4gcmV0
YWluXTsKKyAgICBhdXRvIHByb3RlY3RlZFBsdWdpbiA9IHJldGFpblB0cihwbHVnaW4pOwogICAg
IFtwbHVnaW5zIHJlbW92ZU9iamVjdEZvcktleTpwbHVnaW5QYXRoXTsKICAgICBbcGx1Z2luIHdh
c1JlbW92ZWRGcm9tUGx1Z2luRGF0YWJhc2U6c2VsZl07Ci0gICAgW3BsdWdpbiByZWxlYXNlXTsK
IH0KIAogLSAoTlNNdXRhYmxlU2V0ICopX3NjYW5Gb3JOZXdQbHVnaW5zCiB7CiAgICAgTlNNdXRh
YmxlU2V0ICpuZXdQbHVnaW5zID0gW05TTXV0YWJsZVNldCBzZXRdOwogICAgIE5TRW51bWVyYXRv
ciAqZGlyZWN0b3J5RW51bWVyYXRvciA9IFtbc2VsZiBfcGx1Z0luUGF0aHNdIG9iamVjdEVudW1l
cmF0b3JdOwotICAgIE5TTXV0YWJsZVNldCAqdW5pcXVlRmlsZW5hbWVzID0gW1tOU011dGFibGVT
ZXQgYWxsb2NdIGluaXRdOworICAgIGF1dG8gdW5pcXVlRmlsZW5hbWVzID0gYWRvcHROUyhbW05T
TXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwogICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2Vy
ID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwogICAgIE5TU3RyaW5nICpwbHVnaW5E
aXJlY3Rvcnk7CiAgICAgd2hpbGUgKChwbHVnaW5EaXJlY3RvcnkgPSBbZGlyZWN0b3J5RW51bWVy
YXRvciBuZXh0T2JqZWN0XSkgIT0gbmlsKSB7CkBAIC00ODQsNyArNDgyLDYgQEAgLSAoTlNNdXRh
YmxlU2V0ICopX3NjYW5Gb3JOZXdQbHVnaW5zCiAgICAgICAgICAgICAgICAgW25ld1BsdWdpbnMg
YWRkT2JqZWN0OnBsdWdpblBhY2thZ2VdOwogICAgICAgICB9CiAgICAgfQotICAgIFt1bmlxdWVG
aWxlbmFtZXMgcmVsZWFzZV07CiAgICAgCiAgICAgcmV0dXJuIG5ld1BsdWdpbnM7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQubW0KaW5kZXggODZhZmEwZTlkMzdhY2ZlM2VkMzRjYzA0YzJmMDA0ZjFlNWRlY2Vk
NS4uZDc5NDA3MTIzMmUyMmU4MzQ0MWM1ZjhiZTM4MGI0OGY5YWVlZjRiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQpAQCAtMjUzLDUxICsyNTMsMzggQEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVh
dGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMKICNl
bmRpZgogICAgIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDp3aW5kb3dGZWF0dXJlczopXSkgewot
ICAgICAgICBOU051bWJlciAqeCA9IGZlYXR1cmVzLnggPyBbW05TTnVtYmVyIGFsbG9jXSBpbml0
V2l0aEZsb2F0OipmZWF0dXJlcy54XSA6IG5pbDsKLSAgICAgICAgTlNOdW1iZXIgKnkgPSBmZWF0
dXJlcy55ID8gW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMueV0gOiBu
aWw7Ci0gICAgICAgIE5TTnVtYmVyICp3aWR0aCA9IGZlYXR1cmVzLndpZHRoID8gW1tOU051bWJl
ciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMud2lkdGhdIDogbmlsOwotICAgICAgICBO
U051bWJlciAqaGVpZ2h0ID0gZmVhdHVyZXMuaGVpZ2h0ID8gW1tOU051bWJlciBhbGxvY10gaW5p
dFdpdGhGbG9hdDoqZmVhdHVyZXMuaGVpZ2h0XSA6IG5pbDsKLSAgICAgICAgTlNOdW1iZXIgKm1l
bnVCYXJWaXNpYmxlID0gW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLm1l
bnVCYXJWaXNpYmxlXTsKLSAgICAgICAgTlNOdW1iZXIgKnN0YXR1c0JhclZpc2libGUgPSBbW05T
TnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZV07Ci0g
ICAgICAgIE5TTnVtYmVyICp0b29sQmFyVmlzaWJsZSA9IFtbTlNOdW1iZXIgYWxsb2NdIGluaXRX
aXRoQm9vbDpmZWF0dXJlcy50b29sQmFyVmlzaWJsZV07Ci0gICAgICAgIE5TTnVtYmVyICpzY3Jv
bGxiYXJzVmlzaWJsZSA9IFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy5z
Y3JvbGxiYXJzVmlzaWJsZV07Ci0gICAgICAgIE5TTnVtYmVyICpyZXNpemFibGUgPSBbW05TTnVt
YmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMucmVzaXphYmxlXTsKLSAgICAgICAgTlNO
dW1iZXIgKmZ1bGxzY3JlZW4gPSBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVy
ZXMuZnVsbHNjcmVlbl07Ci0gICAgICAgIE5TTnVtYmVyICpkaWFsb2cgPSBbW05TTnVtYmVyIGFs
bG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMuZGlhbG9nXTsKKyAgICAgICAgYXV0byB4ID0gZmVh
dHVyZXMueCA/IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVy
ZXMueF0pIDogbmlsOworICAgICAgICBhdXRvIHkgPSBmZWF0dXJlcy55ID8gYWRvcHROUyhbW05T
TnVtYmVyIGFsbG9jXSBpbml0V2l0aEZsb2F0OipmZWF0dXJlcy55XSkgOiBuaWw7CisgICAgICAg
IGF1dG8gd2lkdGggPSBmZWF0dXJlcy53aWR0aCA/IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10g
aW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMud2lkdGhdKSA6IG5pbDsKKyAgICAgICAgYXV0byBoZWln
aHQgPSBmZWF0dXJlcy5oZWlnaHQgPyBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRo
RmxvYXQ6KmZlYXR1cmVzLmhlaWdodF0pIDogbmlsOworICAgICAgICBhdXRvIG1lbnVCYXJWaXNp
YmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMubWVu
dUJhclZpc2libGVdKTsKKyAgICAgICAgYXV0byBzdGF0dXNCYXJWaXNpYmxlID0gYWRvcHROUyhb
W05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZV0p
OworICAgICAgICBhdXRvIHRvb2xCYXJWaXNpYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9j
XSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMudG9vbEJhclZpc2libGVdKTsKKyAgICAgICAgYXV0byBz
Y3JvbGxiYXJzVmlzaWJsZSA9IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhCb29s
OmZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlXSk7CisgICAgICAgIGF1dG8gcmVzaXphYmxlID0g
YWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMucmVzaXphYmxl
XSk7CisgICAgICAgIGF1dG8gZnVsbHNjcmVlbiA9IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10g
aW5pdFdpdGhCb29sOmZlYXR1cmVzLmZ1bGxzY3JlZW5dKTsKKyAgICAgICAgYXV0byBkaWFsb2cg
PSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy5kaWFsb2dd
KTsKICAgICAgICAgCi0gICAgICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3RGZWF0dXJlcyA9
IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVCYXJWaXNpYmxl
LCBAIm1lbnVCYXJWaXNpYmxlIiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0dXNCYXJWaXNpYmxlLCBAInN0YXR1c0JhclZpc2libGUiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbEJhclZpc2libGUsIEAi
dG9vbEJhclZpc2libGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2Nyb2xsYmFyc1Zpc2libGUsIEAic2Nyb2xsYmFyc1Zpc2libGUiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXphYmxlLCBAInJlc2l6YWJs
ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2Ny
ZWVuLCBAImZ1bGxzY3JlZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlhbG9nLCBAImRpYWxvZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuaWxdOworICAgICAgICBhdXRvIGRpY3RGZWF0dXJlcyA9IGFkb3B0
TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudUJhclZpc2li
bGUuZ2V0KCksIEAibWVudUJhclZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzQmFyVmlzaWJsZS5nZXQoKSwgQCJzdGF0dXNCYXJWaXNp
YmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xC
YXJWaXNpYmxlLmdldCgpLCBAInRvb2xCYXJWaXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGJhcnNWaXNpYmxlLmdldCgpLCBAInNjcm9s
bGJhcnNWaXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc2l6YWJsZS5nZXQoKSwgQCJyZXNpemFibGUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlbi5nZXQoKSwgQCJmdWxsc2NyZWVuIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxvZy5nZXQo
KSwgQCJkaWFsb2ciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbmlsXSk7CiAgICAgICAgIAogICAgICAgICBpZiAoeCkKLSAgICAgICAgICAgIFtkaWN0RmVh
dHVyZXMgc2V0T2JqZWN0OnggZm9yS2V5OkAieCJdOworICAgICAgICAgICAgW2RpY3RGZWF0dXJl
cyBzZXRPYmplY3Q6eC5nZXQoKSBmb3JLZXk6QCJ4Il07CiAgICAgICAgIGlmICh5KQotICAgICAg
ICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6eSBmb3JLZXk6QCJ5Il07CisgICAgICAgICAg
ICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDp5LmdldCgpIGZvcktleTpAInkiXTsKICAgICAgICAg
aWYgKHdpZHRoKQotICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6d2lkdGggZm9y
S2V5OkAid2lkdGgiXTsKKyAgICAgICAgICAgIFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0OndpZHRo
LmdldCgpIGZvcktleTpAIndpZHRoIl07CiAgICAgICAgIGlmIChoZWlnaHQpCi0gICAgICAgICAg
ICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDpoZWlnaHQgZm9yS2V5OkAiaGVpZ2h0Il07CisgICAg
ICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDpoZWlnaHQuZ2V0KCkgZm9yS2V5OkAiaGVp
Z2h0Il07CiAgICAgICAgIAotICAgICAgICBuZXdXZWJWaWV3ID0gQ2FsbFVJRGVsZWdhdGUobV93
ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6d2luZG93
RmVhdHVyZXM6KSwgbmlsLCBkaWN0RmVhdHVyZXMpOwotICAgICAgICAKLSAgICAgICAgW2RpY3RG
ZWF0dXJlcyByZWxlYXNlXTsKLSAgICAgICAgW3ggcmVsZWFzZV07Ci0gICAgICAgIFt5IHJlbGVh
c2VdOwotICAgICAgICBbd2lkdGggcmVsZWFzZV07Ci0gICAgICAgIFtoZWlnaHQgcmVsZWFzZV07
Ci0gICAgICAgIFttZW51QmFyVmlzaWJsZSByZWxlYXNlXTsKLSAgICAgICAgW3N0YXR1c0JhclZp
c2libGUgcmVsZWFzZV07Ci0gICAgICAgIFt0b29sQmFyVmlzaWJsZSByZWxlYXNlXTsKLSAgICAg
ICAgW3Njcm9sbGJhcnNWaXNpYmxlIHJlbGVhc2VdOwotICAgICAgICBbcmVzaXphYmxlIHJlbGVh
c2VdOwotICAgICAgICBbZnVsbHNjcmVlbiByZWxlYXNlXTsKLSAgICAgICAgW2RpYWxvZyByZWxl
YXNlXTsKKyAgICAgICAgbmV3V2ViVmlldyA9IENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNl
bGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OndpbmRvd0ZlYXR1cmVzOiks
IG5pbCwgZGljdEZlYXR1cmVzLmdldCgpKTsKICAgICB9IGVsc2UgaWYgKGZlYXR1cmVzLmRpYWxv
ZyAmJiBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0
ZVdlYlZpZXdNb2RhbERpYWxvZ1dpdGhSZXF1ZXN0OildKSB7CiAgICAgICAgIG5ld1dlYlZpZXcg
PSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZp
ZXdNb2RhbERpYWxvZ1dpdGhSZXF1ZXN0OiksIG5pbCk7CiAgICAgfSBlbHNlIHsKQEAgLTQ2Mywy
NSArNDUwLDIzIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2CiAgICAgfQogCiAgICAgTlNTdHJp
bmcgKm1lc3NhZ2VTb3VyY2UgPSBzdHJpbmdGb3JNZXNzYWdlU291cmNlKHNvdXJjZSk7Ci0gICAg
TlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRo
T2JqZWN0c0FuZEtleXM6CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHROUyhbW05TRGljdGlv
bmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgKE5TU3RyaW5nICop
bWVzc2FnZSwgQCJtZXNzYWdlIiwKICAgICAgICAgQChsaW5lTnVtYmVyKSwgQCJsaW5lTnVtYmVy
IiwKICAgICAgICAgQChjb2x1bW5OdW1iZXIpLCBAImNvbHVtbk51bWJlciIsCiAgICAgICAgIChO
U1N0cmluZyAqKXNvdXJjZVVSTCwgQCJzb3VyY2VVUkwiLAogICAgICAgICBtZXNzYWdlU291cmNl
LCBAIk1lc3NhZ2VTb3VyY2UiLAogICAgICAgICBzdHJpbmdGb3JNZXNzYWdlTGV2ZWwobGV2ZWwp
LCBAIk1lc3NhZ2VMZXZlbCIsCi0gICAgICAgIE5VTExdOworICAgICAgICBOVUxMXSk7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtbW21fd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZv
cndhcmRlcl0gYXN5bmNGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGFkZE1lc3NhZ2VUb0Nv
bnNvbGU6ZGljdGlvbmFyeSB3aXRoU291cmNlOm1lc3NhZ2VTb3VyY2VdOworICAgIFtbW21fd2Vi
VmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gYXN5bmNGb3J3YXJkZXJdIHdlYlZpZXc6bV93
ZWJWaWV3IGFkZE1lc3NhZ2VUb0NvbnNvbGU6ZGljdGlvbmFyeS5nZXQoKSB3aXRoU291cmNlOm1l
c3NhZ2VTb3VyY2VdOwogI2Vsc2UKICAgICBpZiAocmVzcG9uZHNUb05ld1NlbGVjdG9yKQotICAg
ICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCBkaWN0aW9uYXJ5LCBtZXNz
YWdlU291cmNlKTsKKyAgICAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwg
ZGljdGlvbmFyeS5nZXQoKSwgbWVzc2FnZVNvdXJjZSk7CiAgICAgZWxzZQotICAgICAgICBDYWxs
VUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCBkaWN0aW9uYXJ5KTsKKyAgICAgICAgQ2Fs
bFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3RvciwgZGljdGlvbmFyeS5nZXQoKSk7CiAjZW5k
aWYKLQotICAgIFtkaWN0aW9uYXJ5IHJlbGVhc2VdOwogfQogCiBib29sIFdlYkNocm9tZUNsaWVu
dDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkKQEAgLTY2OCw5ICs2NTMsOCBAQCB2
b2lkIFdlYkNocm9tZUNsaWVudDo6dW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlckVtYgogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6bW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnNpZ25lZCBtb2Rp
ZmllckZsYWdzLCBjb25zdCBTdHJpbmcmIHRvb2xUaXAsIFRleHREaXJlY3Rpb24pCiB7Ci0gICAg
V2ViRWxlbWVudERpY3Rpb25hcnkgKmVsZW1lbnQgPSBbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6cmVzdWx0XTsKLSAgICBbbV93ZWJWaWV3IF9tb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudDplbGVtZW50IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFnc107
Ci0gICAgW2VsZW1lbnQgcmVsZWFzZV07CisgICAgYXV0byBlbGVtZW50ID0gYWRvcHROUyhbW1dl
YkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6cmVzdWx0XSk7
CisgICAgW21fd2ViVmlldyBfbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6ZWxlbWVudC5nZXQoKSBt
b2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3NdOwogICAgIHNldFRvb2xUaXAodG9vbFRpcCk7CiB9
CiAKQEAgLTY5NCw5ICs2NzgsOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRh
YmFzZVF1b3RhKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZQogewogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCi0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9y
aWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0
eU9yaWdpbjomZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKV07Ci0gICAgQ2FsbFVJ
RGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpmcmFtZTpleGNlZWRlZERhdGFi
YXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjpkYXRhYmFzZTopLCBraXQoJmZyYW1lKSwgd2ViT3Jp
Z2luLCAoTlNTdHJpbmcgKilkYXRhYmFzZU5hbWUpOwotICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07
CisgICAgYXV0byB3ZWJPcmlnaW4gPSBhZG9wdE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2Nd
IF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjomZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKV0pOworICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdl
YlZpZXc6ZnJhbWU6ZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46ZGF0YWJh
c2U6KSwga2l0KCZmcmFtZSksIHdlYk9yaWdpbi5nZXQoKSwgKE5TU3RyaW5nICopZGF0YWJhc2VO
YW1lKTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KQEAgLTcxMCw5ICs2OTMs
OCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLAogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwogCi0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJp
dHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjomb3JpZ2luXTsK
LSAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmV4Y2VlZGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46dG90YWxTcGFjZU5l
ZWRlZDopLCB3ZWJPcmlnaW4sIHN0YXRpY19jYXN0PE5TVUludGVnZXI+KHRvdGFsU3BhY2VOZWVk
ZWQpKTsKLSAgICBbd2ViT3JpZ2luIHJlbGVhc2VdOworICAgIGF1dG8gd2ViT3JpZ2luID0gYWRv
cHROUyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlP
cmlnaW46Jm9yaWdpbl0pOworICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9y
KHdlYlZpZXc6ZXhjZWVkZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9y
aWdpbjp0b3RhbFNwYWNlTmVlZGVkOiksIHdlYk9yaWdpbi5nZXQoKSwgc3RhdGljX2Nhc3Q8TlNV
SW50ZWdlcj4odG90YWxTcGFjZU5lZWRlZCkpOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogfQpAQCAtNzgyLDE1ICs3NjQsMTQgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJ1bk9w
ZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJiBjaG9vc2VyKQogewogICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogICAgIEJPT0wgYWxsb3dNdWx0aXBsZUZpbGVzID0gY2hvb3Nlci5z
ZXR0aW5ncygpLmFsbG93c011bHRpcGxlRmlsZXM7Ci0gICAgV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIgKmxpc3RlbmVyID0gW1tXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciBhbGxvY10gaW5p
dFdpdGhDaG9vc2VyOmNob29zZXJdOworICAgIGF1dG8gbGlzdGVuZXIgPSBhZG9wdE5TKFtbV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ2hvb3NlcjpjaG9vc2VyXSk7
CiAgICAgaWQgZGVsZWdhdGUgPSBbbV93ZWJWaWV3IFVJRGVsZWdhdGVdOwogICAgIGlmIChbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbEZv
ckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6YWxsb3dNdWx0aXBsZUZpbGVzOildKQotICAg
ICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5Q
YW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6YWxsb3dNdWx0aXBsZUZpbGVzOiks
IGxpc3RlbmVyLCBhbGxvd011bHRpcGxlRmlsZXMpOworICAgICAgICBDYWxsVUlEZWxlZ2F0ZSht
X3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRo
UmVzdWx0TGlzdGVuZXI6YWxsb3dNdWx0aXBsZUZpbGVzOiksIGxpc3RlbmVyLmdldCgpLCBhbGxv
d011bHRpcGxlRmlsZXMpOwogICAgIGVsc2UgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRM
aXN0ZW5lcjopXSkKLSAgICAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Io
d2ViVmlldzpydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOiksIGxp
c3RlbmVyKTsKKyAgICAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2Vi
VmlldzpydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOiksIGxpc3Rl
bmVyLmdldCgpKTsKICAgICBlbHNlCiAgICAgICAgIFtsaXN0ZW5lciBjYW5jZWxdOwotICAgIFts
aXN0ZW5lciByZWxlYXNlXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAg
LTEwNzksOSArMTA2MCw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0
b3Iod2ViVmlldzpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQ6bGlzdGVuZXI6KTsKICAgICBpZiAo
W1ttX3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgewot
ICAgICAgICBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIqIGxpc3RlbmVyID0gW1tXZWJLaXRGdWxs
U2NyZWVuTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudDplbGVtZW50XTsKLSAgICAgICAg
Q2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwga2l0KGVsZW1lbnQpLCBsaXN0ZW5l
cik7Ci0gICAgICAgIFtsaXN0ZW5lciByZWxlYXNlXTsKKyAgICAgICAgYXV0byBsaXN0ZW5lciA9
IGFkb3B0TlMoW1tXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVu
dDplbGVtZW50XSk7CisgICAgICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3Is
IGtpdChlbGVtZW50KSwgbGlzdGVuZXIuZ2V0KCkpOwogICAgIH0KICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggMDFlYzAzZWE4N2JjNDEw
NjJiYjZkZjU1YjU4MGE5ZWFhYWZjZWJlMS4uMGExNjQ5YzBhODIzYTU5MDhhMzMzMDI2M2QyN2Vj
MDc0ODFkOWNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQg
X1dlYkNyZWF0ZUZyYWdtZW50KERvY3VtZW50JiwgTlNBdHRyaWJ1dGVkU3RyaW5nICosIEZyYWdt
ZW50QW5kUmVzb3VyY2VzJikKIHN0YXRpYyBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXNGb3JBdHRy
aWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBuZWVkcyB0
byBiZSBrZXB0IGluIHN5bmMgd2l0aCBpZGVudGljYWxseSBuYW1lZCBvbmUgaW4gV2ViQ29yZSwg
d2hpY2ggaXMgdXNlZCBvbiBuZXdlciBPUyB2ZXJzaW9ucy4KLSAgICBOU011dGFibGVBcnJheSAq
ZXhjbHVkZWRFbGVtZW50cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0
czoKKyAgICBhdXRvIGV4Y2x1ZGVkRWxlbWVudHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czoKICAgICAgICAgLy8gT21pdCBzdHlsZSBzaW5jZSB3ZSB3
YW50IHN0eWxlIHRvIGJlIGlubGluZSBzbyB0aGUgZnJhZ21lbnQgY2FuIGJlIGVhc2lseSBpbnNl
cnRlZC4KICAgICAgICAgQCJzdHlsZSIsCiAgICAgICAgIC8vIE9taXQgeG1sIHNvIHRoZSByZXN1
bHQgaXMgbm90IFhIVE1MLgpAQCAtNDQ3LDE2ICs0NDcsMTQgQEAgc3RhdGljIE5TRGljdGlvbmFy
eSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKICAgICAgICAgLy8g
T21pdCBvYmplY3Qgc28gbm8gZmlsZSBhdHRhY2htZW50cyBhcmUgcGFydCBvZiB0aGUgZnJhZ21l
bnQuCiAgICAgICAgIEAib2JqZWN0IiwKICNlbmRpZgotICAgICAgICBuaWxdOworICAgICAgICBu
aWxdKTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxl
ZCgpKQogICAgICAgICBbZXhjbHVkZWRFbGVtZW50cyBhZGRPYmplY3Q6QCJvYmplY3QiXTsKICNl
bmRpZgogCi0gICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gQHsgTlNFeGNsdWRlZEVsZW1l
bnRzRG9jdW1lbnRBdHRyaWJ1dGU6IGV4Y2x1ZGVkRWxlbWVudHMgfTsKLQotICAgIFtleGNsdWRl
ZEVsZW1lbnRzIHJlbGVhc2VdOworICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IEB7IE5T
RXhjbHVkZWRFbGVtZW50c0RvY3VtZW50QXR0cmlidXRlOiBleGNsdWRlZEVsZW1lbnRzLmdldCgp
IH07CiAKICAgICByZXR1cm4gZGljdGlvbmFyeTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KaW5kZXggZjc1ZjgwYzY3NGNhMDAzMTM2MzYzM2RkNTM1MTUxZWU0MGEwNjFkNS4uNTlmODMy
NjdjZjMxNzg1Mzc5YzU0ZmMxM2U4YWRiOTY5ZTEyNTI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KQEAgLTI1OCw3ICsyNTgsNyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpm
b3JjZUxheW91dE9uUmVzdG9yZUZyb21CYWNrRm9yd2FyZENhY2hlKCkKIAogdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Zm9yY2VMYXlvdXRGb3JOb25IVE1MKCkKIHsKLSAgICBXZWJGcmFtZVZp
ZXcgKnRoaXNWaWV3ID0gbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldzsKKyAgICBh
dXRvIHRoaXNWaWV3ID0gbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldzsKICAgICBO
U1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKnRoaXNEb2N1bWVudFZpZXcgPSBbdGhpc1ZpZXcgZG9j
dW1lbnRWaWV3XTsKICAgICBBU1NFUlQodGhpc0RvY3VtZW50VmlldyAhPSBuaWwpOwogICAgIApA
QCAtODM2LDExICs4MzYsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRpb25TZXQ8V2ViQ29yZTo6TGEKIFdlYkNvcmU6OkZy
YW1lKiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNv
cmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBXZWJDb3JlOjpOZXdGcmFtZU9wZW5lclBvbGljeSkKIHsK
ICAgICBXZWJWaWV3ICpjdXJyZW50V2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQo
KSk7Ci0gICAgTlNEaWN0aW9uYXJ5ICpmZWF0dXJlcyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0XTsKKyAgICBhdXRvIGZlYXR1cmVzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10g
aW5pdF0pOwogICAgIFdlYlZpZXcgKm5ld1dlYlZpZXcgPSBbW2N1cnJlbnRXZWJWaWV3IF9VSURl
bGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OmN1cnJlbnRXZWJWaWV3IAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0
Om5pbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdpbmRvd0ZlYXR1cmVzOmZlYXR1cmVzXTsKLSAgICBbZmVhdHVyZXMgcmVsZWFzZV07
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2luZG93RmVhdHVyZXM6ZmVhdHVyZXMuZ2V0KCldOwogICAgIAogI2lmIFVTRShQTFVHSU5f
SE9TVF9QUk9DRVNTKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAobmV3
V2ViVmlldykKQEAgLTEwMDgsOSArMTAwNyw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIE5TRGF0YSAqbnNEYXRhID0gW1tOU0RhdGEg
YWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVl
V2hlbkRvbmU6Tk9dOwotICAgIFtkYXRhU291cmNlKGxvYWRlcikgX3JlY2VpdmVkRGF0YTpuc0Rh
dGFdOwotICAgIFtuc0RhdGEgcmVsZWFzZV07CisgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5n
dGggZnJlZVdoZW5Eb25lOk5PXSk7CisgICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWRE
YXRhOm5zRGF0YS5nZXQoKV07CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyKQpAQCAtMTMxOSwxMCAr
MTMxNywxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJj
ZVJlcGxhY2VtZW50KCkKICAgICAvLyBhIG5vbi1lZGl0b3IgaXMgZmlyc3RSZXBvbmRlciBpdCB3
aWxsIG5vdCBiZSBhZmZlY3RlZCBieSBlbmRFZGl0aW5nRm9yOi4KICAgICAvLyBQb3RlbnRpYWxs
eSBvbmUgZGF5IHNvbWVvbmUgY291bGQgd3JpdGUgYSBEb2NWaWV3IHdob3NlIGVkaXRvcnMgd2Vy
ZSBub3QgYWxsCiAgICAgLy8gcmVwbGFjZWQgYnkgbG9hZGluZyBuZXcgY29udGVudCwgYnV0IHRo
YXQgZG9lcyBub3QgYXBwbHkgY3VycmVudGx5LgotICAgIE5TVmlldyAqZnJhbWVWaWV3ID0gbV93
ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldzsKKyAgICBhdXRvIGZyYW1lVmlldyA9IG1f
d2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXc7CiAgICAgTlNXaW5kb3cgKndpbmRvdyA9
IFtmcmFtZVZpZXcgd2luZG93XTsKICAgICBOU1Jlc3BvbmRlciAqZmlyc3RSZXNwID0gW3dpbmRv
dyBmaXJzdFJlc3BvbmRlcl07Ci0gICAgaWYgKFtmaXJzdFJlc3AgaXNLaW5kT2ZDbGFzczpbTlNW
aWV3IGNsYXNzXV0gJiYgWyhOU1ZpZXcgKilmaXJzdFJlc3AgaXNEZXNjZW5kYW50T2Y6ZnJhbWVW
aWV3XSkKKyAgICBpZiAoW2ZpcnN0UmVzcCBpc0tpbmRPZkNsYXNzOltOU1ZpZXcgY2xhc3NdXSAm
JiBbKE5TVmlldyAqKWZpcnN0UmVzcCBpc0Rlc2NlbmRhbnRPZjpmcmFtZVZpZXcuZ2V0KCldKQog
ICAgICAgICBbd2luZG93IGVuZEVkaXRpbmdGb3I6Zmlyc3RSZXNwXTsKICNlbmRpZgogfQpAQCAt
MTMzMSw5ICsxMzI5LDggQEAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2UKIHsKICAgICBhdXRvIGxv
YWRlciA9IFdlYkRvY3VtZW50TG9hZGVyTWFjOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURh
dGEpOwogCi0gICAgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZSA9IFtbV2ViRGF0YVNvdXJjZSBh
bGxvY10gX2luaXRXaXRoRG9jdW1lbnRMb2FkZXI6bG9hZGVyLmNvcHlSZWYoKV07Ci0gICAgbG9h
ZGVyLT5zZXREYXRhU291cmNlKGRhdGFTb3VyY2UsIGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQo
KSkpOwotICAgIFtkYXRhU291cmNlIHJlbGVhc2VdOworICAgIGF1dG8gZGF0YVNvdXJjZSA9IGFk
b3B0TlMoW1tXZWJEYXRhU291cmNlIGFsbG9jXSBfaW5pdFdpdGhEb2N1bWVudExvYWRlcjpsb2Fk
ZXIuY29weVJlZigpXSk7CisgICAgbG9hZGVyLT5zZXREYXRhU291cmNlKGRhdGFTb3VyY2UuZ2V0
KCksIGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIFdURk1vdmUo
bG9hZGVyKTsKIH0KQEAgLTEzNjgsNyArMTM2NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBj
CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZy
YW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKiBjYWNoZWRGcmFtZSkKIHsKLSAgICBjYWNoZWRGcmFt
ZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEobWFrZVVuaXF1ZTxXZWJDYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YT4obV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldy5kb2N1bWVudFZp
ZXcpKTsKKyAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEobWFrZVVu
aXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4oW21fd2ViRnJhbWUtPl9wcml2YXRlLT53
ZWJGcmFtZVZpZXcgZG9jdW1lbnRWaWV3XSkpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhpcyBmcmFtZSBpcyBnb2luZyB0byBiZSBj
YWNoZWQuIFN0b3AgYWxsIHBsdWdpbnMuCkBAIC0xNDM1LDE1ICsxNDMyLDE0IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAg
IFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFt3
ZWJWaWV3IHJlbW92ZVBsdWdpbkluc3RhbmNlVmlld3NGb3I6KG1fd2ViRnJhbWUuZ2V0KCkpXTsK
ICAgICAKLSAgICBOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKmRvY3VtZW50VmlldyA9IFttX3dl
YkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3IF9tYWtlRG9jdW1lbnRWaWV3Rm9yRGF0YVNv
dXJjZTpkYXRhU291cmNlXTsKKyAgICBSZXRhaW5QdHI8TlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+
PiBkb2N1bWVudFZpZXcgPSBbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBfbWFr
ZURvY3VtZW50Vmlld0ZvckRhdGFTb3VyY2U6ZGF0YVNvdXJjZV07CiAjZWxzZQotICAgIE5TVmll
dyA8V2ViRG9jdW1lbnRWaWV3PiAqZG9jdW1lbnRWaWV3ID0gbmlsOworICAgIFJldGFpblB0cjxO
U1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4+IGRvY3VtZW50VmlldzsKIAogICAgIC8vIEZhc3QgcGF0
aCB0aGF0IHNraXBzIGluaXRpYWxpemF0aW9uIG9mIG9iamMgY2xhc3Mgb2JqZWN0cy4KICAgICBp
ZiAod2lsbFByb2R1Y2VIVE1MVmlldykgewotICAgICAgICBkb2N1bWVudFZpZXcgPSBbW1dlYkhU
TUxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOlttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJh
bWVWaWV3IGJvdW5kc11dOwotICAgICAgICBbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1l
VmlldyBfc2V0RG9jdW1lbnRWaWV3OmRvY3VtZW50Vmlld107Ci0gICAgICAgIFtkb2N1bWVudFZp
ZXcgcmVsZWFzZV07CisgICAgICAgIGRvY3VtZW50VmlldyA9IGFkb3B0TlMoW1tXZWJIVE1MVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmll
dyBib3VuZHNdXSk7CisgICAgICAgIFttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3
IF9zZXREb2N1bWVudFZpZXc6ZG9jdW1lbnRWaWV3LmdldCgpXTsKICAgICB9IGVsc2UKICAgICAg
ICAgZG9jdW1lbnRWaWV3ID0gW21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgX21h
a2VEb2N1bWVudFZpZXdGb3JEYXRhU291cmNlOmRhdGFTb3VyY2VdOwogI2VuZGlmCkBAIC0xNTcw
LDEwICsxNTY2LDkgQEAgTlNEaWN0aW9uYXJ5ICpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9u
RGljdGlvbmFyeShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWMKIAogICAgIGlmIChhdXRvIG1v
dXNlRXZlbnREYXRhID0gYWN0aW9uLm1vdXNlRXZlbnREYXRhKCkpIHsKICAgICAgICAgY29uc3Rl
eHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRU
ZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1
ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpBbGxv
d0NoaWxkRnJhbWVDb250ZW50IH07Ci0gICAgICAgIFdlYkVsZW1lbnREaWN0aW9uYXJ5ICplbGVt
ZW50ID0gW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxvY10KLSAgICAgICAgICAgIGluaXRXaXRo
SGl0VGVzdFJlc3VsdDpjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5ldmVudEhhbmRsZXIoKS5oaXRU
ZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50RGF0YS0+YWJzb2x1dGVMb2NhdGlvbiwgaGl0VHlw
ZSldOwotICAgICAgICBbcmVzdWx0IHNldE9iamVjdDplbGVtZW50IGZvcktleTpXZWJBY3Rpb25F
bGVtZW50S2V5XTsKLSAgICAgICAgW2VsZW1lbnQgcmVsZWFzZV07CisgICAgICAgIGF1dG8gZWxl
bWVudCA9IGFkb3B0TlMoW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxvY10KKyAgICAgICAgICAg
IGluaXRXaXRoSGl0VGVzdFJlc3VsdDpjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5ldmVudEhhbmRs
ZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50RGF0YS0+YWJzb2x1dGVMb2NhdGlv
biwgaGl0VHlwZSldKTsKKyAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6ZWxlbWVudC5nZXQoKSBm
b3JLZXk6V2ViQWN0aW9uRWxlbWVudEtleV07CiAKICAgICAgICAgaWYgKG1vdXNlRXZlbnREYXRh
LT5pc1RydXN0ZWQpCiAgICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpAKG1vdXNlRXZlbnRE
YXRhLT5idXR0b24pIGZvcktleTpXZWJBY3Rpb25CdXR0b25LZXldOwpAQCAtMTYxNCwxMCArMTYw
OSw5IEBAIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZUZyYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViCiAgICAgCiAgICAgQVNTRVJUKG1fd2ViRnJh
bWUpOwogICAgIAotICAgIFdlYkZyYW1lVmlldyAqY2hpbGRWaWV3ID0gW1tXZWJGcmFtZVZpZXcg
YWxsb2NdIGluaXRdOworICAgIGF1dG8gY2hpbGRWaWV3ID0gYWRvcHROUyhbW1dlYkZyYW1lVmll
dyBhbGxvY10gaW5pdF0pOwogICAgIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gcmVzdWx0
ID0gW1dlYkZyYW1lIF9jcmVhdGVTdWJmcmFtZVdpdGhPd25lckVsZW1lbnQ6Jm93bmVyRWxlbWVu
dCBmcmFtZU5hbWU6bmFtZSBmcmFtZVZpZXc6Y2hpbGRWaWV3XTsKLSAgICBbY2hpbGRWaWV3IHJl
bGVhc2VdOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gcmVzdWx0ID0gW1dlYkZyYW1lIF9j
cmVhdGVTdWJmcmFtZVdpdGhPd25lckVsZW1lbnQ6Jm93bmVyRWxlbWVudCBmcmFtZU5hbWU6bmFt
ZSBmcmFtZVZpZXc6Y2hpbGRWaWV3LmdldCgpXTsKIAogICAgIFdlYkZyYW1lICpuZXdGcmFtZSA9
IGtpdChyZXN1bHQuZ2V0KCkpOwogCkBAIC0xNjk5LDEyICsxNjkzLDExIEBAIHN0YXRpYyBOU1Zp
ZXcgKnBsdWdpblZpZXcoV2ViRnJhbWUgKmZyYW1lLCBXZWJQbHVnaW5QYWNrYWdlICpwbHVnaW5Q
YWNrYWdlLAogICAgIFdlYlBsdWdpbkNvbnRyb2xsZXIgKnBsdWdpbkNvbnRyb2xsZXIgPSBbZG9j
VmlldyBfcGx1Z2luQ29udHJvbGxlcl07CiAKICAgICAvLyBTdG9yZSBhdHRyaWJ1dGVzIGluIGEg
ZGljdGlvbmFyeSBzbyB0aGV5IGNhbiBiZSBwYXNzZWQgdG8gV2ViUGx1Z2lucy4KLSAgICBOU011
dGFibGVEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0V2l0aE9iamVjdHM6YXR0cmlidXRlVmFsdWVzIGZvcktleXM6YXR0cmlidXRlTmFtZXNd
OworICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHM6YXR0cmlidXRlVmFsdWVzIGZvcktleXM6YXR0cmlidXRlTmFt
ZXNdKTsKIAogICAgIFtwbHVnaW5QYWNrYWdlIGxvYWRdOwogICAgIENsYXNzIHZpZXdGYWN0b3J5
ID0gW3BsdWdpblBhY2thZ2Ugdmlld0ZhY3RvcnldOwogICAgIAotICAgIE5TVmlldyAqdmlldyA9
IG5pbDsKICAgICBOU0RpY3Rpb25hcnkgKmFyZ3VtZW50cyA9IG5pbDsKIAogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVjdG9yIikKQEAgLTE3MTQsNyArMTcwNyw3IEBAIElH
Tk9SRV9XQVJOSU5HU19FTkQKICAgICBpZiAoW3ZpZXdGYWN0b3J5IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocGx1Z0luVmlld1dpdGhBcmd1bWVudHM6KV0pIHsKICAgICAgICAgYXJndW1l
bnRzID0gQHsKICAgICAgICAgICAgIFdlYlBsdWdJbkJhc2VVUkxLZXk6IGJhc2VVUkwsCi0gICAg
ICAgICAgICBXZWJQbHVnSW5BdHRyaWJ1dGVzS2V5OiBhdHRyaWJ1dGVzLAorICAgICAgICAgICAg
V2ViUGx1Z0luQXR0cmlidXRlc0tleTogYXR0cmlidXRlcy5nZXQoKSwKICAgICAgICAgICAgIFdl
YlBsdWdJbkNvbnRhaW5lcktleTogcGx1Z2luQ29udHJvbGxlciwKICAgICAgICAgICAgIFdlYlBs
dWdJbk1vZGVLZXk6IEAobG9hZE1hbnVhbGx5ID8gV2ViUGx1Z0luTW9kZUZ1bGwgOiBXZWJQbHVn
SW5Nb2RlRW1iZWQpLAogICAgICAgICAgICAgV2ViUGx1Z0luU2hvdWxkTG9hZE1haW5SZXNvdXJj
ZUtleTogW05TTnVtYmVyIG51bWJlcldpdGhCb29sOiFsb2FkTWFudWFsbHldLApAQCAtMTcyNCwx
NyArMTcxNywxNCBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgfSBlbHNlIGlmIChbdmlld0Zh
Y3RvcnkgcmVzcG9uZHNUb1NlbGVjdG9yOm9sZFNlbGVjdG9yXSkgewogICAgICAgICBhcmd1bWVu
dHMgPSBAewogICAgICAgICAgICAgV2ViUGx1Z2luQmFzZVVSTEtleTogYmFzZVVSTCwKLSAgICAg
ICAgICAgIFdlYlBsdWdpbkF0dHJpYnV0ZXNLZXk6IGF0dHJpYnV0ZXMsCisgICAgICAgICAgICBX
ZWJQbHVnaW5BdHRyaWJ1dGVzS2V5OiBhdHRyaWJ1dGVzLmdldCgpLAogICAgICAgICAgICAgV2Vi
UGx1Z2luQ29udGFpbmVyS2V5OiBwbHVnaW5Db250cm9sbGVyLAogICAgICAgICAgICAgV2ViUGx1
Z0luQ29udGFpbmluZ0VsZW1lbnRLZXk6IGVsZW1lbnQsCiAgICAgICAgIH07CiAgICAgICAgIExP
RyhQbHVnaW5zLCAiYXJndW1lbnRzOlxuJUAiLCBhcmd1bWVudHMpOwogICAgIH0KIAotICAgIHZp
ZXcgPSBbcGx1Z2luQ29udHJvbGxlciBwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czphcmd1bWVudHMg
ZnJvbVBsdWdpblBhY2thZ2U6cGx1Z2luUGFja2FnZV07Ci0gICAgW2F0dHJpYnV0ZXMgcmVsZWFz
ZV07Ci0KLSAgICByZXR1cm4gdmlldzsKKyAgICByZXR1cm4gW3BsdWdpbkNvbnRyb2xsZXIgcGx1
Z0luVmlld1dpdGhBcmd1bWVudHM6YXJndW1lbnRzIGZyb21QbHVnaW5QYWNrYWdlOnBsdWdpblBh
Y2thZ2VdOwogfQogCiBjbGFzcyBQbHVnaW5XaWRnZXQgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z2lu
Vmlld0Jhc2UgewpAQCAtMTkwMiwxOCArMTg5MiwxNiBAQCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNp
egogICAgIFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OnBsdWdJblZpZXdXaXRoQXJn
dW1lbnRzOik7CiAgICAgaWYgKFtbd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0
b3I6c2VsZWN0b3JdKSB7CiAgICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzOmNyZWF0ZU5TQXJyYXkocGFyYW1WYWx1ZXMp
LmdldCgpIGZvcktleXM6YXR0cmlidXRlS2V5cy5nZXQoKV07Ci0gICAgICAgIE5TRGljdGlvbmFy
eSAqYXJndW1lbnRzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtl
eXM6CisgICAgICAgIGF1dG8gYXJndW1lbnRzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAgIGF0dHJpYnV0ZXMsIFdlYlBs
dWdJbkF0dHJpYnV0ZXNLZXksCiAgICAgICAgICAgICBAKGxvYWRNYW51YWxseSA/IFdlYlBsdWdJ
bk1vZGVGdWxsIDogV2ViUGx1Z0luTW9kZUVtYmVkKSwgV2ViUGx1Z0luTW9kZUtleSwKICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDohbG9hZE1hbnVhbGx5XSwgV2ViUGx1Z0lu
U2hvdWxkTG9hZE1haW5SZXNvdXJjZUtleSwKICAgICAgICAgICAgIGtpdCgmZWxlbWVudCksIFdl
YlBsdWdJbkNvbnRhaW5pbmdFbGVtZW50S2V5LAogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBiZSBwYXNzaW5nIGJhc2UgVVJMLCBzZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNTIxNT4uCiAgICAgICAgICAgICBwbHVnaW5VUkwsIFdlYlBsdWdJbkJh
c2VVUkxLZXksIC8vIHBsdWdpblVSTCBtaWdodCBiZSBuaWwsIHNvIGFkZCBpdCBsYXN0Ci0gICAg
ICAgICAgICBuaWxdOwotCi0gICAgICAgIE5TVmlldyAqdmlldyA9IENhbGxVSURlbGVnYXRlKHdl
YlZpZXcsIHNlbGVjdG9yLCBhcmd1bWVudHMpOworICAgICAgICAgICAgbmlsXSk7CiAKLSAgICAg
ICAgW2FyZ3VtZW50cyByZWxlYXNlXTsKKyAgICAgICAgTlNWaWV3ICp2aWV3ID0gQ2FsbFVJRGVs
ZWdhdGUod2ViVmlldywgc2VsZWN0b3IsIGFyZ3VtZW50cy5nZXQoKSk7CiAKICAgICAgICAgaWYg
KHZpZXcpCiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbHVnaW5XaWRnZXQodmll
dykpOwpAQCAtMTk4NywxMSArMTk3NSwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpegogICAg
ICAgICAgICAgICAgIHBsdWdpblBhZ2VVUkwgPSBVUkwoKTsKICAgICAgICAgICAgIE5TU3RyaW5n
ICpwbHVnaW5OYW1lID0gcGx1Z2luUGFja2FnZSA/IChOU1N0cmluZyAqKVtwbHVnaW5QYWNrYWdl
IHBsdWdpbkluZm9dLm5hbWUgOiBuaWw7CiAKLSAgICAgICAgICAgIE5TRXJyb3IgKmVycm9yID0g
W1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6ZXJyb3JDb2RlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZW50VVJMOnBsdWdpblVSTCBwbHVnaW5QYWdlVVJMOnBsdWdpblBhZ2VVUkwgcGx1Z2luTmFt
ZTpwbHVnaW5OYW1lIE1JTUVUeXBlOk1JTUVUeXBlXTsKKyAgICAgICAgICAgIGF1dG8gZXJyb3Ig
PSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJyb3JDb2RlOmVycm9y
Q29kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGVudFVSTDpwbHVnaW5VUkwgcGx1Z2luUGFnZVVSTDpwbHVnaW5QYWdlVVJM
IHBsdWdpbk5hbWU6cGx1Z2luTmFtZSBNSU1FVHlwZTpNSU1FVHlwZV0pOwogICAgICAgICAgICAg
Q2FsbFJlc291cmNlTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+cGx1Z0luRmFpbGVkV2l0
aEVycm9yRnVuYywgW21fd2ViRnJhbWUuZ2V0KCkgd2ViVmlld10sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQHNlbGVjdG9yKHdlYlZpZXc6cGx1Z0luRmFpbGVkV2l0aEVy
cm9yOmRhdGFTb3VyY2U6KSwgZXJyb3IsIFttX3dlYkZyYW1lLmdldCgpIF9kYXRhU291cmNlXSk7
Ci0gICAgICAgICAgICBbZXJyb3IgcmVsZWFzZV07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQHNlbGVjdG9yKHdlYlZpZXc6cGx1Z0luRmFpbGVkV2l0aEVycm9yOmRhdGFT
b3VyY2U6KSwgZXJyb3IuZ2V0KCksIFttX3dlYkZyYW1lLmdldCgpIF9kYXRhU291cmNlXSk7CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQubW0KaW5kZXggYmRhMTRiNGEyNmJiYmE3NzA0YmY1NmRlMTE0ZjA5YWM1Mjg4YjQ4OS4uMWVk
MTQzOGFjNjZlMDU1YTEyZWZmMTg2NzUzOWNiNTFkOTJjMTcwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQubW0KQEAgLTEyMSwxMyArMTIxLDEwIEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGll
bnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dl
YlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46JmZy
YW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpXTsKLSAgICBXZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyKiBsaXN0ZW5lciA9IFtbV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBh
bGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvbjpnZW9sb2NhdGlvbl07CisgICAgYXV0byB3ZWJPcmln
aW4gPSBhZG9wdE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVT
ZWN1cml0eU9yaWdpbjomZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCldKTsKKyAg
ICBhdXRvIGxpc3RlbmVyID0gYWRvcHROUyhbW1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIg
YWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb246Z2VvbG9jYXRpb25dKTsKIAotICAgIENhbGxVSURl
bGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbiwga2l0KGZyYW1lKSwgbGlzdGVu
ZXIpOwotCi0gICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKLSAgICBbbGlzdGVuZXIgcmVsZWFzZV07
CisgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2luLmdldCgp
LCBraXQoZnJhbWUpLCBsaXN0ZW5lci5nZXQoKSk7CiAjZWxzZQogICAgIFJldGFpblB0cjxXZWJH
ZW9sb2NhdGlvblByb3ZpZGVySW5pdGlhbGl6YXRpb25MaXN0ZW5lcj4gbGlzdGVuZXIgPSBhZG9w
dE5TKFtbV2ViR2VvbG9jYXRpb25Qcm92aWRlckluaXRpYWxpemF0aW9uTGlzdGVuZXIgYWxsb2Nd
IGluaXRXaXRoR2VvbG9jYXRpb246Z2VvbG9jYXRpb25dKTsKICAgICBbW21fd2ViVmlldyBfZ2Vv
bG9jYXRpb25Qcm92aWRlcl0gaW5pdGlhbGl6ZUdlb2xvY2F0aW9uRm9yV2ViVmlldzptX3dlYlZp
ZXcgbGlzdGVuZXI6bGlzdGVuZXIuZ2V0KCldOwpAQCAtMjI0LDEyICsyMjEsMTAgQEAgLSAodm9p
ZClpbml0aWFsaXphdGlvbkFsbG93ZWRXZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldwogICAgIEZy
YW1lKiBmcmFtZSA9IG1fZ2VvbG9jYXRpb24tPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuOwotICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNl
Y3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46JmZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpXTsKLSAgICBXZWJHZW9sb2NhdGlvblBvbGlj
eUxpc3RlbmVyICpsaXN0ZW5lciA9IFtbV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxv
Y10gaW5pdFdpdGhHZW9sb2NhdGlvbjptX2dlb2xvY2F0aW9uLmdldCgpIGZvcldlYlZpZXc6d2Vi
Vmlld107CisgICAgYXV0byB3ZWJPcmlnaW4gPSBhZG9wdE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4g
YWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjomZnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCldKTsKKyAgICBhdXRvIGxpc3RlbmVyID0gYWRvcHROUyhbW1dlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb246bV9nZW9s
b2NhdGlvbi5nZXQoKSBmb3JXZWJWaWV3OndlYlZpZXddKTsKICAgICBTRUwgc2VsZWN0b3IgPSBA
c2VsZWN0b3Iod2ViVmlldzpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3Jp
Z2luOmZyYW1lOmxpc3RlbmVyOik7Ci0gICAgQ2FsbFVJRGVsZWdhdGUod2ViVmlldywgc2VsZWN0
b3IsIHdlYk9yaWdpbiwga2l0KGZyYW1lKSwgbGlzdGVuZXIpOwotICAgIFt3ZWJPcmlnaW4gcmVs
ZWFzZV07Ci0gICAgW2xpc3RlbmVyIHJlbGVhc2VdOworICAgIENhbGxVSURlbGVnYXRlKHdlYlZp
ZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4uZ2V0KCksIGtpdChmcmFtZSksIGxpc3RlbmVyLmdldCgp
KTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbQppbmRleCA2NmY2NjcyNzczZjY4NmM4ZmM1OWZiM2M5YzkxMzUyYzljNTVhNzU4Li5hMmM1
NGIzMzJiNTExYTZmZDk1NDRjMmNjYmNmZGE2YTFmN2IxMzllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBjb25zdCBDR0Zsb2F0IGluaXRpYWxXaW5k
b3dIZWlnaHQgPSA2NTA7CiBAaW50ZXJmYWNlIFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIg
OiBOU1dpbmRvd0NvbnRyb2xsZXIgPE5TV2luZG93RGVsZWdhdGUsIFdlYlBvbGljeURlbGVnYXRl
LCBXZWJVSURlbGVnYXRlPiB7CiBAcHJpdmF0ZQogICAgIFJldGFpblB0cjxXZWJWaWV3PiBfaW5z
cGVjdGVkV2ViVmlldzsKLSAgICBXZWJWaWV3KiBfZnJvbnRlbmRXZWJWaWV3OworICAgIFJldGFp
blB0cjxXZWJWaWV3PiBfZnJvbnRlbmRXZWJWaWV3OwogICAgIE5ha2VkUHRyPFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50PiBfZnJvbnRlbmRDbGllbnQ7CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50
KiBfaW5zcGVjdG9yQ2xpZW50OwogICAgIEJPT0wgX2F0dGFjaGVkVG9JbnNwZWN0ZWRXZWJWaWV3
OwpAQCAtNDc1LDcgKzQ3NSw3IEBAIC0gKGlkKWluaXQKIAogICAgIC8vIEtlZXAgcHJlZmVyZW5j
ZXMgc2VwYXJhdGUgZnJvbSB0aGUgcmVzdCBvZiB0aGUgY2xpZW50LCBtYWtpbmcgc3VyZSB3ZSBh
cmUgdXNpbmcgZXhwZWN0ZWQgcHJlZmVyZW5jZSB2YWx1ZXMuCiAKLSAgICBXZWJQcmVmZXJlbmNl
cyAqcHJlZmVyZW5jZXMgPSBbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0XTsKKyAgICBhdXRv
IHByZWZlcmVuY2VzID0gYWRvcHROUyhbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSk7CiAg
ICAgW3ByZWZlcmVuY2VzIHNldEFsbG93c0FuaW1hdGVkSW1hZ2VzOllFU107CiAgICAgW3ByZWZl
cmVuY2VzIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkOllFU107CiAgICAgW3ByZWZlcmVu
Y2VzIHNldEF1dG9zYXZlczpOT107CkBAIC00OTQsMTQgKzQ5NCwxMiBAQCAtIChpZClpbml0CiAg
ICAgW3ByZWZlcmVuY2VzIHNldEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHM6WUVTXTsKICAg
ICBbcHJlZmVyZW5jZXMgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5OldlYkFsbG93QWxsU3RvcmFn
ZV07CiAKLSAgICBfZnJvbnRlbmRXZWJWaWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0XTsKLSAg
ICBbX2Zyb250ZW5kV2ViVmlldyBzZXRQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107CisgICAgX2Zy
b250ZW5kV2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgW19m
cm9udGVuZFdlYlZpZXcgc2V0UHJlZmVyZW5jZXM6cHJlZmVyZW5jZXMuZ2V0KCldOwogICAgIFtf
ZnJvbnRlbmRXZWJWaWV3IHNldFByb2hpYml0c01haW5GcmFtZVNjcm9sbGluZzpZRVNdOwogICAg
IFtfZnJvbnRlbmRXZWJWaWV3IHNldFVJRGVsZWdhdGU6c2VsZl07CiAgICAgW19mcm9udGVuZFdl
YlZpZXcgc2V0UG9saWN5RGVsZWdhdGU6c2VsZl07CiAKLSAgICBbcHJlZmVyZW5jZXMgcmVsZWFz
ZV07Ci0KICAgICBbc2VsZiBzZXRXaW5kb3dGcmFtZUF1dG9zYXZlTmFtZTpAIldlYiBJbnNwZWN0
b3IgMiJdOwogICAgIHJldHVybiBzZWxmOwogfQpAQCAtNTE0LDE2ICs1MTIsMTQgQEAgLSAoaWQp
aW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBpc1VuZGVyVGVzdDoo
Qk9PTClpc1VuZGVyVGVzdAogICAgIF9pbnNwZWN0ZWRXZWJWaWV3ID0gd2ViVmlldzsKIAogICAg
IE5TU3RyaW5nICpwYWdlUGF0aCA9IGlzVW5kZXJUZXN0ID8gW3NlbGYgaW5zcGVjdG9yVGVzdFBh
Z2VQYXRoXSA6IFtzZWxmIGluc3BlY3RvclBhZ2VQYXRoXTsKLSAgICBOU1VSTFJlcXVlc3QgKnJl
cXVlc3QgPSBbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIGZpbGVVUkxX
aXRoUGF0aDogcGFnZVBhdGhdXTsKLSAgICBbW19mcm9udGVuZFdlYlZpZXcgbWFpbkZyYW1lXSBs
b2FkUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBbcmVxdWVzdCByZWxlYXNlXTsKKyAgICBhdXRvIHJl
cXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOiBwYWdlUGF0aF1dKTsKKyAgICBbW19mcm9udGVuZFdlYlZpZXcgbWFp
bkZyYW1lXSBsb2FkUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKIAogICAgIHJldHVybiBzZWxmOwog
fQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbX2Zyb250ZW5kV2ViVmlldyByZWxlYXNlXTsK
ICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTU1MiwzMiArNTQ4LDI5IEBAIC0gKE5TU3Ry
aW5nICopaW5zcGVjdG9yVGVzdFBhZ2VQYXRoCiAKIC0gKFdlYlZpZXcgKilmcm9udGVuZFdlYlZp
ZXcKIHsKLSAgICByZXR1cm4gX2Zyb250ZW5kV2ViVmlldzsKKyAgICByZXR1cm4gX2Zyb250ZW5k
V2ViVmlldy5nZXQoKTsKIH0KIAogLSAoTlNXaW5kb3cgKil3aW5kb3cKIHsKLSAgICBOU1dpbmRv
dyAqd2luZG93ID0gW3N1cGVyIHdpbmRvd107Ci0gICAgaWYgKHdpbmRvdykKKyAgICBpZiAoYXV0
byAqd2luZG93ID0gW3N1cGVyIHdpbmRvd10pCiAgICAgICAgIHJldHVybiB3aW5kb3c7CiAKICAg
ICBOU1VJbnRlZ2VyIHN0eWxlTWFzayA9IE5TV2luZG93U3R5bGVNYXNrVGl0bGVkIHwgTlNXaW5k
b3dTdHlsZU1hc2tDbG9zYWJsZSB8IE5TV2luZG93U3R5bGVNYXNrTWluaWF0dXJpemFibGUgfCBO
U1dpbmRvd1N0eWxlTWFza1Jlc2l6YWJsZSB8IE5TV2luZG93U3R5bGVNYXNrRnVsbFNpemVDb250
ZW50VmlldzsKLSAgICB3aW5kb3cgPSBbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRS
ZWN0Ok5TTWFrZVJlY3QoMCwgMCwgaW5pdGlhbFdpbmRvd1dpZHRoLCBpbml0aWFsV2luZG93SGVp
Z2h0KSBzdHlsZU1hc2s6c3R5bGVNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBk
ZWZlcjpOT107CisgICAgYXV0byB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGlu
aXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCBpbml0aWFsV2luZG93V2lkdGgsIGlu
aXRpYWxXaW5kb3dIZWlnaHQpIHN0eWxlTWFzazpzdHlsZU1hc2sgYmFja2luZzpOU0JhY2tpbmdT
dG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CiAgICAgW3dpbmRvdyBzZXREZWxlZ2F0ZTpzZWxmXTsK
ICAgICBbd2luZG93IHNldE1pblNpemU6TlNNYWtlU2l6ZShtaW5pbXVtV2luZG93V2lkdGgsIG1p
bmltdW1XaW5kb3dIZWlnaHQpXTsKICAgICBbd2luZG93IHNldENvbGxlY3Rpb25CZWhhdmlvcjoo
W3dpbmRvdyBjb2xsZWN0aW9uQmVoYXZpb3JdIHwgTlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3JG
dWxsU2NyZWVuUHJpbWFyeSldOwogCi0gICAgQ0dGbG9hdCBhcHByb3hpbWF0ZWx5SGFsZlNjcmVl
blNpemUgPSAod2luZG93LnNjcmVlbi5mcmFtZS5zaXplLndpZHRoIC8gMikgLSA0OworICAgIENH
RmxvYXQgYXBwcm94aW1hdGVseUhhbGZTY3JlZW5TaXplID0gKFt3aW5kb3cgc2NyZWVuXS5mcmFt
ZS5zaXplLndpZHRoIC8gMikgLSA0OwogICAgIENHRmxvYXQgbWluaW11bUZ1bGxTY3JlZW5XaWR0
aCA9IHN0ZDo6bWF4PENHRmxvYXQ+KDYzNiwgYXBwcm94aW1hdGVseUhhbGZTY3JlZW5TaXplKTsK
ICAgICBbd2luZG93IHNldE1pbkZ1bGxTY3JlZW5Db250ZW50U2l6ZTpOU01ha2VTaXplKG1pbmlt
dW1GdWxsU2NyZWVuV2lkdGgsIG1pbmltdW1XaW5kb3dIZWlnaHQpXTsKICAgICBbd2luZG93IHNl
dENvbGxlY3Rpb25CZWhhdmlvcjooW3dpbmRvdyBjb2xsZWN0aW9uQmVoYXZpb3JdIHwgTlNXaW5k
b3dDb2xsZWN0aW9uQmVoYXZpb3JGdWxsU2NyZWVuQWxsb3dzVGlsaW5nKV07CiAKLSAgICB3aW5k
b3cudGl0bGViYXJBcHBlYXJzVHJhbnNwYXJlbnQgPSBZRVM7Ci0KLSAgICBbc2VsZiBzZXRXaW5k
b3c6d2luZG93XTsKLSAgICBbd2luZG93IHJlbGVhc2VdOworICAgIFt3aW5kb3cgc2V0VGl0bGVi
YXJBcHBlYXJzVHJhbnNwYXJlbnQ6IFlFU107CiAKLSAgICByZXR1cm4gd2luZG93OworICAgIFtz
ZWxmIHNldFdpbmRvdzp3aW5kb3cuZ2V0KCldOworICAgIHJldHVybiB3aW5kb3cuZ2V0KCk7CiB9
CiAKIC8vIE1BUks6IC0KQEAgLTY1OSw4ICs2NTIsOCBAQCAtIChJQkFjdGlvbilzaG93V2luZG93
OihpZClzZW5kZXIKICAgICAgICAgV2ViRnJhbWVWaWV3ICpmcmFtZVZpZXcgPSBbW19pbnNwZWN0
ZWRXZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gZnJhbWVWaWV3XTsKIAogICAgICAgICBbX2Zyb250
ZW5kV2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICAgICAgW19pbnNwZWN0ZWRXZWJW
aWV3LmdldCgpIGFkZFN1YnZpZXc6X2Zyb250ZW5kV2ViVmlldyBwb3NpdGlvbmVkOk5TV2luZG93
QmVsb3cgcmVsYXRpdmVUbzooTlNWaWV3ICopZnJhbWVWaWV3XTsKLSAgICAgICAgW1tfaW5zcGVj
dGVkV2ViVmlldy5nZXQoKSB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpfZnJvbnRlbmRXZWJW
aWV3XTsKKyAgICAgICAgW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIGFkZFN1YnZpZXc6X2Zyb250
ZW5kV2ViVmlldy5nZXQoKSBwb3NpdGlvbmVkOk5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzooTlNW
aWV3ICopZnJhbWVWaWV3XTsKKyAgICAgICAgW1tfaW5zcGVjdGVkV2ViVmlldy5nZXQoKSB3aW5k
b3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpfZnJvbnRlbmRXZWJWaWV3LmdldCgpXTsKIAogICAgICAg
ICBbX2Zyb250ZW5kV2ViVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOihOU1ZpZXdXaWR0aFNpemFi
bGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlIHwgTlNWaWV3TWF4WU1hcmdpbildOwogICAgICAgICBb
ZnJhbWVWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmll
d0hlaWdodFNpemFibGUgfCBOU1ZpZXdNaW5ZTWFyZ2luKV07CkBAIC02NzMsNyArNjY2LDcgQEAg
LSAoSUJBY3Rpb24pc2hvd1dpbmRvdzooaWQpc2VuZGVyCiAgICAgICAgIFtfZnJvbnRlbmRXZWJW
aWV3IHNldEZyYW1lOltjb250ZW50VmlldyBmcmFtZV1dOwogICAgICAgICBbX2Zyb250ZW5kV2Vi
VmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOihOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWln
aHRTaXphYmxlKV07CiAgICAgICAgIFtfZnJvbnRlbmRXZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZp
ZXddOwotICAgICAgICBbY29udGVudFZpZXcgYWRkU3VidmlldzpfZnJvbnRlbmRXZWJWaWV3XTsK
KyAgICAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X2Zyb250ZW5kV2ViVmlldy5nZXQoKV07
CiAKICAgICAgICAgW3N1cGVyIHNob3dXaW5kb3c6bmlsXTsKICAgICB9CkBAIC03OTYsOCArNzg5
LDggQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bk9wZW5QYW5lbEZvckZp
bGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KGkKICAgICAgICAgW3Jlc3VsdExpc3RlbmVyIGNo
b29zZUZpbGVuYW1lczpmaWxlbmFtZXNdOwogICAgIH07CiAKLSAgICBpZiAoX2Zyb250ZW5kV2Vi
Vmlldy53aW5kb3cpCi0gICAgICAgIFtwYW5lbCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6X2Zy
b250ZW5kV2ViVmlldy53aW5kb3cgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJd
OworICAgIGlmIChbX2Zyb250ZW5kV2ViVmlldyB3aW5kb3ddKQorICAgICAgICBbcGFuZWwgYmVn
aW5TaGVldE1vZGFsRm9yV2luZG93OltfZnJvbnRlbmRXZWJWaWV3IHdpbmRvd10gY29tcGxldGlv
bkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoW3BhbmVsIHJ1bk1vZGFsXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQu
bW0KaW5kZXggYWIxMjM4OTc3MjM5YTI0ZDdmMzBkYjY1OGU4M2EyNjk1YzQ3YWJjOC4uZDhlNzQ4
YjU3OWNiZmQ2ZjQyNWE4ZDQyYTdhOTQ0YjZkZTJjY2YxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlv
bkNsaWVudC5tbQpAQCAtMTMwLDExICsxMzAsOSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dDo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVwog
CiAgICAgbV9ldmVyUmVxdWVzdGVkUGVybWlzc2lvbiA9IHRydWU7CiAKLSAgICBXZWJTZWN1cml0
eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRo
V2ViQ29yZVNlY3VyaXR5T3JpZ2luOmNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCldOworICAgIGF1
dG8gd2ViT3JpZ2luID0gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdp
dGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKV0pOwogICAg
IAotICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbiwgbGlz
dGVuZXIpOwotICAgIAotICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07CisgICAgQ2FsbFVJRGVsZWdh
dGUobV93ZWJWaWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2luLmdldCgpLCBsaXN0ZW5lcik7CiB9CiAK
IGJvb2wgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpoYXNQZW5kaW5nUGVybWlzc2lvblJlcXVlc3Rz
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdApAQCAtMTQ3LDkgKzE0NSw4IEBAIGJvb2wg
V2ViTm90aWZpY2F0aW9uQ2xpZW50OjpoYXNQZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqCiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6cmVxdWVzdFBl
cm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPE5vdGlmaWNh
dGlvblBlcm1pc3Npb25DYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICBXZWJOb3RpZmljYXRpb25Qb2xpY3lMaXN0ZW5lciAqbGlzdGVu
ZXIgPSBbW1dlYk5vdGlmaWNhdGlvblBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aENhbGxi
YWNrOldURk1vdmUoY2FsbGJhY2spXTsKLSAgICByZXF1ZXN0UGVybWlzc2lvbihjb250ZXh0LCBs
aXN0ZW5lcik7Ci0gICAgW2xpc3RlbmVyIHJlbGVhc2VdOworICAgIGF1dG8gbGlzdGVuZXIgPSBh
ZG9wdE5TKFtbV2ViTm90aWZpY2F0aW9uUG9saWN5TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ2Fs
bGJhY2s6V1RGTW92ZShjYWxsYmFjayldKTsKKyAgICByZXF1ZXN0UGVybWlzc2lvbihjb250ZXh0
LCBsaXN0ZW5lci5nZXQoKSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCkBA
IC0xNTksOSArMTU2LDggQEAgTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIFdlYk5vdGlm
aWNhdGlvbkNsaWVudDo6Y2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWMKICAgICAgICAgcmV0dXJu
IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbjo6RGVuaWVkOwogICAgIGlmICghW1ttX3dl
YlZpZXcgcHJlZmVyZW5jZXNdIG5vdGlmaWNhdGlvbnNFbmFibGVkXSkKICAgICAgICAgcmV0dXJu
IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbjo6RGVuaWVkOwotICAgIFdlYlNlY3VyaXR5
T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhX
ZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKV07Ci0gICAgV2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbiBwZXJtaXNzaW9uID0gW1ttX3dlYlZpZXcgX25vdGlmaWNh
dGlvblByb3ZpZGVyXSBwb2xpY3lGb3JPcmlnaW46d2ViT3JpZ2luXTsKLSAgICBbd2ViT3JpZ2lu
IHJlbGVhc2VdOworICAgIGF1dG8gd2ViT3JpZ2luID0gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3Jp
Z2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKV0pOworICAgIFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24gcGVybWlzc2lvbiA9
IFtbbV93ZWJWaWV3IF9ub3RpZmljYXRpb25Qcm92aWRlcl0gcG9saWN5Rm9yT3JpZ2luOndlYk9y
aWdpbi5nZXQoKV07CiAgICAgc3dpdGNoIChwZXJtaXNzaW9uKSB7CiAgICAgICAgIGNhc2UgV2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkFsbG93ZWQ6CiAgICAgICAgICAgICByZXR1cm4gTm90aWZp
Y2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uOjpHcmFudGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCmluZGV4IDI1OWM3ZTllYTZkNTFiZjBjNzQ2OTk3
ZGZiZGE3OTdjMWViMDg4YTcuLjFmZjJmNTQ2MmQ2NTIzMzYwOGQ2YWFhNTE1MmY0NmRiMWZhMGI2
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViQXJjaGl2
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0K
QEAgLTUzLDkgKzUzLDkgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViU3ViZnJhbWVBcmNo
aXZlc0tleSA9IEAiV2ViU3ViZnJhbWVBcmNoaXZlcyI7CiAKIEBpbnRlcmZhY2UgV2ViQXJjaGl2
ZVByaXZhdGUgOiBOU09iamVjdCB7CiBAcHVibGljCi0gICAgV2ViUmVzb3VyY2UgKmNhY2hlZE1h
aW5SZXNvdXJjZTsKLSAgICBOU0FycmF5ICpjYWNoZWRTdWJyZXNvdXJjZXM7Ci0gICAgTlNBcnJh
eSAqY2FjaGVkU3ViZnJhbWVBcmNoaXZlczsKKyAgICBSZXRhaW5QdHI8V2ViUmVzb3VyY2U+IGNh
Y2hlZE1haW5SZXNvdXJjZTsKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gY2FjaGVkU3VicmVzb3Vy
Y2VzOworICAgIFJldGFpblB0cjxOU0FycmF5PiBjYWNoZWRTdWJmcmFtZUFyY2hpdmVzOwogQHBy
aXZhdGUKICAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY29yZUFyY2hpdmU7CiB9CkBAIC0x
MTIsMTAgKzExMiw2IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVk
dWxlRGVhbGxvY2F0ZU9uTWFpblRocmVhZChbV2ViQXJjaGl2ZVByaXZhdGUgY2xhc3NdLCBzZWxm
KSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFtjYWNoZWRNYWluUmVzb3VyY2UgcmVsZWFz
ZV07Ci0gICAgW2NhY2hlZFN1YnJlc291cmNlcyByZWxlYXNlXTsKLSAgICBbY2FjaGVkU3ViZnJh
bWVBcmNoaXZlcyByZWxlYXNlXTsKLSAgICAKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAg
LTE1NiwyMSArMTUyLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1haW5SZXNvdXJjZToo
V2ViUmVzb3VyY2UgKiltYWluUmVzb3VyY2Ugc3VicmVzb3VyY2VzOihOCiAKICAgICBfcHJpdmF0
ZSA9IFtbV2ViQXJjaGl2ZVByaXZhdGUgYWxsb2NdIGluaXRdOwogCi0gICAgX3ByaXZhdGUtPmNh
Y2hlZE1haW5SZXNvdXJjZSA9IFttYWluUmVzb3VyY2UgcmV0YWluXTsKKyAgICBfcHJpdmF0ZS0+
Y2FjaGVkTWFpblJlc291cmNlID0gbWFpblJlc291cmNlOwogICAgIGlmICghX3ByaXZhdGUtPmNh
Y2hlZE1haW5SZXNvdXJjZSkgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICB9CiAgICAgCiAgICAgaWYgKCFzdWJyZXNvdXJjZXMgfHwgaXNBcnJheU9m
Q2xhc3Moc3VicmVzb3VyY2VzLCBbV2ViUmVzb3VyY2UgY2xhc3NdKSkKLSAgICAgICAgX3ByaXZh
dGUtPmNhY2hlZFN1YnJlc291cmNlcyA9IFtzdWJyZXNvdXJjZXMgcmV0YWluXTsKKyAgICAgICAg
X3ByaXZhdGUtPmNhY2hlZFN1YnJlc291cmNlcyA9IHN1YnJlc291cmNlczsKICAgICBlbHNlIHsK
ICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogCiAg
ICAgaWYgKCFzdWJmcmFtZUFyY2hpdmVzIHx8IGlzQXJyYXlPZkNsYXNzKHN1YmZyYW1lQXJjaGl2
ZXMsIFtXZWJBcmNoaXZlIGNsYXNzXSkpCi0gICAgICAgIF9wcml2YXRlLT5jYWNoZWRTdWJmcmFt
ZUFyY2hpdmVzID0gW3N1YmZyYW1lQXJjaGl2ZXMgcmV0YWluXTsKKyAgICAgICAgX3ByaXZhdGUt
PmNhY2hlZFN1YmZyYW1lQXJjaGl2ZXMgPSBzdWJmcmFtZUFyY2hpdmVzOwogICAgIGVsc2Ugewog
ICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTI2OSwxMSAr
MjY1LDEyIEBAIC0gKFdlYlJlc291cmNlICopbWFpblJlc291cmNlCiAgICAgaWYgKCFfcHJpdmF0
ZS0+Y2FjaGVkTWFpblJlc291cmNlKSB7CiAgICAgICAgIGlmIChhdXRvKiBjb3JlQXJjaGl2ZSA9
IFtfcHJpdmF0ZSBjb3JlQXJjaGl2ZV0pIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBtYWluUmVz
b3VyY2UgPSBjb3JlQXJjaGl2ZS0+bWFpblJlc291cmNlKCkpCi0gICAgICAgICAgICAgICAgX3By
aXZhdGUtPmNhY2hlZE1haW5SZXNvdXJjZSA9IFtbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0V2l0
aENvcmVSZXNvdXJjZToqbWFpblJlc291cmNlXTsKKyAgICAgICAgICAgICAgICBfcHJpdmF0ZS0+
Y2FjaGVkTWFpblJlc291cmNlID0gYWRvcHROUyhbW1dlYlJlc291cmNlIGFsbG9jXSBfaW5pdFdp
dGhDb3JlUmVzb3VyY2U6Km1haW5SZXNvdXJjZV0pOwogICAgICAgICB9CiAgICAgfQogICAgIAot
ICAgIHJldHVybiBbW19wcml2YXRlLT5jYWNoZWRNYWluUmVzb3VyY2UgcmV0YWluXSBhdXRvcmVs
ZWFzZV07CisgICAgYXV0byBjYWNoZWRNYWluUmVzb3VyY2VDb3B5ID0gX3ByaXZhdGUtPmNhY2hl
ZE1haW5SZXNvdXJjZTsKKyAgICByZXR1cm4gY2FjaGVkTWFpblJlc291cmNlQ29weS5hdXRvcmVs
ZWFzZSgpOwogfQogCiAtIChOU0FycmF5ICopc3VicmVzb3VyY2VzCkBAIC0yODUsMTYgKzI4Miwy
MCBAQCAtIChOU0FycmF5ICopc3VicmVzb3VyY2VzCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y2FjaGVk
U3VicmVzb3VyY2VzKSB7CiAgICAgICAgIGF1dG8gY29yZUFyY2hpdmUgPSBbX3ByaXZhdGUgY29y
ZUFyY2hpdmVdOwogICAgICAgICBpZiAoIWNvcmVBcmNoaXZlKQotICAgICAgICAgICAgX3ByaXZh
dGUtPmNhY2hlZFN1YnJlc291cmNlcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdF07CisgICAgICAg
ICAgICBfcHJpdmF0ZS0+Y2FjaGVkU3VicmVzb3VyY2VzID0gYWRvcHROUyhbW05TQXJyYXkgYWxs
b2NdIGluaXRdKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBfcHJpdmF0ZS0+Y2FjaGVk
U3VicmVzb3VyY2VzID0gY3JlYXRlTlNBcnJheShjb3JlQXJjaGl2ZS0+c3VicmVzb3VyY2VzKCks
IFtdIChhdXRvJiBzdWJyZXNvdXJjZSkgewogICAgICAgICAgICAgICAgIHJldHVybiBhZG9wdE5T
KFtbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0V2l0aENvcmVSZXNvdXJjZTpzdWJyZXNvdXJjZS5n
ZXQoKV0pOwotICAgICAgICAgICAgfSkubGVha1JlZigpOworICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgLy8gTWFpbnRhaW4gdGhlIFdlYktpdCAzIGJlaGF2aW9yIG9mIHRo
aXMgQVBJLCB3aGljaCBpcyBkb2N1bWVudGVkIGFuZAogICAgIC8vIHJlbGllZCB1cG9uIGJ5IHNv
bWUgY2xpZW50cywgb2YgcmV0dXJuaW5nIG5pbCBpZiB0aGVyZSBhcmUgbm8gc3VicmVzb3VyY2Vz
LgotICAgIHJldHVybiBbX3ByaXZhdGUtPmNhY2hlZFN1YnJlc291cmNlcyBjb3VudF0gPyBbW19w
cml2YXRlLT5jYWNoZWRTdWJyZXNvdXJjZXMgcmV0YWluXSBhdXRvcmVsZWFzZV0gOiBuaWw7Cisg
ICAgaWYgKCFbX3ByaXZhdGUtPmNhY2hlZFN1YnJlc291cmNlcyBjb3VudF0pCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICBhdXRvIGNhY2hlZFN1YnJlc291cmNlc0NvcHkgPSBfcHJpdmF0ZS0+
Y2FjaGVkU3VicmVzb3VyY2VzOworICAgIHJldHVybiBjYWNoZWRTdWJyZXNvdXJjZXNDb3B5LmF1
dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TQXJyYXkgKilzdWJmcmFtZUFyY2hpdmVzCkBAIC0zMDYs
MTUgKzMwNywxNiBAQCAtIChOU0FycmF5ICopc3ViZnJhbWVBcmNoaXZlcwogICAgIGlmICghX3By
aXZhdGUtPmNhY2hlZFN1YmZyYW1lQXJjaGl2ZXMpIHsKICAgICAgICAgYXV0byogY29yZUFyY2hp
dmUgPSBbX3ByaXZhdGUgY29yZUFyY2hpdmVdOwogICAgICAgICBpZiAoIWNvcmVBcmNoaXZlKQot
ICAgICAgICAgICAgX3ByaXZhdGUtPmNhY2hlZFN1YmZyYW1lQXJjaGl2ZXMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRdOworICAgICAgICAgICAgX3ByaXZhdGUtPmNhY2hlZFN1YmZyYW1lQXJjaGl2
ZXMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIF9wcml2YXRlLT5jYWNoZWRTdWJmcmFtZUFyY2hpdmVzID0gY3JlYXRlTlNBcnJh
eShjb3JlQXJjaGl2ZS0+c3ViZnJhbWVBcmNoaXZlcygpLCBbXSAoYXV0byYgYXJjaGl2ZSkgewog
ICAgICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQXJjaGl2ZSBhbGxvY10gX2luaXRX
aXRoQ29yZUxlZ2FjeVdlYkFyY2hpdmU6c3RhdGljX2Nhc3Q8TGVnYWN5V2ViQXJjaGl2ZSo+KGFy
Y2hpdmUucHRyKCkpXSk7Ci0gICAgICAgICAgICB9KS5sZWFrUmVmKCk7CisgICAgICAgICAgICB9
KTsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1cm4gW1tfcHJpdmF0ZS0+Y2FjaGVk
U3ViZnJhbWVBcmNoaXZlcyByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNhY2hlZFN1
YmZyYW1lQXJjaGl2ZXNDb3B5ID0gX3ByaXZhdGUtPmNhY2hlZFN1YmZyYW1lQXJjaGl2ZXM7Cisg
ICAgcmV0dXJuIGNhY2hlZFN1YmZyYW1lQXJjaGl2ZXNDb3B5LmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKE5TRGF0YSAqKWRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbQppbmRleCAxYjU5NzE2NDY4NTNhNmQxNmJhNjI4NmUwY2EzZmIzZmJk
ZjEzZjQ5Li42NDhhNDQwYmUyNDNhYTk3YjA5ZjcyM2QzNjQ3MGYyYTg4Y2I5NTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0z
MTIsMTMgKzMxMiwxMiBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21l
bnRXaXRoQXJjaGl2ZTooV2ViQXJjaGl2ZSAqKWFyY2hpdmUKICAgICBpZiAobWFpblJlc291cmNl
KSB7CiAgICAgICAgIE5TU3RyaW5nICpNSU1FVHlwZSA9IFttYWluUmVzb3VyY2UgTUlNRVR5cGVd
OwogICAgICAgICBpZiAoW1dlYlZpZXcgY2FuU2hvd01JTUVUeXBlQXNIVE1MOk1JTUVUeXBlXSkg
ewotICAgICAgICAgICAgTlNTdHJpbmcgKm1hcmt1cFN0cmluZyA9IFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoRGF0YTpbbWFpblJlc291cmNlIGRhdGFdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXTsKKyAgICAgICAgICAgIGF1dG8gbWFya3VwU3RyaW5nID0gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6W21haW5SZXNvdXJjZSBkYXRhXSBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10pOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogc2VlbXMgcG9vciBm
b3JtIHRvIGRvIHRoaXMgYXMgYSBzaWRlIGVmZmVjdCBvZiBnZXR0aW5nIGEgZG9jdW1lbnQgZnJh
Z21lbnQKICAgICAgICAgICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+YWRkQWxsQXJj
aGl2ZVJlc291cmNlcygqW2FyY2hpdmUgX2NvcmVMZWdhY3lXZWJBcmNoaXZlXSk7CiAKLSAgICAg
ICAgICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW1tzZWxmIHdlYkZyYW1lXSBf
ZG9jdW1lbnRGcmFnbWVudFdpdGhNYXJrdXBTdHJpbmc6bWFya3VwU3RyaW5nIGJhc2VVUkxTdHJp
bmc6W1ttYWluUmVzb3VyY2UgVVJMXSBfd2ViX29yaWdpbmFsRGF0YUFzU3RyaW5nXV07Ci0gICAg
ICAgICAgICBbbWFya3VwU3RyaW5nIHJlbGVhc2VdOworICAgICAgICAgICAgRE9NRG9jdW1lbnRG
cmFnbWVudCAqZnJhZ21lbnQgPSBbW3NlbGYgd2ViRnJhbWVdIF9kb2N1bWVudEZyYWdtZW50V2l0
aE1hcmt1cFN0cmluZzptYXJrdXBTdHJpbmcuZ2V0KCkgYmFzZVVSTFN0cmluZzpbW21haW5SZXNv
dXJjZSBVUkxdIF93ZWJfb3JpZ2luYWxEYXRhQXNTdHJpbmddXTsKICAgICAgICAgICAgIHJldHVy
biBmcmFnbWVudDsKICAgICAgICAgfSBlbHNlIGlmIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoTUlNRVR5cGUpKSB7CiAgICAgICAgICAgICByZXR1
cm4gW3NlbGYgX2RvY3VtZW50RnJhZ21lbnRXaXRoSW1hZ2VSZXNvdXJjZTptYWluUmVzb3VyY2Vd
OwpAQCAtMzg1LDkgKzM4NCw4IEBAIC0gKHZvaWQpX21ha2VSZXByZXNlbnRhdGlvbgogCiAgICAg
Ly8gQ2hlY2sgaWYgdGhlIGRhdGEgc291cmNlIHdhcyBhbHJlYWR5IGJvdW5kPwogICAgIGlmICgh
W1tzZWxmIHJlcHJlc2VudGF0aW9uXSBpc0tpbmRPZkNsYXNzOnJlcENsYXNzXSkgewotICAgICAg
ICBpZCBuZXdSZXAgPSByZXBDbGFzcyAhPSBuaWwgPyBbKE5TT2JqZWN0ICopW3JlcENsYXNzIGFs
bG9jXSBpbml0XSA6IG5pbDsKLSAgICAgICAgW3NlbGYgX3NldFJlcHJlc2VudGF0aW9uOihpZCA8
V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pbmV3UmVwXTsKLSAgICAgICAgW25ld1JlcCByZWxl
YXNlXTsKKyAgICAgICAgUmV0YWluUHRyPGlkPiBuZXdSZXAgPSByZXBDbGFzcyAhPSBuaWwgPyBh
ZG9wdE5TKFsoTlNPYmplY3QgKilbcmVwQ2xhc3MgYWxsb2NdIGluaXRdKSA6IG5pbDsKKyAgICAg
ICAgW3NlbGYgX3NldFJlcHJlc2VudGF0aW9uOihpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlv
bj4pbmV3UmVwLmdldCgpXTsKICAgICB9CiAKICAgICBpZDxXZWJEb2N1bWVudFJlcHJlc2VudGF0
aW9uPiByZXByZXNlbnRhdGlvbiA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPnJlcHJlc2VudGF0aW9u
LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5k
ZXggZGUyNDk2ODhhYjY4Zjc5ODkwMjA4NDc4ZjZhYzQzNGZlY2EwOTgyNS4uYTRhZWM1OWU0MTJm
ZmQ5YzlhN2JjOGU2ZTUwYjNiMDYzNzlhOTg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xODksMTUgKzE4OSwxMSBAQCBAaW1wbGVtZW50YXRp
b24gV2ViRnJhbWVQcml2YXRlCiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIFt3ZWJGcmFtZVZp
ZXcgcmVsZWFzZV07Ci0KICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKHZvaWQpc2V0V2Vi
RnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKil2CiB7IAotICAgIFt2IHJldGFpbl07Ci0gICAgW3dl
YkZyYW1lVmlldyByZWxlYXNlXTsKICAgICB3ZWJGcmFtZVZpZXcgPSB2OwogfQogCkBAIC0zMDYs
OSArMzAyLDggQEAgKyAoUmVmPFdlYkNvcmU6OkZyYW1lPilfY3JlYXRlRnJhbWVXaXRoUGFnZToo
V2ViQ29yZTo6UGFnZSopcGFnZSBmcmFtZU5hbWU6KGNvbnMKIHsKICAgICBXZWJWaWV3ICp3ZWJW
aWV3ID0ga2l0KHBhZ2UpOwogCi0gICAgV2ViRnJhbWUgKmZyYW1lID0gW1tzZWxmIGFsbG9jXSBf
aW5pdFdpdGhXZWJGcmFtZVZpZXc6ZnJhbWVWaWV3IHdlYlZpZXc6d2ViVmlld107Ci0gICAgYXV0
byBjb3JlRnJhbWUgPSBXZWJDb3JlOjpGcmFtZTo6Y3JlYXRlKHBhZ2UsIG93bmVyRWxlbWVudCwg
bWFrZVVuaXF1ZVJlZjxXZWJGcmFtZUxvYWRlckNsaWVudD4oZnJhbWUpKTsKLSAgICBbZnJhbWUg
cmVsZWFzZV07CisgICAgUmV0YWluUHRyPFdlYkZyYW1lPiBmcmFtZSA9IGFkb3B0TlMoW1tzZWxm
IGFsbG9jXSBfaW5pdFdpdGhXZWJGcmFtZVZpZXc6ZnJhbWVWaWV3IHdlYlZpZXc6d2ViVmlld10p
OworICAgIGF1dG8gY29yZUZyYW1lID0gV2ViQ29yZTo6RnJhbWU6OmNyZWF0ZShwYWdlLCBvd25l
ckVsZW1lbnQsIG1ha2VVbmlxdWVSZWY8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KGZyYW1lLmdldCgp
KSk7CiAgICAgZnJhbWUtPl9wcml2YXRlLT5jb3JlRnJhbWUgPSBjb3JlRnJhbWUucHRyKCk7CiAK
ICAgICBjb3JlRnJhbWUuZ2V0KCkudHJlZSgpLnNldE5hbWUobmFtZSk7CkBAIC0zMjgsMTAgKzMy
Myw5IEBAICsgKHZvaWQpX2NyZWF0ZU1haW5GcmFtZVdpdGhQYWdlOihXZWJDb3JlOjpQYWdlKilw
YWdlIGZyYW1lTmFtZTooY29uc3QgU3RyaW5nJiluCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9
IGtpdChwYWdlKTsKIAotICAgIFdlYkZyYW1lICpmcmFtZSA9IFtbc2VsZiBhbGxvY10gX2luaXRX
aXRoV2ViRnJhbWVWaWV3OmZyYW1lVmlldyB3ZWJWaWV3OndlYlZpZXddOworICAgIFJldGFpblB0
cjxXZWJGcmFtZT4gZnJhbWUgPSBhZG9wdE5TKFtbc2VsZiBhbGxvY10gX2luaXRXaXRoV2ViRnJh
bWVWaWV3OmZyYW1lVmlldyB3ZWJWaWV3OndlYlZpZXddKTsKICAgICBmcmFtZS0+X3ByaXZhdGUt
PmNvcmVGcmFtZSA9ICZwYWdlLT5tYWluRnJhbWUoKTsKLSAgICBzdGF0aWNfY2FzdDxXZWJGcmFt
ZUxvYWRlckNsaWVudCY+KHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpKS5zZXRX
ZWJGcmFtZSgqZnJhbWUpOwotICAgIFtmcmFtZSByZWxlYXNlXTsKKyAgICBzdGF0aWNfY2FzdDxX
ZWJGcmFtZUxvYWRlckNsaWVudCY+KHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgp
KS5zZXRXZWJGcmFtZSgqZnJhbWUuZ2V0KCkpOwogCiAgICAgcGFnZS0+bWFpbkZyYW1lKCkudHJl
ZSgpLnNldE5hbWUobmFtZSk7CiAgICAgcGFnZS0+bWFpbkZyYW1lKCkuaW5pdCgpOwpAQCAtMzU2
LDEyICszNTAsMTEgQEAgKyAodm9pZClfY3JlYXRlTWFpbkZyYW1lV2l0aFNpbXBsZUhUTUxEb2N1
bWVudFdpdGhQYWdlOihXZWJDb3JlOjpQYWdlKilwYWdlIGZyYW0KIHsKICAgICBXZWJWaWV3ICp3
ZWJWaWV3ID0ga2l0KHBhZ2UpOwogICAgIAotICAgIFdlYkZyYW1lICpmcmFtZSA9IFtbc2VsZiBh
bGxvY10gX2luaXRXaXRoV2ViRnJhbWVWaWV3OmZyYW1lVmlldyB3ZWJWaWV3OndlYlZpZXddOwot
ICAgIGZyYW1lLT5fcHJpdmF0ZS0+Y29yZUZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOwotICAg
IHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Jj4ocGFnZS0+bWFpbkZyYW1lKCkubG9h
ZGVyKCkuY2xpZW50KCkpLnNldFdlYkZyYW1lKCpmcmFtZSk7Ci0gICAgW2ZyYW1lIHJlbGVhc2Vd
OworICAgIGF1dG8gZnJhbWUgPSBhZG9wdE5TKFtbc2VsZiBhbGxvY10gX2luaXRXaXRoV2ViRnJh
bWVWaWV3OmZyYW1lVmlldyB3ZWJWaWV3OndlYlZpZXddKTsKKyAgICBmcmFtZS5nZXQoKS0+X3By
aXZhdGUtPmNvcmVGcmFtZSA9ICZwYWdlLT5tYWluRnJhbWUoKTsKKyAgICBzdGF0aWNfY2FzdDxX
ZWJGcmFtZUxvYWRlckNsaWVudCY+KHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgp
KS5zZXRXZWJGcmFtZSgqZnJhbWUuZ2V0KCkpOwogCi0gICAgZnJhbWUtPl9wcml2YXRlLT5jb3Jl
RnJhbWUtPmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KHN0eWxlLCBjcmVhdGVVbmlxdWVXZWJE
YXRhVVJMKCkpOworICAgIGZyYW1lLmdldCgpLT5fcHJpdmF0ZS0+Y29yZUZyYW1lLT5pbml0V2l0
aFNpbXBsZUhUTUxEb2N1bWVudChzdHlsZSwgY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCgpKTsKIH0K
ICNlbmRpZgogCkBAIC0xNzMxLDcgKzE3MjQsNyBAQCAtICh2b2lkKWdldERpY3RhdGlvblJlc3Vs
dFJhbmdlczooTlNBcnJheSAqKilvdXRSYW5nZXMgYW5kTWV0YWRhdGFzOihOU0FycmF5ICoqKQog
ICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAg
ICBhdXRvIHJvb3QgPSBzZWxlY3Rpb24uaXNOb25lKCkgPyBmcmFtZS0+ZG9jdW1lbnQoKS0+Ym9k
eU9yRnJhbWVzZXQoKSA6IHNlbGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7CiAKLSAgICBE
T01SYW5nZSAqcHJldmlvdXNET01SYW5nZSA9IG5pbDsKKyAgICBSZXRhaW5QdHI8RE9NUmFuZ2U+
IHByZXZpb3VzRE9NUmFuZ2U7CiAgICAgaWQgcHJldmlvdXNNZXRhZGF0YSA9IG5pbDsKIAogICAg
IGZvciAoV2ViQ29yZTo6Tm9kZSogbm9kZSA9IHJvb3Q7IG5vZGU7IG5vZGUgPSBXZWJDb3JlOjpO
b2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlKSkgewpAQCAtMTc1OCwxMyArMTc1MSwxMSBAQCAtICh2
b2lkKWdldERpY3RhdGlvblJlc3VsdFJhbmdlczooTlNBcnJheSAqKilvdXRSYW5nZXMgYW5kTWV0
YWRhdGFzOihOU0FycmF5ICoqKQogICAgICAgICAgICAgICAgIC8vIEl0IGlzIHBvc3NpYmxlIGZv
ciBhIERvY3VtZW50TWFya2VyIHRvIGJlIHNwbGl0IGJ5IGVkaXRpbmcuIEFkamFjZW50IG1hcmtl
cnMgd2l0aCB0aGUKICAgICAgICAgICAgICAgICAvLyB0aGUgc2FtZSBtZXRhZGF0YSBhcmUgZm9y
IHRoZSBzYW1lIHJlc3VsdC4gU28gY29tYmluZSB0aGVpciByYW5nZXMuCiAgICAgICAgICAgICAg
ICAgQVNTRVJUKHByZXZpb3VzRE9NUmFuZ2UgPT0gW3JhbmdlcyBsYXN0T2JqZWN0XSk7Ci0gICAg
ICAgICAgICAgICAgW3ByZXZpb3VzRE9NUmFuZ2UgcmV0YWluXTsKICAgICAgICAgICAgICAgICBb
cmFuZ2VzIHJlbW92ZUxhc3RPYmplY3RdOwogICAgICAgICAgICAgICAgIERPTU5vZGUgKnN0YXJ0
Q29udGFpbmVyID0gW2RvbVJhbmdlIHN0YXJ0Q29udGFpbmVyXTsKICAgICAgICAgICAgICAgICBp
bnQgc3RhcnRPZmZzZXQgPSBbZG9tUmFuZ2Ugc3RhcnRPZmZzZXRdOwogICAgICAgICAgICAgICAg
IFtwcmV2aW91c0RPTVJhbmdlIHNldEVuZDpzdGFydENvbnRhaW5lciBvZmZzZXQ6c3RhcnRPZmZz
ZXRdOwotICAgICAgICAgICAgICAgIFtyYW5nZXMgYWRkT2JqZWN0OnByZXZpb3VzRE9NUmFuZ2Vd
OwotICAgICAgICAgICAgICAgIFtwcmV2aW91c0RPTVJhbmdlIHJlbGVhc2VdOworICAgICAgICAg
ICAgICAgIFtyYW5nZXMgYWRkT2JqZWN0OnByZXZpb3VzRE9NUmFuZ2UuZ2V0KCldOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjM5MCw3ICsyMzgxLDcgQEAgLSAoTlNTdHJp
bmcgKiluYW1lCiAKIC0gKFdlYkZyYW1lVmlldyAqKWZyYW1lVmlldwogewotICAgIHJldHVybiBf
cHJpdmF0ZS0+d2ViRnJhbWVWaWV3OworICAgIHJldHVybiBfcHJpdmF0ZS0+d2ViRnJhbWVWaWV3
LmdldCgpOwogfQogCiAtIChXZWJWaWV3ICopd2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAppbmRleCAzMGM0OGQxNWU5ZjYx
NzlhOTk1ZDE5YTkzZTdhMWIyMmQxYTMwMzEwLi42OWE4MTJkYWYyNGMyZjZjNzY0ODhlOGQzOGYz
MWYwMDZlM2UyN2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lSW50ZXJuYWwuaApAQCAtODcsNyArODcsNyBAQCBXZWJWaWV3ICpnZXRXZWJWaWV3
KFdlYkZyYW1lICp3ZWJGcmFtZSk7CiBAaW50ZXJmYWNlIFdlYkZyYW1lUHJpdmF0ZSA6IE5TT2Jq
ZWN0IHsKIEBwdWJsaWMKICAgICBOYWtlZFB0cjxXZWJDb3JlOjpGcmFtZT4gY29yZUZyYW1lOwot
ICAgIFdlYkZyYW1lVmlldyAqd2ViRnJhbWVWaWV3OworICAgIFJldGFpblB0cjxXZWJGcmFtZVZp
ZXc+IHdlYkZyYW1lVmlldzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2NyaXB0RGVidWdnZXI+
IHNjcmlwdERlYnVnZ2VyOwogICAgIGlkIGludGVybmFsTG9hZERlbGVnYXRlOwogICAgIEJPT0wg
c2hvdWxkQ3JlYXRlUmVuZGVyZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZyYW1lVmlldy5tbQppbmRleCAwZmIwNTUwNzFmMGRkNGNhZWQzZjYxMWRlNDQ3YmY3
MzQ2MDFhNGY2Li5iNjE2ZmE3YmY2NGU0ZDk3OWZiZDA2ODFhYmIzYWYwMzkyNjNhODQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpAQCAt
MTEwLDcgKzExMCw3IEBAIEBlbmQKIEBpbnRlcmZhY2UgV2ViRnJhbWVWaWV3UHJpdmF0ZSA6IE5T
T2JqZWN0IHsKIEBwdWJsaWMKICAgICBXZWJGcmFtZSAqd2ViRnJhbWU7Ci0gICAgV2ViRHluYW1p
Y1Njcm9sbEJhcnNWaWV3ICpmcmFtZVNjcm9sbFZpZXc7CisgICAgUmV0YWluUHRyPFdlYkR5bmFt
aWNTY3JvbGxCYXJzVmlldz4gZnJhbWVTY3JvbGxWaWV3OwogICAgIEJPT0wgaW5jbHVkZWRJbldl
YktpdFN0YXRpc3RpY3M7CiB9CiBAZW5kCkBAIC0xMTksNyArMTE5LDYgQEAgQGltcGxlbWVudGF0
aW9uIFdlYkZyYW1lVmlld1ByaXZhdGUKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW2ZyYW1l
U2Nyb2xsVmlldyByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTIzNyw3
ICsyMzYsNyBAQCAtIChXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKilfc2Nyb2xsVmlldwogICAg
IC8vIGFmdGVyIF9wcml2YXRlIGhhcyBiZWVuIG5pbGxlZCBvdXQuCiAgICAgaWYgKF9wcml2YXRl
ID09IG5pbCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmZyYW1l
U2Nyb2xsVmlldzsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmZyYW1lU2Nyb2xsVmlldy5nZXQoKTsK
IH0KIAogLSAoZmxvYXQpX3ZlcnRpY2FsUGFnZVNjcm9sbERpc3RhbmNlCkBAIC0zMTYsNyArMzE1
LDcgQEAgLSAodm9pZClfaW5zdGFsbAogCiAgICAgYXV0byogdmlldyA9IGZyYW1lLT52aWV3KCk7
CiAKLSAgICB2aWV3LT5zZXRQbGF0Zm9ybVdpZGdldChfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3
KTsKKyAgICB2aWV3LT5zZXRQbGF0Zm9ybVdpZGdldChfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3
LmdldCgpKTsKIAogICAgIC8vIEZJWE1FOiBGcmFtZSB0cmllcyB0byBkbyB0aGlzIHRvby4gSXMg
dGhpcyBjb2RlIG5lZWRlZD8KICAgICBpZiAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0KiBvd25lciA9
IGZyYW1lLT5vd25lclJlbmRlcmVyKCkpIHsKQEAgLTM3Myw3ICszNzIsNyBAQCAtIChpZClpbml0
V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKIAogICAgIF9wcml2YXRlID0gW1tXZWJGcmFtZVZpZXdQ
cml2YXRlIGFsbG9jXSBpbml0XTsKIAotICAgIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyAqc2Ny
b2xsVmlldyA9IFtbV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMC4wZiwgMC4wZiwgZnJhbWUuc2l6ZS53aWR0aCwgZnJhbWUuc2l6ZS5oZWln
aHQpXTsKKyAgICBhdXRvIHNjcm9sbFZpZXcgPSBhZG9wdE5TKFtbV2ViRHluYW1pY1Njcm9sbEJh
cnNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMC4wZiwgMC4wZiwgZnJhbWUu
c2l6ZS53aWR0aCwgZnJhbWUuc2l6ZS5oZWlnaHQpXSk7CiAgICAgX3ByaXZhdGUtPmZyYW1lU2Ny
b2xsVmlldyA9IHNjcm9sbFZpZXc7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbc2Ny
b2xsVmlldyBzZXREZWxlZ2F0ZTpzZWxmXTsKQEAgLTM4NSwxMiArMzg0LDEyIEBAIC0gKGlkKWlu
aXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQogICAgIFtzY3JvbGxWaWV3IHNldEhhc0hvcml6b250
YWxTY3JvbGxlcjpOT107CiAgICAgW3Njcm9sbFZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazpOU1Zp
ZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlXTsKICAgICBbc2Nyb2xsVmlldyBz
ZXRMaW5lU2Nyb2xsOldlYkNvcmU6OlNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKV07Ci0g
ICAgW3NlbGYgYWRkU3VidmlldzpzY3JvbGxWaWV3XTsKKyAgICBbc2VsZiBhZGRTdWJ2aWV3OnNj
cm9sbFZpZXcuZ2V0KCldOwogCiAgICAgLy8gRG9uJ3QgY2FsbCBvdXIgb3ZlcnJpZGRlbiB2ZXJz
aW9uIG9mIHNldE5leHRLZXlWaWV3IGhlcmU7IHdlIG5lZWQgdG8gbWFrZSB0aGUgc3RhbmRhcmQg
TlNWaWV3CiAgICAgLy8gbGluayBiZXR3ZWVuIHVzIGFuZCBvdXIgc3VidmlldyBzbyB0aGF0IHBy
ZXZpb3VzS2V5VmlldyBhbmQgcHJldmlvdXNWYWxpZEtleVZpZXcgd29yayBhcyBleHBlY3RlZC4K
ICAgICAvLyBUaGlzIHdvcmtzIHRvZ2V0aGVyIHdpdGggb3VyIGJlY29tZUZpcnN0UmVzcG9uZGVy
IGFuZCBzZXROZXh0S2V5VmlldyBvdmVycmlkZXMuCi0gICAgW3N1cGVyIHNldE5leHRLZXlWaWV3
OnNjcm9sbFZpZXddOworICAgIFtzdXBlciBzZXROZXh0S2V5VmlldzpzY3JvbGxWaWV3LmdldCgp
XTsKICAgICAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTEyMzQsMzEgKzEyMzMsMjkgQEAgLSAo
dm9pZClfc2V0Q3VzdG9tU2Nyb2xsVmlld0NsYXNzOihDbGFzcyljdXN0b21DbGFzcwogICAgIGlm
ICghW2N1c3RvbUNsYXNzIGlzU3ViY2xhc3NPZkNsYXNzOltXZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXcgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViRHluYW1pY1Njcm9sbEJhcnNW
aWV3ICpvbGRTY3JvbGxWaWV3ID0gX3ByaXZhdGUtPmZyYW1lU2Nyb2xsVmlldzsgLy8gYWxyZWFk
eSByZXRhaW5lZAotICAgIE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqZG9jdW1lbnRWaWV3ID0g
W1tzZWxmIGRvY3VtZW50Vmlld10gcmV0YWluXTsKKyAgICBhdXRvIG9sZFNjcm9sbFZpZXcgPSBf
cHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3OyAvLyBhbHJlYWR5IHJldGFpbmVkCisgICAgYXV0byBk
b2N1bWVudFZpZXcgPSByZXRhaW5QdHIoW3NlbGYgZG9jdW1lbnRWaWV3XSk7CiAKLSAgICBXZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcgID0gW1tjdXN0b21DbGFzcyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpbb2xkU2Nyb2xsVmlldyBmcmFtZV1dOworICAgIFJldGFpblB0cjxXZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXc+IHNjcm9sbFZpZXcgID0gYWRvcHROUyhbW2N1c3RvbUNsYXNz
IGFsbG9jXSBpbml0V2l0aEZyYW1lOltvbGRTY3JvbGxWaWV3IGZyYW1lXV0pOwogICAgIFtzY3Jv
bGxWaWV3IHNldENvbnRlbnRWaWV3OltbW1dlYkNsaXBWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OltzY3JvbGxWaWV3IGJvdW5kc11dIGF1dG9yZWxlYXNlXV07CiAgICAgW3Njcm9sbFZpZXcgc2V0
RHJhd3NCYWNrZ3JvdW5kOltvbGRTY3JvbGxWaWV3IGRyYXdzQmFja2dyb3VuZF1dOwogICAgIFtz
Y3JvbGxWaWV3IHNldEhhc1ZlcnRpY2FsU2Nyb2xsZXI6W29sZFNjcm9sbFZpZXcgaGFzVmVydGlj
YWxTY3JvbGxlcl1dOwogICAgIFtzY3JvbGxWaWV3IHNldEhhc0hvcml6b250YWxTY3JvbGxlcjpb
b2xkU2Nyb2xsVmlldyBoYXNIb3Jpem9udGFsU2Nyb2xsZXJdXTsKICAgICBbc2Nyb2xsVmlldyBz
ZXRBdXRvcmVzaXppbmdNYXNrOltvbGRTY3JvbGxWaWV3IGF1dG9yZXNpemluZ01hc2tdXTsKICAg
ICBbc2Nyb2xsVmlldyBzZXRMaW5lU2Nyb2xsOltvbGRTY3JvbGxWaWV3IGxpbmVTY3JvbGxdXTsK
LSAgICBbc2VsZiBhZGRTdWJ2aWV3OnNjcm9sbFZpZXddOworICAgIFtzZWxmIGFkZFN1YnZpZXc6
c2Nyb2xsVmlldy5nZXQoKV07CiAKICAgICAvLyBkb24ndCBjYWxsIG91ciBvdmVycmlkZGVuIHZl
cnNpb24gaGVyZTsgd2UgbmVlZCB0byBtYWtlIHRoZSBzdGFuZGFyZCBOU1ZpZXcgbGluayBiZXR3
ZWVuIHVzCiAgICAgLy8gYW5kIG91ciBzdWJ2aWV3IHNvIHRoYXQgcHJldmlvdXNLZXlWaWV3IGFu
ZCBwcmV2aW91c1ZhbGlkS2V5VmlldyB3b3JrIGFzIGV4cGVjdGVkLiBUaGlzIHdvcmtzCiAgICAg
Ly8gdG9nZXRoZXIgd2l0aCBvdXIgYmVjb21lRmlyc3RSZXNwb25kZXIgYW5kIHNldE5leHRLZXlW
aWV3IG92ZXJyaWRlcy4KLSAgICBbc3VwZXIgc2V0TmV4dEtleVZpZXc6c2Nyb2xsVmlld107Cisg
ICAgW3N1cGVyIHNldE5leHRLZXlWaWV3OnNjcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgX3ByaXZh
dGUtPmZyYW1lU2Nyb2xsVmlldyA9IHNjcm9sbFZpZXc7CisgICAgX3ByaXZhdGUtPmZyYW1lU2Ny
b2xsVmlldyA9IFdURk1vdmUoc2Nyb2xsVmlldyk7CiAKLSAgICBbc2VsZiBfc2V0RG9jdW1lbnRW
aWV3OmRvY3VtZW50Vmlld107CisgICAgW3NlbGYgX3NldERvY3VtZW50Vmlldzpkb2N1bWVudFZp
ZXcuZ2V0KCldOwogICAgIFtzZWxmIF9pbnN0YWxsXTsKIAogICAgIFtvbGRTY3JvbGxWaWV3IHJl
bW92ZUZyb21TdXBlcnZpZXddOwotICAgIFtvbGRTY3JvbGxWaWV3IHJlbGVhc2VdOwotICAgIFtk
b2N1bWVudFZpZXcgcmVsZWFzZV07CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNj
cmVlbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1
bGxTY3JlZW5Db250cm9sbGVyLm1tCmluZGV4IGI4NDQ0ZjczMTg1YjQyYzM1MzQyOTgyODVlMzI3
YWIzNjk5MDNjOTIuLjg2ZjIwZDJiZjg4Mjg0NGM5NWZiZGFmMDhiY2VhOWU4NDI0OTJiMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxs
U2NyZWVuQ29udHJvbGxlci5tbQpAQCAtODEsOSArODEsOCBAQCBAaW1wbGVtZW50YXRpb24gV2Vi
RnVsbFNjcmVlbkNvbnRyb2xsZXIKIC0gKGlkKWluaXQKIHsKICAgICAvLyBEbyBub3QgZGVmZXIg
d2luZG93IGNyZWF0aW9uLCB0byBtYWtlIHN1cmUgLXdpbmRvd051bWJlciBpcyBjcmVhdGVkIChu
ZWVkZWQgYnkgV2ViV2luZG93U2NhbGVBbmltYXRpb24pLgotICAgIE5TV2luZG93ICp3aW5kb3cg
PSBbW1dlYkNvcmVGdWxsU2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5T
WmVyb1JlY3Qgc3R5bGVNYXNrOk5TV2luZG93U3R5bGVNYXNrQ2xvc2FibGUgYmFja2luZzpOU0Jh
Y2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRo
V2luZG93OndpbmRvd107Ci0gICAgW3dpbmRvdyByZWxlYXNlXTsKKyAgICBhdXRvIHdpbmRvdyA9
IGFkb3B0TlMoW1tXZWJDb3JlRnVsbFNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50
UmVjdDpOU1plcm9SZWN0IHN0eWxlTWFzazpOU1dpbmRvd1N0eWxlTWFza0Nsb3NhYmxlIGJhY2tp
bmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOworICAgIHNlbGYgPSBbc3VwZXIg
aW5pdFdpdGhXaW5kb3c6d2luZG93LmdldCgpXTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgW3NlbGYgd2luZG93RGlkTG9hZF07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA5NjIwZTg2ZmIwYTcyMDE0MDFj
MmNhZDU1MWRlMmNmYjg4ODliZWRiLi42NmZiODE2ODY3YzE1MTk5NWRiZjU1ZDE3MzU3YjBlOWUy
MTAxOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KQEAgLTE5MTEsMTMgKzE5MTEsMTAgQEAgLSAodm9pZClfdXBkYXRlTW91c2VvdmVyV2l0
aEV2ZW50OihOU0V2ZW50ICopZXZlbnQKICAgICBOU1ZpZXcgKmhpdFZpZXcgPSBbY29udGVudFZp
ZXcgaGl0VGVzdDpsb2NhdGlvbkZvckhpdFRlc3RdOwogICAgIGZvcmNlV2ViSFRNTFZpZXdIaXRU
ZXN0ID0gTk87CiAgICAgCi0gICAgV2ViSFRNTFZpZXcgKnZpZXcgPSBuaWw7CisgICAgUmV0YWlu
UHRyPFdlYkhUTUxWaWV3PiB2aWV3OwogICAgIGlmIChbaGl0VmlldyBpc0tpbmRPZkNsYXNzOltX
ZWJIVE1MVmlldyBjbGFzc11dKQogICAgICAgICB2aWV3ID0gKFdlYkhUTUxWaWV3ICopaGl0Vmll
dzsgICAgCiAKLSAgICBpZiAodmlldykKLSAgICAgICAgW3ZpZXcgcmV0YWluXTsKLQogICAgIGlm
IChsYXN0SGl0VmlldyAhPSB2aWV3ICYmIGxhc3RIaXRWaWV3ICYmIFtsYXN0SGl0VmlldyBfZnJh
bWVdKSB7CiAgICAgICAgIC8vIElmIHdlIGFyZSBtb3Zpbmcgb3V0IG9mIGEgdmlldyAob3IgZnJh
bWUpLCBsZXQncyBwcmV0ZW5kIHRoZSBtb3VzZSBtb3ZlZAogICAgICAgICAvLyBhbGwgdGhlIHdh
eSBvdXQgb2YgdGhhdCB2aWV3LiBCdXQgd2UgaGF2ZSB0byBhY2NvdW50IGZvciBzY3JvbGxpbmcs
IGJlY2F1c2UKQEAgLTE5MzgsNyArMTkzNSw3IEBAIC0gKHZvaWQpX3VwZGF0ZU1vdXNlb3Zlcldp
dGhFdmVudDooTlNFdmVudCAqKWV2ZW50CiAgICAgICAgICAgICBsYXN0SGl0Q29yZUZyYW1lLT5l
dmVudEhhbmRsZXIoKS5tb3VzZU1vdmVkKGV2ZW50LCBbW3NlbGYgX3dlYlZpZXddIF9wcmVzc3Vy
ZUV2ZW50XSk7CiAgICAgfQogCi0gICAgbGFzdEhpdFZpZXcgPSB2aWV3OworICAgIGxhc3RIaXRW
aWV3ID0gdmlldy5nZXQoKTsKIAogICAgIGlmICh2aWV3KSB7CiAgICAgICAgIGlmIChhdXRvKiBj
b3JlRnJhbWUgPSBjb3JlKFt2aWV3IF9mcmFtZV0pKSB7CkBAIC0xOTU1LDggKzE5NTIsNiBAQCAt
ICh2b2lkKV91cGRhdGVNb3VzZW92ZXJXaXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudAogICAgICAg
ICAgICAgICAgIGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkucGFzc01vdXNlTW92ZWRFdmVudFRv
U2Nyb2xsYmFycyhldmVudCwgW1tzZWxmIF93ZWJWaWV3XSBfcHJlc3N1cmVFdmVudF0pOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgW3ZpZXcgcmVsZWFzZV07CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk5hdmln
YXRpb25EYXRhLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJOYXZpZ2F0
aW9uRGF0YS5tbQppbmRleCAwNmU0YTYwMzAxNjhhYWMyNDU2NDAwMTdkMzk4Njk3OGUyM2YxMjdh
Li42MzhjM2E1ZTRmNzljMjEyOTA4NWYzMDNjZWRlZmZkOGZjZjQwNjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk5hdmlnYXRpb25EYXRhLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTmF2aWdhdGlvbkRhdGEubW0KQEAg
LTI0LDE2ICsyNCwxNyBAQAogICovCiAKICNpbXBvcnQgIldlYk5hdmlnYXRpb25EYXRhLmgiCisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbnRlcmZhY2UgV2ViTmF2aWdhdGlvbkRhdGFQ
cml2YXRlIDogTlNPYmplY3QKIHsKIEBwdWJsaWMKLSAgICBOU1N0cmluZyAqdXJsOwotICAgIE5T
U3RyaW5nICp0aXRsZTsKLSAgICBOU1VSTFJlcXVlc3QgKm9yaWdpbmFsUmVxdWVzdDsKLSAgICBO
U1VSTFJlc3BvbnNlICpyZXNwb25zZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHVybDsKKyAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IHRpdGxlOworICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+
IG9yaWdpbmFsUmVxdWVzdDsKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2U7
CiAgICAgQk9PTCBoYXNTdWJzdGl0dXRlRGF0YTsKLSAgICBOU1N0cmluZyAqY2xpZW50UmVkaXJl
Y3RTb3VyY2U7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjbGllbnRSZWRpcmVjdFNvdXJjZTsK
IH0KIAogQGVuZApAQCAtNDIsMTIgKzQzLDYgQEAgQGltcGxlbWVudGF0aW9uIFdlYk5hdmlnYXRp
b25EYXRhUHJpdmF0ZQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbdXJsIHJlbGVhc2VdOwot
ICAgIFt0aXRsZSByZWxlYXNlXTsKLSAgICBbb3JpZ2luYWxSZXF1ZXN0IHJlbGVhc2VdOwotICAg
IFtyZXNwb25zZSByZWxlYXNlXTsKLSAgICBbY2xpZW50UmVkaXJlY3RTb3VyY2UgcmVsZWFzZV07
Ci0KICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTYyLDM0ICs1NywzNCBAQCAtIChpZClp
bml0V2l0aFVSTFN0cmluZzooTlNTdHJpbmcgKil1cmwgdGl0bGU6KE5TU3RyaW5nICopdGl0bGUg
b3JpZ2luYWxSZXF1ZXN0OgogICAgICAgICByZXR1cm4gbmlsOwogICAgIF9wcml2YXRlID0gW1tX
ZWJOYXZpZ2F0aW9uRGF0YVByaXZhdGUgYWxsb2NdIGluaXRdOwogICAgIAotICAgIF9wcml2YXRl
LT51cmwgPSBbdXJsIHJldGFpbl07Ci0gICAgX3ByaXZhdGUtPnRpdGxlID0gW3RpdGxlIHJldGFp
bl07Ci0gICAgX3ByaXZhdGUtPm9yaWdpbmFsUmVxdWVzdCA9IFtyZXF1ZXN0IHJldGFpbl07Ci0g
ICAgX3ByaXZhdGUtPnJlc3BvbnNlID0gW3Jlc3BvbnNlIHJldGFpbl07CisgICAgX3ByaXZhdGUt
PnVybCA9IHVybDsKKyAgICBfcHJpdmF0ZS0+dGl0bGUgPSB0aXRsZTsKKyAgICBfcHJpdmF0ZS0+
b3JpZ2luYWxSZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICBfcHJpdmF0ZS0+cmVzcG9uc2UgPSByZXNw
b25zZTsKICAgICBfcHJpdmF0ZS0+aGFzU3Vic3RpdHV0ZURhdGEgPSBoYXNTdWJzdGl0dXRlRGF0
YTsKLSAgICBfcHJpdmF0ZS0+Y2xpZW50UmVkaXJlY3RTb3VyY2UgPSBbcmVkaXJlY3RTb3VyY2Ug
cmV0YWluXTsKKyAgICBfcHJpdmF0ZS0+Y2xpZW50UmVkaXJlY3RTb3VyY2UgPSByZWRpcmVjdFNv
dXJjZTsKICAgICAKICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAoTlNTdHJpbmcgKil1cmwKIHsK
LSAgICByZXR1cm4gX3ByaXZhdGUtPnVybDsKKyAgICByZXR1cm4gX3ByaXZhdGUtPnVybC5nZXQo
KTsKIH0KIAogLSAoTlNTdHJpbmcgKil0aXRsZQogewotICAgIHJldHVybiBfcHJpdmF0ZS0+dGl0
bGU7CisgICAgcmV0dXJuIF9wcml2YXRlLT50aXRsZS5nZXQoKTsKIH0KIAogLSAoTlNVUkxSZXF1
ZXN0ICopb3JpZ2luYWxSZXF1ZXN0CiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5vcmlnaW5hbFJl
cXVlc3Q7CisgICAgcmV0dXJuIF9wcml2YXRlLT5vcmlnaW5hbFJlcXVlc3QuZ2V0KCk7CiB9CiAK
IC0gKE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQogewotICAgIHJldHVybiBfcHJpdmF0ZS0+cmVz
cG9uc2U7CisgICAgcmV0dXJuIF9wcml2YXRlLT5yZXNwb25zZS5nZXQoKTsKIH0KIAogLSAoQk9P
TCloYXNTdWJzdGl0dXRlRGF0YQpAQCAtOTksNyArOTQsNyBAQCAtIChCT09MKWhhc1N1YnN0aXR1
dGVEYXRhCiAKIC0gKE5TU3RyaW5nICopY2xpZW50UmVkaXJlY3RTb3VyY2UKIHsKLSAgICByZXR1
cm4gX3ByaXZhdGUtPmNsaWVudFJlZGlyZWN0U291cmNlOworICAgIHJldHVybiBfcHJpdmF0ZS0+
Y2xpZW50UmVkaXJlY3RTb3VyY2UuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZEb2N1bWVudEV4dHJh
cy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGRG9jdW1lbnRFeHRy
YXMubW0KaW5kZXggMTc3Y2U5M2JlZTgzODNhMDRlYWNjN2NiMWYwMDZiYTRlZGViODExYy4uMjY2
NTg5YTZhMTFmMzQ5NTkxYTNmN2I3OTE4NTA0MzJkZTg0OGZkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZEb2N1bWVudEV4dHJhcy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERkRvY3VtZW50RXh0cmFzLm1tCkBA
IC0xMTksMTIgKzExOSwxMSBAQCBOU0FycmF5ICphbGxTY3JpcHRzSW5QREZEb2N1bWVudChDR1BE
RkRvY3VtZW50UmVmIHBkZkRvY3VtZW50KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgTlNTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9IChsZW5ndGggPiAxICYmIGJ5dGVzWzBdID09
IDB4RkUgJiYgYnl0ZXNbMV0gPT0gMHhGRikgPyBOU1VuaWNvZGVTdHJpbmdFbmNvZGluZyA6IE5T
VVRGOFN0cmluZ0VuY29kaW5nOwotICAgICAgICBOU1N0cmluZyAqc2NyaXB0ID0gW1tOU1N0cmlu
ZyBhbGxvY10gaW5pdFdpdGhCeXRlczpieXRlcyBsZW5ndGg6bGVuZ3RoIGVuY29kaW5nOmVuY29k
aW5nXTsKKyAgICAgICAgYXV0byBzY3JpcHQgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoQnl0ZXM6Ynl0ZXMgbGVuZ3RoOmxlbmd0aCBlbmNvZGluZzplbmNvZGluZ10pOwogICAg
ICAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFtzY3Jp
cHRzIGFkZE9iamVjdDpzY3JpcHRdOwotICAgICAgICBbc2NyaXB0IHJlbGVhc2VdOworICAgICAg
ICBbc2NyaXB0cyBhZGRPYmplY3Q6c2NyaXB0LmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4g
c2NyaXB0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UERGUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlBERlJlcHJlc2VudGF0aW9uLm1tCmluZGV4IGViY2EzYjA4NGU2YjVmMDFhM2I1Y2ZkYWZlN2Nh
MWFlYzI5NGQzOTAuLjUyZjMwYTA5NmExMmEyYzA0M2I1NTZmYzk0M2VjOWVlNGZkZGU5NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXBy
ZXNlbnRhdGlvbi5tbQpAQCAtMTIxLDExICsxMjEsMTAgQEAgLSAodm9pZClmaW5pc2hlZExvYWRp
bmdXaXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKICAgICB9CiAKICAg
ICBXZWJQREZWaWV3ICp2aWV3ID0gKFdlYlBERlZpZXcgKilbW1tkYXRhU291cmNlIHdlYkZyYW1l
XSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107Ci0gICAgUERGRG9jdW1lbnQgKmRvYyA9IFtbW1tz
ZWxmIGNsYXNzXSBQREZEb2N1bWVudENsYXNzXSBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGFdOwot
ICAgIFt2aWV3IHNldFBERkRvY3VtZW50OmRvY107CisgICAgYXV0byBkb2MgPSBhZG9wdE5TKFtb
W1tzZWxmIGNsYXNzXSBQREZEb2N1bWVudENsYXNzXSBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGFd
KTsKKyAgICBbdmlldyBzZXRQREZEb2N1bWVudDpkb2MuZ2V0KCldOwogCi0gICAgTlNBcnJheSAq
c2NyaXB0cyA9IGFsbFNjcmlwdHNJblBERkRvY3VtZW50KGRvYyk7Ci0gICAgW2RvYyByZWxlYXNl
XTsKKyAgICBOU0FycmF5ICpzY3JpcHRzID0gYWxsU2NyaXB0c0luUERGRG9jdW1lbnQoZG9jLmdl
dCgpKTsKICAgICBkb2MgPSBuaWw7CiAKICAgICBpZiAoIVtzY3JpcHRzIGNvdW50XSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRleCBmN2YzZTMx
NTgwNzE1YTdkMjMyZjU2MzBjYmZlZTQ5MTMyNWFmOTFlLi4yMTMzN2YyZGFiMmM1N2RjZmExMjlh
Y2I3N2I0ODJlNjU2YjYzNzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlBERlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQREZWaWV3Lm1tCkBAIC0zOTAsMTIgKzM5MCwxMSBAQCAtIChOU01lbnUgKiltZW51Rm9y
RXZlbnQ6KE5TRXZlbnQgKil0aGVFdmVudAogICAgIC8vIFRvIG1hdGNoIHRoZSBQREZLaXQgc3R5
bGUsIHdlJ2xsIGFkZCBPcGVuIHdpdGggUHJldmlldyBldmVuIHdoZW4gdGhlcmUncyBubyBkb2N1
bWVudCB5ZXQgdG8gdmlldywgYW5kCiAgICAgLy8gZGlzYWJsZSBpdCB1c2luZyB2YWxpZGF0ZVVz
ZXJJbnRlcmZhY2VJdGVtLgogICAgIE5TU3RyaW5nICp0aXRsZSA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OlVJX1NUUklOR19JTlRFUk5BTCgiT3BlbiB3aXRoICVAIiwgImNvbnRleHQgbWVu
dSBpdGVtIGZvciBQREYiKSwgYXBwTmFtZV07Ci0gICAgTlNNZW51SXRlbSAqaXRlbSA9IFtbTlNN
ZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTp0aXRsZSBhY3Rpb246QHNlbGVjdG9yKF9vcGVu
V2l0aEZpbmRlcjopIGtleUVxdWl2YWxlbnQ6QCIiXTsKKyAgICBhdXRvIGl0ZW0gPSByZXRhaW5Q
dHIoW1tOU01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOnRpdGxlIGFjdGlvbjpAc2VsZWN0
b3IoX29wZW5XaXRoRmluZGVyOikga2V5RXF1aXZhbGVudDpAIiJdKTsKICAgICBbaXRlbSBzZXRU
YWc6V2ViTWVudUl0ZW1UYWdPcGVuV2l0aERlZmF1bHRBcHBsaWNhdGlvbl07CiAgICAgaWYgKGFw
cEljb24pCiAgICAgICAgIFtpdGVtIHNldEltYWdlOmFwcEljb25dOwotICAgIFtpdGVtcyBpbnNl
cnRPYmplY3Q6aXRlbSBhdEluZGV4OjBdOwotICAgIFtpdGVtIHJlbGVhc2VdOworICAgIFtpdGVt
cyBpbnNlcnRPYmplY3Q6aXRlbS5nZXQoKSBhdEluZGV4OjBdOwogICAgIAogICAgIFtpdGVtcyBp
bnNlcnRPYmplY3Q6W05TTWVudUl0ZW0gc2VwYXJhdG9ySXRlbV0gYXRJbmRleDoxXTsKICAgICAK
QEAgLTY0Miw3ICs2NDEsNyBAQCAtIChOU1VJbnRlZ2VyKWNvdW50TWF0Y2hlc0ZvclRleHQ6KE5T
U3RyaW5nICopc3RyaW5nIGluRE9NUmFuZ2U6KERPTVJhbmdlICopcmFuZwogICAgICAgICByZXR1
cm4gMDsKIAogICAgIFBERlNlbGVjdGlvbiAqcHJldmlvdXNNYXRjaCA9IG5pbDsKLSAgICBOU011
dGFibGVBcnJheSAqbWF0Y2hlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2Fw
YWNpdHk6bGltaXRdOworICAgIGF1dG8gbWF0Y2hlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpsaW1pdF0pOwogCiAgICAgZm9yICg7OykgewogICAg
ICAgICBQREZTZWxlY3Rpb24gKm5leHRNYXRjaCA9IFtzZWxmIF9uZXh0TWF0Y2hGb3I6c3RyaW5n
IGRpcmVjdGlvbjpZRVMgY2FzZVNlbnNpdGl2ZTohKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc0Nh
c2VJbnNlbnNpdGl2ZSkgd3JhcDpOTyBmcm9tU2VsZWN0aW9uOnByZXZpb3VzTWF0Y2ggc3RhcnRJ
blNlbGVjdGlvbjpOT107CkBAIC02NTYsOCArNjU1LDcgQEAgLSAoTlNVSW50ZWdlciljb3VudE1h
dGNoZXNGb3JUZXh0OihOU1N0cmluZyAqKXN0cmluZyBpbkRPTVJhbmdlOihET01SYW5nZSAqKXJh
bmcKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIFtzZWxmIF9zZXRUZXh0TWF0Y2hl
czptYXRjaGVzXTsKLSAgICBbbWF0Y2hlcyByZWxlYXNlXTsKKyAgICBbc2VsZiBfc2V0VGV4dE1h
dGNoZXM6bWF0Y2hlcy5nZXQoKV07CiAgICAgCiAgICAgcmV0dXJuIFttYXRjaGVzIGNvdW50XTsK
IH0KQEAgLTcwOCwxMiArNzA2LDExIEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0
ZWRTdHJpbmcKICAgICAvLyBjaGFuZ2luZyB0aGUgc2VsZWN0aW9uIGlzIGEgaGFjaywgYnV0IHRo
ZSBvbmx5IHdheSB0byBnZXQgYW4gYXR0ciBzdHJpbmcgaXMgdmlhIFBERlNlbGVjdGlvbgogICAg
IAogICAgIC8vIG11c3QgY29weSB0aGlzIHNlbGVjdGlvbiBvYmplY3QgYmVjYXVzZSB3ZSBjaGFu
Z2UgdGhlIHNlbGVjdGlvbiB3aGljaCBzZWVtcyB0byByZWxlYXNlIGl0Ci0gICAgUERGU2VsZWN0
aW9uICpzYXZlZFNlbGVjdGlvbiA9IFtbUERGU3VidmlldyBjdXJyZW50U2VsZWN0aW9uXSBjb3B5
XTsKKyAgICBhdXRvIHNhdmVkU2VsZWN0aW9uID0gYWRvcHROUyhbW1BERlN1YnZpZXcgY3VycmVu
dFNlbGVjdGlvbl0gY29weV0pOwogICAgIFtQREZTdWJ2aWV3IHNlbGVjdEFsbDpuaWxdOwogICAg
IE5TQXR0cmlidXRlZFN0cmluZyAqcmVzdWx0ID0gW1tQREZTdWJ2aWV3IGN1cnJlbnRTZWxlY3Rp
b25dIGF0dHJpYnV0ZWRTdHJpbmddOwogICAgIGlmIChzYXZlZFNlbGVjdGlvbikgewotICAgICAg
ICBbUERGU3VidmlldyBzZXRDdXJyZW50U2VsZWN0aW9uOnNhdmVkU2VsZWN0aW9uXTsKLSAgICAg
ICAgW3NhdmVkU2VsZWN0aW9uIHJlbGVhc2VdOworICAgICAgICBbUERGU3VidmlldyBzZXRDdXJy
ZW50U2VsZWN0aW9uOnNhdmVkU2VsZWN0aW9uLmdldCgpXTsKICAgICB9IGVsc2UgewogICAgICAg
ICAvLyBGSVhNRTogYmVoYXZpb3Igb2Ygc2V0Q3VycmVudFNlbGVjdGlvbjpuaWwgaXMgbm90IGRv
Y3VtZW50ZWQgLSBjaGVjayA0MTgyOTM0IGZvciBwcm9ncmVzcwogICAgICAgICAvLyBPdGhlcndp
c2UsIHdlIGNvdWxkIGNvbGxhcHNlIHRoaXMgY29kZSB3aXRoIHRoZSBjYXNlIGFib3ZlLgpAQCAt
ODc0LDcgKzg3MSw3IEBAIC0gKE5TSW1hZ2UgKilzZWxlY3Rpb25JbWFnZUZvcmNpbmdCbGFja1Rl
eHQ6KEJPT0wpZm9yY2VCbGFja1RleHQKICAgICAvLyBDb252ZXJ0IHRoZSBzZWxlY3Rpb24gdG8g
YW4gYXR0cmlidXRlZCBzdHJpbmcsIGFuZCBkcmF3IHRoYXQuCiAgICAgLy8gRklYTUUgNDYyMTE1
NDogdGhpcyBkb2Vzbid0IGhhbmRsZSBpdGFsaWNzIChhbmQgbWF5YmUgb3RoZXIgc3R5bGVzKQog
ICAgIC8vIEZJWE1FIDQ2MDQzNjY6IHRoaXMgZG9lc24ndCBoYW5kbGUgdGV4dCBhdCBub24tYWN0
dWFsIHNpemUKLSAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5n
ID0gW1tzZWxmIHNlbGVjdGVkQXR0cmlidXRlZFN0cmluZ10gbXV0YWJsZUNvcHldOworICAgIFJl
dGFpblB0cjxOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nID0gYWRv
cHROUyhbW3NlbGYgc2VsZWN0ZWRBdHRyaWJ1dGVkU3RyaW5nXSBtdXRhYmxlQ29weV0pOwogICAg
IE5TUmFuZ2Ugd2hvbGVTdHJpbmdSYW5nZSA9IE5TTWFrZVJhbmdlKDAsIFthdHRyaWJ1dGVkU3Ry
aW5nIGxlbmd0aF0pOwogICAgIAogICAgIC8vIE1vZGlmeSB0aGUgc3R5bGVzIGluIHRoZSBhdHRy
aWJ1dGVkIHN0cmluZyB0byBkcmF3IGJsYWNrIHRleHQsIG5vIGJhY2tncm91bmQsIGFuZCBubyB1
bmRlcmxpbmUuIFdlIGRyYXcgCkBAIC04OTEsOCArODg4LDYgQEAgLSAoTlNJbWFnZSAqKXNlbGVj
dGlvbkltYWdlRm9yY2luZ0JsYWNrVGV4dDooQk9PTClmb3JjZUJsYWNrVGV4dAogICAgIFtzZWxl
Y3Rpb25JbWFnZSBsb2NrRm9jdXNdOwogICAgIFthdHRyaWJ1dGVkU3RyaW5nIGRyYXdBdFBvaW50
Ok5TWmVyb1BvaW50XTsKICAgICBbc2VsZWN0aW9uSW1hZ2UgdW5sb2NrRm9jdXNdOwotICAgIAot
ICAgIFthdHRyaWJ1dGVkU3RyaW5nIHJlbGVhc2VdOwogCiAgICAgcmV0dXJuIHNlbGVjdGlvbklt
YWdlOwogfQpAQCAtMTEwNiw3ICsxMTAxLDcgQEAgLSAoTlNNdXRhYmxlQXJyYXkgKilfbWVudUl0
ZW1zRnJvbVBERktpdEZvckV2ZW50OihOU0V2ZW50ICopdGhlRXZlbnQKICAgICBOU011dGFibGVB
cnJheSAqY29waWVkSXRlbXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVuZGVjbGFyZWQtc2VsZWN0b3IiKQotICAgIE5TRGljdGlvbmFyeSAqYWN0
aW9uc1RvVGFncyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlz
OgorICAgIGF1dG8gYWN0aW9uc1RvVGFncyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CiAgICAgICAgIEAoV2ViTWVudUl0ZW1QREZBY3R1YWxT
aXplKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRBY3R1YWxTaXplOikpLAog
ICAgICAgICBAKFdlYk1lbnVJdGVtUERGWm9vbUluKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNl
bGVjdG9yKHpvb21JbjopKSwKICAgICAgICAgQChXZWJNZW51SXRlbVBERlpvb21PdXQpLCBOU1N0
cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3Ioem9vbU91dDopKSwKQEAgLTExMTgsMjAgKzExMTMs
MjAgQEAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVjdG9yIikKICAgICAg
ICAgQChXZWJNZW51SXRlbVBERkNvbnRpbnVvdXMpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2Vs
ZWN0b3IoX3RvZ2dsZUNvbnRpbnVvdXM6KSksCiAgICAgICAgIEAoV2ViTWVudUl0ZW1QREZOZXh0
UGFnZSksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihnb1RvTmV4dFBhZ2U6KSksCiAg
ICAgICAgIEAoV2ViTWVudUl0ZW1QREZQcmV2aW91c1BhZ2UpLCBOU1N0cmluZ0Zyb21TZWxlY3Rv
cihAc2VsZWN0b3IoZ29Ub1ByZXZpb3VzUGFnZTopKSwKLSAgICAgICAgbmlsXTsKKyAgICAgICAg
bmlsXSk7CiBJR05PUkVfV0FSTklOR1NfRU5ECiAKICAgICAvLyBMZWF2ZSB0aGVzZSBtZW51IGl0
ZW1zIG91dCwgc2luY2UgV2ViS2l0IGluc2VydHMgZXF1aXZhbGVudCBvbmVzLiBOb3RlIHRoYXQg
d2UgbGVhdmUgb3V0IFBERktpdCdzICJMb29rIFVwIGluIERpY3Rpb25hcnkiCiAgICAgLy8gaXRl
bSBoZXJlIGJlY2F1c2UgV2ViS2l0IGFscmVhZHkgaW5jbHVkZXMgYW4gaXRlbSB3aXRoIHRoZSBz
YW1lIHRpdGxlIGFuZCBwdXJwb3NlLiBXZSBtYXAgV2ViS2l0J3MgdG8gUERGS2l0J3MgCiAgICAg
Ly8gIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIgdmlhIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiAtW1dl
YlBERlZpZXcgX2xvb2tVcEluRGljdGlvbmFyeUZyb21NZW51Ol0uCi0gICAgTlNTZXQgKnVud2Fu
dGVkQWN0aW9ucyA9IFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKKyAgICBhdXRvIHVu
d2FudGVkQWN0aW9ucyA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVjdG9yIikKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2VhcmNo
SW5TcG90bGlnaHQ6KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU1N0cmluZ0Zy
b21TZWxlY3RvcihAc2VsZWN0b3IoX3NlYXJjaEluR29vZ2xlOikpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZWFyY2hJbkRp
Y3Rpb25hcnk6KSksCiBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoY29weTopKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuaWxdKTsKICAgICAKICAgICBOU0VudW1lcmF0b3IgKmUgPSBbW1tQREZTdWJ2aWV3IG1lbnVG
b3JFdmVudDp0aGVFdmVudF0gaXRlbUFycmF5XSBvYmplY3RFbnVtZXJhdG9yXTsKICAgICBOU01l
bnVJdGVtICppdGVtOwpAQCAtMTE0NCw5ICsxMTM5LDggQEAgSUdOT1JFX1dBUk5JTkdTX0VORAog
ICAgICAgICAKICAgICAgICAgLy8gQ29weSBpdGVtcyBzaW5jZSBhIG1lbnUgaXRlbSBjYW4gYmUg
aW4gb25seSBvbmUgbWVudSBhdCBhIHRpbWUsIGFuZCB3ZSBkb24ndAogICAgICAgICAvLyB3YW50
IHRvIG1vZGlmeSB0aGUgb3JpZ2luYWwgbWVudSBzdXBwbGllZCBieSBQREZLaXQuCi0gICAgICAg
IE5TTWVudUl0ZW0gKml0ZW1Db3B5ID0gW2l0ZW0gY29weV07Ci0gICAgICAgIFtjb3BpZWRJdGVt
cyBhZGRPYmplY3Q6aXRlbUNvcHldOwotICAgICAgICBbaXRlbUNvcHkgcmVsZWFzZV07CisgICAg
ICAgIFJldGFpblB0cjxOU01lbnVJdGVtPiBpdGVtQ29weSA9IGFkb3B0TlMoW2l0ZW0gY29weV0p
OworICAgICAgICBbY29waWVkSXRlbXMgYWRkT2JqZWN0Oml0ZW1Db3B5LmdldCgpXTsKICAgICAg
ICAgCiAgICAgICAgIC8vIEluY2x1ZGUgYWxsIG9mIFBERktpdCdzIHNlcGFyYXRvcnMgZm9yIG5v
dy4gQXQgdGhlIGVuZCB3ZSdsbCByZW1vdmUgYW55IG9uZXMgdGhhdCB3ZXJlIG1hZGUKICAgICAg
ICAgLy8gdXNlbGVzcyBieSByZW1vdmluZyBQREZLaXQncyBtZW51IGl0ZW1zLgpAQCAtMTE3Niw5
ICsxMTcwLDYgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgTE9HX0VSUk9SKCJQ
REYgY29udGV4dCBtZW51IGl0ZW0gJUAgY2FtZSB3aXRoIHRhZyAlZCwgc28gbm8gV2ViS2l0IHRh
ZyB3YXMgYXBwbGllZC4gVGhpcyBjb3VsZCBtZWFuIHRoYXQgdGhlIGl0ZW0gZG9lc24ndCBhcHBl
YXIgaW4gY2xpZW50cyBzdWNoIGFzIFNhZmFyaS4iLCBbaXRlbUNvcHkgdGl0bGVdLCBbaXRlbUNv
cHkgdGFnXSk7CiAgICAgfQogICAgIAotICAgIFthY3Rpb25zVG9UYWdzIHJlbGVhc2VdOwotICAg
IFt1bndhbnRlZEFjdGlvbnMgcmVsZWFzZV07Ci0gICAgCiAgICAgLy8gU2luY2Ugd2UgbWlnaHQg
aGF2ZSByZW1vdmVkIGVsZW1lbnRzIHN1cHBsaWVkIGJ5IFBERktpdCwgYW5kIHdlIHdhbnQgdG8g
bWluaW1pemUgb3VyIGhhcmR3aXJlZAogICAgIC8vIGtub3dsZWRnZSBvZiB0aGUgb3JkZXIgYW5k
IGFycmFuZ2VtZW50IG9mIFBERktpdCdzIG1lbnUgaXRlbXMsIHdlIG5lZWQgdG8gcmVtb3ZlIGFu
eSBib2d1cwogICAgIC8vIHNlcGFyYXRvcnMgdGhhdCB3ZXJlIGxlZnQgYmVoaW5kLgpAQCAtMTIw
MSw3ICsxMTkyLDcgQEAgLSAoUERGU2VsZWN0aW9uICopX25leHRNYXRjaEZvcjooTlNTdHJpbmcg
KilzdHJpbmcgZGlyZWN0aW9uOihCT09MKWZvcndhcmQgY2FzZVMKICAgICAKICAgICBQREZEb2N1
bWVudCAqZG9jdW1lbnQgPSBbUERGU3VidmlldyBkb2N1bWVudF07CiAgICAgCi0gICAgUERGU2Vs
ZWN0aW9uICpzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoID0gW2luaXRpYWxTZWxlY3Rpb24gY29w
eV07CisgICAgYXV0byBzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoID0gYWRvcHROUyhbaW5pdGlh
bFNlbGVjdGlvbiBjb3B5XSk7CiAgICAgaWYgKHN0YXJ0SW5TZWxlY3Rpb24pIHsKICAgICAgICAg
Ly8gSW5pdGlhbGx5IHdlIHdhbnQgdG8gaW5jbHVkZSB0aGUgc2VsZWN0ZWQgdGV4dCBpbiB0aGUg
c2VhcmNoLiBQREZEb2N1bWVudCdzIEFQSSBhbHdheXMgc2VhcmNoZXMgZnJvbSBqdXN0CiAgICAg
ICAgIC8vIHBhc3QgdGhlIHBhc3NlZC1pbiBzZWxlY3Rpb24sIHNvIHdlIG5lZWQgdG8gcGFzcyBh
IHNlbGVjdGlvbiB0aGF0J3MgbW9kaWZpZWQgYXBwcm9wcmlhdGVseS4gCkBAIC0xMjE4LDggKzEy
MDksNyBAQCAtIChQREZTZWxlY3Rpb24gKilfbmV4dE1hdGNoRm9yOihOU1N0cmluZyAqKXN0cmlu
ZyBkaXJlY3Rpb246KEJPT0wpZm9yd2FyZCBjYXNlUwogICAgICAgICAgICAgW3NlbGVjdGlvbkZv
ckluaXRpYWxTZWFyY2ggZXh0ZW5kU2VsZWN0aW9uQXRTdGFydDotaW5pdGlhbFNlbGVjdGlvbkxl
bmd0aF07CiAgICAgICAgIH0KICAgICB9Ci0gICAgUERGU2VsZWN0aW9uICpmb3VuZFNlbGVjdGlv
biA9IFtkb2N1bWVudCBmaW5kU3RyaW5nOnN0cmluZyBmcm9tU2VsZWN0aW9uOnNlbGVjdGlvbkZv
ckluaXRpYWxTZWFyY2ggd2l0aE9wdGlvbnM6b3B0aW9uc107Ci0gICAgW3NlbGVjdGlvbkZvcklu
aXRpYWxTZWFyY2ggcmVsZWFzZV07CisgICAgUERGU2VsZWN0aW9uICpmb3VuZFNlbGVjdGlvbiA9
IFtkb2N1bWVudCBmaW5kU3RyaW5nOnN0cmluZyBmcm9tU2VsZWN0aW9uOnNlbGVjdGlvbkZvcklu
aXRpYWxTZWFyY2guZ2V0KCkgd2l0aE9wdGlvbnM6b3B0aW9uc107CiAKICAgICAvLyBJZiB3ZSBm
aXJzdCBzZWFyY2hlZCBpbiB0aGUgc2VsZWN0aW9uLCBhbmQgd2UgZm91bmQgdGhlIHNlbGVjdGlv
biwgc2VhcmNoIGFnYWluIGZyb20ganVzdCBwYXN0IHRoZSBzZWxlY3Rpb24KICAgICBpZiAoc3Rh
cnRJblNlbGVjdGlvbiAmJiBfUERGU2VsZWN0aW9uc0FyZUVxdWFsKGZvdW5kU2VsZWN0aW9uLCBp
bml0aWFsU2VsZWN0aW9uKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUG9saWN5RGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlBvbGljeURlbGVnYXRlLm1tCmluZGV4IGZlNzdkYzk1ODE4YTdlZTA5YmYzMTdhZWFh
NGJmNDI2NDBmNGVlYTcuLmUyOGFiOGY0YThkMjBlMmJkMDU1ZTE5ZDdkZDM5NTI1ZjViMTBmZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUG9saWN5RGVs
ZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQb2xpY3lE
ZWxlZ2F0ZS5tbQpAQCAtNDMsNyArNDMsNyBAQCBOU1N0cmluZyAqV2ViQWN0aW9uT3JpZ2luYWxV
UkxLZXkgPSBAIldlYkFjdGlvbk9yaWdpbmFsVVJMS2V5IjsKIEBpbnRlcmZhY2UgV2ViUG9saWN5
RGVjaXNpb25MaXN0ZW5lclByaXZhdGUgOiBOU09iamVjdAogewogQHB1YmxpYwotICAgIGlkIHRh
cmdldDsKKyAgICBSZXRhaW5QdHI8aWQ+IHRhcmdldDsKICAgICBTRUwgYWN0aW9uOwogfQogCkBA
IC01OCwxNCArNTgsMTMgQEAgLSAoaWQpaW5pdFdpdGhUYXJnZXQ6KGlkKXQgYWN0aW9uOihTRUwp
YQogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIHRhcmdldCA9IFt0IHJldGFpbl07CisgICAgdGFyZ2V0ID0gdDsKICAgICBh
Y3Rpb24gPSBhOwogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAg
ICBbdGFyZ2V0IHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtOTEsMTQg
KzkwLDEyIEBAIC0odm9pZClkZWFsbG9jCiAtICh2b2lkKV91c2VQb2xpY3k6KFBvbGljeUFjdGlv
bilwb2xpY3kKIHsKICAgICBpZiAoX3ByaXZhdGUtPnRhcmdldCkKLSAgICAgICAgd3RmT2JqQ01z
Z1NlbmQ8dm9pZD4oX3ByaXZhdGUtPnRhcmdldCwgX3ByaXZhdGUtPmFjdGlvbiwgcG9saWN5KTsK
KyAgICAgICAgd3RmT2JqQ01zZ1NlbmQ8dm9pZD4oX3ByaXZhdGUtPnRhcmdldC5nZXQoKSwgX3By
aXZhdGUtPmFjdGlvbiwgcG9saWN5KTsKIH0KIAogLSAodm9pZClfaW52YWxpZGF0ZQogewotICAg
IGlkIHRhcmdldCA9IF9wcml2YXRlLT50YXJnZXQ7CiAgICAgX3ByaXZhdGUtPnRhcmdldCA9IG5p
bDsKLSAgICBbdGFyZ2V0IHJlbGVhc2VdOwogfQogCiAvLyBXZWJQb2xpY3lEZWNpc2lvbkxpc3Rl
bmVyIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCBiM2M4ZmNhZjNlODc2NWUyMGFlMzAzNGU3NjQ2Yzg2
NDI4NDUyMTMwLi4zMzNhMzI0NzkzZGRiYzhmYTBhMGVkZjYxZDg2OGI0MzFhMGI1YTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0K
QEAgLTE2NTEsOSArMTY1MSw4IEBAIHN0YXRpYyBOU1N0cmluZyAqY2xhc3NJQkNyZWF0b3JJRCA9
IG5pbDsKIAogKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaW5nCiB7Ci0g
ICAgTlNTdHJpbmcgKm9sZCA9IGNsYXNzSUJDcmVhdG9ySUQ7CisgICAgYXV0byBvbGQgPSBhZG9w
dE5TKGNsYXNzSUJDcmVhdG9ySUQpOwogICAgIGNsYXNzSUJDcmVhdG9ySUQgPSBbc3RyaW5nIGNv
cHldOwotICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKIC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVn
Z2VyLm1tCmluZGV4IGI4NGM3MzcwMTllY2UzNGUxOTBjMmNlNzczYmY3YTFkOWQ1ODZkZmUuLmIy
ZjQyMjc4MjFmZTE3YTQ1MTcyNjRjOWYyZTgxMzJmNDI0YzRjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtOTcs
MTQgKzk3LDExIEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKCiAgICAgICAgIH0KICAgICB9IGVs
c2UgewogICAgICAgICBOU1N0cmluZyogbnNFcnJvck1lc3NhZ2UgPSBuc1N0cmluZ05pbElmRW1w
dHkoZXJyb3JNc2cpOwotICAgICAgICBOU0RpY3Rpb25hcnkgKmluZm8gPSBbW05TRGljdGlvbmFy
eSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpuc0Vycm9yTWVzc2FnZSwgV2ViU2NyaXB0
RXJyb3JEZXNjcmlwdGlvbktleSwgQChlcnJvckxpbmUpLCBXZWJTY3JpcHRFcnJvckxpbmVOdW1i
ZXJLZXksIG5pbF07Ci0gICAgICAgIE5TRXJyb3IgKmVycm9yID0gW1tOU0Vycm9yIGFsbG9jXSBp
bml0V2l0aERvbWFpbjpXZWJTY3JpcHRFcnJvckRvbWFpbiBjb2RlOldlYlNjcmlwdEdlbmVyYWxF
cnJvckNvZGUgdXNlckluZm86aW5mb107CisgICAgICAgIGF1dG8gaW5mbyA9IGFkb3B0TlMoW1tO
U0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6bnNFcnJvck1lc3NhZ2Us
IFdlYlNjcmlwdEVycm9yRGVzY3JpcHRpb25LZXksIEAoZXJyb3JMaW5lKSwgV2ViU2NyaXB0RXJy
b3JMaW5lTnVtYmVyS2V5LCBuaWxdKTsKKyAgICAgICAgYXV0byBlcnJvciA9IGFkb3B0TlMoW1tO
U0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpXZWJTY3JpcHRFcnJvckRvbWFpbiBjb2RlOldl
YlNjcmlwdEdlbmVyYWxFcnJvckNvZGUgdXNlckluZm86aW5mby5nZXQoKV0pOwogCiAgICAgICAg
IGlmIChpbXBsZW1lbnRhdGlvbnMtPmZhaWxlZFRvUGFyc2VTb3VyY2VGdW5jKQotICAgICAgICAg
ICAgQ2FsbFNjcmlwdERlYnVnRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5mYWlsZWRUb1BhcnNl
U291cmNlRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZmFpbGVkVG9QYXJzZVNvdXJj
ZTpiYXNlTGluZU51bWJlcjpmcm9tVVJMOndpdGhFcnJvcjpmb3JXZWJGcmFtZTopLCBuc1NvdXJj
ZSwgZmlyc3RMaW5lLCBuc1VSTCwgZXJyb3IsIHdlYkZyYW1lKTsKLQotICAgICAgICBbZXJyb3Ig
cmVsZWFzZV07Ci0gICAgICAgIFtpbmZvIHJlbGVhc2VdOworICAgICAgICAgICAgQ2FsbFNjcmlw
dERlYnVnRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5mYWlsZWRUb1BhcnNlU291cmNlRnVuYywg
d2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZmFpbGVkVG9QYXJzZVNvdXJjZTpiYXNlTGluZU51
bWJlcjpmcm9tVVJMOndpdGhFcnJvcjpmb3JXZWJGcmFtZTopLCBuc1NvdXJjZSwgZmlyc3RMaW5l
LCBuc1VSTCwgZXJyb3IuZ2V0KCksIHdlYkZyYW1lKTsKICAgICB9CiAKICAgICBtX2NhbGxpbmdE
ZWxlZ2F0ZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQppbmRleCA4MDFiZWZl
Yzc2ZDA5NmY5M2YwZjQ4ZDYzY2Y4N2RmOTVkNTUxYmEwLi5mNzhlNTQ0NTFmNWY3M2QyMzZiOWMz
ZjAzYzk0NGM3N2FhY2Q5ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQpAQCAtODgs
MTQgKzg4LDEzIEBAIC0gKHZvaWQpX2J1aWxkVUkKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogICAgIHRhYmxlRnJhbWUuc2l6ZSA9IFtOU1Njcm9sbFZpZXcgY29udGVu
dFNpemVGb3JGcmFtZVNpemU6c2Nyb2xsRnJhbWUuc2l6ZSBoYXNIb3Jpem9udGFsU2Nyb2xsZXI6
Tk8gaGFzVmVydGljYWxTY3JvbGxlcjpZRVMgYm9yZGVyVHlwZTpOU05vQm9yZGVyXTsKICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICBOU1RhYmxlQ29sdW1uICpjb2x1
bW4gPSBbW05TVGFibGVDb2x1bW4gYWxsb2NdIGluaXRdOworICAgIGF1dG8gY29sdW1uID0gYWRv
cHROUyhbW05TVGFibGVDb2x1bW4gYWxsb2NdIGluaXRdKTsKICAgICBbY29sdW1uIHNldFdpZHRo
OnRhYmxlRnJhbWUuc2l6ZS53aWR0aF07CiAgICAgW2NvbHVtbiBzZXRFZGl0YWJsZTpOT107CiAg
ICAgCiAgICAgX3RhYmxlVmlldyA9IFtbTlNUYWJsZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
dGFibGVGcmFtZV07CiAgICAgW190YWJsZVZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazpOU1ZpZXdX
aWR0aFNpemFibGVdOwotICAgIFtfdGFibGVWaWV3IGFkZFRhYmxlQ29sdW1uOmNvbHVtbl07Ci0g
ICAgW2NvbHVtbiByZWxlYXNlXTsKKyAgICBbX3RhYmxlVmlldyBhZGRUYWJsZUNvbHVtbjpjb2x1
bW4uZ2V0KCldOwogICAgIFtfdGFibGVWaWV3IHNldEdyaWRTdHlsZU1hc2s6TlNUYWJsZVZpZXdH
cmlkTm9uZV07CiAgICAgW190YWJsZVZpZXcgc2V0Q29ybmVyVmlldzpuaWxdOwogICAgIFtfdGFi
bGVWaWV3IHNldEhlYWRlclZpZXc6bmlsXTsKQEAgLTEwNSw3ICsxMDQsNyBAQCAtICh2b2lkKV9i
dWlsZFVJCiAgICAgW190YWJsZVZpZXcgc2V0VGFyZ2V0OnNlbGZdOwogICAgIFtfdGFibGVWaWV3
IHNldERvdWJsZUFjdGlvbjpAc2VsZWN0b3IodGFibGVBY3Rpb246KV07CiAgICAgCi0gICAgTlNT
Y3JvbGxWaWV3ICpzY3JvbGxWaWV3ID0gW1tOU1Njcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6c2Nyb2xsRnJhbWVdOworICAgIGF1dG8gc2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tOU1Njcm9s
bFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6c2Nyb2xsRnJhbWVdKTsKICAgICBbc2Nyb2xsVmll
dyBzZXRCb3JkZXJUeXBlOk5TTm9Cb3JkZXJdOwogICAgIFtzY3JvbGxWaWV3IHNldEhhc1ZlcnRp
Y2FsU2Nyb2xsZXI6WUVTXTsKICAgICBbc2Nyb2xsVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5T
Vmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVdOwpAQCAtMTE0LDggKzExMyw3
IEBAIC0gKHZvaWQpX2J1aWxkVUkKICAgICAKICAgICBfcG9wdXBXaW5kb3cgPSBbW05TV2luZG93
IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OnNjcm9sbEZyYW1lIHN0eWxlTWFzazpOU1dpbmRv
d1N0eWxlTWFza0JvcmRlcmxlc3MgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVy
Ok5PXTsKICAgICBbX3BvcHVwV2luZG93IHNldEFscGhhVmFsdWU6MC44OGZdOwotICAgIFtfcG9w
dXBXaW5kb3cgc2V0Q29udGVudFZpZXc6c2Nyb2xsVmlld107Ci0gICAgW3Njcm9sbFZpZXcgcmVs
ZWFzZV07CisgICAgW19wb3B1cFdpbmRvdyBzZXRDb250ZW50VmlldzpzY3JvbGxWaWV3LmdldCgp
XTsKICAgICBbX3BvcHVwV2luZG93IHNldEhhc1NoYWRvdzpZRVNdOwogICAgIFtfcG9wdXBXaW5k
b3cgX3NldEZvcmNlQWN0aXZlQ29udHJvbHM6WUVTXTsKICAgICBbX3BvcHVwV2luZG93IHNldFJl
bGVhc2VkV2hlbkNsb3NlZDpOT107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KaW5kZXgg
MDY1MGRiZjE1M2FjZDkyNzI5ZmViMDZlZjQ0MGU4NzJjNWMyNzBhNi4uYTBkYzJiOGRhOWVmYmI2
OGEyOGZmZjM1YTMxZDk1MjVhMjcyYjQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5t
bQpAQCAtMTQxLDExICsxNDEsMTAgQEAgQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIKIC0gKGlkKWluaXQKIHsKICAgICAvLyBEbyBub3QgZGVmZXIgd2luZG93IGNy
ZWF0aW9uLCB0byBtYWtlIHN1cmUgLXdpbmRvd051bWJlciBpcyBjcmVhdGVkIChuZWVkZWQgYnkg
V2ViV2luZG93U2NhbGVBbmltYXRpb24pLgotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW1dlYkNv
cmVGdWxsU2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TWmVyb1JlY3Qg
c3R5bGVNYXNrOihOU1dpbmRvd1N0eWxlTWFza0Z1bGxTaXplQ29udGVudFZpZXcgfCBOU1dpbmRv
d1N0eWxlTWFza1Jlc2l6YWJsZSkgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVy
Ok5PXTsKKyAgICBhdXRvIHdpbmRvdyA9IGFkb3B0TlMoW1tXZWJDb3JlRnVsbFNjcmVlbldpbmRv
dyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU1plcm9SZWN0IHN0eWxlTWFzazooTlNXaW5k
b3dTdHlsZU1hc2tGdWxsU2l6ZUNvbnRlbnRWaWV3IHwgTlNXaW5kb3dTdHlsZU1hc2tSZXNpemFi
bGUpIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwogICAgIFt3aW5k
b3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOihbd2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl0gfCBO
U1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvckZ1bGxTY3JlZW5QcmltYXJ5KV07Ci0gICAgd2luZG93
LmRlbGVnYXRlID0gc2VsZjsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoV2luZG93OndpbmRv
d107Ci0gICAgW3dpbmRvdyByZWxlYXNlXTsKKyAgICBbd2luZG93IHNldERlbGVnYXRlOiBzZWxm
XTsKKyAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoV2luZG93OndpbmRvdy5nZXQoKV07CiAgICAg
aWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIF9wbGF5YmFja01vZGVsID0gV2Vi
Q29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGY0NzhjYWE3ODI2ZTZi
MTgwYTJkMzliNzhlOGNiNmU4Y2FjMTRjMzUuLjdkZDI2NTBmZTczZDJhYWM1YmY1Njk5ZmM3ZjNk
Y2ExZmM0ZTRmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTEzMzIsMTEgKzEzMzIsMTAgQEAgLSAodm9pZClfcmVnaXN0ZXJEcmFnZ2VkVHlwZXMK
IHsKICAgICBOU0FycmF5ICplZGl0YWJsZVR5cGVzID0gW1dlYkhUTUxWaWV3IF9pbnNlcnRhYmxl
UGFzdGVib2FyZFR5cGVzXTsKICAgICBOU0FycmF5ICpVUkxUeXBlcyA9IFtOU1Bhc3RlYm9hcmQg
X3dlYl9kcmFnVHlwZXNGb3JVUkxdOwotICAgIE5TTXV0YWJsZVNldCAqdHlwZXMgPSBbW05TTXV0
YWJsZVNldCBhbGxvY10gaW5pdFdpdGhBcnJheTplZGl0YWJsZVR5cGVzXTsKKyAgICBhdXRvIHR5
cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdFdpdGhBcnJheTplZGl0YWJs
ZVR5cGVzXSk7CiAgICAgW3R5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6VVJMVHlwZXNdOwogICAg
IFt0eXBlcyBhZGRPYmplY3Q6W1dlYkhUTUxWaWV3IF9kdW1teVBhc3RlYm9hcmRUeXBlXV07CiAg
ICAgW3NlbGYgcmVnaXN0ZXJGb3JEcmFnZ2VkVHlwZXM6W3R5cGVzIGFsbE9iamVjdHNdXTsKLSAg
ICBbdHlwZXMgcmVsZWFzZV07CiB9CiAKIHN0YXRpYyBib29sIG5lZWRzT3V0bG9va1F1aXJrc1Nj
cmlwdCgpCkBAIC0xNDQ5LDEwICsxNDQ4LDkgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRp
b25XaXRoRnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICNl
bmRpZgogCiAgICAgTlNSZWN0IGYgPSBbc2VsZiBmcmFtZV07Ci0gICAgV2ViRnJhbWVWaWV3ICpm
cmFtZVZpZXcgPSBbW1dlYkZyYW1lVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTogTlNNYWtlUmVj
dCgwLDAsZi5zaXplLndpZHRoLGYuc2l6ZS5oZWlnaHQpXTsKKyAgICBhdXRvIGZyYW1lVmlldyA9
IGFkb3B0TlMoW1tXZWJGcmFtZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6IE5TTWFrZVJlY3Qo
MCwwLGYuc2l6ZS53aWR0aCxmLnNpemUuaGVpZ2h0KV0pOwogICAgIFtmcmFtZVZpZXcgc2V0QXV0
b3Jlc2l6aW5nTWFzazpOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlXTsK
LSAgICBbc2VsZiBhZGRTdWJ2aWV3OmZyYW1lVmlld107Ci0gICAgW2ZyYW1lVmlldyByZWxlYXNl
XTsKKyAgICBbc2VsZiBhZGRTdWJ2aWV3OmZyYW1lVmlldy5nZXQoKV07CiAKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgaWYgKENsYXNzIGdlc3R1cmVDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAi
TlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplciIpKSB7CkBAIC0xNjA5LDcgKzE2MDcs
NyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5n
ICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAogICAgIGlmIChbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViU21hcnRJbnNlcnREZWxldGVFbmFi
bGVkXSkKICAgICAgICAgW3NlbGYgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOltbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6V2ViU21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkXV07CiAKLSAgICBbV2ViRnJhbWUgX2NyZWF0ZU1haW5GcmFtZVdpdGhQYWdl
Ol9wcml2YXRlLT5wYWdlIGZyYW1lTmFtZTpmcmFtZU5hbWUgZnJhbWVWaWV3OmZyYW1lVmlld107
CisgICAgW1dlYkZyYW1lIF9jcmVhdGVNYWluRnJhbWVXaXRoUGFnZTpfcHJpdmF0ZS0+cGFnZSBm
cmFtZU5hbWU6ZnJhbWVOYW1lIGZyYW1lVmlldzpmcmFtZVZpZXcuZ2V0KCldOwogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBXZWJUaHJlYWROU1J1
bkxvb3AoKTsKQEAgLTE2MzEsNyArMTYyOSw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0
aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAg
ICAgTlNWaWV3ICpuZXh0S2V5VmlldyA9IFtzZWxmIG5leHRLZXlWaWV3XTsKICAgICBpZiAobmV4
dEtleVZpZXcgJiYgbmV4dEtleVZpZXcgIT0gZnJhbWVWaWV3KQogICAgICAgICBbZnJhbWVWaWV3
IHNldE5leHRLZXlWaWV3Om5leHRLZXlWaWV3XTsKLSAgICBbc3VwZXIgc2V0TmV4dEtleVZpZXc6
ZnJhbWVWaWV3XTsKKyAgICBbc3VwZXIgc2V0TmV4dEtleVZpZXc6ZnJhbWVWaWV3LmdldCgpXTsK
IAogICAgIGlmIChbW3NlbGYgY2xhc3NdIHNob3VsZEluY2x1ZGVJbldlYktpdFN0YXRpc3RpY3Nd
KQogICAgICAgICArK1dlYlZpZXdDb3VudDsKQEAgLTE3MjgsNyArMTcyNiw3IEBAICsgKE5TQXJy
YXkgKilfc3VwcG9ydGVkTUlNRVR5cGVzCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiArIChO
U0FycmF5ICopX3N1cHBvcnRlZEZpbGVFeHRlbnNpb25zCiB7Ci0gICAgTlNNdXRhYmxlU2V0ICpl
eHRlbnNpb25zID0gW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdOworICAgIGF1dG8gZXh0ZW5z
aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdKTsKICAgICBOU0FycmF5
ICpNSU1FVHlwZXMgPSBbc2VsZiBfc3VwcG9ydGVkTUlNRVR5cGVzXTsKICAgICBOU0VudW1lcmF0
b3IgKmVudW1lcmF0b3IgPSBbTUlNRVR5cGVzIG9iamVjdEVudW1lcmF0b3JdOwogICAgIE5TU3Ry
aW5nICpNSU1FVHlwZTsKQEAgLTE3MzgsOSArMTczNiw3IEBAICsgKE5TQXJyYXkgKilfc3VwcG9y
dGVkRmlsZUV4dGVuc2lvbnMKICAgICAgICAgICAgIFtleHRlbnNpb25zIGFkZE9iamVjdHNGcm9t
QXJyYXk6ZXh0ZW5zaW9uc0ZvclR5cGVdOwogICAgICAgICB9CiAgICAgfQotICAgIE5TQXJyYXkg
KnVuaXF1ZUV4dGVuc2lvbnMgPSBbZXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKLSAgICBbZXh0ZW5z
aW9ucyByZWxlYXNlXTsKLSAgICByZXR1cm4gdW5pcXVlRXh0ZW5zaW9uczsKKyAgICByZXR1cm4g
W2V4dGVuc2lvbnMgYWxsT2JqZWN0c107CiB9CiAjZW5kaWYKIApAQCAtMTc4NSwxMSArMTc4MSw5
IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICopc3R5
bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3ByaXZhdGUtPmRyYXdzQmFja2dyb3Vu
ZCA9IFlFUzsKICAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gQ0dDb2xvclJldGFpbihX
ZWJDb3JlOjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSkpOwogCi0gICAgV2Vi
RnJhbWVWaWV3ICpmcmFtZVZpZXcgPSBuaWw7Ci0gICAgZnJhbWVWaWV3ID0gW1tXZWJGcmFtZVZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6IENHUmVjdE1ha2UoMCwwLGZyYW1lLnNpemUud2lkdGgs
ZnJhbWUuc2l6ZS5oZWlnaHQpXTsKKyAgICBhdXRvIGZyYW1lVmlldyA9IGFkb3B0TlMoW1tXZWJG
cmFtZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6IENHUmVjdE1ha2UoMCwwLGZyYW1lLnNpemUu
d2lkdGgsZnJhbWUuc2l6ZS5oZWlnaHQpXSk7CiAgICAgW2ZyYW1lVmlldyBzZXRBdXRvcmVzaXpp
bmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVdOwotICAgIFtz
ZWxmIGFkZFN1YnZpZXc6ZnJhbWVWaWV3XTsKLSAgICBbZnJhbWVWaWV3IHJlbGVhc2VdOworICAg
IFtzZWxmIGFkZFN1YnZpZXc6ZnJhbWVWaWV3LmdldCgpXTsKIAogICAgIF9wcml2YXRlLT5ncm91
cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0ZS0+cHJlZmVy
ZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgX3ByaXZhdGUtPmdyb3VwLT5h
ZGRXZWJWaWV3KHNlbGYpOwpAQCAtMjU3NiwyMiArMjU3MCwxOCBAQCAtIChXZWJEb3dubG9hZCAq
KV9kb3dubG9hZFVSTDooTlNVUkwgKilVUkwKIHsKICAgICBBU1NFUlQoVVJMKTsKIAotICAgIE5T
VVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpV
UkxdOworICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGlu
aXRXaXRoVVJMOlVSTF0pOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAg
ICBXZWJEb3dubG9hZCAqZG93bmxvYWQgPSBbV2ViRG93bmxvYWQgX2Rvd25sb2FkV2l0aFJlcXVl
c3Q6cmVxdWVzdCBkZWxlZ2F0ZTpfcHJpdmF0ZS0+ZG93bmxvYWREZWxlZ2F0ZSBkaXJlY3Rvcnk6
bmlsXTsKKyAgICByZXR1cm4gW1dlYkRvd25sb2FkIF9kb3dubG9hZFdpdGhSZXF1ZXN0OnJlcXVl
c3QuZ2V0KCkgZGVsZWdhdGU6X3ByaXZhdGUtPmRvd25sb2FkRGVsZWdhdGUgZGlyZWN0b3J5Om5p
bF07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICBbcmVxdWVzdCByZWxl
YXNlXTsKLQotICAgIHJldHVybiBkb3dubG9hZDsKIH0KIAogLSAoV2ViVmlldyAqKV9vcGVuTmV3
V2luZG93V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICBOU0RpY3Rp
b25hcnkgKmZlYXR1cmVzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgIGF1dG8g
ZmVhdHVyZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgV2Vi
VmlldyAqbmV3V2luZG93V2ViVmlldyA9IFtbc2VsZiBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2Vi
VmlldzpzZWxmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0ZlYXR1cmVzOmZlYXR1cmVzXTsKLSAgICBb
ZmVhdHVyZXMgcmVsZWFzZV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aW5kb3dGZWF0dXJlczpmZWF0dXJlcy5nZXQoKV07CiAgICAgaWYg
KCFuZXdXaW5kb3dXZWJWaWV3KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0zMzY2LDkgKzMz
NTYsOCBAQCAtICh2b2lkKV9kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOihXZWJGcmFt
ZSAqKWZyYW1lCiAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5m
dWxsc2NyZWVuTWFuYWdlcigpLmN1cnJlbnRGdWxsc2NyZWVuRWxlbWVudCgpIDogMCkgewogICAg
ICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpjbG9zZUZ1bGxTY3JlZW5XaXRo
TGlzdGVuZXI6KTsKICAgICAgICAgaWYgKFtfcHJpdmF0ZS0+VUlEZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6c2VsZWN0b3JdKSB7Ci0gICAgICAgICAgICBXZWJLaXRGdWxsU2NyZWVuTGlzdGVu
ZXIgKmxpc3RlbmVyID0gW1tXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRo
RWxlbWVudDplbGVtZW50XTsKLSAgICAgICAgICAgIENhbGxVSURlbGVnYXRlKHNlbGYsIHNlbGVj
dG9yLCBsaXN0ZW5lcik7Ci0gICAgICAgICAgICBbbGlzdGVuZXIgcmVsZWFzZV07CisgICAgICAg
ICAgICBhdXRvIGxpc3RlbmVyID0gYWRvcHROUyhbW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciBh
bGxvY10gaW5pdFdpdGhFbGVtZW50OmVsZW1lbnRdKTsKKyAgICAgICAgICAgIENhbGxVSURlbGVn
YXRlKHNlbGYsIHNlbGVjdG9yLCBsaXN0ZW5lci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
X3ByaXZhdGUtPm5ld0Z1bGxzY3JlZW5Db250cm9sbGVyICYmIFtfcHJpdmF0ZS0+bmV3RnVsbHNj
cmVlbkNvbnRyb2xsZXIgaXNGdWxsU2NyZWVuXSkgewogICAgICAgICAgICAgW19wcml2YXRlLT5u
ZXdGdWxsc2NyZWVuQ29udHJvbGxlciBjbG9zZV07CiAgICAgICAgIH0KQEAgLTM2MTMsMTEgKzM2
MDIsMTAgQEAgLSAodm9pZClyZW1vdmVBbGxDYXJldENoYW5nZUxpc3RlbmVycwogLSAodm9pZClj
YXJldENoYW5nZWQKIHsKICAgICBbX3ByaXZhdGUtPl9jYXJldENoYW5nZUxpc3RlbmVyIGNhcmV0
Q2hhbmdlZF07Ci0gICAgTlNTZXQgKmNvcHkgPSBbX3ByaXZhdGUtPl9jYXJldENoYW5nZUxpc3Rl
bmVycyBjb3B5XTsKLSAgICBmb3IgKGlkIDxXZWJDYXJldENoYW5nZUxpc3RlbmVyPiBsaXN0ZW5l
ciBpbiBjb3B5KSB7CisgICAgYXV0byBjb3B5ID0gYWRvcHROUyhbX3ByaXZhdGUtPl9jYXJldENo
YW5nZUxpc3RlbmVycyBjb3B5XSk7CisgICAgZm9yIChpZCA8V2ViQ2FyZXRDaGFuZ2VMaXN0ZW5l
cj4gbGlzdGVuZXIgaW4gY29weS5nZXQoKSkgewogICAgICAgICBbbGlzdGVuZXIgY2FyZXRDaGFu
Z2VkXTsKICAgICB9Ci0gICAgW2NvcHkgcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpX2NsZWFyRGVs
ZWdhdGVzCkBAIC0zODYxLDkgKzM4NDksOCBAQCAtICh2b2lkKXNldEJhY2tncm91bmRDb2xvcjoo
TlNDb2xvciAqKWJhY2tncm91bmRDb2xvcgogICAgIGlmIChbX3ByaXZhdGUtPmJhY2tncm91bmRD
b2xvciBpc0VxdWFsOmJhY2tncm91bmRDb2xvcl0pCiAgICAgICAgIHJldHVybjsKIAotICAgIGlk
IG9sZCA9IF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3I7CisgICAgYXV0byBvbGQgPSBhZG9wdE5T
KF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IpOwogICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29s
b3IgPSBbYmFja2dyb3VuZENvbG9yIHJldGFpbl07Ci0gICAgW29sZCByZWxlYXNlXTsKIAogICAg
IFtbc2VsZiBtYWluRnJhbWVdIF91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1doaWxlT2Zmc2Ny
ZWVuXTsKIH0KQEAgLTUzMDAsNyArNTI4Nyw3IEBAICsgKE5TQXJyYXkgKilNSU1FVHlwZXNTaG93
bkFzSFRNTAogCiArICh2b2lkKXNldE1JTUVUeXBlc1Nob3duQXNIVE1MOihOU0FycmF5ICopTUlN
RVR5cGVzCiB7Ci0gICAgTlNEaWN0aW9uYXJ5ICp2aWV3VHlwZXMgPSBbW1dlYkZyYW1lVmlldyBf
dmlld1R5cGVzQWxsb3dJbWFnZVR5cGVPbWlzc2lvbjpZRVNdIGNvcHldOworICAgIGF1dG8gdmll
d1R5cGVzID0gYWRvcHROUyhbW1dlYkZyYW1lVmlldyBfdmlld1R5cGVzQWxsb3dJbWFnZVR5cGVP
bWlzc2lvbjpZRVNdIGNvcHldKTsKICAgICBOU0VudW1lcmF0b3IgKmVudW1lcmF0b3IgPSBbdmll
d1R5cGVzIGtleUVudW1lcmF0b3JdOwogICAgIGlkIGtleTsKICAgICB3aGlsZSAoKGtleSA9IFtl
bnVtZXJhdG9yIG5leHRPYmplY3RdKSkgewpAQCAtNTMxNCw3ICs1MzAxLDYgQEAgKyAodm9pZClz
ZXRNSU1FVHlwZXNTaG93bkFzSFRNTDooTlNBcnJheSAqKU1JTUVUeXBlcwogICAgICAgICAgICAg
ICAgIHJlcHJlc2VudGF0aW9uQ2xhc3M6W1dlYkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc10KICAg
ICAgICAgICAgICAgICBmb3JNSU1FVHlwZTpbTUlNRVR5cGVzIG9iamVjdEF0SW5kZXg6aV1dOwog
ICAgIH0KLSAgICBbdmlld1R5cGVzIHJlbGVhc2VdOwogfQogCiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCkBAIC01ODA5LDcgKzU3OTUsNyBAQCAtICh2b2lkKXNldFByZWZlcmVuY2VzOihXZWJQ
cmVmZXJlbmNlcyAqKXByZWZzCiAKICAgICBbcHJlZnMgd2lsbEFkZFRvV2ViVmlld107CiAKLSAg
ICBXZWJQcmVmZXJlbmNlcyAqb2xkUHJlZnMgPSBfcHJpdmF0ZS0+cHJlZmVyZW5jZXM7CisgICAg
YXV0byBvbGRQcmVmcyA9IGFkb3B0TlMoX3ByaXZhdGUtPnByZWZlcmVuY2VzKTsKIAogICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBu
YW1lOldlYlByZWZlcmVuY2VzQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9uIG9iamVjdDpbc2Vs
ZiBwcmVmZXJlbmNlc11dOwogICAgIFtXZWJQcmVmZXJlbmNlcyBfcmVtb3ZlUmVmZXJlbmNlRm9y
SWRlbnRpZmllcjpbb2xkUHJlZnMgaWRlbnRpZmllcl1dOwpAQCAtNTgyMyw3ICs1ODA5LDYgQEAg
LSAodm9pZClzZXRQcmVmZXJlbmNlczooV2ViUHJlZmVyZW5jZXMgKilwcmVmcwogICAgIFtbc2Vs
ZiBwcmVmZXJlbmNlc10gX3Bvc3RQcmVmZXJlbmNlc0NoYW5nZWRBUElOb3RpZmljYXRpb25dOwog
CiAgICAgW29sZFByZWZzIGRpZFJlbW92ZUZyb21XZWJWaWV3XTsKLSAgICBbb2xkUHJlZnMgcmVs
ZWFzZV07CiB9CiAKIC0gKFdlYlByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMKQEAgLTU4MzQsOSAr
NTgxOSw4IEBAIC0gKFdlYlByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMKIC0gKHZvaWQpc2V0UHJl
ZmVyZW5jZXNJZGVudGlmaWVyOihOU1N0cmluZyAqKWFuSWRlbnRpZmllcgogewogICAgIGlmICgh
X3ByaXZhdGUtPmNsb3NlZCAmJiAhW2FuSWRlbnRpZmllciBpc0VxdWFsOltbc2VsZiBwcmVmZXJl
bmNlc10gaWRlbnRpZmllcl1dKSB7Ci0gICAgICAgIFdlYlByZWZlcmVuY2VzICpwcmVmcyA9IFtb
V2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjphbklkZW50aWZpZXJdOwot
ICAgICAgICBbc2VsZiBzZXRQcmVmZXJlbmNlczpwcmVmc107Ci0gICAgICAgIFtwcmVmcyByZWxl
YXNlXTsKKyAgICAgICAgYXV0byBwcmVmcyA9IGFkb3B0TlMoW1tXZWJQcmVmZXJlbmNlcyBhbGxv
Y10gaW5pdFdpdGhJZGVudGlmaWVyOmFuSWRlbnRpZmllcl0pOworICAgICAgICBbc2VsZiBzZXRQ
cmVmZXJlbmNlczpwcmVmcy5nZXQoKV07CiAgICAgfQogfQogCkBAIC02ODA3LDkgKzY3OTEsOCBA
QCAtIChCT09MKXNob3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuCiAKIC0gKHZvaWQpc2V0Q3VycmVu
dE5vZGVIaWdobGlnaHQ6KFdlYk5vZGVIaWdobGlnaHQgKilub2RlSGlnaGxpZ2h0CiB7Ci0gICAg
aWQgb2xkID0gX3ByaXZhdGUtPmN1cnJlbnROb2RlSGlnaGxpZ2h0OworICAgIGF1dG8gb2xkID0g
YWRvcHROUyhfcHJpdmF0ZS0+Y3VycmVudE5vZGVIaWdobGlnaHQpOwogICAgIF9wcml2YXRlLT5j
dXJyZW50Tm9kZUhpZ2hsaWdodCA9IFtub2RlSGlnaGxpZ2h0IHJldGFpbl07Ci0gICAgW29sZCBy
ZWxlYXNlXTsKIH0KIAogLSAoV2ViTm9kZUhpZ2hsaWdodCAqKWN1cnJlbnROb2RlSGlnaGxpZ2h0
CkBAIC03MTUzLDEyICs3MTM2LDExIEBAIC0gKHZvaWQpc3RvcExvYWRpbmdBbmRDbGVhcgogCiAg
ICAgICAgIFdlYkZyYW1lVmlldyAqbWFpbkZyYW1lVmlldyA9IFtmcmFtZSBmcmFtZVZpZXddOwog
ICAgICAgICBmbG9hdCBzY2FsZSA9IFtbbWFpbkZyYW1lVmlldyBkb2N1bWVudFZpZXddIHNjYWxl
XTsKLSAgICAgICAgV2ViUGxhaW5XaGl0ZVZpZXcgKnBsYWluV2hpdGVWaWV3ID0gW1tXZWJQbGFp
bldoaXRlVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XTsKKyAgICAgICAgYXV0
byBwbGFpbldoaXRlVmlldyA9IGFkb3B0TlMoW1tXZWJQbGFpbldoaXRlVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7CiAgICAgICAgIFtwbGFpbldoaXRlVmlldyBzZXRTY2Fs
ZTpzY2FsZV07CiAgICAgICAgIFtwbGFpbldoaXRlVmlldyBzZXRGcmFtZTpbbWFpbkZyYW1lVmll
dyBib3VuZHNdXTsKLSAgICAgICAgW21haW5GcmFtZVZpZXcgX3NldERvY3VtZW50VmlldzpwbGFp
bldoaXRlVmlld107CisgICAgICAgIFttYWluRnJhbWVWaWV3IF9zZXREb2N1bWVudFZpZXc6cGxh
aW5XaGl0ZVZpZXcuZ2V0KCldOwogICAgICAgICBbcGxhaW5XaGl0ZVZpZXcgc2V0TmVlZHNEaXNw
bGF5OllFU107Ci0gICAgICAgIFtwbGFpbldoaXRlVmlldyByZWxlYXNlXTsKICAgICB9KTsKIH0K
ICNlbmRpZgpAQCAtODY3MCwxMSArODY1MiwxMCBAQCAtICh2b2lkKV9vcGVuRnJhbWVJbk5ld1dp
bmRvd0Zyb21NZW51OihOU01lbnVJdGVtICopc2VuZGVyCiAgICAgQVNTRVJUKFtlbGVtZW50IGlz
S2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKTsKIAogICAgIFdlYkRhdGFTb3VyY2Ug
KmRhdGFTb3VyY2UgPSBbKFdlYkZyYW1lICopW2VsZW1lbnQgb2JqZWN0Rm9yS2V5OldlYkVsZW1l
bnRGcmFtZUtleV0gZGF0YVNvdXJjZV07Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW1tk
YXRhU291cmNlIHJlcXVlc3RdIGNvcHldOworICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1tk
YXRhU291cmNlIHJlcXVlc3RdIGNvcHldKTsKICAgICBBU1NFUlQocmVxdWVzdCk7CiAKLSAgICBb
c2VsZiBfb3Blbk5ld1dpbmRvd1dpdGhSZXF1ZXN0OnJlcXVlc3RdOwotICAgIFtyZXF1ZXN0IHJl
bGVhc2VdOworICAgIFtzZWxmIF9vcGVuTmV3V2luZG93V2l0aFJlcXVlc3Q6cmVxdWVzdC5nZXQo
KV07CiB9CiAKIC0gKHZvaWQpX3NlYXJjaFdpdGhHb29nbGVGcm9tTWVudTooaWQpc2VuZGVyCkBA
IC04NjkxLDEyICs4NjcyLDExIEBAIC0gKHZvaWQpX3NlYXJjaFdpdGhHb29nbGVGcm9tTWVudToo
aWQpc2VuZGVyCiAKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJk
IHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07CiAgICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVz
OkBbV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0gb3duZXI6bmlsXTsKLSAg
ICBOU011dGFibGVTdHJpbmcgKnMgPSBbc2VsZWN0ZWRTdHJpbmcgbXV0YWJsZUNvcHldOworICAg
IGF1dG8gcyA9IGFkb3B0TlMoW3NlbGVjdGVkU3RyaW5nIG11dGFibGVDb3B5XSk7CiAgICAgY29u
c3QgdW5pY2hhciBub25CcmVha2luZ1NwYWNlQ2hhcmFjdGVyID0gMHhBMDsKICAgICBOU1N0cmlu
ZyAqbm9uQnJlYWtpbmdTcGFjZVN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czombm9uQnJlYWtpbmdTcGFjZUNoYXJhY3RlciBsZW5ndGg6MV07CiAgICAgW3MgcmVwbGFjZU9j
Y3VycmVuY2VzT2ZTdHJpbmc6bm9uQnJlYWtpbmdTcGFjZVN0cmluZyB3aXRoU3RyaW5nOkAiICIg
b3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzIGxlbmd0aF0pXTsKLSAgICBbcGFzdGVi
b2FyZCBzZXRTdHJpbmc6cyBmb3JUeXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRU
eXBlKCldOwotICAgIFtzIHJlbGVhc2VdOworICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzpzLmdl
dCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAKICAg
ICAvLyBGSVhNRTogc2VlbXMgZnJhZ2lsZSB0byB1c2UgdGhlIHNlcnZpY2UgYnkgbmFtZSwgYnV0
IHRoaXMgaXMgd2hhdCBBcHBLaXQgZG9lcwogICAgIE5TUGVyZm9ybVNlcnZpY2UoQCJTZWFyY2gg
V2l0aCBHb29nbGUiLCBwYXN0ZWJvYXJkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJXaW5kb3dBbmltYXRpb24ubW0KaW5kZXggYWZhN2I1MTQ3Yjk1ZGI3
YWQ0ZDU3N2E2OTA4ZTg4MDQ5MDg5NGFlZC4uZTAwYzk4OGZiNDUxMWVkNmVlN2NjMWNkNDM0NTU0
MzFiNmFhZDhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJXaW5kb3dBbmltYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJXaW5kb3dBbmltYXRpb24ubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgPHBhbC9z
cGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lt
cG9ydCA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogc3Rh
dGljIGNvbnN0IENHRmxvYXQgc2xvd01vdGlvbkZhY3RvciA9IDEwOwogCkBAIC0xNzgsOSArMTc5
LDggQEAgLSAodm9pZClzZXRDdXJyZW50UHJvZ3Jlc3M6KE5TQW5pbWF0aW9uUHJvZ3Jlc3MpcHJv
Z3Jlc3MKIAogLSAodm9pZClzZXRTdWJBbmltYXRpb246KE5TQW5pbWF0aW9uICopYW5pbWF0aW9u
CiB7Ci0gICAgaWQgb2xkQW5pbWF0aW9uID0gX3N1YkFuaW1hdGlvbjsKKyAgICBhdXRvIG9sZEFu
aW1hdGlvbiA9IGFkb3B0TlMoX3N1YkFuaW1hdGlvbik7CiAgICAgX3N1YkFuaW1hdGlvbiA9IFth
bmltYXRpb24gcmV0YWluXTsKLSAgICBbb2xkQW5pbWF0aW9uIHJlbGVhc2VdOwogfQogCiAtIChO
U1RpbWVJbnRlcnZhbClhZGRpdGlvbmFsRHVyYXRpb25OZWVkZWRUb1JlYWNoRmluYWxGcmFtZQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIxMzFi
ZGUyYTQyMDI3ZjYzZWFhZjMwZDBjMGM0NTdjNjc0OTEzOGEuLjIxNjhiM2FiZDZiMjliZjQ3NGI3
OTUwY2EyOTQ4NWY2ZmJlYTRlNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OSBAQAorMjAyMS0wMi0xMSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBb
b2JqQyByZWxlYXNlXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMTc4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBp
biBXZWJLaXQgYnkgdXNpbmcgc21hcnQgcG9pbnRlcnMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVy
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAg
ICAgIChjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KToKKyAgICAgICAgKGRlc3Ryb3lX
ZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KToKKyAgICAgICAgKGR1bXBGcmFtZUFzUERGKToKKyAg
ICAgICAgKGR1bXBCYWNrRm9yd2FyZExpc3RGb3JXZWJWaWV3KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoK1tEdW1w
UmVuZGVyVHJlZVBhc3RlYm9hcmQgX3Bhc3RlYm9hcmRXaXRoTmFtZTpdKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
RXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZURvd246d2l0aE1vZGlmaWVyczpdKToKKyAgICAg
ICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZVVwOndpdGhNb2RpZmllcnM6XSk6Cisg
ICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VNb3ZlVG9YOlk6XSk6CisgICAg
ICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIga2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhM
b2NhdGlvbjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBzZW50VG91Y2hF
dmVudE9mVHlwZTpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciB0b3VjaEVu
ZF0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHRvdWNoQ2FuY2VsXSk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlOndpbGxTZW5kUmVx
dWVzdDpyZWRpcmVjdFJlc3BvbnNlOmZyb21EYXRhU291cmNlOl0pOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YXBw
bGljYXRpb25DYWNoZURpc2tVc2FnZUZvck9yaWdpbik6CisgICAgICAgIChUZXN0UnVubmVyOjpj
bGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6Y2xl
YXJCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6a2VlcFdlYkhpc3Rvcnkp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0RGF0YWJhc2VRdW90YSk6CisgICAgICAgIChUZXN0
UnVubmVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAoLVtBUElUZXN0RGVsZWdhdGVJ
UGhvbmUgaW5pdFdpdGhUZXN0UnVubmVyOnV0ZjhEYXRhOmJhc2VVUkw6XSk6CisgICAgICAgICgt
W0FQSVRlc3REZWxlZ2F0ZUlQaG9uZSBkZWFsbG9jXSk6CisgICAgICAgICgtW0FQSVRlc3REZWxl
Z2F0ZUlQaG9uZSBydW5dKToKKyAgICAgICAgKC1bQVBJVGVzdERlbGVnYXRlSVBob25lIF9jbGVh
blVwXSk6CisgICAgICAgIChUZXN0UnVubmVyOjphcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNl
VVJMKToKKyAgICAgICAgKC1bU3luY2hyb25vdXNMb2FkZXIgZGVhbGxvY10pOgorICAgICAgICAo
LVtTeW5jaHJvbm91c0xvYWRlciBjb25uZWN0aW9uOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTpdKToKKyAgICAgICAgKCtbU3luY2hyb25vdXNMb2FkZXIgbWFrZVJlcXVlc3Q6d2l0
aFVzZXJuYW1lOnBhc3N3b3JkOl0pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5w
dXRGaWVsZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUuaDoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVUlE
ZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21Pcmln
aW46ZnJhbWU6bGlzdGVuZXI6XSk6CisgICAgICAgICgtW1VJRGVsZWdhdGUgdGltZXJGaXJlZF0p
OgorICAgICAgICAoLVtVSURlbGVnYXRlIGRlYWxsb2NdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0
ZW5lcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlm
aWNhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbToKKyAg
ICAgICAgKC1bSElERXZlbnRHZW5lcmF0b3IgaW50ZXJwb2xhdGVkRXZlbnRzOl0pOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbToKKyAgICAgICAg
KFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbToKKyAgICAgICAgKFdUUjo6UGxh
dGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLmg6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbToKKyAgICAg
ICAgKC1bV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mbyBkZWFsbG9jXSk6CisgICAgICAgICgt
W1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8gZHJhZ2dlZEltYWdlXSk6CisgICAgICAgICgt
W1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSk6CisgICAg
ICAgICgtW1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VdKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5t
bToKKyAgICAgICAgKCtbV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQgX3Bhc3RlYm9hcmRXaXRo
TmFtZTpdKToKKyAgICAgICAgKC1bTG9jYWxQYXN0ZWJvYXJkIF9hZGRUeXBlc1dpdGhvdXRVcGRh
dGluZ0NoYW5nZUNvdW50Om93bmVyOl0pOgorCiAyMDIxLTAyLTExICBBYWthc2ggSmFpbiAgPGFh
a2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBidWlsZC53ZWJraXQub3JnIHNob3VsZCBk
aXNwbGF5IGNvbW1pdCBpZGVudGlmaWVyIGluIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQppbmRleCA2NDVmYzg2
M2NlZjEwYTAwZjViYjRiN2QxMzljNmUwZGNlNDA4ZGUxLi40OTg0MDlkYjFiYTBlNjgxN2VmY2Y2
ZDMyZmE0MTY3ZjM1MmFlOGM5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3Mv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQpAQCAtMTA1MCw3ICsxMDUwLDggQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcihKU09iamVj
dFJlZiBmdW5jdGlvbkNhbGxiYWMKICAgICAvLyBPdGhlciBwbGF0Zm9ybXMgbWF5IGJlIGRpZmZl
cmVudC4KICAgICBpZiAobV9ub3RpZmljYXRpb25IYW5kbGVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gW1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlciBhbGxvY10gaW5pdF07CisKKyAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSBh
ZG9wdE5TKFtbQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgYWxsb2NdIGluaXRdKTsK
ICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHNldFBsYXRmb3JtRWxlbWVudDpwbGF0Zm9ybVVJ
RWxlbWVudCgpXTsKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHNldENhbGxiYWNrOmZ1bmN0
aW9uQ2FsbGJhY2tdOwogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc3RhcnRPYnNlcnZpbmdd
OwpAQCAtMTA2NCw3ICsxMDY1LDYgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1v
dmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCiAgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uSGFuZGxl
cik7CiAgICAgCiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzdG9wT2JzZXJ2aW5nXTsKLSAg
ICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgIG1fbm90aWZpY2F0aW9uSGFu
ZGxlciA9IG5pbDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCBlNGFmYWM2NjI1NWUzZWE4OWQ2YjRkOTIw
MWQwZDg1NDhkOGQ4OTA3Li45NjZmNDY1YmZhYjA3N2FlODJjZWNiN2ExNzIxNGI0ODJkNDQwNGU5
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQpAQCAtMTQ4MCw3ICsxNDgwLDggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcihKU09iamVjdFJlZiBmdW5jdGlvbkNhbGxi
YWMKICAgICAvLyBPdGhlciBwbGF0Zm9ybXMgbWF5IGJlIGRpZmZlcmVudC4KICAgICBpZiAobV9u
b3RpZmljYXRpb25IYW5kbGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9ub3RpZmlj
YXRpb25IYW5kbGVyID0gW1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxvY10g
aW5pdF07CisKKyAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSBhZG9wdE5TKFtbQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbbV9ub3RpZmljYXRp
b25IYW5kbGVyIHNldFBsYXRmb3JtRWxlbWVudDpwbGF0Zm9ybVVJRWxlbWVudCgpXTsKICAgICBb
bV9ub3RpZmljYXRpb25IYW5kbGVyIHNldENhbGxiYWNrOmZ1bmN0aW9uQ2FsbGJhY2tdOwogICAg
IFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc3RhcnRPYnNlcnZpbmddOwpAQCAtMTQ5NCw3ICsxNDk1
LDYgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lcigpCiAgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uSGFuZGxlcik7CiAKICAgICBbbV9ub3Rp
ZmljYXRpb25IYW5kbGVyIHN0b3BPYnNlcnZpbmddOwotICAgIFttX25vdGlmaWNhdGlvbkhhbmRs
ZXIgcmVsZWFzZV07CiAgICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gbmlsOwogfQogCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggNjQzNjU0NWFiOGY5
ODU2ZWYyMmFkN2ZjMTU2MWFiZTQ3MGI4YmVkZC4uMzVhYmYxYmU1ZWZmZTQ2YTQ5MzAxOTQ3NTdl
YWU2MTQ3ZjQxZTg5YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQpAQCAtNzM1LDIxICs3MzUsMTkgQEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0FuZE9mZnNj
cmVlbldpbmRvdygpCiAgICAgdWlXaW5kb3dSZWN0Lm9yaWdpbi55ICs9IFtVSUFwcCBzdGF0dXNC
YXJIZWlnaHRdOwogICAgIFVJV2luZG93ICp1aVdpbmRvdyA9IFtbW1VJV2luZG93IGFsbG9jXSBp
bml0V2l0aEZyYW1lOnVpV2luZG93UmVjdF0gYXV0b3JlbGVhc2VdOwogCi0gICAgVUlWaWV3Q29u
dHJvbGxlciAqdmlld0NvbnRyb2xsZXIgPSBbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRd
OwotICAgIFt1aVdpbmRvdyBzZXRSb290Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXJdOwot
ICAgIFt2aWV3Q29udHJvbGxlciByZWxlYXNlXTsKKyAgICBhdXRvIHZpZXdDb250cm9sbGVyID0g
YWRvcHROUyhbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbdWlXaW5kb3cg
c2V0Um9vdFZpZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyLmdldCgpXTsKIAogICAgIC8vIFRo
ZSBVSVdpbmRvdyBhbmQgVUlXZWJCcm93c2VyVmlldyBhcmUgcmVsZWFzZWQgd2hlbiB0aGUgRHVt
cFJlbmRlclRyZWVXaW5kb3cgaXMgY2xvc2VkLgogICAgIGRydFdpbmRvdy51aVdpbmRvdyA9IHVp
V2luZG93OwogICAgIGRydFdpbmRvdy5icm93c2VyVmlldyA9IHdlYkJyb3dzZXJWaWV3OwogCi0g
ICAgRHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3ICpzY3JvbGxWaWV3ID0gW1tEdW1wUmVuZGVy
VHJlZVdlYlNjcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6bGF5b3V0VGVzdFZpZXdwb3J0
UmVjdF07CisgICAgYXV0byBzY3JvbGxWaWV3ID0gYWRvcHROUyhbW0R1bXBSZW5kZXJUcmVlV2Vi
U2Nyb2xsVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpsYXlvdXRUZXN0Vmlld3BvcnRSZWN0XSk7
CiAgICAgW3Njcm9sbFZpZXcgYWRkU3Vidmlldzp3ZWJCcm93c2VyVmlld107CiAKLSAgICBbdmll
d0NvbnRyb2xsZXIudmlldyBhZGRTdWJ2aWV3OnNjcm9sbFZpZXddOwotICAgIFtzY3JvbGxWaWV3
IHJlbGVhc2VdOworICAgIFtbdmlld0NvbnRyb2xsZXIgdmlld10gYWRkU3VidmlldzpzY3JvbGxW
aWV3LmdldCgpXTsKIAotICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yU3RhbmRhcmRWaWV3cG9ydCh3
ZWJCcm93c2VyVmlldywgc2Nyb2xsVmlldyk7CisgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFu
ZGFyZFZpZXdwb3J0KHdlYkJyb3dzZXJWaWV3LCBzY3JvbGxWaWV3LmdldCgpKTsKICNlbmRpZgog
CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC03OTEsOSArNzg5LDggQEAgc3RhdGljIHZv
aWQgZGVzdHJveVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3coV2ViVmlldyAqd2ViVmlldykKIAog
ICAgIFt3aW5kb3cgY2xvc2VdOyAvLyByZWxlYXNlcyB3aGVuIGNsb3NlZAogI2Vsc2UKLSAgICBV
SVdpbmRvdyAqdWlXaW5kb3cgPSBbZ1dlYkJyb3dzZXJWaWV3IHdpbmRvd107CisgICAgYXV0byB1
aVdpbmRvdyA9IGFkb3B0TlMoW2dXZWJCcm93c2VyVmlldyB3aW5kb3ddKTsKICAgICBbdWlXaW5k
b3cgcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAgW3VpV2luZG93IHJlbGVhc2VdOwogI2VuZGlm
CiAKICAgICBbd2ViVmlldyByZWxlYXNlXTsKQEAgLTE0NTQsMTcgKzE0NTEsMTUgQEAgc3RhdGlj
IE5TRGF0YSAqZHVtcEZyYW1lQXNQREYoV2ViRnJhbWUgKmZyYW1lKQogICAgIFtwcmludEluZm9E
aWN0IHNldE9iamVjdDpOU1ByaW50U2F2ZUpvYiBmb3JLZXk6TlNQcmludEpvYkRpc3Bvc2l0aW9u
XTsKICAgICBbcHJpbnRJbmZvRGljdCBzZXRPYmplY3Q6cGF0aCBmb3JLZXk6TlNQcmludFNhdmVQ
YXRoXTsKIAotICAgIE5TUHJpbnRJbmZvICpwcmludEluZm8gPSBbW05TUHJpbnRJbmZvIGFsbG9j
XSBpbml0V2l0aERpY3Rpb25hcnk6cHJpbnRJbmZvRGljdF07CisgICAgYXV0byBwcmludEluZm8g
PSBhZG9wdE5TKFtbTlNQcmludEluZm8gYWxsb2NdIGluaXRXaXRoRGljdGlvbmFyeTpwcmludElu
Zm9EaWN0XSk7CiAgICAgW3ByaW50SW5mbyBzZXRIb3Jpem9udGFsUGFnaW5hdGlvbjpOU0F1dG9Q
YWdpbmF0aW9uXTsKICAgICBbcHJpbnRJbmZvIHNldFZlcnRpY2FsUGFnaW5hdGlvbjpOU0F1dG9Q
YWdpbmF0aW9uXTsKICAgICBbcHJpbnRJbmZvIHNldFZlcnRpY2FsbHlDZW50ZXJlZDpOT107CiAK
LSAgICBOU1ByaW50T3BlcmF0aW9uICpwcmludE9wZXJhdGlvbiA9IFtOU1ByaW50T3BlcmF0aW9u
IHByaW50T3BlcmF0aW9uV2l0aFZpZXc6W2ZyYW1lIGZyYW1lVmlld10gcHJpbnRJbmZvOnByaW50
SW5mb107CisgICAgTlNQcmludE9wZXJhdGlvbiAqcHJpbnRPcGVyYXRpb24gPSBbTlNQcmludE9w
ZXJhdGlvbiBwcmludE9wZXJhdGlvbldpdGhWaWV3OltmcmFtZSBmcmFtZVZpZXddIHByaW50SW5m
bzpwcmludEluZm8uZ2V0KCldOwogICAgIFtwcmludE9wZXJhdGlvbiBzZXRTaG93UGFuZWxzOk5P
XTsKICAgICBbcHJpbnRPcGVyYXRpb24gcnVuT3BlcmF0aW9uXTsKIAotICAgIFtwcmludEluZm8g
cmVsZWFzZV07Ci0KICAgICBOU0RhdGEgKnBkZkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZkZpbGU6cGF0aF07CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1v
dmVGaWxlQXRQYXRoOnBhdGggaGFuZGxlcjpuaWxdOwogCkBAIC0xNDgxLDcgKzE0NzYsNyBAQCBz
dGF0aWMgdm9pZCBkdW1wQmFja0ZvcndhcmRMaXN0Rm9yV2ViVmlldyhXZWJWaWV3ICp2aWV3KQog
CiAgICAgLy8gUHJpbnQgb3V0IGFsbCBpdGVtcyBpbiB0aGUgbGlzdCBhZnRlciBwcmV2VGVzdEJG
SXRlbSwgd2hpY2ggd2FzIGZyb20gdGhlIHByZXZpb3VzIHRlc3QKICAgICAvLyBHYXRoZXIgaXRl
bXMgZnJvbSB0aGUgZW5kIG9mIHRoZSBsaXN0LCB0aGUgcHJpbnQgdGhlbSBvdXQgZnJvbSBvbGRl
c3QgdG8gbmV3ZXN0Ci0gICAgTlNNdXRhYmxlQXJyYXkgKml0ZW1zVG9QcmludCA9IFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIGF1dG8gaXRlbXNUb1ByaW50ID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgZm9yIChpbnQgaSA9IFtiZkxpc3Qg
Zm9yd2FyZExpc3RDb3VudF07IGkgPiAwOyBpLS0pIHsKICAgICAgICAgV2ViSGlzdG9yeUl0ZW0g
Kml0ZW0gPSBbYmZMaXN0IGl0ZW1BdEluZGV4OmldOwogICAgICAgICAvLyBzb21ldGhpbmcgaXMg
d3JvbmcgaWYgdGhlIGl0ZW0gZnJvbSB0aGUgbGFzdCB0ZXN0IGlzIGluIHRoZSBmb3J3YXJkIHBh
cnQgb2YgdGhlIGIvZiBsaXN0CkBAIC0xNTAzLDcgKzE0OTgsNiBAQCBzdGF0aWMgdm9pZCBkdW1w
QmFja0ZvcndhcmRMaXN0Rm9yV2ViVmlldyhXZWJWaWV3ICp2aWV3KQogICAgIGZvciAoaW50IGkg
PSBbaXRlbXNUb1ByaW50IGNvdW50XS0xOyBpID49IDA7IGktLSkKICAgICAgICAgZHVtcEhpc3Rv
cnlJdGVtKFtpdGVtc1RvUHJpbnQgb2JqZWN0QXRJbmRleDppXSwgOCwgaSA9PSBjdXJyZW50SXRl
bUluZGV4KTsKIAotICAgIFtpdGVtc1RvUHJpbnQgcmVsZWFzZV07CiAgICAgcHJpbnRmKCI9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9h
cmQubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJk
Lm1tCmluZGV4IDk4MDc3MzZmMzgzZDJlZTc2MDBmYmVjY2VjNzRmZWNlNDgyZWFkZDkuLjQxNjI4
ODkzNTMzNWY2Mzg4NmQ0YjBhNTgzODRmNTg1ZmVmZDdiNTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbQpAQCAtNjgsMTMg
KzY4LDExIEBAICsgKE5TUGFzdGVib2FyZCAqKV9wYXN0ZWJvYXJkV2l0aE5hbWU6KE5TU3RyaW5n
ICopbmFtZQogICAgICAgICBuYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJMb2Nh
bFBhc3RlYm9hcmQlZCIsICsrbnVtYmVyXTsKICAgICBpZiAoIWxvY2FsUGFzdGVib2FyZHMpCiAg
ICAgICAgIGxvY2FsUGFzdGVib2FyZHMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdOwotICAgIExvY2FsUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtsb2NhbFBhc3RlYm9hcmRz
IG9iamVjdEZvcktleTpuYW1lXTsKLSAgICBpZiAocGFzdGVib2FyZCkKKyAgICBpZiAoTG9jYWxQ
YXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW2xvY2FsUGFzdGVib2FyZHMgb2JqZWN0Rm9yS2V5Om5h
bWVdKQogICAgICAgICByZXR1cm4gcGFzdGVib2FyZDsKLSAgICBwYXN0ZWJvYXJkID0gW1tMb2Nh
bFBhc3RlYm9hcmQgYWxsb2NdIGluaXRXaXRoTmFtZTpuYW1lXTsKLSAgICBbbG9jYWxQYXN0ZWJv
YXJkcyBzZXRPYmplY3Q6cGFzdGVib2FyZCBmb3JLZXk6bmFtZV07Ci0gICAgW3Bhc3RlYm9hcmQg
cmVsZWFzZV07Ci0gICAgcmV0dXJuIHBhc3RlYm9hcmQ7CisgICAgYXV0byBwYXN0ZWJvYXJkID0g
YWRvcHROUyhbW0xvY2FsUGFzdGVib2FyZCBhbGxvY10gaW5pdFdpdGhOYW1lOm5hbWVdKTsKKyAg
ICBbbG9jYWxQYXN0ZWJvYXJkcyBzZXRPYmplY3Q6cGFzdGVib2FyZC5nZXQoKSBmb3JLZXk6bmFt
ZV07CisgICAgcmV0dXJuIHBhc3RlYm9hcmQuZ2V0KCk7CiB9CiAKICsgKHZvaWQpcmVsZWFzZUxv
Y2FsUGFzdGVib2FyZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggODI3NTFiYzViNzQxNzE1NWNlNWI1NDRhYzg3MGE2Yzlk
ZDNkYjIxMy4uN2VkOWE4ZGViNTkyNzg5NDczZmExMjlhM2JjMmViYzhjYTNiN2M0ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0K
QEAgLTU4NCw3ICs1ODQsNyBAQCAtICh2b2lkKW1vdXNlRG93bjooaW50KWJ1dHRvbk51bWJlciB3
aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QqKW1vZGlmaWVycwogICAgIAogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIE5TRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGV2ZW50VHlwZUZv
ck1vdXNlQnV0dG9uQW5kQWN0aW9uKGJ1dHRvbk51bWJlciwgTW91c2VEb3duKTsKLSAgICBOU0V2
ZW50ICpldmVudCA9IFtOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpldmVudFR5cGUKKyAgICBh
dXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpldmVudFR5
cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpsYXN0
TW91c2VQb3NpdGlvbiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZp
ZXJGbGFnczpidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCkBA
IC01OTIsMjMgKzU5MiwyMyBAQCAtICh2b2lkKW1vdXNlRG93bjooaW50KWJ1dHRvbk51bWJlciB3
aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QqKW1vZGlmaWVycwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJy
ZW50Q29udGV4dF0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRO
dW1iZXI6KytldmVudE51bWJlciAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xpY2tDb3VudDpjbGlja0NvdW50IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByZXNzdXJlOjAuMF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJlc3N1cmU6MC4wXSk7CiAjZWxzZQotICAgIFdlYkV2ZW50ICpldmVudCA9IFtb
V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoTW91c2VFdmVudFR5cGU6V2ViRXZlbnRNb3VzZURvd24K
KyAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aE1vdXNl
RXZlbnRUeXBlOldlYkV2ZW50TW91c2VEb3duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1l
XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bG9jYXRpb246bGFzdE1vdXNlUG9zaXRpb25dOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246bGFzdE1vdXNlUG9zaXRpb25dKTsK
ICNlbmRpZgogCiAgICAgTlNWaWV3ICpzdWJWaWV3ID0gW1ttYWluRnJhbWUgd2ViVmlld10gaGl0
VGVzdDpbZXZlbnQgbG9jYXRpb25JbldpbmRvd11dOwogICAgIGlmIChzdWJWaWV3KSB7CiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2
ZW50XTsKKyAgICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnQuZ2V0KCldOwogI2Vu
ZGlmCiAgICAgICAgIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgICAgIGF1
dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBldmVudFByZXNzZWRNb3VzZUJ1
dHRvbnNTd2l6emxlckZvclZpZXdBbmRFdmVudChzdWJWaWV3LCBldmVudCk7CisgICAgICAgICAg
ICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gZXZlbnRQcmVzc2VkTW91
c2VCdXR0b25zU3dpenpsZXJGb3JWaWV3QW5kRXZlbnQoc3ViVmlldywgZXZlbnQuZ2V0KCkpOwog
I2VuZGlmCi0gICAgICAgICAgICBbc3ViVmlldyBtb3VzZURvd246ZXZlbnRdOworICAgICAgICAg
ICAgW3N1YlZpZXcgbW91c2VEb3duOmV2ZW50LmdldCgpXTsKICAgICAgICAgfQogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOwpA
QCAtNjE2LDEwICs2MTYsNiBAQCAtICh2b2lkKW1vdXNlRG93bjooaW50KWJ1dHRvbk51bWJlciB3
aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QqKW1vZGlmaWVycwogICAgICAgICBpZiAoYnV0
dG9uTnVtYmVyID09IExlZnRNb3VzZUJ1dHRvbikKICAgICAgICAgICAgIGxlZnRNb3VzZUJ1dHRv
bkRvd24gPSBZRVM7CiAgICAgfQotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBbZXZl
bnQgcmVsZWFzZV07Ci0jZW5kaWYKIH0KIAogLSAodm9pZCltb3VzZURvd246KGludClidXR0b25O
dW1iZXIKQEAgLTY3Niw3ICs2NzIsNyBAQCAtICh2b2lkKW1vdXNlVXA6KGludClidXR0b25OdW1i
ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0Kiltb2RpZmllcnMKICAgICBbW1ttYWlu
RnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgTlNFdmVudFR5cGUgZXZlbnRUeXBlID0gZXZlbnRUeXBlRm9yTW91c2VC
dXR0b25BbmRBY3Rpb24oYnV0dG9uTnVtYmVyLCBNb3VzZVVwKTsKLSAgICBOU0V2ZW50ICpldmVu
dCA9IFtOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpldmVudFR5cGUKKyAgICBhdXRvIGV2ZW50
ID0gcmV0YWluUHRyKFtOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpldmVudFR5cGUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpsYXN0TW91c2VQb3Np
dGlvbiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczpi
dWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCkBAIC02ODQsMTEg
KzY4MCwxMSBAQCAtICh2b2lkKW1vdXNlVXA6KGludClidXR0b25OdW1iZXIgd2l0aE1vZGlmaWVy
czooV2ViU2NyaXB0T2JqZWN0Kiltb2RpZmllcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRd
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50TnVtYmVyOisrZXZl
bnROdW1iZXIgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrQ291
bnQ6Y2xpY2tDb3VudCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cmVzc3VyZTowLjBdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
ZXNzdXJlOjAuMF0pOwogI2Vsc2UKLSAgICBXZWJFdmVudCAqZXZlbnQgPSBbW1dlYkV2ZW50IGFs
bG9jXSBpbml0V2l0aE1vdXNlRXZlbnRUeXBlOldlYkV2ZW50TW91c2VVcAorICAgIGF1dG8gZXZl
bnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoTW91c2VFdmVudFR5cGU6V2Vi
RXZlbnRNb3VzZVVwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246bGFzdE1v
dXNlUG9zaXRpb25dOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9jYXRpb246bGFzdE1vdXNlUG9zaXRpb25dKTsKICNlbmRpZgogCiAgICAg
TlNWaWV3ICp0YXJnZXRWaWV3ID0gW1ttYWluRnJhbWUgd2ViVmlld10gaGl0VGVzdDpbZXZlbnQg
bG9jYXRpb25JbldpbmRvd11dOwpAQCAtNjk4LDEzICs2OTQsMTMgQEAgLSAodm9pZCltb3VzZVVw
OihpbnQpYnV0dG9uTnVtYmVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCopbW9kaWZp
ZXJzCiAgICAgdGFyZ2V0VmlldyA9IHRhcmdldFZpZXcgPyB0YXJnZXRWaWV3IDogW1ttYWluRnJh
bWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwogICAgIGFzc2VydCh0YXJnZXRWaWV3KTsKICNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVu
dF07CisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnQuZ2V0KCldOwogI2VuZGlmCiAg
ICAgewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBhdXRvIGV2ZW50UHJlc3Nl
ZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXJG
b3JWaWV3QW5kRXZlbnQodGFyZ2V0VmlldywgZXZlbnQpOworICAgICAgICBhdXRvIGV2ZW50UHJl
c3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenps
ZXJGb3JWaWV3QW5kRXZlbnQodGFyZ2V0VmlldywgZXZlbnQuZ2V0KCkpOwogI2VuZGlmCi0gICAg
ICAgIFt0YXJnZXRWaWV3IG1vdXNlVXA6ZXZlbnRdOworICAgICAgICBbdGFyZ2V0VmlldyBtb3Vz
ZVVwOmV2ZW50LmdldCgpXTsKICAgICB9CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
W05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTczMCwxMCArNzI2LDYgQEAgLSAodm9p
ZCltb3VzZVVwOihpbnQpYnV0dG9uTnVtYmVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVj
dCopbW9kaWZpZXJzCiAgICAgICAgIGRyYWdnaW5nSW5mbyA9IG5pbDsKICAgICB9CiAjZW5kaWYK
LQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW2V2ZW50IHJlbGVhc2VdOwotI2VuZGlm
CiB9CiAKIC0gKHZvaWQpbW91c2VVcDooaW50KWJ1dHRvbk51bWJlcgpAQCAtNzU3LDcgKzc0OSw3
IEBAIC0gKHZvaWQpbW91c2VNb3ZlVG9YOihpbnQpeCBZOihpbnQpeQogICAgIE5TVmlldyAqdmll
dyA9IFttYWluRnJhbWUgd2ViVmlld107CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
TlNQb2ludCBuZXdNb3VzZVBvc2l0aW9uID0gW3ZpZXcgY29udmVydFBvaW50Ok5TTWFrZVBvaW50
KHgsIFt2aWV3IGZyYW1lXS5zaXplLmhlaWdodCAtIHkpIHRvVmlldzpuaWxdOwotICAgIE5TRXZl
bnQgKmV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOihsZWZ0TW91c2VCdXR0b25E
b3duID8gTlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkIDogTlNFdmVudFR5cGVNb3VzZU1vdmVk
KQorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBl
OihsZWZ0TW91c2VCdXR0b25Eb3duID8gTlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkIDogTlNF
dmVudFR5cGVNb3VzZU1vdmVkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uOm5ld01vdXNlUG9zaXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9kaWZpZXJGbGFnczowIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCkBAIC03NjUsMjMgKzc1
NywyMyBAQCAtICh2b2lkKW1vdXNlTW92ZVRvWDooaW50KXggWTooaW50KXkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQg
Y3VycmVudENvbnRleHRdIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2
ZW50TnVtYmVyOisrZXZlbnROdW1iZXIgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsaWNrQ291bnQ6KGxlZnRNb3VzZUJ1dHRvbkRvd24gPyBjbGlja0NvdW50IDogMCkg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3N1cmU6MC4wXTsK
LSAgICBDR0V2ZW50UmVmIGNnRXZlbnQgPSBldmVudC5DR0V2ZW50OworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNzdXJlOjAuMF0pOworICAgIENHRXZlbnRSZWYg
Y2dFdmVudCA9IFtldmVudCBDR0V2ZW50XTsKICAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmll
bGQoY2dFdmVudCwga0NHTW91c2VFdmVudERlbHRhWCwgbmV3TW91c2VQb3NpdGlvbi54IC0gbGFz
dE1vdXNlUG9zaXRpb24ueCk7CiAgICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZl
bnQsIGtDR01vdXNlRXZlbnREZWx0YVksIG5ld01vdXNlUG9zaXRpb24ueSAtIGxhc3RNb3VzZVBv
c2l0aW9uLnkpOwotICAgIGV2ZW50ID0gW05TRXZlbnQgZXZlbnRXaXRoQ0dFdmVudDpjZ0V2ZW50
XTsKKyAgICBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBldmVudFdpdGhDR0V2ZW50OmNnRXZl
bnRdKTsKICAgICBsYXN0TW91c2VQb3NpdGlvbiA9IG5ld01vdXNlUG9zaXRpb247CiAjZWxzZQog
ICAgIGxhc3RNb3VzZVBvc2l0aW9uID0gW3ZpZXcgY29udmVydFBvaW50Ok5TTWFrZVBvaW50KHgs
IHkpIHRvVmlldzpuaWxdOwotICAgIFdlYkV2ZW50ICpldmVudCA9IFtbV2ViRXZlbnQgYWxsb2Nd
IGluaXRXaXRoTW91c2VFdmVudFR5cGU6V2ViRXZlbnRNb3VzZU1vdmVkCisgICAgYXV0byBldmVu
dCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhNb3VzZUV2ZW50VHlwZTpXZWJF
dmVudE1vdXNlTW92ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpsYXN0
TW91c2VQb3NpdGlvbl07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2NhdGlvbjpsYXN0TW91c2VQb3NpdGlvbl0pOwogI2VuZGlmIC8vICFQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAgICAgTlNWaWV3ICpzdWJWaWV3ID0gW1ttYWluRnJhbWUg
d2ViVmlld10gaGl0VGVzdDpbZXZlbnQgbG9jYXRpb25JbldpbmRvd11dOwogICAgIGlmIChzdWJW
aWV3KSB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIFtOU0FwcCBfc2V0Q3Vy
cmVudEV2ZW50OmV2ZW50XTsKKyAgICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnQu
Z2V0KCldOwogI2VuZGlmCiAgICAgICAgIGlmIChsZWZ0TW91c2VCdXR0b25Eb3duKSB7CiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC03OTIsMjUgKzc4NCwyMSBAQCAtICh2b2lkKW1vdXNl
TW92ZVRvWDooaW50KXggWTooaW50KXkKICAgICAgICAgICAgICAgICBbW21haW5GcmFtZSB3ZWJW
aWV3XSBkcmFnZ2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZvXTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICAgICAgICAgYXV0byBldmVudFBy
ZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6
bGVyRm9yVmlld0FuZEV2ZW50KHN1YlZpZXcsIGV2ZW50KTsKKyAgICAgICAgICAgICAgICBhdXRv
IGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gZXZlbnRQcmVzc2VkTW91c2VCdXR0
b25zU3dpenpsZXJGb3JWaWV3QW5kRXZlbnQoc3ViVmlldywgZXZlbnQuZ2V0KCkpOwogI2VuZGlm
Ci0gICAgICAgICAgICAgICAgW3N1YlZpZXcgbW91c2VEcmFnZ2VkOmV2ZW50XTsKKyAgICAgICAg
ICAgICAgICBbc3ViVmlldyBtb3VzZURyYWdnZWQ6ZXZlbnQuZ2V0KCldOwogICAgICAgICAgICAg
fQogI2VuZGlmCiAgICAgICAgIH0gZWxzZSB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gZXZlbnRQ
cmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXJGb3JWaWV3QW5kRXZlbnQoc3ViVmlldywgZXZlbnQp
OworICAgICAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IGV2
ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KHN1YlZpZXcsIGV2
ZW50LmdldCgpKTsKICNlbmRpZgotICAgICAgICAgICAgW3N1YlZpZXcgbW91c2VNb3ZlZDpldmVu
dF07CisgICAgICAgICAgICBbc3ViVmlldyBtb3VzZU1vdmVkOmV2ZW50LmdldCgpXTsKICAgICAg
ICAgfQogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbTlNBcHAgX3NldEN1cnJl
bnRFdmVudDpuaWxdOwogI2VuZGlmCiAgICAgfQotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBbZXZlbnQgcmVsZWFzZV07Ci0jZW5kaWYKIH0KIAogLSAodm9pZCltb3VzZVNjcm9sbEJ5
WDooaW50KXggYW5kWTooaW50KXkgY29udGludW91c2x5OihCT09MKWNvbnRpbnVvdXNseQpAQCAt
MTE2Nyw3ICsxMTU1LDcgQEAgLSAodm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3
aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMKICAgICBbW1ttYWluRnJh
bWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CiAKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBOU0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6
TlNFdmVudFR5cGVLZXlEb3duCisgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBr
ZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgogICAgICAgICAgICAgICAgICAgICAg
ICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1v
ZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncwogICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0
YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCkBAIC0xMTc2LDIxICsxMTY0LDIxIEBAIC0gKHZv
aWQpa2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0
T2JqZWN0ICopbW9kaWZpZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOmV2
ZW50Q2hhcmFjdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpc0FSZXBlYXQ6Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29k
ZV07CisgICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdKTsKICNlbHNlCi0g
ICAgV2ViRXZlbnQgKmV2ZW50ID0gW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5
cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFy
YWN0ZXJzOmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdzKW1vZGlmaWVyRmxh
Z3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtl
eUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVy
IGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldOworICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5T
KFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0
aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczpldmVudENoYXJhY3Rl
ciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
IG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdp
dGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hh
cmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBd
ID09ICdcdCcpXSk7CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtO
U0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVu
dDpldmVudC5nZXQoKV07CiAjZW5kaWYKLSAgICBbW1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRv
d10gZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnRdOworICAgIFtbW1ttYWluRnJhbWUgd2Vi
Vmlld10gd2luZG93XSBmaXJzdFJlc3BvbmRlcl0ga2V5RG93bjpldmVudC5nZXQoKV07CiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsK
ICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZXZlbnQgPSBbTlNFdmVu
dCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKKyAgICBldmVudCA9IHJldGFpblB0
cihbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKICAgICAgICAgICAgICAgICAgICAg
ICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQpAQCAtMTE5OSwyMyArMTE4Nywx
OCBAQCAtICh2b2lkKWtleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6
KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycwogICAgICAgICAgICAgICAgICAgICAgICAgY2hh
cmFjdGVyczpldmVudENoYXJhY3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwogICAgICAgICAg
ICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlD
b2RlOmtleUNvZGVdOworICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7
CiAjZWxzZQotICAgIFtldmVudCByZWxlYXNlXTsKLSAgICBldmVudCA9IFtbV2ViRXZlbnQgYWxs
b2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOltzZWxmIGN1
cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2
ZW50RmxhZ3MpbW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5w
dXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0g
aXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV07CisgICAg
ZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldl
YkV2ZW50S2V5VXAgdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6
ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJGbGFncyBpc1Jl
cGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpb
Y2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFj
dGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CisgICAgW05TQXBwIF9z
ZXRDdXJyZW50RXZlbnQ6ZXZlbnQuZ2V0KCldOwogI2VuZGlmCi0gICAgW1tbW21haW5GcmFtZSB3
ZWJWaWV3XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudF07CisgICAgW1tbW21h
aW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudC5nZXQo
KV07CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZl
bnQ6bmlsXTsKICNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBbZXZlbnQg
cmVsZWFzZV07Ci0jZW5kaWYKIH0KIAogLSAodm9pZClrZXlEb3duV3JhcHBlcjooTlNTdHJpbmcg
KiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdp
dGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgpAQCAtMTQ5NCw5ICsxNDc3LDkgQEAg
LSAodm9pZClzZXRUb3VjaE1vZGlmaWVyOihOU1N0cmluZyopbW9kaWZpZXJOYW1lIHZhbHVlOihC
T09MKWZsYWcKIAogLSAodm9pZClzZW50VG91Y2hFdmVudE9mVHlwZTooV2ViRXZlbnRUeXBlKXR5
cGUKIHsKLSAgICBOU011dGFibGVBcnJheSAqdG91Y2hMb2NhdGlvbnMgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Olt0b3VjaGVzIGNvdW50XV07Ci0gICAgTlNNdXRh
YmxlQXJyYXkgKnRvdWNoSWRlbnRpZmllcnMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5Olt0b3VjaGVzIGNvdW50XV07Ci0gICAgTlNNdXRhYmxlQXJyYXkgKnRvdWNo
UGhhc2VzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpbdG91Y2hl
cyBjb3VudF1dOworICAgIGF1dG8gdG91Y2hMb2NhdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6W3RvdWNoZXMgY291bnRdXSk7CisgICAgYXV0
byB0b3VjaElkZW50aWZpZXJzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5Olt0b3VjaGVzIGNvdW50XV0pOworICAgIGF1dG8gdG91Y2hQaGFzZXMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6W3RvdWNoZXMg
Y291bnRdXSk7CiAgICAgCiAgICAgQ0dQb2ludCBjZW50cm9pZCA9IENHUG9pbnRaZXJvOwogICAg
IE5TVUludGVnZXIgdG91Y2hlc0Rvd25Db3VudCA9IDA7CkBAIC0xNTIwLDI1ICsxNTAzLDIwIEBA
IC0gKHZvaWQpc2VudFRvdWNoRXZlbnRPZlR5cGU6KFdlYkV2ZW50VHlwZSl0eXBlCiAgICAgZWxz
ZQogICAgICAgICBjZW50cm9pZCA9IENHUG9pbnRaZXJvOwogCi0gICAgV2ViRXZlbnQgKmV2ZW50
ID0gW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhUb3VjaEV2ZW50VHlwZTp0eXBlCisgICAgYXV0
byBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhUb3VjaEV2ZW50VHlw
ZTp0eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZVN0YW1w
OltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9jYXRpb246Y2VudHJvaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbmV4dEV2ZW50RmxhZ3MKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3VjaENvdW50Olt0b3VjaGVzIGNv
dW50XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNoTG9jYXRp
b25zOnRvdWNoTG9jYXRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG91Y2hJZGVudGlmaWVyczp0b3VjaElkZW50aWZpZXJzCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG91Y2hQaGFzZXM6dG91Y2hQaGFzZXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3VjaExvY2F0aW9uczp0b3VjaExvY2F0aW9u
cy5nZXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNoSWRl
bnRpZmllcnM6dG91Y2hJZGVudGlmaWVycy5nZXQoKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRvdWNoUGhhc2VzOnRvdWNoUGhhc2VzLmdldCgpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNHZXN0dXJlOih0b3VjaGVzRG93bkNvdW50
ID4gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXN0dXJlU2Nh
bGU6MQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlc3R1cmVSb3Rh
dGlvbjowXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXN0dXJl
Um90YXRpb246MF0pOwogICAgIC8vIEVuc3VyZSB0aGF0IGxheW91dCBpcyB1cC10by1kYXRlIHNv
IHRoYXQgaGl0LXRlc3RpbmcgdGhyb3VnaCBXQUtWaWV3cyB3b3JrcyBjb3JyZWN0bHkuCiAgICAg
W21haW5GcmFtZSB1cGRhdGVMYXlvdXRdOwotICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5k
b3ddIHNlbmRFdmVudFN5bmNocm9ub3VzbHk6ZXZlbnRdOwotICAgIFtldmVudCByZWxlYXNlXTsK
LSAgICAKLSAgICBbdG91Y2hMb2NhdGlvbnMgcmVsZWFzZV07Ci0gICAgW3RvdWNoSWRlbnRpZmll
cnMgcmVsZWFzZV07Ci0gICAgW3RvdWNoUGhhc2VzIHJlbGVhc2VdOworICAgIFtbW21haW5GcmFt
ZSB3ZWJWaWV3XSB3aW5kb3ddIHNlbmRFdmVudFN5bmNocm9ub3VzbHk6ZXZlbnQuZ2V0KCldOwog
ICAgIAogICAgIG5leHRFdmVudEZsYWdzID0gMDsKIH0KQEAgLTE1NTcsMjggKzE1MzUsMjYgQEAg
LSAodm9pZCl0b3VjaEVuZAogewogICAgIFtzZWxmIHNlbnRUb3VjaEV2ZW50T2ZUeXBlOldlYkV2
ZW50VG91Y2hFbmRdOwogCi0gICAgTlNNdXRhYmxlQXJyYXkgKnRvdWNoZXNUb1JlbW92ZSA9IFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIGF1dG8gdG91Y2hlc1RvUmVtb3ZlID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgZm9yIChTeW50aGV0
aWNUb3VjaCAqY3VyclRvdWNoIGluIHRvdWNoZXMpIHsKICAgICAgICAgaWYgKGN1cnJUb3VjaC5w
aGFzZSA9PSBVSVRvdWNoUGhhc2VFbmRlZCkKICAgICAgICAgICAgIFt0b3VjaGVzVG9SZW1vdmUg
YWRkT2JqZWN0OmN1cnJUb3VjaF07CiAgICAgfQogCi0gICAgW3RvdWNoZXMgcmVtb3ZlT2JqZWN0
c0luQXJyYXk6dG91Y2hlc1RvUmVtb3ZlXTsKLSAgICBbdG91Y2hlc1RvUmVtb3ZlIHJlbGVhc2Vd
OworICAgIFt0b3VjaGVzIHJlbW92ZU9iamVjdHNJbkFycmF5OnRvdWNoZXNUb1JlbW92ZS5nZXQo
KV07CiB9CiAKIC0gKHZvaWQpdG91Y2hDYW5jZWwKIHsKICAgICBbc2VsZiBzZW50VG91Y2hFdmVu
dE9mVHlwZTpXZWJFdmVudFRvdWNoQ2FuY2VsXTsKIAotICAgIE5TTXV0YWJsZUFycmF5ICp0b3Vj
aGVzVG9SZW1vdmUgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHRv
dWNoZXNUb1JlbW92ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwog
ICAgIGZvciAoU3ludGhldGljVG91Y2ggKmN1cnJUb3VjaCBpbiB0b3VjaGVzKSB7CiAgICAgICAg
IGlmIChjdXJyVG91Y2gucGhhc2UgPT0gVUlUb3VjaFBoYXNlQ2FuY2VsbGVkKQogICAgICAgICAg
ICAgW3RvdWNoZXNUb1JlbW92ZSBhZGRPYmplY3Q6Y3VyclRvdWNoXTsKICAgICB9CiAKLSAgICBb
dG91Y2hlcyByZW1vdmVPYmplY3RzSW5BcnJheTp0b3VjaGVzVG9SZW1vdmVdOwotICAgIFt0b3Vj
aGVzVG9SZW1vdmUgcmVsZWFzZV07CisgICAgW3RvdWNoZXMgcmVtb3ZlT2JqZWN0c0luQXJyYXk6
dG91Y2hlc1RvUmVtb3ZlLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KaW5kZXggNWRmMTE2OTY4MTcwMzYw
ZTRhNWM3M2QxMzM3ODdmZjI4YTUzYjU5NS4uZTI0OWFiZjBkZjUzODRhZjkzZDZiN2EwYTdhYTli
YmQwMzJhODZkYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNl
TG9hZERlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbQpAQCAtMTc4LDkgKzE3OCw4IEBAIC0oTlNVUkxSZXF1ZXN0ICopd2ViVmll
dzogKFdlYlZpZXcgKil3diByZXNvdXJjZTppZGVudGlmaWVyIHdpbGxTZW5kUmVxdWVzdDogKE5T
CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCA9IFtyZXF1ZXN0IG11dGFibGVD
b3B5XTsKICAgICBjb25zdCBzZXQ8c3RyaW5nPiYgY2xlYXJIZWFkZXJzID0gZ1Rlc3RSdW5uZXIt
PndpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVycygpOwogICAgIGZvciAoc2V0PHN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIGhlYWRlciA9IGNsZWFySGVhZGVycy5iZWdpbigpOyBoZWFkZXIgIT0gY2xl
YXJIZWFkZXJzLmVuZCgpOyArK2hlYWRlcikgewotICAgICAgICBOU1N0cmluZyAqbnNIZWFkZXIg
PSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6aGVhZGVyLT5jX3N0cigpXTsK
LSAgICAgICAgW25ld1JlcXVlc3Qgc2V0VmFsdWU6bmlsIGZvckhUVFBIZWFkZXJGaWVsZDpuc0hl
YWRlcl07Ci0gICAgICAgIFtuc0hlYWRlciByZWxlYXNlXTsKKyAgICAgICAgYXV0byBuc0hlYWRl
ciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhVVEY4U3RyaW5nOmhlYWRlci0+
Y19zdHIoKV0pOworICAgICAgICBbbmV3UmVxdWVzdCBzZXRWYWx1ZTpuaWwgZm9ySFRUUEhlYWRl
ckZpZWxkOm5zSGVhZGVyLmdldCgpXTsKICAgICB9CiAgICAgaWYgKGF1dG8qIGRlc3RpbmF0aW9u
ID0gZ1Rlc3RSdW5uZXItPnJlZGlyZWN0aW9uRGVzdGluYXRpb25Gb3JVUkwoW1t1cmwgYWJzb2x1
dGVTdHJpbmddIFVURjhTdHJpbmddKSkKICAgICAgICAgW25ld1JlcXVlc3Qgc2V0VVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpkZXN0aW5hdGlv
bl1dXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFj
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggODQ1
MDllMGViMGExMGFjZWNkMjFmY2I1Y2JkNzk4MTQ2NTQ5Mjg3Zi4uZGMwNGM4N2I1Nzk4YTFhMjNi
NjU0NzU5MmMyZjQ0YjlmMGJlZGI2MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RS
dW5uZXJNYWMubW0KQEAgLTE1OCwyMCArMTU4LDE3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2xlYXJB
bGxBcHBsaWNhdGlvbkNhY2hlcygpCiAKIGxvbmcgbG9uZyBUZXN0UnVubmVyOjphcHBsaWNhdGlv
bkNhY2hlRGlza1VzYWdlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIHVybCkKIHsKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHVybENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCB1cmwpKTsKLSAgICBXZWJTZWN1cml0eU9yaWdpbiAqb3JpZ2luID0g
W1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6KF9fYnJpZGdlIE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXTsKLSAgICBsb25nIGxvbmcgdXNh
Z2UgPSBbV2ViQXBwbGljYXRpb25DYWNoZSBkaXNrVXNhZ2VGb3JPcmlnaW46b3JpZ2luXTsKLSAg
ICBbb3JpZ2luIHJlbGVhc2VdOworICAgIGF1dG8gdXJsQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29w
eUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOworICAgIGF1dG8gb3JpZ2luID0g
YWRvcHROUyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dKTsKKyAgICBsb25n
IGxvbmcgdXNhZ2UgPSBbV2ViQXBwbGljYXRpb25DYWNoZSBkaXNrVXNhZ2VGb3JPcmlnaW46b3Jp
Z2luLmdldCgpXTsKICAgICByZXR1cm4gdXNhZ2U7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6Y2xl
YXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIHVybCkKIHsKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHVybENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwpKTsKLQotICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmln
aW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dOwotICAgIFtXZWJBcHBs
aWNhdGlvbkNhY2hlIGRlbGV0ZUNhY2hlRm9yT3JpZ2luOm9yaWdpbl07Ci0gICAgW29yaWdpbiBy
ZWxlYXNlXTsKKyAgICBhdXRvIHVybENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwpKTsKKyAgICBhdXRvIG9yaWdpbiA9IGFkb3B0TlMoW1tX
ZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
KF9fYnJpZGdlIE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXSk7CisgICAgW1dlYkFwcGxpY2F0aW9u
Q2FjaGUgZGVsZXRlQ2FjaGVGb3JPcmlnaW46b3JpZ2luLmdldCgpXTsKIH0KIAogc3RhdGljIEpT
T2JqZWN0UmVmIG9yaWdpbnNBcnJheVRvSlMoSlNDb250ZXh0UmVmIGNvbnRleHQsIE5TQXJyYXkg
Km9yaWdpbnMpCkBAIC0yMTksMTYgKzIxNiwxNSBAQCB2b2lkIFRlc3RSdW5uZXI6OmNsb3NlSWRs
ZUxvY2FsU3RvcmFnZURhdGFiYXNlcygpCiB2b2lkIFRlc3RSdW5uZXI6OmNsZWFyQmFja0Zvcndh
cmRMaXN0KCkKIHsKICAgICBXZWJCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YXJkTGlzdCA9IFtb
bWFpbkZyYW1lIHdlYlZpZXddIGJhY2tGb3J3YXJkTGlzdF07Ci0gICAgV2ViSGlzdG9yeUl0ZW0g
Kml0ZW0gPSBbW2JhY2tGb3J3YXJkTGlzdCBjdXJyZW50SXRlbV0gcmV0YWluXTsKKyAgICBhdXRv
IGl0ZW0gPSByZXRhaW5QdHIoW2JhY2tGb3J3YXJkTGlzdCBjdXJyZW50SXRlbV0pOwogCiAgICAg
Ly8gV2UgY2xlYXIgdGhlIGhpc3RvcnkgYnkgc2V0dGluZyB0aGUgYmFjay9mb3J3YXJkIGxpc3Qn
cyBjYXBhY2l0eSB0byAwCiAgICAgLy8gdGhlbiByZXN0b3JpbmcgaXQgYmFjayBhbmQgYWRkaW5n
IGJhY2sgdGhlIGN1cnJlbnQgaXRlbS4KICAgICBpbnQgY2FwYWNpdHkgPSBbYmFja0ZvcndhcmRM
aXN0IGNhcGFjaXR5XTsKICAgICBbYmFja0ZvcndhcmRMaXN0IHNldENhcGFjaXR5OjBdOwogICAg
IFtiYWNrRm9yd2FyZExpc3Qgc2V0Q2FwYWNpdHk6Y2FwYWNpdHldOwotICAgIFtiYWNrRm9yd2Fy
ZExpc3QgYWRkSXRlbTppdGVtXTsKLSAgICBbYmFja0ZvcndhcmRMaXN0IGdvVG9JdGVtOml0ZW1d
OwotICAgIFtpdGVtIHJlbGVhc2VdOworICAgIFtiYWNrRm9yd2FyZExpc3QgYWRkSXRlbTppdGVt
LmdldCgpXTsKKyAgICBbYmFja0ZvcndhcmRMaXN0IGdvVG9JdGVtOml0ZW0uZ2V0KCldOwogfQog
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVGVzdFJ1bm5lcjo6Y29weURlY29kZWRIb3N0TmFt
ZShKU1N0cmluZ1JlZiBuYW1lKQpAQCAtMjU3LDExICsyNTMsOCBAQCB2b2lkIFRlc3RSdW5uZXI6
OmRpc3BsYXlBbmRUcmFja1JlcGFpbnRzKCkKIAogdm9pZCBUZXN0UnVubmVyOjprZWVwV2ViSGlz
dG9yeSgpCiB7Ci0gICAgaWYgKCFbV2ViSGlzdG9yeSBvcHRpb25hbFNoYXJlZEhpc3RvcnldKSB7
Ci0gICAgICAgIFdlYkhpc3RvcnkgKmhpc3RvcnkgPSBbW1dlYkhpc3RvcnkgYWxsb2NdIGluaXRd
OwotICAgICAgICBbV2ViSGlzdG9yeSBzZXRPcHRpb25hbFNoYXJlZEhpc3Rvcnk6aGlzdG9yeV07
Ci0gICAgICAgIFtoaXN0b3J5IHJlbGVhc2VdOwotICAgIH0KKyAgICBpZiAoIVtXZWJIaXN0b3J5
IG9wdGlvbmFsU2hhcmVkSGlzdG9yeV0pCisgICAgICAgIFtXZWJIaXN0b3J5IHNldE9wdGlvbmFs
U2hhcmVkSGlzdG9yeTphZG9wdE5TKFtbV2ViSGlzdG9yeSBhbGxvY10gaW5pdF0pLmdldCgpXTsK
IH0KIAogaW50IFRlc3RSdW5uZXI6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RzKCkKQEAgLTQxNyw5ICs0MTAsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEN1c3Rv
bVBvbGljeURlbGVnYXRlKGJvb2wgc2V0RGVsZWdhdGUsIGJvb2wgcGVybWlzc2l2ZSkKIAogdm9p
ZCBUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkK
IHsgICAgCi0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmln
aW4gYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZmlsZTovLy8iXV07
CisgICAgYXV0byBvcmlnaW4gPSBhZG9wdE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGlu
aXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZmlsZTovLy8iXV0pOwogICAgIFtbb3Jp
Z2luIGRhdGFiYXNlUXVvdGFNYW5hZ2VyXSBzZXRRdW90YTpxdW90YV07Ci0gICAgW29yaWdpbiBy
ZWxlYXNlXTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpnb0JhY2soKQpAQCAtNDQzLDE3ICs0MzUs
MTYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Q
cm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm8KICAgICAvLyBEdW1wUmVuZGVyVHJlZSBjb25m
aWd1cmVkIHRoZSBXZWJWaWV3IHRvIHVzZSBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
ay4KICAgICBpZDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyPiBwcm92aWRlciA9IFtbbWFp
bkZyYW1lIHdlYlZpZXddIF9kZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyXTsKICAgICBXZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayAqbW9ja1Byb3ZpZGVyID0gc3RhdGljX2Nhc3Q8V2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sqPihwcm92aWRlcik7Ci0gICAgV2ViRGV2aWNl
T3JpZW50YXRpb24gKm9yaWVudGF0aW9uID0gW1tXZWJEZXZpY2VPcmllbnRhdGlvbiBhbGxvY10g
aW5pdFdpdGhDYW5Qcm92aWRlQWxwaGE6Y2FuUHJvdmlkZUFscGhhIGFscGhhOmFscGhhIGNhblBy
b3ZpZGVCZXRhOmNhblByb3ZpZGVCZXRhIGJldGE6YmV0YSBjYW5Qcm92aWRlR2FtbWE6Y2FuUHJv
dmlkZUdhbW1hIGdhbW1hOmdhbW1hXTsKLSAgICBbbW9ja1Byb3ZpZGVyIHNldE9yaWVudGF0aW9u
Om9yaWVudGF0aW9uXTsKLSAgICBbb3JpZW50YXRpb24gcmVsZWFzZV07CisgICAgYXV0byBvcmll
bnRhdGlvbiA9IGFkb3B0TlMoW1tXZWJEZXZpY2VPcmllbnRhdGlvbiBhbGxvY10gaW5pdFdpdGhD
YW5Qcm92aWRlQWxwaGE6Y2FuUHJvdmlkZUFscGhhIGFscGhhOmFscGhhIGNhblByb3ZpZGVCZXRh
OmNhblByb3ZpZGVCZXRhIGJldGE6YmV0YSBjYW5Qcm92aWRlR2FtbWE6Y2FuUHJvdmlkZUdhbW1h
IGdhbW1hOmdhbW1hXSk7CisgICAgW21vY2tQcm92aWRlciBzZXRPcmllbnRhdGlvbjpvcmllbnRh
dGlvbi5nZXQoKV07CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ks
IGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0
aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFk
aW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQsIGJv
b2wgcHJvdmlkZXNGbG9vckxldmVsLCBkb3VibGUgZmxvb3JMZXZlbCkKIHsKLSAgICBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbiA9IG5pbDsKKyAgICBSZXRhaW5QdHI8V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbj4gcG9zaXRpb247CiAgICAgaWYgKCFwcm92aWRlc0FsdGl0dWRlICYmICFw
cm92aWRlc0FsdGl0dWRlQWNjdXJhY3kgJiYgIXByb3ZpZGVzSGVhZGluZyAmJiAhcHJvdmlkZXNT
cGVlZCkgewogICAgICAgICAvLyBUZXN0IHRoZSBleHBvc2VkIEFQSS4KLSAgICAgICAgcG9zaXRp
b24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoVGltZXN0YW1wOldh
bGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSBsYXRpdHVkZTpsYXRp
dHVkZSBsb25naXR1ZGU6bG9uZ2l0dWRlIGFjY3VyYWN5OmFjY3VyYWN5XTsKKyAgICAgICAgcG9z
aXRpb24gPSBhZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhU
aW1lc3RhbXA6V2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpIGxh
dGl0dWRlOmxhdGl0dWRlIGxvbmdpdHVkZTpsb25naXR1ZGUgYWNjdXJhY3k6YWNjdXJhY3ldKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBn
ZW9sb2NhdGlvblBvc2l0aW9uIHsgV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCku
c2Vjb25kcygpLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OwogICAgICAgICBpZiAo
cHJvdmlkZXNBbHRpdHVkZSkKQEAgLTQ2NiwxMCArNDU3LDkgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1
ZGUsIGQKICAgICAgICAgICAgIGdlb2xvY2F0aW9uUG9zaXRpb24uc3BlZWQgPSBzcGVlZDsKICAg
ICAgICAgaWYgKHByb3ZpZGVzRmxvb3JMZXZlbCkKICAgICAgICAgICAgIGdlb2xvY2F0aW9uUG9z
aXRpb24uZmxvb3JMZXZlbCA9IGZsb29yTGV2ZWw7Ci0gICAgICAgIHBvc2l0aW9uID0gW1tXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFdU
Rk1vdmUoZ2VvbG9jYXRpb25Qb3NpdGlvbikpXTsKKyAgICAgICAgcG9zaXRpb24gPSBhZG9wdE5T
KFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0
aW9uOihXVEZNb3ZlKGdlb2xvY2F0aW9uUG9zaXRpb24pKV0pOwogICAgIH0KLSAgICBbW01vY2tH
ZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF0gc2V0UG9zaXRpb246cG9zaXRpb25dOwotICAgIFtw
b3NpdGlvbiByZWxlYXNlXTsKKyAgICBbW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF0g
c2V0UG9zaXRpb246cG9zaXRpb24uZ2V0KCldOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmluZ1JlZiBtZXNzYWdl
KQpAQCAtODQwLDkgKzgzMCw5IEBAIEBlbmQKIEBpbnRlcmZhY2UgQVBJVGVzdERlbGVnYXRlSVBo
b25lIDogTlNPYmplY3QgPFdlYkZyYW1lTG9hZERlbGVnYXRlPgogewogICAgIFRlc3RSdW5uZXIq
IHRlc3RSdW5uZXI7Ci0gICAgTlNEYXRhICpkYXRhOwotICAgIE5TVVJMICpiYXNlVVJMOwotICAg
IFdlYlZpZXcgKndlYlZpZXc7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKKyAgICBSZXRh
aW5QdHI8TlNVUkw+IGJhc2VVUkw7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXc7CiB9
CiAtIChpZClpbml0V2l0aFRlc3RSdW5uZXI6KFRlc3RSdW5uZXIqKXRlc3RSdW5uZXIgdXRmOERh
dGE6KEpTU3RyaW5nUmVmKWRhdGEgYmFzZVVSTDooSlNTdHJpbmdSZWYpYmFzZVVSTDsKIC0gKHZv
aWQpcnVuOwpAQCAtODU3LDE1ICs4NDcsMTMgQEAgLSAoaWQpaW5pdFdpdGhUZXN0UnVubmVyOihU
ZXN0UnVubmVyKilydW5uZXIgdXRmOERhdGE6KEpTU3RyaW5nUmVmKWRhdGFTdHJpbmcgYmEKICAg
ICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHRlc3RSdW5uZXIgPSBydW5uZXI7Ci0gICAgZGF0YSA9
IFtbKF9fYnJpZGdlIE5TU3RyaW5nICopYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBkYXRhU3RyaW5nKSkuZ2V0KCkgZGF0YVVzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddIHJldGFpbl07Ci0gICAgYmFzZVVSTCA9IFtbTlNVUkwgVVJMV2l0
aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGJhc2VVUkxTdHJpbmcpKS5nZXQoKV0gcmV0YWluXTsKKyAg
ICBkYXRhID0gWyhfX2JyaWRnZSBOU1N0cmluZyAqKWFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YVN0cmluZykpLmdldCgpIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICBiYXNlVVJMID0gW05TVVJMIFVSTFdpdGhT
dHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBiYXNlVVJMU3RyaW5nKSkuZ2V0KCldOwogICAgIHJldHVybiBz
ZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbZGF0YSByZWxlYXNlXTsKLSAgICBb
YmFzZVVSTCByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTg3OCw5ICs4
NjYsOSBAQCAtICh2b2lkKXJ1bgogCiAgICAgV2ViVGhyZWFkTG9jaygpOwogCi0gICAgd2ViVmll
dyA9IFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpA
IiIgZ3JvdXBOYW1lOkAiIl07CisgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOkAiIiBncm91cE5hbWU6QCIiXSk7
CiAgICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdhdGU6c2VsZl07Ci0gICAgW1t3ZWJWaWV3
IG1haW5GcmFtZV0gbG9hZERhdGE6ZGF0YSBNSU1FVHlwZTpAInRleHQvaHRtbCIgdGV4dEVuY29k
aW5nTmFtZTpAInV0Zi04IiBiYXNlVVJMOmJhc2VVUkxdOworICAgIFtbd2ViVmlldyBtYWluRnJh
bWVdIGxvYWREYXRhOmRhdGEuZ2V0KCkgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIHRleHRFbmNvZGlu
Z05hbWU6QCJ1dGYtOCIgYmFzZVVSTDpiYXNlVVJMLmdldCgpXTsKIH0KIAogLSAodm9pZClfY2xl
YW5VcApAQCAtODkyLDcgKzg4MCw2IEBAIC0gKHZvaWQpX2NsZWFuVXAKIAogICAgIFt3ZWJWaWV3
IF9jbGVhckRlbGVnYXRlc107CiAgICAgW3dlYlZpZXcgY2xvc2VdOwotICAgIFt3ZWJWaWV3IHJl
bGVhc2VdOwogICAgIHdlYlZpZXcgPSBuaWw7CiAKICAgICB0ZXN0UnVubmVyLT5ub3RpZnlEb25l
KCk7CkBAIC05MzgsMTEgKzkyNSwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6OmFwaVRlc3ROZXdXaW5k
b3dEYXRhTG9hZEJhc2VVUkwoSlNTdHJpbmdSZWYgdXRmOERhdGEsIEpTU3RyaW5nUgogICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0ZjhEYXRhQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29w
eUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHV0ZjhEYXRhKSk7CiAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gYmFzZVVSTENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBiYXNlVVJMKSk7CiAKLSAgICAgICAgV2ViVmlldyAqd2Vi
VmlldyA9IFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFt
ZTpAIiIgZ3JvdXBOYW1lOkAiIl07CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOkAiIiBncm91
cE5hbWU6QCIiXSk7CiAKICAgICAgICAgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgICAgIEFQSVRl
c3REZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW0FQSVRlc3REZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhD
b21wbGV0aW9uQ29uZGl0aW9uOiZkb25lXTsKLSAgICAgICAgW3dlYlZpZXcgc2V0RnJhbWVMb2Fk
RGVsZWdhdGU6ZGVsZWdhdGVdOworICAgICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0FQ
SVRlc3REZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhDb21wbGV0aW9uQ29uZGl0aW9uOiZkb25lXSk7
CisgICAgICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
IAogICAgICAgICBbW3dlYlZpZXcgbWFpbkZyYW1lXSBsb2FkRGF0YTpbKF9fYnJpZGdlIE5TU3Ry
aW5nICopdXRmOERhdGFDRi5nZXQoKSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ10gTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIHRleHRFbmNvZGluZ05hbWU6QCJ1dGYtOCIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKiliYXNlVVJMQ0Yu
Z2V0KCldXTsKIApAQCAtOTU3LDggKzk0NCw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YXBpVGVzdE5l
d1dpbmRvd0RhdGFMb2FkQmFzZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwgSlNTdHJpbmdSCiAj
ZW5kaWYKIAogICAgICAgICBbd2ViVmlldyBjbG9zZV07Ci0gICAgICAgIFt3ZWJWaWV3IHJlbGVh
c2VdOwotICAgICAgICBbZGVsZWdhdGUgcmVsZWFzZV07CiAgICAgfQogfQogCkBAIC05NzgsOCAr
OTYzLDggQEAgc3RhdGljIE5TU3RyaW5nICpTeW5jaHJvbm91c0xvYWRlclJ1bkxvb3BNb2RlID0g
QCJEdW1wUmVuZGVyVHJlZVN5bmNocm9ub3VzTG9hZGUKIAogQGludGVyZmFjZSBTeW5jaHJvbm91
c0xvYWRlciA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4KIHsKLSAgICBOU1N0
cmluZyAqbV91c2VybmFtZTsKLSAgICBOU1N0cmluZyAqbV9wYXNzd29yZDsKKyAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IG1fdXNlcm5hbWU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX3Bhc3N3
b3JkOwogICAgIEJPT0wgbV9pc0RvbmU7CiB9CiArICh2b2lkKW1ha2VSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0IHdpdGhVc2VybmFtZTooTlNTdHJpbmcgKil1c2VybmFtZSBwYXNzd29y
ZDooTlNTdHJpbmcgKilwYXNzd29yZDsKQEAgLTk4OCw5ICs5NzMsNiBAQCBAZW5kCiBAaW1wbGVt
ZW50YXRpb24gU3luY2hyb25vdXNMb2FkZXIgOiBOU09iamVjdAogLSAodm9pZClkZWFsbG9jCiB7
Ci0gICAgW21fdXNlcm5hbWUgcmVsZWFzZV07Ci0gICAgW21fcGFzc3dvcmQgcmVsZWFzZV07Ci0K
ICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTEwMDQsNyArOTg2LDcgQEAgLSAodm9pZClj
b25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW4KIElHTk9SRV9XQVJOSU5HU19FTkQKIHsKICAgICBpZiAoW2NoYWxsZW5n
ZSBwcmV2aW91c0ZhaWx1cmVDb3VudF0gPT0gMCkgewotICAgICAgICBSZXRhaW5QdHI8TlNVUkxD
cmVkZW50aWFsPiBjcmVkZW50aWFsID0gYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10g
IGluaXRXaXRoVXNlcjptX3VzZXJuYW1lIHBhc3N3b3JkOm1fcGFzc3dvcmQgcGVyc2lzdGVuY2U6
TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uXSk7CisgICAgICAgIFJldGFpblB0
cjxOU1VSTENyZWRlbnRpYWw+IGNyZWRlbnRpYWwgPSBhZG9wdE5TKFtbTlNVUkxDcmVkZW50aWFs
IGFsbG9jXSAgaW5pdFdpdGhVc2VyOm1fdXNlcm5hbWUuZ2V0KCkgcGFzc3dvcmQ6bV9wYXNzd29y
ZC5nZXQoKSBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25d
KTsKICAgICAgICAgW1tjaGFsbGVuZ2Ugc2VuZGVyXSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwu
Z2V0KCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlXTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTEwMjcsMjEgKzEwMDksMTggQEAgKyAodm9pZCltYWtlUmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3aXRoVXNlcm5hbWU6KE5TU3RyaW5nICopdXNlcm5hbWUg
cGEKICAgICBBU1NFUlQoIVtbcmVxdWVzdCBVUkxdIHVzZXJdKTsKICAgICBBU1NFUlQoIVtbcmVx
dWVzdCBVUkxdIHBhc3N3b3JkXSk7CiAKLSAgICBTeW5jaHJvbm91c0xvYWRlciAqZGVsZWdhdGUg
PSBbW1N5bmNocm9ub3VzTG9hZGVyIGFsbG9jXSBpbml0XTsKLSAgICBkZWxlZ2F0ZS0+bV91c2Vy
bmFtZSA9IFt1c2VybmFtZSBjb3B5XTsKLSAgICBkZWxlZ2F0ZS0+bV9wYXNzd29yZCA9IFtwYXNz
d29yZCBjb3B5XTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1N5bmNocm9ub3VzTG9h
ZGVyIGFsbG9jXSBpbml0XSk7CisgICAgZGVsZWdhdGUuZ2V0KCktPm1fdXNlcm5hbWUgPSBhZG9w
dE5TKFt1c2VybmFtZSBjb3B5XSk7CisgICAgZGVsZWdhdGUuZ2V0KCktPm1fcGFzc3dvcmQgPSBh
ZG9wdE5TKFtwYXNzd29yZCBjb3B5XSk7CiAKLSAgICBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rp
b24gPSBbW05TVVJMQ29ubmVjdGlvbiBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3QgZGVs
ZWdhdGU6ZGVsZWdhdGUgc3RhcnRJbW1lZGlhdGVseTpOT107CisgICAgYXV0byBjb25uZWN0aW9u
ID0gYWRvcHROUyhbW05TVVJMQ29ubmVjdGlvbiBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0OnJlcXVl
c3QgZGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCkgc3RhcnRJbW1lZGlhdGVseTpOT10pOwogICAgIFtj
b25uZWN0aW9uIHNjaGVkdWxlSW5SdW5Mb29wOltOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIGZv
ck1vZGU6U3luY2hyb25vdXNMb2FkZXJSdW5Mb29wTW9kZV07CiAgICAgW2Nvbm5lY3Rpb24gc3Rh
cnRdOwogICAgIAotICAgIHdoaWxlICghZGVsZWdhdGUtPm1faXNEb25lKQorICAgIHdoaWxlICgh
ZGVsZWdhdGUuZ2V0KCktPm1faXNEb25lKQogICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVu
TG9vcF0gcnVuTW9kZTpTeW5jaHJvbm91c0xvYWRlclJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05T
RGF0ZSBkaXN0YW50RnV0dXJlXV07CiAKICAgICBbY29ubmVjdGlvbiBjYW5jZWxdOwotICAgIAot
ICAgIFtjb25uZWN0aW9uIHJlbGVhc2VdOwotICAgIFtkZWxlZ2F0ZSByZWxlYXNlXTsKIH0KIAog
QGVuZApAQCAtMTA4NSwxMyArMTA2NCwxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFRleHREaXJl
Y3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uTmFtZSkKIHZvaWQgVGVzdFJ1bm5lcjo6YWRkQ2hy
b21lSW5wdXRGaWVsZCgpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgTlNUZXh0
RmllbGQgKnRleHRGaWVsZCA9IFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCAxMDAsIDIwKV07Ci0gICAgdGV4dEZpZWxkLnRhZyA9IDE7Ci0gICAgW1tb
W21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnRleHRG
aWVsZF07Ci0gICAgW3RleHRGaWVsZCByZWxlYXNlXTsKKyAgICBhdXRvIHRleHRGaWVsZCA9IGFk
b3B0TlMoW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDEwMCwgMjApXSk7CisgICAgW3RleHRGaWVsZCBzZXRUYWc6IDFdOworICAgIFtbW1ttYWluRnJh
bWUgd2ViVmlld10gd2luZG93XSBjb250ZW50Vmlld10gYWRkU3Vidmlldzp0ZXh0RmllbGQuZ2V0
KCldOwogICAgIAogICAgIFt0ZXh0RmllbGQgc2V0TmV4dEtleVZpZXc6W21haW5GcmFtZSB3ZWJW
aWV3XV07Ci0gICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0TmV4dEtleVZpZXc6dGV4dEZpZWxk
XTsKKyAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXROZXh0S2V5Vmlldzp0ZXh0RmllbGQuZ2V0
KCldOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9V
SURlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5oCmluZGV4
IGNmMTlmZmQ2ZmE0NmJmZGY1MzQ5NmRmZDY4MTgxOGFkMDhiMGIxM2MuLjMxNjU1ZGJjZWIwOGY0
Zjg4ODhhM2IxZGYyZWExNGVjMjM1NjhmMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9VSURlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVs
ZWdhdGUuaApAQCAtMzUsMTEgKzM1LDEyIEBACiAjZW5kaWYKIAogI2ltcG9ydCA8V2ViS2l0L1dl
YlVJRGVsZWdhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBV
SURlbGVnYXRlIDogTlNPYmplY3QgPFdlYlVJRGVsZWdhdGU+IHsKIEBwcml2YXRlCiAgICAgTlNQ
b2ludCB3aW5kb3dPcmlnaW47Ci0gICAgTlNNdXRhYmxlU2V0ICptX3BlbmRpbmdHZW9sb2NhdGlv
blBlcm1pc3Npb25MaXN0ZW5lcnM7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gbV9wZW5k
aW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uTGlzdGVuZXJzOwogICAgIE5TVGltZXIgKm1fdGltZXI7
CiAgICAgQk9PTCBtX2VuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCmluZGV4IDA4ZGYxMDQwMWIyOGEwYzM3M2EzNjY1
MDNkOTg4ZGE4MjYzM2NkZWUuLmZkY2IwNGQ0OThiZDlhMDJjNDYwZTZkM2QzMGU4MjNlNTE1NTM2
YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCkBAIC0yNTIsNyArMjUy
LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JH
ZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOigKIHsKICAgICBpZiAoIWdUZXN0UnVubmVyLT5p
c0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCgpKSB7CiAgICAgICAgIGlmICghbV9wZW5kaW5nR2Vv
bG9jYXRpb25QZXJtaXNzaW9uTGlzdGVuZXJzKQotICAgICAgICAgICAgbV9wZW5kaW5nR2VvbG9j
YXRpb25QZXJtaXNzaW9uTGlzdGVuZXJzID0gW1tOU011dGFibGVTZXQgc2V0XSByZXRhaW5dOwor
ICAgICAgICAgICAgbV9wZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uTGlzdGVuZXJzID0gW05T
TXV0YWJsZVNldCBzZXRdOwogICAgICAgICBbbV9wZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9u
TGlzdGVuZXJzIGFkZE9iamVjdDpsaXN0ZW5lcl07CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0yOTAsNyArMjkwLDYgQEAgLSAodm9pZCl0aW1lckZpcmVkCiAgICAgICAgICAgICBbbGlzdGVu
ZXIgZGVueV07CiAgICAgfQogICAgIFttX3BlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25MaXN0
ZW5lcnMgcmVtb3ZlQWxsT2JqZWN0c107Ci0gICAgW21fcGVuZGluZ0dlb2xvY2F0aW9uUGVybWlz
c2lvbkxpc3RlbmVycyByZWxlYXNlXTsKICAgICBtX3BlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Np
b25MaXN0ZW5lcnMgPSBuaWw7CiB9CiAKQEAgLTQzNyw4ICs0MzYsNiBAQCAtICh2b2lkKWRlYWxs
b2MKICAgICBbZHJhZ2dpbmdJbmZvIHJlbGVhc2VdOwogICAgIGRyYWdnaW5nSW5mbyA9IG5pbDsK
ICNlbmRpZgotICAgIFttX3BlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25MaXN0ZW5lcnMgcmVs
ZWFzZV07Ci0gICAgbV9wZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uTGlzdGVuZXJzID0gbmls
OwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRJT1MubW0KaW5kZXggMTllOWU5Y2IyODVhYjIyYzg1ZTY0YmIxNDJlZGYyMTI3Y2Iz
ZDcyNi4uZDEyMGQxNTFkOGEwMzAxODNhYjgyYzFjZjA4YjQzM2JjNDRjMzU1ZCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudElPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCkBAIC0xMDIxLDcgKzEwMjEsOCBA
QCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpT
VmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjawogICAgIC8vIE90aGVyIHBsYXRmb3JtcyBtYXkgYmUg
ZGlmZmVyZW50LgogICAgIGlmIChtX25vdGlmaWNhdGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSBbW0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyIGFsbG9jXSBpbml0XTsKKworICAgIG1fbm90aWZpY2F0aW9uSGFuZGxl
ciA9IGFkb3B0TlMoW1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxvY10gaW5p
dF0pOwogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc2V0UGxhdGZvcm1FbGVtZW50OnBsYXRm
b3JtVUlFbGVtZW50KCldOwogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc2V0Q2FsbGJhY2s6
ZnVuY3Rpb25DYWxsYmFja107CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzdGFydE9ic2Vy
dmluZ107CkBAIC0xMDM1LDcgKzEwMzYsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkKICAgICBBU1NFUlQobV9ub3RpZmljYXRpb25I
YW5kbGVyKTsKICAgICAKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHN0b3BPYnNlcnZpbmdd
OwotICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgbV9ub3RpZmljYXRp
b25IYW5kbGVyID0gbmlsOwogICAgIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggYmY2YTcwZmNlNGQ5MzVkYTNkNjhkZjY2
MTYzYjk1NjRlNjg2ZDFiZi4uN2UzZWIxYzY2OTFjYjJlZWMxYjk0NDg0ODU2NjA2ZjgwZjc1ZDM3
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC0xNTg5
LDcgKzE1ODksOCBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlv
bkxpc3RlbmVyKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjawogICAgIC8vIE90aGVyIHBsYXRm
b3JtcyBtYXkgYmUgZGlmZmVyZW50LgogICAgIGlmIChtX25vdGlmaWNhdGlvbkhhbmRsZXIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSBbW0FjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGFsbG9jXSBpbml0XTsKKworICAgIG1fbm90aWZp
Y2F0aW9uSGFuZGxlciA9IGFkb3B0TlMoW1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ciBhbGxvY10gaW5pdF0pOwogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc2V0UGxhdGZvcm1F
bGVtZW50OnBsYXRmb3JtVUlFbGVtZW50KCldOwogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIg
c2V0Q2FsbGJhY2s6ZnVuY3Rpb25DYWxsYmFja107CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxl
ciBzdGFydE9ic2VydmluZ107CkBAIC0xNjAzLDcgKzE2MDQsNiBAQCBib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkKICAgICBBU1NFUlQobV9u
b3RpZmljYXRpb25IYW5kbGVyKTsKIAogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc3RvcE9i
c2VydmluZ107Ci0gICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciByZWxlYXNlXTsKICAgICBtX25v
dGlmaWNhdGlvbkhhbmRsZXIgPSBuaWw7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCmluZGV4IDBjNDQ2
MzM1YjI0MGQ2YTdlMDY3NDE0Y2E5YzMwNDBhYTZlMzU0NjMuLmZmZmIxOTA0NGMwMjUyODE0M2Ri
NTRjMTM1NjMzOWE4MmQ3ZDdiNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L0hJREV2ZW50R2VuZXJhdG9yLm1tCkBAIC0xMDQyLDkgKzEwNDIsOSBAQCAtIChOU0FycmF5ICop
aW50ZXJwb2xhdGVkRXZlbnRzOihOU0RpY3Rpb25hcnkgKilpbnRlcnBvbGF0aW9uc0RpY3Rpb25h
cnkKICAgICBOU0FycmF5ICplbmRUb3VjaGVzID0gZW5kRXZlbnRbSElERXZlbnRUb3VjaGVzS2V5
XTsKICAgICAKICAgICB3aGlsZSAodGltZSA8IGVuZFRpbWUpIHsKLSAgICAgICAgTlNNdXRhYmxl
RGljdGlvbmFyeSAqbmV3RXZlbnQgPSBbZW5kRXZlbnQgbXV0YWJsZUNvcHldOworICAgICAgICBh
dXRvIG5ld0V2ZW50ID0gYWRvcHROUyhbZW5kRXZlbnQgbXV0YWJsZUNvcHldKTsKICAgICAgICAg
ZG91YmxlIHRpbWVSYXRpbyA9ICh0aW1lIC0gc3RhcnRUaW1lKSAvIChlbmRUaW1lIC0gc3RhcnRU
aW1lKTsKLSAgICAgICAgbmV3RXZlbnRbSElERXZlbnRUaW1lT2Zmc2V0S2V5XSA9IEAodGltZSk7
CisgICAgICAgIG5ld0V2ZW50LmdldCgpW0hJREV2ZW50VGltZU9mZnNldEtleV0gPSBAKHRpbWUp
OwogICAgICAgICAKICAgICAgICAgTlNFbnVtZXJhdG9yICpzdGFydEVudW1lcmF0b3IgPSBbc3Rh
cnRUb3VjaGVzIG9iamVjdEVudW1lcmF0b3JdOwogICAgICAgICBOU0RpY3Rpb25hcnkgKnN0YXJ0
VG91Y2g7CkBAIC0xMDU4LDI3ICsxMDU4LDI1IEBAIC0gKE5TQXJyYXkgKilpbnRlcnBvbGF0ZWRF
dmVudHM6KE5TRGljdGlvbmFyeSAqKWludGVycG9sYXRpb25zRGljdGlvbmFyeQogICAgICAgICAg
ICAgICAgIGVuZFRvdWNoID0gW2VuZEVudW1lcmF0b3IgbmV4dE9iamVjdF07CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChlbmRUb3VjaCkgewotICAgICAgICAgICAgICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKm5ld1RvdWNoID0gW2VuZFRvdWNoIG11dGFibGVDb3B5XTsKKyAgICAgICAg
ICAgICAgICBhdXRvIG5ld1RvdWNoID0gYWRvcHROUyhbZW5kVG91Y2ggbXV0YWJsZUNvcHldKTsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobmV3VG91Y2hbSElERXZlbnRY
S2V5XSAhPSBzdGFydFRvdWNoW0hJREV2ZW50WEtleV0pCi0gICAgICAgICAgICAgICAgICAgIG5l
d1RvdWNoW0hJREV2ZW50WEtleV0gPSBAKGludGVycG9sYXRpb25zW2ludGVycG9sYXRpb25UeXBl
XShbc3RhcnRUb3VjaFtISURFdmVudFhLZXldIGRvdWJsZVZhbHVlXSwgW2VuZFRvdWNoW0hJREV2
ZW50WEtleV0gZG91YmxlVmFsdWVdLCB0aW1lUmF0aW8pKTsKKyAgICAgICAgICAgICAgICBpZiAo
bmV3VG91Y2guZ2V0KClbSElERXZlbnRYS2V5XSAhPSBzdGFydFRvdWNoW0hJREV2ZW50WEtleV0p
CisgICAgICAgICAgICAgICAgICAgIG5ld1RvdWNoLmdldCgpW0hJREV2ZW50WEtleV0gPSBAKGlu
dGVycG9sYXRpb25zW2ludGVycG9sYXRpb25UeXBlXShbc3RhcnRUb3VjaFtISURFdmVudFhLZXld
IGRvdWJsZVZhbHVlXSwgW2VuZFRvdWNoW0hJREV2ZW50WEtleV0gZG91YmxlVmFsdWVdLCB0aW1l
UmF0aW8pKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobmV3VG91Y2hb
SElERXZlbnRZS2V5XSAhPSBzdGFydFRvdWNoW0hJREV2ZW50WUtleV0pCi0gICAgICAgICAgICAg
ICAgICAgIG5ld1RvdWNoW0hJREV2ZW50WUtleV0gPSBAKGludGVycG9sYXRpb25zW2ludGVycG9s
YXRpb25UeXBlXShbc3RhcnRUb3VjaFtISURFdmVudFlLZXldIGRvdWJsZVZhbHVlXSwgW2VuZFRv
dWNoW0hJREV2ZW50WUtleV0gZG91YmxlVmFsdWVdLCB0aW1lUmF0aW8pKTsKKyAgICAgICAgICAg
ICAgICBpZiAobmV3VG91Y2guZ2V0KClbSElERXZlbnRZS2V5XSAhPSBzdGFydFRvdWNoW0hJREV2
ZW50WUtleV0pCisgICAgICAgICAgICAgICAgICAgIG5ld1RvdWNoLmdldCgpW0hJREV2ZW50WUtl
eV0gPSBAKGludGVycG9sYXRpb25zW2ludGVycG9sYXRpb25UeXBlXShbc3RhcnRUb3VjaFtISURF
dmVudFlLZXldIGRvdWJsZVZhbHVlXSwgW2VuZFRvdWNoW0hJREV2ZW50WUtleV0gZG91YmxlVmFs
dWVdLCB0aW1lUmF0aW8pKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAo
bmV3VG91Y2hbSElERXZlbnRQcmVzc3VyZUtleV0gIT0gc3RhcnRUb3VjaFtISURFdmVudFByZXNz
dXJlS2V5XSkKLSAgICAgICAgICAgICAgICAgICAgbmV3VG91Y2hbSElERXZlbnRQcmVzc3VyZUtl
eV0gPSBAKGludGVycG9sYXRpb25zW2ludGVycG9sYXRpb25UeXBlXShbc3RhcnRUb3VjaFtISURF
dmVudFByZXNzdXJlS2V5XSBkb3VibGVWYWx1ZV0sIFtlbmRUb3VjaFtISURFdmVudFByZXNzdXJl
S2V5XSBkb3VibGVWYWx1ZV0sIHRpbWVSYXRpbykpOworICAgICAgICAgICAgICAgIGlmIChuZXdU
b3VjaC5nZXQoKVtISURFdmVudFByZXNzdXJlS2V5XSAhPSBzdGFydFRvdWNoW0hJREV2ZW50UHJl
c3N1cmVLZXldKQorICAgICAgICAgICAgICAgICAgICBuZXdUb3VjaC5nZXQoKVtISURFdmVudFBy
ZXNzdXJlS2V5XSA9IEAoaW50ZXJwb2xhdGlvbnNbaW50ZXJwb2xhdGlvblR5cGVdKFtzdGFydFRv
dWNoW0hJREV2ZW50UHJlc3N1cmVLZXldIGRvdWJsZVZhbHVlXSwgW2VuZFRvdWNoW0hJREV2ZW50
UHJlc3N1cmVLZXldIGRvdWJsZVZhbHVlXSwgdGltZVJhdGlvKSk7CiAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgW25ld1RvdWNoZXMgYWRkT2JqZWN0Om5ld1RvdWNoXTsKLSAgICAg
ICAgICAgICAgICBbbmV3VG91Y2ggcmVsZWFzZV07CisgICAgICAgICAgICAgICAgW25ld1RvdWNo
ZXMgYWRkT2JqZWN0Om5ld1RvdWNoLmdldCgpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIE5TTG9nKEAiTWlzc2luZyBFbmQgVG91Y2ggd2l0aCBJRDogJWxkIiwgKGxvbmcp
c3RhcnRUb3VjaElEKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbmV3RXZlbnRbSElE
RXZlbnRUb3VjaGVzS2V5XSA9IG5ld1RvdWNoZXM7CisgICAgICAgIG5ld0V2ZW50LmdldCgpW0hJ
REV2ZW50VG91Y2hlc0tleV0gPSBuZXdUb3VjaGVzOwogICAgICAgICAKLSAgICAgICAgW2ludGVy
cG9sYXRlZEV2ZW50cyBhZGRPYmplY3Q6bmV3RXZlbnRdOwotICAgICAgICBbbmV3RXZlbnQgcmVs
ZWFzZV07CisgICAgICAgIFtpbnRlcnBvbGF0ZWRFdmVudHMgYWRkT2JqZWN0Om5ld0V2ZW50Lmdl
dCgpXTsKICAgICAgICAgdGltZSArPSB0aW1lU3RlcDsKICAgICB9CiAgICAgCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0gYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KaW5kZXggMDIxMTEx
Y2UxNDU0NWQwMDA0NDljZDJmOWMwMDQzNTUyM2FjZmJiNS4uZTgwNmQ2NzNhMGNhYWM5MDVkOGZj
ZTU5ZjQzOWRjYzEyOTk1ODE3NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L1BsYXRmb3JtV2ViVmlld0lPUy5tbQpAQCAtMjA5LDkgKzIwOSw3IEBAIFBsYXRmb3JtV2ViVmll
dzo6UGxhdGZvcm1XZWJWaWV3KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24qIGNvbmZpZ3VyYXRpb24s
IGNvbnN0IFRlCiAgICAgbV93aW5kb3cuYmFja2dyb3VuZENvbG9yID0gW1VJQ29sb3IgbGlnaHRH
cmF5Q29sb3JdOwogICAgIG1fd2luZG93LnBsYXRmb3JtV2ViVmlldyA9IHRoaXM7CiAKLSAgICBV
SVZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlciA9IFtbUGxhdGZvcm1XZWJWaWV3Q29udHJv
bGxlciBhbGxvY10gaW5pdF07Ci0gICAgW21fd2luZG93IHNldFJvb3RWaWV3Q29udHJvbGxlcjp2
aWV3Q29udHJvbGxlcl07Ci0gICAgW3ZpZXdDb250cm9sbGVyIHJlbGVhc2VdOworICAgIFttX3dp
bmRvdyBzZXRSb290Vmlld0NvbnRyb2xsZXI6YWRvcHROUyhbW1BsYXRmb3JtV2ViVmlld0NvbnRy
b2xsZXIgYWxsb2NdIGluaXRdKS5nZXQoKV07CiAKICAgICBtX3ZpZXcgPSBbW1Rlc3RSdW5uZXJX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6dmlld1JlY3RGb3JXaW5kb3dSZWN0KHJlY3Qs
IFdlYlZpZXdTaXppbmdNb2RlOjpEZWZhdWx0KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
OwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZp
ZXdNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMu
bW0KaW5kZXggNDY4YTEyZDg0N2Y5ZWRjNzVkYTYwZDcwMmY1MGFhOGU3YjFlMDkyMS4uNmFmZjNm
MWRkOWE5NjVjNzllMjc4MDNjY2JkMzE0Nzc2OTY4OGE5MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQpAQCAtMTQ5LDE0ICsxNDksMTMg
QEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmRpZEluaXRpYWxpemVDbGllbnRzKCkKIAogdm9pZCBQ
bGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQoKQogewotICAgIE5TVGV4dEZpZWxk
ICp0ZXh0RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgMTAwLCAyMCldOwotICAgIHRleHRGaWVsZC50YWcgPSAxOwotICAgIFtbbV93aW5k
b3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6dGV4dEZpZWxkXTsKLSAgICBbdGV4dEZpZWxkIHJl
bGVhc2VdOworICAgIGF1dG8gdGV4dEZpZWxkID0gYWRvcHROUyhbW05TVGV4dEZpZWxkIGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAyMCldKTsKKyAgICBbdGV4dEZp
ZWxkIHNldFRhZzogMV07CisgICAgW1ttX3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp0
ZXh0RmllbGQuZ2V0KCldOwogCiAgICAgTlNWaWV3ICp2aWV3ID0gcGxhdGZvcm1WaWV3KCk7CiAg
ICAgW3RleHRGaWVsZCBzZXROZXh0S2V5Vmlldzp2aWV3XTsKLSAgICBbdmlldyBzZXROZXh0S2V5
Vmlldzp0ZXh0RmllbGRdOworICAgIFt2aWV3IHNldE5leHRLZXlWaWV3OnRleHRGaWVsZC5nZXQo
KV07CiB9CiAKIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJE
cmFnZ2luZ0luZm8uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5u
ZXJEcmFnZ2luZ0luZm8uaAppbmRleCAyMmY0NzE0OTlhZDNmZGQwODk5YTVlM2NlMTI5ODY4Y2Nl
MTEzZTZlLi41ZGM0ODljOWUxOGRjOWExNmJiYTRkMzBmYjUxMzhjOGFiN2ZkODJkIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJ
bmZvLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRy
YWdnaW5nSW5mby5oCkBAIC0yNSwxMiArMjUsMTQgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwogQGludGVyZmFjZSBXZWJLaXRUZXN0UnVubmVy
RHJhZ2dpbmdJbmZvIDogTlNPYmplY3QgPE5TRHJhZ2dpbmdJbmZvPiB7CiBAcHJpdmF0ZQogICAg
IE5TU2l6ZSBfb2Zmc2V0OwotICAgIE5TSW1hZ2UgKl9kcmFnZ2VkSW1hZ2U7Ci0gICAgTlNQYXN0
ZWJvYXJkICpfZHJhZ2dpbmdQYXN0ZWJvYXJkOwotICAgIGlkIF9kcmFnZ2luZ1NvdXJjZTsKKyAg
ICBSZXRhaW5QdHI8TlNJbWFnZT4gX2RyYWdnZWRJbWFnZTsKKyAgICBSZXRhaW5QdHI8TlNQYXN0
ZWJvYXJkPiBfZHJhZ2dpbmdQYXN0ZWJvYXJkOworICAgIFJldGFpblB0cjxpZD4gX2RyYWdnaW5n
U291cmNlOwogfQogCiAtIChpZClpbml0V2l0aEltYWdlOihOU0ltYWdlICopaW1hZ2Ugb2Zmc2V0
OihOU1NpemUpb2Zmc2V0IHBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgc291
cmNlOihpZClzb3VyY2U7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9X
ZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbQppbmRleCA1NjVkYjJmMTI0ZjhmMmMz
MjQ4ZTljMzIxYmNjOGU5YzhkZGNiOGUyLi5lNjAzYjRiMmE4YmE2NjY0NWVlOTBhNmEzYWMzZWU1
NWM0YTY3OTQ0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRU
ZXN0UnVubmVyRHJhZ2dpbmdJbmZvLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFj
L1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8ubW0KQEAgLTQxLDkgKzQxLDkgQEAgLSAoaWQp
aW5pdFdpdGhJbWFnZTooTlNJbWFnZSAqKWltYWdlIG9mZnNldDooTlNTaXplKW9mZnNldCBwYXN0
ZWJvYXJkOihOU1Bhc3RlYm8KICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICBfZHJhZ2dlZEltYWdlID0gW2ltYWdlIHJldGFpbl07Ci0gICAgX2RyYWdnaW5nUGFzdGVi
b2FyZCA9IFtwYXN0ZWJvYXJkIHJldGFpbl07Ci0gICAgX2RyYWdnaW5nU291cmNlID0gW3NvdXJj
ZSByZXRhaW5dOworICAgIF9kcmFnZ2VkSW1hZ2UgPSBpbWFnZTsKKyAgICBfZHJhZ2dpbmdQYXN0
ZWJvYXJkID0gcGFzdGVib2FyZDsKKyAgICBfZHJhZ2dpbmdTb3VyY2UgPSBzb3VyY2U7CiAgICAg
X29mZnNldCA9IG9mZnNldDsKICAgICAKICAgICByZXR1cm4gc2VsZjsKQEAgLTUxLDkgKzUxLDYg
QEAgLSAoaWQpaW5pdFdpdGhJbWFnZTooTlNJbWFnZSAqKWltYWdlIG9mZnNldDooTlNTaXplKW9m
ZnNldCBwYXN0ZWJvYXJkOihOU1Bhc3RlYm8KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW19k
cmFnZ2VkSW1hZ2UgcmVsZWFzZV07Ci0gICAgW19kcmFnZ2luZ1Bhc3RlYm9hcmQgcmVsZWFzZV07
Ci0gICAgW19kcmFnZ2luZ1NvdXJjZSByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9
CiAKQEAgLTgyLDE3ICs3OSwxNyBAQCAtIChOU1BvaW50KWRyYWdnZWRJbWFnZUxvY2F0aW9uCiAK
IC0gKE5TSW1hZ2UgKilkcmFnZ2VkSW1hZ2UKIHsKLSAgICByZXR1cm4gX2RyYWdnZWRJbWFnZTsK
KyAgICByZXR1cm4gX2RyYWdnZWRJbWFnZS5nZXQoKTsKIH0KIAogLSAoTlNQYXN0ZWJvYXJkICop
ZHJhZ2dpbmdQYXN0ZWJvYXJkCiB7Ci0gICAgcmV0dXJuIF9kcmFnZ2luZ1Bhc3RlYm9hcmQ7Cisg
ICAgcmV0dXJuIF9kcmFnZ2luZ1Bhc3RlYm9hcmQuZ2V0KCk7CiB9CiAKIC0gKGlkKWRyYWdnaW5n
U291cmNlCiB7Ci0gICAgcmV0dXJuIF9kcmFnZ2luZ1NvdXJjZTsKKyAgICByZXR1cm4gX2RyYWdn
aW5nU291cmNlLmdldCgpOwogfQogCiAtIChpbnQpZHJhZ2dpbmdTZXF1ZW5jZU51bWJlcgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3Rl
Ym9hcmQubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFz
dGVib2FyZC5tbQppbmRleCAwZDMwNGZjMjg0YTI4ODNjZmQwZjcyZTJmOTY2MDUwY2YyNWVkYjBm
Li5iM2FkMjM3Y2FkOTViMzYxMDczZjhjOTM2YjZiOGU0Y2QzZGI2OTk5IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2Fy
ZC5tbQpAQCAtNTcsMTMgKzU3LDExIEBAICsgKE5TUGFzdGVib2FyZCAqKV9wYXN0ZWJvYXJkV2l0
aE5hbWU6KE5TU3RyaW5nICopbmFtZQogICAgICAgICBuYW1lID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJMb2NhbFBhc3RlYm9hcmQlZCIsICsrbnVtYmVyXTsKICAgICBpZiAoIWxvY2Fs
UGFzdGVib2FyZHMpCiAgICAgICAgIGxvY2FsUGFzdGVib2FyZHMgPSBbW05TTXV0YWJsZURpY3Rp
b25hcnkgYWxsb2NdIGluaXRdOwotICAgIExvY2FsUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFts
b2NhbFBhc3RlYm9hcmRzIG9iamVjdEZvcktleTpuYW1lXTsKLSAgICBpZiAocGFzdGVib2FyZCkK
KyAgICBpZiAoTG9jYWxQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW2xvY2FsUGFzdGVib2FyZHMg
b2JqZWN0Rm9yS2V5Om5hbWVdKQogICAgICAgICByZXR1cm4gcGFzdGVib2FyZDsKLSAgICBwYXN0
ZWJvYXJkID0gW1tMb2NhbFBhc3RlYm9hcmQgYWxsb2NdIGluaXRXaXRoTmFtZTpuYW1lXTsKLSAg
ICBbbG9jYWxQYXN0ZWJvYXJkcyBzZXRPYmplY3Q6cGFzdGVib2FyZCBmb3JLZXk6bmFtZV07Ci0g
ICAgW3Bhc3RlYm9hcmQgcmVsZWFzZV07Ci0gICAgcmV0dXJuIHBhc3RlYm9hcmQ7CisgICAgYXV0
byBwYXN0ZWJvYXJkID0gYWRvcHROUyhbW0xvY2FsUGFzdGVib2FyZCBhbGxvY10gaW5pdFdpdGhO
YW1lOm5hbWVdKTsKKyAgICBbbG9jYWxQYXN0ZWJvYXJkcyBzZXRPYmplY3Q6cGFzdGVib2FyZC5n
ZXQoKSBmb3JLZXk6bmFtZV07CisgICAgcmV0dXJuIHBhc3RlYm9hcmQuZ2V0KCk7CiB9CiAKIC8v
IFRoaXMgbWV0aG9kIGNyYXNoZXMgd2hlbiBjYWxsZWQgb24gTG9jYWxQYXN0ZWJvYXJkLgpAQCAt
MTUxLDE1ICsxNDksMTQgQEAgLSAodm9pZClfYWRkVHlwZXNXaXRob3V0VXBkYXRpbmdDaGFuZ2VD
b3VudDooTlNBcnJheSAqKW5ld1R5cGVzIG93bmVyOihpZCluZXdPd24KICAgICB1bnNpZ25lZCBp
OwogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIE5TU3RyaW5nICp0
eXBlID0gW25ld1R5cGVzIG9iamVjdEF0SW5kZXg6aV07Ci0gICAgICAgIE5TU3RyaW5nICpzZXRU
eXBlID0gW190eXBlc1NldCBtZW1iZXI6dHlwZV07CisgICAgICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gc2V0VHlwZSA9IFtfdHlwZXNTZXQgbWVtYmVyOnR5cGVdOwogICAgICAgICBpZiAoIXNldFR5
cGUpIHsKLSAgICAgICAgICAgIHNldFR5cGUgPSBbdHlwZSBjb3B5XTsKLSAgICAgICAgICAgIFtf
dHlwZXNBcnJheSBhZGRPYmplY3Q6c2V0VHlwZV07Ci0gICAgICAgICAgICBbX3R5cGVzU2V0IGFk
ZE9iamVjdDpzZXRUeXBlXTsKLSAgICAgICAgICAgIFtzZXRUeXBlIHJlbGVhc2VdOworICAgICAg
ICAgICAgc2V0VHlwZSA9IGFkb3B0TlMoW3R5cGUgY29weV0pOworICAgICAgICAgICAgW190eXBl
c0FycmF5IGFkZE9iamVjdDpzZXRUeXBlLmdldCgpXTsKKyAgICAgICAgICAgIFtfdHlwZXNTZXQg
YWRkT2JqZWN0OnNldFR5cGUuZ2V0KCldOwogICAgICAgICB9CiAgICAgICAgIGlmIChuZXdPd25l
ciAmJiBbbmV3T3duZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYXN0ZWJvYXJkOnBy
b3ZpZGVEYXRhRm9yVHlwZTopXSkKLSAgICAgICAgICAgIFtuZXdPd25lciBwYXN0ZWJvYXJkOnNl
bGYgcHJvdmlkZURhdGFGb3JUeXBlOnNldFR5cGVdOworICAgICAgICAgICAgW25ld093bmVyIHBh
c3RlYm9hcmQ6c2VsZiBwcm92aWRlRGF0YUZvclR5cGU6c2V0VHlwZS5nZXQoKV07CiAgICAgfQog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420080</attachid>
            <date>2021-02-11 19:29:12 -0800</date>
            <delta_ts>2021-02-11 21:23:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221780-20210211192911.patch</filename>
            <type>text/plain</type>
            <size>272816</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg3ZTJkODBmODNkZmY0
MjI3ZGU1OGUyODNkMjJiNDU0NTJhOWY2OC4uN2FmOWU4MjlhM2Y0NDBlN2NiZmI0Yzk1MjQ0OTIz
ZjZiOWQ2NmZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTAyLTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVz
YWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJl
bGVhc2VdIGluIFdlYktpdCBieSB1c2luZyBzbWFydCBwb2ludGVycy4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhcnJheU9mVGV4dEZvclRleHRN
YXJrZXJzOmF0dHJpYnV0ZWQ6XSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0
U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpwb3N0
VXNlckluZm9Gb3JDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBv
c3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb25G
b3JUZXh0Q29udHJvbCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgorICAgICAg
ICAqIGJyaWRnZS90ZXN0YmluZGluZ3MubW06CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpI
VE1MQ29udmVydGVyKToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRl
c0ZvckVsZW1lbnQpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZE1hcmtlcnNUb0xpc3Qp
OgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAqIGhpc3RvcnkvbWFjL0hp
c3RvcnlJdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OnNldFZpZXdT
dGF0ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjOjpleHBvc2VkVW5maWxsZWRBcmVhIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW06CisgICAgICAgICgtW1dlYkNvcmVNb3Rpb25NYW5h
Z2VyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQ29yZU1vdGlvbk1hbmFnZXIgaW5pdGlhbGl6
ZU9uTWFpblRocmVhZF0pOgorICAgICAgICAoLVtXZWJDb3JlTW90aW9uTWFuYWdlciBjaGVja0Ns
aWVudFN0YXR1c10pOgorICAgICAgICAoLVtXZWJDb3JlTW90aW9uTWFuYWdlciB1cGRhdGVdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW06CisgICAgICAgICgtW1dBS1Zp
ZXcgZGVhbGxvY10pOgorICAgICAgICAoLVtXQUtWaWV3IF9zdWJ2aWV3UmVmZXJlbmNlc10pOgor
ICAgICAgICAoLVtXQUtWaWV3IGFkZFN1YnZpZXc6XSk6CisgICAgICAgICgtW1dBS1ZpZXcgcmVt
b3ZlRnJvbVN1cGVydmlld10pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLVmlld0lu
dGVybmFsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViTmV0d29ya1N0YXRlT2JzZXJ2ZXIgaW5pdFdpdGhCbG9jazpd
KToKKyAgICAgICAgKC1bV2ViTmV0d29ya1N0YXRlT2JzZXJ2ZXIgZGVhbGxvY10pOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6Om1ha2VEZWxlZ2F0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5kV29y
ZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmROZXh0V29yZEZyb21JbmRleCk6CisK
IDIwMjEtMDItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXcgdXNhZ2Ugb2YgYWRvcHROUygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJlYTY2ZTNhMTA5YWNkMzRlZGVh
OWZhZTgxMTc1ZDNkMDJiZjIwZDIuLjc5ZTYzNGNjZmQ2Yjg2YTc1Nzg5NGMyZGI4OTg0NzYxMWNj
YWQxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMDItMTEgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2Yg
W29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjE3ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0g
aW4gV2ViS2l0IGJ5IHVzaW5nIHNtYXJ0IHBvaW50ZXJzLgorCisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dLT2JqZWN0Lm1tOgorICAgICAgICAoLVtXS09iamVjdCBkZWFsbG9jXSk6CisgICAgICAg
IChpbml0aWFsaXplVGFyZ2V0SWZOZWVkZWQpOgorICAgICAgICAoLVtXS09iamVjdCBmb3J3YXJk
aW5nVGFyZ2V0Rm9yU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dLT2JqZWN0IGZvcndhcmRJbnZv
Y2F0aW9uOl0pOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlUHJvcGVydHlBcHBsaWVyLm1tOgorICAgICAgICAoLVtVSVZpZXcgX3dlYl9zZXRTdWJ2aWV3
czpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfc25hcHNob3RSZWN0OmludG9JbWFnZU9mV2lkdGg6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBp
bml0V2l0aExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OmN1c3RvbVByb3RvY29sSUQ6
cmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBkZWFsbG9jXSk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3Rh
cnRMb2FkaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0lu
c3BlY3RvckhpZ2hsaWdodFZpZXcubW06CisgICAgICAgICgtW1dLSW5zcGVjdG9ySGlnaGxpZ2h0
VmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcgZGVhbGxvY10pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgX3JlbW92
ZUFsbExheWVyc10pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgX2NyZWF0
ZUxheWVyczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2VsZWN0UG9zaXRpb25BdFBvaW50
OnN0YXlpbmdXaXRoaW5Gb2N1c2VkRWxlbWVudDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnk6aW5EaXJlY3Rpb246
ZnJvbVBvaW50OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IG1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5OmluRGlyZWN0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dDp3aXRoQm91bmRhcnk6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS1Njcm9sbFZpZXcubW06CisgICAgICAgICgtW1dLU2Nyb2xsVmlldyBfdXBkYXRlRGVs
ZWdhdGVdKToKKyAgICAgICAgKC1bV0tTY3JvbGxWaWV3IGRlYWxsb2NdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW06CisgICAgICAgICgtW1dL
U2VsZWN0UG9wb3ZlciBpbml0V2l0aFZpZXc6aGFzR3JvdXBzOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1Rl
eHRJbnB1dFBhbmVsIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRQYW5lbCBpbml0
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbToKKyAgICAg
ICAgKCtbV0tQb3BvdmVyQ29sb3JXZWxsIF9jb2xvclBvcG92ZXJDcmVhdGVJZk5lY2Vzc2FyeTpd
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3RCYXNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbToKKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlUGFyZW50Ol0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbToKKyAgICAg
ICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBkZWFsbG9jXSk6CisgICAgICAgICgt
W1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgorCiAyMDIxLTAyLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3IHVzYWdlIG9mIGFkb3B0TlMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9n
CmluZGV4IDcxZDZlMzg4YmU5Yzk1MWIxMDRjMDNlYzBjMTNiOGVmM2ZmNzgxMmUuLjUyOTZmNDU0
MjNmMjM2YTQ3Nzg4YTIzMTA3NTFmNGU4ZjhlYWNlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0wMi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxl
YXNlXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMTc4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQg
YnkgdXNpbmcgc21hcnQgcG9pbnRlcnMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnRJT1MubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnRJT1M6OnJ1bk9wZW5Q
YW5lbCk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAoLVtX
ZWJQREZWaWV3IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViUERGVmlldyBzZXREYXRhU291cmNl
Ol0pOgorICAgICAgICAoLVtXZWJQREZWaWV3IF9jaGVja1BERlRpdGxlXSk6CisgICAgICAgICgt
W1dlYlBERlZpZXcgdGl0bGVdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhv
bGRlci5tbToKKyAgICAgICAgKC1bV2ViUERGVmlld1BsYWNlaG9sZGVyIF91cGRhdGVUaXRsZUZv
ckRvY3VtZW50SWZBdmFpbGFibGVdKToKKwogMjAyMS0wMS0xOSAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kdWxhcml6ZSBXZWJLaXRMZWdhY3kuZnJhbWV3
b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYTdlMjYxNTU3ZTgwNzM1YTczMzU0
NDkyZjdkODRlNzVlMDY4MDQwNS4uNmE2N2MwMzFlOWRlMGU0YzQ4ZTI2MDY4YWYyMzhiYzgzNzIy
NjVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MyBAQAorMjAy
MS0wMi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVj
ZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTc4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2Fn
ZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQgYnkgdXNpbmcgc21hcnQgcG9pbnRlcnMuCisK
KyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01Ob2Rl
IGFic29sdXRlUXVhZHNdKToKKyAgICAgICAgKC1bRE9NSFRNTEFyZWFFbGVtZW50IGFic29sdXRl
UXVhZHNXaXRoT3duZXI6XSk6CisgICAgICAgICogRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tOgor
ICAgICAgICAocmFpc2VET01FcnJvckV4Y2VwdGlvbik6CisgICAgICAgICogRGVmYXVsdERlbGVn
YXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViRGVmYXVsdFVJRGVs
ZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OmRlZmF1
bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5
Lm1tOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICgtW1dl
Ykhpc3RvcnlQcml2YXRlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUg
cmVtb3ZlSXRlbUZyb21EYXRlQ2FjaGVzOl0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0
ZSBhZGRJdGVtVG9EYXRlQ2FjaGVzOl0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSB2
aXNpdGVkVVJMOndpdGhUaXRsZTpdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgYWRk
SXRlbTpkaXNjYXJkRHVwbGljYXRlOl0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBy
ZWJ1aWxkSGlzdG9yeUJ5RGF5SWZOZWVkZWQ6XSk6CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2
YXRlIHJlbW92ZUFsbEl0ZW1zXSk6CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIG9yZGVy
ZWRMYXN0VmlzaXRlZERheXNdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgbG9hZEhp
c3RvcnlHdXRzRnJvbVVSTDpzYXZlZEl0ZW1zQ291bnQ6Y29sbGVjdERpc2NhcmRlZEl0ZW1zSW50
bzplcnJvcjpdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgYWRkVmlzaXRlZExpbmtz
VG9WaXNpdGVkTGlua1N0b3JlOl0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5IGxvYWRGcm9tVVJM
OmVycm9yOl0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5IF92aXNpdGVkVVJMOndpdGhUaXRsZTpt
ZXRob2Q6d2FzRmFpbHVyZTpdKToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1t
OgorICAgICAgICAoLVtXZWJIaXN0b3J5SXRlbSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRh
dGlvbjpdKToKKyAgICAgICAgKiBNaXNjL1dlYkRvd25sb2FkLm1tOgorICAgICAgICAoLVtXZWJE
b3dubG9hZEludGVybmFsIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViRG93bmxvYWRJbnRlcm5h
bCBzZXRSZWFsRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYkRvd25sb2FkSW50ZXJuYWwgZG93
bmxvYWREaWRCZWdpbjpdKToKKyAgICAgICAgKC1bV2ViRG93bmxvYWRJbnRlcm5hbCBkb3dubG9h
ZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XSk6CisgICAgICAgICgtW1dlYkRv
d25sb2FkSW50ZXJuYWwgZG93bmxvYWQ6ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAo
LVtXZWJEb3dubG9hZEludGVybmFsIGRvd25sb2FkOmRpZFJlY2VpdmVEYXRhT2ZMZW5ndGg6XSk6
CisgICAgICAgICgtW1dlYkRvd25sb2FkSW50ZXJuYWwgZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6XSk6CisgICAgICAgICgtW1dlYkRvd25sb2FkSW50ZXJu
YWwgZG93bmxvYWQ6ZGlkQ3JlYXRlRGVzdGluYXRpb246XSk6CisgICAgICAgICgtW1dlYkRvd25s
b2FkSW50ZXJuYWwgZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAgICAgICgtW1dlYkRvd25sb2Fk
SW50ZXJuYWwgZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKiBNaXNjL1dl
Yk5TRGF0YUV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNEYXRhIF93ZWJraXRfcGFyc2VSRkM4MjJI
ZWFkZXJGaWVsZHNdKToKKyAgICAgICAgKiBNaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbToK
KyAgICAgICAgKC1bTlNQYXN0ZWJvYXJkIF93ZWJfd3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFj
aG1lbnQ6XSk6CisgICAgICAgICgtW05TUGFzdGVib2FyZCBfd2ViX2RlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZUZvckVsZW1lbnQ6VVJMOnRpdGxlOmFyY2hpdmU6c291cmNlOl0pOgorICAgICAgICAq
IFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6OnNwYXduUGx1Z2luSG9zdCk6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnBlcmZvcm1SZXF1ZXN0
KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgorICAgICAg
ICAoV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3IHBsdWdpblZpZXc6cmVjZWl2ZWREYXRhOl0pOgorICAgICAgICAoLVtXZWJOZXRz
Y2FwZVBsdWdpblZpZXcgbG9hZFBsdWdpblJlcXVlc3Q6XSk6CisgICAgICAgICgtW1dlYk5ldHNj
YXBlUGx1Z2luVmlldyBsb2FkUmVxdWVzdDppblRhcmdldDp3aXRoTm90aWZ5RGF0YTpzZW5kTm90
aWZpY2F0aW9uOl0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbToK
KyAgICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxlciBwbHVnaW5WaWV3OnJlY2VpdmVkUmVzcG9u
c2U6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbToKKyAgICAgICAg
KC1bV2ViUGx1Z2luRGF0YWJhc2UgcmVmcmVzaF0pOgorICAgICAgICAoLVtXZWJQbHVnaW5EYXRh
YmFzZSBfcmVtb3ZlUGx1Z2luOl0pOgorICAgICAgICAoLVtXZWJQbHVnaW5EYXRhYmFzZSBfc2Nh
bkZvck5ld1BsdWdpbnNdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAg
IChXZWJDaHJvbWVDbGllbnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ2hy
b21lQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDaHJvbWVD
bGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6
OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAoV2ViQ2hyb21l
Q2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpleGl0RnVs
bFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbToKKyAgICAgICAgKGF0dHJpYnV0ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lv
bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Zm9yY2VMYXlvdXRGb3JOb25IVE1MKToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3
UGFnZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeSBj
b25zdCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAg
ICAgICAocGx1Z2luVmlldyk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
UGx1Z2luKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5t
bToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbik6Cisg
ICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJbml0aWFsaXphdGlvbkxpc3RlbmVyIGlu
aXRpYWxpemF0aW9uQWxsb3dlZFdlYlZpZXc6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250
cm9sbGVyIGluaXRdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBp
bml0V2l0aEluc3BlY3RlZFdlYlZpZXc6aXNVbmRlclRlc3Q6XSk6CisgICAgICAgICgtW1dlYklu
c3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJJbnNwZWN0
b3JXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pOgorICAgICAgICAoLVtXZWJJbnNw
ZWN0b3JXaW5kb3dDb250cm9sbGVyIHdpbmRvd10pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JX
aW5kb3dDb250cm9sbGVyIHNob3dXaW5kb3c6XSk6CisgICAgICAgICgtW1dlYkluc3BlY3Rvcldp
bmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3Vs
dExpc3RlbmVyOmFsbG93TXVsdGlwbGVGaWxlczpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJOb3RpZmljYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGll
bnQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6
Y2hlY2tQZXJtaXNzaW9uKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmUubW06CisgICAg
ICAgICgtW1dlYkFyY2hpdmVQcml2YXRlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQXJjaGl2
ZSBpbml0V2l0aE1haW5SZXNvdXJjZTpzdWJyZXNvdXJjZXM6c3ViZnJhbWVBcmNoaXZlczpdKToK
KyAgICAgICAgKC1bV2ViQXJjaGl2ZSBtYWluUmVzb3VyY2VdKToKKyAgICAgICAgKC1bV2ViQXJj
aGl2ZSBzdWJyZXNvdXJjZXNdKToKKyAgICAgICAgKC1bV2ViQXJjaGl2ZSBzdWJmcmFtZUFyY2hp
dmVzXSk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtX
ZWJEYXRhU291cmNlIF9kb2N1bWVudEZyYWdtZW50V2l0aEFyY2hpdmU6XSk6CisgICAgICAgICgt
W1dlYkRhdGFTb3VyY2UgX21ha2VSZXByZXNlbnRhdGlvbl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lUHJpdmF0ZSBkZWFsbG9jXSk6CisgICAg
ICAgICgtW1dlYkZyYW1lUHJpdmF0ZSBzZXRXZWJGcmFtZVZpZXc6XSk6CisgICAgICAgICgrW1dl
YkZyYW1lIF9jcmVhdGVGcmFtZVdpdGhQYWdlOmZyYW1lTmFtZTpmcmFtZVZpZXc6b3duZXJFbGVt
ZW50Ol0pOgorICAgICAgICAoK1tXZWJGcmFtZSBfY3JlYXRlTWFpbkZyYW1lV2l0aFBhZ2U6ZnJh
bWVOYW1lOmZyYW1lVmlldzpdKToKKyAgICAgICAgKCtbV2ViRnJhbWUgX2NyZWF0ZU1haW5GcmFt
ZVdpdGhTaW1wbGVIVE1MRG9jdW1lbnRXaXRoUGFnZTpmcmFtZVZpZXc6c3R5bGU6XSk6CisgICAg
ICAgICgtW1dlYkZyYW1lIGdldERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6
CisgICAgICAgICgtW1dlYkZyYW1lIGZyYW1lVmlld10pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
RnJhbWVJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJGcmFtZVZpZXdQcml2YXRlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViRnJh
bWVWaWV3IF9zY3JvbGxWaWV3XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfaW5zdGFsbF0p
OgorICAgICAgICAoLVtXZWJGcmFtZVZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAgICAgKC1b
V2ViRnJhbWVWaWV3IF9zZXRDdXN0b21TY3JvbGxWaWV3Q2xhc3M6XSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVl
bkNvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06Cisg
ICAgICAgICgtW1dlYkhUTUxWaWV3IF91cGRhdGVNb3VzZW92ZXJXaXRoRXZlbnQ6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJOYXZpZ2F0aW9uRGF0YS5tbToKKyAgICAgICAgKC1bV2ViTmF2aWdh
dGlvbkRhdGFQcml2YXRlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViTmF2aWdhdGlvbkRhdGEg
aW5pdFdpdGhVUkxTdHJpbmc6dGl0bGU6b3JpZ2luYWxSZXF1ZXN0OnJlc3BvbnNlOmhhc1N1YnN0
aXR1dGVEYXRhOmNsaWVudFJlZGlyZWN0U291cmNlOl0pOgorICAgICAgICAoLVtXZWJOYXZpZ2F0
aW9uRGF0YSB1cmxdKToKKyAgICAgICAgKC1bV2ViTmF2aWdhdGlvbkRhdGEgdGl0bGVdKToKKyAg
ICAgICAgKC1bV2ViTmF2aWdhdGlvbkRhdGEgb3JpZ2luYWxSZXF1ZXN0XSk6CisgICAgICAgICgt
W1dlYk5hdmlnYXRpb25EYXRhIHJlc3BvbnNlXSk6CisgICAgICAgICgtW1dlYk5hdmlnYXRpb25E
YXRhIGNsaWVudFJlZGlyZWN0U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZEb2N1
bWVudEV4dHJhcy5tbToKKyAgICAgICAgKGFsbFNjcmlwdHNJblBERkRvY3VtZW50KToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJQREZS
ZXByZXNlbnRhdGlvbiBmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAgICAgICgtW1dlYlBERlZpZXcgbWVudUZvckV2
ZW50Ol0pOgorICAgICAgICAoLVtXZWJQREZWaWV3IGNvdW50TWF0Y2hlc0ZvclRleHQ6aW5ET01S
YW5nZTpvcHRpb25zOmxpbWl0Om1hcmtNYXRjaGVzOl0pOgorICAgICAgICAoLVtXZWJQREZWaWV3
IGF0dHJpYnV0ZWRTdHJpbmddKToKKyAgICAgICAgKC1bV2ViUERGVmlldyBzZWxlY3Rpb25JbWFn
ZUZvcmNpbmdCbGFja1RleHQ6XSk6CisgICAgICAgICgtW1dlYlBERlZpZXcgX21lbnVJdGVtc0Zy
b21QREZLaXRGb3JFdmVudDpdKToKKyAgICAgICAgKC1bV2ViUERGVmlldyBfbmV4dE1hdGNoRm9y
OmRpcmVjdGlvbjpjYXNlU2Vuc2l0aXZlOndyYXA6ZnJvbVNlbGVjdGlvbjpzdGFydEluU2VsZWN0
aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUG9saWN5RGVsZWdhdGUubW06CisgICAgICAg
ICgtW1dlYlBvbGljeURlY2lzaW9uTGlzdGVuZXJQcml2YXRlIGluaXRXaXRoVGFyZ2V0OmFjdGlv
bjpdKToKKyAgICAgICAgKC1bV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lclByaXZhdGUgZGVhbGxv
Y10pOgorICAgICAgICAoLVtXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyIF91c2VQb2xpY3k6XSk6
CisgICAgICAgICgtW1dlYlBvbGljeURlY2lzaW9uTGlzdGVuZXIgX2ludmFsaWRhdGVdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJl
bmNlcyBfc2V0SUJDcmVhdG9ySUQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJTY3JpcHREZWJ1
Z2dlci5tbToKKyAgICAgICAgKFdlYlNjcmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tOgorICAgICAgICAo
LVtXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIgX2J1aWxkVUldKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV2ViVmlldyBfcmVnaXN0ZXJEcmFnZ2VkVHlwZXNdKToKKyAgICAgICAg
KC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpd
KToKKyAgICAgICAgKCtbV2ViVmlldyBfc3VwcG9ydGVkRmlsZUV4dGVuc2lvbnNdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnByZWZl
cmVuY2VzOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZG93bmxvYWRVUkw6XSk6
CisgICAgICAgICgtW1dlYlZpZXcgX29wZW5OZXdXaW5kb3dXaXRoUmVxdWVzdDpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBjYXJldENoYW5nZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRCYWNr
Z3JvdW5kQ29sb3I6XSk6CisgICAgICAgICgrW1dlYlZpZXcgc2V0TUlNRVR5cGVzU2hvd25Bc0hU
TUw6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0UHJlZmVyZW5jZXM6XSk6CisgICAgICAgICgt
W1dlYlZpZXcgc2V0UHJlZmVyZW5jZXNJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IHNldEN1cnJlbnROb2RlSGlnaGxpZ2h0Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IHN0b3BMb2Fk
aW5nQW5kQ2xlYXJdKToKKyAgICAgICAgKC1bV2ViVmlldyBfb3BlbkZyYW1lSW5OZXdXaW5kb3dG
cm9tTWVudTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2VhcmNoV2l0aEdvb2dsZUZyb21NZW51
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tOgorICAgICAgICAo
LVtXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbiBzZXRTdWJBbmltYXRpb246XSk6CisKIDIwMjEtMDIt
MTAgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBVc2UgZXZlbnQgbG9v
cCB0byBzZXQgdGl0bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5k
ZXggM2NlZTk2ZmUzNmY4NGRiOTI0NGFhMDkwNWQxNmZmZjcwMTA1MzUzYS4uZDQ3MjkwN2Y2MzUz
M2U0ODZiOTQ1NDgxN2I5MzRmMmIyMmNiYzMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KQEAgLTIzNjEsMTYgKzIzNjEsMTQgQEAgLSAoTlNBcnJheSAqKWFycmF5
T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKiltYXJrZXJzIGF0dHJpYnV0ZWQ6KEJPT0wp
YXR0cmkKICAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbigmbm9kZSwgbWFrZUNv
bnRhaW5lck9mZnNldFBvc2l0aW9uKGl0LnJhbmdlKCkuc3RhcnQpKTsKIAogICAgICAgICAgICAg
ICAgIGlmICghbGlzdE1hcmtlclRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcgPSBbW05TTXV0YWJsZUF0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdOwotICAgICAgICAgICAgICAgICAgICBBWEF0dHJpYnV0
ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcsICZub2RlLCBsaXN0TWFya2VyVGV4dCk7Ci0g
ICAgICAgICAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6YXR0clN0cmluZ107Ci0gICAgICAg
ICAgICAgICAgICAgIFthdHRyU3RyaW5nIHJlbGVhc2VdOworICAgICAgICAgICAgICAgICAgICBh
dXRvIGF0dHJTdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdF0pOworICAgICAgICAgICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRU
ZXh0KGF0dHJTdHJpbmcuZ2V0KCksICZub2RlLCBsaXN0TWFya2VyVGV4dCk7CisgICAgICAgICAg
ICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6YXR0clN0cmluZy5nZXQoKV07CiAgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqYXR0
clN0cmluZyA9IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF07Ci0gICAg
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5nLCAmbm9k
ZSwgaXQudGV4dCgpLmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDphdHRyU3RyaW5nXTsKLSAgICAgICAgICAgICAg
ICBbYXR0clN0cmluZyByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICBhdXRvIGF0dHJTdHJpbmcg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0pOworICAg
ICAgICAgICAgICAgIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoYXR0clN0cmluZy5nZXQo
KSwgJm5vZGUsIGl0LnRleHQoKS5jcmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkp
OworICAgICAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6YXR0clN0cmluZy5nZXQoKV07CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBOb2RlKiByZXBsYWNl
ZE5vZGUgPSBpdC5ub2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCAwNmVlYzZhOWI2Yzk2MzYwMmM5NTNiMmRi
ZTEyNDU1ZmQxYWJhNWRjLi5kYzRjZDEzMDkzMDFlMmM2OTY1MzBhNjU2ZjA2MjUyOTk5OWIyY2Ri
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENh
Y2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0
Q2FjaGVNYWMubW0KQEAgLTQyMyw3ICs0MjMsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RU
ZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdAog
ICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVEaWN0aW9u
YXJ5ICp1c2VySW5mbyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBh
Y2l0eTo1XTsKKyAgICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25h
cnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NV0pOwogICAgIGlmIChtX2lzU3luY2hyb25pemlu
Z1NlbGVjdGlvbikKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpAWUVTIGZvcktleTpOU0Fj
Y2Vzc2liaWxpdHlUZXh0U3RhdGVTeW5jS2V5XTsKICAgICBpZiAoaW50ZW50LnR5cGUgIT0gQVhU
ZXh0U3RhdGVDaGFuZ2VUeXBlVW5rbm93bikgewpAQCAtNDYyLDEyICs0NjIsMTAgQEAgdm9pZCBB
WE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhD
b3JlT2JqZWN0KiBvYmplY3QKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDp3cmFwcGVyIGZv
cktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlRWxlbWVudF07CiAKICAgICBpZiAoYXV0byBy
b290ID0gcm9vdFdlYkFyZWEoKSkgewotICAgICAgICBBWFBvc3ROb3RpZmljYXRpb25XaXRoVXNl
ckluZm8ocm9vdFdlYkFyZWEoKS0+d3JhcHBlcigpLCBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRl
eHRDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mbyk7CisgICAgICAgIEFYUG9zdE5vdGlmaWNh
dGlvbldpdGhVc2VySW5mbyhyb290V2ViQXJlYSgpLT53cmFwcGVyKCksIE5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkVGV4dENoYW5nZWROb3RpZmljYXRpb24sIHVzZXJJbmZvLmdldCgpKTsKICAgICAg
ICAgaWYgKHJvb3QtPndyYXBwZXIoKSAhPSBvYmplY3QtPndyYXBwZXIoKSkKLSAgICAgICAgICAg
IEFYUG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhvYmplY3QtPndyYXBwZXIoKSwgTlNBY2Nl
c3NpYmlsaXR5U2VsZWN0ZWRUZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbiwgdXNlckluZm8pOworICAg
ICAgICAgICAgQVhQb3N0Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKG9iamVjdC0+d3JhcHBlcigp
LCBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5m
by5nZXQoKSk7CiAgICAgfQotCi0gICAgW3VzZXJJbmZvIHJlbGVhc2VdOwogfQogCiBzdGF0aWMg
dm9pZCBhZGRUZXh0TWFya2VyRm9yKE5TTXV0YWJsZURpY3Rpb25hcnkqIGNoYW5nZSwgQVhDb3Jl
T2JqZWN0JiBvYmplY3QsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCkBAIC01MTIs
NyArNTEwLDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCoKIAogc3RhdGljIHZvaWQgcG9zdFVz
ZXJJbmZvRm9yQ2hhbmdlcyhBWENvcmVPYmplY3QmIHJvb3RXZWJBcmVhLCBBWENvcmVPYmplY3Qm
IG9iamVjdCwgTlNNdXRhYmxlQXJyYXkqIGNoYW5nZXMpCiB7Ci0gICAgTlNNdXRhYmxlRGljdGlv
bmFyeSAqdXNlckluZm8gPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2Fw
YWNpdHk6NF07CisgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjRdKTsKICAgICBbdXNlckluZm8gc2V0T2JqZWN0
OkAocGxhdGZvcm1DaGFuZ2VUeXBlRm9yV2ViQ29yZUNoYW5nZVR5cGUoQVhUZXh0U3RhdGVDaGFu
Z2VUeXBlRWRpdCkpIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0U3RhdGVDaGFuZ2VUeXBlS2V5
XTsKICAgICBpZiAoY2hhbmdlcy5jb3VudCkKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpj
aGFuZ2VzIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVzXTsKQEAgLTUyMCwx
MSArNTE4LDkgQEAgc3RhdGljIHZvaWQgcG9zdFVzZXJJbmZvRm9yQ2hhbmdlcyhBWENvcmVPYmpl
Y3QmIHJvb3RXZWJBcmVhLCBBWENvcmVPYmplY3QmIG9iamUKICAgICBpZiAoaWQgd3JhcHBlciA9
IG9iamVjdC53cmFwcGVyKCkpCiAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6d3JhcHBlciBm
b3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dENoYW5nZUVsZW1lbnRdOwogCi0gICAgQVhQb3N0Tm90
aWZpY2F0aW9uV2l0aFVzZXJJbmZvKHJvb3RXZWJBcmVhLndyYXBwZXIoKSwgTlNBY2Nlc3NpYmls
aXR5VmFsdWVDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mbyk7CisgICAgQVhQb3N0Tm90aWZp
Y2F0aW9uV2l0aFVzZXJJbmZvKHJvb3RXZWJBcmVhLndyYXBwZXIoKSwgTlNBY2Nlc3NpYmlsaXR5
VmFsdWVDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mby5nZXQoKSk7CiAgICAgaWYgKHJvb3RX
ZWJBcmVhLndyYXBwZXIoKSAhPSBvYmplY3Qud3JhcHBlcigpKQotICAgICAgICBBWFBvc3ROb3Rp
ZmljYXRpb25XaXRoVXNlckluZm8ob2JqZWN0LndyYXBwZXIoKSwgTlNBY2Nlc3NpYmlsaXR5VmFs
dWVDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mbyk7Ci0KLSAgICBbdXNlckluZm8gcmVsZWFz
ZV07CisgICAgICAgIEFYUG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhvYmplY3Qud3JhcHBl
cigpLCBOU0FjY2Vzc2liaWxpdHlWYWx1ZUNoYW5nZWROb3RpZmljYXRpb24sIHVzZXJJbmZvLmdl
dCgpKTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZv
cm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYVGV4dEVkaXRUeXBlIGRlbGV0
aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBkZWxldGVkVGV4dCwgQVhUZXh0RWRpdFR5cGUgaW5zZXJ0
aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBpbnNlcnRlZFRleHQsIGNvbnN0IFZpc2libGVQb3NpdGlv
biYgcG9zaXRpb24pCkBAIC01MzUsMTUgKzUzMSwxNCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBv
c3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVj
dAogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVBcnJh
eSAqY2hhbmdlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml07
CisgICAgYXV0byBjaGFuZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OjJdKTsKICAgICBpZiAoTlNEaWN0aW9uYXJ5ICpjaGFuZ2UgPSB0ZXh0UmVw
bGFjZW1lbnRDaGFuZ2VEaWN0aW9uYXJ5KCpvYmplY3QsIGRlbGV0aW9uVHlwZSwgZGVsZXRlZFRl
eHQsIHBvc2l0aW9uKSkKICAgICAgICAgW2NoYW5nZXMgYWRkT2JqZWN0OmNoYW5nZV07CiAgICAg
aWYgKE5TRGljdGlvbmFyeSAqY2hhbmdlID0gdGV4dFJlcGxhY2VtZW50Q2hhbmdlRGljdGlvbmFy
eSgqb2JqZWN0LCBpbnNlcnRpb25UeXBlLCBpbnNlcnRlZFRleHQsIHBvc2l0aW9uKSkKICAgICAg
ICAgW2NoYW5nZXMgYWRkT2JqZWN0OmNoYW5nZV07CiAKICAgICBpZiAoYXV0byogcm9vdCA9IHJv
b3RXZWJBcmVhKCkpCi0gICAgICAgIHBvc3RVc2VySW5mb0ZvckNoYW5nZXMoKnJvb3QsICpvYmpl
Y3QsIGNoYW5nZXMpOwotICAgIFtjaGFuZ2VzIHJlbGVhc2VdOworICAgICAgICBwb3N0VXNlcklu
Zm9Gb3JDaGFuZ2VzKCpyb290LCAqb2JqZWN0LCBjaGFuZ2VzLmdldCgpKTsKIH0KIAogdm9pZCBB
WE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb25Gb3JU
ZXh0Q29udHJvbChBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBkZWxldGVkVGV4
dCwgY29uc3QgU3RyaW5nJiBpbnNlcnRlZFRleHQsIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
JiB0ZXh0Q29udHJvbCkKQEAgLTU1NCwxNSArNTQ5LDE0IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woQVhD
b3JlCiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TTXV0YWJsZUFy
cmF5ICpjaGFuZ2VzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eToy
XTsKKyAgICBhdXRvIGNoYW5nZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6Ml0pOwogICAgIGlmIChOU0RpY3Rpb25hcnkgKmNoYW5nZSA9IHRleHRS
ZXBsYWNlbWVudENoYW5nZURpY3Rpb25hcnkoKm9iamVjdCwgQVhUZXh0RWRpdFR5cGVEZWxldGUs
IGRlbGV0ZWRUZXh0LCB0ZXh0Q29udHJvbCkpCiAgICAgICAgIFtjaGFuZ2VzIGFkZE9iamVjdDpj
aGFuZ2VdOwogICAgIGlmIChOU0RpY3Rpb25hcnkgKmNoYW5nZSA9IHRleHRSZXBsYWNlbWVudENo
YW5nZURpY3Rpb25hcnkoKm9iamVjdCwgQVhUZXh0RWRpdFR5cGVJbnNlcnQsIGluc2VydGVkVGV4
dCwgdGV4dENvbnRyb2wpKQogICAgICAgICBbY2hhbmdlcyBhZGRPYmplY3Q6Y2hhbmdlXTsKIAog
ICAgIGlmIChhdXRvKiByb290ID0gcm9vdFdlYkFyZWEoKSkKLSAgICAgICAgcG9zdFVzZXJJbmZv
Rm9yQ2hhbmdlcygqcm9vdCwgKm9iamVjdCwgY2hhbmdlcyk7Ci0gICAgW2NoYW5nZXMgcmVsZWFz
ZV07CisgICAgICAgIHBvc3RVc2VySW5mb0ZvckNoYW5nZXMoKnJvb3QsICpvYmplY3QsIGNoYW5n
ZXMuZ2V0KCkpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxh
dGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogYXhGcmFtZU9iamVjdCwgQVhM
b2FkaW5nRXZlbnQgbG9hZGluZ0V2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQppbmRleCAyZjdmNzJiYWFlM2RkMTg4NTJmOGQ3ZDVjMWEyZGU4OGI0ZjVhZjA2Li5l
ZGY0NTc0ZDIxMzAxMTZiNGYyMGFhNjRjMzE4MDk5Mzk4NDI1MDg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMTMyMSw3ICsxMzIxLDYgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgc3RhdGljIE5TQXJyYXkqIGJ1dHRvbkF0
dHJzID0gbmlsOwogICAgIHN0YXRpYyBOU0FycmF5KiBzY3JvbGxWaWV3QXR0cnMgPSBuaWw7CiAg
ICAgc3RhdGljIE5TQXJyYXkqIGluY3JlbWVudG9yQXR0cnMgPSBuaWw7Ci0gICAgTlNNdXRhYmxl
QXJyYXkqIHRlbXBBcnJheTsKICAgICBpZiAoYXR0cmlidXRlcyA9PSBuaWwpIHsKICAgICAgICAg
YXR0cmlidXRlcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOiBOU0FjY2Vzc2li
aWxpdHlSb2xlQXR0cmlidXRlLAogICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0
dHJpYnV0ZSwKQEAgLTEzNjQsMTUgKzEzNjMsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwogICAgIH0KICAg
ICBpZiAoYW5jaG9yQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107CisgICAgICAgIGF1dG8g
dGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5
OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5VVJMQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5TGlua1JlbGF0aW9uc2hpcFR5cGVBdHRyaWJ1dGVdOwotICAgICAgICBh
bmNob3JBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwot
ICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBhbmNob3JBdHRycyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KICAgICBp
ZiAod2ViQXJlYUF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRl
bXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTph
dHRyaWJ1dGVzXSk7CiAgICAgICAgIC8vIFdlYkFyZWFzIHNob3VsZCBub3QgZXhwb3NlIEFYU3Vi
cm9sZS4KICAgICAgICAgW3RlbXBBcnJheSByZW1vdmVPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U3Vi
cm9sZUF0dHJpYnV0ZV07CiAgICAgICAgIC8vIFdlYkFyZWFzIHNob3VsZCBub3QgZXhwb3NlIGFu
Y2VzdG9yIGF0dHJpYnV0ZXMKQEAgLTEzODcsMTEgKzEzODUsMTAgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNw
YXRjaEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVdlYlNlc3Npb25JREF0dHJpYnV0ZV07Ci0gICAgICAgIHdlYkFyZWFBdHRycyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5
IHJlbGVhc2VdOworICAgICAgICB3ZWJBcmVhQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKHRleHRBdHRycyA9PSBu
aWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlOdW1iZXJPZkNoYXJhY3RlcnNB
dHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlT
ZWxlY3RlZFRleHRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZV07CkBAIC0xNDAzLDU3ICsxNDAw
LDUxIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZh
bHVlQXV0b2ZpbGxlZEF0dHJpYnV0ZV07Ci0gICAgICAgIHRleHRBdHRycyA9IFtbTlNBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVh
c2VdOworICAgICAgICB0ZXh0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKGxpc3RBdHRycyA9PSBuaWwpIHsKLSAg
ICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTph
dHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxk
cmVuQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIGxpc3RBdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBb
dGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBsaXN0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKGxpc3RCb3hB
dHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTpsaXN0QXR0cnNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpsaXN0QXR0cnNdKTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UmVx
dWlyZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICBsaXN0Qm94QXR0cnMg
PSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3Rl
bXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgbGlzdEJveEF0dHJzID0gW1tOU0FycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmIChyYW5nZUF0
dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF4
VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07
Ci0gICAgICAgIHJhbmdlQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVt
cEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgcmFuZ2VBdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAg
IH0KICAgICBpZiAobWVudUJhckF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc107Cisg
ICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxkcmVuQXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVV
SUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0gICAgICAgIG1lbnVCYXJBdHRycyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFy
cmF5IHJlbGVhc2VdOworICAgICAgICBtZW51QmFyQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKG1lbnVBdHRycyA9
PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTpjb21tb25NZW51QXR0cnNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0
cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0
ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1
dGVdOwotICAgICAgICBtZW51QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgbWVudUF0
dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAg
ICAgfQogICAgIGlmIChtZW51SXRlbUF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc107
CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc10pOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SGVscEF0dHJpYnV0ZV07CkBA
IC0xNDY3LDggKzE0NTgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhNZW51SXRlbVByaW1h
cnlVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlTZXJ2ZXNBc1RpdGxlRm9yVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGVdOwot
ICAgICAgICBtZW51SXRlbUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRl
bXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIG1lbnVJdGVt
QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsK
ICAgICB9CiAgICAgaWYgKG1lbnVCdXR0b25BdHRycyA9PSBuaWwpIHsKICAgICAgICAgbWVudUJ1
dHRvbkF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNBY2Nlc3NpYmls
aXR5Um9sZUF0dHJpYnV0ZSwKQEAgLTE0ODMsNDIgKzE0NzMsMzggQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vz
c2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwgbmlsXTsKICAgICB9CiAgICAgaWYgKGNvbnRyb2xB
dHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10p
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxl
bWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07Ci0gICAgICAgIGNvbnRyb2xB
dHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAg
ICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBjb250cm9sQXR0cnMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKGlu
Y3JlbWVudG9yQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107CisgICAgICAgIGF1dG8gdGVt
cEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0
dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
SW5jcmVtZW50QnV0dG9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5RGVjcmVtZW50QnV0dG9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF4
VmFsdWVBdHRyaWJ1dGVdOwotICAgICAgICBpbmNyZW1lbnRvckF0dHJzID0gW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFz
ZV07CisgICAgICAgIGluY3JlbWVudG9yQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKGJ1dHRvbkF0dHJzID09IG5p
bCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAg
IC8vIEJ1dHRvbnMgc2hvdWxkIG5vdCBleHBvc2UgQVhWYWx1ZS4KICAgICAgICAgW3RlbXBBcnJh
eSByZW1vdmVPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tl
eUF0dHJpYnV0ZV07Ci0gICAgICAgIGJ1dHRvbkF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAg
ICAgIGJ1dHRvbkF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJh
eS5nZXQoKV07CiAgICAgfQogICAgIGlmIChjb21ib0JveEF0dHJzID09IG5pbCkgewotICAgICAg
ICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbnRy
b2xBdHRyc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbnRyb2xBdHRyc10pOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlFeHBhbmRlZEF0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRl
XTsKLSAgICAgICAgY29tYm9Cb3hBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBjb21i
b0JveEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQo
KV07CiAgICAgfQogICAgIGlmICh0YWJsZUF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJy
YXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwor
ICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdOwpAQCAtMTUz
MSw5MSArMTUxNyw4MCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93Q291bnRBdHRyaWJ1
dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBQ29s
dW1uQ291bnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlBUklBUm93Q291bnRBdHRyaWJ1dGVdOwotICAgICAgICB0YWJsZUF0dHJzID0gW1tO
U0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJy
YXkgcmVsZWFzZV07CisgICAgICAgIHRhYmxlQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKHRhYmxlUm93QXR0cnMg
PT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6YXR0cmlidXRlc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVd
OwotICAgICAgICB0YWJsZVJvd0F0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5
OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIHRhYmxl
Um93QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgp
XTsKICAgICB9CiAgICAgaWYgKHRhYmxlQ29sQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBB
cnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107
CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdOwot
ICAgICAgICB0YWJsZUNvbEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRl
bXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIHRhYmxlQ29s
QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsK
ICAgICB9CiAgICAgaWYgKHRhYmxlQ2VsbEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJy
YXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwor
ICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVJvd0luZGV4UmFuZ2VBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5JbmRleFJhbmdlQXR0cmlidXRlXTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSGVhZGVy
VUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVJvd0hlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBQ29sdW1uSW5kZXhBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBUm93SW5kZXhB
dHRyaWJ1dGVdOwotICAgICAgICB0YWJsZUNlbGxBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAg
ICAgICB0YWJsZUNlbGxBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1w
QXJyYXkuZ2V0KCldOwogICAgIH0KICAgICBpZiAoZ3JvdXBBdHRycyA9PSBuaWwpIHsKLSAgICAg
ICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAg
ICAgIGdyb3VwQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5
XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgZ3JvdXBBdHRycyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KICAg
ICBpZiAoaW5wdXRJbWFnZUF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmJ1dHRvbkF0dHJzXTsKKyAgICAgICAg
YXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6YnV0dG9uQXR0cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKLSAgICAgICAgaW5wdXRJbWFnZUF0dHJzID0gW1tOU0Fy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkg
cmVsZWFzZV07CisgICAgICAgIGlucHV0SW1hZ2VBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KICAgICBpZiAocGFzc3dvcmRGaWVs
ZEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVz
XSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlF
bGVtZW50QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXV0b2ZpbGxlZEF0dHJp
YnV0ZV07Ci0gICAgICAgIHBhc3N3b3JkRmllbGRBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAg
ICAgICBwYXNzd29yZEZpZWxkQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKHRhYkxpc3RBdHRycyA9PSBuaWwpIHsK
LSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0
dHJpYnV0ZV07Ci0gICAgICAgIHRhYkxpc3RBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAg
ICB0YWJMaXN0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5
LmdldCgpXTsKICAgICB9CiAgICAgaWYgKG91dGxpbmVBdHRycyA9PSBuaWwpIHsKLSAgICAgICAg
dGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1
dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
QXR0cmlidXRlXTsKLSAgICAgICAgb3V0bGluZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAg
ICAgIG91dGxpbmVBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJy
YXkuZ2V0KCldOwogICAgIH0KICAgICBpZiAob3V0bGluZVJvd0F0dHJzID09IG5pbCkgewotICAg
ICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRh
YmxlUm93QXR0cnNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0YWJsZVJvd0F0dHJzXSk7CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NpbmdBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRCeVJv
d0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eURpc2Nsb3N1cmVMZXZlbEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFy
cmF5IHJlbW92ZU9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV07Ci0gICAgICAg
IG91dGxpbmVSb3dBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJy
YXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBvdXRsaW5lUm93QXR0
cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAg
ICB9CiAgICAgaWYgKHNjcm9sbFZpZXdBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5
ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKKyAg
ICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlDb250ZW50c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUhvcml6b250YWxTY3JvbGxCYXJBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWZXJ0aWNhbFNjcm9sbEJh
ckF0dHJpYnV0ZV07Ci0gICAgICAgIHNjcm9sbFZpZXdBdHRycyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwor
ICAgICAgICBzY3JvbGxWaWV3QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAKICAgICBOU0FycmF5ICpvYmplY3RBdHRyaWJ1dGVz
ID0gYXR0cmlidXRlczsKQEAgLTMxMjgsNyArMzEwMyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmICh0ZXh0UGFyYW1BdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgTlNNdXRhYmxlQXJyYXkqIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6cGFyYW1BdHRyc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnBhcmFtQXR0
cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhMaW5lRm9y
SW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6KE5TU3RyaW5nKilrQVhSYW5nZUZvckxpbmVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhTdHJpbmdGb3JSYW5nZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwpAQCAtMzEzOCwyMiArMzExMywxOSBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
KE5TU3RyaW5nKilrQVhSVEZGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWEF0dHJpYnV0ZWRTdHJpbmdGb3JS
YW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDooTlNTdHJpbmcqKWtBWFN0eWxlUmFuZ2VGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVd
OwotICAgICAgICB0ZXh0UGFyYW1BdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICB0ZXh0
UGFyYW1BdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0
KCldOwogICAgIH0KICAgICBpZiAodGFibGVQYXJhbUF0dHJzID09IG5pbCkgewotICAgICAgICBO
U011dGFibGVBcnJheSogdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTpwYXJhbUF0dHJzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6cGFyYW1BdHRyc10pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDZWxsRm9yQ29sdW1uQW5kUm93
UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07Ci0gICAgICAgIHRhYmxlUGFyYW1BdHRycyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5
IHJlbGVhc2VdOworICAgICAgICB0YWJsZVBhcmFtQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKCF3ZWJBcmVhUGFy
YW1BdHRycykgewotICAgICAgICBOU011dGFibGVBcnJheSogdGVtcEFycmF5ID0gW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpwYXJhbUF0dHJzXTsKKyAgICAgICAgYXV0byB0
ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
cGFyYW1BdHRyc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklzVmFsaWRQYXJhbWV0
ZXJpemVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5SW5kZXhGb3JUZXh0TWFya2VyUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07Ci0gICAgICAg
IHdlYkFyZWFQYXJhbUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBB
cnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIHdlYkFyZWFQYXJh
bUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07
CiAgICAgfQogCiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KaW5kZXggZGViODA5NzI1YmNiMDVkY2E0ZTRh
YTQ2NGY4OGRhMzA3YTIxODdhOC4uYzU5MGQ0OTMwNzlmYmU3ZDYzMWY0YjA1OTVkNmI0NjJjNjUx
OTU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCkBAIC0yNDUsOSArMjQ1
LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICBpbnRlcnAuc2V0
R2xvYmFsT2JqZWN0KGdsb2JhbCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0ID0gaW50ZXJwLmdsb2JhbE9iamVjdCgpOwogICAgICAgICAKLSAgICAgICAgTXlG
aXJzdEludGVyZmFjZSAqbXlJbnRlcmZhY2UgPSBbW015Rmlyc3RJbnRlcmZhY2UgYWxsb2NdIGlu
aXRdOworICAgICAgICBhdXRvIG15SW50ZXJmYWNlID0gYWRvcHROUyhbW015Rmlyc3RJbnRlcmZh
Y2UgYWxsb2NdIGluaXRdKTsKICAgICAgICAgCi0gICAgICAgIGdsb2JhbC5wdXQobGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhsZXhpY2FsR2xvYmFsT2JqZWN0LCAi
bXlJbnRlcmZhY2UiKSwgSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoSW5zdGFuY2U6Ok9i
amVjdGl2ZUNMYW5ndWFnZSwgKHZvaWQgKilteUludGVyZmFjZSkpOworICAgICAgICBnbG9iYWwu
cHV0KGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEds
b2JhbE9iamVjdCwgIm15SW50ZXJmYWNlIiksIEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0
KEluc3RhbmNlOjpPYmplY3RpdmVDTGFuZ3VhZ2UsICh2b2lkICopbXlJbnRlcmZhY2UuZ2V0KCkp
KTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CiAg
ICAgICAgICAgICBjb25zdCBjaGFyICpjb2RlID0gcmVhZEphdmFTY3JpcHRGcm9tRmlsZShhcmd2
W2ldKTsKQEAgLTI3OCw3ICsyNzgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFtteUludGVyZmFj
ZSByZWxlYXNlXTsKKyAgICAgICAgbXlJbnRlcmZhY2UgPSBuaWw7CiAgICAgICAgIFtwb29sIGRy
YWluXTsKICAgICB9IC8vIGVuZCBibG9jaywgc28gdGhhdCBJbnRlcnByZXRlciBhbmQgZ2xvYmFs
IGdldCBkZWxldGVkCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KaW5kZXggNWE4YjRmZjRhMjBiNGI1ODU4MGM0MWM1OWZmMWU1YzUwOGJkY2Ux
MS4uNzJkYTExYTc1MWU4ZjlkZDNhNDQyZDU3YmQ5MWMyYjE5YzUzMTNjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjkzLDE5ICsyOTMs
MTkgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFJldGFpblB0cjxDRlR5cGVSZWY+LCBSZWZQdHI8
RWxlbWVudD4+IG1fdGV4dFRhYmxlRm9vdGVyczsKICAgICBIYXNoTWFwPFJlZlB0cjxFbGVtZW50
PiwgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4+IG1fYWdncmVnYXRlZEF0dHJpYnV0ZXNGb3JFbGVt
ZW50czsKIAotICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKl9hdHRyU3RyOwotICAgIE5T
TXV0YWJsZURpY3Rpb25hcnkgKl9kb2N1bWVudEF0dHJzOworICAgIFJldGFpblB0cjxOU011dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nPiBfYXR0clN0cjsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGlj
dGlvbmFyeT4gX2RvY3VtZW50QXR0cnM7CiAgICAgTlNVUkwgKl9iYXNlVVJMOwotICAgIE5TTXV0
YWJsZUFycmF5ICpfdGV4dExpc3RzOwotICAgIE5TTXV0YWJsZUFycmF5ICpfdGV4dEJsb2NrczsK
LSAgICBOU011dGFibGVBcnJheSAqX3RleHRUYWJsZXM7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKl90
ZXh0VGFibGVTcGFjaW5nczsKLSAgICBOU011dGFibGVBcnJheSAqX3RleHRUYWJsZVBhZGRpbmdz
OwotICAgIE5TTXV0YWJsZUFycmF5ICpfdGV4dFRhYmxlUm93czsKLSAgICBOU011dGFibGVBcnJh
eSAqX3RleHRUYWJsZVJvd0FycmF5czsKLSAgICBOU011dGFibGVBcnJheSAqX3RleHRUYWJsZVJv
d0JhY2tncm91bmRDb2xvcnM7Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX2ZvbnRDYWNoZTsK
LSAgICBOU011dGFibGVBcnJheSAqX3dyaXRpbmdEaXJlY3Rpb25BcnJheTsKKyAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IF90ZXh0TGlzdHM7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBfdGV4dEJsb2NrczsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF90ZXh0VGFi
bGVzOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX3RleHRUYWJsZVNwYWNpbmdzOwor
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX3RleHRUYWJsZVBhZGRpbmdzOworICAgIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4gX3RleHRUYWJsZVJvd3M7CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiBfdGV4dFRhYmxlUm93QXJyYXlzOworICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gX3RleHRUYWJsZVJvd0JhY2tncm91bmRDb2xvcnM7CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+IF9mb250Q2FjaGU7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBfd3JpdGluZ0RpcmVjdGlvbkFycmF5OwogICAgIAogICAgIENHRmxvYXQgX2RlZmF1bHRU
YWJJbnRlcnZhbDsKICAgICBOU1VJbnRlZ2VyIF9kb21SYW5nZVN0YXJ0SW5kZXg7CkBAIC0zNjAs
MTkgKzM2MCwxOSBAQCBIVE1MQ29udmVydGVyOjpIVE1MQ29udmVydGVyKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSkKICAgICA6IG1fc3RhcnQobWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKHJh
bmdlLnN0YXJ0KSkKICAgICAsIG1fZW5kKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihyYW5n
ZS5lbmQpKQogewotICAgIF9hdHRyU3RyID0gW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0XTsKLSAgICBfZG9jdW1lbnRBdHRycyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF07CisgICAgX2F0dHJTdHIgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdF0pOworICAgIF9kb2N1bWVudEF0dHJzID0gYWRvcHROUyhbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBfYmFzZVVSTCA9IG5pbDsKLSAg
ICBfdGV4dExpc3RzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgX3RleHRC
bG9ja3MgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICBfdGV4dFRhYmxlcyA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIF90ZXh0VGFibGVTcGFjaW5ncyA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIF90ZXh0VGFibGVQYWRkaW5ncyA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIF90ZXh0VGFibGVSb3dzID0gW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgX3RleHRUYWJsZVJvd0FycmF5cyA9IFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIF90ZXh0VGFibGVSb3dCYWNrZ3JvdW5k
Q29sb3JzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgX2ZvbnRDYWNoZSA9
IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgX3dyaXRpbmdEaXJlY3Rp
b25BcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIF90ZXh0TGlzdHMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBfdGV4dEJsb2Nr
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIF90ZXh0VGFi
bGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgX3RleHRU
YWJsZVNwYWNpbmdzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Cisg
ICAgX3RleHRUYWJsZVBhZGRpbmdzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XSk7CisgICAgX3RleHRUYWJsZVJvd3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKKyAgICBfdGV4dFRhYmxlUm93QXJyYXlzID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgX3RleHRUYWJsZVJvd0JhY2tncm91bmRDb2xvcnMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBfZm9udENhY2hl
ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBfd3Jp
dGluZ0RpcmVjdGlvbkFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7CiAKICAgICBfZGVmYXVsdFRhYkludGVydmFsID0gMzY7CiAgICAgX2RvbVJhbmdlU3RhcnRJ
bmRleCA9IDA7CkBAIC0zODUsMjEgKzM4NSw3IEBAIEhUTUxDb252ZXJ0ZXI6OkhUTUxDb252ZXJ0
ZXIoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogICAgIF9jYWNoZXMgPSBtYWtlVW5pcXVlPEhU
TUxDb252ZXJ0ZXJDYWNoZXM+KCk7CiB9CiAKLUhUTUxDb252ZXJ0ZXI6On5IVE1MQ29udmVydGVy
KCkKLXsKLSAgICBbX2F0dHJTdHIgcmVsZWFzZV07Ci0gICAgW19kb2N1bWVudEF0dHJzIHJlbGVh
c2VdOwotICAgIFtfdGV4dExpc3RzIHJlbGVhc2VdOwotICAgIFtfdGV4dEJsb2NrcyByZWxlYXNl
XTsKLSAgICBbX3RleHRUYWJsZXMgcmVsZWFzZV07Ci0gICAgW190ZXh0VGFibGVTcGFjaW5ncyBy
ZWxlYXNlXTsKLSAgICBbX3RleHRUYWJsZVBhZGRpbmdzIHJlbGVhc2VdOwotICAgIFtfdGV4dFRh
YmxlUm93cyByZWxlYXNlXTsKLSAgICBbX3RleHRUYWJsZVJvd0FycmF5cyByZWxlYXNlXTsKLSAg
ICBbX3RleHRUYWJsZVJvd0JhY2tncm91bmRDb2xvcnMgcmVsZWFzZV07Ci0gICAgW19mb250Q2Fj
aGUgcmVsZWFzZV07Ci0gICAgW193cml0aW5nRGlyZWN0aW9uQXJyYXkgcmVsZWFzZV07Ci19CitI
VE1MQ29udmVydGVyOjp+SFRNTENvbnZlcnRlcigpID0gZGVmYXVsdDsKIAogQXR0cmlidXRlZFN0
cmluZyBIVE1MQ29udmVydGVyOjpjb252ZXJ0KCkKIHsKQEAgLTk3OCw3ICs5NjQsNyBAQCBOU0Rp
Y3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxl
bWVudCYgZWxlbWVudCkKICAgICBpZiAoIWZvbnQpIHsKICAgICAgICAgU3RyaW5nIGZvbnROYW1l
ID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlGb250
RmFtaWx5KTsKICAgICAgICAgaWYgKGZvbnROYW1lLmxlbmd0aCgpKQotICAgICAgICAgICAgZm9u
dCA9IF9mb250Rm9yTmFtZUFuZFNpemUoZm9udE5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2Uo
KSwgZm9udFNpemUsIF9mb250Q2FjaGUpOworICAgICAgICAgICAgZm9udCA9IF9mb250Rm9yTmFt
ZUFuZFNpemUoZm9udE5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgZm9udFNpemUsIF9m
b250Q2FjaGUuZ2V0KCkpOwogICAgICAgICBpZiAoIWZvbnQpCiAgICAgICAgICAgICBmb250ID0g
W1BsYXRmb3JtRm9udENsYXNzIGZvbnRXaXRoTmFtZTpAIlRpbWVzIiBzaXplOmZvbnRTaXplXTsK
IApAQCAtMTA4NCwxMSArMTA3MCwxMSBAQCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNv
bXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAogICAgIEVsZW1l
bnQqIGJsb2NrRWxlbWVudCA9IF9ibG9ja0xldmVsRWxlbWVudEZvck5vZGUoJmVsZW1lbnQpOwog
ICAgIGlmICgmZWxlbWVudCAhPSBibG9ja0VsZW1lbnQgJiYgW193cml0aW5nRGlyZWN0aW9uQXJy
YXkgY291bnRdID4gMCkKLSAgICAgICAgW2F0dHJzIHNldE9iamVjdDpbTlNBcnJheSBhcnJheVdp
dGhBcnJheTpfd3JpdGluZ0RpcmVjdGlvbkFycmF5XSBmb3JLZXk6TlNXcml0aW5nRGlyZWN0aW9u
QXR0cmlidXRlTmFtZV07CisgICAgICAgIFthdHRycyBzZXRPYmplY3Q6W05TQXJyYXkgYXJyYXlX
aXRoQXJyYXk6X3dyaXRpbmdEaXJlY3Rpb25BcnJheS5nZXQoKV0gZm9yS2V5Ok5TV3JpdGluZ0Rp
cmVjdGlvbkF0dHJpYnV0ZU5hbWVdOwogCiAgICAgaWYgKGJsb2NrRWxlbWVudCkgewogICAgICAg
ICBFbGVtZW50JiBjb3JlQmxvY2tFbGVtZW50ID0gKmJsb2NrRWxlbWVudDsKLSAgICAgICAgTlNN
dXRhYmxlUGFyYWdyYXBoU3R5bGUgKnBhcmFncmFwaFN0eWxlID0gW2RlZmF1bHRQYXJhZ3JhcGhT
dHlsZSgpIG11dGFibGVDb3B5XTsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVBhcmFncmFw
aFN0eWxlPiBwYXJhZ3JhcGhTdHlsZSA9IGFkb3B0TlMoW2RlZmF1bHRQYXJhZ3JhcGhTdHlsZSgp
IG11dGFibGVDb3B5XSk7CiAgICAgICAgIHVuc2lnbmVkIGhlYWRpbmcgPSAwOwogICAgICAgICBp
ZiAoY29yZUJsb2NrRWxlbWVudC5oYXNUYWdOYW1lKGgxVGFnKSkKICAgICAgICAgICAgIGhlYWRp
bmcgPSAxOwpAQCAtMTE1MCwxMSArMTEzNiwxMCBAQCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0
ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICAg
ICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0UGFyYWdyYXBoU3BhY2luZzptYXJnaW5Cb3R0
b21dOwogICAgICAgICB9CiAgICAgICAgIGlmIChbX3RleHRMaXN0cyBjb3VudF0gPiAwKQotICAg
ICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldFRleHRMaXN0czpfdGV4dExpc3RzXTsKKyAgICAg
ICAgICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRUZXh0TGlzdHM6X3RleHRMaXN0cy5nZXQoKV07CiAg
ICAgICAgIGlmIChbX3RleHRCbG9ja3MgY291bnRdID4gMCkKLSAgICAgICAgICAgIFtwYXJhZ3Jh
cGhTdHlsZSBzZXRUZXh0QmxvY2tzOl90ZXh0QmxvY2tzXTsKLSAgICAgICAgW2F0dHJzIHNldE9i
amVjdDpwYXJhZ3JhcGhTdHlsZSBmb3JLZXk6TlNQYXJhZ3JhcGhTdHlsZUF0dHJpYnV0ZU5hbWVd
OwotICAgICAgICBbcGFyYWdyYXBoU3R5bGUgcmVsZWFzZV07CisgICAgICAgICAgICBbcGFyYWdy
YXBoU3R5bGUgc2V0VGV4dEJsb2NrczpfdGV4dEJsb2Nrcy5nZXQoKV07CisgICAgICAgIFthdHRy
cyBzZXRPYmplY3Q6cGFyYWdyYXBoU3R5bGUuZ2V0KCkgZm9yS2V5Ok5TUGFyYWdyYXBoU3R5bGVB
dHRyaWJ1dGVOYW1lXTsKICAgICB9CiAgICAgcmV0dXJuIGF0dHJzOwogfQpAQCAtMTkwOSw3ICsx
ODk0LDcgQEAgdm9pZCBIVE1MQ29udmVydGVyOjpfYWRkTWFya2Vyc1RvTGlzdChOU1RleHRMaXN0
ICpsaXN0LCBOU1JhbmdlIHJhbmdlKQogICAgIE5TRGljdGlvbmFyeSAqYXR0cnNUb0luc2VydCA9
IG5pbDsKICAgICBQbGF0Zm9ybUZvbnQgKmZvbnQ7CiAgICAgTlNQYXJhZ3JhcGhTdHlsZSAqcGFy
YWdyYXBoU3R5bGU7Ci0gICAgTlNNdXRhYmxlUGFyYWdyYXBoU3R5bGUgKm5ld1N0eWxlOworICAg
IFJldGFpblB0cjxOU011dGFibGVQYXJhZ3JhcGhTdHlsZT4gbmV3U3R5bGU7CiAgICAgTlNUZXh0
VGFiICp0YWIgPSBuaWw7CiAgICAgTlNUZXh0VGFiICp0YWJUb1JlbW92ZTsKICAgICBOU1Jhbmdl
IHBhcmFncmFwaFJhbmdlOwpAQCAtMTk0OCw3ICsxOTMzLDcgQEAgdm9pZCBIVE1MQ29udmVydGVy
OjpfYWRkTWFya2Vyc1RvTGlzdChOU1RleHRMaXN0ICpsaXN0LCBOU1JhbmdlIHJhbmdlKQogICAg
ICAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBoUmFuZ2UubG9jYXRpb24gPCBfZG9tUmFuZ2VT
dGFydEluZGV4KQogICAgICAgICAgICAgICAgICAgICAgICAgX2RvbVJhbmdlU3RhcnRJbmRleCAr
PSBpbnNlcnRMZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICBuZXdTdHlsZSA9IFtwYXJhZ3JhcGhTdHlsZSBtdXRhYmxlQ29weV07CisgICAgICAgICAgICAg
ICAgICAgIG5ld1N0eWxlID0gYWRvcHROUyhbcGFyYWdyYXBoU3R5bGUgbXV0YWJsZUNvcHldKTsK
ICAgICAgICAgICAgICAgICAgICAgbGlzdExvY2F0aW9uID0gKGxpc3RJbmRleCArIDEpICogMzY7
CiAgICAgICAgICAgICAgICAgICAgIG1hcmtlckxvY2F0aW9uID0gbGlzdExvY2F0aW9uIC0gMjU7
CiAgICAgICAgICAgICAgICAgICAgIFtuZXdTdHlsZSBzZXRGaXJzdExpbmVIZWFkSW5kZW50OjBd
OwpAQCAtMTk2NCwxNCArMTk0OSwxMCBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9hZGRNYXJrZXJz
VG9MaXN0KE5TVGV4dExpc3QgKmxpc3QsIE5TUmFuZ2UgcmFuZ2UpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgdGFiID0gW1tQbGF0Zm9ybU5TVGV4
dFRhYiBhbGxvY10gaW5pdFdpdGhUeXBlOk5TTGVmdFRhYlN0b3BUeXBlIGxvY2F0aW9uOm1hcmtl
ckxvY2F0aW9uXTsKLSAgICAgICAgICAgICAgICAgICAgW25ld1N0eWxlIGFkZFRhYlN0b3A6dGFi
XTsKLSAgICAgICAgICAgICAgICAgICAgW3RhYiByZWxlYXNlXTsKLSAgICAgICAgICAgICAgICAg
ICAgdGFiID0gW1tQbGF0Zm9ybU5TVGV4dFRhYiBhbGxvY10gaW5pdFdpdGhUZXh0QWxpZ25tZW50
Ok5TVGV4dEFsaWdubWVudE5hdHVyYWwgbG9jYXRpb246bGlzdExvY2F0aW9uIG9wdGlvbnM6QHsg
fV07Ci0gICAgICAgICAgICAgICAgICAgIFtuZXdTdHlsZSBhZGRUYWJTdG9wOnRhYl07Ci0gICAg
ICAgICAgICAgICAgICAgIFt0YWIgcmVsZWFzZV07Ci0gICAgICAgICAgICAgICAgICAgIFtfYXR0
clN0ciBhZGRBdHRyaWJ1dGU6TlNQYXJhZ3JhcGhTdHlsZUF0dHJpYnV0ZU5hbWUgdmFsdWU6bmV3
U3R5bGUgcmFuZ2U6cGFyYWdyYXBoUmFuZ2VdOwotICAgICAgICAgICAgICAgICAgICBbbmV3U3R5
bGUgcmVsZWFzZV07CisgICAgICAgICAgICAgICAgICAgIFtuZXdTdHlsZSBhZGRUYWJTdG9wOmFk
b3B0TlMoW1tQbGF0Zm9ybU5TVGV4dFRhYiBhbGxvY10gaW5pdFdpdGhUeXBlOk5TTGVmdFRhYlN0
b3BUeXBlIGxvY2F0aW9uOm1hcmtlckxvY2F0aW9uXSkuZ2V0KCldOworICAgICAgICAgICAgICAg
ICAgICBbbmV3U3R5bGUgYWRkVGFiU3RvcDphZG9wdE5TKFtbUGxhdGZvcm1OU1RleHRUYWIgYWxs
b2NdIGluaXRXaXRoVGV4dEFsaWdubWVudDpOU1RleHRBbGlnbm1lbnROYXR1cmFsIGxvY2F0aW9u
Omxpc3RMb2NhdGlvbiBvcHRpb25zOkB7IH1dKS5nZXQoKV07CisgICAgICAgICAgICAgICAgICAg
IFtfYXR0clN0ciBhZGRBdHRyaWJ1dGU6TlNQYXJhZ3JhcGhTdHlsZUF0dHJpYnV0ZU5hbWUgdmFs
dWU6bmV3U3R5bGUuZ2V0KCkgcmFuZ2U6cGFyYWdyYXBoUmFuZ2VdOworICAgICAgICAgICAgICAg
ICAgICBuZXdTdHlsZSA9IG5pbDsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIGlkeCA9IE5TTWF4UmFuZ2UocGFyYWdyYXBoUmFuZ2UpOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CkBAIC0yMzM4LDEyICsyMzE5LDggQEAgc3RhdGljIE5TRmlsZVdyYXBwZXIgKmZp
bGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOU1VSTCAqVVJMKQog
ICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAg
TlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxv
Y10gaW5pdFdpdGhVUkw6VVJMXTsKIAotICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJl
c3BvbnNlID0gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJl
cXVlc3Q6cmVxdWVzdF07Ci0gICAgW3JlcXVlc3QgcmVsZWFzZV07Ci0gICAgCisgICAgTlNDYWNo
ZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVzcG9uc2UgPSBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2Fj
aGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDphZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVz
dCBhbGxvY10gaW5pdFdpdGhVUkw6VVJMXSkuZ2V0KCldOwogICAgIGlmIChjYWNoZWRSZXNwb25z
ZSkgewogICAgICAgICBOU0ZpbGVXcmFwcGVyICp3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOltjYWNoZWRSZXNwb25zZSBkYXRhXV0g
YXV0b3JlbGVhc2VdOwogICAgICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpbW2Nh
Y2hlZFJlc3BvbnNlIHJlc3BvbnNlXSBzdWdnZXN0ZWRGaWxlbmFtZV1dOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9tYWMvSGlzdG9yeUl0ZW1NYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1hYy5tbQppbmRleCA3MDBkMWM1MGI2ZjUwY2M0
OWIzMWQ1MmYxYzZmMDczYjFhMmE4NTE0Li45NjdjMTVkMTE2Y2Q2ZmZmNjExYTU1NjdiZDIzMjU0
MWE5M2U1ZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L21hYy9IaXN0b3J5
SXRlbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1h
Yy5tbQpAQCAtMzcsOSArMzcsNyBAQCBpZCBIaXN0b3J5SXRlbTo6dmlld1N0YXRlKCkgY29uc3QK
IAogdm9pZCBIaXN0b3J5SXRlbTo6c2V0Vmlld1N0YXRlKGlkIHN0YXRlUExpc3QpCiB7Ci0gICAg
aWQgbmV3U3RhdGUgPSBbc3RhdGVQTGlzdCBjb3B5XTsKLSAgICBtX3ZpZXdTdGF0ZSA9IG5ld1N0
YXRlOwotICAgIFtuZXdTdGF0ZSByZWxlYXNlXTsKKyAgICBtX3ZpZXdTdGF0ZSA9IGFkb3B0TlMo
W3N0YXRlUExpc3QgY29weV0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCmluZGV4IDFhN2Q1MjBkZjI2YzRj
YTY1ODgyYWE1ZjNkYTNkY2E0ZDU4OTg0ZGQuLmU1NzA0MzEwZGE4NWZkZTQxYmMxMzM3OTIyYjI0
NTE5OWJlZmExMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFj
Lm1tCkBAIC0yNDQsMTggKzI0NCwxNiBAQCB1bnNpZ25lZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTWFjOjpleHBvc2VkVW5maWxsZWRBcmVhKCkgY29uc3QKIAogICAgIHdoaWxlICgh
bGF5ZXJRdWV1ZS5pc0VtcHR5KCkgJiYgdGlsZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIENBTGF5
ZXIqIGxheWVyID0gbGF5ZXJRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgTlNBcnJheSogc3Vi
bGF5ZXJzID0gW1tsYXllciBzdWJsYXllcnNdIGNvcHldOworICAgICAgICBhdXRvIHN1YmxheWVy
cyA9IGFkb3B0TlMoW1tsYXllciBzdWJsYXllcnNdIGNvcHldKTsKIAogICAgICAgICAvLyBJZiB0
aGlzIGxheWVyIGlzIHRoZSBwYXJlbnQgb2YgYSB0aWxlLCBpdCBpcyB0aGUgcGFyZW50IG9mIGFs
bCBvZiB0aGUgdGlsZXMgYW5kIG5vdGhpbmcgZWxzZS4KICAgICAgICAgaWYgKFtbW3N1YmxheWVy
cyBvYmplY3RBdEluZGV4OjBdIHZhbHVlRm9yS2V5OkAiaXNUaWxlIl0gYm9vbFZhbHVlXSkgewot
ICAgICAgICAgICAgZm9yIChDQUxheWVyKiBzdWJsYXllciBpbiBzdWJsYXllcnMpCisgICAgICAg
ICAgICBmb3IgKENBTGF5ZXIqIHN1YmxheWVyIGluIHN1YmxheWVycy5nZXQoKSkKICAgICAgICAg
ICAgICAgICB0aWxlcy5hcHBlbmQoc3VibGF5ZXIpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgZm9yIChDQUxheWVyKiBzdWJsYXllciBpbiBzdWJsYXllcnMpCisgICAgICAgICAgICBm
b3IgKENBTGF5ZXIqIHN1YmxheWVyIGluIHN1YmxheWVycy5nZXQoKSkKICAgICAgICAgICAgICAg
ICBsYXllclF1ZXVlLmFwcGVuZChzdWJsYXllcik7CiAgICAgICAgIH0KLQotICAgICAgICBbc3Vi
bGF5ZXJzIHJlbGVhc2VdOwogICAgIH0KIAogICAgIEZsb2F0UG9pbnQgY2xhbXBlZFNjcm9sbFBv
c2l0aW9uID0gY2xhbXBTY3JvbGxQb3NpdGlvbihjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5o
CmluZGV4IGMyYjM0NjAyMjhlYzlkM2RiZTljY2M5OTZmN2ZmMDFmYWM5ZGE2ZjEuLmQ0YTg2Mzhm
MTUxZDZjYzIwMDgzOTgzY2FkNjA4ZmZjZTcwM2ExOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikK
IAogI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NvcmVMb2NhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIGNvbnN0ZXhwciBmbG9h
dCBrTW90aW9uVXBkYXRlSW50ZXJ2YWwgPSAxLjBmIC8gNjAuMGY7CkBAIC0zNywxMSArMzgsMTEg
QEAgY2xhc3MgTW90aW9uTWFuYWdlckNsaWVudDsKIH0KIAogV0VCQ09SRV9FWFBPUlQgQGludGVy
ZmFjZSBXZWJDb3JlTW90aW9uTWFuYWdlciA6IE5TT2JqZWN0IHsKLSAgICBDTU1vdGlvbk1hbmFn
ZXIqIG1fbW90aW9uTWFuYWdlcjsKLSAgICBDTExvY2F0aW9uTWFuYWdlciogbV9sb2NhdGlvbk1h
bmFnZXI7CisgICAgUmV0YWluUHRyPENNTW90aW9uTWFuYWdlcj4gbV9tb3Rpb25NYW5hZ2VyOwor
ICAgIFJldGFpblB0cjxDTExvY2F0aW9uTWFuYWdlcj4gbV9sb2NhdGlvbk1hbmFnZXI7CiAgICAg
V2Vha0hhc2hTZXQ8V2ViQ29yZTo6TW90aW9uTWFuYWdlckNsaWVudD4gbV9kZXZpY2VNb3Rpb25D
bGllbnRzOwogICAgIFdlYWtIYXNoU2V0PFdlYkNvcmU6Ok1vdGlvbk1hbmFnZXJDbGllbnQ+IG1f
ZGV2aWNlT3JpZW50YXRpb25DbGllbnRzOwotICAgIE5TVGltZXIqIG1fdXBkYXRlVGltZXI7Cisg
ICAgUmV0YWluUHRyPE5TVGltZXI+IG1fdXBkYXRlVGltZXI7CiAgICAgQk9PTCBtX2d5cm9BdmFp
bGFibGU7CiAgICAgQk9PTCBtX2hlYWRpbmdBdmFpbGFibGU7CiAgICAgQk9PTCBtX2luaXRpYWxp
emVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rp
b25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25N
YW5hZ2VyLm1tCmluZGV4IGYyZGQwOTc1NGI4ZmE5ZTM0ZWZmZWFlNzI2MTVkOWVjYjA4NTczZmYu
LjQzODE2ZjdmYzU1NmIxNDkxYmE2OWFiMTFmODk5ZTI4YjNiNzMxODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KQEAgLTg5
LDEzICs4OSwxMSBAQCAtICh2b2lkKWRlYWxsb2MKIAogICAgIGlmIChtX2hlYWRpbmdBdmFpbGFi
bGUpCiAgICAgICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRpbmdIZWFkaW5nXTsKLSAg
ICBbbV9sb2NhdGlvbk1hbmFnZXIgcmVsZWFzZV07CiAKICAgICBpZiAobV9neXJvQXZhaWxhYmxl
KQogICAgICAgICBbbV9tb3Rpb25NYW5hZ2VyIHN0b3BEZXZpY2VNb3Rpb25VcGRhdGVzXTsKICAg
ICBlbHNlCiAgICAgICAgIFttX21vdGlvbk1hbmFnZXIgc3RvcEFjY2VsZXJvbWV0ZXJVcGRhdGVz
XTsKLSAgICBbbV9tb3Rpb25NYW5hZ2VyIHJlbGVhc2VdOwogCiAgICAgW3N1cGVyIGRlYWxsb2Nd
OwogfQpAQCAtMTQyLDE2ICsxNDAsMTYgQEAgLSAodm9pZClpbml0aWFsaXplT25NYWluVGhyZWFk
CiB7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKLSAgICBtX21vdGlvbk1h
bmFnZXIgPSBbYWxsb2NDTU1vdGlvbk1hbmFnZXJJbnN0YW5jZSgpIGluaXRdOworICAgIG1fbW90
aW9uTWFuYWdlciA9IGFkb3B0TlMoW2FsbG9jQ01Nb3Rpb25NYW5hZ2VySW5zdGFuY2UoKSBpbml0
XSk7CiAKLSAgICBtX2d5cm9BdmFpbGFibGUgPSBtX21vdGlvbk1hbmFnZXIuZGV2aWNlTW90aW9u
QXZhaWxhYmxlOworICAgIG1fZ3lyb0F2YWlsYWJsZSA9IG1fbW90aW9uTWFuYWdlci5nZXQoKS5k
ZXZpY2VNb3Rpb25BdmFpbGFibGU7CiAKICAgICBpZiAobV9neXJvQXZhaWxhYmxlKQotICAgICAg
ICBtX21vdGlvbk1hbmFnZXIuZGV2aWNlTW90aW9uVXBkYXRlSW50ZXJ2YWwgPSBrTW90aW9uVXBk
YXRlSW50ZXJ2YWw7CisgICAgICAgIFttX21vdGlvbk1hbmFnZXIgc2V0RGV2aWNlTW90aW9uVXBk
YXRlSW50ZXJ2YWw6IGtNb3Rpb25VcGRhdGVJbnRlcnZhbF07CiAgICAgZWxzZQotICAgICAgICBt
X21vdGlvbk1hbmFnZXIuYWNjZWxlcm9tZXRlclVwZGF0ZUludGVydmFsID0ga01vdGlvblVwZGF0
ZUludGVydmFsOworICAgICAgICBbbV9tb3Rpb25NYW5hZ2VyIHNldEFjY2VsZXJvbWV0ZXJVcGRh
dGVJbnRlcnZhbDoga01vdGlvblVwZGF0ZUludGVydmFsXTsKIAotICAgIG1fbG9jYXRpb25NYW5h
Z2VyID0gW2FsbG9jQ0xMb2NhdGlvbk1hbmFnZXJJbnN0YW5jZSgpIGluaXRdOworICAgIG1fbG9j
YXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0aW9uTWFuYWdlckluc3RhbmNlKCkg
aW5pdF0pOwogICAgIG1faGVhZGluZ0F2YWlsYWJsZSA9IFtnZXRDTExvY2F0aW9uTWFuYWdlckNs
YXNzKCkgaGVhZGluZ0F2YWlsYWJsZV07CiAKICAgICBtX2luaXRpYWxpemVkID0gWUVTOwpAQCAt
MTg4LDEwICsxODYsOCBAQCAtICh2b2lkKWNoZWNrQ2xpZW50U3RhdHVzCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0czpZ
RVNdIHJldGFpbl07CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBOU1RpbWVyICp0
aW1lciA9IG1fdXBkYXRlVGltZXI7CisgICAgICAgIFttX3VwZGF0ZVRpbWVyIGludmFsaWRhdGVd
OwogICAgICAgICBtX3VwZGF0ZVRpbWVyID0gbmlsOwotICAgICAgICBbdGltZXIgaW52YWxpZGF0
ZV07Ci0gICAgICAgIFt0aW1lciByZWxlYXNlXTsKIAogICAgICAgICBpZiAobV9neXJvQXZhaWxh
YmxlKQogICAgICAgICAgICAgW21fbW90aW9uTWFuYWdlciBzdG9wRGV2aWNlTW90aW9uVXBkYXRl
c107CkBAIC0yMTEsMTEgKzIwNywxMSBAQCAtICh2b2lkKXVwZGF0ZQogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgLy8gV2Ugc2hvdWxkLCBob3dldmVyLCBndWFyZCBmb3IgdGhlIGNhc2Ugd2hl
cmUgdGhlIG1hbmFnZXJzIHJldHVybiBuaWwgZGF0YS4KLSAgICBDTURldmljZU1vdGlvbiAqZGV2
aWNlTW90aW9uID0gbV9tb3Rpb25NYW5hZ2VyLmRldmljZU1vdGlvbjsKKyAgICBDTURldmljZU1v
dGlvbiAqZGV2aWNlTW90aW9uID0gW21fbW90aW9uTWFuYWdlciBkZXZpY2VNb3Rpb25dOwogICAg
IGlmIChtX2d5cm9BdmFpbGFibGUgJiYgZGV2aWNlTW90aW9uKQotICAgICAgICBbc2VsZiBzZW5k
TW90aW9uRGF0YTpkZXZpY2VNb3Rpb24gd2l0aEhlYWRpbmc6bV9sb2NhdGlvbk1hbmFnZXIuaGVh
ZGluZ107CisgICAgICAgIFtzZWxmIHNlbmRNb3Rpb25EYXRhOmRldmljZU1vdGlvbiB3aXRoSGVh
ZGluZzpbbV9sb2NhdGlvbk1hbmFnZXIgaGVhZGluZ11dOwogICAgIGVsc2UgewotICAgICAgICBp
ZiAoQ01BY2NlbGVyb21ldGVyRGF0YSAqYWNjZWxlcm9tZXRlckRhdGEgPSBtX21vdGlvbk1hbmFn
ZXIuYWNjZWxlcm9tZXRlckRhdGEpCisgICAgICAgIGlmIChDTUFjY2VsZXJvbWV0ZXJEYXRhICph
Y2NlbGVyb21ldGVyRGF0YSA9IFttX21vdGlvbk1hbmFnZXIgYWNjZWxlcm9tZXRlckRhdGFdKQog
ICAgICAgICAgICAgW3NlbGYgc2VuZEFjY2VsZXJvbWV0ZXJEYXRhOmFjY2VsZXJvbWV0ZXJEYXRh
XTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dBS1ZpZXcubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0K
aW5kZXggMjQ3ZjkyZmU5YWQzM2YzMzY5NGMzOTJiNWEyYjliOTYwYjU2YTgwYS4uZjI0MzViZjNi
MTYwZGY4ODA5MzdkMjJlMzIxYTNkOWI1NDUwZWU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV0FLVmlldy5tbQpAQCAtMjQ2LDcgKzI0Niw3IEBAIC0gKHZvaWQpZGVhbGxv
YwogICAgIH0KICAgICAKICAgICBbc3Vidmlld1JlZmVyZW5jZXMgcmVsZWFzZV07Ci0gICAgCisK
ICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTMyOCwxMyArMzI4LDEyIEBAIC0gKFdBS1Zp
ZXcgKilsYXN0U2Nyb2xsYWJsZUFuY2VzdG9yCiAKIC0gKHZvaWQpYWRkU3VidmlldzooV0FLVmll
dyAqKXN1YnZpZXcKIHsKLSAgICBbc3VidmlldyByZXRhaW5dOworICAgIGF1dG8gcHJvdGVjdGVk
U3ViVmlldyA9IHJldGFpblB0cihzdWJ2aWV3KTsKICAgICBbc3VidmlldyByZW1vdmVGcm9tU3Vw
ZXJ2aWV3XTsKICAgICBXS1ZpZXdBZGRTdWJ2aWV3ICh2aWV3UmVmLCBbc3VidmlldyBfdmlld1Jl
Zl0pOwogICAgIAogICAgIC8vIEtlZXAgYSByZWZlcmVuY2UgdG8gc3VidmlldyBzbyBpdCBzdGlj
a3MgYXJvdW5kLgogICAgIFtbc2VsZiBfc3Vidmlld1JlZmVyZW5jZXNdIGFkZE9iamVjdDpzdWJ2
aWV3XTsKLSAgICBbc3VidmlldyByZWxlYXNlXTsKIH0KIAogLSAodm9pZCl3aWxsUmVtb3ZlU3Vi
dmlldzooV0FLVmlldyAqKXN1YnZpZXcKQEAgLTM0NCwxMCArMzQzLDkgQEAgLSAodm9pZCl3aWxs
UmVtb3ZlU3VidmlldzooV0FLVmlldyAqKXN1YnZpZXcKIAogLSAodm9pZClyZW1vdmVGcm9tU3Vw
ZXJ2aWV3CiB7Ci0gICAgV0FLVmlldyAqb2xkU3VwZXJ2aWV3ID0gW1tzZWxmIHN1cGVydmlld10g
cmV0YWluXTsKKyAgICBSZXRhaW5QdHI8V0FLVmlldz4gb2xkU3VwZXJ2aWV3ID0gW3NlbGYgc3Vw
ZXJ2aWV3XTsKICAgICBXS1ZpZXdSZW1vdmVGcm9tU3VwZXJ2aWV3ICh2aWV3UmVmKTsKICAgICBb
W29sZFN1cGVydmlldyBfc3Vidmlld1JlZmVyZW5jZXNdIHJlbW92ZU9iamVjdDpzZWxmXTsKLSAg
ICBbb2xkU3VwZXJ2aWV3IHJlbGVhc2VdOwogfQogCiAtICh2b2lkKXZpZXdEaWRNb3ZlVG9XaW5k
b3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXgg
YTE5ZDMxNGYyNTlhZjE1YjE0YjlkYTc1N2M4ZmU1NzFiZTkwYmJmYi4uZjMyNmE2OWY5NTYwZmMz
NDFmZGJjNDYwNzU4OWFjMDA3YTY4NjJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1NSw5ICsyNTUsNyBAQCBzdGF0aWMgTlNGaWxlV3Jh
cHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2Up
CiAKIHN0YXRpYyB2b2lkIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdy
YXBwZXIgKndyYXBwZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QmIG5l
d0NoYW5nZUNvdW50KQogewotICAgIE5TVGV4dEF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBbW05T
VGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRmlsZVdyYXBwZXI6d3JhcHBlcl07Ci0gICAg
TlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcgPSBbTlNBdHRyaWJ1dGVkU3RyaW5nIGF0dHJpYnV0
ZWRTdHJpbmdXaXRoQXR0YWNobWVudDphdHRhY2htZW50XTsKLSAgICBbYXR0YWNobWVudCByZWxl
YXNlXTsKKyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtOU0F0dHJpYnV0ZWRTdHJp
bmcgYXR0cmlidXRlZFN0cmluZ1dpdGhBdHRhY2htZW50OmFkb3B0TlMoW1tOU1RleHRBdHRhY2ht
ZW50IGFsbG9jXSBpbml0V2l0aEZpbGVXcmFwcGVyOndyYXBwZXJdKS5nZXQoKV07CiAKICAgICBO
U0RhdGEgKlJURkREYXRhID0gW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtz
dHJpbmcgbGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dOwogICAgIGlmICghUlRGRERh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCmluZGV4IDBmYWVkZjg0YmQ1NjczYzU4Y2YxZmI2NGI4
MzVhMDk5MzNhNzc4ZDcuLjI5NThmMWJjZTM5ZWNlYzk4NmRiODg1MjlmMTU4ZDcyMmZhZDY2Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCkBAIC0yNDEsOSArMjQxLDcgQEAgdm9pZCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KCkKICAgICAgICAgTlNTdHJp
bmcgKnZvaWNlVVJJID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVm9pY2VJZGVudGlmaWVy
XTsKICAgICAgICAgTlNTdHJpbmcgKm5hbWUgPSBbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNW
b2ljZU5hbWVdOwogICAgICAgICBOU1N0cmluZyAqbGFuZ3VhZ2UgPSBbYXR0cmlidXRlcyBvYmpl
Y3RGb3JLZXk6TlNWb2ljZUxvY2FsZUlkZW50aWZpZXJdOwotICAgICAgICBOU0xvY2FsZSAqbG9j
YWxlID0gW1tOU0xvY2FsZSBhbGxvY10gaW5pdFdpdGhMb2NhbGVJZGVudGlmaWVyOmxhbmd1YWdl
XTsKLSAgICAgICAgTlNTdHJpbmcgKmRlZmF1bHRWb2ljZVVSSSA9IHNwZWVjaFN5bnRoZXNpc0dl
dERlZmF1bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUobG9jYWxlKTsKLSAgICAgICAgW2xvY2Fs
ZSByZWxlYXNlXTsKKyAgICAgICAgTlNTdHJpbmcgKmRlZmF1bHRWb2ljZVVSSSA9IHNwZWVjaFN5
bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUoYWRvcHROUyhbW05TTG9j
YWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZpZXI6bGFuZ3VhZ2VdKS5nZXQoKSk7CiAK
ICAgICAgICAgLy8gQ2hhbmdlIHRvIEJDUC00NyBmb3JtYXQgYXMgZGVmaW5lZCBieSBzcGVjLgog
ICAgICAgICBsYW5ndWFnZSA9IFtsYW5ndWFnZSBzdHJpbmdCeVJlcGxhY2luZ09jY3VycmVuY2Vz
T2ZTdHJpbmc6QCJfIiB3aXRoU3RyaW5nOkAiLSJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklPUy5t
bQppbmRleCBmYjEwOTQ2ZmVjOTNiZjFlZjE0NjA1NTY3OWVlYjg4OWQxZWQ4Y2FiLi5iOGU5YjNj
Nzc3OTljZDYxY2Y5YzU5ZjA5OGI2YzZhYzQ1ZjYyZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmll
cklPUy5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFsU2V0
dGluZ3MuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKKyNpbXBvcnQgPHd0Zi9CbG9j
a1B0ci5oPgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPEFwcFN1cHBv
cnQvQ1BOZXR3b3JrT2JzZXJ2ZXIuaD4KQEAgLTQyLDcgKzQzLDcgQEAgQGVuZAogI2VuZGlmCiAK
IEBpbnRlcmZhY2UgV2ViTmV0d29ya1N0YXRlT2JzZXJ2ZXIgOiBOU09iamVjdCB7Ci0gICAgdm9p
ZCAoXmJsb2NrKSgpOworICAgIEJsb2NrUHRyPHZvaWQoKT4gYmxvY2s7CiB9CiAtIChpZClpbml0
V2l0aEJsb2NrOih2b2lkICheKSgpKWJsb2NrOwogQGVuZApAQCAtNTQsMTMgKzU1LDEyIEBAIC0g
KGlkKWluaXRXaXRoQmxvY2s6KHZvaWQgKF4pKCkpb2JzZXJ2ZXJCbG9jawogICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIFtbQ1BOZXR3b3Jr
T2JzZXJ2ZXIgc2hhcmVkTmV0d29ya09ic2VydmVyXSBhZGROZXR3b3JrUmVhY2hhYmxlT2JzZXJ2
ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IobmV0d29ya1N0YXRlQ2hhbmdlZDopXTsKLSAgICBi
bG9jayA9IFtvYnNlcnZlckJsb2NrIGNvcHldOworICAgIGJsb2NrID0gbWFrZUJsb2NrUHRyKG9i
c2VydmVyQmxvY2spOwogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsK
LSAgICBbYmxvY2sgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxl
TWFjLm1tCmluZGV4IGQxZThjMDJhMzkwZmZkZjMwYTc1Y2Q2NDcyNjg1ZGUwNzdiYjc0NGEuLmIy
Y2JhYjdjOGFjZjJjMzk1Zjk4NDcwYTUwYmYwNzgyZDkxMmNhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1t
CkBAIC0zMTUsMTQgKzMxNSwxMCBAQCBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIFJlZlB0cjxTeW5jaHJvbgogewogICAgIEFT
U0VSVCghZC0+bV9kZWxlZ2F0ZSk7CiAKLSAgICBpZCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGU+
IGRlbGVnYXRlOwogICAgIGlmIChzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkKLSAgICAgICAg
ZGVsZWdhdGUgPSBbW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhIYW5kbGU6dGhpcyBtZXNzYWdlUXVldWU6V1RGTW92ZShxdWV1ZSld
OworICAgICAgICBkLT5tX2RlbGVnYXRlID0gYWRvcHROUyhbW1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhIYW5kbGU6dGhpcyBtZXNz
YWdlUXVldWU6V1RGTW92ZShxdWV1ZSldKTsKICAgICBlbHNlCi0gICAgICAgIGRlbGVnYXRlID0g
W1tXZWJDb3JlUmVzb3VyY2VIYW5kbGVXaXRoQ3JlZGVudGlhbFN0b3JhZ2VBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoSGFuZGxlOnRoaXMgbWVzc2FnZVF1ZXVlOldURk1v
dmUocXVldWUpXTsKLQotICAgIGQtPm1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBbZGVsZWdh
dGUgcmVsZWFzZV07CisgICAgICAgIGQtPm1fZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQ29yZVJl
c291cmNlSGFuZGxlV2l0aENyZWRlbnRpYWxTdG9yYWdlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aEhhbmRsZTp0aGlzIG1lc3NhZ2VRdWV1ZTpXVEZNb3ZlKHF1ZXVlKV0p
OwogCiAgICAgcmV0dXJuIGQtPm1fZGVsZWdhdGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCmluZGV4IDQwOTBiNjY4
OWMxNmVlOTBiYjBmMTI5ZDBjNDg0Mjg1NDY4Njk3NzAuLjVmMzZkMDgzMTQ4NmM5ZDllNGZjOTNi
OWJkZjFkNjE3N2MyMGU2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCkBAIC0xODEsOSArMTgxLDggQEAgc3RhdGljIHZvaWQg
ZmluZENvbXBsZXhXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGlu
dCogc3RhcnQsIGkKIHZvaWQgZmluZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIGludCBw
b3NpdGlvbiwgaW50KiBzdGFydCwgaW50KiBlbmQpCiB7CiAjaWYgVVNFKEFQUEtJVCkKLSAgICBO
U0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6dGV4dC5jcmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5n
KCkuZ2V0KCldOworICAgIGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRleHQuY3JlYXRlTlNTdHJpbmdXaXRo
b3V0Q29weWluZygpLmdldCgpXSk7CiAgICAgTlNSYW5nZSByYW5nZSA9IFthdHRyaWJ1dGVkU3Ry
aW5nIGRvdWJsZUNsaWNrQXRJbmRleDpzdGQ6Om1pbjx1bnNpZ25lZD4ocG9zaXRpb24sIHRleHQu
bGVuZ3RoKCkgLSAxKV07Ci0gICAgW2F0dHJpYnV0ZWRTdHJpbmcgcmVsZWFzZV07CiAgICAgKnN0
YXJ0ID0gcmFuZ2UubG9jYXRpb247CiAgICAgKmVuZCA9IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2Uu
bGVuZ3RoOwogI2Vsc2UKQEAgLTIzMiw5ICsyMzEsOCBAQCB2b2lkIGZpbmRFbmRXb3JkQm91bmRh
cnkoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGludCogZW5kKQogaW50IGZpbmROZXh0
V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJk
KQogeyAgIAogI2lmIFVTRShBUFBLSVQpCi0gICAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1
dGVkU3RyaW5nID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRl
eHQuY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpXTsKKyAgICBhdXRvIGF0dHJp
YnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFN0cmluZzp0ZXh0LmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKV0pOwogICAg
IGludCByZXN1bHQgPSBbYXR0cmlidXRlZFN0cmluZyBuZXh0V29yZEZyb21JbmRleDpwb3NpdGlv
biBmb3J3YXJkOmZvcndhcmRdOwotICAgIFthdHRyaWJ1dGVkU3RyaW5nIHJlbGVhc2VdOwogICAg
IHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIC8vIFRoaXMgdmVyeSBsaWtlbHkgd29uJ3QgYmVo
YXZlIGV4YWN0bHkgbGlrZSB0aGUgbm9uLWlQaG9uZSB2ZXJzaW9uLCBidXQgaXQgd29ya3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLT2JqZWN0Lm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV0tPYmplY3QubW0KaW5kZXggNzM2NjEwNWNiMTFhZjA1ZmE4
OWQxYmNmNzM4OWVlNjEyNDlhMWExNC4uM2E4ZTM0YzQzYzkyOGVjMzFjNzgzZjhiNWYwNmJmOWEx
NDUxY2Q1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tPYmplY3Qu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tPYmplY3QubW0KQEAgLTI3LDYg
KzI3LDcgQEAKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAKICNpbXBvcnQgIkFQSU9iamVjdC5oIgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW50ZXJmYWNlIE5TT2JqZWN0ICgpCiAtIChC
T09MKWlzTlNBcnJheV9fOwpAQCAtNDUsMTMgKzQ2LDEyIEBAIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIFdLT2JqZWN0IHsKICAgICBCT09MIF9oYXNJbml0aWFsaXplZFRhcmdldDsKLSAgICBOU09i
amVjdCAqX3RhcmdldDsKKyAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IF90YXJnZXQ7CiB9CiAKIC0g
KHZvaWQpZGVhbGxvYwogewogICAgIEFQSTo6T2JqZWN0Ojpmcm9tV0tPYmplY3RFeHRyYVNwYWNl
KHNlbGYpLn5PYmplY3QoKTsKLSAgICBbX3RhcmdldCByZWxlYXNlXTsKIAogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGluaXRpYWxp
emVUYXJnZXRJZk5lZWRlZChXS09iamVjdCAqc2VsZikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
c2VsZi0+X2hhc0luaXRpYWxpemVkVGFyZ2V0ID0gWUVTOwotICAgIHNlbGYtPl90YXJnZXQgPSBb
c2VsZiBfd2ViX2NyZWF0ZVRhcmdldF07CisgICAgc2VsZi0+X3RhcmdldCA9IGFkb3B0TlMoW3Nl
bGYgX3dlYl9jcmVhdGVUYXJnZXRdKTsKIH0KIAogLSAoQk9PTClpc0VxdWFsOihpZClvYmplY3QK
QEAgLTExNyw3ICsxMTcsNyBAQCAtIChpZClmb3J3YXJkaW5nVGFyZ2V0Rm9yU2VsZWN0b3I6KFNF
TClzZWxlY3RvcgogewogICAgIGluaXRpYWxpemVUYXJnZXRJZk5lZWRlZChzZWxmKTsKIAotICAg
IHJldHVybiBfdGFyZ2V0OworICAgIHJldHVybiBfdGFyZ2V0LmdldCgpOwogfQogCiAtIChOU1N0
cmluZyAqKWRlc2NyaXB0aW9uCkBAIC0xNTcsNyArMTU3LDcgQEAgLSAodm9pZClmb3J3YXJkSW52
b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbgogewogICAgIGluaXRpYWxpemVUYXJn
ZXRJZk5lZWRlZChzZWxmKTsKIAotICAgIFtpbnZvY2F0aW9uIGludm9rZVdpdGhUYXJnZXQ6X3Rh
cmdldF07CisgICAgW2ludm9jYXRpb24gaW52b2tlV2l0aFRhcmdldDpfdGFyZ2V0LmdldCgpXTsK
IH0KIAogLSAoTlNNZXRob2RTaWduYXR1cmUgKiltZXRob2RTaWduYXR1cmVGb3JTZWxlY3Rvcjoo
U0VMKXNlbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KaW5kZXgg
MGZkNzBkNmY3ZmJkODY1N2MxYTUyMWZlMTEyNjYyMDY0NDg3ZGZkZi4uYTFhZTMxZjUxZGU0MTE2
MjlhZjhmNDRiMDdjYzYyMjRkOWRjYzNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlUHJv
cGVydHlBcHBsaWVyLm1tCkBAIC02OSwxMCArNjksMTAgQEAgLSAodm9pZClfd2ViX3NldFN1YnZp
ZXdzOihOU0FycmF5ICopbmV3U3Vidmlld3MKICAgICB9CiAKICAgICAvLyBSZW1vdmUgdmlld3Mg
YXQgdGhlIGVuZC4KLSAgICBOU011dGFibGVBcnJheSAqdmlld3NUb1JlbW92ZSA9IG5pbDsKKyAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHZpZXdzVG9SZW1vdmU7CiAgICAgYXV0byBhcHBl
bmRWaWV3VG9SZW1vdmUgPSBbJnZpZXdzVG9SZW1vdmVdKFVJVmlldyAqdmlldykgewogICAgICAg
ICBpZiAoIXZpZXdzVG9SZW1vdmUpCi0gICAgICAgICAgICB2aWV3c1RvUmVtb3ZlID0gW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgICAgICAgICB2aWV3c1RvUmVtb3ZlID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgW3ZpZXdzVG9S
ZW1vdmUgYWRkT2JqZWN0OnZpZXddOwogICAgIH07CkBAIC04NCwxMCArODQsOCBAQCAtICh2b2lk
KV93ZWJfc2V0U3Vidmlld3M6KE5TQXJyYXkgKiluZXdTdWJ2aWV3cwogICAgICAgICAgICAgYXBw
ZW5kVmlld1RvUmVtb3ZlKHN1YnZpZXcpOwogICAgIH0KIAotICAgIGlmICh2aWV3c1RvUmVtb3Zl
KSB7CisgICAgaWYgKHZpZXdzVG9SZW1vdmUpCiAgICAgICAgIFt2aWV3c1RvUmVtb3ZlIG1ha2VP
YmplY3RzUGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVGcm9tU3VwZXJ2aWV3KV07Ci0g
ICAgICAgIFt2aWV3c1RvUmVtb3ZlIHJlbGVhc2VdOwotICAgIH0KIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCA4YzFm
ZTk2MGMxYTZmY2RiNDNhYTAwODA3Y2RkOTVlZWNlZTJlYWRhLi4wZjY5NGJhOGRjZjZlZmYyNWMw
ZDdmNjVmMzdmYzQzYzc5NWU3MzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAtNTksNiArNTksNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9WZXJzaW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEku
aD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL0dyYXBoaWNzU2VydmljZXNTUEkuaD4KKyNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNp
ZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCkBAIC0zMDMyLDExICszMDMzLDggQEAgLSAodm9pZClf
c25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlld0Nvb3JkaW5hdGVzIGludG9JbWFnZU9mV2lk
dGg6KENHRmxvYXQpaW0KIHsKICAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIT0g
V2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykgewogICAgICAg
ICAvLyBEZWZlciBzbmFwc2hvdHRpbmcgdW50aWwgYWZ0ZXIgdGhlIGN1cnJlbnQgcmVzaXplIGNv
bXBsZXRlcy4KLSAgICAgICAgdm9pZCAoXmNvcGllZENvbXBsZXRpb25IYW5kbGVyKShDR0ltYWdl
UmVmKSA9IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKLSAgICAgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gcmV0YWluZWRTZWxmID0gc2VsZjsKLSAgICAgICAgX2NhbGxiYWNrc0RlZmVycmVkRHVy
aW5nUmVzaXplLmFwcGVuZChbcmV0YWluZWRTZWxmLCByZWN0SW5WaWV3Q29vcmRpbmF0ZXMsIGlt
YWdlV2lkdGgsIGNvcGllZENvbXBsZXRpb25IYW5kbGVyXSB7Ci0gICAgICAgICAgICBbcmV0YWlu
ZWRTZWxmIF9zbmFwc2hvdFJlY3Q6cmVjdEluVmlld0Nvb3JkaW5hdGVzIGludG9JbWFnZU9mV2lk
dGg6aW1hZ2VXaWR0aCBjb21wbGV0aW9uSGFuZGxlcjpjb3BpZWRDb21wbGV0aW9uSGFuZGxlcl07
Ci0gICAgICAgICAgICBbY29waWVkQ29tcGxldGlvbkhhbmRsZXIgcmVsZWFzZV07CisgICAgICAg
IF9jYWxsYmFja3NEZWZlcnJlZER1cmluZ1Jlc2l6ZS5hcHBlbmQoW3JldGFpbmVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKSwgcmVjdEluVmlld0Nvb3JkaW5hdGVzLCBpbWFnZVdpZHRoLCBjb21wbGV0
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAg
ICAgIFtyZXRhaW5lZFNlbGYgX3NuYXBzaG90UmVjdDpyZWN0SW5WaWV3Q29vcmRpbmF0ZXMgaW50
b0ltYWdlT2ZXaWR0aDppbWFnZVdpZHRoIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5k
bGVyLmdldCgpXTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0KaW5kZXggMTUxMjI5MDQ1ZjEzZTljZGRiZTA5MWU2
MjdiZmExZmUyMDZkZTI4OS4uN2ZiN2Y4YWEzNmUwZTVmZmI4M2M2MjAyYzZiOTQ0Yzg0N2ZhYmJj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpAQCAtMzcsNyArMzcsNyBA
QCBAcHJpdmF0ZQogICAgIFdlYWtQdHI8V2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eT4gX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OwogICAgIFdlYktpdDo6TGVnYWN5
Q3VzdG9tUHJvdG9jb2xJRCBfY3VzdG9tUHJvdG9jb2xJRDsKICAgICBOU1VSTENhY2hlU3RvcmFn
ZVBvbGljeSBfc3RvcmFnZVBvbGljeTsKLSAgICBOU1VSTENvbm5lY3Rpb24gKl91cmxDb25uZWN0
aW9uOworICAgIFJldGFpblB0cjxOU1VSTENvbm5lY3Rpb24+IF91cmxDb25uZWN0aW9uOwogfQog
LSAoaWQpaW5pdFdpdGhMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooV2ViS2l0OjpM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYpY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkgY3VzdG9tUHJvdG9jb2xJRDooV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbElEKWN1c3Rv
bVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKIC0gKHZvaWQpY2Fu
Y2VsOwpAQCAtNTYsNyArNTYsNyBAQCAtIChpZClpbml0V2l0aExlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5OihXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYQogICAgIF9jdXN0
b21Qcm90b2NvbElEID0gY3VzdG9tUHJvdG9jb2xJRDsKICAgICBfc3RvcmFnZVBvbGljeSA9IE5T
VVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZDsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgIF91cmxDb25uZWN0aW9uID0gW1tOU1VSTENvbm5lY3Rpb24gYWxsb2Nd
IGluaXRXaXRoUmVxdWVzdDpyZXF1ZXN0IGRlbGVnYXRlOnNlbGYgc3RhcnRJbW1lZGlhdGVseTpO
T107CisgICAgX3VybENvbm5lY3Rpb24gPSBhZG9wdE5TKFtbTlNVUkxDb25uZWN0aW9uIGFsbG9j
XSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdCBkZWxlZ2F0ZTpzZWxmIHN0YXJ0SW1tZWRpYXRlbHk6
Tk9dKTsKICAgICBbX3VybENvbm5lY3Rpb24gc2NoZWR1bGVJblJ1bkxvb3A6W05TUnVuTG9vcCBt
YWluUnVuTG9vcF0gZm9yTW9kZTpOU1J1bkxvb3BDb21tb25Nb2Rlc107CiAgICAgW191cmxDb25u
ZWN0aW9uIHN0YXJ0XTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAg
LTY3LDcgKzY3LDYgQEAgLSAoaWQpaW5pdFdpdGhMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTooV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmEKIC0gKHZvaWQpZGVhbGxvYwog
ewogICAgIFtfdXJsQ29ubmVjdGlvbiBjYW5jZWxdOwotICAgIFtfdXJsQ29ubmVjdGlvbiByZWxl
YXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTE0NSwxMSArMTQ0LDEwIEBAIHZv
aWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OjpzdGFydExvYWRpbmcoTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyCiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47
CiAKLSAgICBXS0N1c3RvbVByb3RvY29sTG9hZGVyICpsb2FkZXIgPSBbW1dLQ3VzdG9tUHJvdG9j
b2xMb2FkZXIgYWxsb2NdIGluaXRXaXRoTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6
bWFuYWdlciBjdXN0b21Qcm90b2NvbElEOmN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDpyZXF1ZXN0
XTsKKyAgICBhdXRvIGxvYWRlciA9IGFkb3B0TlMoW1tXS0N1c3RvbVByb3RvY29sTG9hZGVyIGFs
bG9jXSBpbml0V2l0aExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Om1hbmFnZXIgY3Vz
dG9tUHJvdG9jb2xJRDpjdXN0b21Qcm90b2NvbElEIHJlcXVlc3Q6cmVxdWVzdF0pOwogICAgIEFT
U0VSVChsb2FkZXIpOwogICAgIEFTU0VSVCghbV9sb2FkZXJNYXAuY29udGFpbnMoY3VzdG9tUHJv
dG9jb2xJRCkpOwotICAgIG1fbG9hZGVyTWFwLmFkZChjdXN0b21Qcm90b2NvbElELCBsb2FkZXIp
OwotICAgIFtsb2FkZXIgcmVsZWFzZV07CisgICAgbV9sb2FkZXJNYXAuYWRkKGN1c3RvbVByb3Rv
Y29sSUQsIFdURk1vdmUobG9hZGVyKSk7CiB9CiAKIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50OjpzdG9wTG9hZGluZyhMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYsIFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCBjdXN0b21Qcm90b2NvbElEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3Mv
V0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmgKaW5kZXggMzAxYmFiMTEwOWNlN2ZmNjc0YTM2MjNh
YjFjYTE5YTkwNjcyZWY0NS4uMTg3MTkxZmY2MDQ1YmQ1MGYzYWZjNDNiMGNhMGJhYzMzZWJlZmQ1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0lu
c3BlY3RvckhpZ2hsaWdodFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5oCkBAIC0yOSw3ICsyOSw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0luc3BlY3Rvck92ZXJsYXkuaD4KIAogQGludGVyZmFjZSBXS0luc3Bl
Y3RvckhpZ2hsaWdodFZpZXcgOiBVSVZpZXcgewotICAgIE5TTXV0YWJsZUFycmF5ICpfbGF5ZXJz
OyAvLyBDQVNoYXBlTGF5ZXJzLgorICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX2xheWVy
czsgLy8gQ0FTaGFwZUxheWVycy4KIH0KIC0gKHZvaWQpdXBkYXRlOihjb25zdCBXZWJDb3JlOjpJ
bnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQmKWhpZ2hsaWdodDsKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGln
aHRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3Bl
Y3RvckhpZ2hsaWdodFZpZXcubW0KaW5kZXggNmJhZjY2YjlmM2MyMmU3MzYyODMzYzUzZTU1ZWVh
YzQ0NjMyM2FlOS4uNDQxMjQ0MzdjMjQzNDI1YzNlZGRiOTkzNzZjZDYyMjRmMmZjMTZhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KQEAgLTM3LDIwICszNywxOSBAQCAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiB7CiAgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgX2xheWVycyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIF9sYXllcnMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgW3NlbGYgX3JlbW92ZUFsbExheWVyc107
Ci0gICAgW19sYXllcnMgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtICh2
b2lkKV9yZW1vdmVBbGxMYXllcnMKIHsKLSAgICBmb3IgKENBU2hhcGVMYXllciAqbGF5ZXIgaW4g
X2xheWVycykKKyAgICBmb3IgKENBU2hhcGVMYXllciAqbGF5ZXIgaW4gX2xheWVycy5nZXQoKSkK
ICAgICAgICAgW2xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKICAgICBbX2xheWVycyByZW1v
dmVBbGxPYmplY3RzXTsKIH0KQEAgLTYzLDEwICs2Miw5IEBAIC0gKHZvaWQpX2NyZWF0ZUxheWVy
czooTlNVSW50ZWdlciludW1MYXllcnMKICAgICBbc2VsZiBfcmVtb3ZlQWxsTGF5ZXJzXTsKIAog
ICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IG51bUxheWVyczsgKytpKSB7Ci0gICAgICAg
IENBU2hhcGVMYXllciAqbGF5ZXIgPSBbW0NBU2hhcGVMYXllciBhbGxvY10gaW5pdF07Ci0gICAg
ICAgIFtfbGF5ZXJzIGFkZE9iamVjdDpsYXllcl07Ci0gICAgICAgIFtzZWxmLmxheWVyIGFkZFN1
YmxheWVyOmxheWVyXTsKLSAgICAgICAgW2xheWVyIHJlbGVhc2VdOworICAgICAgICBhdXRvIGxh
eWVyID0gYWRvcHROUyhbW0NBU2hhcGVMYXllciBhbGxvY10gaW5pdF0pOworICAgICAgICBbX2xh
eWVycyBhZGRPYmplY3Q6bGF5ZXIuZ2V0KCldOworICAgICAgICBbc2VsZi5sYXllciBhZGRTdWJs
YXllcjpsYXllci5nZXQoKV07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBjZWM4N2M1
OGYwMTFjYTdkYTQ5OTNjZjE1M2MxZDZmZTcyNDVhNGI4Li41MDhhYWUyZmQ1ZDkwMTNiOTQ1ODVi
MGI3ZWQyOGJkYmVkMjk1MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTQyNjEsMzkgKzQyNjEsMjgg
QEAgLSAodm9pZClzZWxlY3RQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWMKIC0gKHZvaWQpX3NlbGVjdFBvc2l0aW9uQXRQb2lu
dDooQ0dQb2ludClwb2ludCBzdGF5aW5nV2l0aGluRm9jdXNlZEVsZW1lbnQ6KEJPT0wpc3RheWlu
Z1dpdGhpbkZvY3VzZWRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlcgogewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZRVM7
Ci0gICAgVUlXS1NlbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIHNlbGVjdGlvbkhhbmRsZXIgPSBb
Y29tcGxldGlvbkhhbmRsZXIgY29weV07Ci0gICAgUmV0YWluUHRyPFdLQ29udGVudFZpZXc+IHZp
ZXcgPSBzZWxmOwogCi0gICAgX3BhZ2UtPnNlbGVjdFBvc2l0aW9uQXRQb2ludChXZWJDb3JlOjpJ
bnRQb2ludChwb2ludCksIHN0YXlpbmdXaXRoaW5Gb2N1c2VkRWxlbWVudCwgW3ZpZXcsIHNlbGVj
dGlvbkhhbmRsZXJdKCkgewotICAgICAgICBzZWxlY3Rpb25IYW5kbGVyKCk7CisgICAgX3BhZ2Ut
PnNlbGVjdFBvc2l0aW9uQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHN0YXlpbmdX
aXRoaW5Gb2N1c2VkRWxlbWVudCwgW3ZpZXcgPSByZXRhaW5QdHIoc2VsZiksIGNvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHZpZXctPl91c2luZ0dlc3R1cmVGb3JTZWxlY3Rp
b24gPSBOTzsKLSAgICAgICAgW3NlbGVjdGlvbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgfSk7CiB9
CiAKIC0gKHZvaWQpc2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5OihVSVRleHRHcmFudWxhcml0eSln
cmFudWxhcml0eSBpbkRpcmVjdGlvbjooVUlUZXh0RGlyZWN0aW9uKWRpcmVjdGlvbiBmcm9tUG9p
bnQ6KENHUG9pbnQpcG9pbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CiAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IFlFUzsKLSAg
ICBVSVdLU2VsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgc2VsZWN0aW9uSGFuZGxlciA9IFtjb21w
bGV0aW9uSGFuZGxlciBjb3B5XTsKLSAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4gdmlldyA9
IHNlbGY7Ci0gICAgCi0gICAgX3BhZ2UtPnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24oV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51
bGFyaXR5KSwgdG9XS1NlbGVjdGlvbkRpcmVjdGlvbihkaXJlY3Rpb24pLCBzZWxmLl9oYXNGb2N1
c2VkRWxlbWVudCwgW3ZpZXcsIHNlbGVjdGlvbkhhbmRsZXJdKCkgewotICAgICAgICBzZWxlY3Rp
b25IYW5kbGVyKCk7CisgICAgX3BhZ2UtPnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24oV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51
bGFyaXR5KSwgdG9XS1NlbGVjdGlvbkRpcmVjdGlvbihkaXJlY3Rpb24pLCBzZWxmLl9oYXNGb2N1
c2VkRWxlbWVudCwgW3ZpZXcgPSByZXRhaW5QdHIoc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiAgICAgICAgIHZpZXctPl91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsK
LSAgICAgICAgW3NlbGVjdGlvbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgfSk7CiB9CiAKIC0gKHZv
aWQpbW92ZVNlbGVjdGlvbkF0Qm91bmRhcnk6KFVJVGV4dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5
IGluRGlyZWN0aW9uOihVSVRleHREaXJlY3Rpb24pZGlyZWN0aW9uIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIF91c2luZ0dlc3R1cmVG
b3JTZWxlY3Rpb24gPSBZRVM7Ci0gICAgVUlXS1NlbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIHNl
bGVjdGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgY29weV07Ci0gICAgUmV0YWluUHRy
PFdLQ29udGVudFZpZXc+IHZpZXcgPSBzZWxmOwotICAgIAotICAgIF9wYWdlLT5tb3ZlU2VsZWN0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odG9XS1RleHRHcmFudWxhcml0eShncmFudWxhcml0
eSksIHRvV0tTZWxlY3Rpb25EaXJlY3Rpb24oZGlyZWN0aW9uKSwgW3ZpZXcsIHNlbGVjdGlvbkhh
bmRsZXJdIHsKLSAgICAgICAgc2VsZWN0aW9uSGFuZGxlcigpOworICAgIF9wYWdlLT5tb3ZlU2Vs
ZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odG9XS1RleHRHcmFudWxhcml0eShncmFudWxh
cml0eSksIHRvV0tTZWxlY3Rpb25EaXJlY3Rpb24oZGlyZWN0aW9uKSwgW3ZpZXcgPSByZXRhaW5Q
dHIoc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICB2aWV3LT5fdXNp
bmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87Ci0gICAgICAgIFtzZWxlY3Rpb25IYW5kbGVyIHJl
bGVhc2VdOwogICAgIH0pOwogfQogCkBAIC00MzI1LDEyICs0MzE0LDkgQEAgLSAodm9pZCl1cGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQ6KENHUG9pbnQpcG9pbnQgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4KIAogLSAodm9pZCl1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQ6KENH
UG9pbnQpcG9pbnQgd2l0aEJvdW5kYXJ5OihVSVRleHRHcmFudWxhcml0eSlncmFudWxhcml0eSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBzZWxlY3Rpb25FbmRJc01vdmluZykpY29t
cGxldGlvbkhhbmRsZXIKIHsKLSAgICBVSVdLU2VsZWN0aW9uV2l0aERpcmVjdGlvbkNvbXBsZXRp
b25IYW5kbGVyIHNlbGVjdGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgY29weV07Ci0g
ICAgCiAgICAgKytfc3VwcHJlc3NOb25FZGl0YWJsZVNpbmdsZVRhcFRleHRJbnRlcmFjdGlvbkNv
dW50OwotICAgIF9wYWdlLT51cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFy
eShXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHRvV0tUZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJp
dHkpLCBzZWxmLl9oYXNGb2N1c2VkRWxlbWVudCwgW3NlbGVjdGlvbkhhbmRsZXIsIHByb3RlY3Rl
ZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIChib29sIGVuZElzTW92aW5nKSB7Ci0gICAgICAgIHNl
bGVjdGlvbkhhbmRsZXIoZW5kSXNNb3ZpbmcpOwotICAgICAgICBbc2VsZWN0aW9uSGFuZGxlciBy
ZWxlYXNlXTsKKyAgICBfcGFnZS0+dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91
bmRhcnkoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51
bGFyaXR5KSwgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciksIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZildIChib29sIGVuZElzTW92aW5nKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVu
ZElzTW92aW5nKTsKICAgICAgICAgLS1wcm90ZWN0ZWRTZWxmLT5fc3VwcHJlc3NOb25FZGl0YWJs
ZVNpbmdsZVRhcFRleHRJbnRlcmFjdGlvbkNvdW50OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0KaW5kZXggNTI4YjgwYzI3ZWFlZjNhM2Qy
NTY2NWY0YTdhOTAyYzc2MzUyZWRjMC4uYjgyYjQ1OTMyNGNkM2UxYmFlMGVkNTE3NTY4YTkyMzc5
OWFjNjRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xs
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1t
CkBAIC0xMjUsNyArMTI1LDcgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tTY3JvbGxWaWV3
IHsKICAgICBXZWFrT2JqQ1B0cjxpZCA8VUlTY3JvbGxWaWV3RGVsZWdhdGU+PiBfZXh0ZXJuYWxE
ZWxlZ2F0ZTsKLSAgICBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUZvcndhcmRlciAqX2RlbGVnYXRlRm9y
d2FyZGVyOworICAgIFJldGFpblB0cjxXS1Njcm9sbFZpZXdEZWxlZ2F0ZUZvcndhcmRlcj4gX2Rl
bGVnYXRlRm9yd2FyZGVyOwogCiAvLyBGSVhNRTogTGlrZWx5IHdlIGNhbiByZW1vdmUgdGhpcyBz
cGVjaWFsIGNhc2UgZm9yIHdhdGNoT1MgYW5kIHR2T1MuCiAjaWYgIVBMQVRGT1JNKFdBVENIT1Mp
ICYmICFQTEFURk9STShBUFBMRVRWKQpAQCAtMjA1LDIzICsyMDUsMjAgQEAgLSAoQk9PTClnZXN0
dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyIHNo
b3VsZEJlUmVxdWkKIAogLSAodm9pZClfdXBkYXRlRGVsZWdhdGUKIHsKLSAgICBXS1Njcm9sbFZp
ZXdEZWxlZ2F0ZUZvcndhcmRlciAqb2xkRm9yd2FyZGVyID0gX2RlbGVnYXRlRm9yd2FyZGVyOwot
ICAgIF9kZWxlZ2F0ZUZvcndhcmRlciA9IG5pbDsKKyAgICBhdXRvIG9sZEZvcndhcmRlciA9IHN0
ZDo6ZXhjaGFuZ2UoX2RlbGVnYXRlRm9yd2FyZGVyLCBuaWwpOwogICAgIGF1dG8gZXh0ZXJuYWxE
ZWxlZ2F0ZSA9IF9leHRlcm5hbERlbGVnYXRlLmdldCgpOwogICAgIGlmICghZXh0ZXJuYWxEZWxl
Z2F0ZSkKICAgICAgICAgW3N1cGVyIHNldERlbGVnYXRlOl9pbnRlcm5hbERlbGVnYXRlXTsKICAg
ICBlbHNlIGlmICghX2ludGVybmFsRGVsZWdhdGUpCiAgICAgICAgIFtzdXBlciBzZXREZWxlZ2F0
ZTpleHRlcm5hbERlbGVnYXRlLmdldCgpXTsKICAgICBlbHNlIHsKLSAgICAgICAgX2RlbGVnYXRl
Rm9yd2FyZGVyID0gW1tXS1Njcm9sbFZpZXdEZWxlZ2F0ZUZvcndhcmRlciBhbGxvY10gaW5pdFdp
dGhJbnRlcm5hbERlbGVnYXRlOl9pbnRlcm5hbERlbGVnYXRlIGV4dGVybmFsRGVsZWdhdGU6ZXh0
ZXJuYWxEZWxlZ2F0ZS5nZXQoKV07Ci0gICAgICAgIFtzdXBlciBzZXREZWxlZ2F0ZTpfZGVsZWdh
dGVGb3J3YXJkZXJdOworICAgICAgICBfZGVsZWdhdGVGb3J3YXJkZXIgPSBhZG9wdE5TKFtbV0tT
Y3JvbGxWaWV3RGVsZWdhdGVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoSW50ZXJuYWxEZWxlZ2F0
ZTpfaW50ZXJuYWxEZWxlZ2F0ZSBleHRlcm5hbERlbGVnYXRlOmV4dGVybmFsRGVsZWdhdGUuZ2V0
KCldKTsKKyAgICAgICAgW3N1cGVyIHNldERlbGVnYXRlOl9kZWxlZ2F0ZUZvcndhcmRlci5nZXQo
KV07CiAgICAgfQotICAgIFtvbGRGb3J3YXJkZXIgcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpZGVh
bGxvYwogewotICAgIFtfZGVsZWdhdGVGb3J3YXJkZXIgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRl
YWxsb2NdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCmluZGV4IDU3NzE0YjgzNTVlZGQ0NzEyZTZlMjgy
ZmE4N2VmZTJlZjRjODlhNDIuLjlhNWMwNzc1MTFmYTAzNmY4Mjc2NjlhYTNhMTRjYTQ1YzQyYWZi
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1T
ZWxlY3RQb3BvdmVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0Zvcm1TZWxlY3RQb3BvdmVyLm1tCkBAIC00MDEsMjYgKzQwMSwyMSBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBoYXNHcm91cHM6KEJPT0wpaGFz
R3JvdXBzCiAKICAgICBfdGFibGVWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS1NlbGVjdFRh
YmxlVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3IGhhc0dyb3VwczpoYXNH
cm91cHNdKTsKICAgICBbX3RhYmxlVmlld0NvbnRyb2xsZXIgc2V0UG9wb3ZlcjpzZWxmXTsKLSAg
ICBVSVZpZXdDb250cm9sbGVyICpwb3BvdmVyVmlld0NvbnRyb2xsZXIgPSBfdGFibGVWaWV3Q29u
dHJvbGxlci5nZXQoKTsKLSAgICBVSU5hdmlnYXRpb25Db250cm9sbGVyICpuYXZDb250cm9sbGVy
ID0gbmlsOworICAgIFJldGFpblB0cjxVSVZpZXdDb250cm9sbGVyPiBwb3BvdmVyVmlld0NvbnRy
b2xsZXIgPSBfdGFibGVWaWV3Q29udHJvbGxlci5nZXQoKTsKICAgICBCT09MIG5lZWRzTmF2aWdh
dGlvbkNvbnRyb2xsZXIgPSAhdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnRpdGxlLmlz
RW1wdHkoKTsKLSAgICBpZiAobmVlZHNOYXZpZ2F0aW9uQ29udHJvbGxlcikgewotICAgICAgICBu
YXZDb250cm9sbGVyID0gW1tVSU5hdmlnYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFJv
b3RWaWV3Q29udHJvbGxlcjpfdGFibGVWaWV3Q29udHJvbGxlci5nZXQoKV07Ci0gICAgICAgIHBv
cG92ZXJWaWV3Q29udHJvbGxlciA9IG5hdkNvbnRyb2xsZXI7Ci0gICAgfQorICAgIGlmIChuZWVk
c05hdmlnYXRpb25Db250cm9sbGVyKQorICAgICAgICBwb3BvdmVyVmlld0NvbnRyb2xsZXIgPSBh
ZG9wdE5TKFtbVUlOYXZpZ2F0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhSb290Vmlld0Nv
bnRyb2xsZXI6X3RhYmxlVmlld0NvbnRyb2xsZXIuZ2V0KCldKTsKICAgICAKICAgICBDR1NpemUg
cG9wb3ZlclNpemUgPSBbX3RhYmxlVmlld0NvbnRyb2xsZXIuZ2V0KCkudGFibGVWaWV3IHNpemVU
aGF0Rml0czpDR1NpemVNYWtlKDMyMCwgQ0dGTE9BVF9NQVgpXTsKICAgICBpZiAobmVlZHNOYXZp
Z2F0aW9uQ29udHJvbGxlcikKICAgICAgICAgWyhVSU5hdmlnYXRpb25Db250cm9sbGVyICopcG9w
b3ZlclZpZXdDb250cm9sbGVyIHRvcFZpZXdDb250cm9sbGVyXS5wcmVmZXJyZWRDb250ZW50U2l6
ZSA9IHBvcG92ZXJTaXplOwogICAgIGVsc2UKLSAgICAgICAgcG9wb3ZlclZpZXdDb250cm9sbGVy
LnByZWZlcnJlZENvbnRlbnRTaXplID0gcG9wb3ZlclNpemU7CisgICAgICAgIFtwb3BvdmVyVmll
d0NvbnRyb2xsZXIgc2V0UHJlZmVycmVkQ29udGVudFNpemU6IHBvcG92ZXJTaXplXTsKICAgICAK
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHNlbGYucG9wb3Zl
ckNvbnRyb2xsZXIgPSBbW1tVSVBvcG92ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRl
bnRWaWV3Q29udHJvbGxlcjpwb3BvdmVyVmlld0NvbnRyb2xsZXJdIGF1dG9yZWxlYXNlXTsKKyAg
ICBzZWxmLnBvcG92ZXJDb250cm9sbGVyID0gW1tbVUlQb3BvdmVyQ29udHJvbGxlciBhbGxvY10g
aW5pdFdpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6cG9wb3ZlclZpZXdDb250cm9sbGVyLmdldCgp
XSBhdXRvcmVsZWFzZV07CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAK
LSAgICBbbmF2Q29udHJvbGxlciByZWxlYXNlXTsKLQogI2lmICFVU0UoVUlLSVRfS0VZQk9BUkRf
QURESVRJT05TKQogICAgIFtbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2VdIHNldERlbGVn
YXRlOl90YWJsZVZpZXdDb250cm9sbGVyLmdldCgpXTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIu
bW0KaW5kZXggMzUyNzVkZjhmZDdjY2M0MDVjNjczMmQxYzg4ZmMxOTQ3Y2UxYTYyZi4uMGY4NmE1
NmVhYWE0MDg0ZWU3YmNmOWRjOGQ4YzZkMDMzMzVkNGZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1t
CkBAIC00Niw3ICs0Niw3IEBAIC0gKE5TQXJyYXkgKil2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRU
ZXh0CiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tUZXh0SW5wdXRQYW5lbCA6IFdlYlBhbmVsIHsKLSAg
ICBOU1RleHRWaWV3ICpfaW5wdXRUZXh0VmlldzsKKyAgICBSZXRhaW5QdHI8TlNUZXh0Vmlldz4g
X2lucHV0VGV4dFZpZXc7CiB9CiAKIC0gKE5TVGV4dElucHV0Q29udGV4dCAqKV9pbnB1dENvbnRl
eHQ7CkBAIC02NSw4ICs2NSw2IEBAIC0gKHZvaWQpZGVhbGxvYwogewogICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CiAgICAgCi0g
ICAgW19pbnB1dFRleHRWaWV3IHJlbGVhc2VdOwotICAgIAogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIApAQCAtODIsMTMgKzgwLDEyIEBAIC0gKGlkKWluaXQKICAgICAgCiAgICAgW3NlbGYgc2V0
RnJhbWU6ZnJhbWUgZGlzcGxheTpOT107CiAgICAgICAgIAotICAgIF9pbnB1dFRleHRWaWV3ID0g
W1tXS1RleHRJbnB1dFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6WyhOU1ZpZXcgKilzZWxmLmNv
bnRlbnRWaWV3IGZyYW1lXV07Ci0gICAgX2lucHV0VGV4dFZpZXcuYXV0b3Jlc2l6aW5nTWFzayA9
IE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUgfCBOU1ZpZXdNYXhYTWFy
Z2luIHwgTlNWaWV3TWluWE1hcmdpbiB8IE5TVmlld01heFlNYXJnaW4gfCBOU1ZpZXdNaW5ZTWFy
Z2luOworICAgIF9pbnB1dFRleHRWaWV3ID0gYWRvcHROUyhbW1dLVGV4dElucHV0VmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpbKE5TVmlldyAqKXNlbGYuY29udGVudFZpZXcgZnJhbWVdXSk7Cisg
ICAgW19pbnB1dFRleHRWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6IE5TVmlld1dpZHRoU2l6YWJs
ZSB8IE5TVmlld0hlaWdodFNpemFibGUgfCBOU1ZpZXdNYXhYTWFyZ2luIHwgTlNWaWV3TWluWE1h
cmdpbiB8IE5TVmlld01heFlNYXJnaW4gfCBOU1ZpZXdNaW5ZTWFyZ2luXTsKICAgICAgICAgCi0g
ICAgTlNTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0gW1tOU1Njcm9sbFZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6WyhOU1ZpZXcgKilzZWxmLmNvbnRlbnRWaWV3IGZyYW1lXV07Ci0gICAgc2Nyb2xs
Vmlldy5kb2N1bWVudFZpZXcgPSBfaW5wdXRUZXh0VmlldzsKLSAgICBzZWxmLmNvbnRlbnRWaWV3
ID0gc2Nyb2xsVmlldzsKLSAgICBbc2Nyb2xsVmlldyByZWxlYXNlXTsKKyAgICBhdXRvIHNjcm9s
bFZpZXcgPSBhZG9wdE5TKFtbTlNTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOlsoTlNW
aWV3ICopc2VsZi5jb250ZW50VmlldyBmcmFtZV1dKTsKKyAgICBbc2Nyb2xsVmlldyBzZXREb2N1
bWVudFZpZXc6IF9pbnB1dFRleHRWaWV3LmdldCgpXTsKKyAgICBzZWxmLmNvbnRlbnRWaWV3ID0g
c2Nyb2xsVmlldy5nZXQoKTsKICAgICAgICAgCiAgICAgW3NlbGYgc2V0RmxvYXRpbmdQYW5lbDpZ
RVNdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQ
aWNrZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJN
YWMubW0KaW5kZXggYWM3MmVhY2U2YzFjZmUwMTQxM2Y2NTU0NzhjMzc1N2Y2MjYzNmE4Yy4uOWYw
ZTIzOWY0MjVlYjdjZTk1MmRlNTQxNzZmYzA0ZjA0MGZlMWYxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQpAQCAtMTM4LDEwICsxMzgs
OSBAQCArIChOU1BvcG92ZXIgKilfY29sb3JQb3BvdmVyQ3JlYXRlSWZOZWNlc3Nhcnk6KEJPT0wp
Zm9yY2VDcmVhdGlvbgogICAgICAgICBbcG9wb3ZlciBfc2V0UmVxdWlyZXNDb3JyZWN0Q29udGVu
dEFwcGVhcmFuY2U6WUVTXTsKICAgICAgICAgcG9wb3Zlci5iZWhhdmlvciA9IE5TUG9wb3ZlckJl
aGF2aW9yVHJhbnNpZW50OwogCi0gICAgICAgIE5TQ29sb3JQb3BvdmVyQ29udHJvbGxlciAqY29u
dHJvbGxlciA9IFtbTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0NvbG9yUG9wb3ZlckNvbnRyb2xsZXIi
KSBhbGxvY10gaW5pdF07Ci0gICAgICAgIHBvcG92ZXIuY29udGVudFZpZXdDb250cm9sbGVyID0g
Y29udHJvbGxlcjsKLSAgICAgICAgY29udHJvbGxlci5wb3BvdmVyID0gcG9wb3ZlcjsKLSAgICAg
ICAgW2NvbnRyb2xsZXIgcmVsZWFzZV07CisgICAgICAgIGF1dG8gY29udHJvbGxlciA9IGFkb3B0
TlMoW1tOU0NsYXNzRnJvbVN0cmluZyhAIk5TQ29sb3JQb3BvdmVyQ29udHJvbGxlciIpIGFsbG9j
XSBpbml0XSk7CisgICAgICAgIHBvcG92ZXIuY29udGVudFZpZXdDb250cm9sbGVyID0gY29udHJv
bGxlci5nZXQoKTsKKyAgICAgICAgW2NvbnRyb2xsZXIgc2V0UG9wb3ZlcjogcG9wb3Zlcl07CiAK
ICAgICAgICAgY29sb3JQb3BvdmVyID0gcG9wb3ZlcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCmluZGV4IGM4ZDhhMjNjYWMyMDA3NzE5OWE3NDY3
MTMwNDIzMmE1ODIxMjhkMzEuLmY4MWE2YzdiM2NiZGY3MGQ0N2EwNTAyMmM1MTMyMmNkZTAzNTQ0
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCkBAIC0z
Myw3ICszMyw3IEBAIGNsYXNzIFdlYlBhZ2U7CiBAaW50ZXJmYWNlIFdLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlIDogTlNPYmplY3QgewogICAgIE5ha2VkUHRyPFdlYktpdDo6V2ViUGFn
ZT4gbV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIGlk
IG1fcGFyZW50OworICAgIFJldGFpblB0cjxpZD4gbV9wYXJlbnQ7CiAgICAgYm9vbCBtX2hhc01h
aW5GcmFtZVBsdWdpbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLm1tCmluZGV4IDdkYTU5M2UyMDBkNDRmMGZjZjc4OTMzODZlYjVhNzU2NDRkODZjNmYu
LmFhM2JlYzBkMDZjODhjYjVjN2NlMTlhMzIzOGU5N2RlMGRhNDBjNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KQEAgLTEzMSwxMCArMTMxLDggQEAg
LSAodm9pZClzZXRIYXNNYWluRnJhbWVQbHVnaW46KGJvb2wpaGFzUGx1Z2luCiAtICh2b2lkKXNl
dFJlbW90ZVBhcmVudDooaWQpcGFyZW50CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBpZiAocGFyZW50ICE9IG1fcGFyZW50KSB7Ci0gICAgICAgIFttX3BhcmVudCByZWxlYXNl
XTsKLSAgICAgICAgbV9wYXJlbnQgPSBbcGFyZW50IHJldGFpbl07Ci0gICAgfQorICAgIGlmIChw
YXJlbnQgIT0gbV9wYXJlbnQpCisgICAgICAgIG1fcGFyZW50ID0gcGFyZW50OwogfQogCiAtIChp
ZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdE1hYy5tbQppbmRleCBmYTM2NmQ4NjY0YWY1MjUwNDQ1MWVhODRmOGQ0OTI3
ZWMwY2IwMTU5Li42ZGFiY2ZjMjc1NGU1YWQzYTQxOTE4MWMyYTYxNmNkODBhYjBkNzk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbQpAQCAtNjMsNyArNjMs
NiBAQCBAaW1wbGVtZW50YXRpb24gV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdAogLSAodm9p
ZClkZWFsbG9jCiB7CiAgICAgTlNBY2Nlc3NpYmlsaXR5VW5yZWdpc3RlclVuaXF1ZUlkRm9yVUlF
bGVtZW50KHNlbGYpOwotICAgIFttX3BhcmVudCByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxv
Y107CiB9CiAKQEAgLTE2MSw3ICsxNjAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICAgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJp
bGl0eSgpOwogICAgIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlQYXJlbnRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gbV9wYXJlbnQ7CisgICAg
ICAgIHJldHVybiBtX3BhcmVudC5nZXQoKTsKICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlXSkKICAgICAgICAgcmV0
dXJuIFttX3BhcmVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
V2luZG93QXR0cmlidXRlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQppbmRleCA3NTA4MWQxZjU1
MTY4Y2MyYTEzNTNhZWNkNmQ5OTc0NWZlNjhmMzBkLi4wNjg3MDMyNjZmZGI3NTY3M2IxNDBhMDE1
YmFhNDk1NDVlYWJiNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBAIC0xMzMsNyArMTMz
LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OnJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVD
aG9vc2VyJiBjaG9vc2VyKQogewogICAgIGF1dG8mIHNldHRpbmdzID0gY2hvb3Nlci5zZXR0aW5n
cygpOwogICAgIEJPT0wgYWxsb3dNdWx0aXBsZUZpbGVzID0gc2V0dGluZ3MuYWxsb3dzTXVsdGlw
bGVGaWxlczsKLSAgICBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciAqbGlzdGVuZXIgPSBbW1dl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGFsbG9jXSBpbml0V2l0aENob29zZXI6Y2hvb3Nlcl07
CisgICAgYXV0byBsaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ciBhbGxvY10gaW5pdFdpdGhDaG9vc2VyOmNob29zZXJdKTsKIAogICAgIFdlYk1lZGlhQ2FwdHVy
ZVR5cGUgY2FwdHVyZVR5cGUgPSBXZWJNZWRpYUNhcHR1cmVUeXBlTm9uZTsKICNpZiBFTkFCTEUo
TUVESUFfQ0FQVFVSRSkKQEAgLTE0NiwxMyArMTQ2LDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
SU9TOjpydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYgY2hvb3NlcikKICAgICB9Owog
CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbdGhpcywgbGlzdGVuZXIgPSByZXRhaW5QdHIobGlzdGVuZXIpLCBjb25maWd1
cmF0aW9uID0gcmV0YWluUHRyKGNvbmZpZ3VyYXRpb24pXSB7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbdGhpcywgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKSwgY29uZmln
dXJhdGlvbiA9IHJldGFpblB0cihjb25maWd1cmF0aW9uKV0gewogICAgICAgICAgICAgW1t3ZWJW
aWV3KCkgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldygpIHJ1bk9wZW5Q
YW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6bGlzdGVuZXIuZ2V0KCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXTsKICAgICAgICAgfSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIFtbd2ViVmlldygpIF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZp
ZXcoKSBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOmxpc3RlbmVy
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07Ci0KLSAgICBbbGlzdGVuZXIgcmVsZWFzZV07
CisgICAgICAgIFtbd2ViVmlldygpIF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Ondl
YlZpZXcoKSBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOmxpc3Rl
bmVyLmdldCgpIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07CiB9CiAKIHZvaWQgV2ViQ2hy
b21lQ2xpZW50SU9TOjpzaG93U2hhcmVTaGVldChTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQppbmRleCBiZTVkNjQ3ZmRkYmIwYmNjZWM1MzE3
YzI3NzkxNTg2NzEyNjM4Yzg4Li44YWUzMmFhNGUxYjdiNWQyMjQ1ZjhiZTg0NDRmZmUxMDUwZmQx
MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZp
ZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3
SU9TLm1tCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGNyZWF0ZUNHQ29sb3JX
aXRoRGV2aWNlV2hpdGUoQ0dGbG9hdCB3aGl0ZSwgQ0dGbG9hdCBhbHBoYSkKIEBpbXBsZW1lbnRh
dGlvbiBXZWJQREZWaWV3IHsKICAgICBCT09MIGRhdGFTb3VyY2VIYXNCZWVuU2V0OwogICAgIENH
UERGRG9jdW1lbnRSZWYgX1BERkRvY3VtZW50OwotICAgIE5TU3RyaW5nICpfdGl0bGU7CisgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBfdGl0bGU7CiAgICAgQ0dSZWN0ICpfcGFnZVJlY3RzOwogfQog
CkBAIC0xMDksNyArMTA5LDYgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgaWYgKF9QREZEb2N1bWVu
dCAhPSBOVUxMKQogICAgICAgICBDR1BERkRvY3VtZW50UmVsZWFzZShfUERGRG9jdW1lbnQpOwog
ICAgIGZyZWUoX3BhZ2VSZWN0cyk7Ci0gICAgW190aXRsZSByZWxlYXNlXTsKICAgICBbc3VwZXIg
ZGVhbGxvY107CiB9CiAKQEAgLTIwMyw3ICsyMDIsNyBAQCAtICh2b2lkKXNldERhdGFTb3VyY2U6
KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgh
X3RpdGxlKQotICAgICAgICBfdGl0bGUgPSBbW1tbZGF0YVNvdXJjZSByZXF1ZXN0XSBVUkxdIGxh
c3RQYXRoQ29tcG9uZW50XSBjb3B5XTsKKyAgICAgICAgX3RpdGxlID0gYWRvcHROUyhbW1tbZGF0
YVNvdXJjZSByZXF1ZXN0XSBVUkxdIGxhc3RQYXRoQ29tcG9uZW50XSBjb3B5XSk7CiAKICAgICBX
QUtWaWV3ICogc3VwZXJ2aWV3ID0gW3NlbGYgc3VwZXJ2aWV3XTsKICAgICAKQEAgLTI5Niw4ICsy
OTUsNyBAQCAtICh2b2lkKV9jaGVja1BERlRpdGxlCiAgICAgICAgIHRpdGxlID0gWyhOU1N0cmlu
ZyAqKUNHUERGU3RyaW5nQ29weVRleHRTdHJpbmcodmFsdWUpIGF1dG9yZWxlYXNlXTsKIAogICAg
IGlmIChbdGl0bGUgbGVuZ3RoXSkgewotICAgICAgICBbX3RpdGxlIHJlbGVhc2VdOwotICAgICAg
ICBfdGl0bGUgPSBbdGl0bGUgY29weV07CisgICAgICAgIF90aXRsZSA9IGFkb3B0TlMoW3RpdGxl
IGNvcHldKTsKICAgICAgICAgY29yZShbc2VsZiBfZnJhbWVdKS0+bG9hZGVyKCkuY2xpZW50KCku
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoeyB0aXRsZSwgVGV4dERpcmVjdGlvbjo6TFRSIH0pOwog
ICAgIH0KIH0KQEAgLTM0NCw3ICszNDIsNyBAQCAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNl
CiAKIC0gKE5TU3RyaW5nICopdGl0bGUKIHsKLSAgICByZXR1cm4gX3RpdGxlOworICAgIHJldHVy
biBfdGl0bGUuZ2V0KCk7CiB9CiAKIC0gKHVuc2lnbmVkKXBhZ2VOdW1iZXJGb3JSZWN0OihDR1Jl
Y3QpcmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQ
REZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dl
YlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCBmZTQ0OTY2YjA5MTJlOTRhZTRjZGQ1NmVhYTc0
NTY5M2I2MTQxYTI4Li42OTZkZjViNjkxMTNmMTUyODk5NWRkMmQzYTIwMjdjNTViMzRhNjNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFj
ZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZp
ZXdQbGFjZWhvbGRlci5tbQpAQCAtMzI4LDE5ICszMjgsMTcgQEAgLSAodm9pZClfdXBkYXRlVGl0
bGVGb3JEb2N1bWVudElmQXZhaWxhYmxlCiAgICAgaWYgKCFfZG9jdW1lbnQgfHwgIUNHUERGRG9j
dW1lbnRJc1VubG9ja2VkKF9kb2N1bWVudCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TU3Ry
aW5nICp0aXRsZSA9IG5pbDsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHRpdGxlOwogCiAgICAg
Q0dQREZEaWN0aW9uYXJ5UmVmIGluZm8gPSBDR1BERkRvY3VtZW50R2V0SW5mbyhfZG9jdW1lbnQp
OwogICAgIENHUERGU3RyaW5nUmVmIHZhbHVlOwogICAgIGlmIChDR1BERkRpY3Rpb25hcnlHZXRT
dHJpbmcoaW5mbywgIlRpdGxlIiwgJnZhbHVlKSkKLSAgICAgICAgdGl0bGUgPSAoTlNTdHJpbmcg
KilDR1BERlN0cmluZ0NvcHlUZXh0U3RyaW5nKHZhbHVlKTsKKyAgICAgICAgdGl0bGUgPSBhZG9w
dE5TKChOU1N0cmluZyAqKUNHUERGU3RyaW5nQ29weVRleHRTdHJpbmcodmFsdWUpKTsKIAogICAg
IGlmIChbdGl0bGUgbGVuZ3RoXSkgewotICAgICAgICBbc2VsZiBzZXRUaXRsZTp0aXRsZV07Ci0g
ICAgICAgIFtbc2VsZiBfZnJhbWVdIF9kaXNwYXRjaERpZFJlY2VpdmVUaXRsZTp0aXRsZV07Cisg
ICAgICAgIFtzZWxmIHNldFRpdGxlOnRpdGxlLmdldCgpXTsKKyAgICAgICAgW1tzZWxmIF9mcmFt
ZV0gX2Rpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlOnRpdGxlLmdldCgpXTsKICAgICB9Ci0KLSAgICBb
dGl0bGUgcmVsZWFzZV07CiB9CiAKIC0gKENHUmVjdClfZ2V0UERGUGFnZUJvdW5kczooQ0dQREZQ
YWdlUmVmKXBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01V
SUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRF
eHRlbnNpb25zLm1tCmluZGV4IGI1MjA2OGQ1YzVmMzUxNjMwYmNjZTkxY2QyNDU3NWY1MWIzYzAy
ZWMuLjhjYWY3NThiOGE2NTBlOGJmYzM4ZTcxMGRlNDdmNTJhOGM4MTU0ZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMTgz
LDkgKzE4Myw4IEBAIC0gKE5TQXJyYXkgKilhYnNvbHV0ZVF1YWRzCiAgICAgfQogCiAgICAgaWYg
KCFbcXVhZHMgY291bnRdKSB7Ci0gICAgICAgIFdLUXVhZE9iamVjdCogcXVhZE9iamVjdCA9IFtb
V0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkXV07Ci0g
ICAgICAgIHF1YWRzID0gQFtxdWFkT2JqZWN0XTsKLSAgICAgICAgW3F1YWRPYmplY3QgcmVsZWFz
ZV07CisgICAgICAgIGF1dG8gcXVhZE9iamVjdCA9IGFkb3B0TlMoW1tXS1F1YWRPYmplY3QgYWxs
b2NdIGluaXRXaXRoUXVhZDpbc2VsZiBhYnNvbHV0ZVF1YWRdXSk7CisgICAgICAgIHF1YWRzID0g
QFtxdWFkT2JqZWN0LmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcXVhZHM7CkBAIC0zNjAs
OSArMzU5LDggQEAgLSAoTlNBcnJheSAqKWJvdW5kaW5nQm94ZXNXaXRoT3duZXI6KERPTU5vZGUg
Kilvd25lcgogCiAtIChOU0FycmF5ICopYWJzb2x1dGVRdWFkc1dpdGhPd25lcjooRE9NTm9kZSAq
KW93bmVyCiB7Ci0gICAgV0tRdWFkT2JqZWN0ICpxdWFkT2JqZWN0ID0gW1tXS1F1YWRPYmplY3Qg
YWxsb2NdIGluaXRXaXRoUXVhZDpbc2VsZiBhYnNvbHV0ZVF1YWRXaXRoT3duZXI6b3duZXJdXTsK
LSAgICBOU0FycmF5ICpxdWFkQXJyYXkgPSBAW3F1YWRPYmplY3RdOwotICAgIFtxdWFkT2JqZWN0
IHJlbGVhc2VdOworICAgIGF1dG8gcXVhZE9iamVjdCA9IGFkb3B0TlMoW1tXS1F1YWRPYmplY3Qg
YWxsb2NdIGluaXRXaXRoUXVhZDpbc2VsZiBhYnNvbHV0ZVF1YWRXaXRoT3duZXI6b3duZXJdXSk7
CisgICAgTlNBcnJheSAqcXVhZEFycmF5ID0gQFtxdWFkT2JqZWN0LmdldCgpXTsKICAgICByZXR1
cm4gcXVhZEFycmF5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRXhjZXB0aW9uSGFuZGxlcnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRXhj
ZXB0aW9uSGFuZGxlcnMubW0KaW5kZXggYzhiZTU1MWI4NTBiY2UxNzIzYTJmMTE0ZTJkZWU2Y2U2
ZGQyOTVhMS4uNzlkN2MwMDM2ZjA4MDhjMDIxY2IxMWZlN2U1NTM3ZGNhZTI0YjBmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbQpAQCAt
NDIsMTkgKzQyLDE1IEBAIHN0YXRpYyBOT19SRVRVUk4gdm9pZCByYWlzZURPTUVycm9yRXhjZXB0
aW9uKFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMpCiAKICAgICBhdXRvIGRlc2NyaXB0aW9uID0g
V2ViQ29yZTo6RE9NRXhjZXB0aW9uOjpkZXNjcmlwdGlvbihlYyk7CiAKLSAgICBOU1N0cmluZyAq
cmVhc29uOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gcmVhc29uOwogICAgIGlmIChkZXNjcmlw
dGlvbi5uYW1lKQotICAgICAgICByZWFzb24gPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZv
cm1hdDpAIioqKiAlczogJUAgJWQiLCBkZXNjcmlwdGlvbi5uYW1lLmNoYXJhY3RlcnMoKSwgRE9N
RXhjZXB0aW9uLCBkZXNjcmlwdGlvbi5sZWdhY3lDb2RlXTsKKyAgICAgICAgcmVhc29uID0gYWRv
cHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIioqKiAlczogJUAgJWQiLCBk
ZXNjcmlwdGlvbi5uYW1lLmNoYXJhY3RlcnMoKSwgRE9NRXhjZXB0aW9uLCBkZXNjcmlwdGlvbi5s
ZWdhY3lDb2RlXSk7CiAgICAgZWxzZQotICAgICAgICByZWFzb24gPSBbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aEZvcm1hdDpAIioqKiAlQCAlZCIsIERPTUV4Y2VwdGlvbiwgZGVzY3JpcHRpb24u
bGVnYWN5Q29kZV07CisgICAgICAgIHJlYXNvbiA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhGb3JtYXQ6QCIqKiogJUAgJWQiLCBET01FeGNlcHRpb24sIGRlc2NyaXB0aW9uLmxl
Z2FjeUNvZGVdKTsKIAotICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBbW05TRGljdGlvbmFy
eSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpAKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUp
LCBET01FeGNlcHRpb24sIG5pbF07Ci0KLSAgICBOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uID0gW05T
RXhjZXB0aW9uIGV4Y2VwdGlvbldpdGhOYW1lOkRPTUV4Y2VwdGlvbiByZWFzb246cmVhc29uIHVz
ZXJJbmZvOnVzZXJJbmZvXTsKLQotICAgIFtyZWFzb24gcmVsZWFzZV07Ci0gICAgW3VzZXJJbmZv
IHJlbGVhc2VdOworICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOkAoZGVzY3JpcHRpb24ubGVnYWN5Q29kZSksIERP
TUV4Y2VwdGlvbiwgbmlsXSk7CiAKKyAgICBOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uID0gW05TRXhj
ZXB0aW9uIGV4Y2VwdGlvbldpdGhOYW1lOkRPTUV4Y2VwdGlvbiByZWFzb246cmVhc29uLmdldCgp
IHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXTsKICAgICBbZXhjZXB0aW9uIHJhaXNlXTsKIAogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0
ZS5tbQppbmRleCBkY2I3YzkzMWM5Njc3NmZkMDhmNDk2YWZiYzlmMWY0ZDIwZWUyMTNhLi4wZjU4
OGQyMDFmYjg2M2Q0YzUzNDY2M2VhOTU0MTEyZGI0ZjdlZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVs
dFVJRGVsZWdhdGUubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3
LmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbXBvcnQgIldlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5oIgpAQCAtMTkyLDcgKzE5
Myw3IEBAIC0gKEJPT0wpd2ViVmlldzogKFdlYlZpZXcgKil3diBydW5KYXZhU2NyaXB0Q29uZmly
bVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopCiAtIChOU1N0cmluZyAqKXdlYlZpZXc6IChX
ZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdHJp
bmcgKilwcm9tcHQgZGVmYXVsdFRleHQ6KE5TU3RyaW5nICopZGVmYXVsdFRleHQgaW5pdGlhdGVk
QnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbCAqcGFuZWwgPSBbW1dlYkphdmFTY3JpcHRU
ZXh0SW5wdXRQYW5lbCBhbGxvY10gaW5pdFdpdGhQcm9tcHQ6cHJvbXB0IHRleHQ6ZGVmYXVsdFRl
eHRdOworICAgIGF1dG8gcGFuZWwgPSBhZG9wdE5TKFtbV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBh
bmVsIGFsbG9jXSBpbml0V2l0aFByb21wdDpwcm9tcHQgdGV4dDpkZWZhdWx0VGV4dF0pOwogICAg
IFtwYW5lbCBzaG93V2luZG93Om5pbF07CiAgICAgTlNTdHJpbmcgKnJlc3VsdDsKICAgICBpZiAo
W05TQXBwIHJ1bk1vZGFsRm9yV2luZG93OltwYW5lbCB3aW5kb3ddXSkKQEAgLTIwMCw3ICsyMDEs
NiBAQCAtIChOU1N0cmluZyAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdFRl
eHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdAogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0g
bmlsOwogICAgIFtbcGFuZWwgd2luZG93XSBjbG9zZV07Ci0gICAgW3BhbmVsIHJlbGVhc2VdOwog
ICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KaW5kZXggZjI3NDcwZGJjMzAwY2Fh
MGU1Y2MwMjlhMjdiMmRhMTM5ZmFmMjFlZi4uOWJmMzAyMGFhMzI2ZTk2NTk1OWQ2NGM2ZjgwMGQx
NjUyNTlhMGJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9X
ZWJIaXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlz
dG9yeS5tbQpAQCAtNzksOSArNzksOSBAQCBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViSGlzdG9yeVBy
aXZhdGUgOiBOU09iamVjdCB7CiBAcHJpdmF0ZQotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9l
bnRyaWVzQnlVUkw7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IF9lbnRyaWVz
QnlVUkw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGVUb0VudHJpZXNNYXA+IF9lbnRyaWVzQnlE
YXRlOwotICAgIE5TTXV0YWJsZUFycmF5ICpfb3JkZXJlZExhc3RWaXNpdGVkRGF5czsKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9vcmRlcmVkTGFzdFZpc2l0ZWREYXlzOwogICAgIEJP
T0wgaXRlbUxpbWl0U2V0OwogICAgIGludCBpdGVtTGltaXQ7CiAgICAgQk9PTCBhZ2VJbkRheXNM
aW1pdFNldDsKQEAgLTEzMSw3ICsxMzEsNyBAQCAtIChpZClpbml0CiAgICAgaWYgKCFzZWxmKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIF9lbnRyaWVzQnlVUkwgPSBbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgIF9lbnRyaWVzQnlVUkwgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIF9lbnRyaWVzQnlEYXRlID0g
bWFrZVVuaXF1ZTxEYXRlVG9FbnRyaWVzTWFwPigpOwogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0x
MzksOCArMTM5LDYgQEAgLSAoaWQpaW5pdAogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbX2Vu
dHJpZXNCeVVSTCByZWxlYXNlXTsKLSAgICBbX29yZGVyZWRMYXN0VmlzaXRlZERheXMgcmVsZWFz
ZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC0yMzgsNyArMjM2LDYgQEAgLSAoQk9P
TClyZW1vdmVJdGVtRnJvbURhdGVDYWNoZXM6KFdlYkhpc3RvcnlJdGVtICopZW50cnkKICAgICBp
ZiAoW2VudHJpZXNGb3JEYXRlIGNvdW50XSA9PSAwKSB7CiAgICAgICAgIF9lbnRyaWVzQnlEYXRl
LT5yZW1vdmUoaXQpOwogICAgICAgICAvLyBDbGVhciBfb3JkZXJlZExhc3RWaXNpdGVkRGF5cyBz
byBpdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIHdoZW4gbmV4dCByZXF1ZXN0ZWQuCi0gICAgICAgIFtf
b3JkZXJlZExhc3RWaXNpdGVkRGF5cyByZWxlYXNlXTsKICAgICAgICAgX29yZGVyZWRMYXN0Vmlz
aXRlZERheXMgPSBuaWw7CiAgICAgfQogICAgIApAQCAtMjc0LDExICsyNzEsOSBAQCAtICh2b2lk
KWFkZEl0ZW1Ub0RhdGVDYWNoZXM6KFdlYkhpc3RvcnlJdGVtICopZW50cnkKICAgICAgICAgW3Nl
bGYgaW5zZXJ0SXRlbTplbnRyeSBmb3JEYXRlS2V5OmRhdGVLZXldOwogICAgIGVsc2UgewogICAg
ICAgICAvLyBubyBvdGhlciBlbnRyaWVzIGV4aXN0IGZvciB0aGlzIGRhdGUKLSAgICAgICAgTlNN
dXRhYmxlQXJyYXkgKmVudHJpZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9i
amVjdHM6JmVudHJ5IGNvdW50OjFdOwotICAgICAgICBfZW50cmllc0J5RGF0ZS0+c2V0KGRhdGVL
ZXksIGVudHJpZXMpOwotICAgICAgICBbZW50cmllcyByZWxlYXNlXTsKKyAgICAgICAgYXV0byBl
bnRyaWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6
JmVudHJ5IGNvdW50OjFdKTsKKyAgICAgICAgX2VudHJpZXNCeURhdGUtPnNldChkYXRlS2V5LCBl
bnRyaWVzLmdldCgpKTsKICAgICAgICAgLy8gQ2xlYXIgX29yZGVyZWRMYXN0VmlzaXRlZERheXMg
c28gaXQgd2lsbCBiZSByZWdlbmVyYXRlZCB3aGVuIG5leHQgcmVxdWVzdGVkLgotICAgICAgICBb
X29yZGVyZWRMYXN0VmlzaXRlZERheXMgcmVsZWFzZV07CiAgICAgICAgIF9vcmRlcmVkTGFzdFZp
c2l0ZWREYXlzID0gbmlsOwogICAgIH0KIH0KQEAgLTI5MSwyNiArMjg2LDI1IEBAIC0gKFdlYkhp
c3RvcnlJdGVtICopdmlzaXRlZFVSTDooTlNVUkwgKil1cmwgd2l0aFRpdGxlOihOU1N0cmluZyAq
KXRpdGxlCiAgICAgTlNTdHJpbmcgKlVSTFN0cmluZyA9IFt1cmwgX3dlYl9vcmlnaW5hbERhdGFB
c1N0cmluZ107CiAgICAgaWYgKCFVUkxTdHJpbmcpCiAgICAgICAgIFVSTFN0cmluZyA9IEAiIjsK
LSAgICBXZWJIaXN0b3J5SXRlbSAqZW50cnkgPSBbX2VudHJpZXNCeVVSTCBvYmplY3RGb3JLZXk6
VVJMU3RyaW5nXTsKKyAgICBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+IGVudHJ5ID0gW19lbnRy
aWVzQnlVUkwgb2JqZWN0Rm9yS2V5OlVSTFN0cmluZ107CiAKICAgICBpZiAoZW50cnkpIHsKLSAg
ICAgICAgTE9HKEhpc3RvcnksICJVcGRhdGluZyBnbG9iYWwgaGlzdG9yeSBlbnRyeSAlQCIsIGVu
dHJ5KTsKKyAgICAgICAgTE9HKEhpc3RvcnksICJVcGRhdGluZyBnbG9iYWwgaGlzdG9yeSBlbnRy
eSAlQCIsIGVudHJ5LmdldCgpKTsKICAgICAgICAgLy8gUmVtb3ZlIHRoZSBpdGVtIGZyb20gZGF0
ZSBjYWNoZXMgYmVmb3JlIGNoYW5naW5nIGl0cyBsYXN0IHZpc2l0ZWQgZGF0ZS4gIE90aGVyd2lz
ZSB3ZSBtaWdodCBnZXQgZHVwbGljYXRlIGVudHJpZXMKICAgICAgICAgLy8gYXMgc2VlbiBpbiA8
cmRhcjovL3Byb2JsZW0vNjU3MDU3Mz4uCi0gICAgICAgIEJPT0wgaXRlbVdhc0luRGF0ZUNhY2hl
cyA9IFtzZWxmIHJlbW92ZUl0ZW1Gcm9tRGF0ZUNhY2hlczplbnRyeV07CisgICAgICAgIEJPT0wg
aXRlbVdhc0luRGF0ZUNhY2hlcyA9IFtzZWxmIHJlbW92ZUl0ZW1Gcm9tRGF0ZUNhY2hlczplbnRy
eS5nZXQoKV07CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoaXRlbVdhc0luRGF0ZUNhY2hlcywgaXRl
bVdhc0luRGF0ZUNhY2hlcyk7CiAKICAgICAgICAgW2VudHJ5IF92aXNpdGVkV2l0aFRpdGxlOnRp
dGxlXTsKICAgICB9IGVsc2UgewogICAgICAgICBMT0coSGlzdG9yeSwgIkFkZGluZyBuZXcgZ2xv
YmFsIGhpc3RvcnkgZW50cnkgZm9yICVAIiwgdXJsKTsKLSAgICAgICAgZW50cnkgPSBbW1dlYkhp
c3RvcnlJdGVtIGFsbG9jXSBpbml0V2l0aFVSTFN0cmluZzpVUkxTdHJpbmcgdGl0bGU6dGl0bGUg
bGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWw6W05TRGF0ZSB0aW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5j
ZURhdGVdXTsKLSAgICAgICAgW19lbnRyaWVzQnlVUkwgc2V0T2JqZWN0OmVudHJ5IGZvcktleTpV
UkxTdHJpbmddOwotICAgICAgICBbZW50cnkgcmVsZWFzZV07CisgICAgICAgIGVudHJ5ID0gYWRv
cHROUyhbW1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0V2l0aFVSTFN0cmluZzpVUkxTdHJpbmcg
dGl0bGU6dGl0bGUgbGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWw6W05TRGF0ZSB0aW1lSW50ZXJ2YWxT
aW5jZVJlZmVyZW5jZURhdGVdXSk7CisgICAgICAgIFtfZW50cmllc0J5VVJMIHNldE9iamVjdDpl
bnRyeS5nZXQoKSBmb3JLZXk6VVJMU3RyaW5nXTsKICAgICB9CiAgICAgCi0gICAgW3NlbGYgYWRk
SXRlbVRvRGF0ZUNhY2hlczplbnRyeV07CisgICAgW3NlbGYgYWRkSXRlbVRvRGF0ZUNhY2hlczpl
bnRyeS5nZXQoKV07CiAKLSAgICByZXR1cm4gZW50cnk7CisgICAgcmV0dXJuIGVudHJ5LmdldCgp
OwogfQogCiAtIChCT09MKWFkZEl0ZW06KFdlYkhpc3RvcnlJdGVtICopZW50cnkgZGlzY2FyZER1
cGxpY2F0ZTooQk9PTClkaXNjYXJkRHVwbGljYXRlCkBAIC0zMjEsMzMgKzMxNSwyMiBAQCAtIChC
T09MKWFkZEl0ZW06KFdlYkhpc3RvcnlJdGVtICopZW50cnkgZGlzY2FyZER1cGxpY2F0ZTooQk9P
TClkaXNjYXJkRHVwbGljYXRlCiAgICAgTlNTdHJpbmcgKlVSTFN0cmluZyA9IFtlbnRyeSBVUkxT
dHJpbmddOwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgV2ViSGlzdG9yeUl0ZW0g
Km9sZEVudHJ5ID0gW19lbnRyaWVzQnlVUkwgb2JqZWN0Rm9yS2V5OlVSTFN0cmluZ107Ci0gICAg
aWYgKG9sZEVudHJ5KSB7CisgICAgaWYgKGF1dG8gb2xkRW50cnkgPSByZXRhaW5QdHIoW19lbnRy
aWVzQnlVUkwgb2JqZWN0Rm9yS2V5OlVSTFN0cmluZ10pKSB7CiAgICAgICAgIGlmIChkaXNjYXJk
RHVwbGljYXRlKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgICAgIC8vIFRoZSBsYXN0
IHJlZmVyZW5jZSB0byBvbGRFbnRyeSBtaWdodCBiZSB0aGlzIGRpY3Rpb25hcnksIHNvIHdlIGhv
bGQgb250byBhIHJlZmVyZW5jZQotICAgICAgICAvLyB1bnRpbCB3ZSdyZSBkb25lIHdpdGggb2xk
RW50cnkuCi0gICAgICAgIFtvbGRFbnRyeSByZXRhaW5dOwogICAgICAgICBbc2VsZiByZW1vdmVJ
dGVtRm9yVVJMU3RyaW5nOlVSTFN0cmluZ107Ci0gICAgICAgIFtvbGRFbnRyeSByZWxlYXNlXTsK
ICAgICB9CiAKICAgICBbc2VsZiBhZGRJdGVtVG9EYXRlQ2FjaGVzOmVudHJ5XTsKICAgICBbX2Vu
dHJpZXNCeVVSTCBzZXRPYmplY3Q6ZW50cnkgZm9yS2V5OlVSTFN0cmluZ107CiAjZWxzZQotICAg
IFdlYkhpc3RvcnlJdGVtICpvdGhlckVudHJ5ID0gW19lbnRyaWVzQnlVUkwgb2JqZWN0Rm9yS2V5
OlVSTFN0cmluZ107Ci0gICAgaWYgKG90aGVyRW50cnkpIHsKKyAgICBpZiAoYXV0byBvdGhlckVu
dHJ5ID0gcmV0YWluUHRyKFtfZW50cmllc0J5VVJMIG9iamVjdEZvcktleTpVUkxTdHJpbmddKSkg
ewogICAgICAgICBpZiAoZGlzY2FyZER1cGxpY2F0ZSkKICAgICAgICAgICAgIHJldHVybiBOTzsK
IAogICAgICAgICBpZiAoW290aGVyRW50cnkgbGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWxdIDwgW2Vu
dHJ5IGxhc3RWaXNpdGVkVGltZUludGVydmFsXSkgewotICAgICAgICAgICAgLy8gVGhlIGxhc3Qg
cmVmZXJlbmNlIHRvIG9sZEVudHJ5IG1pZ2h0IGJlIHRoaXMgZGljdGlvbmFyeSwgc28gd2UgaG9s
ZCBvbnRvIGEgcmVmZXJlbmNlCi0gICAgICAgICAgICAvLyB1bnRpbCB3ZSdyZSBkb25lIHdpdGgg
b2xkRW50cnkuCi0gICAgICAgICAgICBbb3RoZXJFbnRyeSByZXRhaW5dOwogICAgICAgICAgICAg
W3NlbGYgcmVtb3ZlSXRlbUZvclVSTFN0cmluZzpVUkxTdHJpbmddOwotICAgICAgICAgICAgW290
aGVyRW50cnkgcmVsZWFzZV07Ci0KICAgICAgICAgICAgIFtzZWxmIGFkZEl0ZW1Ub0RhdGVDYWNo
ZXM6ZW50cnldOwogICAgICAgICAgICAgW19lbnRyaWVzQnlVUkwgc2V0T2JqZWN0OmVudHJ5IGZv
cktleTpVUkxTdHJpbmddOwogICAgICAgICB9IGVsc2UKQEAgLTM2OCwxMCArMzUxLDggQEAgLSAo
dm9pZClyZWJ1aWxkSGlzdG9yeUJ5RGF5SWZOZWVkZWQ6KFdlYkhpc3RvcnkgKil3ZWJIaXN0b3J5
CiAgICAgYXV0byBlbnRyeUFycmF5cyA9IGNvcHlUb1ZlY3RvcihfZW50cmllc0J5RGF0ZS0+dmFs
dWVzKCkpOwogICAgIF9lbnRyaWVzQnlEYXRlLT5jbGVhcigpOwogICAgIAotICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmVudHJpZXNCeVVSTCA9IF9lbnRyaWVzQnlVUkw7Ci0gICAgX2VudHJpZXNC
eVVSTCA9IG5pbDsKKyAgICBhdXRvIGVudHJpZXNCeVVSTCA9IHN0ZDo6ZXhjaGFuZ2UoX2VudHJp
ZXNCeVVSTCwgbmlsKTsKICAgICAKLSAgICBbX29yZGVyZWRMYXN0VmlzaXRlZERheXMgcmVsZWFz
ZV07CiAgICAgX29yZGVyZWRMYXN0VmlzaXRlZERheXMgPSBuaWw7CiAgICAgCiAgICAgTlNBcnJh
eSAqYWxsRW50cmllcyA9IFtlbnRyaWVzQnlVUkwgYWxsVmFsdWVzXTsKQEAgLTQyMyw3ICs0MDQs
NiBAQCAtIChCT09MKXJlbW92ZUFsbEl0ZW1zCiAgICAgW19lbnRyaWVzQnlVUkwgcmVtb3ZlQWxs
T2JqZWN0c107CiAKICAgICAvLyBDbGVhciBfb3JkZXJlZExhc3RWaXNpdGVkRGF5cyBzbyBpdCB3
aWxsIGJlIHJlZ2VuZXJhdGVkIHdoZW4gbmV4dCByZXF1ZXN0ZWQuCi0gICAgW19vcmRlcmVkTGFz
dFZpc2l0ZWREYXlzIHJlbGVhc2VdOwogICAgIF9vcmRlcmVkTGFzdFZpc2l0ZWREYXlzID0gbmls
OwogCiAgICAgV2ViVmlzaXRlZExpbmtTdG9yZTo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7CkBA
IC00NTgsMTUgKzQzOCwxNCBAQCAtIChOU0FycmF5ICopb3JkZXJlZExhc3RWaXNpdGVkRGF5cwog
CiAgICAgICAgIHN0ZDo6c29ydChkYXlzQXNUaW1lSW50ZXJ2YWxzLmJlZ2luKCksIGRheXNBc1Rp
bWVJbnRlcnZhbHMuZW5kKCkpOwogICAgICAgICBzaXplX3QgY291bnQgPSBkYXlzQXNUaW1lSW50
ZXJ2YWxzLnNpemUoKTsKLSAgICAgICAgX29yZGVyZWRMYXN0VmlzaXRlZERheXMgPSBbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvdW50XTsKKyAgICAgICAgX29yZGVy
ZWRMYXN0VmlzaXRlZERheXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQ2FwYWNpdHk6Y291bnRdKTsKICAgICAgICAgZm9yIChpbnQgaSA9IGNvdW50IC0gMTsgaSA+
PSAwOyBpLS0pIHsKICAgICAgICAgICAgIE5TVGltZUludGVydmFsIGludGVydmFsID0gZGF5c0Fz
VGltZUludGVydmFsc1tpXTsKLSAgICAgICAgICAgIE5TQ2FsZW5kYXJEYXRlICpkYXRlID0gW1tO
U0NhbGVuZGFyRGF0ZSBhbGxvY10gaW5pdFdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURh
dGU6aW50ZXJ2YWxdOwotICAgICAgICAgICAgW19vcmRlcmVkTGFzdFZpc2l0ZWREYXlzIGFkZE9i
amVjdDpkYXRlXTsKLSAgICAgICAgICAgIFtkYXRlIHJlbGVhc2VdOworICAgICAgICAgICAgYXV0
byBkYXRlID0gYWRvcHROUyhbW05TQ2FsZW5kYXJEYXRlIGFsbG9jXSBpbml0V2l0aFRpbWVJbnRl
cnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTppbnRlcnZhbF0pOworICAgICAgICAgICAgW19vcmRlcmVk
TGFzdFZpc2l0ZWREYXlzIGFkZE9iamVjdDpkYXRlLmdldCgpXTsKICAgICAgICAgfQogICAgIH0K
LSAgICByZXR1cm4gX29yZGVyZWRMYXN0VmlzaXRlZERheXM7CisgICAgcmV0dXJuIF9vcmRlcmVk
TGFzdFZpc2l0ZWREYXlzLmdldCgpOwogfQogCiAtIChOU0FycmF5ICopb3JkZXJlZEl0ZW1zTGFz
dFZpc2l0ZWRPbkRheTooTlNDYWxlbmRhckRhdGUgKilkYXRlCkBAIC01OTMsNyArNTcyLDcgQEAg
LSAoQk9PTClsb2FkSGlzdG9yeUd1dHNGcm9tVVJMOihOU1VSTCAqKVVSTCBzYXZlZEl0ZW1zQ291
bnQ6KGludCAqKW51bWJlck9mSXRlbXMKIAogICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppdGVtQXNE
aWN0aW9uYXJ5IGluIGFycmF5KSB7CiAgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAg
ICAgICAgV2ViSGlzdG9yeUl0ZW0gKml0ZW0gPSBbW1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0
RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjppdGVtQXNEaWN0aW9uYXJ5XTsKKyAgICAgICAg
ICAgIGF1dG8gaXRlbSA9IGFkb3B0TlMoW1tXZWJIaXN0b3J5SXRlbSBhbGxvY10gaW5pdEZyb21E
aWN0aW9uYXJ5UmVwcmVzZW50YXRpb246aXRlbUFzRGljdGlvbmFyeV0pOwogCiAgICAgICAgICAg
ICAvLyBpdGVtIHdpdGhvdXQgVVJMIGlzIHVzZWxlc3M7IGRhdGEgb24gZGlzayBtdXN0IGhhdmUg
YmVlbiBiYWQ7IGlnbm9yZQogICAgICAgICAgICAgaWYgKFtpdGVtIFVSTFN0cmluZ10pIHsKQEAg
LTYwMywxNiArNTgyLDE0IEBAIC0gKEJPT0wpbG9hZEhpc3RvcnlHdXRzRnJvbVVSTDooTlNVUkwg
KilVUkwgc2F2ZWRJdGVtc0NvdW50OihpbnQgKiludW1iZXJPZkl0ZW1zCiAgICAgICAgICAgICAg
ICAgICAgIGFnZUxpbWl0UGFzc2VkID0gWUVTOwogCiAgICAgICAgICAgICAgICAgaWYgKGFnZUxp
bWl0UGFzc2VkIHx8IGl0ZW1MaW1pdFBhc3NlZCkKLSAgICAgICAgICAgICAgICAgICAgW2Rpc2Nh
cmRlZEl0ZW1zIGFkZE9iamVjdDppdGVtXTsKKyAgICAgICAgICAgICAgICAgICAgW2Rpc2NhcmRl
ZEl0ZW1zIGFkZE9iamVjdDppdGVtLmdldCgpXTsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKFtzZWxmIGFkZEl0ZW06aXRlbSBkaXNjYXJkRHVwbGljYXRl
OllFU10pCisgICAgICAgICAgICAgICAgICAgIGlmIChbc2VsZiBhZGRJdGVtOml0ZW0uZ2V0KCkg
ZGlzY2FyZER1cGxpY2F0ZTpZRVNdKQogICAgICAgICAgICAgICAgICAgICAgICAgKysoKm51bWJl
ck9mSXRlbXNMb2FkZWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoKm51bWJlck9mSXRlbXNM
b2FkZWQgPT0gaXRlbUNvdW50TGltaXQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtTGlt
aXRQYXNzZWQgPSBZRVM7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBbaXRlbSByZWxlYXNlXTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNjY5LDcgKzY0
Niw3IEBAIC0gKEJPT0wpc2F2ZVRvVVJMOihOU1VSTCAqKVVSTCBlcnJvcjooTlNFcnJvciAqKill
cnJvcgogCiAtICh2b2lkKWFkZFZpc2l0ZWRMaW5rc1RvVmlzaXRlZExpbmtTdG9yZTooV2ViVmlz
aXRlZExpbmtTdG9yZSYpdmlzaXRlZExpbmtTdG9yZQogewotICAgIGZvciAoTlNTdHJpbmcgKnVy
bFN0cmluZyBpbiBfZW50cmllc0J5VVJMKQorICAgIGZvciAoTlNTdHJpbmcgKnVybFN0cmluZyBp
biBfZW50cmllc0J5VVJMLmdldCgpKQogICAgICAgICB2aXNpdGVkTGlua1N0b3JlLmFkZFZpc2l0
ZWRMaW5rKHVybFN0cmluZyk7CiB9CiAKQEAgLTc4OCwxMSArNzY1LDkgQEAgLSAoV2ViSGlzdG9y
eUl0ZW0gKilpdGVtRm9yVVJMOihOU1VSTCAqKVVSTAogCiAtIChCT09MKWxvYWRGcm9tVVJMOihO
U1VSTCAqKVVSTCBlcnJvcjooTlNFcnJvciAqKillcnJvcgogewotICAgIE5TTXV0YWJsZUFycmF5
ICpkaXNjYXJkZWRJdGVtcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOyAgICAKLSAg
ICBpZiAoIVtfaGlzdG9yeVByaXZhdGUgbG9hZEZyb21VUkw6VVJMIGNvbGxlY3REaXNjYXJkZWRJ
dGVtc0ludG86ZGlzY2FyZGVkSXRlbXMgZXJyb3I6ZXJyb3JdKSB7Ci0gICAgICAgIFtkaXNjYXJk
ZWRJdGVtcyByZWxlYXNlXTsKKyAgICBhdXRvIGRpc2NhcmRlZEl0ZW1zID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgaWYgKCFbX2hpc3RvcnlQcml2YXRlIGxv
YWRGcm9tVVJMOlVSTCBjb2xsZWN0RGlzY2FyZGVkSXRlbXNJbnRvOmRpc2NhcmRlZEl0ZW1zLmdl
dCgpIGVycm9yOmVycm9yXSkKICAgICAgICAgcmV0dXJuIE5POwotICAgIH0KIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgV2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbihXZWJIaXN0b3J5
TG9hZGVkTm90aWZpY2F0aW9uLCBzZWxmLCBuaWwpOwpAQCAtODAzLDkgKzc3OCw4IEBAIC0gKEJP
T0wpbG9hZEZyb21VUkw6KE5TVVJMICopVVJMIGVycm9yOihOU0Vycm9yICoqKWVycm9yCiAjZW5k
aWYKIAogICAgIGlmIChbZGlzY2FyZGVkSXRlbXMgY291bnRdKQotICAgICAgICBbc2VsZiBfc2Vu
ZE5vdGlmaWNhdGlvbjpXZWJIaXN0b3J5SXRlbXNEaXNjYXJkZWRXaGlsZUxvYWRpbmdOb3RpZmlj
YXRpb24gZW50cmllczpkaXNjYXJkZWRJdGVtc107CisgICAgICAgIFtzZWxmIF9zZW5kTm90aWZp
Y2F0aW9uOldlYkhpc3RvcnlJdGVtc0Rpc2NhcmRlZFdoaWxlTG9hZGluZ05vdGlmaWNhdGlvbiBl
bnRyaWVzOmRpc2NhcmRlZEl0ZW1zLmdldCgpXTsKIAotICAgIFtkaXNjYXJkZWRJdGVtcyByZWxl
YXNlXTsKICAgICByZXR1cm4gWUVTOwogfQogCkBAIC04ODUsOSArODU5LDggQEAgLSAodm9pZClf
dmlzaXRlZFVSTDooTlNVUkwgKil1cmwgd2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIG1ldGhv
ZDooTlNTdHJpbmcgKikKIAogICAgIGVudHJ5LT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IG51
bGxwdHI7CiAKLSAgICBOU0FycmF5ICplbnRyaWVzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHM6ZW50cnksIG5pbF07Ci0gICAgW3NlbGYgX3NlbmROb3RpZmljYXRpb246V2ViSGlz
dG9yeUl0ZW1zQWRkZWROb3RpZmljYXRpb24gZW50cmllczplbnRyaWVzXTsKLSAgICBbZW50cmll
cyByZWxlYXNlXTsKKyAgICBhdXRvIGVudHJpZXMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhPYmplY3RzOmVudHJ5LCBuaWxdKTsKKyAgICBbc2VsZiBfc2VuZE5vdGlmaWNhdGlv
bjpXZWJIaXN0b3J5SXRlbXNBZGRlZE5vdGlmaWNhdGlvbiBlbnRyaWVzOmVudHJpZXMuZ2V0KCld
OwogfQogCiAtICh2b2lkKV9hZGRWaXNpdGVkTGlua3NUb1Zpc2l0ZWRMaW5rU3RvcmU6KFdlYlZp
c2l0ZWRMaW5rU3RvcmUgJil2aXNpdGVkTGlua1N0b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCA4N2U2MjlmOTk0OWYxMjE0
ODA0YmZlZDRhMDJiMTQ2NzVlN2NjYjZlLi5jYjE2Y2Q3NTIyZjBiYTk2YWNhMTUwMWZiNDY5NWU4
NDRkNDcxNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dl
Ykhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW0KQEAgLTM1Miw5ICszNTIsOCBAQCAtIChpZClpbml0RnJvbURpY3Rpb25h
cnlSZXByZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5ICopZGljdAogICAgIE5TQXJyYXkgKmNoaWxk
RGljdHMgPSBbZGljdCBvYmplY3RGb3JLZXk6Y2hpbGRyZW5LZXldOwogICAgIGlmIChjaGlsZERp
Y3RzKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBbY2hpbGREaWN0cyBjb3VudF0gLSAxOyBpID49
IDA7IGktLSkgewotICAgICAgICAgICAgV2ViSGlzdG9yeUl0ZW0gKmNoaWxkID0gW1tXZWJIaXN0
b3J5SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246W2NoaWxkRGlj
dHMgb2JqZWN0QXRJbmRleDppXV07CisgICAgICAgICAgICBhdXRvIGNoaWxkID0gYWRvcHROUyhb
W1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpb
Y2hpbGREaWN0cyBvYmplY3RBdEluZGV4OmldXSk7CiAgICAgICAgICAgICBjb3JlKF9wcml2YXRl
KS0+YWRkQ2hpbGRJdGVtKCpjb3JlKGNoaWxkLT5fcHJpdmF0ZSkpOwotICAgICAgICAgICAgW2No
aWxkIHJlbGVhc2VdOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJEb3dubG9hZC5tbQppbmRleCA1MDU5OGRlZTVjNWQxOGNkNWExY2QyMTBhMmQy
MWFmY2ZlNzgzYWNkLi4yZmNiMDBhZGIyNGFjYjY1ZGNmMzc5YjFhZmZkMjdmNzk0N2Q5NTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRG93bmxvYWQubW0KQEAgLTcyLDcg
KzcyLDcgQEAgc3RhdGljIHZvaWQgY2FsbE9uRGVsZWdhdGVUaHJlYWRBbmRXYWl0KENhbGxhYmxl
JiYgd29yaykKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkRvd25s
b2FkSW50ZXJuYWwgOiBOU09iamVjdCA8TlNVUkxEb3dubG9hZERlbGVnYXRlPiB7Ci0gICAgaWQg
cmVhbERlbGVnYXRlOworICAgIFJldGFpblB0cjxpZD4gcmVhbERlbGVnYXRlOwogfQogLSAodm9p
ZClzZXRSZWFsRGVsZWdhdGU6KGlkKXJlYWxEZWxlZ2F0ZTsKIEBlbmQKQEAgLTgxLDE0ICs4MSwx
MSBAQCBAaW1wbGVtZW50YXRpb24gV2ViRG93bmxvYWRJbnRlcm5hbAogCiAtICh2b2lkKWRlYWxs
b2MKIHsKLSAgICBbcmVhbERlbGVnYXRlIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIAogLSAodm9pZClzZXRSZWFsRGVsZWdhdGU6KGlkKXJkCiB7Ci0gICAgW3JkIHJldGFpbl07
Ci0gICAgW3JlYWxEZWxlZ2F0ZSByZWxlYXNlXTsKICAgICByZWFsRGVsZWdhdGUgPSByZDsKIH0K
IApAQCAtMTExLDcgKzEwOCw3IEBAIC0gKEJPT0wpcmVzcG9uZHNUb1NlbGVjdG9yOihTRUwpc2Vs
ZWN0b3IKIAogLSAodm9pZClkb3dubG9hZERpZEJlZ2luOihOU1VSTERvd25sb2FkICopZG93bmxv
YWQKIHsKLSAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRy
KHJlYWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKV0geworICAgIGNh
bGxPbkRlbGVnYXRlVGhyZWFkKFtyZWFsRGVsZWdhdGUgPSByZWFsRGVsZWdhdGUsIGRvd25sb2Fk
ID0gcmV0YWluUHRyKGRvd25sb2FkKV0gewogICAgICAgICBbcmVhbERlbGVnYXRlIGRvd25sb2Fk
RGlkQmVnaW46ZG93bmxvYWQuZ2V0KCldOwogICAgIH0pOwogfQpAQCAtMTQwLDExICsxMzcsMTEg
QEAgLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlMKICAgICB9CiAKICAgICBpZiAoW3JlYWxEZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTopXSkgewotICAgICAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVh
bERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0YWluUHRy
KGRvd25sb2FkKSwgY2hhbGxlbmdlID0gcmV0YWluUHRyKGNoYWxsZW5nZSldIHsKKyAgICAgICAg
Y2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93bmxv
YWQgPSByZXRhaW5QdHIoZG93bmxvYWQpLCBjaGFsbGVuZ2UgPSByZXRhaW5QdHIoY2hhbGxlbmdl
KV0gewogICAgICAgICAgICAgW3JlYWxEZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQoKSBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlLmdldCgpXTsKICAgICAg
ICAgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxE
ZWxlZ2F0ZSA9IHJldGFpblB0cihyZWFsRGVsZWdhdGUpLCBkb3dubG9hZCA9IHJldGFpblB0cihk
b3dubG9hZCksIGNoYWxsZW5nZSA9IHJldGFpblB0cihjaGFsbGVuZ2UpXSB7CisgICAgICAgIGNh
bGxPbkRlbGVnYXRlVGhyZWFkKFtyZWFsRGVsZWdhdGUgPSByZWFsRGVsZWdhdGUsIGRvd25sb2Fk
ID0gcmV0YWluUHRyKGRvd25sb2FkKSwgY2hhbGxlbmdlID0gcmV0YWluUHRyKGNoYWxsZW5nZSld
IHsKICAgICAgICAgICAgIE5TV2luZG93ICp3aW5kb3cgPSBuaWw7CiAgICAgICAgICAgICBpZiAo
W3JlYWxEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkV2luZG93
Rm9yQXV0aGVudGljYXRpb25TaGVldDopXSkKICAgICAgICAgICAgICAgICB3aW5kb3cgPSBbcmVh
bERlbGVnYXRlIGRvd25sb2FkV2luZG93Rm9yQXV0aGVudGljYXRpb25TaGVldDooV2ViRG93bmxv
YWQgKilkb3dubG9hZC5nZXQoKV07CkBAIC0xNTcsMTQgKzE1NCwxNCBAQCAtICh2b2lkKWRvd25s
b2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOihOUwogCiAtICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKIHsKLSAgICBjYWxs
T25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0ZSks
IGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKSwgcmVzcG9uc2UgPSByZXRhaW5QdHIocmVz
cG9uc2UpXSB7CisgICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJlYWxE
ZWxlZ2F0ZSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQpLCByZXNwb25zZSA9IHJldGFp
blB0cihyZXNwb25zZSldIHsKICAgICAgICAgW3JlYWxEZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9h
ZC5nZXQoKSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOwogICAgIH0pOwogfQog
CiAtICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZURh
dGFPZkxlbmd0aDooTlNVSW50ZWdlcilsZW5ndGgKIHsKLSAgICBjYWxsT25EZWxlZ2F0ZVRocmVh
ZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0
YWluUHRyKGRvd25sb2FkKSwgbGVuZ3RoXSB7CisgICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3Jl
YWxEZWxlZ2F0ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQp
LCBsZW5ndGhdIHsKICAgICAgICAgW3JlYWxEZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQo
KSBkaWRSZWNlaXZlRGF0YU9mTGVuZ3RoOmxlbmd0aF07CiAgICAgfSk7CiB9CkBAIC0xODEsMjgg
KzE3OCwyOCBAQCAtIChCT09MKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQgc2hv
dWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU6KE5TUwogCiAtICh2b2lkKWRvd25sb2FkOihO
U1VSTERvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUKIHsKLSAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChb
cmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0YWlu
UHRyKGRvd25sb2FkKSwgZmlsZW5hbWUgPSByZXRhaW5QdHIoZmlsZW5hbWUpXSB7CisgICAgY2Fs
bE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93bmxvYWQg
PSByZXRhaW5QdHIoZG93bmxvYWQpLCBmaWxlbmFtZSA9IHJldGFpblB0cihmaWxlbmFtZSldIHsK
ICAgICAgICAgW3JlYWxEZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQoKSBkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZS5nZXQoKV07CiAgICAgfSk7CiB9
CiAKIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVE
ZXN0aW5hdGlvbjooTlNTdHJpbmcgKilwYXRoCiB7Ci0gICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQo
W3JlYWxEZWxlZ2F0ZSA9IHJldGFpblB0cihyZWFsRGVsZWdhdGUpLCBkb3dubG9hZCA9IHJldGFp
blB0cihkb3dubG9hZCksIHBhdGggPSByZXRhaW5QdHIocGF0aCldIHsKKyAgICBjYWxsT25EZWxl
Z2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmVhbERlbGVnYXRlLCBkb3dubG9hZCA9IHJldGFp
blB0cihkb3dubG9hZCksIHBhdGggPSByZXRhaW5QdHIocGF0aCldIHsKICAgICAgICAgW3JlYWxE
ZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQoKSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpwYXRo
LmdldCgpXTsKICAgICB9KTsKIH0KIAogLSAodm9pZClkb3dubG9hZERpZEZpbmlzaDooTlNVUkxE
b3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxl
Z2F0ZSA9IHJldGFpblB0cihyZWFsRGVsZWdhdGUpLCBkb3dubG9hZCA9IHJldGFpblB0cihkb3du
bG9hZCldIHsKKyAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmVhbERl
bGVnYXRlLCBkb3dubG9hZCA9IHJldGFpblB0cihkb3dubG9hZCldIHsKICAgICAgICAgW3JlYWxE
ZWxlZ2F0ZSBkb3dubG9hZERpZEZpbmlzaDpkb3dubG9hZC5nZXQoKV07CiAgICAgfSk7CiB9CiAK
IC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3IKIHsKLSAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERl
bGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0YWluUHRyKGRv
d25sb2FkKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSB7CisgICAgY2FsbE9uRGVsZWdhdGVU
aHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93bmxvYWQgPSByZXRhaW5QdHIo
ZG93bmxvYWQpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildIHsKICAgICAgICAgW3JlYWxEZWxl
Z2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQoKSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLmdldCgp
XTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNEYXRhRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0Rh
dGFFeHRyYXMubW0KaW5kZXggYzY5NGU1MjA5YzRmOTBjZDgyZjc4ODg4ZmU4NjQyNWE4ZmZlNDg4
OS4uMGRkZTI4N2MyZjA0Yzk2MDk2NDE0OGRkZmIyYzMzNDM4MmU1MTc5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KQEAgLTI3LDYgKzI3
LDcgQEAKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJOU0RhdGFFeHRyYXNQcml2YXRlLmg+CiAK
ICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
IEBpbnRlcmZhY2UgTlNTdHJpbmcgKFdlYk5TRGF0YUV4dHJhc0ludGVybmFsKQogLSAoTlNTdHJp
bmcgKilfd2ViX2NhcGl0YWxpemVSRkM4MjJIZWFkZXJGaWVsZE5hbWU7CkBAIC0zMTEsMTEgKzMx
MiwxMCBAQCAtIChOU011dGFibGVEaWN0aW9uYXJ5ICopX3dlYmtpdF9wYXJzZVJGQzgyMkhlYWRl
ckZpZWxkcwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGNvbnRpbnVh
dGlvbiBvZiB0aGUgcHJldmlvdXMgaGVhZGVyCiAgICAgICAgICAgICBOU1N0cmluZyAqY3VycmVu
dFZhbHVlID0gW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6bGFzdEtleV07Ci0gICAgICAgICAg
ICBOU1N0cmluZyAqbmV3VmFsdWUgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmxp
bmUgbGVuZ3RoOmxpbmVMZW5ndGggZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ107
CisgICAgICAgICAgICBhdXRvIG5ld1ZhbHVlID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aEJ5dGVzOmxpbmUgbGVuZ3RoOmxpbmVMZW5ndGggZW5jb2Rpbmc6TlNJU09MYXRpbjFT
dHJpbmdFbmNvZGluZ10pOwogICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRWYWx1ZSk7CiAgICAg
ICAgICAgICBBU1NFUlQobmV3VmFsdWUpOwotICAgICAgICAgICAgW2hlYWRlckZpZWxkcyBzZXRP
YmplY3Q6W2N1cnJlbnRWYWx1ZSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpuZXdWYWx1ZV0gZm9y
S2V5Omxhc3RLZXldOwotICAgICAgICAgICAgW25ld1ZhbHVlIHJlbGVhc2VdOworICAgICAgICAg
ICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6W2N1cnJlbnRWYWx1ZSBzdHJpbmdCeUFwcGVuZGlu
Z1N0cmluZzpuZXdWYWx1ZS5nZXQoKV0gZm9yS2V5Omxhc3RLZXldOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gQnJhbmQgbmV3IGhlYWRlcgogICAgICAgICAgICAgY29uc3QgVUlu
dDgqIGNvbG9uOwpAQCAtMzMxLDEzICszMzEsMTIgQEAgLSAoTlNNdXRhYmxlRGljdGlvbmFyeSAq
KV93ZWJraXRfcGFyc2VSRkM4MjJIZWFkZXJGaWVsZHMKICAgICAgICAgICAgICAgICBpZiAoKmNv
bG9uICE9ICcgJyAmJiAqY29sb24gIT0gJ1x0JykKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBOU1N0cmluZyAqdmFsdWUgPSBbW05TU3RyaW5n
IGFsbG9jXSBpbml0V2l0aEJ5dGVzOmNvbG9uIGxlbmd0aDplb2wgLSBjb2xvbiBlbmNvZGluZzpO
U0lTT0xhdGluMVN0cmluZ0VuY29kaW5nXTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0ZXM6Y29sb24gbGVuZ3RoOmVvbCAtIGNv
bG9uIGVuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5nRW5jb2RpbmddKTsKICAgICAgICAgICAgIGlm
IChOU1N0cmluZyAqb2xkVmFsdWUgPSBbaGVhZGVyRmllbGRzIG9iamVjdEZvcktleTpsYXN0S2V5
XSkgewotICAgICAgICAgICAgICAgIFt2YWx1ZSBhdXRvcmVsZWFzZV07Ci0gICAgICAgICAgICAg
ICAgdmFsdWUgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIiVALCAlQCIsIG9s
ZFZhbHVlLCB2YWx1ZV07CisgICAgICAgICAgICAgICAgYXV0byBuZXdWYWx1ZSA9IFtbTlNTdHJp
bmcgYWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiJUAsICVAIiwgb2xkVmFsdWUsIHZhbHVlLmdldCgp
XTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IFdURk1vdmUobmV3VmFsdWUpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6dmFsdWUgZm9yS2V5Omxh
c3RLZXldOwotICAgICAgICAgICAgW3ZhbHVlIHJlbGVhc2VdOworICAgICAgICAgICAgW2hlYWRl
ckZpZWxkcyBzZXRPYmplY3Q6dmFsdWUuZ2V0KCkgZm9yS2V5Omxhc3RLZXldOwogICAgICAgICB9
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5T
UGFzdGVib2FyZEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQ
YXN0ZWJvYXJkRXh0cmFzLm1tCmluZGV4IDU2OGUzZjU5MzY2N2RhYjgzM2QwMDRhYjIyZmExM2Qw
N2VmOTVlNzAuLjRhZTBjNzkwZTNiMDJjZmZhYTI0OWFmMzNhNzdhNGRiZmJmNzJmNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0
cmFzLm1tCkBAIC0xOTMsMTAgKzE5Myw4IEBAICsgKGludClfd2ViX3NldEZpbmRQYXN0ZWJvYXJk
U3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoT3duZXI6KGlkKW93bmVyCiAKIC0gKHZvaWQp
X3dlYl93cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudDooTlNGaWxlV3JhcHBlciAqKXdy
YXBwZXIKIHsKLSAgICBOU1RleHRBdHRhY2htZW50ICphdHRhY2htZW50ID0gW1tOU1RleHRBdHRh
Y2htZW50IGFsbG9jXSBpbml0V2l0aEZpbGVXcmFwcGVyOndyYXBwZXJdOwotICAgIAotICAgIE5T
QXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVk
U3RyaW5nV2l0aEF0dGFjaG1lbnQ6YXR0YWNobWVudF07Ci0gICAgW2F0dGFjaG1lbnQgcmVsZWFz
ZV07CisgICAgYXV0byBhdHRhY2htZW50ID0gYWRvcHROUyhbW05TVGV4dEF0dGFjaG1lbnQgYWxs
b2NdIGluaXRXaXRoRmlsZVdyYXBwZXI6d3JhcHBlcl0pOworICAgIE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nID0gW05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0dGFj
aG1lbnQ6YXR0YWNobWVudC5nZXQoKV07CiAgICAgCiAgICAgTlNEYXRhICpSVEZERGF0YSA9IFtz
dHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pIGRvY3Vt
ZW50QXR0cmlidXRlczpAeyB9XTsKICAgICBbc2VsZiBzZXREYXRhOlJURkREYXRhIGZvclR5cGU6
bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCldOwpAQCAtMzE3LDkgKzMxNSw4IEBAIC0gKGlkKV93
ZWJfZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlRm9yRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1l
bnQKICAgICBpZiAoY3VzdG9tRGF0YUJ1ZmZlcikKICAgICAgICAgW3NlbGYgc2V0RGF0YTpjdXN0
b21EYXRhQnVmZmVyLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpXTsKIAotICAgIE5TQXJyYXkgKmV4dGVuc2lvbnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0czpleHRlbnNpb24sIG5pbF07Ci0gICAgW3NlbGYgc2V0UHJvcGVydHlMaXN0
OmV4dGVuc2lvbnMgZm9yVHlwZTpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpXTsK
LSAgICBbZXh0ZW5zaW9ucyByZWxlYXNlXTsKKyAgICBhdXRvIGV4dGVuc2lvbnMgPSBhZG9wdE5T
KFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOmV4dGVuc2lvbiwgbmlsXSk7CisgICAg
W3NlbGYgc2V0UHJvcGVydHlMaXN0OmV4dGVuc2lvbnMuZ2V0KCkgZm9yVHlwZTpsZWdhY3lGaWxl
c1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpXTsKIAogICAgIHJldHVybiBzb3VyY2U7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCA5NTYxZDIyZWJiZmI5ZWE0OWQ0
Zjg4MzZiMmYwZmQ1OTVjYTY4ZDM5Li5iYmVhN2VhNjI2MmMyZjQwZTNmNDNmNmRkY2I2MjcyZWUw
ZTMyNGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTE3Miwx
NiArMTcyLDE0IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6c3Bhd25QbHVnaW5I
b3N0KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY3B1X3R5CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgdGhlIHNl
Y29uZCBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1soTlNTdHJpbmcqKXBsdWdpblBhdGggbGFzdFBhdGhDb21wb25lbnRd
IHN0cmluZ0J5RGVsZXRpbmdQYXRoRXh0ZW5zaW9uXSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJ
bmZvXSBwcm9jZXNzTmFtZV1dOwogICAgIAotICAgIE5TRGljdGlvbmFyeSAqaG9zdFByb3BlcnRp
ZXMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKKyAgICBh
dXRvIGhvc3RQcm9wZXJ0aWVzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZp
c2libGVOYW1lLCBAInZpc2libGVOYW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChOU1N0cmluZyAqKXBsdWdpblBhdGgsIEAiYnVuZGxlUGF0aCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmlsXSk7CiAgICAgCi0gICAgZGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlh
bGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6aG9zdFByb3BlcnRpZXMgZm9ybWF0Ok5TUHJv
cGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOk5VTExdOworICAgIGRh
dGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0Omhv
c3RQcm9wZXJ0aWVzLmdldCgpIGZvcm1hdDpOU1Byb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8w
IG9wdGlvbnM6MCBlcnJvcjpOVUxMXTsKICAgICBBU1NFUlQoZGF0YSk7CiAKLSAgICBbaG9zdFBy
b3BlcnRpZXMgcmVsZWFzZV07Ci0KICAgICBQcm9jZXNzU2VyaWFsTnVtYmVyIHBzbjsKIAogICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggYjcwZTc1ZTNlZWNkZDU4Y2FiOTFjZjgxNWMwYTY0
YmU4OWQzOWFiYy4uNTFjNTllYzg0OGE3NDAxOWVmZTRkNDA4OGVjN2VjMjFkZjU4NjUyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNjUxLDExICs2NTEs
MTAgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnBlcmZvcm1SZXF1ZXN0KFBs
dWdpblJlcXVlc3QqIHBsdWdpblJlcXVlc3QpCiAgICAgICAgIGZyYW1lID0ga2l0KGNvcmUoW21f
cGx1Z2luVmlldyB3ZWJGcmFtZV0pLT5sb2FkZXIoKS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZy
YW1lTmFtZSkpOwogICAgICAgICBpZiAoIWZyYW1lKSB7CiAgICAgICAgICAgICBXZWJWaWV3ICpj
dXJyZW50V2ViVmlldyA9IFttX3BsdWdpblZpZXcgd2ViVmlld107Ci0gICAgICAgICAgICBOU0Rp
Y3Rpb25hcnkgKmZlYXR1cmVzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgICAg
ICAgICAgYXV0byBmZWF0dXJlcyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRd
KTsKICAgICAgICAgICAgIFdlYlZpZXcgKm5ld1dlYlZpZXcgPSBbW2N1cnJlbnRXZWJWaWV3IF9V
SURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OmN1cnJlbnRXZWJWaWV3CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVdlYlZpZXdX
aXRoUmVxdWVzdDpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0ZlYXR1cmVzOmZlYXR1cmVzXTsKLSAgICAg
ICAgICAgIFtmZWF0dXJlcyByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0ZlYXR1cmVzOmZlYXR1
cmVzLmdldCgpXTsKIAogICAgICAgICAgICAgaWYgKCFuZXdXZWJWaWV3KSB7CiAgICAgICAgICAg
ICAgICAgX1dLUEhMb2FkVVJMTm90aWZ5KG1fcGx1Z2luSG9zdFByb3h5LT5wb3J0KCksIG1fcGx1
Z2luSUQsIHBsdWdpblJlcXVlc3QtPnJlcXVlc3RJRCgpLCBOUEVSUl9HRU5FUklDX0VSUk9SKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtLm1tCmluZGV4IGE0ZmU5MGI2YWNhNTVkOTU4NjA5OWVmMTY0NDNjZjJm
YTkzZjk4ZGIuLjBiMzI2NzI3MjJmOGM5MDI0NTdmYjQ1M2QyMjE2MjFhNmJhMWYyM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5T
dHJlYW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5tbQpAQCAtNjEzLDIwICs2MTMsMTggQEAgdm9pZCBXZWJOZXRzY2FwZVBs
dWdpblN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciop
CiAKIHZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiB7Ci0g
ICAgTlNEYXRhICpkYXRhID0gW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZv
aWQqKWJ5dGVzIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKKyAgICBhdXRvIGRhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilieXRl
cyBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOwogCiAgICAgQVNTRVJUKFtkYXRhIGxl
bmd0aF0gPiAwKTsKICAgICAKICAgICBpZiAobV90cmFuc2Zlck1vZGUgIT0gTlBfQVNGSUxFT05M
WSkgewogICAgICAgICBpZiAoIW1fZGVsaXZlcnlEYXRhKQogICAgICAgICAgICAgbV9kZWxpdmVy
eURhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpb
ZGF0YSBsZW5ndGhdXSk7Ci0gICAgICAgIFttX2RlbGl2ZXJ5RGF0YS5nZXQoKSBhcHBlbmREYXRh
OmRhdGFdOworICAgICAgICBbbV9kZWxpdmVyeURhdGEuZ2V0KCkgYXBwZW5kRGF0YTpkYXRhLmdl
dCgpXTsKICAgICAgICAgZGVsaXZlckRhdGEoKTsKICAgICB9CiAgICAgaWYgKG1fdHJhbnNmZXJN
b2RlID09IE5QX0FTRklMRSB8fCBtX3RyYW5zZmVyTW9kZSA9PSBOUF9BU0ZJTEVPTkxZKQotICAg
ICAgICBkZWxpdmVyRGF0YVRvRmlsZShkYXRhKTsKLSAgICAKLSAgICBbZGF0YSByZWxlYXNlXTsK
KyAgICAgICAgZGVsaXZlckRhdGFUb0ZpbGUoZGF0YS5nZXQoKSk7CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
blZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luVmlldy5tbQppbmRleCBhYmRlODYxY2ZmMDI3NzViMDFkNWNmYjY1MTIyZTU4NDEyMjIxNDAz
Li4wNjg3YmJiYmU4MGY1YjdkODdiMjc4ZjkxODM5MDUwYzA1ZTBkN2Q1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmll
dy5tbQpAQCAtMTAzNCwxMyArMTAzNCwxMiBAQCAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAq
KXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhCiAgICAgICAgIGlmIChbc2Vs
ZiBfc2hvdWxkQ2FuY2VsU3JjU3RyZWFtXSkgewogICAgICAgICAgICAgTlNVUkxSZXNwb25zZSAq
cmVzcG9uc2UgPSBbW3NlbGYgZGF0YVNvdXJjZV0gcmVzcG9uc2VdOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBOU0Vycm9yICplcnJvciA9IFtbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1
Z2luRXJyb3JDb2RlOldlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQKKyAgICAgICAgICAg
IGF1dG8gZXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJy
b3JDb2RlOldlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRVUkw6W3Jl
c3BvbnNlIFVSTF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBsdWdpblBhZ2VVUkw6bmlsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5OYW1lOm5pbCAvLyBGSVhN
RTogR2V0IHRoaXMgZnJvbSBzb21ld2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6W3Jlc3BvbnNlIE1JTUVU
eXBlXV07Ci0gICAgICAgICAgICBbW3NlbGYgZGF0YVNvdXJjZV0gX2RvY3VtZW50TG9hZGVyXS0+
Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7Ci0gICAgICAgICAgICBbZXJyb3IgcmVsZWFz
ZV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE1JTUVUeXBlOltyZXNwb25zZSBNSU1FVHlwZV1dKTsKKyAgICAgICAgICAgIFtb
c2VsZiBkYXRhU291cmNlXSBfZG9jdW1lbnRMb2FkZXJdLT5jYW5jZWxNYWluUmVzb3VyY2VMb2Fk
KGVycm9yLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAK
QEAgLTExNzcsMTEgKzExNzYsMTAgQEAgLSAodm9pZClsb2FkUGx1Z2luUmVxdWVzdDooV2ViUGx1
Z2luUmVxdWVzdCAqKXBsdWdpblJlcXVlc3QKICAgICAgICAgZnJhbWUgPSBraXQoY29yZShbc2Vs
ZiB3ZWJGcmFtZV0pLT5sb2FkZXIoKS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSkp
OwogICAgICAgICBpZiAoZnJhbWUgPT0gbmlsKSB7CiAgICAgICAgICAgICBXZWJWaWV3ICpjdXJy
ZW50V2ViVmlldyA9IFtzZWxmIHdlYlZpZXddOwotICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpm
ZWF0dXJlcyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIGF1dG8g
ZmVhdHVyZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgICAg
ICAgICBXZWJWaWV3ICpuZXdXZWJWaWV3ID0gW1tjdXJyZW50V2ViVmlldyBfVUlEZWxlZ2F0ZUZv
cndhcmRlcl0gd2ViVmlldzpjdXJyZW50V2ViVmlldwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6
bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aW5kb3dGZWF0dXJlczpmZWF0dXJlc107Ci0gICAgICAgICAgICBbZmVh
dHVyZXMgcmVsZWFzZV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dGZWF0dXJlczpmZWF0dXJlcy5nZXQoKV07
CiAKICAgICAgICAgICAgIGlmICghbmV3V2ViVmlldykgewogICAgICAgICAgICAgICAgIGlmIChb
cGx1Z2luUmVxdWVzdCBzZW5kTm90aWZpY2F0aW9uXSkgewpAQCAtMTI3MywxMyArMTI3MSwxMiBA
QCAtIChOUEVycm9yKWxvYWRSZXF1ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdCBp
blRhcmdldDooY29uc3QgY2hhciAqKWNUYQogICAgICAgICBpZiAoX2V2ZW50SGFuZGxlcikKICAg
ICAgICAgICAgIGN1cnJlbnRFdmVudElzVXNlckdlc3R1cmUgPSBfZXZlbnRIYW5kbGVyLT5jdXJy
ZW50RXZlbnRJc1VzZXJHZXN0dXJlKCk7CiAgICAgICAgIAotICAgICAgICBXZWJQbHVnaW5SZXF1
ZXN0ICpwbHVnaW5SZXF1ZXN0ID0gW1tXZWJQbHVnaW5SZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFJl
cXVlc3Q6cmVxdWVzdCAKKyAgICAgICAgYXV0byBwbHVnaW5SZXF1ZXN0ID0gYWRvcHROUyhbW1dl
YlBsdWdpblJlcXVlc3QgYWxsb2NdIGluaXRXaXRoUmVxdWVzdDpyZXF1ZXN0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lTmFtZTp0YXJnZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZnlEYXRhOm5vdGlm
eURhdGEgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VuZE5vdGlmaWNhdGlvbjpzZW5kTm90aWZpY2F0aW9uCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRTdGFydEZyb21Vc2VyR2VzdHVyZTpjdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlXTsKLSAgICAg
ICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rvcihsb2FkUGx1Z2luUmVxdWVzdDopIHdp
dGhPYmplY3Q6cGx1Z2luUmVxdWVzdCBhZnRlckRlbGF5OjBdOwotICAgICAgICBbcGx1Z2luUmVx
dWVzdCByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0RnJvbVVzZXJHZXN0dXJlOmN1cnJlbnRFdmVudElz
VXNlckdlc3R1cmVdKTsKKyAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rvcihs
b2FkUGx1Z2luUmVxdWVzdDopIHdpdGhPYmplY3Q6cGx1Z2luUmVxdWVzdC5nZXQoKSBhZnRlckRl
bGF5OjBdOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGF1dG8gc3RyZWFtID0gV2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OmNyZWF0ZShyZXF1ZXN0LCBwbHVnaW4sIHNlbmROb3RpZmljYXRpb24sIG5v
dGlmeURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYlBsdWdpbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYlBsdWdpbkNvbnRyb2xsZXIubW0KaW5kZXggNmI1NmQ3MzBmYzVmOGE1NzJkN2IyOTQzODlm
OTczZDNhOTk0YjQwMy4uN2I4MmRlZjA2YWYwYzEwOWUyNzgwOGYyY2Y3YjUwZjExZWNiMGQyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2lu
Q29udHJvbGxlci5tbQpAQCAtNTcyLDEzICs1NzIsMTIgQEAgLSAodm9pZClwbHVnaW5WaWV3OihO
U1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNw
b24KICAgICBlbHNlIHsKICAgICAgICAgLy8gQ2FuY2VsIHRoZSBsb2FkIHNpbmNlIHRoaXMgcGx1
Zy1pbiBkb2VzIGl0cyBvd24gbG9hZGluZy4KICAgICAgICAgLy8gRklYTUU6IFNlZSA8cmRhcjov
L3Byb2JsZW0vNDI1ODAwOD4gZm9yIGEgcHJvYmxlbSB3aXRoIHRoaXMuCi0gICAgICAgIE5TRXJy
b3IgKmVycm9yID0gW1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6V2Vi
S2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZAorICAgICAgICBhdXRvIGVycm9yID0gYWRvcHRO
UyhbW05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTpXZWJLaXRFcnJvclBs
dWdJbldpbGxIYW5kbGVMb2FkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRlbnRVUkw6W3Jlc3BvbnNlIFVSTF0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luUGFnZVVSTDpu
aWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGx1Z2luTmFtZTpuaWwgLy8gRklYTUU6IEdldCB0aGlzIGZyb20gc29tZXdoZXJlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlN
RVR5cGU6W3Jlc3BvbnNlIE1JTUVUeXBlXV07Ci0gICAgICAgIFtfZGF0YVNvdXJjZSBfZG9jdW1l
bnRMb2FkZXJdLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKLSAgICAgICAgW2Vycm9y
IHJlbGVhc2VdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1JTUVUeXBlOltyZXNwb25zZSBNSU1FVHlwZV1dKTsKKyAgICAgICAgW19k
YXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3Iu
Z2V0KCkpOwogICAgIH0gICAgICAgIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQppbmRleCAwOTNlNjk3NWQ0MWVjODI4
YWI1MmNmMzhkNGI5NjZkOGYzZjk1ZTE1Li5kYTA0ODY5ZGRjMTVhNDZkMDVmOWI2ZTllNjYwNzI5
NGRkYWQ5ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
YlBsdWdpbkRhdGFiYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViUGx1Z2luRGF0YWJhc2UubW0KQEAgLTI4Nyw3ICsyODcsNyBAQCAtICh2b2lkKXJlZnJlc2gK
ICAgICAgICAgICAgIFtzZWxmIF9hZGRQbHVnaW46cGx1Z2luXTsKIAogICAgICAgICAvLyBCdWls
ZCBhIGxpc3Qgb2YgTUlNRSB0eXBlcy4KLSAgICAgICAgTlNNdXRhYmxlU2V0ICpNSU1FVHlwZXMg
PSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07CisgICAgICAgIGF1dG8gTUlNRVR5cGVzID0g
YWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwogICAgICAgICBwbHVnaW5FbnVt
ZXJhdG9yID0gW3BsdWdpbnMgb2JqZWN0RW51bWVyYXRvcl07CiAgICAgICAgIHdoaWxlICgocGx1
Z2luID0gW3BsdWdpbkVudW1lcmF0b3IgbmV4dE9iamVjdF0pKSB7CiAgICAgICAgICAgICBjb25z
dCBhdXRvJiBwbHVnaW5JbmZvID0gW3BsdWdpbiBwbHVnaW5JbmZvXTsKQEAgLTMxOCw3ICszMTgs
NiBAQCAtICh2b2lkKXJlZnJlc2gKICAgICAgICAgICAgIGlmIChzZWxmID09IHNoYXJlZERhdGFi
YXNlKQogICAgICAgICAgICAgICAgIFtXZWJWaWV3IF9yZWdpc3RlclBsdWdpbk1JTUVUeXBlOk1J
TUVUeXBlXTsKICAgICAgICAgfQotICAgICAgICBbTUlNRVR5cGVzIHJlbGVhc2VdOwogICAgIH0K
IH0KIApAQCAtNDUyLDE3ICs0NTEsMTYgQEAgLSAodm9pZClfcmVtb3ZlUGx1Z2luOihXZWJCYXNl
UGx1Z2luUGFja2FnZSAqKXBsdWdpbgogICAgIC8vIFJlbW92ZSBwbHVnLWluIGZyb20gZGF0YWJh
c2UKICAgICBOU1N0cmluZyAqcGx1Z2luUGF0aCA9IFtwbHVnaW4gcGF0aF07CiAgICAgQVNTRVJU
KHBsdWdpblBhdGgpOwotICAgIFtwbHVnaW4gcmV0YWluXTsKKyAgICBhdXRvIHByb3RlY3RlZFBs
dWdpbiA9IHJldGFpblB0cihwbHVnaW4pOwogICAgIFtwbHVnaW5zIHJlbW92ZU9iamVjdEZvcktl
eTpwbHVnaW5QYXRoXTsKICAgICBbcGx1Z2luIHdhc1JlbW92ZWRGcm9tUGx1Z2luRGF0YWJhc2U6
c2VsZl07Ci0gICAgW3BsdWdpbiByZWxlYXNlXTsKIH0KIAogLSAoTlNNdXRhYmxlU2V0ICopX3Nj
YW5Gb3JOZXdQbHVnaW5zCiB7CiAgICAgTlNNdXRhYmxlU2V0ICpuZXdQbHVnaW5zID0gW05TTXV0
YWJsZVNldCBzZXRdOwogICAgIE5TRW51bWVyYXRvciAqZGlyZWN0b3J5RW51bWVyYXRvciA9IFtb
c2VsZiBfcGx1Z0luUGF0aHNdIG9iamVjdEVudW1lcmF0b3JdOwotICAgIE5TTXV0YWJsZVNldCAq
dW5pcXVlRmlsZW5hbWVzID0gW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdOworICAgIGF1dG8g
dW5pcXVlRmlsZW5hbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwog
ICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdOwogICAgIE5TU3RyaW5nICpwbHVnaW5EaXJlY3Rvcnk7CiAgICAgd2hpbGUgKChwbHVn
aW5EaXJlY3RvcnkgPSBbZGlyZWN0b3J5RW51bWVyYXRvciBuZXh0T2JqZWN0XSkgIT0gbmlsKSB7
CkBAIC00ODQsNyArNDgyLDYgQEAgLSAoTlNNdXRhYmxlU2V0ICopX3NjYW5Gb3JOZXdQbHVnaW5z
CiAgICAgICAgICAgICAgICAgW25ld1BsdWdpbnMgYWRkT2JqZWN0OnBsdWdpblBhY2thZ2VdOwog
ICAgICAgICB9CiAgICAgfQotICAgIFt1bmlxdWVGaWxlbmFtZXMgcmVsZWFzZV07CiAgICAgCiAg
ICAgcmV0dXJuIG5ld1BsdWdpbnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggODZhZmEwZTlk
MzdhY2ZlM2VkMzRjYzA0YzJmMDA0ZjFlNWRlY2VkNS4uZDc5NDA3MTIzMmUyMmU4MzQ0MWM1Zjhi
ZTM4MGI0OGY5YWVlZjRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtMjUzLDUxICsyNTMsMzgg
QEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25z
dCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMKICNlbmRpZgogICAgIAogICAgIGlmIChbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRo
UmVxdWVzdDp3aW5kb3dGZWF0dXJlczopXSkgewotICAgICAgICBOU051bWJlciAqeCA9IGZlYXR1
cmVzLnggPyBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEZsb2F0OipmZWF0dXJlcy54XSA6IG5p
bDsKLSAgICAgICAgTlNOdW1iZXIgKnkgPSBmZWF0dXJlcy55ID8gW1tOU051bWJlciBhbGxvY10g
aW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMueV0gOiBuaWw7Ci0gICAgICAgIE5TTnVtYmVyICp3aWR0
aCA9IGZlYXR1cmVzLndpZHRoID8gW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVh
dHVyZXMud2lkdGhdIDogbmlsOwotICAgICAgICBOU051bWJlciAqaGVpZ2h0ID0gZmVhdHVyZXMu
aGVpZ2h0ID8gW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMuaGVpZ2h0
XSA6IG5pbDsKLSAgICAgICAgTlNOdW1iZXIgKm1lbnVCYXJWaXNpYmxlID0gW1tOU051bWJlciBh
bGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlXTsKLSAgICAgICAgTlNO
dW1iZXIgKnN0YXR1c0JhclZpc2libGUgPSBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6
ZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZV07Ci0gICAgICAgIE5TTnVtYmVyICp0b29sQmFyVmlz
aWJsZSA9IFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy50b29sQmFyVmlz
aWJsZV07Ci0gICAgICAgIE5TTnVtYmVyICpzY3JvbGxiYXJzVmlzaWJsZSA9IFtbTlNOdW1iZXIg
YWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZV07Ci0gICAgICAg
IE5TTnVtYmVyICpyZXNpemFibGUgPSBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVh
dHVyZXMucmVzaXphYmxlXTsKLSAgICAgICAgTlNOdW1iZXIgKmZ1bGxzY3JlZW4gPSBbW05TTnVt
YmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMuZnVsbHNjcmVlbl07Ci0gICAgICAgIE5T
TnVtYmVyICpkaWFsb2cgPSBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMu
ZGlhbG9nXTsKKyAgICAgICAgYXV0byB4ID0gZmVhdHVyZXMueCA/IGFkb3B0TlMoW1tOU051bWJl
ciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMueF0pIDogbmlsOworICAgICAgICBhdXRv
IHkgPSBmZWF0dXJlcy55ID8gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEZsb2F0
OipmZWF0dXJlcy55XSkgOiBuaWw7CisgICAgICAgIGF1dG8gd2lkdGggPSBmZWF0dXJlcy53aWR0
aCA/IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMud2lk
dGhdKSA6IG5pbDsKKyAgICAgICAgYXV0byBoZWlnaHQgPSBmZWF0dXJlcy5oZWlnaHQgPyBhZG9w
dE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoRmxvYXQ6KmZlYXR1cmVzLmhlaWdodF0pIDog
bmlsOworICAgICAgICBhdXRvIG1lbnVCYXJWaXNpYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFs
bG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMubWVudUJhclZpc2libGVdKTsKKyAgICAgICAgYXV0
byBzdGF0dXNCYXJWaXNpYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJv
b2w6ZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZV0pOworICAgICAgICBhdXRvIHRvb2xCYXJWaXNp
YmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMudG9v
bEJhclZpc2libGVdKTsKKyAgICAgICAgYXV0byBzY3JvbGxiYXJzVmlzaWJsZSA9IGFkb3B0TlMo
W1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxl
XSk7CisgICAgICAgIGF1dG8gcmVzaXphYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBp
bml0V2l0aEJvb2w6ZmVhdHVyZXMucmVzaXphYmxlXSk7CisgICAgICAgIGF1dG8gZnVsbHNjcmVl
biA9IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLmZ1bGxz
Y3JlZW5dKTsKKyAgICAgICAgYXV0byBkaWFsb2cgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2Nd
IGluaXRXaXRoQm9vbDpmZWF0dXJlcy5kaWFsb2ddKTsKICAgICAgICAgCi0gICAgICAgIE5TTXV0
YWJsZURpY3Rpb25hcnkgKmRpY3RGZWF0dXJlcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lbnVCYXJWaXNpYmxlLCBAIm1lbnVCYXJWaXNpYmxlIiwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNCYXJWaXNpYmxl
LCBAInN0YXR1c0JhclZpc2libGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdG9vbEJhclZpc2libGUsIEAidG9vbEJhclZpc2libGUiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYmFyc1Zpc2libGUsIEAi
c2Nyb2xsYmFyc1Zpc2libGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzaXphYmxlLCBAInJlc2l6YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuLCBAImZ1bGxzY3JlZW4iLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nLCBAImRpYWxvZyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworICAg
ICAgICBhdXRvIGRpY3RGZWF0dXJlcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVudUJhclZpc2libGUuZ2V0KCksIEAibWVudUJhclZpc2libGUi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQmFy
VmlzaWJsZS5nZXQoKSwgQCJzdGF0dXNCYXJWaXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xCYXJWaXNpYmxlLmdldCgpLCBAInRvb2xCYXJW
aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj
cm9sbGJhcnNWaXNpYmxlLmdldCgpLCBAInNjcm9sbGJhcnNWaXNpYmxlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZS5nZXQoKSwgQCJyZXNp
emFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVs
bHNjcmVlbi5nZXQoKSwgQCJmdWxsc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpYWxvZy5nZXQoKSwgQCJkaWFsb2ciLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSk7CiAgICAgICAgIAogICAgICAg
ICBpZiAoeCkKLSAgICAgICAgICAgIFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0OnggZm9yS2V5OkAi
eCJdOworICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6eC5nZXQoKSBmb3JLZXk6
QCJ4Il07CiAgICAgICAgIGlmICh5KQotICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmpl
Y3Q6eSBmb3JLZXk6QCJ5Il07CisgICAgICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDp5
LmdldCgpIGZvcktleTpAInkiXTsKICAgICAgICAgaWYgKHdpZHRoKQotICAgICAgICAgICAgW2Rp
Y3RGZWF0dXJlcyBzZXRPYmplY3Q6d2lkdGggZm9yS2V5OkAid2lkdGgiXTsKKyAgICAgICAgICAg
IFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0OndpZHRoLmdldCgpIGZvcktleTpAIndpZHRoIl07CiAg
ICAgICAgIGlmIChoZWlnaHQpCi0gICAgICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDpo
ZWlnaHQgZm9yS2V5OkAiaGVpZ2h0Il07CisgICAgICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9i
amVjdDpoZWlnaHQuZ2V0KCkgZm9yS2V5OkAiaGVpZ2h0Il07CiAgICAgICAgIAotICAgICAgICBu
ZXdXZWJWaWV3ID0gQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpj
cmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6d2luZG93RmVhdHVyZXM6KSwgbmlsLCBkaWN0RmVhdHVy
ZXMpOwotICAgICAgICAKLSAgICAgICAgW2RpY3RGZWF0dXJlcyByZWxlYXNlXTsKLSAgICAgICAg
W3ggcmVsZWFzZV07Ci0gICAgICAgIFt5IHJlbGVhc2VdOwotICAgICAgICBbd2lkdGggcmVsZWFz
ZV07Ci0gICAgICAgIFtoZWlnaHQgcmVsZWFzZV07Ci0gICAgICAgIFttZW51QmFyVmlzaWJsZSBy
ZWxlYXNlXTsKLSAgICAgICAgW3N0YXR1c0JhclZpc2libGUgcmVsZWFzZV07Ci0gICAgICAgIFt0
b29sQmFyVmlzaWJsZSByZWxlYXNlXTsKLSAgICAgICAgW3Njcm9sbGJhcnNWaXNpYmxlIHJlbGVh
c2VdOwotICAgICAgICBbcmVzaXphYmxlIHJlbGVhc2VdOwotICAgICAgICBbZnVsbHNjcmVlbiBy
ZWxlYXNlXTsKLSAgICAgICAgW2RpYWxvZyByZWxlYXNlXTsKKyAgICAgICAgbmV3V2ViVmlldyA9
IENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmll
d1dpdGhSZXF1ZXN0OndpbmRvd0ZlYXR1cmVzOiksIG5pbCwgZGljdEZlYXR1cmVzLmdldCgpKTsK
ICAgICB9IGVsc2UgaWYgKGZlYXR1cmVzLmRpYWxvZyAmJiBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdNb2RhbERpYWxvZ1dpdGhSZXF1
ZXN0OildKSB7CiAgICAgICAgIG5ld1dlYlZpZXcgPSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcs
IEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdNb2RhbERpYWxvZ1dpdGhSZXF1ZXN0Oiks
IG5pbCk7CiAgICAgfSBlbHNlIHsKQEAgLTQ2MywyNSArNDUwLDIzIEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
TGV2ZWwgbGV2CiAgICAgfQogCiAgICAgTlNTdHJpbmcgKm1lc3NhZ2VTb3VyY2UgPSBzdHJpbmdG
b3JNZXNzYWdlU291cmNlKHNvdXJjZSk7Ci0gICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0g
W1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgYXV0byBk
aWN0aW9uYXJ5ID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
QW5kS2V5czoKICAgICAgICAgKE5TU3RyaW5nICopbWVzc2FnZSwgQCJtZXNzYWdlIiwKICAgICAg
ICAgQChsaW5lTnVtYmVyKSwgQCJsaW5lTnVtYmVyIiwKICAgICAgICAgQChjb2x1bW5OdW1iZXIp
LCBAImNvbHVtbk51bWJlciIsCiAgICAgICAgIChOU1N0cmluZyAqKXNvdXJjZVVSTCwgQCJzb3Vy
Y2VVUkwiLAogICAgICAgICBtZXNzYWdlU291cmNlLCBAIk1lc3NhZ2VTb3VyY2UiLAogICAgICAg
ICBzdHJpbmdGb3JNZXNzYWdlTGV2ZWwobGV2ZWwpLCBAIk1lc3NhZ2VMZXZlbCIsCi0gICAgICAg
IE5VTExdOworICAgICAgICBOVUxMXSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IFtbW21fd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gYXN5bmNGb3J3YXJkZXJdIHdl
YlZpZXc6bV93ZWJWaWV3IGFkZE1lc3NhZ2VUb0NvbnNvbGU6ZGljdGlvbmFyeSB3aXRoU291cmNl
Om1lc3NhZ2VTb3VyY2VdOworICAgIFtbW21fd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRl
cl0gYXN5bmNGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGFkZE1lc3NhZ2VUb0NvbnNvbGU6
ZGljdGlvbmFyeS5nZXQoKSB3aXRoU291cmNlOm1lc3NhZ2VTb3VyY2VdOwogI2Vsc2UKICAgICBp
ZiAocmVzcG9uZHNUb05ld1NlbGVjdG9yKQotICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZp
ZXcsIHNlbGVjdG9yLCBkaWN0aW9uYXJ5LCBtZXNzYWdlU291cmNlKTsKKyAgICAgICAgQ2FsbFVJ
RGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3RvciwgZGljdGlvbmFyeS5nZXQoKSwgbWVzc2FnZVNv
dXJjZSk7CiAgICAgZWxzZQotICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVj
dG9yLCBkaWN0aW9uYXJ5KTsKKyAgICAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxl
Y3RvciwgZGljdGlvbmFyeS5nZXQoKSk7CiAjZW5kaWYKLQotICAgIFtkaWN0aW9uYXJ5IHJlbGVh
c2VdOwogfQogCiBib29sIFdlYkNocm9tZUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKCkKQEAgLTY2OCw5ICs2NTMsOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6dW5hdmFp
bGFibGVQbHVnaW5CdXR0b25DbGlja2VkKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlckVtYgogCiB2
b2lkIFdlYkNocm9tZUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVz
dFJlc3VsdCYgcmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzLCBjb25zdCBTdHJpbmcmIHRv
b2xUaXAsIFRleHREaXJlY3Rpb24pCiB7Ci0gICAgV2ViRWxlbWVudERpY3Rpb25hcnkgKmVsZW1l
bnQgPSBbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6
cmVzdWx0XTsKLSAgICBbbV93ZWJWaWV3IF9tb3VzZURpZE1vdmVPdmVyRWxlbWVudDplbGVtZW50
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFnc107Ci0gICAgW2VsZW1lbnQgcmVsZWFzZV07Cisg
ICAgYXV0byBlbGVtZW50ID0gYWRvcHROUyhbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBp
bml0V2l0aEhpdFRlc3RSZXN1bHQ6cmVzdWx0XSk7CisgICAgW21fd2ViVmlldyBfbW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQ6ZWxlbWVudC5nZXQoKSBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3Nd
OwogICAgIHNldFRvb2xUaXAodG9vbFRpcCk7CiB9CiAKQEAgLTY5NCw5ICs2NzgsOCBAQCB2b2lk
IFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lJiBmcmFtZSwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwog
Ci0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4g
YWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjomZnJhbWUuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKV07Ci0gICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0
b3Iod2ViVmlldzpmcmFtZTpleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjpk
YXRhYmFzZTopLCBraXQoJmZyYW1lKSwgd2ViT3JpZ2luLCAoTlNTdHJpbmcgKilkYXRhYmFzZU5h
bWUpOwotICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07CisgICAgYXV0byB3ZWJPcmlnaW4gPSBhZG9w
dE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9y
aWdpbjomZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKV0pOworICAgIENhbGxVSURl
bGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZnJhbWU6ZXhjZWVkZWREYXRhYmFz
ZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46ZGF0YWJhc2U6KSwga2l0KCZmcmFtZSksIHdlYk9yaWdp
bi5nZXQoKSwgKE5TU3RyaW5nICopZGF0YWJhc2VOYW1lKTsKIAogICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKIH0KQEAgLTcxMCw5ICs2OTMsOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
LAogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCi0gICAgV2ViU2VjdXJpdHlP
cmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdl
YkNvcmVTZWN1cml0eU9yaWdpbjomb3JpZ2luXTsKLSAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZp
ZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
Rm9yU2VjdXJpdHlPcmlnaW46dG90YWxTcGFjZU5lZWRlZDopLCB3ZWJPcmlnaW4sIHN0YXRpY19j
YXN0PE5TVUludGVnZXI+KHRvdGFsU3BhY2VOZWVkZWQpKTsKLSAgICBbd2ViT3JpZ2luIHJlbGVh
c2VdOworICAgIGF1dG8gd2ViT3JpZ2luID0gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFs
bG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Jm9yaWdpbl0pOworICAgIENhbGxV
SURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZXhjZWVkZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp0b3RhbFNwYWNlTmVlZGVkOiksIHdl
Yk9yaWdpbi5nZXQoKSwgc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4odG90YWxTcGFjZU5lZWRlZCkp
OwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpAQCAtNzgyLDE1ICs3NjQsMTQg
QEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2Vy
JiBjaG9vc2VyKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIEJPT0wg
YWxsb3dNdWx0aXBsZUZpbGVzID0gY2hvb3Nlci5zZXR0aW5ncygpLmFsbG93c011bHRpcGxlRmls
ZXM7Ci0gICAgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgKmxpc3RlbmVyID0gW1tXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDaG9vc2VyOmNob29zZXJdOworICAg
IGF1dG8gbGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgYWxs
b2NdIGluaXRXaXRoQ2hvb3NlcjpjaG9vc2VyXSk7CiAgICAgaWQgZGVsZWdhdGUgPSBbbV93ZWJW
aWV3IFVJRGVsZWdhdGVdOwogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVu
ZXI6YWxsb3dNdWx0aXBsZUZpbGVzOildKQotICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZp
ZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0
TGlzdGVuZXI6YWxsb3dNdWx0aXBsZUZpbGVzOiksIGxpc3RlbmVyLCBhbGxvd011bHRpcGxlRmls
ZXMpOworICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3
OnJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6YWxsb3dNdWx0aXBs
ZUZpbGVzOiksIGxpc3RlbmVyLmdldCgpLCBhbGxvd011bHRpcGxlRmlsZXMpOwogICAgIGVsc2Ug
aWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVuT3Bl
blBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjopXSkKLSAgICAgICAgQ2FsbFVJ
RGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpydW5PcGVuUGFuZWxGb3JGaWxl
QnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOiksIGxpc3RlbmVyKTsKKyAgICAgICAgQ2FsbFVJRGVs
ZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpydW5PcGVuUGFuZWxGb3JGaWxlQnV0
dG9uV2l0aFJlc3VsdExpc3RlbmVyOiksIGxpc3RlbmVyLmdldCgpKTsKICAgICBlbHNlCiAgICAg
ICAgIFtsaXN0ZW5lciBjYW5jZWxdOwotICAgIFtsaXN0ZW5lciByZWxlYXNlXTsKICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTEwNzksOSArMTA2MCw4IEBAIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkK
IHsKICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpleGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQ6bGlzdGVuZXI6KTsKICAgICBpZiAoW1ttX3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVz
cG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgewotICAgICAgICBXZWJLaXRGdWxsU2NyZWVuTGlz
dGVuZXIqIGxpc3RlbmVyID0gW1tXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgYWxsb2NdIGluaXRX
aXRoRWxlbWVudDplbGVtZW50XTsKLSAgICAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBz
ZWxlY3Rvciwga2l0KGVsZW1lbnQpLCBsaXN0ZW5lcik7Ci0gICAgICAgIFtsaXN0ZW5lciByZWxl
YXNlXTsKKyAgICAgICAgYXV0byBsaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJLaXRGdWxsU2NyZWVu
TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudDplbGVtZW50XSk7CisgICAgICAgIENhbGxV
SURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIGtpdChlbGVtZW50KSwgbGlzdGVuZXIuZ2V0
KCkpOwogICAgIH0KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0KaW5kZXggMDFlYzAzZWE4N2JjNDEwNjJiYjZkZjU1YjU4MGE5ZWFhYWZjZWJlMS4u
MGExNjQ5YzBhODIzYTU5MDhhMzMzMDI2M2QyN2VjMDc0ODFkOWNiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgX1dlYkNyZWF0ZUZyYWdtZW50KERvY3VtZW50
JiwgTlNBdHRyaWJ1dGVkU3RyaW5nICosIEZyYWdtZW50QW5kUmVzb3VyY2VzJikKIHN0YXRpYyBO
U0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpCiB7
CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBpZGVu
dGljYWxseSBuYW1lZCBvbmUgaW4gV2ViQ29yZSwgd2hpY2ggaXMgdXNlZCBvbiBuZXdlciBPUyB2
ZXJzaW9ucy4KLSAgICBOU011dGFibGVBcnJheSAqZXhjbHVkZWRFbGVtZW50cyA9IFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKKyAgICBhdXRvIGV4Y2x1ZGVkRWxlbWVu
dHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKICAg
ICAgICAgLy8gT21pdCBzdHlsZSBzaW5jZSB3ZSB3YW50IHN0eWxlIHRvIGJlIGlubGluZSBzbyB0
aGUgZnJhZ21lbnQgY2FuIGJlIGVhc2lseSBpbnNlcnRlZC4KICAgICAgICAgQCJzdHlsZSIsCiAg
ICAgICAgIC8vIE9taXQgeG1sIHNvIHRoZSByZXN1bHQgaXMgbm90IFhIVE1MLgpAQCAtNDQ3LDE2
ICs0NDcsMTQgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRT
dHJpbmdDb252ZXJzaW9uKCkKICAgICAgICAgLy8gT21pdCBvYmplY3Qgc28gbm8gZmlsZSBhdHRh
Y2htZW50cyBhcmUgcGFydCBvZiB0aGUgZnJhZ21lbnQuCiAgICAgICAgIEAib2JqZWN0IiwKICNl
bmRpZgotICAgICAgICBuaWxdOworICAgICAgICBuaWxdKTsKIAogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpKQogICAgICAgICBbZXhjbHVkZWRFbGVt
ZW50cyBhZGRPYmplY3Q6QCJvYmplY3QiXTsKICNlbmRpZgogCi0gICAgTlNEaWN0aW9uYXJ5ICpk
aWN0aW9uYXJ5ID0gQHsgTlNFeGNsdWRlZEVsZW1lbnRzRG9jdW1lbnRBdHRyaWJ1dGU6IGV4Y2x1
ZGVkRWxlbWVudHMgfTsKLQotICAgIFtleGNsdWRlZEVsZW1lbnRzIHJlbGVhc2VdOworICAgIE5T
RGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IEB7IE5TRXhjbHVkZWRFbGVtZW50c0RvY3VtZW50QXR0
cmlidXRlOiBleGNsdWRlZEVsZW1lbnRzLmdldCgpIH07CiAKICAgICByZXR1cm4gZGljdGlvbmFy
eTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZjc1ZjgwYzY3NGNhMDAzMTM2
MzYzM2RkNTM1MTUxZWU0MGEwNjFkNS4uNTlmODMyNjdjZjMxNzg1Mzc5YzU0ZmMxM2U4YWRiOTY5
ZTEyNTI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTI1OCw3ICsyNTgsNyBA
QCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpmb3JjZUxheW91dE9uUmVzdG9yZUZyb21CYWNr
Rm9yd2FyZENhY2hlKCkKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Zm9yY2VMYXlvdXRG
b3JOb25IVE1MKCkKIHsKLSAgICBXZWJGcmFtZVZpZXcgKnRoaXNWaWV3ID0gbV93ZWJGcmFtZS0+
X3ByaXZhdGUtPndlYkZyYW1lVmlldzsKKyAgICBhdXRvIHRoaXNWaWV3ID0gbV93ZWJGcmFtZS0+
X3ByaXZhdGUtPndlYkZyYW1lVmlldzsKICAgICBOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKnRo
aXNEb2N1bWVudFZpZXcgPSBbdGhpc1ZpZXcgZG9jdW1lbnRWaWV3XTsKICAgICBBU1NFUlQodGhp
c0RvY3VtZW50VmlldyAhPSBuaWwpOwogICAgIApAQCAtODM2LDExICs4MzYsMTAgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRp
b25TZXQ8V2ViQ29yZTo6TGEKIFdlYkNvcmU6OkZyYW1lKiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBXZWJD
b3JlOjpOZXdGcmFtZU9wZW5lclBvbGljeSkKIHsKICAgICBXZWJWaWV3ICpjdXJyZW50V2ViVmll
dyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7Ci0gICAgTlNEaWN0aW9uYXJ5ICpmZWF0
dXJlcyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIGZlYXR1cmVzID0g
YWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIFdlYlZpZXcgKm5ld1dl
YlZpZXcgPSBbW2N1cnJlbnRXZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OmN1
cnJlbnRXZWJWaWV3IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0Om5pbAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0ZlYXR1cmVzOmZlYXR1
cmVzXTsKLSAgICBbZmVhdHVyZXMgcmVsZWFzZV07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93RmVhdHVyZXM6ZmVhdHVyZXMu
Z2V0KCldOwogICAgIAogI2lmIFVTRShQTFVHSU5fSE9TVF9QUk9DRVNTKSAmJiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAobmV3V2ViVmlldykKQEAgLTEwMDgsOSArMTAwNyw4
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpE
b2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewot
ICAgIE5TRGF0YSAqbnNEYXRhID0gW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6
KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dOwotICAgIFtkYXRhU291
cmNlKGxvYWRlcikgX3JlY2VpdmVkRGF0YTpuc0RhdGFdOwotICAgIFtuc0RhdGEgcmVsZWFzZV07
CisgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVz
Tm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7CisgICAg
W2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOm5zRGF0YS5nZXQoKV07CiB9CiAKIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciogbG9hZGVyKQpAQCAtMTMxOSwxMCArMTMxNywxMCBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKICAgICAvLyBhIG5v
bi1lZGl0b3IgaXMgZmlyc3RSZXBvbmRlciBpdCB3aWxsIG5vdCBiZSBhZmZlY3RlZCBieSBlbmRF
ZGl0aW5nRm9yOi4KICAgICAvLyBQb3RlbnRpYWxseSBvbmUgZGF5IHNvbWVvbmUgY291bGQgd3Jp
dGUgYSBEb2NWaWV3IHdob3NlIGVkaXRvcnMgd2VyZSBub3QgYWxsCiAgICAgLy8gcmVwbGFjZWQg
YnkgbG9hZGluZyBuZXcgY29udGVudCwgYnV0IHRoYXQgZG9lcyBub3QgYXBwbHkgY3VycmVudGx5
LgotICAgIE5TVmlldyAqZnJhbWVWaWV3ID0gbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1l
VmlldzsKKyAgICBhdXRvIGZyYW1lVmlldyA9IG1fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFt
ZVZpZXc7CiAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtmcmFtZVZpZXcgd2luZG93XTsKICAgICBO
U1Jlc3BvbmRlciAqZmlyc3RSZXNwID0gW3dpbmRvdyBmaXJzdFJlc3BvbmRlcl07Ci0gICAgaWYg
KFtmaXJzdFJlc3AgaXNLaW5kT2ZDbGFzczpbTlNWaWV3IGNsYXNzXV0gJiYgWyhOU1ZpZXcgKilm
aXJzdFJlc3AgaXNEZXNjZW5kYW50T2Y6ZnJhbWVWaWV3XSkKKyAgICBpZiAoW2ZpcnN0UmVzcCBp
c0tpbmRPZkNsYXNzOltOU1ZpZXcgY2xhc3NdXSAmJiBbKE5TVmlldyAqKWZpcnN0UmVzcCBpc0Rl
c2NlbmRhbnRPZjpmcmFtZVZpZXcuZ2V0KCldKQogICAgICAgICBbd2luZG93IGVuZEVkaXRpbmdG
b3I6Zmlyc3RSZXNwXTsKICNlbmRpZgogfQpAQCAtMTMzMSw5ICsxMzI5LDggQEAgUmVmPFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRM
b2FkZXIoY29uc3QgV2UKIHsKICAgICBhdXRvIGxvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVyTWFj
OjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwogCi0gICAgV2ViRGF0YVNvdXJjZSAq
ZGF0YVNvdXJjZSA9IFtbV2ViRGF0YVNvdXJjZSBhbGxvY10gX2luaXRXaXRoRG9jdW1lbnRMb2Fk
ZXI6bG9hZGVyLmNvcHlSZWYoKV07Ci0gICAgbG9hZGVyLT5zZXREYXRhU291cmNlKGRhdGFTb3Vy
Y2UsIGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSkpOwotICAgIFtkYXRhU291cmNlIHJlbGVh
c2VdOworICAgIGF1dG8gZGF0YVNvdXJjZSA9IGFkb3B0TlMoW1tXZWJEYXRhU291cmNlIGFsbG9j
XSBfaW5pdFdpdGhEb2N1bWVudExvYWRlcjpsb2FkZXIuY29weVJlZigpXSk7CisgICAgbG9hZGVy
LT5zZXREYXRhU291cmNlKGRhdGFTb3VyY2UuZ2V0KCksIGdldFdlYlZpZXcobV93ZWJGcmFtZS5n
ZXQoKSkpOwogCiAgICAgcmV0dXJuIFdURk1vdmUobG9hZGVyKTsKIH0KQEAgLTEzNjgsNyArMTM2
NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFdlYkNvcmU6
OlN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKiBj
YWNoZWRGcmFtZSkKIHsKLSAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURh
dGEobWFrZVVuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4obV93ZWJGcmFtZS0+X3By
aXZhdGUtPndlYkZyYW1lVmlldy5kb2N1bWVudFZpZXcpKTsKKyAgICBjYWNoZWRGcmFtZS0+c2V0
Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEobWFrZVVuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YT4oW21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgZG9jdW1lbnRWaWV3XSkp
OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtu
b3cgdGhpcyBmcmFtZSBpcyBnb2luZyB0byBiZSBjYWNoZWQuIFN0b3AgYWxsIHBsdWdpbnMuCkBA
IC0xNDM1LDE1ICsxNDMyLDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRp
b25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJW
aWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFt3ZWJWaWV3IHJlbW92ZVBsdWdpbkluc3RhbmNl
Vmlld3NGb3I6KG1fd2ViRnJhbWUuZ2V0KCkpXTsKICAgICAKLSAgICBOU1ZpZXcgPFdlYkRvY3Vt
ZW50Vmlldz4gKmRvY3VtZW50VmlldyA9IFttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVW
aWV3IF9tYWtlRG9jdW1lbnRWaWV3Rm9yRGF0YVNvdXJjZTpkYXRhU291cmNlXTsKKyAgICBSZXRh
aW5QdHI8TlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+PiBkb2N1bWVudFZpZXcgPSBbbV93ZWJGcmFt
ZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBfbWFrZURvY3VtZW50Vmlld0ZvckRhdGFTb3VyY2U6
ZGF0YVNvdXJjZV07CiAjZWxzZQotICAgIE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqZG9jdW1l
bnRWaWV3ID0gbmlsOworICAgIFJldGFpblB0cjxOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4+IGRv
Y3VtZW50VmlldzsKIAogICAgIC8vIEZhc3QgcGF0aCB0aGF0IHNraXBzIGluaXRpYWxpemF0aW9u
IG9mIG9iamMgY2xhc3Mgb2JqZWN0cy4KICAgICBpZiAod2lsbFByb2R1Y2VIVE1MVmlldykgewot
ICAgICAgICBkb2N1bWVudFZpZXcgPSBbW1dlYkhUTUxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OlttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3IGJvdW5kc11dOwotICAgICAgICBb
bV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBfc2V0RG9jdW1lbnRWaWV3OmRvY3Vt
ZW50Vmlld107Ci0gICAgICAgIFtkb2N1bWVudFZpZXcgcmVsZWFzZV07CisgICAgICAgIGRvY3Vt
ZW50VmlldyA9IGFkb3B0TlMoW1tXZWJIVE1MVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbbV93
ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBib3VuZHNdXSk7CisgICAgICAgIFttX3dl
YkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3IF9zZXREb2N1bWVudFZpZXc6ZG9jdW1lbnRW
aWV3LmdldCgpXTsKICAgICB9IGVsc2UKICAgICAgICAgZG9jdW1lbnRWaWV3ID0gW21fd2ViRnJh
bWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgX21ha2VEb2N1bWVudFZpZXdGb3JEYXRhU291cmNl
OmRhdGFTb3VyY2VdOwogI2VuZGlmCkBAIC0xNTcwLDEwICsxNTY2LDkgQEAgTlNEaWN0aW9uYXJ5
ICpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeShjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWMKIAogICAgIGlmIChhdXRvIG1vdXNlRXZlbnREYXRhID0gYWN0aW9uLm1vdXNl
RXZlbnREYXRhKCkpIHsKICAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVz
dDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRl
c3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRv
d0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07Ci0gICAg
ICAgIFdlYkVsZW1lbnREaWN0aW9uYXJ5ICplbGVtZW50ID0gW1tXZWJFbGVtZW50RGljdGlvbmFy
eSBhbGxvY10KLSAgICAgICAgICAgIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpjb3JlKG1fd2ViRnJh
bWUuZ2V0KCkpLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50
RGF0YS0+YWJzb2x1dGVMb2NhdGlvbiwgaGl0VHlwZSldOwotICAgICAgICBbcmVzdWx0IHNldE9i
amVjdDplbGVtZW50IGZvcktleTpXZWJBY3Rpb25FbGVtZW50S2V5XTsKLSAgICAgICAgW2VsZW1l
bnQgcmVsZWFzZV07CisgICAgICAgIGF1dG8gZWxlbWVudCA9IGFkb3B0TlMoW1tXZWJFbGVtZW50
RGljdGlvbmFyeSBhbGxvY10KKyAgICAgICAgICAgIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpjb3Jl
KG1fd2ViRnJhbWUuZ2V0KCkpLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludCht
b3VzZUV2ZW50RGF0YS0+YWJzb2x1dGVMb2NhdGlvbiwgaGl0VHlwZSldKTsKKyAgICAgICAgW3Jl
c3VsdCBzZXRPYmplY3Q6ZWxlbWVudC5nZXQoKSBmb3JLZXk6V2ViQWN0aW9uRWxlbWVudEtleV07
CiAKICAgICAgICAgaWYgKG1vdXNlRXZlbnREYXRhLT5pc1RydXN0ZWQpCiAgICAgICAgICAgICBb
cmVzdWx0IHNldE9iamVjdDpAKG1vdXNlRXZlbnREYXRhLT5idXR0b24pIGZvcktleTpXZWJBY3Rp
b25CdXR0b25LZXldOwpAQCAtMTYxNCwxMCArMTYwOSw5IEBAIFJlZlB0cjxXZWJDb3JlOjpGcmFt
ZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwg
V2ViCiAgICAgCiAgICAgQVNTRVJUKG1fd2ViRnJhbWUpOwogICAgIAotICAgIFdlYkZyYW1lVmll
dyAqY2hpbGRWaWV3ID0gW1tXZWJGcmFtZVZpZXcgYWxsb2NdIGluaXRdOworICAgIGF1dG8gY2hp
bGRWaWV3ID0gYWRvcHROUyhbW1dlYkZyYW1lVmlldyBhbGxvY10gaW5pdF0pOwogICAgIAotICAg
IFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gcmVzdWx0ID0gW1dlYkZyYW1lIF9jcmVhdGVTdWJmcmFt
ZVdpdGhPd25lckVsZW1lbnQ6Jm93bmVyRWxlbWVudCBmcmFtZU5hbWU6bmFtZSBmcmFtZVZpZXc6
Y2hpbGRWaWV3XTsKLSAgICBbY2hpbGRWaWV3IHJlbGVhc2VdOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpGcmFtZT4gcmVzdWx0ID0gW1dlYkZyYW1lIF9jcmVhdGVTdWJmcmFtZVdpdGhPd25lckVsZW1l
bnQ6Jm93bmVyRWxlbWVudCBmcmFtZU5hbWU6bmFtZSBmcmFtZVZpZXc6Y2hpbGRWaWV3LmdldCgp
XTsKIAogICAgIFdlYkZyYW1lICpuZXdGcmFtZSA9IGtpdChyZXN1bHQuZ2V0KCkpOwogCkBAIC0x
Njk5LDEyICsxNjkzLDExIEBAIHN0YXRpYyBOU1ZpZXcgKnBsdWdpblZpZXcoV2ViRnJhbWUgKmZy
YW1lLCBXZWJQbHVnaW5QYWNrYWdlICpwbHVnaW5QYWNrYWdlLAogICAgIFdlYlBsdWdpbkNvbnRy
b2xsZXIgKnBsdWdpbkNvbnRyb2xsZXIgPSBbZG9jVmlldyBfcGx1Z2luQ29udHJvbGxlcl07CiAK
ICAgICAvLyBTdG9yZSBhdHRyaWJ1dGVzIGluIGEgZGljdGlvbmFyeSBzbyB0aGV5IGNhbiBiZSBw
YXNzZWQgdG8gV2ViUGx1Z2lucy4KLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICphdHRyaWJ1dGVz
ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6YXR0cmlidXRl
VmFsdWVzIGZvcktleXM6YXR0cmlidXRlTmFtZXNdOworICAgIGF1dG8gYXR0cmlidXRlcyA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6YXR0cmli
dXRlVmFsdWVzIGZvcktleXM6YXR0cmlidXRlTmFtZXNdKTsKIAogICAgIFtwbHVnaW5QYWNrYWdl
IGxvYWRdOwogICAgIENsYXNzIHZpZXdGYWN0b3J5ID0gW3BsdWdpblBhY2thZ2Ugdmlld0ZhY3Rv
cnldOwogICAgIAotICAgIE5TVmlldyAqdmlldyA9IG5pbDsKICAgICBOU0RpY3Rpb25hcnkgKmFy
Z3VtZW50cyA9IG5pbDsKIAogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVj
dG9yIikKQEAgLTE3MTQsNyArMTcwNyw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICBpZiAo
W3ZpZXdGYWN0b3J5IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGx1Z0luVmlld1dpdGhB
cmd1bWVudHM6KV0pIHsKICAgICAgICAgYXJndW1lbnRzID0gQHsKICAgICAgICAgICAgIFdlYlBs
dWdJbkJhc2VVUkxLZXk6IGJhc2VVUkwsCi0gICAgICAgICAgICBXZWJQbHVnSW5BdHRyaWJ1dGVz
S2V5OiBhdHRyaWJ1dGVzLAorICAgICAgICAgICAgV2ViUGx1Z0luQXR0cmlidXRlc0tleTogYXR0
cmlidXRlcy5nZXQoKSwKICAgICAgICAgICAgIFdlYlBsdWdJbkNvbnRhaW5lcktleTogcGx1Z2lu
Q29udHJvbGxlciwKICAgICAgICAgICAgIFdlYlBsdWdJbk1vZGVLZXk6IEAobG9hZE1hbnVhbGx5
ID8gV2ViUGx1Z0luTW9kZUZ1bGwgOiBXZWJQbHVnSW5Nb2RlRW1iZWQpLAogICAgICAgICAgICAg
V2ViUGx1Z0luU2hvdWxkTG9hZE1haW5SZXNvdXJjZUtleTogW05TTnVtYmVyIG51bWJlcldpdGhC
b29sOiFsb2FkTWFudWFsbHldLApAQCAtMTcyNCwxNyArMTcxNywxNCBAQCBJR05PUkVfV0FSTklO
R1NfRU5ECiAgICAgfSBlbHNlIGlmIChbdmlld0ZhY3RvcnkgcmVzcG9uZHNUb1NlbGVjdG9yOm9s
ZFNlbGVjdG9yXSkgewogICAgICAgICBhcmd1bWVudHMgPSBAewogICAgICAgICAgICAgV2ViUGx1
Z2luQmFzZVVSTEtleTogYmFzZVVSTCwKLSAgICAgICAgICAgIFdlYlBsdWdpbkF0dHJpYnV0ZXNL
ZXk6IGF0dHJpYnV0ZXMsCisgICAgICAgICAgICBXZWJQbHVnaW5BdHRyaWJ1dGVzS2V5OiBhdHRy
aWJ1dGVzLmdldCgpLAogICAgICAgICAgICAgV2ViUGx1Z2luQ29udGFpbmVyS2V5OiBwbHVnaW5D
b250cm9sbGVyLAogICAgICAgICAgICAgV2ViUGx1Z0luQ29udGFpbmluZ0VsZW1lbnRLZXk6IGVs
ZW1lbnQsCiAgICAgICAgIH07CiAgICAgICAgIExPRyhQbHVnaW5zLCAiYXJndW1lbnRzOlxuJUAi
LCBhcmd1bWVudHMpOwogICAgIH0KIAotICAgIHZpZXcgPSBbcGx1Z2luQ29udHJvbGxlciBwbHVn
SW5WaWV3V2l0aEFyZ3VtZW50czphcmd1bWVudHMgZnJvbVBsdWdpblBhY2thZ2U6cGx1Z2luUGFj
a2FnZV07Ci0gICAgW2F0dHJpYnV0ZXMgcmVsZWFzZV07Ci0KLSAgICByZXR1cm4gdmlldzsKKyAg
ICByZXR1cm4gW3BsdWdpbkNvbnRyb2xsZXIgcGx1Z0luVmlld1dpdGhBcmd1bWVudHM6YXJndW1l
bnRzIGZyb21QbHVnaW5QYWNrYWdlOnBsdWdpblBhY2thZ2VdOwogfQogCiBjbGFzcyBQbHVnaW5X
aWRnZXQgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z2luVmlld0Jhc2UgewpAQCAtMTkwMiwxOCArMTg5
MiwxNiBAQCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpegogICAgIFNFTCBzZWxlY3RvciA9IEBzZWxl
Y3Rvcih3ZWJWaWV3OnBsdWdJblZpZXdXaXRoQXJndW1lbnRzOik7CiAgICAgaWYgKFtbd2ViVmll
dyBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7CiAgICAgICAgIE5T
RGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzOmNyZWF0ZU5TQXJyYXkocGFyYW1WYWx1ZXMpLmdldCgpIGZvcktleXM6YXR0cmlidXRlS2V5
cy5nZXQoKV07Ci0gICAgICAgIE5TRGljdGlvbmFyeSAqYXJndW1lbnRzID0gW1tOU0RpY3Rpb25h
cnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgIGF1dG8gYXJndW1lbnRz
ID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoK
ICAgICAgICAgICAgIGF0dHJpYnV0ZXMsIFdlYlBsdWdJbkF0dHJpYnV0ZXNLZXksCiAgICAgICAg
ICAgICBAKGxvYWRNYW51YWxseSA/IFdlYlBsdWdJbk1vZGVGdWxsIDogV2ViUGx1Z0luTW9kZUVt
YmVkKSwgV2ViUGx1Z0luTW9kZUtleSwKICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
Qm9vbDohbG9hZE1hbnVhbGx5XSwgV2ViUGx1Z0luU2hvdWxkTG9hZE1haW5SZXNvdXJjZUtleSwK
ICAgICAgICAgICAgIGtpdCgmZWxlbWVudCksIFdlYlBsdWdJbkNvbnRhaW5pbmdFbGVtZW50S2V5
LAogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBwYXNzaW5nIGJhc2UgVVJMLCBz
ZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTIxNT4uCiAgICAg
ICAgICAgICBwbHVnaW5VUkwsIFdlYlBsdWdJbkJhc2VVUkxLZXksIC8vIHBsdWdpblVSTCBtaWdo
dCBiZSBuaWwsIHNvIGFkZCBpdCBsYXN0Ci0gICAgICAgICAgICBuaWxdOwotCi0gICAgICAgIE5T
VmlldyAqdmlldyA9IENhbGxVSURlbGVnYXRlKHdlYlZpZXcsIHNlbGVjdG9yLCBhcmd1bWVudHMp
OworICAgICAgICAgICAgbmlsXSk7CiAKLSAgICAgICAgW2FyZ3VtZW50cyByZWxlYXNlXTsKKyAg
ICAgICAgTlNWaWV3ICp2aWV3ID0gQ2FsbFVJRGVsZWdhdGUod2ViVmlldywgc2VsZWN0b3IsIGFy
Z3VtZW50cy5nZXQoKSk7CiAKICAgICAgICAgaWYgKHZpZXcpCiAgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQbHVnaW5XaWRnZXQodmlldykpOwpAQCAtMTk4NywxMSArMTk3NSwxMCBA
QCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1
Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpegogICAgICAgICAgICAgICAgIHBsdWdpblBhZ2VVUkwg
PSBVUkwoKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpwbHVnaW5OYW1lID0gcGx1Z2luUGFja2Fn
ZSA/IChOU1N0cmluZyAqKVtwbHVnaW5QYWNrYWdlIHBsdWdpbkluZm9dLm5hbWUgOiBuaWw7CiAK
LSAgICAgICAgICAgIE5TRXJyb3IgKmVycm9yID0gW1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQ
bHVnaW5FcnJvckNvZGU6ZXJyb3JDb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VVJMOnBsdWdpblVSTCBwbHVnaW5Q
YWdlVVJMOnBsdWdpblBhZ2VVUkwgcGx1Z2luTmFtZTpwbHVnaW5OYW1lIE1JTUVUeXBlOk1JTUVU
eXBlXTsKKyAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10g
X2luaXRXaXRoUGx1Z2luRXJyb3JDb2RlOmVycm9yQ29kZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFVSTDpwbHVnaW5V
UkwgcGx1Z2luUGFnZVVSTDpwbHVnaW5QYWdlVVJMIHBsdWdpbk5hbWU6cGx1Z2luTmFtZSBNSU1F
VHlwZTpNSU1FVHlwZV0pOwogICAgICAgICAgICAgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKGlt
cGxlbWVudGF0aW9ucy0+cGx1Z0luRmFpbGVkV2l0aEVycm9yRnVuYywgW21fd2ViRnJhbWUuZ2V0
KCkgd2ViVmlld10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHNlbGVj
dG9yKHdlYlZpZXc6cGx1Z0luRmFpbGVkV2l0aEVycm9yOmRhdGFTb3VyY2U6KSwgZXJyb3IsIFtt
X3dlYkZyYW1lLmdldCgpIF9kYXRhU291cmNlXSk7Ci0gICAgICAgICAgICBbZXJyb3IgcmVsZWFz
ZV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHNlbGVjdG9yKHdlYlZp
ZXc6cGx1Z0luRmFpbGVkV2l0aEVycm9yOmRhdGFTb3VyY2U6KSwgZXJyb3IuZ2V0KCksIFttX3dl
YkZyYW1lLmdldCgpIF9kYXRhU291cmNlXSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KaW5kZXggYmRhMTRiNGEyNmJiYmE3
NzA0YmY1NmRlMTE0ZjA5YWM1Mjg4YjQ4OS4uMWVkMTQzOGFjNjZlMDU1YTEyZWZmMTg2NzUzOWNi
NTFkOTJjMTcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTEyMSwxMyArMTIx
LDEwIEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xv
Y2F0aW9uJiBnZW9sb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFdlYlNl
Y3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5p
dFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46JmZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpXTsKLSAgICBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKiBsaXN0ZW5lciA9IFtb
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvbjpn
ZW9sb2NhdGlvbl07CisgICAgYXV0byB3ZWJPcmlnaW4gPSBhZG9wdE5TKFtbV2ViU2VjdXJpdHlP
cmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjomZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCldKTsKKyAgICBhdXRvIGxpc3RlbmVyID0gYWRvcHROUyhb
W1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb246
Z2VvbG9jYXRpb25dKTsKIAotICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3Is
IHdlYk9yaWdpbiwga2l0KGZyYW1lKSwgbGlzdGVuZXIpOwotCi0gICAgW3dlYk9yaWdpbiByZWxl
YXNlXTsKLSAgICBbbGlzdGVuZXIgcmVsZWFzZV07CisgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJW
aWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2luLmdldCgpLCBraXQoZnJhbWUpLCBsaXN0ZW5lci5nZXQo
KSk7CiAjZWxzZQogICAgIFJldGFpblB0cjxXZWJHZW9sb2NhdGlvblByb3ZpZGVySW5pdGlhbGl6
YXRpb25MaXN0ZW5lcj4gbGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Qcm92aWRl
ckluaXRpYWxpemF0aW9uTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb246Z2VvbG9j
YXRpb25dKTsKICAgICBbW21fd2ViVmlldyBfZ2VvbG9jYXRpb25Qcm92aWRlcl0gaW5pdGlhbGl6
ZUdlb2xvY2F0aW9uRm9yV2ViVmlldzptX3dlYlZpZXcgbGlzdGVuZXI6bGlzdGVuZXIuZ2V0KCld
OwpAQCAtMjI0LDEyICsyMjEsMTAgQEAgLSAodm9pZClpbml0aWFsaXphdGlvbkFsbG93ZWRXZWJW
aWV3OihXZWJWaWV3ICopd2ViVmlldwogICAgIEZyYW1lKiBmcmFtZSA9IG1fZ2VvbG9jYXRpb24t
PmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIFdlYlNlY3Vy
aXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdp
dGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46JmZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpXTsKLSAgICBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyICpsaXN0ZW5lciA9IFtbV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvbjptX2dl
b2xvY2F0aW9uLmdldCgpIGZvcldlYlZpZXc6d2ViVmlld107CisgICAgYXV0byB3ZWJPcmlnaW4g
PSBhZG9wdE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1
cml0eU9yaWdpbjomZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCldKTsKKyAgICBh
dXRvIGxpc3RlbmVyID0gYWRvcHROUyhbW1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgYWxs
b2NdIGluaXRXaXRoR2VvbG9jYXRpb246bV9nZW9sb2NhdGlvbi5nZXQoKSBmb3JXZWJWaWV3Ondl
YlZpZXddKTsKICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOmZyYW1lOmxpc3RlbmVyOik7Ci0gICAg
Q2FsbFVJRGVsZWdhdGUod2ViVmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbiwga2l0KGZyYW1lKSwg
bGlzdGVuZXIpOwotICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07Ci0gICAgW2xpc3RlbmVyIHJlbGVh
c2VdOworICAgIENhbGxVSURlbGVnYXRlKHdlYlZpZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4uZ2V0
KCksIGtpdChmcmFtZSksIGxpc3RlbmVyLmdldCgpKTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA2NmY2NjcyNzczZjY4NmM4
ZmM1OWZiM2M5YzkxMzUyYzljNTVhNzU4Li5hMmM1NGIzMzJiNTExYTZmZDk1NDRjMmNjYmNmZGE2
YTFmN2IxMzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0
YXRpYyBjb25zdCBDR0Zsb2F0IGluaXRpYWxXaW5kb3dIZWlnaHQgPSA2NTA7CiBAaW50ZXJmYWNl
IFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXIgPE5TV2lu
ZG93RGVsZWdhdGUsIFdlYlBvbGljeURlbGVnYXRlLCBXZWJVSURlbGVnYXRlPiB7CiBAcHJpdmF0
ZQogICAgIFJldGFpblB0cjxXZWJWaWV3PiBfaW5zcGVjdGVkV2ViVmlldzsKLSAgICBXZWJWaWV3
KiBfZnJvbnRlbmRXZWJWaWV3OworICAgIFJldGFpblB0cjxXZWJWaWV3PiBfZnJvbnRlbmRXZWJW
aWV3OwogICAgIE5ha2VkUHRyPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBfZnJvbnRlbmRD
bGllbnQ7CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBfaW5zcGVjdG9yQ2xpZW50OwogICAgIEJP
T0wgX2F0dGFjaGVkVG9JbnNwZWN0ZWRXZWJWaWV3OwpAQCAtNDc1LDcgKzQ3NSw3IEBAIC0gKGlk
KWluaXQKIAogICAgIC8vIEtlZXAgcHJlZmVyZW5jZXMgc2VwYXJhdGUgZnJvbSB0aGUgcmVzdCBv
ZiB0aGUgY2xpZW50LCBtYWtpbmcgc3VyZSB3ZSBhcmUgdXNpbmcgZXhwZWN0ZWQgcHJlZmVyZW5j
ZSB2YWx1ZXMuCiAKLSAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW1dlYlByZWZl
cmVuY2VzIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gYWRvcHROUyhbW1dl
YlByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSk7CiAgICAgW3ByZWZlcmVuY2VzIHNldEFsbG93c0Fu
aW1hdGVkSW1hZ2VzOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldEF1dGhvckFuZFVzZXJTdHls
ZXNFbmFibGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldEF1dG9zYXZlczpOT107CkBAIC00
OTQsMTQgKzQ5NCwxMiBAQCAtIChpZClpbml0CiAgICAgW3ByZWZlcmVuY2VzIHNldEFsbG93VG9w
TmF2aWdhdGlvblRvRGF0YVVSTHM6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0U3RvcmFnZUJs
b2NraW5nUG9saWN5OldlYkFsbG93QWxsU3RvcmFnZV07CiAKLSAgICBfZnJvbnRlbmRXZWJWaWV3
ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0XTsKLSAgICBbX2Zyb250ZW5kV2ViVmlldyBzZXRQcmVm
ZXJlbmNlczpwcmVmZXJlbmNlc107CisgICAgX2Zyb250ZW5kV2ViVmlldyA9IGFkb3B0TlMoW1tX
ZWJWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgW19mcm9udGVuZFdlYlZpZXcgc2V0UHJlZmVyZW5j
ZXM6cHJlZmVyZW5jZXMuZ2V0KCldOwogICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldFByb2hpYml0
c01haW5GcmFtZVNjcm9sbGluZzpZRVNdOwogICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldFVJRGVs
ZWdhdGU6c2VsZl07CiAgICAgW19mcm9udGVuZFdlYlZpZXcgc2V0UG9saWN5RGVsZWdhdGU6c2Vs
Zl07CiAKLSAgICBbcHJlZmVyZW5jZXMgcmVsZWFzZV07Ci0KICAgICBbc2VsZiBzZXRXaW5kb3dG
cmFtZUF1dG9zYXZlTmFtZTpAIldlYiBJbnNwZWN0b3IgMiJdOwogICAgIHJldHVybiBzZWxmOwog
fQpAQCAtNTE0LDE2ICs1MTIsMTQgQEAgLSAoaWQpaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OihX
ZWJWaWV3ICopd2ViVmlldyBpc1VuZGVyVGVzdDooQk9PTClpc1VuZGVyVGVzdAogICAgIF9pbnNw
ZWN0ZWRXZWJWaWV3ID0gd2ViVmlldzsKIAogICAgIE5TU3RyaW5nICpwYWdlUGF0aCA9IGlzVW5k
ZXJUZXN0ID8gW3NlbGYgaW5zcGVjdG9yVGVzdFBhZ2VQYXRoXSA6IFtzZWxmIGluc3BlY3RvclBh
Z2VQYXRoXTsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbW05TVVJMUmVxdWVzdCBhbGxv
Y10gaW5pdFdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDogcGFnZVBhdGhdXTsKLSAgICBb
W19mcm9udGVuZFdlYlZpZXcgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBb
cmVxdWVzdCByZWxlYXNlXTsKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1
ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOiBwYWdlUGF0aF1d
KTsKKyAgICBbW19mcm9udGVuZFdlYlZpZXcgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpyZXF1ZXN0
LmdldCgpXTsKIAogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAg
ICBbX2Zyb250ZW5kV2ViVmlldyByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAK
QEAgLTU1MiwzMiArNTQ4LDI5IEBAIC0gKE5TU3RyaW5nICopaW5zcGVjdG9yVGVzdFBhZ2VQYXRo
CiAKIC0gKFdlYlZpZXcgKilmcm9udGVuZFdlYlZpZXcKIHsKLSAgICByZXR1cm4gX2Zyb250ZW5k
V2ViVmlldzsKKyAgICByZXR1cm4gX2Zyb250ZW5kV2ViVmlldy5nZXQoKTsKIH0KIAogLSAoTlNX
aW5kb3cgKil3aW5kb3cKIHsKLSAgICBOU1dpbmRvdyAqd2luZG93ID0gW3N1cGVyIHdpbmRvd107
Ci0gICAgaWYgKHdpbmRvdykKKyAgICBpZiAoYXV0byAqd2luZG93ID0gW3N1cGVyIHdpbmRvd10p
CiAgICAgICAgIHJldHVybiB3aW5kb3c7CiAKICAgICBOU1VJbnRlZ2VyIHN0eWxlTWFzayA9IE5T
V2luZG93U3R5bGVNYXNrVGl0bGVkIHwgTlNXaW5kb3dTdHlsZU1hc2tDbG9zYWJsZSB8IE5TV2lu
ZG93U3R5bGVNYXNrTWluaWF0dXJpemFibGUgfCBOU1dpbmRvd1N0eWxlTWFza1Jlc2l6YWJsZSB8
IE5TV2luZG93U3R5bGVNYXNrRnVsbFNpemVDb250ZW50VmlldzsKLSAgICB3aW5kb3cgPSBbW05T
V2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgaW5pdGlh
bFdpbmRvd1dpZHRoLCBpbml0aWFsV2luZG93SGVpZ2h0KSBzdHlsZU1hc2s6c3R5bGVNYXNrIGJh
Y2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107CisgICAgYXV0byB3aW5kb3cg
PSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVj
dCgwLCAwLCBpbml0aWFsV2luZG93V2lkdGgsIGluaXRpYWxXaW5kb3dIZWlnaHQpIHN0eWxlTWFz
azpzdHlsZU1hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CiAg
ICAgW3dpbmRvdyBzZXREZWxlZ2F0ZTpzZWxmXTsKICAgICBbd2luZG93IHNldE1pblNpemU6TlNN
YWtlU2l6ZShtaW5pbXVtV2luZG93V2lkdGgsIG1pbmltdW1XaW5kb3dIZWlnaHQpXTsKICAgICBb
d2luZG93IHNldENvbGxlY3Rpb25CZWhhdmlvcjooW3dpbmRvdyBjb2xsZWN0aW9uQmVoYXZpb3Jd
IHwgTlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3JGdWxsU2NyZWVuUHJpbWFyeSldOwogCi0gICAg
Q0dGbG9hdCBhcHByb3hpbWF0ZWx5SGFsZlNjcmVlblNpemUgPSAod2luZG93LnNjcmVlbi5mcmFt
ZS5zaXplLndpZHRoIC8gMikgLSA0OworICAgIENHRmxvYXQgYXBwcm94aW1hdGVseUhhbGZTY3Jl
ZW5TaXplID0gKFt3aW5kb3cgc2NyZWVuXS5mcmFtZS5zaXplLndpZHRoIC8gMikgLSA0OwogICAg
IENHRmxvYXQgbWluaW11bUZ1bGxTY3JlZW5XaWR0aCA9IHN0ZDo6bWF4PENHRmxvYXQ+KDYzNiwg
YXBwcm94aW1hdGVseUhhbGZTY3JlZW5TaXplKTsKICAgICBbd2luZG93IHNldE1pbkZ1bGxTY3Jl
ZW5Db250ZW50U2l6ZTpOU01ha2VTaXplKG1pbmltdW1GdWxsU2NyZWVuV2lkdGgsIG1pbmltdW1X
aW5kb3dIZWlnaHQpXTsKICAgICBbd2luZG93IHNldENvbGxlY3Rpb25CZWhhdmlvcjooW3dpbmRv
dyBjb2xsZWN0aW9uQmVoYXZpb3JdIHwgTlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3JGdWxsU2Ny
ZWVuQWxsb3dzVGlsaW5nKV07CiAKLSAgICB3aW5kb3cudGl0bGViYXJBcHBlYXJzVHJhbnNwYXJl
bnQgPSBZRVM7Ci0KLSAgICBbc2VsZiBzZXRXaW5kb3c6d2luZG93XTsKLSAgICBbd2luZG93IHJl
bGVhc2VdOworICAgIFt3aW5kb3cgc2V0VGl0bGViYXJBcHBlYXJzVHJhbnNwYXJlbnQ6IFlFU107
CiAKLSAgICByZXR1cm4gd2luZG93OworICAgIFtzZWxmIHNldFdpbmRvdzp3aW5kb3cuZ2V0KCld
OworICAgIHJldHVybiB3aW5kb3cuZ2V0KCk7CiB9CiAKIC8vIE1BUks6IC0KQEAgLTY1OSw4ICs2
NTIsOCBAQCAtIChJQkFjdGlvbilzaG93V2luZG93OihpZClzZW5kZXIKICAgICAgICAgV2ViRnJh
bWVWaWV3ICpmcmFtZVZpZXcgPSBbW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIG1haW5GcmFtZV0g
ZnJhbWVWaWV3XTsKIAogICAgICAgICBbX2Zyb250ZW5kV2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2
aWV3XTsKLSAgICAgICAgW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIGFkZFN1YnZpZXc6X2Zyb250
ZW5kV2ViVmlldyBwb3NpdGlvbmVkOk5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzooTlNWaWV3ICop
ZnJhbWVWaWV3XTsKLSAgICAgICAgW1tfaW5zcGVjdGVkV2ViVmlldy5nZXQoKSB3aW5kb3ddIG1h
a2VGaXJzdFJlc3BvbmRlcjpfZnJvbnRlbmRXZWJWaWV3XTsKKyAgICAgICAgW19pbnNwZWN0ZWRX
ZWJWaWV3LmdldCgpIGFkZFN1YnZpZXc6X2Zyb250ZW5kV2ViVmlldy5nZXQoKSBwb3NpdGlvbmVk
Ok5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzooTlNWaWV3ICopZnJhbWVWaWV3XTsKKyAgICAgICAg
W1tfaW5zcGVjdGVkV2ViVmlldy5nZXQoKSB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpfZnJv
bnRlbmRXZWJWaWV3LmdldCgpXTsKIAogICAgICAgICBbX2Zyb250ZW5kV2ViVmlldyBzZXRBdXRv
cmVzaXppbmdNYXNrOihOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlIHwg
TlNWaWV3TWF4WU1hcmdpbildOwogICAgICAgICBbZnJhbWVWaWV3IHNldEF1dG9yZXNpemluZ01h
c2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUgfCBOU1ZpZXdNaW5Z
TWFyZ2luKV07CkBAIC02NzMsNyArNjY2LDcgQEAgLSAoSUJBY3Rpb24pc2hvd1dpbmRvdzooaWQp
c2VuZGVyCiAgICAgICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldEZyYW1lOltjb250ZW50VmlldyBm
cmFtZV1dOwogICAgICAgICBbX2Zyb250ZW5kV2ViVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOihO
U1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlKV07CiAgICAgICAgIFtfZnJv
bnRlbmRXZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgICAgICBbY29udGVudFZpZXcg
YWRkU3VidmlldzpfZnJvbnRlbmRXZWJWaWV3XTsKKyAgICAgICAgW2NvbnRlbnRWaWV3IGFkZFN1
YnZpZXc6X2Zyb250ZW5kV2ViVmlldy5nZXQoKV07CiAKICAgICAgICAgW3N1cGVyIHNob3dXaW5k
b3c6bmlsXTsKICAgICB9CkBAIC03OTYsOCArNzg5LDggQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6
KGkKICAgICAgICAgW3Jlc3VsdExpc3RlbmVyIGNob29zZUZpbGVuYW1lczpmaWxlbmFtZXNdOwog
ICAgIH07CiAKLSAgICBpZiAoX2Zyb250ZW5kV2ViVmlldy53aW5kb3cpCi0gICAgICAgIFtwYW5l
bCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6X2Zyb250ZW5kV2ViVmlldy53aW5kb3cgY29tcGxl
dGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworICAgIGlmIChbX2Zyb250ZW5kV2ViVmll
dyB3aW5kb3ddKQorICAgICAgICBbcGFuZWwgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93OltfZnJv
bnRlbmRXZWJWaWV3IHdpbmRvd10gY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJd
OwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW3BhbmVsIHJ1bk1vZGFsXSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJOb3RpZmljYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KaW5kZXggYWIxMjM4OTc3MjM5YTI0ZDdm
MzBkYjY1OGU4M2EyNjk1YzQ3YWJjOC4uZDhlNzQ4YjU3OWNiZmQ2ZjQyNWE4ZDQyYTdhOTQ0YjZk
ZTJjY2YxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQpAQCAtMTMwLDExICsxMzAs
OSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVwogCiAgICAgbV9ldmVyUmVxdWVzdGVkUGVybWlz
c2lvbiA9IHRydWU7CiAKLSAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJT
ZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOmNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCldOworICAgIGF1dG8gd2ViT3JpZ2luID0gYWRvcHROUyhbW1dl
YlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKV0pOwogICAgIAotICAgIENhbGxVSURlbGVnYXRlKG1fd2Vi
Vmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbiwgbGlzdGVuZXIpOwotICAgIAotICAgIFt3ZWJPcmln
aW4gcmVsZWFzZV07CisgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwgd2Vi
T3JpZ2luLmdldCgpLCBsaXN0ZW5lcik7CiB9CiAKIGJvb2wgV2ViTm90aWZpY2F0aW9uQ2xpZW50
OjpoYXNQZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBj
b25zdApAQCAtMTQ3LDkgKzE0NSw4IEBAIGJvb2wgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpoYXNQ
ZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4mJiBj
YWxsYmFjaykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBXZWJOb3Rp
ZmljYXRpb25Qb2xpY3lMaXN0ZW5lciAqbGlzdGVuZXIgPSBbW1dlYk5vdGlmaWNhdGlvblBvbGlj
eUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOldURk1vdmUoY2FsbGJhY2spXTsKLSAg
ICByZXF1ZXN0UGVybWlzc2lvbihjb250ZXh0LCBsaXN0ZW5lcik7Ci0gICAgW2xpc3RlbmVyIHJl
bGVhc2VdOworICAgIGF1dG8gbGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViTm90aWZpY2F0aW9uUG9s
aWN5TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6V1RGTW92ZShjYWxsYmFjayldKTsK
KyAgICByZXF1ZXN0UGVybWlzc2lvbihjb250ZXh0LCBsaXN0ZW5lci5nZXQoKSk7CiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0xNTksOSArMTU2LDggQEAgTm90aWZpY2F0
aW9uQ2xpZW50OjpQZXJtaXNzaW9uIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2hlY2tQZXJtaXNz
aW9uKFNjcmlwdEV4ZWMKICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlz
c2lvbjo6RGVuaWVkOwogICAgIGlmICghW1ttX3dlYlZpZXcgcHJlZmVyZW5jZXNdIG5vdGlmaWNh
dGlvbnNFbmFibGVkXSkKICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlz
c2lvbjo6RGVuaWVkOwotICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNl
Y3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29udGV4
dC0+c2VjdXJpdHlPcmlnaW4oKV07Ci0gICAgV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbiBwZXJt
aXNzaW9uID0gW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSBwb2xpY3lGb3JPcmln
aW46d2ViT3JpZ2luXTsKLSAgICBbd2ViT3JpZ2luIHJlbGVhc2VdOworICAgIGF1dG8gd2ViT3Jp
Z2luID0gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3Jl
U2VjdXJpdHlPcmlnaW46Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKV0pOworICAgIFdlYk5vdGlm
aWNhdGlvblBlcm1pc3Npb24gcGVybWlzc2lvbiA9IFtbbV93ZWJWaWV3IF9ub3RpZmljYXRpb25Q
cm92aWRlcl0gcG9saWN5Rm9yT3JpZ2luOndlYk9yaWdpbi5nZXQoKV07CiAgICAgc3dpdGNoIChw
ZXJtaXNzaW9uKSB7CiAgICAgICAgIGNhc2UgV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbkFsbG93
ZWQ6CiAgICAgICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uOjpH
cmFudGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJB
cmNoaXZlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1t
CmluZGV4IDI1OWM3ZTllYTZkNTFiZjBjNzQ2OTk3ZGZiZGE3OTdjMWViMDg4YTcuLjFmZjJmNTQ2
MmQ2NTIzMzYwOGQ2YWFhNTE1MmY0NmRiMWZhMGI2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0KQEAgLTUzLDkgKzUzLDkgQEAgc3RhdGljIE5T
U3RyaW5nICogY29uc3QgV2ViU3ViZnJhbWVBcmNoaXZlc0tleSA9IEAiV2ViU3ViZnJhbWVBcmNo
aXZlcyI7CiAKIEBpbnRlcmZhY2UgV2ViQXJjaGl2ZVByaXZhdGUgOiBOU09iamVjdCB7CiBAcHVi
bGljCi0gICAgV2ViUmVzb3VyY2UgKmNhY2hlZE1haW5SZXNvdXJjZTsKLSAgICBOU0FycmF5ICpj
YWNoZWRTdWJyZXNvdXJjZXM7Ci0gICAgTlNBcnJheSAqY2FjaGVkU3ViZnJhbWVBcmNoaXZlczsK
KyAgICBSZXRhaW5QdHI8V2ViUmVzb3VyY2U+IGNhY2hlZE1haW5SZXNvdXJjZTsKKyAgICBSZXRh
aW5QdHI8TlNBcnJheT4gY2FjaGVkU3VicmVzb3VyY2VzOworICAgIFJldGFpblB0cjxOU0FycmF5
PiBjYWNoZWRTdWJmcmFtZUFyY2hpdmVzOwogQHByaXZhdGUKICAgICBSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gY29yZUFyY2hpdmU7CiB9CkBAIC0xMTIsMTAgKzExMiw2IEBAIC0gKHZvaWQpZGVh
bGxvYwogICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0ZU9uTWFpblRocmVhZChb
V2ViQXJjaGl2ZVByaXZhdGUgY2xhc3NdLCBzZWxmKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIFtjYWNoZWRNYWluUmVzb3VyY2UgcmVsZWFzZV07Ci0gICAgW2NhY2hlZFN1YnJlc291cmNl
cyByZWxlYXNlXTsKLSAgICBbY2FjaGVkU3ViZnJhbWVBcmNoaXZlcyByZWxlYXNlXTsKLSAgICAK
ICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTE1NiwyMSArMTUyLDIxIEBAIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aE1haW5SZXNvdXJjZTooV2ViUmVzb3VyY2UgKiltYWluUmVzb3VyY2Ug
c3VicmVzb3VyY2VzOihOCiAKICAgICBfcHJpdmF0ZSA9IFtbV2ViQXJjaGl2ZVByaXZhdGUgYWxs
b2NdIGluaXRdOwogCi0gICAgX3ByaXZhdGUtPmNhY2hlZE1haW5SZXNvdXJjZSA9IFttYWluUmVz
b3VyY2UgcmV0YWluXTsKKyAgICBfcHJpdmF0ZS0+Y2FjaGVkTWFpblJlc291cmNlID0gbWFpblJl
c291cmNlOwogICAgIGlmICghX3ByaXZhdGUtPmNhY2hlZE1haW5SZXNvdXJjZSkgewogICAgICAg
ICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgCiAgICAg
aWYgKCFzdWJyZXNvdXJjZXMgfHwgaXNBcnJheU9mQ2xhc3Moc3VicmVzb3VyY2VzLCBbV2ViUmVz
b3VyY2UgY2xhc3NdKSkKLSAgICAgICAgX3ByaXZhdGUtPmNhY2hlZFN1YnJlc291cmNlcyA9IFtz
dWJyZXNvdXJjZXMgcmV0YWluXTsKKyAgICAgICAgX3ByaXZhdGUtPmNhY2hlZFN1YnJlc291cmNl
cyA9IHN1YnJlc291cmNlczsKICAgICBlbHNlIHsKICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogCiAgICAgaWYgKCFzdWJmcmFtZUFyY2hpdmVzIHx8
IGlzQXJyYXlPZkNsYXNzKHN1YmZyYW1lQXJjaGl2ZXMsIFtXZWJBcmNoaXZlIGNsYXNzXSkpCi0g
ICAgICAgIF9wcml2YXRlLT5jYWNoZWRTdWJmcmFtZUFyY2hpdmVzID0gW3N1YmZyYW1lQXJjaGl2
ZXMgcmV0YWluXTsKKyAgICAgICAgX3ByaXZhdGUtPmNhY2hlZFN1YmZyYW1lQXJjaGl2ZXMgPSBz
dWJmcmFtZUFyY2hpdmVzOwogICAgIGVsc2UgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAg
ICAgICAgcmV0dXJuIG5pbDsKQEAgLTI2OSwxMSArMjY1LDEyIEBAIC0gKFdlYlJlc291cmNlICop
bWFpblJlc291cmNlCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y2FjaGVkTWFpblJlc291cmNlKSB7CiAg
ICAgICAgIGlmIChhdXRvKiBjb3JlQXJjaGl2ZSA9IFtfcHJpdmF0ZSBjb3JlQXJjaGl2ZV0pIHsK
ICAgICAgICAgICAgIGlmIChhdXRvKiBtYWluUmVzb3VyY2UgPSBjb3JlQXJjaGl2ZS0+bWFpblJl
c291cmNlKCkpCi0gICAgICAgICAgICAgICAgX3ByaXZhdGUtPmNhY2hlZE1haW5SZXNvdXJjZSA9
IFtbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0V2l0aENvcmVSZXNvdXJjZToqbWFpblJlc291cmNl
XTsKKyAgICAgICAgICAgICAgICBfcHJpdmF0ZS0+Y2FjaGVkTWFpblJlc291cmNlID0gYWRvcHRO
UyhbW1dlYlJlc291cmNlIGFsbG9jXSBfaW5pdFdpdGhDb3JlUmVzb3VyY2U6Km1haW5SZXNvdXJj
ZV0pOwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHJldHVybiBbW19wcml2YXRlLT5jYWNo
ZWRNYWluUmVzb3VyY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjYWNoZWRNYWlu
UmVzb3VyY2VDb3B5ID0gX3ByaXZhdGUtPmNhY2hlZE1haW5SZXNvdXJjZTsKKyAgICByZXR1cm4g
Y2FjaGVkTWFpblJlc291cmNlQ29weS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU0FycmF5ICop
c3VicmVzb3VyY2VzCkBAIC0yODUsMTYgKzI4MiwyMCBAQCAtIChOU0FycmF5ICopc3VicmVzb3Vy
Y2VzCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y2FjaGVkU3VicmVzb3VyY2VzKSB7CiAgICAgICAgIGF1
dG8gY29yZUFyY2hpdmUgPSBbX3ByaXZhdGUgY29yZUFyY2hpdmVdOwogICAgICAgICBpZiAoIWNv
cmVBcmNoaXZlKQotICAgICAgICAgICAgX3ByaXZhdGUtPmNhY2hlZFN1YnJlc291cmNlcyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdF07CisgICAgICAgICAgICBfcHJpdmF0ZS0+Y2FjaGVkU3VicmVz
b3VyY2VzID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBfcHJpdmF0ZS0+Y2FjaGVkU3VicmVzb3VyY2VzID0gY3JlYXRlTlNBcnJh
eShjb3JlQXJjaGl2ZS0+c3VicmVzb3VyY2VzKCksIFtdIChhdXRvJiBzdWJyZXNvdXJjZSkgewog
ICAgICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0
V2l0aENvcmVSZXNvdXJjZTpzdWJyZXNvdXJjZS5nZXQoKV0pOwotICAgICAgICAgICAgfSkubGVh
a1JlZigpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgLy8gTWFpbnRh
aW4gdGhlIFdlYktpdCAzIGJlaGF2aW9yIG9mIHRoaXMgQVBJLCB3aGljaCBpcyBkb2N1bWVudGVk
IGFuZAogICAgIC8vIHJlbGllZCB1cG9uIGJ5IHNvbWUgY2xpZW50cywgb2YgcmV0dXJuaW5nIG5p
bCBpZiB0aGVyZSBhcmUgbm8gc3VicmVzb3VyY2VzLgotICAgIHJldHVybiBbX3ByaXZhdGUtPmNh
Y2hlZFN1YnJlc291cmNlcyBjb3VudF0gPyBbW19wcml2YXRlLT5jYWNoZWRTdWJyZXNvdXJjZXMg
cmV0YWluXSBhdXRvcmVsZWFzZV0gOiBuaWw7CisgICAgaWYgKCFbX3ByaXZhdGUtPmNhY2hlZFN1
YnJlc291cmNlcyBjb3VudF0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvIGNhY2hl
ZFN1YnJlc291cmNlc0NvcHkgPSBfcHJpdmF0ZS0+Y2FjaGVkU3VicmVzb3VyY2VzOworICAgIHJl
dHVybiBjYWNoZWRTdWJyZXNvdXJjZXNDb3B5LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TQXJy
YXkgKilzdWJmcmFtZUFyY2hpdmVzCkBAIC0zMDYsMTUgKzMwNywxNiBAQCAtIChOU0FycmF5ICop
c3ViZnJhbWVBcmNoaXZlcwogICAgIGlmICghX3ByaXZhdGUtPmNhY2hlZFN1YmZyYW1lQXJjaGl2
ZXMpIHsKICAgICAgICAgYXV0byogY29yZUFyY2hpdmUgPSBbX3ByaXZhdGUgY29yZUFyY2hpdmVd
OwogICAgICAgICBpZiAoIWNvcmVBcmNoaXZlKQotICAgICAgICAgICAgX3ByaXZhdGUtPmNhY2hl
ZFN1YmZyYW1lQXJjaGl2ZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRdOworICAgICAgICAgICAg
X3ByaXZhdGUtPmNhY2hlZFN1YmZyYW1lQXJjaGl2ZXMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxv
Y10gaW5pdF0pOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIF9wcml2YXRlLT5jYWNoZWRT
dWJmcmFtZUFyY2hpdmVzID0gY3JlYXRlTlNBcnJheShjb3JlQXJjaGl2ZS0+c3ViZnJhbWVBcmNo
aXZlcygpLCBbXSAoYXV0byYgYXJjaGl2ZSkgewogICAgICAgICAgICAgICAgIHJldHVybiBhZG9w
dE5TKFtbV2ViQXJjaGl2ZSBhbGxvY10gX2luaXRXaXRoQ29yZUxlZ2FjeVdlYkFyY2hpdmU6c3Rh
dGljX2Nhc3Q8TGVnYWN5V2ViQXJjaGl2ZSo+KGFyY2hpdmUucHRyKCkpXSk7Ci0gICAgICAgICAg
ICB9KS5sZWFrUmVmKCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KICAgICAK
LSAgICByZXR1cm4gW1tfcHJpdmF0ZS0+Y2FjaGVkU3ViZnJhbWVBcmNoaXZlcyByZXRhaW5dIGF1
dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNhY2hlZFN1YmZyYW1lQXJjaGl2ZXNDb3B5ID0gX3ByaXZh
dGUtPmNhY2hlZFN1YmZyYW1lQXJjaGl2ZXM7CisgICAgcmV0dXJuIGNhY2hlZFN1YmZyYW1lQXJj
aGl2ZXNDb3B5LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TRGF0YSAqKWRhdGEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAxYjU5
NzE2NDY4NTNhNmQxNmJhNjI4NmUwY2EzZmIzZmJkZjEzZjQ5Li42NDhhNDQwYmUyNDNhYTk3YjA5
ZjcyM2QzNjQ3MGYyYTg4Y2I5NTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0zMTIsMTMgKzMxMiwxMiBAQCAtIChET01Eb2N1
bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRXaXRoQXJjaGl2ZTooV2ViQXJjaGl2ZSAq
KWFyY2hpdmUKICAgICBpZiAobWFpblJlc291cmNlKSB7CiAgICAgICAgIE5TU3RyaW5nICpNSU1F
VHlwZSA9IFttYWluUmVzb3VyY2UgTUlNRVR5cGVdOwogICAgICAgICBpZiAoW1dlYlZpZXcgY2Fu
U2hvd01JTUVUeXBlQXNIVE1MOk1JTUVUeXBlXSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKm1h
cmt1cFN0cmluZyA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpbbWFpblJlc291cmNl
IGRhdGFdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICAgICAgICAgIGF1dG8g
bWFya3VwU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6W21h
aW5SZXNvdXJjZSBkYXRhXSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogCiAgICAg
ICAgICAgICAvLyBGSVhNRTogc2VlbXMgcG9vciBmb3JtIHRvIGRvIHRoaXMgYXMgYSBzaWRlIGVm
ZmVjdCBvZiBnZXR0aW5nIGEgZG9jdW1lbnQgZnJhZ21lbnQKICAgICAgICAgICAgIHRvUHJpdmF0
ZShfcHJpdmF0ZSktPmxvYWRlci0+YWRkQWxsQXJjaGl2ZVJlc291cmNlcygqW2FyY2hpdmUgX2Nv
cmVMZWdhY3lXZWJBcmNoaXZlXSk7CiAKLSAgICAgICAgICAgIERPTURvY3VtZW50RnJhZ21lbnQg
KmZyYWdtZW50ID0gW1tzZWxmIHdlYkZyYW1lXSBfZG9jdW1lbnRGcmFnbWVudFdpdGhNYXJrdXBT
dHJpbmc6bWFya3VwU3RyaW5nIGJhc2VVUkxTdHJpbmc6W1ttYWluUmVzb3VyY2UgVVJMXSBfd2Vi
X29yaWdpbmFsRGF0YUFzU3RyaW5nXV07Ci0gICAgICAgICAgICBbbWFya3VwU3RyaW5nIHJlbGVh
c2VdOworICAgICAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbW3NlbGYg
d2ViRnJhbWVdIF9kb2N1bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzptYXJrdXBTdHJpbmcu
Z2V0KCkgYmFzZVVSTFN0cmluZzpbW21haW5SZXNvdXJjZSBVUkxdIF93ZWJfb3JpZ2luYWxEYXRh
QXNTdHJpbmddXTsKICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKICAgICAgICAgfSBlbHNl
IGlmIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUo
TUlNRVR5cGUpKSB7CiAgICAgICAgICAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50RnJhZ21lbnRX
aXRoSW1hZ2VSZXNvdXJjZTptYWluUmVzb3VyY2VdOwpAQCAtMzg1LDkgKzM4NCw4IEBAIC0gKHZv
aWQpX21ha2VSZXByZXNlbnRhdGlvbgogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGRhdGEgc291cmNl
IHdhcyBhbHJlYWR5IGJvdW5kPwogICAgIGlmICghW1tzZWxmIHJlcHJlc2VudGF0aW9uXSBpc0tp
bmRPZkNsYXNzOnJlcENsYXNzXSkgewotICAgICAgICBpZCBuZXdSZXAgPSByZXBDbGFzcyAhPSBu
aWwgPyBbKE5TT2JqZWN0ICopW3JlcENsYXNzIGFsbG9jXSBpbml0XSA6IG5pbDsKLSAgICAgICAg
W3NlbGYgX3NldFJlcHJlc2VudGF0aW9uOihpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4p
bmV3UmVwXTsKLSAgICAgICAgW25ld1JlcCByZWxlYXNlXTsKKyAgICAgICAgUmV0YWluUHRyPGlk
PiBuZXdSZXAgPSByZXBDbGFzcyAhPSBuaWwgPyBhZG9wdE5TKFsoTlNPYmplY3QgKilbcmVwQ2xh
c3MgYWxsb2NdIGluaXRdKSA6IG5pbDsKKyAgICAgICAgW3NlbGYgX3NldFJlcHJlc2VudGF0aW9u
OihpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pbmV3UmVwLmdldCgpXTsKICAgICB9CiAK
ICAgICBpZDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPiByZXByZXNlbnRhdGlvbiA9IHRvUHJp
dmF0ZShfcHJpdmF0ZSktPnJlcHJlc2VudGF0aW9uLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZGUyNDk2ODhhYjY4Zjc5ODkwMjA4NDc4
ZjZhYzQzNGZlY2EwOTgyNS4uNGUxMzQ2MjgzNjBlODI2YWE4ODU3NTU1MmJmYTExMDQ3ZmEwYzE3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0x
ODksMTUgKzE4OSwxMSBAQCBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWVQcml2YXRlCiAKIC0gKHZv
aWQpZGVhbGxvYwogewotICAgIFt3ZWJGcmFtZVZpZXcgcmVsZWFzZV07Ci0KICAgICBbc3VwZXIg
ZGVhbGxvY107CiB9CiAKIC0gKHZvaWQpc2V0V2ViRnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKil2
CiB7IAotICAgIFt2IHJldGFpbl07Ci0gICAgW3dlYkZyYW1lVmlldyByZWxlYXNlXTsKICAgICB3
ZWJGcmFtZVZpZXcgPSB2OwogfQogCkBAIC0zMDYsOSArMzAyLDggQEAgKyAoUmVmPFdlYkNvcmU6
OkZyYW1lPilfY3JlYXRlRnJhbWVXaXRoUGFnZTooV2ViQ29yZTo6UGFnZSopcGFnZSBmcmFtZU5h
bWU6KGNvbnMKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0ga2l0KHBhZ2UpOwogCi0gICAgV2Vi
RnJhbWUgKmZyYW1lID0gW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhXZWJGcmFtZVZpZXc6ZnJhbWVW
aWV3IHdlYlZpZXc6d2ViVmlld107Ci0gICAgYXV0byBjb3JlRnJhbWUgPSBXZWJDb3JlOjpGcmFt
ZTo6Y3JlYXRlKHBhZ2UsIG93bmVyRWxlbWVudCwgbWFrZVVuaXF1ZVJlZjxXZWJGcmFtZUxvYWRl
ckNsaWVudD4oZnJhbWUpKTsKLSAgICBbZnJhbWUgcmVsZWFzZV07CisgICAgUmV0YWluUHRyPFdl
YkZyYW1lPiBmcmFtZSA9IGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhXZWJGcmFtZVZp
ZXc6ZnJhbWVWaWV3IHdlYlZpZXc6d2ViVmlld10pOworICAgIGF1dG8gY29yZUZyYW1lID0gV2Vi
Q29yZTo6RnJhbWU6OmNyZWF0ZShwYWdlLCBvd25lckVsZW1lbnQsIG1ha2VVbmlxdWVSZWY8V2Vi
RnJhbWVMb2FkZXJDbGllbnQ+KGZyYW1lLmdldCgpKSk7CiAgICAgZnJhbWUtPl9wcml2YXRlLT5j
b3JlRnJhbWUgPSBjb3JlRnJhbWUucHRyKCk7CiAKICAgICBjb3JlRnJhbWUuZ2V0KCkudHJlZSgp
LnNldE5hbWUobmFtZSk7CkBAIC0zMjgsMTAgKzMyMyw5IEBAICsgKHZvaWQpX2NyZWF0ZU1haW5G
cmFtZVdpdGhQYWdlOihXZWJDb3JlOjpQYWdlKilwYWdlIGZyYW1lTmFtZTooY29uc3QgU3RyaW5n
JiluCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGtpdChwYWdlKTsKIAotICAgIFdlYkZyYW1l
ICpmcmFtZSA9IFtbc2VsZiBhbGxvY10gX2luaXRXaXRoV2ViRnJhbWVWaWV3OmZyYW1lVmlldyB3
ZWJWaWV3OndlYlZpZXddOworICAgIFJldGFpblB0cjxXZWJGcmFtZT4gZnJhbWUgPSBhZG9wdE5T
KFtbc2VsZiBhbGxvY10gX2luaXRXaXRoV2ViRnJhbWVWaWV3OmZyYW1lVmlldyB3ZWJWaWV3Ondl
YlZpZXddKTsKICAgICBmcmFtZS0+X3ByaXZhdGUtPmNvcmVGcmFtZSA9ICZwYWdlLT5tYWluRnJh
bWUoKTsKLSAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCY+KHBhZ2UtPm1haW5G
cmFtZSgpLmxvYWRlcigpLmNsaWVudCgpKS5zZXRXZWJGcmFtZSgqZnJhbWUpOwotICAgIFtmcmFt
ZSByZWxlYXNlXTsKKyAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCY+KHBhZ2Ut
Pm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpKS5zZXRXZWJGcmFtZSgqZnJhbWUuZ2V0KCkp
OwogCiAgICAgcGFnZS0+bWFpbkZyYW1lKCkudHJlZSgpLnNldE5hbWUobmFtZSk7CiAgICAgcGFn
ZS0+bWFpbkZyYW1lKCkuaW5pdCgpOwpAQCAtMzU2LDEyICszNTAsMTEgQEAgKyAodm9pZClfY3Jl
YXRlTWFpbkZyYW1lV2l0aFNpbXBsZUhUTUxEb2N1bWVudFdpdGhQYWdlOihXZWJDb3JlOjpQYWdl
KilwYWdlIGZyYW0KIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0ga2l0KHBhZ2UpOwogICAgIAot
ICAgIFdlYkZyYW1lICpmcmFtZSA9IFtbc2VsZiBhbGxvY10gX2luaXRXaXRoV2ViRnJhbWVWaWV3
OmZyYW1lVmlldyB3ZWJWaWV3OndlYlZpZXddOworICAgIFJldGFpblB0cjxXZWJGcmFtZT4gZnJh
bWUgPSBhZG9wdE5TKFtbc2VsZiBhbGxvY10gX2luaXRXaXRoV2ViRnJhbWVWaWV3OmZyYW1lVmll
dyB3ZWJWaWV3OndlYlZpZXddKTsKICAgICBmcmFtZS0+X3ByaXZhdGUtPmNvcmVGcmFtZSA9ICZw
YWdlLT5tYWluRnJhbWUoKTsKLSAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCY+
KHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpKS5zZXRXZWJGcmFtZSgqZnJhbWUp
OwotICAgIFtmcmFtZSByZWxlYXNlXTsKKyAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNs
aWVudCY+KHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpKS5zZXRXZWJGcmFtZSgq
ZnJhbWUuZ2V0KCkpOwogCi0gICAgZnJhbWUtPl9wcml2YXRlLT5jb3JlRnJhbWUtPmluaXRXaXRo
U2ltcGxlSFRNTERvY3VtZW50KHN0eWxlLCBjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCkpOworICAg
IGZyYW1lLmdldCgpLT5fcHJpdmF0ZS0+Y29yZUZyYW1lLT5pbml0V2l0aFNpbXBsZUhUTUxEb2N1
bWVudChzdHlsZSwgY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCgpKTsKIH0KICNlbmRpZgogCkBAIC0x
NzMxLDcgKzE3MjQsNyBAQCAtICh2b2lkKWdldERpY3RhdGlvblJlc3VsdFJhbmdlczooTlNBcnJh
eSAqKilvdXRSYW5nZXMgYW5kTWV0YWRhdGFzOihOU0FycmF5ICoqKQogICAgIGF1dG8mIHNlbGVj
dGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBhdXRvIHJvb3QgPSBz
ZWxlY3Rpb24uaXNOb25lKCkgPyBmcmFtZS0+ZG9jdW1lbnQoKS0+Ym9keU9yRnJhbWVzZXQoKSA6
IHNlbGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7CiAKLSAgICBET01SYW5nZSAqcHJldmlv
dXNET01SYW5nZSA9IG5pbDsKKyAgICBSZXRhaW5QdHI8RE9NUmFuZ2U+IHByZXZpb3VzRE9NUmFu
Z2U7CiAgICAgaWQgcHJldmlvdXNNZXRhZGF0YSA9IG5pbDsKIAogICAgIGZvciAoV2ViQ29yZTo6
Tm9kZSogbm9kZSA9IHJvb3Q7IG5vZGU7IG5vZGUgPSBXZWJDb3JlOjpOb2RlVHJhdmVyc2FsOjpu
ZXh0KCpub2RlKSkgewpAQCAtMTc1OCwxMyArMTc1MSwxMSBAQCAtICh2b2lkKWdldERpY3RhdGlv
blJlc3VsdFJhbmdlczooTlNBcnJheSAqKilvdXRSYW5nZXMgYW5kTWV0YWRhdGFzOihOU0FycmF5
ICoqKQogICAgICAgICAgICAgICAgIC8vIEl0IGlzIHBvc3NpYmxlIGZvciBhIERvY3VtZW50TWFy
a2VyIHRvIGJlIHNwbGl0IGJ5IGVkaXRpbmcuIEFkamFjZW50IG1hcmtlcnMgd2l0aCB0aGUKICAg
ICAgICAgICAgICAgICAvLyB0aGUgc2FtZSBtZXRhZGF0YSBhcmUgZm9yIHRoZSBzYW1lIHJlc3Vs
dC4gU28gY29tYmluZSB0aGVpciByYW5nZXMuCiAgICAgICAgICAgICAgICAgQVNTRVJUKHByZXZp
b3VzRE9NUmFuZ2UgPT0gW3JhbmdlcyBsYXN0T2JqZWN0XSk7Ci0gICAgICAgICAgICAgICAgW3By
ZXZpb3VzRE9NUmFuZ2UgcmV0YWluXTsKICAgICAgICAgICAgICAgICBbcmFuZ2VzIHJlbW92ZUxh
c3RPYmplY3RdOwogICAgICAgICAgICAgICAgIERPTU5vZGUgKnN0YXJ0Q29udGFpbmVyID0gW2Rv
bVJhbmdlIHN0YXJ0Q29udGFpbmVyXTsKICAgICAgICAgICAgICAgICBpbnQgc3RhcnRPZmZzZXQg
PSBbZG9tUmFuZ2Ugc3RhcnRPZmZzZXRdOwogICAgICAgICAgICAgICAgIFtwcmV2aW91c0RPTVJh
bmdlIHNldEVuZDpzdGFydENvbnRhaW5lciBvZmZzZXQ6c3RhcnRPZmZzZXRdOwotICAgICAgICAg
ICAgICAgIFtyYW5nZXMgYWRkT2JqZWN0OnByZXZpb3VzRE9NUmFuZ2VdOwotICAgICAgICAgICAg
ICAgIFtwcmV2aW91c0RPTVJhbmdlIHJlbGVhc2VdOworICAgICAgICAgICAgICAgIFtyYW5nZXMg
YWRkT2JqZWN0OnByZXZpb3VzRE9NUmFuZ2UuZ2V0KCldOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpAQCAtMjM5MCw3ICsyMzgxLDcgQEAgLSAoTlNTdHJpbmcgKiluYW1lCiAKIC0g
KFdlYkZyYW1lVmlldyAqKWZyYW1lVmlldwogewotICAgIHJldHVybiBfcHJpdmF0ZS0+d2ViRnJh
bWVWaWV3OworICAgIHJldHVybiBfcHJpdmF0ZS0+d2ViRnJhbWVWaWV3LmdldCgpOwogfQogCiAt
IChXZWJWaWV3ICopd2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZyYW1lSW50ZXJuYWwuaAppbmRleCAzMGM0OGQxNWU5ZjYxNzlhOTk1ZDE5YTkzZTdh
MWIyMmQxYTMwMzEwLi42OWE4MTJkYWYyNGMyZjZjNzY0ODhlOGQzOGYzMWYwMDZlM2UyN2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJu
YWwuaApAQCAtODcsNyArODcsNyBAQCBXZWJWaWV3ICpnZXRXZWJWaWV3KFdlYkZyYW1lICp3ZWJG
cmFtZSk7CiBAaW50ZXJmYWNlIFdlYkZyYW1lUHJpdmF0ZSA6IE5TT2JqZWN0IHsKIEBwdWJsaWMK
ICAgICBOYWtlZFB0cjxXZWJDb3JlOjpGcmFtZT4gY29yZUZyYW1lOwotICAgIFdlYkZyYW1lVmll
dyAqd2ViRnJhbWVWaWV3OworICAgIFJldGFpblB0cjxXZWJGcmFtZVZpZXc+IHdlYkZyYW1lVmll
dzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2NyaXB0RGVidWdnZXI+IHNjcmlwdERlYnVnZ2Vy
OwogICAgIGlkIGludGVybmFsTG9hZERlbGVnYXRlOwogICAgIEJPT0wgc2hvdWxkQ3JlYXRlUmVu
ZGVyZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZVZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmll
dy5tbQppbmRleCAwZmIwNTUwNzFmMGRkNGNhZWQzZjYxMWRlNDQ3YmY3MzQ2MDFhNGY2Li5iNjE2
ZmE3YmY2NGU0ZDk3OWZiZDA2ODFhYmIzYWYwMzkyNjNhODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpAQCAtMTEwLDcgKzExMCw3IEBA
IEBlbmQKIEBpbnRlcmZhY2UgV2ViRnJhbWVWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKIEBwdWJs
aWMKICAgICBXZWJGcmFtZSAqd2ViRnJhbWU7Ci0gICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3
ICpmcmFtZVNjcm9sbFZpZXc7CisgICAgUmV0YWluUHRyPFdlYkR5bmFtaWNTY3JvbGxCYXJzVmll
dz4gZnJhbWVTY3JvbGxWaWV3OwogICAgIEJPT0wgaW5jbHVkZWRJbldlYktpdFN0YXRpc3RpY3M7
CiB9CiBAZW5kCkBAIC0xMTksNyArMTE5LDYgQEAgQGltcGxlbWVudGF0aW9uIFdlYkZyYW1lVmll
d1ByaXZhdGUKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW2ZyYW1lU2Nyb2xsVmlldyByZWxl
YXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTIzNyw3ICsyMzYsNyBAQCAtIChX
ZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKilfc2Nyb2xsVmlldwogICAgIC8vIGFmdGVyIF9wcml2
YXRlIGhhcyBiZWVuIG5pbGxlZCBvdXQuCiAgICAgaWYgKF9wcml2YXRlID09IG5pbCkKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmZyYW1lU2Nyb2xsVmlldzsKKyAg
ICByZXR1cm4gX3ByaXZhdGUtPmZyYW1lU2Nyb2xsVmlldy5nZXQoKTsKIH0KIAogLSAoZmxvYXQp
X3ZlcnRpY2FsUGFnZVNjcm9sbERpc3RhbmNlCkBAIC0zMTYsNyArMzE1LDcgQEAgLSAodm9pZClf
aW5zdGFsbAogCiAgICAgYXV0byogdmlldyA9IGZyYW1lLT52aWV3KCk7CiAKLSAgICB2aWV3LT5z
ZXRQbGF0Zm9ybVdpZGdldChfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3KTsKKyAgICB2aWV3LT5z
ZXRQbGF0Zm9ybVdpZGdldChfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3LmdldCgpKTsKIAogICAg
IC8vIEZJWE1FOiBGcmFtZSB0cmllcyB0byBkbyB0aGlzIHRvby4gSXMgdGhpcyBjb2RlIG5lZWRl
ZD8KICAgICBpZiAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0KiBvd25lciA9IGZyYW1lLT5vd25lclJl
bmRlcmVyKCkpIHsKQEAgLTM3Myw3ICszNzIsNyBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1Jl
Y3QpZnJhbWUKIAogICAgIF9wcml2YXRlID0gW1tXZWJGcmFtZVZpZXdQcml2YXRlIGFsbG9jXSBp
bml0XTsKIAotICAgIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyAqc2Nyb2xsVmlldyA9IFtbV2Vi
RHluYW1pY1Njcm9sbEJhcnNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMC4w
ZiwgMC4wZiwgZnJhbWUuc2l6ZS53aWR0aCwgZnJhbWUuc2l6ZS5oZWlnaHQpXTsKKyAgICBhdXRv
IHNjcm9sbFZpZXcgPSBhZG9wdE5TKFtbV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMC4wZiwgMC4wZiwgZnJhbWUuc2l6ZS53aWR0aCwgZnJh
bWUuc2l6ZS5oZWlnaHQpXSk7CiAgICAgX3ByaXZhdGUtPmZyYW1lU2Nyb2xsVmlldyA9IHNjcm9s
bFZpZXc7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbc2Nyb2xsVmlldyBzZXREZWxl
Z2F0ZTpzZWxmXTsKQEAgLTM4NSwxMiArMzg0LDEyIEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5T
UmVjdClmcmFtZQogICAgIFtzY3JvbGxWaWV3IHNldEhhc0hvcml6b250YWxTY3JvbGxlcjpOT107
CiAgICAgW3Njcm9sbFZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazpOU1ZpZXdXaWR0aFNpemFibGUg
fCBOU1ZpZXdIZWlnaHRTaXphYmxlXTsKICAgICBbc2Nyb2xsVmlldyBzZXRMaW5lU2Nyb2xsOldl
YkNvcmU6OlNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKV07Ci0gICAgW3NlbGYgYWRkU3Vi
dmlldzpzY3JvbGxWaWV3XTsKKyAgICBbc2VsZiBhZGRTdWJ2aWV3OnNjcm9sbFZpZXcuZ2V0KCld
OwogCiAgICAgLy8gRG9uJ3QgY2FsbCBvdXIgb3ZlcnJpZGRlbiB2ZXJzaW9uIG9mIHNldE5leHRL
ZXlWaWV3IGhlcmU7IHdlIG5lZWQgdG8gbWFrZSB0aGUgc3RhbmRhcmQgTlNWaWV3CiAgICAgLy8g
bGluayBiZXR3ZWVuIHVzIGFuZCBvdXIgc3VidmlldyBzbyB0aGF0IHByZXZpb3VzS2V5VmlldyBh
bmQgcHJldmlvdXNWYWxpZEtleVZpZXcgd29yayBhcyBleHBlY3RlZC4KICAgICAvLyBUaGlzIHdv
cmtzIHRvZ2V0aGVyIHdpdGggb3VyIGJlY29tZUZpcnN0UmVzcG9uZGVyIGFuZCBzZXROZXh0S2V5
VmlldyBvdmVycmlkZXMuCi0gICAgW3N1cGVyIHNldE5leHRLZXlWaWV3OnNjcm9sbFZpZXddOwor
ICAgIFtzdXBlciBzZXROZXh0S2V5VmlldzpzY3JvbGxWaWV3LmdldCgpXTsKICAgICAKICAgICBy
ZXR1cm4gc2VsZjsKIH0KQEAgLTEyMzQsMzEgKzEyMzMsMjkgQEAgLSAodm9pZClfc2V0Q3VzdG9t
U2Nyb2xsVmlld0NsYXNzOihDbGFzcyljdXN0b21DbGFzcwogICAgIGlmICghW2N1c3RvbUNsYXNz
IGlzU3ViY2xhc3NPZkNsYXNzOltXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgY2xhc3NdXSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpvbGRTY3JvbGxW
aWV3ID0gX3ByaXZhdGUtPmZyYW1lU2Nyb2xsVmlldzsgLy8gYWxyZWFkeSByZXRhaW5lZAotICAg
IE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqZG9jdW1lbnRWaWV3ID0gW1tzZWxmIGRvY3VtZW50
Vmlld10gcmV0YWluXTsKKyAgICBhdXRvIG9sZFNjcm9sbFZpZXcgPSBfcHJpdmF0ZS0+ZnJhbWVT
Y3JvbGxWaWV3OyAvLyBhbHJlYWR5IHJldGFpbmVkCisgICAgYXV0byBkb2N1bWVudFZpZXcgPSBy
ZXRhaW5QdHIoW3NlbGYgZG9jdW1lbnRWaWV3XSk7CiAKLSAgICBXZWJEeW5hbWljU2Nyb2xsQmFy
c1ZpZXcgKnNjcm9sbFZpZXcgID0gW1tjdXN0b21DbGFzcyBhbGxvY10gaW5pdFdpdGhGcmFtZTpb
b2xkU2Nyb2xsVmlldyBmcmFtZV1dOworICAgIFJldGFpblB0cjxXZWJEeW5hbWljU2Nyb2xsQmFy
c1ZpZXc+IHNjcm9sbFZpZXcgID0gYWRvcHROUyhbW2N1c3RvbUNsYXNzIGFsbG9jXSBpbml0V2l0
aEZyYW1lOltvbGRTY3JvbGxWaWV3IGZyYW1lXV0pOwogICAgIFtzY3JvbGxWaWV3IHNldENvbnRl
bnRWaWV3OltbW1dlYkNsaXBWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOltzY3JvbGxWaWV3IGJv
dW5kc11dIGF1dG9yZWxlYXNlXV07CiAgICAgW3Njcm9sbFZpZXcgc2V0RHJhd3NCYWNrZ3JvdW5k
OltvbGRTY3JvbGxWaWV3IGRyYXdzQmFja2dyb3VuZF1dOwogICAgIFtzY3JvbGxWaWV3IHNldEhh
c1ZlcnRpY2FsU2Nyb2xsZXI6W29sZFNjcm9sbFZpZXcgaGFzVmVydGljYWxTY3JvbGxlcl1dOwog
ICAgIFtzY3JvbGxWaWV3IHNldEhhc0hvcml6b250YWxTY3JvbGxlcjpbb2xkU2Nyb2xsVmlldyBo
YXNIb3Jpem9udGFsU2Nyb2xsZXJdXTsKICAgICBbc2Nyb2xsVmlldyBzZXRBdXRvcmVzaXppbmdN
YXNrOltvbGRTY3JvbGxWaWV3IGF1dG9yZXNpemluZ01hc2tdXTsKICAgICBbc2Nyb2xsVmlldyBz
ZXRMaW5lU2Nyb2xsOltvbGRTY3JvbGxWaWV3IGxpbmVTY3JvbGxdXTsKLSAgICBbc2VsZiBhZGRT
dWJ2aWV3OnNjcm9sbFZpZXddOworICAgIFtzZWxmIGFkZFN1YnZpZXc6c2Nyb2xsVmlldy5nZXQo
KV07CiAKICAgICAvLyBkb24ndCBjYWxsIG91ciBvdmVycmlkZGVuIHZlcnNpb24gaGVyZTsgd2Ug
bmVlZCB0byBtYWtlIHRoZSBzdGFuZGFyZCBOU1ZpZXcgbGluayBiZXR3ZWVuIHVzCiAgICAgLy8g
YW5kIG91ciBzdWJ2aWV3IHNvIHRoYXQgcHJldmlvdXNLZXlWaWV3IGFuZCBwcmV2aW91c1ZhbGlk
S2V5VmlldyB3b3JrIGFzIGV4cGVjdGVkLiBUaGlzIHdvcmtzCiAgICAgLy8gdG9nZXRoZXIgd2l0
aCBvdXIgYmVjb21lRmlyc3RSZXNwb25kZXIgYW5kIHNldE5leHRLZXlWaWV3IG92ZXJyaWRlcy4K
LSAgICBbc3VwZXIgc2V0TmV4dEtleVZpZXc6c2Nyb2xsVmlld107CisgICAgW3N1cGVyIHNldE5l
eHRLZXlWaWV3OnNjcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgX3ByaXZhdGUtPmZyYW1lU2Nyb2xs
VmlldyA9IHNjcm9sbFZpZXc7CisgICAgX3ByaXZhdGUtPmZyYW1lU2Nyb2xsVmlldyA9IFdURk1v
dmUoc2Nyb2xsVmlldyk7CiAKLSAgICBbc2VsZiBfc2V0RG9jdW1lbnRWaWV3OmRvY3VtZW50Vmll
d107CisgICAgW3NlbGYgX3NldERvY3VtZW50Vmlldzpkb2N1bWVudFZpZXcuZ2V0KCldOwogICAg
IFtzZWxmIF9pbnN0YWxsXTsKIAogICAgIFtvbGRTY3JvbGxWaWV3IHJlbW92ZUZyb21TdXBlcnZp
ZXddOwotICAgIFtvbGRTY3JvbGxWaWV3IHJlbGVhc2VdOwotICAgIFtkb2N1bWVudFZpZXcgcmVs
ZWFzZV07CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9s
bGVyLm1tCmluZGV4IGI4NDQ0ZjczMTg1YjQyYzM1MzQyOTgyODVlMzI3YWIzNjk5MDNjOTIuLjg2
ZjIwZDJiZjg4Mjg0NGM5NWZiZGFmMDhiY2VhOWU4NDI0OTJiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxl
ci5tbQpAQCAtODEsOSArODEsOCBAQCBAaW1wbGVtZW50YXRpb24gV2ViRnVsbFNjcmVlbkNvbnRy
b2xsZXIKIC0gKGlkKWluaXQKIHsKICAgICAvLyBEbyBub3QgZGVmZXIgd2luZG93IGNyZWF0aW9u
LCB0byBtYWtlIHN1cmUgLXdpbmRvd051bWJlciBpcyBjcmVhdGVkIChuZWVkZWQgYnkgV2ViV2lu
ZG93U2NhbGVBbmltYXRpb24pLgotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW1dlYkNvcmVGdWxs
U2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TWmVyb1JlY3Qgc3R5bGVN
YXNrOk5TV2luZG93U3R5bGVNYXNrQ2xvc2FibGUgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZl
cmVkIGRlZmVyOk5PXTsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoV2luZG93OndpbmRvd107
Ci0gICAgW3dpbmRvdyByZWxlYXNlXTsKKyAgICBhdXRvIHdpbmRvdyA9IGFkb3B0TlMoW1tXZWJD
b3JlRnVsbFNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU1plcm9SZWN0
IHN0eWxlTWFzazpOU1dpbmRvd1N0eWxlTWFza0Nsb3NhYmxlIGJhY2tpbmc6TlNCYWNraW5nU3Rv
cmVCdWZmZXJlZCBkZWZlcjpOT10pOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhXaW5kb3c6
d2luZG93LmdldCgpXTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
W3NlbGYgd2luZG93RGlkTG9hZF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQppbmRleCA5NjIwZTg2ZmIwYTcyMDE0MDFjMmNhZDU1MWRlMmNmYjg4
ODliZWRiLi42NmZiODE2ODY3YzE1MTk5NWRiZjU1ZDE3MzU3YjBlOWUyMTAxOWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTE5MTEs
MTMgKzE5MTEsMTAgQEAgLSAodm9pZClfdXBkYXRlTW91c2VvdmVyV2l0aEV2ZW50OihOU0V2ZW50
ICopZXZlbnQKICAgICBOU1ZpZXcgKmhpdFZpZXcgPSBbY29udGVudFZpZXcgaGl0VGVzdDpsb2Nh
dGlvbkZvckhpdFRlc3RdOwogICAgIGZvcmNlV2ViSFRNTFZpZXdIaXRUZXN0ID0gTk87CiAgICAg
Ci0gICAgV2ViSFRNTFZpZXcgKnZpZXcgPSBuaWw7CisgICAgUmV0YWluUHRyPFdlYkhUTUxWaWV3
PiB2aWV3OwogICAgIGlmIChbaGl0VmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFz
c11dKQogICAgICAgICB2aWV3ID0gKFdlYkhUTUxWaWV3ICopaGl0VmlldzsgICAgCiAKLSAgICBp
ZiAodmlldykKLSAgICAgICAgW3ZpZXcgcmV0YWluXTsKLQogICAgIGlmIChsYXN0SGl0VmlldyAh
PSB2aWV3ICYmIGxhc3RIaXRWaWV3ICYmIFtsYXN0SGl0VmlldyBfZnJhbWVdKSB7CiAgICAgICAg
IC8vIElmIHdlIGFyZSBtb3Zpbmcgb3V0IG9mIGEgdmlldyAob3IgZnJhbWUpLCBsZXQncyBwcmV0
ZW5kIHRoZSBtb3VzZSBtb3ZlZAogICAgICAgICAvLyBhbGwgdGhlIHdheSBvdXQgb2YgdGhhdCB2
aWV3LiBCdXQgd2UgaGF2ZSB0byBhY2NvdW50IGZvciBzY3JvbGxpbmcsIGJlY2F1c2UKQEAgLTE5
MzgsNyArMTkzNSw3IEBAIC0gKHZvaWQpX3VwZGF0ZU1vdXNlb3ZlcldpdGhFdmVudDooTlNFdmVu
dCAqKWV2ZW50CiAgICAgICAgICAgICBsYXN0SGl0Q29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS5t
b3VzZU1vdmVkKGV2ZW50LCBbW3NlbGYgX3dlYlZpZXddIF9wcmVzc3VyZUV2ZW50XSk7CiAgICAg
fQogCi0gICAgbGFzdEhpdFZpZXcgPSB2aWV3OworICAgIGxhc3RIaXRWaWV3ID0gdmlldy5nZXQo
KTsKIAogICAgIGlmICh2aWV3KSB7CiAgICAgICAgIGlmIChhdXRvKiBjb3JlRnJhbWUgPSBjb3Jl
KFt2aWV3IF9mcmFtZV0pKSB7CkBAIC0xOTU1LDggKzE5NTIsNiBAQCAtICh2b2lkKV91cGRhdGVN
b3VzZW92ZXJXaXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudAogICAgICAgICAgICAgICAgIGNvcmVG
cmFtZS0+ZXZlbnRIYW5kbGVyKCkucGFzc01vdXNlTW92ZWRFdmVudFRvU2Nyb2xsYmFycyhldmVu
dCwgW1tzZWxmIF93ZWJWaWV3XSBfcHJlc3N1cmVFdmVudF0pOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0KLSAgICAgICAgW3ZpZXcgcmVsZWFzZV07CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk5hdmlnYXRpb25EYXRhLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJOYXZpZ2F0aW9uRGF0YS5tbQppbmRl
eCAwNmU0YTYwMzAxNjhhYWMyNDU2NDAwMTdkMzk4Njk3OGUyM2YxMjdhLi42MzhjM2E1ZTRmNzlj
MjEyOTA4NWYzMDNjZWRlZmZkOGZjZjQwNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYk5hdmlnYXRpb25EYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViTmF2aWdhdGlvbkRhdGEubW0KQEAgLTI0LDE2ICsyNCwxNyBA
QAogICovCiAKICNpbXBvcnQgIldlYk5hdmlnYXRpb25EYXRhLmgiCisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKIEBpbnRlcmZhY2UgV2ViTmF2aWdhdGlvbkRhdGFQcml2YXRlIDogTlNPYmpl
Y3QKIHsKIEBwdWJsaWMKLSAgICBOU1N0cmluZyAqdXJsOwotICAgIE5TU3RyaW5nICp0aXRsZTsK
LSAgICBOU1VSTFJlcXVlc3QgKm9yaWdpbmFsUmVxdWVzdDsKLSAgICBOU1VSTFJlc3BvbnNlICpy
ZXNwb25zZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHVybDsKKyAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IHRpdGxlOworICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG9yaWdpbmFsUmVxdWVz
dDsKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2U7CiAgICAgQk9PTCBoYXNT
dWJzdGl0dXRlRGF0YTsKLSAgICBOU1N0cmluZyAqY2xpZW50UmVkaXJlY3RTb3VyY2U7CisgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBjbGllbnRSZWRpcmVjdFNvdXJjZTsKIH0KIAogQGVuZApAQCAt
NDIsMTIgKzQzLDYgQEAgQGltcGxlbWVudGF0aW9uIFdlYk5hdmlnYXRpb25EYXRhUHJpdmF0ZQog
CiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbdXJsIHJlbGVhc2VdOwotICAgIFt0aXRsZSByZWxl
YXNlXTsKLSAgICBbb3JpZ2luYWxSZXF1ZXN0IHJlbGVhc2VdOwotICAgIFtyZXNwb25zZSByZWxl
YXNlXTsKLSAgICBbY2xpZW50UmVkaXJlY3RTb3VyY2UgcmVsZWFzZV07Ci0KICAgICBbc3VwZXIg
ZGVhbGxvY107CiB9CiAKQEAgLTYyLDM0ICs1NywzNCBAQCAtIChpZClpbml0V2l0aFVSTFN0cmlu
ZzooTlNTdHJpbmcgKil1cmwgdGl0bGU6KE5TU3RyaW5nICopdGl0bGUgb3JpZ2luYWxSZXF1ZXN0
OgogICAgICAgICByZXR1cm4gbmlsOwogICAgIF9wcml2YXRlID0gW1tXZWJOYXZpZ2F0aW9uRGF0
YVByaXZhdGUgYWxsb2NdIGluaXRdOwogICAgIAotICAgIF9wcml2YXRlLT51cmwgPSBbdXJsIHJl
dGFpbl07Ci0gICAgX3ByaXZhdGUtPnRpdGxlID0gW3RpdGxlIHJldGFpbl07Ci0gICAgX3ByaXZh
dGUtPm9yaWdpbmFsUmVxdWVzdCA9IFtyZXF1ZXN0IHJldGFpbl07Ci0gICAgX3ByaXZhdGUtPnJl
c3BvbnNlID0gW3Jlc3BvbnNlIHJldGFpbl07CisgICAgX3ByaXZhdGUtPnVybCA9IHVybDsKKyAg
ICBfcHJpdmF0ZS0+dGl0bGUgPSB0aXRsZTsKKyAgICBfcHJpdmF0ZS0+b3JpZ2luYWxSZXF1ZXN0
ID0gcmVxdWVzdDsKKyAgICBfcHJpdmF0ZS0+cmVzcG9uc2UgPSByZXNwb25zZTsKICAgICBfcHJp
dmF0ZS0+aGFzU3Vic3RpdHV0ZURhdGEgPSBoYXNTdWJzdGl0dXRlRGF0YTsKLSAgICBfcHJpdmF0
ZS0+Y2xpZW50UmVkaXJlY3RTb3VyY2UgPSBbcmVkaXJlY3RTb3VyY2UgcmV0YWluXTsKKyAgICBf
cHJpdmF0ZS0+Y2xpZW50UmVkaXJlY3RTb3VyY2UgPSByZWRpcmVjdFNvdXJjZTsKICAgICAKICAg
ICByZXR1cm4gc2VsZjsKIH0KIAogLSAoTlNTdHJpbmcgKil1cmwKIHsKLSAgICByZXR1cm4gX3By
aXZhdGUtPnVybDsKKyAgICByZXR1cm4gX3ByaXZhdGUtPnVybC5nZXQoKTsKIH0KIAogLSAoTlNT
dHJpbmcgKil0aXRsZQogewotICAgIHJldHVybiBfcHJpdmF0ZS0+dGl0bGU7CisgICAgcmV0dXJu
IF9wcml2YXRlLT50aXRsZS5nZXQoKTsKIH0KIAogLSAoTlNVUkxSZXF1ZXN0ICopb3JpZ2luYWxS
ZXF1ZXN0CiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5vcmlnaW5hbFJlcXVlc3Q7CisgICAgcmV0
dXJuIF9wcml2YXRlLT5vcmlnaW5hbFJlcXVlc3QuZ2V0KCk7CiB9CiAKIC0gKE5TVVJMUmVzcG9u
c2UgKilyZXNwb25zZQogewotICAgIHJldHVybiBfcHJpdmF0ZS0+cmVzcG9uc2U7CisgICAgcmV0
dXJuIF9wcml2YXRlLT5yZXNwb25zZS5nZXQoKTsKIH0KIAogLSAoQk9PTCloYXNTdWJzdGl0dXRl
RGF0YQpAQCAtOTksNyArOTQsNyBAQCAtIChCT09MKWhhc1N1YnN0aXR1dGVEYXRhCiAKIC0gKE5T
U3RyaW5nICopY2xpZW50UmVkaXJlY3RTb3VyY2UKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNs
aWVudFJlZGlyZWN0U291cmNlOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y2xpZW50UmVkaXJlY3RT
b3VyY2UuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZEb2N1bWVudEV4dHJhcy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGRG9jdW1lbnRFeHRyYXMubW0KaW5kZXggMTc3
Y2U5M2JlZTgzODNhMDRlYWNjN2NiMWYwMDZiYTRlZGViODExYy4uMjY2NTg5YTZhMTFmMzQ5NTkx
YTNmN2I3OTE4NTA0MzJkZTg0OGZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQREZEb2N1bWVudEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlBERkRvY3VtZW50RXh0cmFzLm1tCkBAIC0xMTksMTIgKzExOSwx
MSBAQCBOU0FycmF5ICphbGxTY3JpcHRzSW5QREZEb2N1bWVudChDR1BERkRvY3VtZW50UmVmIHBk
ZkRvY3VtZW50KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgTlNTdHJpbmdFbmNv
ZGluZyBlbmNvZGluZyA9IChsZW5ndGggPiAxICYmIGJ5dGVzWzBdID09IDB4RkUgJiYgYnl0ZXNb
MV0gPT0gMHhGRikgPyBOU1VuaWNvZGVTdHJpbmdFbmNvZGluZyA6IE5TVVRGOFN0cmluZ0VuY29k
aW5nOwotICAgICAgICBOU1N0cmluZyAqc2NyaXB0ID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdp
dGhCeXRlczpieXRlcyBsZW5ndGg6bGVuZ3RoIGVuY29kaW5nOmVuY29kaW5nXTsKKyAgICAgICAg
YXV0byBzY3JpcHQgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0ZXM6Ynl0
ZXMgbGVuZ3RoOmxlbmd0aCBlbmNvZGluZzplbmNvZGluZ10pOwogICAgICAgICBpZiAoIXNjcmlw
dCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFtzY3JpcHRzIGFkZE9iamVjdDpz
Y3JpcHRdOwotICAgICAgICBbc2NyaXB0IHJlbGVhc2VdOworICAgICAgICBbc2NyaXB0cyBhZGRP
YmplY3Q6c2NyaXB0LmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gc2NyaXB0czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0
aW9uLm1tCmluZGV4IGViY2EzYjA4NGU2YjVmMDFhM2I1Y2ZkYWZlN2NhMWFlYzI5NGQzOTAuLjUy
ZjMwYTA5NmExMmEyYzA0M2I1NTZmYzk0M2VjOWVlNGZkZGU5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQpA
QCAtMTIxLDExICsxMjEsMTAgQEAgLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJj
ZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKICAgICB9CiAKICAgICBXZWJQREZWaWV3ICp2
aWV3ID0gKFdlYlBERlZpZXcgKilbW1tkYXRhU291cmNlIHdlYkZyYW1lXSBmcmFtZVZpZXddIGRv
Y3VtZW50Vmlld107Ci0gICAgUERGRG9jdW1lbnQgKmRvYyA9IFtbW1tzZWxmIGNsYXNzXSBQREZE
b2N1bWVudENsYXNzXSBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGFdOwotICAgIFt2aWV3IHNldFBE
RkRvY3VtZW50OmRvY107CisgICAgYXV0byBkb2MgPSBhZG9wdE5TKFtbW1tzZWxmIGNsYXNzXSBQ
REZEb2N1bWVudENsYXNzXSBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGFdKTsKKyAgICBbdmlldyBz
ZXRQREZEb2N1bWVudDpkb2MuZ2V0KCldOwogCi0gICAgTlNBcnJheSAqc2NyaXB0cyA9IGFsbFNj
cmlwdHNJblBERkRvY3VtZW50KGRvYyk7Ci0gICAgW2RvYyByZWxlYXNlXTsKKyAgICBOU0FycmF5
ICpzY3JpcHRzID0gYWxsU2NyaXB0c0luUERGRG9jdW1lbnQoZG9jLmdldCgpKTsKICAgICBkb2Mg
PSBuaWw7CiAKICAgICBpZiAoIVtzY3JpcHRzIGNvdW50XSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRleCBmN2YzZTMxNTgwNzE1YTdkMjMyZjU2
MzBjYmZlZTQ5MTMyNWFmOTFlLi4yMTMzN2YyZGFiMmM1N2RjZmExMjlhY2I3N2I0ODJlNjU2YjYz
Nzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1t
CkBAIC0zOTAsMTIgKzM5MCwxMSBAQCAtIChOU01lbnUgKiltZW51Rm9yRXZlbnQ6KE5TRXZlbnQg
Kil0aGVFdmVudAogICAgIC8vIFRvIG1hdGNoIHRoZSBQREZLaXQgc3R5bGUsIHdlJ2xsIGFkZCBP
cGVuIHdpdGggUHJldmlldyBldmVuIHdoZW4gdGhlcmUncyBubyBkb2N1bWVudCB5ZXQgdG8gdmll
dywgYW5kCiAgICAgLy8gZGlzYWJsZSBpdCB1c2luZyB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVt
LgogICAgIE5TU3RyaW5nICp0aXRsZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJX1NU
UklOR19JTlRFUk5BTCgiT3BlbiB3aXRoICVAIiwgImNvbnRleHQgbWVudSBpdGVtIGZvciBQREYi
KSwgYXBwTmFtZV07Ci0gICAgTlNNZW51SXRlbSAqaXRlbSA9IFtbTlNNZW51SXRlbSBhbGxvY10g
aW5pdFdpdGhUaXRsZTp0aXRsZSBhY3Rpb246QHNlbGVjdG9yKF9vcGVuV2l0aEZpbmRlcjopIGtl
eUVxdWl2YWxlbnQ6QCIiXTsKKyAgICBhdXRvIGl0ZW0gPSByZXRhaW5QdHIoW1tOU01lbnVJdGVt
IGFsbG9jXSBpbml0V2l0aFRpdGxlOnRpdGxlIGFjdGlvbjpAc2VsZWN0b3IoX29wZW5XaXRoRmlu
ZGVyOikga2V5RXF1aXZhbGVudDpAIiJdKTsKICAgICBbaXRlbSBzZXRUYWc6V2ViTWVudUl0ZW1U
YWdPcGVuV2l0aERlZmF1bHRBcHBsaWNhdGlvbl07CiAgICAgaWYgKGFwcEljb24pCiAgICAgICAg
IFtpdGVtIHNldEltYWdlOmFwcEljb25dOwotICAgIFtpdGVtcyBpbnNlcnRPYmplY3Q6aXRlbSBh
dEluZGV4OjBdOwotICAgIFtpdGVtIHJlbGVhc2VdOworICAgIFtpdGVtcyBpbnNlcnRPYmplY3Q6
aXRlbS5nZXQoKSBhdEluZGV4OjBdOwogICAgIAogICAgIFtpdGVtcyBpbnNlcnRPYmplY3Q6W05T
TWVudUl0ZW0gc2VwYXJhdG9ySXRlbV0gYXRJbmRleDoxXTsKICAgICAKQEAgLTY0Miw3ICs2NDEs
NyBAQCAtIChOU1VJbnRlZ2VyKWNvdW50TWF0Y2hlc0ZvclRleHQ6KE5TU3RyaW5nICopc3RyaW5n
IGluRE9NUmFuZ2U6KERPTVJhbmdlICopcmFuZwogICAgICAgICByZXR1cm4gMDsKIAogICAgIFBE
RlNlbGVjdGlvbiAqcHJldmlvdXNNYXRjaCA9IG5pbDsKLSAgICBOU011dGFibGVBcnJheSAqbWF0
Y2hlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bGltaXRdOwor
ICAgIGF1dG8gbWF0Y2hlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpsaW1pdF0pOwogCiAgICAgZm9yICg7OykgewogICAgICAgICBQREZTZWxlY3Rp
b24gKm5leHRNYXRjaCA9IFtzZWxmIF9uZXh0TWF0Y2hGb3I6c3RyaW5nIGRpcmVjdGlvbjpZRVMg
Y2FzZVNlbnNpdGl2ZTohKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkg
d3JhcDpOTyBmcm9tU2VsZWN0aW9uOnByZXZpb3VzTWF0Y2ggc3RhcnRJblNlbGVjdGlvbjpOT107
CkBAIC02NTYsOCArNjU1LDcgQEAgLSAoTlNVSW50ZWdlciljb3VudE1hdGNoZXNGb3JUZXh0OihO
U1N0cmluZyAqKXN0cmluZyBpbkRPTVJhbmdlOihET01SYW5nZSAqKXJhbmcKICAgICAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIFtzZWxmIF9zZXRUZXh0TWF0Y2hlczptYXRjaGVzXTsKLSAg
ICBbbWF0Y2hlcyByZWxlYXNlXTsKKyAgICBbc2VsZiBfc2V0VGV4dE1hdGNoZXM6bWF0Y2hlcy5n
ZXQoKV07CiAgICAgCiAgICAgcmV0dXJuIFttYXRjaGVzIGNvdW50XTsKIH0KQEAgLTcwOCwxMiAr
NzA2LDExIEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdHJpbmcKICAgICAv
LyBjaGFuZ2luZyB0aGUgc2VsZWN0aW9uIGlzIGEgaGFjaywgYnV0IHRoZSBvbmx5IHdheSB0byBn
ZXQgYW4gYXR0ciBzdHJpbmcgaXMgdmlhIFBERlNlbGVjdGlvbgogICAgIAogICAgIC8vIG11c3Qg
Y29weSB0aGlzIHNlbGVjdGlvbiBvYmplY3QgYmVjYXVzZSB3ZSBjaGFuZ2UgdGhlIHNlbGVjdGlv
biB3aGljaCBzZWVtcyB0byByZWxlYXNlIGl0Ci0gICAgUERGU2VsZWN0aW9uICpzYXZlZFNlbGVj
dGlvbiA9IFtbUERGU3VidmlldyBjdXJyZW50U2VsZWN0aW9uXSBjb3B5XTsKKyAgICBhdXRvIHNh
dmVkU2VsZWN0aW9uID0gYWRvcHROUyhbW1BERlN1YnZpZXcgY3VycmVudFNlbGVjdGlvbl0gY29w
eV0pOwogICAgIFtQREZTdWJ2aWV3IHNlbGVjdEFsbDpuaWxdOwogICAgIE5TQXR0cmlidXRlZFN0
cmluZyAqcmVzdWx0ID0gW1tQREZTdWJ2aWV3IGN1cnJlbnRTZWxlY3Rpb25dIGF0dHJpYnV0ZWRT
dHJpbmddOwogICAgIGlmIChzYXZlZFNlbGVjdGlvbikgewotICAgICAgICBbUERGU3VidmlldyBz
ZXRDdXJyZW50U2VsZWN0aW9uOnNhdmVkU2VsZWN0aW9uXTsKLSAgICAgICAgW3NhdmVkU2VsZWN0
aW9uIHJlbGVhc2VdOworICAgICAgICBbUERGU3VidmlldyBzZXRDdXJyZW50U2VsZWN0aW9uOnNh
dmVkU2VsZWN0aW9uLmdldCgpXTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogYmVo
YXZpb3Igb2Ygc2V0Q3VycmVudFNlbGVjdGlvbjpuaWwgaXMgbm90IGRvY3VtZW50ZWQgLSBjaGVj
ayA0MTgyOTM0IGZvciBwcm9ncmVzcwogICAgICAgICAvLyBPdGhlcndpc2UsIHdlIGNvdWxkIGNv
bGxhcHNlIHRoaXMgY29kZSB3aXRoIHRoZSBjYXNlIGFib3ZlLgpAQCAtODc0LDcgKzg3MSw3IEBA
IC0gKE5TSW1hZ2UgKilzZWxlY3Rpb25JbWFnZUZvcmNpbmdCbGFja1RleHQ6KEJPT0wpZm9yY2VC
bGFja1RleHQKICAgICAvLyBDb252ZXJ0IHRoZSBzZWxlY3Rpb24gdG8gYW4gYXR0cmlidXRlZCBz
dHJpbmcsIGFuZCBkcmF3IHRoYXQuCiAgICAgLy8gRklYTUUgNDYyMTE1NDogdGhpcyBkb2Vzbid0
IGhhbmRsZSBpdGFsaWNzIChhbmQgbWF5YmUgb3RoZXIgc3R5bGVzKQogICAgIC8vIEZJWE1FIDQ2
MDQzNjY6IHRoaXMgZG9lc24ndCBoYW5kbGUgdGV4dCBhdCBub24tYWN0dWFsIHNpemUKLSAgICBO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW1tzZWxmIHNlbGVj
dGVkQXR0cmlidXRlZFN0cmluZ10gbXV0YWJsZUNvcHldOworICAgIFJldGFpblB0cjxOU011dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW3NlbGYgc2Vs
ZWN0ZWRBdHRyaWJ1dGVkU3RyaW5nXSBtdXRhYmxlQ29weV0pOwogICAgIE5TUmFuZ2Ugd2hvbGVT
dHJpbmdSYW5nZSA9IE5TTWFrZVJhbmdlKDAsIFthdHRyaWJ1dGVkU3RyaW5nIGxlbmd0aF0pOwog
ICAgIAogICAgIC8vIE1vZGlmeSB0aGUgc3R5bGVzIGluIHRoZSBhdHRyaWJ1dGVkIHN0cmluZyB0
byBkcmF3IGJsYWNrIHRleHQsIG5vIGJhY2tncm91bmQsIGFuZCBubyB1bmRlcmxpbmUuIFdlIGRy
YXcgCkBAIC04OTEsOCArODg4LDYgQEAgLSAoTlNJbWFnZSAqKXNlbGVjdGlvbkltYWdlRm9yY2lu
Z0JsYWNrVGV4dDooQk9PTClmb3JjZUJsYWNrVGV4dAogICAgIFtzZWxlY3Rpb25JbWFnZSBsb2Nr
Rm9jdXNdOwogICAgIFthdHRyaWJ1dGVkU3RyaW5nIGRyYXdBdFBvaW50Ok5TWmVyb1BvaW50XTsK
ICAgICBbc2VsZWN0aW9uSW1hZ2UgdW5sb2NrRm9jdXNdOwotICAgIAotICAgIFthdHRyaWJ1dGVk
U3RyaW5nIHJlbGVhc2VdOwogCiAgICAgcmV0dXJuIHNlbGVjdGlvbkltYWdlOwogfQpAQCAtMTEw
Niw3ICsxMTAxLDcgQEAgLSAoTlNNdXRhYmxlQXJyYXkgKilfbWVudUl0ZW1zRnJvbVBERktpdEZv
ckV2ZW50OihOU0V2ZW50ICopdGhlRXZlbnQKICAgICBOU011dGFibGVBcnJheSAqY29waWVkSXRl
bXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
ZGVjbGFyZWQtc2VsZWN0b3IiKQotICAgIE5TRGljdGlvbmFyeSAqYWN0aW9uc1RvVGFncyA9IFtb
TlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgorICAgIGF1dG8gYWN0
aW9uc1RvVGFncyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0
c0FuZEtleXM6CiAgICAgICAgIEAoV2ViTWVudUl0ZW1QREZBY3R1YWxTaXplKSwgTlNTdHJpbmdG
cm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRBY3R1YWxTaXplOikpLAogICAgICAgICBAKFdlYk1l
bnVJdGVtUERGWm9vbUluKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKHpvb21Jbjop
KSwKICAgICAgICAgQChXZWJNZW51SXRlbVBERlpvb21PdXQpLCBOU1N0cmluZ0Zyb21TZWxlY3Rv
cihAc2VsZWN0b3Ioem9vbU91dDopKSwKQEAgLTExMTgsMjAgKzExMTMsMjAgQEAgSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVjdG9yIikKICAgICAgICAgQChXZWJNZW51SXRl
bVBERkNvbnRpbnVvdXMpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3RvZ2dsZUNv
bnRpbnVvdXM6KSksCiAgICAgICAgIEAoV2ViTWVudUl0ZW1QREZOZXh0UGFnZSksIE5TU3RyaW5n
RnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihnb1RvTmV4dFBhZ2U6KSksCiAgICAgICAgIEAoV2ViTWVu
dUl0ZW1QREZQcmV2aW91c1BhZ2UpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoZ29U
b1ByZXZpb3VzUGFnZTopKSwKLSAgICAgICAgbmlsXTsKKyAgICAgICAgbmlsXSk7CiBJR05PUkVf
V0FSTklOR1NfRU5ECiAKICAgICAvLyBMZWF2ZSB0aGVzZSBtZW51IGl0ZW1zIG91dCwgc2luY2Ug
V2ViS2l0IGluc2VydHMgZXF1aXZhbGVudCBvbmVzLiBOb3RlIHRoYXQgd2UgbGVhdmUgb3V0IFBE
RktpdCdzICJMb29rIFVwIGluIERpY3Rpb25hcnkiCiAgICAgLy8gaXRlbSBoZXJlIGJlY2F1c2Ug
V2ViS2l0IGFscmVhZHkgaW5jbHVkZXMgYW4gaXRlbSB3aXRoIHRoZSBzYW1lIHRpdGxlIGFuZCBw
dXJwb3NlLiBXZSBtYXAgV2ViS2l0J3MgdG8gUERGS2l0J3MgCiAgICAgLy8gIkxvb2sgVXAgaW4g
RGljdGlvbmFyeSIgdmlhIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiAtW1dlYlBERlZpZXcgX2xvb2tV
cEluRGljdGlvbmFyeUZyb21NZW51Ol0uCi0gICAgTlNTZXQgKnVud2FudGVkQWN0aW9ucyA9IFtb
TlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKKyAgICBhdXRvIHVud2FudGVkQWN0aW9ucyA9
IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVjdG9yIikKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2VhcmNoSW5TcG90bGlnaHQ6KSks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2Vs
ZWN0b3IoX3NlYXJjaEluR29vZ2xlOikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZWFyY2hJbkRpY3Rpb25hcnk6KSksCiBJ
R05PUkVfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU1N0cmlu
Z0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoY29weTopKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5pbF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdKTsKICAgICAK
ICAgICBOU0VudW1lcmF0b3IgKmUgPSBbW1tQREZTdWJ2aWV3IG1lbnVGb3JFdmVudDp0aGVFdmVu
dF0gaXRlbUFycmF5XSBvYmplY3RFbnVtZXJhdG9yXTsKICAgICBOU01lbnVJdGVtICppdGVtOwpA
QCAtMTE0NCw5ICsxMTM5LDggQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgICAgICAKICAgICAg
ICAgLy8gQ29weSBpdGVtcyBzaW5jZSBhIG1lbnUgaXRlbSBjYW4gYmUgaW4gb25seSBvbmUgbWVu
dSBhdCBhIHRpbWUsIGFuZCB3ZSBkb24ndAogICAgICAgICAvLyB3YW50IHRvIG1vZGlmeSB0aGUg
b3JpZ2luYWwgbWVudSBzdXBwbGllZCBieSBQREZLaXQuCi0gICAgICAgIE5TTWVudUl0ZW0gKml0
ZW1Db3B5ID0gW2l0ZW0gY29weV07Ci0gICAgICAgIFtjb3BpZWRJdGVtcyBhZGRPYmplY3Q6aXRl
bUNvcHldOwotICAgICAgICBbaXRlbUNvcHkgcmVsZWFzZV07CisgICAgICAgIFJldGFpblB0cjxO
U01lbnVJdGVtPiBpdGVtQ29weSA9IGFkb3B0TlMoW2l0ZW0gY29weV0pOworICAgICAgICBbY29w
aWVkSXRlbXMgYWRkT2JqZWN0Oml0ZW1Db3B5LmdldCgpXTsKICAgICAgICAgCiAgICAgICAgIC8v
IEluY2x1ZGUgYWxsIG9mIFBERktpdCdzIHNlcGFyYXRvcnMgZm9yIG5vdy4gQXQgdGhlIGVuZCB3
ZSdsbCByZW1vdmUgYW55IG9uZXMgdGhhdCB3ZXJlIG1hZGUKICAgICAgICAgLy8gdXNlbGVzcyBi
eSByZW1vdmluZyBQREZLaXQncyBtZW51IGl0ZW1zLgpAQCAtMTE3Niw5ICsxMTcwLDYgQEAgSUdO
T1JFX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgTE9HX0VSUk9SKCJQREYgY29udGV4dCBtZW51
IGl0ZW0gJUAgY2FtZSB3aXRoIHRhZyAlZCwgc28gbm8gV2ViS2l0IHRhZyB3YXMgYXBwbGllZC4g
VGhpcyBjb3VsZCBtZWFuIHRoYXQgdGhlIGl0ZW0gZG9lc24ndCBhcHBlYXIgaW4gY2xpZW50cyBz
dWNoIGFzIFNhZmFyaS4iLCBbaXRlbUNvcHkgdGl0bGVdLCBbaXRlbUNvcHkgdGFnXSk7CiAgICAg
fQogICAgIAotICAgIFthY3Rpb25zVG9UYWdzIHJlbGVhc2VdOwotICAgIFt1bndhbnRlZEFjdGlv
bnMgcmVsZWFzZV07Ci0gICAgCiAgICAgLy8gU2luY2Ugd2UgbWlnaHQgaGF2ZSByZW1vdmVkIGVs
ZW1lbnRzIHN1cHBsaWVkIGJ5IFBERktpdCwgYW5kIHdlIHdhbnQgdG8gbWluaW1pemUgb3VyIGhh
cmR3aXJlZAogICAgIC8vIGtub3dsZWRnZSBvZiB0aGUgb3JkZXIgYW5kIGFycmFuZ2VtZW50IG9m
IFBERktpdCdzIG1lbnUgaXRlbXMsIHdlIG5lZWQgdG8gcmVtb3ZlIGFueSBib2d1cwogICAgIC8v
IHNlcGFyYXRvcnMgdGhhdCB3ZXJlIGxlZnQgYmVoaW5kLgpAQCAtMTIwMSw3ICsxMTkyLDcgQEAg
LSAoUERGU2VsZWN0aW9uICopX25leHRNYXRjaEZvcjooTlNTdHJpbmcgKilzdHJpbmcgZGlyZWN0
aW9uOihCT09MKWZvcndhcmQgY2FzZVMKICAgICAKICAgICBQREZEb2N1bWVudCAqZG9jdW1lbnQg
PSBbUERGU3VidmlldyBkb2N1bWVudF07CiAgICAgCi0gICAgUERGU2VsZWN0aW9uICpzZWxlY3Rp
b25Gb3JJbml0aWFsU2VhcmNoID0gW2luaXRpYWxTZWxlY3Rpb24gY29weV07CisgICAgYXV0byBz
ZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoID0gYWRvcHROUyhbaW5pdGlhbFNlbGVjdGlvbiBjb3B5
XSk7CiAgICAgaWYgKHN0YXJ0SW5TZWxlY3Rpb24pIHsKICAgICAgICAgLy8gSW5pdGlhbGx5IHdl
IHdhbnQgdG8gaW5jbHVkZSB0aGUgc2VsZWN0ZWQgdGV4dCBpbiB0aGUgc2VhcmNoLiBQREZEb2N1
bWVudCdzIEFQSSBhbHdheXMgc2VhcmNoZXMgZnJvbSBqdXN0CiAgICAgICAgIC8vIHBhc3QgdGhl
IHBhc3NlZC1pbiBzZWxlY3Rpb24sIHNvIHdlIG5lZWQgdG8gcGFzcyBhIHNlbGVjdGlvbiB0aGF0
J3MgbW9kaWZpZWQgYXBwcm9wcmlhdGVseS4gCkBAIC0xMjE4LDggKzEyMDksNyBAQCAtIChQREZT
ZWxlY3Rpb24gKilfbmV4dE1hdGNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJlY3Rpb246KEJP
T0wpZm9yd2FyZCBjYXNlUwogICAgICAgICAgICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2gg
ZXh0ZW5kU2VsZWN0aW9uQXRTdGFydDotaW5pdGlhbFNlbGVjdGlvbkxlbmd0aF07CiAgICAgICAg
IH0KICAgICB9Ci0gICAgUERGU2VsZWN0aW9uICpmb3VuZFNlbGVjdGlvbiA9IFtkb2N1bWVudCBm
aW5kU3RyaW5nOnN0cmluZyBmcm9tU2VsZWN0aW9uOnNlbGVjdGlvbkZvckluaXRpYWxTZWFyY2gg
d2l0aE9wdGlvbnM6b3B0aW9uc107Ci0gICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggcmVs
ZWFzZV07CisgICAgUERGU2VsZWN0aW9uICpmb3VuZFNlbGVjdGlvbiA9IFtkb2N1bWVudCBmaW5k
U3RyaW5nOnN0cmluZyBmcm9tU2VsZWN0aW9uOnNlbGVjdGlvbkZvckluaXRpYWxTZWFyY2guZ2V0
KCkgd2l0aE9wdGlvbnM6b3B0aW9uc107CiAKICAgICAvLyBJZiB3ZSBmaXJzdCBzZWFyY2hlZCBp
biB0aGUgc2VsZWN0aW9uLCBhbmQgd2UgZm91bmQgdGhlIHNlbGVjdGlvbiwgc2VhcmNoIGFnYWlu
IGZyb20ganVzdCBwYXN0IHRoZSBzZWxlY3Rpb24KICAgICBpZiAoc3RhcnRJblNlbGVjdGlvbiAm
JiBfUERGU2VsZWN0aW9uc0FyZUVxdWFsKGZvdW5kU2VsZWN0aW9uLCBpbml0aWFsU2VsZWN0aW9u
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUG9saWN5
RGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBvbGljeURl
bGVnYXRlLm1tCmluZGV4IGZlNzdkYzk1ODE4YTdlZTA5YmYzMTdhZWFhNGJmNDI2NDBmNGVlYTcu
LmUyOGFiOGY0YThkMjBlMmJkMDU1ZTE5ZDdkZDM5NTI1ZjViMTBmZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUG9saWN5RGVsZWdhdGUubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQb2xpY3lEZWxlZ2F0ZS5tbQpAQCAt
NDMsNyArNDMsNyBAQCBOU1N0cmluZyAqV2ViQWN0aW9uT3JpZ2luYWxVUkxLZXkgPSBAIldlYkFj
dGlvbk9yaWdpbmFsVVJMS2V5IjsKIEBpbnRlcmZhY2UgV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5l
clByaXZhdGUgOiBOU09iamVjdAogewogQHB1YmxpYwotICAgIGlkIHRhcmdldDsKKyAgICBSZXRh
aW5QdHI8aWQ+IHRhcmdldDsKICAgICBTRUwgYWN0aW9uOwogfQogCkBAIC01OCwxNCArNTgsMTMg
QEAgLSAoaWQpaW5pdFdpdGhUYXJnZXQ6KGlkKXQgYWN0aW9uOihTRUwpYQogICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHRh
cmdldCA9IFt0IHJldGFpbl07CisgICAgdGFyZ2V0ID0gdDsKICAgICBhY3Rpb24gPSBhOwogICAg
IHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbdGFyZ2V0IHJlbGVh
c2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtOTEsMTQgKzkwLDEyIEBAIC0odm9p
ZClkZWFsbG9jCiAtICh2b2lkKV91c2VQb2xpY3k6KFBvbGljeUFjdGlvbilwb2xpY3kKIHsKICAg
ICBpZiAoX3ByaXZhdGUtPnRhcmdldCkKLSAgICAgICAgd3RmT2JqQ01zZ1NlbmQ8dm9pZD4oX3By
aXZhdGUtPnRhcmdldCwgX3ByaXZhdGUtPmFjdGlvbiwgcG9saWN5KTsKKyAgICAgICAgd3RmT2Jq
Q01zZ1NlbmQ8dm9pZD4oX3ByaXZhdGUtPnRhcmdldC5nZXQoKSwgX3ByaXZhdGUtPmFjdGlvbiwg
cG9saWN5KTsKIH0KIAogLSAodm9pZClfaW52YWxpZGF0ZQogewotICAgIGlkIHRhcmdldCA9IF9w
cml2YXRlLT50YXJnZXQ7CiAgICAgX3ByaXZhdGUtPnRhcmdldCA9IG5pbDsKLSAgICBbdGFyZ2V0
IHJlbGVhc2VdOwogfQogCiAvLyBXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyIGltcGxlbWVudGF0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
cy5tbQppbmRleCBiM2M4ZmNhZjNlODc2NWUyMGFlMzAzNGU3NjQ2Yzg2NDI4NDUyMTMwLi4zMzNh
MzI0NzkzZGRiYzhmYTBhMGVkZjYxZDg2OGI0MzFhMGI1YTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTE2NTEsOSArMTY1
MSw4IEBAIHN0YXRpYyBOU1N0cmluZyAqY2xhc3NJQkNyZWF0b3JJRCA9IG5pbDsKIAogKyAodm9p
ZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaW5nCiB7Ci0gICAgTlNTdHJpbmcgKm9s
ZCA9IGNsYXNzSUJDcmVhdG9ySUQ7CisgICAgYXV0byBvbGQgPSBhZG9wdE5TKGNsYXNzSUJDcmVh
dG9ySUQpOwogICAgIGNsYXNzSUJDcmVhdG9ySUQgPSBbc3RyaW5nIGNvcHldOwotICAgIFtvbGQg
cmVsZWFzZV07CiB9CiAKIC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IGI4
NGM3MzcwMTllY2UzNGUxOTBjMmNlNzczYmY3YTFkOWQ1ODZkZmUuLmIyZjQyMjc4MjFmZTE3YTQ1
MTcyNjRjOWYyZTgxMzJmNDI0YzRjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtOTcsMTQgKzk3LDExIEBAIHZv
aWQgV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBO
U1N0cmluZyogbnNFcnJvck1lc3NhZ2UgPSBuc1N0cmluZ05pbElmRW1wdHkoZXJyb3JNc2cpOwot
ICAgICAgICBOU0RpY3Rpb25hcnkgKmluZm8gPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzQW5kS2V5czpuc0Vycm9yTWVzc2FnZSwgV2ViU2NyaXB0RXJyb3JEZXNjcmlwdGlv
bktleSwgQChlcnJvckxpbmUpLCBXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXJLZXksIG5pbF07Ci0g
ICAgICAgIE5TRXJyb3IgKmVycm9yID0gW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpX
ZWJTY3JpcHRFcnJvckRvbWFpbiBjb2RlOldlYlNjcmlwdEdlbmVyYWxFcnJvckNvZGUgdXNlcklu
Zm86aW5mb107CisgICAgICAgIGF1dG8gaW5mbyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6bnNFcnJvck1lc3NhZ2UsIFdlYlNjcmlwdEVycm9y
RGVzY3JpcHRpb25LZXksIEAoZXJyb3JMaW5lKSwgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmVyS2V5
LCBuaWxdKTsKKyAgICAgICAgYXV0byBlcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBp
bml0V2l0aERvbWFpbjpXZWJTY3JpcHRFcnJvckRvbWFpbiBjb2RlOldlYlNjcmlwdEdlbmVyYWxF
cnJvckNvZGUgdXNlckluZm86aW5mby5nZXQoKV0pOwogCiAgICAgICAgIGlmIChpbXBsZW1lbnRh
dGlvbnMtPmZhaWxlZFRvUGFyc2VTb3VyY2VGdW5jKQotICAgICAgICAgICAgQ2FsbFNjcmlwdERl
YnVnRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5mYWlsZWRUb1BhcnNlU291cmNlRnVuYywgd2Vi
VmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZmFpbGVkVG9QYXJzZVNvdXJjZTpiYXNlTGluZU51bWJl
cjpmcm9tVVJMOndpdGhFcnJvcjpmb3JXZWJGcmFtZTopLCBuc1NvdXJjZSwgZmlyc3RMaW5lLCBu
c1VSTCwgZXJyb3IsIHdlYkZyYW1lKTsKLQotICAgICAgICBbZXJyb3IgcmVsZWFzZV07Ci0gICAg
ICAgIFtpbmZvIHJlbGVhc2VdOworICAgICAgICAgICAgQ2FsbFNjcmlwdERlYnVnRGVsZWdhdGUo
aW1wbGVtZW50YXRpb25zLT5mYWlsZWRUb1BhcnNlU291cmNlRnVuYywgd2ViVmlldywgQHNlbGVj
dG9yKHdlYlZpZXc6ZmFpbGVkVG9QYXJzZVNvdXJjZTpiYXNlTGluZU51bWJlcjpmcm9tVVJMOndp
dGhFcnJvcjpmb3JXZWJGcmFtZTopLCBuc1NvdXJjZSwgZmlyc3RMaW5lLCBuc1VSTCwgZXJyb3Iu
Z2V0KCksIHdlYkZyYW1lKTsKICAgICB9CiAKICAgICBtX2NhbGxpbmdEZWxlZ2F0ZSA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0Q29t
cGxldGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQppbmRleCA4MDFiZWZlYzc2ZDA5NmY5M2YwZjQ4
ZDYzY2Y4N2RmOTVkNTUxYmEwLi5mNzhlNTQ0NTFmNWY3M2QyMzZiOWMzZjAzYzk0NGM3N2FhY2Q5
ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRD
b21wbGV0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQpAQCAtODgsMTQgKzg4LDEzIEBAIC0g
KHZvaWQpX2J1aWxkVUkKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
ICAgIHRhYmxlRnJhbWUuc2l6ZSA9IFtOU1Njcm9sbFZpZXcgY29udGVudFNpemVGb3JGcmFtZVNp
emU6c2Nyb2xsRnJhbWUuc2l6ZSBoYXNIb3Jpem9udGFsU2Nyb2xsZXI6Tk8gaGFzVmVydGljYWxT
Y3JvbGxlcjpZRVMgYm9yZGVyVHlwZTpOU05vQm9yZGVyXTsKICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKLSAgICBOU1RhYmxlQ29sdW1uICpjb2x1bW4gPSBbW05TVGFibGVD
b2x1bW4gYWxsb2NdIGluaXRdOworICAgIGF1dG8gY29sdW1uID0gYWRvcHROUyhbW05TVGFibGVD
b2x1bW4gYWxsb2NdIGluaXRdKTsKICAgICBbY29sdW1uIHNldFdpZHRoOnRhYmxlRnJhbWUuc2l6
ZS53aWR0aF07CiAgICAgW2NvbHVtbiBzZXRFZGl0YWJsZTpOT107CiAgICAgCiAgICAgX3RhYmxl
VmlldyA9IFtbTlNUYWJsZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6dGFibGVGcmFtZV07CiAg
ICAgW190YWJsZVZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazpOU1ZpZXdXaWR0aFNpemFibGVdOwot
ICAgIFtfdGFibGVWaWV3IGFkZFRhYmxlQ29sdW1uOmNvbHVtbl07Ci0gICAgW2NvbHVtbiByZWxl
YXNlXTsKKyAgICBbX3RhYmxlVmlldyBhZGRUYWJsZUNvbHVtbjpjb2x1bW4uZ2V0KCldOwogICAg
IFtfdGFibGVWaWV3IHNldEdyaWRTdHlsZU1hc2s6TlNUYWJsZVZpZXdHcmlkTm9uZV07CiAgICAg
W190YWJsZVZpZXcgc2V0Q29ybmVyVmlldzpuaWxdOwogICAgIFtfdGFibGVWaWV3IHNldEhlYWRl
clZpZXc6bmlsXTsKQEAgLTEwNSw3ICsxMDQsNyBAQCAtICh2b2lkKV9idWlsZFVJCiAgICAgW190
YWJsZVZpZXcgc2V0VGFyZ2V0OnNlbGZdOwogICAgIFtfdGFibGVWaWV3IHNldERvdWJsZUFjdGlv
bjpAc2VsZWN0b3IodGFibGVBY3Rpb246KV07CiAgICAgCi0gICAgTlNTY3JvbGxWaWV3ICpzY3Jv
bGxWaWV3ID0gW1tOU1Njcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6c2Nyb2xsRnJhbWVd
OworICAgIGF1dG8gc2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tOU1Njcm9sbFZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6c2Nyb2xsRnJhbWVdKTsKICAgICBbc2Nyb2xsVmlldyBzZXRCb3JkZXJUeXBl
Ok5TTm9Cb3JkZXJdOwogICAgIFtzY3JvbGxWaWV3IHNldEhhc1ZlcnRpY2FsU2Nyb2xsZXI6WUVT
XTsKICAgICBbc2Nyb2xsVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJs
ZSB8IE5TVmlld0hlaWdodFNpemFibGVdOwpAQCAtMTE0LDggKzExMyw3IEBAIC0gKHZvaWQpX2J1
aWxkVUkKICAgICAKICAgICBfcG9wdXBXaW5kb3cgPSBbW05TV2luZG93IGFsbG9jXSBpbml0V2l0
aENvbnRlbnRSZWN0OnNjcm9sbEZyYW1lIHN0eWxlTWFzazpOU1dpbmRvd1N0eWxlTWFza0JvcmRl
cmxlc3MgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKICAgICBbX3Bv
cHVwV2luZG93IHNldEFscGhhVmFsdWU6MC44OGZdOwotICAgIFtfcG9wdXBXaW5kb3cgc2V0Q29u
dGVudFZpZXc6c2Nyb2xsVmlld107Ci0gICAgW3Njcm9sbFZpZXcgcmVsZWFzZV07CisgICAgW19w
b3B1cFdpbmRvdyBzZXRDb250ZW50VmlldzpzY3JvbGxWaWV3LmdldCgpXTsKICAgICBbX3BvcHVw
V2luZG93IHNldEhhc1NoYWRvdzpZRVNdOwogICAgIFtfcG9wdXBXaW5kb3cgX3NldEZvcmNlQWN0
aXZlQ29udHJvbHM6WUVTXTsKICAgICBbX3BvcHVwV2luZG93IHNldFJlbGVhc2VkV2hlbkNsb3Nl
ZDpOT107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KaW5kZXggMDY1MGRiZjE1M2FjZDky
NzI5ZmViMDZlZjQ0MGU4NzJjNWMyNzBhNi4uYTBkYzJiOGRhOWVmYmI2OGEyOGZmZjM1YTMxZDk1
MjVhMjcyYjQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQpAQCAtMTQxLDExICsx
NDEsMTAgQEAgQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIKIC0g
KGlkKWluaXQKIHsKICAgICAvLyBEbyBub3QgZGVmZXIgd2luZG93IGNyZWF0aW9uLCB0byBtYWtl
IHN1cmUgLXdpbmRvd051bWJlciBpcyBjcmVhdGVkIChuZWVkZWQgYnkgV2ViV2luZG93U2NhbGVB
bmltYXRpb24pLgotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW1dlYkNvcmVGdWxsU2NyZWVuV2lu
ZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TWmVyb1JlY3Qgc3R5bGVNYXNrOihOU1dp
bmRvd1N0eWxlTWFza0Z1bGxTaXplQ29udGVudFZpZXcgfCBOU1dpbmRvd1N0eWxlTWFza1Jlc2l6
YWJsZSkgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKKyAgICBhdXRv
IHdpbmRvdyA9IGFkb3B0TlMoW1tXZWJDb3JlRnVsbFNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdp
dGhDb250ZW50UmVjdDpOU1plcm9SZWN0IHN0eWxlTWFzazooTlNXaW5kb3dTdHlsZU1hc2tGdWxs
U2l6ZUNvbnRlbnRWaWV3IHwgTlNXaW5kb3dTdHlsZU1hc2tSZXNpemFibGUpIGJhY2tpbmc6TlNC
YWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwogICAgIFt3aW5kb3cgc2V0Q29sbGVjdGlv
bkJlaGF2aW9yOihbd2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl0gfCBOU1dpbmRvd0NvbGxlY3Rp
b25CZWhhdmlvckZ1bGxTY3JlZW5QcmltYXJ5KV07Ci0gICAgd2luZG93LmRlbGVnYXRlID0gc2Vs
ZjsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoV2luZG93OndpbmRvd107Ci0gICAgW3dpbmRv
dyByZWxlYXNlXTsKKyAgICBbd2luZG93IHNldERlbGVnYXRlOiBzZWxmXTsKKyAgICBzZWxmID0g
W3N1cGVyIGluaXRXaXRoV2luZG93OndpbmRvdy5nZXQoKV07CiAgICAgaWYgKCFzZWxmKQogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIF9wbGF5YmFja01vZGVsID0gV2ViQ29yZTo6UGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGY0NzhjYWE3ODI2ZTZiMTgwYTJkMzliNzhlOGNi
NmU4Y2FjMTRjMzUuLjIzZjRkMmNjZjI5YWMwNzc2NTllZjdlM2FhODNlNjAwNDhlNTRjMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEzMzIsMTEg
KzEzMzIsMTAgQEAgLSAodm9pZClfcmVnaXN0ZXJEcmFnZ2VkVHlwZXMKIHsKICAgICBOU0FycmF5
ICplZGl0YWJsZVR5cGVzID0gW1dlYkhUTUxWaWV3IF9pbnNlcnRhYmxlUGFzdGVib2FyZFR5cGVz
XTsKICAgICBOU0FycmF5ICpVUkxUeXBlcyA9IFtOU1Bhc3RlYm9hcmQgX3dlYl9kcmFnVHlwZXNG
b3JVUkxdOwotICAgIE5TTXV0YWJsZVNldCAqdHlwZXMgPSBbW05TTXV0YWJsZVNldCBhbGxvY10g
aW5pdFdpdGhBcnJheTplZGl0YWJsZVR5cGVzXTsKKyAgICBhdXRvIHR5cGVzID0gYWRvcHROUyhb
W05TTXV0YWJsZVNldCBhbGxvY10gaW5pdFdpdGhBcnJheTplZGl0YWJsZVR5cGVzXSk7CiAgICAg
W3R5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6VVJMVHlwZXNdOwogICAgIFt0eXBlcyBhZGRPYmpl
Y3Q6W1dlYkhUTUxWaWV3IF9kdW1teVBhc3RlYm9hcmRUeXBlXV07CiAgICAgW3NlbGYgcmVnaXN0
ZXJGb3JEcmFnZ2VkVHlwZXM6W3R5cGVzIGFsbE9iamVjdHNdXTsKLSAgICBbdHlwZXMgcmVsZWFz
ZV07CiB9CiAKIHN0YXRpYyBib29sIG5lZWRzT3V0bG9va1F1aXJrc1NjcmlwdCgpCkBAIC0xNDQ5
LDEwICsxNDQ4LDkgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1l
OihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICNlbmRpZgogCiAgICAgTlNS
ZWN0IGYgPSBbc2VsZiBmcmFtZV07Ci0gICAgV2ViRnJhbWVWaWV3ICpmcmFtZVZpZXcgPSBbW1dl
YkZyYW1lVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTogTlNNYWtlUmVjdCgwLDAsZi5zaXplLndp
ZHRoLGYuc2l6ZS5oZWlnaHQpXTsKKyAgICBhdXRvIGZyYW1lVmlldyA9IGFkb3B0TlMoW1tXZWJG
cmFtZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6IE5TTWFrZVJlY3QoMCwwLGYuc2l6ZS53aWR0
aCxmLnNpemUuaGVpZ2h0KV0pOwogICAgIFtmcmFtZVZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazpO
U1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlXTsKLSAgICBbc2VsZiBhZGRT
dWJ2aWV3OmZyYW1lVmlld107Ci0gICAgW2ZyYW1lVmlldyByZWxlYXNlXTsKKyAgICBbc2VsZiBh
ZGRTdWJ2aWV3OmZyYW1lVmlldy5nZXQoKV07CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYg
KENsYXNzIGdlc3R1cmVDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNJbW1lZGlhdGVBY3Rp
b25HZXN0dXJlUmVjb2duaXplciIpKSB7CkBAIC0xNjA5LDcgKzE2MDcsNyBAQCAtICh2b2lkKV9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdy
b3VwTmFtZTooTlNTdAogICAgIGlmIChbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSBvYmplY3RGb3JLZXk6V2ViU21hcnRJbnNlcnREZWxldGVFbmFibGVkXSkKICAgICAgICAg
W3NlbGYgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOltbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6V2ViU21hcnRJbnNlcnREZWxldGVFbmFibGVkXV07
CiAKLSAgICBbV2ViRnJhbWUgX2NyZWF0ZU1haW5GcmFtZVdpdGhQYWdlOl9wcml2YXRlLT5wYWdl
IGZyYW1lTmFtZTpmcmFtZU5hbWUgZnJhbWVWaWV3OmZyYW1lVmlld107CisgICAgW1dlYkZyYW1l
IF9jcmVhdGVNYWluRnJhbWVXaXRoUGFnZTpfcHJpdmF0ZS0+cGFnZSBmcmFtZU5hbWU6ZnJhbWVO
YW1lIGZyYW1lVmlldzpmcmFtZVZpZXcuZ2V0KCldOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBXZWJUaHJlYWROU1J1bkxvb3AoKTsKQEAgLTE2
MzEsNyArMTYyOSw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFt
ZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAgICAgTlNWaWV3ICpuZXh0
S2V5VmlldyA9IFtzZWxmIG5leHRLZXlWaWV3XTsKICAgICBpZiAobmV4dEtleVZpZXcgJiYgbmV4
dEtleVZpZXcgIT0gZnJhbWVWaWV3KQogICAgICAgICBbZnJhbWVWaWV3IHNldE5leHRLZXlWaWV3
Om5leHRLZXlWaWV3XTsKLSAgICBbc3VwZXIgc2V0TmV4dEtleVZpZXc6ZnJhbWVWaWV3XTsKKyAg
ICBbc3VwZXIgc2V0TmV4dEtleVZpZXc6ZnJhbWVWaWV3LmdldCgpXTsKIAogICAgIGlmIChbW3Nl
bGYgY2xhc3NdIHNob3VsZEluY2x1ZGVJbldlYktpdFN0YXRpc3RpY3NdKQogICAgICAgICArK1dl
YlZpZXdDb3VudDsKQEAgLTE3MjgsNyArMTcyNiw3IEBAICsgKE5TQXJyYXkgKilfc3VwcG9ydGVk
TUlNRVR5cGVzCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiArIChOU0FycmF5ICopX3N1cHBv
cnRlZEZpbGVFeHRlbnNpb25zCiB7Ci0gICAgTlNNdXRhYmxlU2V0ICpleHRlbnNpb25zID0gW1tO
U011dGFibGVTZXQgYWxsb2NdIGluaXRdOworICAgIGF1dG8gZXh0ZW5zaW9ucyA9IGFkb3B0TlMo
W1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdKTsKICAgICBOU0FycmF5ICpNSU1FVHlwZXMgPSBb
c2VsZiBfc3VwcG9ydGVkTUlNRVR5cGVzXTsKICAgICBOU0VudW1lcmF0b3IgKmVudW1lcmF0b3Ig
PSBbTUlNRVR5cGVzIG9iamVjdEVudW1lcmF0b3JdOwogICAgIE5TU3RyaW5nICpNSU1FVHlwZTsK
QEAgLTE3MzgsOSArMTczNiw3IEBAICsgKE5TQXJyYXkgKilfc3VwcG9ydGVkRmlsZUV4dGVuc2lv
bnMKICAgICAgICAgICAgIFtleHRlbnNpb25zIGFkZE9iamVjdHNGcm9tQXJyYXk6ZXh0ZW5zaW9u
c0ZvclR5cGVdOwogICAgICAgICB9CiAgICAgfQotICAgIE5TQXJyYXkgKnVuaXF1ZUV4dGVuc2lv
bnMgPSBbZXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKLSAgICBbZXh0ZW5zaW9ucyByZWxlYXNlXTsK
LSAgICByZXR1cm4gdW5pcXVlRXh0ZW5zaW9uczsKKyAgICByZXR1cm4gW2V4dGVuc2lvbnMgYWxs
T2JqZWN0c107CiB9CiAjZW5kaWYKIApAQCAtMTc4NSwxMSArMTc4MSw5IEBAIC0gKGlkKWluaXRT
aW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICopc3R5bGUgZnJhbWU6KENHUmVj
dClmcmFtZSBwcmVmCiAgICAgX3ByaXZhdGUtPmRyYXdzQmFja2dyb3VuZCA9IFlFUzsKICAgICBf
cHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gQ0dDb2xvclJldGFpbihXZWJDb3JlOjpjYWNoZWRD
R0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSkpOwogCi0gICAgV2ViRnJhbWVWaWV3ICpmcmFt
ZVZpZXcgPSBuaWw7Ci0gICAgZnJhbWVWaWV3ID0gW1tXZWJGcmFtZVZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6IENHUmVjdE1ha2UoMCwwLGZyYW1lLnNpemUud2lkdGgsZnJhbWUuc2l6ZS5oZWln
aHQpXTsKKyAgICBhdXRvIGZyYW1lVmlldyA9IGFkb3B0TlMoW1tXZWJGcmFtZVZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6IENHUmVjdE1ha2UoMCwwLGZyYW1lLnNpemUud2lkdGgsZnJhbWUuc2l6
ZS5oZWlnaHQpXSk7CiAgICAgW2ZyYW1lVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld1dp
ZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVdOwotICAgIFtzZWxmIGFkZFN1YnZpZXc6
ZnJhbWVWaWV3XTsKLSAgICBbZnJhbWVWaWV3IHJlbGVhc2VdOworICAgIFtzZWxmIGFkZFN1YnZp
ZXc6ZnJhbWVWaWV3LmdldCgpXTsKIAogICAgIF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91
cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMuX2xvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aCk7CiAgICAgX3ByaXZhdGUtPmdyb3VwLT5hZGRXZWJWaWV3KHNlbGYp
OwpAQCAtMTg2NSw3ICsxODU5LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhT
dHlsZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0
b3I6QHNlbGVjdG9yKF93YWtXaW5kb3dTY3JlZW5TY2FsZUNoYW5nZWQ6KSBuYW1lOldBS1dpbmRv
d1NjcmVlblNjYWxlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogICAgIFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3IoX3dha1dpbmRvd1Zpc2liaWxpdHlDaGFuZ2VkOikgbmFtZTpXQUtXaW5kb3dW
aXNpYmlsaXR5RGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogCi0gICAgW1dlYkZy
YW1lIF9jcmVhdGVNYWluRnJhbWVXaXRoU2ltcGxlSFRNTERvY3VtZW50V2l0aFBhZ2U6X3ByaXZh
dGUtPnBhZ2UgZnJhbWVWaWV3OmZyYW1lVmlldyBzdHlsZTpzdHlsZV07CisgICAgW1dlYkZyYW1l
IF9jcmVhdGVNYWluRnJhbWVXaXRoU2ltcGxlSFRNTERvY3VtZW50V2l0aFBhZ2U6X3ByaXZhdGUt
PnBhZ2UgZnJhbWVWaWV3OmZyYW1lVmlldy5nZXQoKSBzdHlsZTpzdHlsZV07CiAKICAgICBbc2Vs
ZiBfYWRkVG9BbGxXZWJWaWV3c1NldF07CiAKQEAgLTI1NzYsMjIgKzI1NzAsMTggQEAgLSAoV2Vi
RG93bmxvYWQgKilfZG93bmxvYWRVUkw6KE5TVVJMICopVVJMCiB7CiAgICAgQVNTRVJUKFVSTCk7
CiAKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5p
dFdpdGhVUkw6VVJMXTsKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0
IGFsbG9jXSBpbml0V2l0aFVSTDpVUkxdKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCi0gICAgV2ViRG93bmxvYWQgKmRvd25sb2FkID0gW1dlYkRvd25sb2FkIF9kb3dubG9h
ZFdpdGhSZXF1ZXN0OnJlcXVlc3QgZGVsZWdhdGU6X3ByaXZhdGUtPmRvd25sb2FkRGVsZWdhdGUg
ZGlyZWN0b3J5Om5pbF07CisgICAgcmV0dXJuIFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoUmVx
dWVzdDpyZXF1ZXN0LmdldCgpIGRlbGVnYXRlOl9wcml2YXRlLT5kb3dubG9hZERlbGVnYXRlIGRp
cmVjdG9yeTpuaWxdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgW3Jl
cXVlc3QgcmVsZWFzZV07Ci0KLSAgICByZXR1cm4gZG93bmxvYWQ7CiB9CiAKIC0gKFdlYlZpZXcg
Kilfb3Blbk5ld1dpbmRvd1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7Ci0g
ICAgTlNEaWN0aW9uYXJ5ICpmZWF0dXJlcyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsK
KyAgICBhdXRvIGZlYXR1cmVzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdF0p
OwogICAgIFdlYlZpZXcgKm5ld1dpbmRvd1dlYlZpZXcgPSBbW3NlbGYgX1VJRGVsZWdhdGVGb3J3
YXJkZXJdIHdlYlZpZXc6c2VsZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6bmlsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dGZWF0dXJlczpmZWF0dXJl
c107Ci0gICAgW2ZlYXR1cmVzIHJlbGVhc2VdOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93RmVhdHVyZXM6ZmVhdHVyZXMuZ2V0KCld
OwogICAgIGlmICghbmV3V2luZG93V2ViVmlldykKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAt
MzM2Niw5ICszMzU2LDggQEAgLSAodm9pZClfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZTooV2ViRnJhbWUgKilmcmFtZQogICAgIGlmIChhdXRvKiBlbGVtZW50ID0gZG9jdW1lbnQgPyBk
b2N1bWVudC0+ZnVsbHNjcmVlbk1hbmFnZXIoKS5jdXJyZW50RnVsbHNjcmVlbkVsZW1lbnQoKSA6
IDApIHsKICAgICAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6Y2xvc2VGdWxs
U2NyZWVuV2l0aExpc3RlbmVyOik7CiAgICAgICAgIGlmIChbX3ByaXZhdGUtPlVJRGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgewotICAgICAgICAgICAgV2ViS2l0RnVsbFNj
cmVlbkxpc3RlbmVyICpsaXN0ZW5lciA9IFtbV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFsbG9j
XSBpbml0V2l0aEVsZW1lbnQ6ZWxlbWVudF07Ci0gICAgICAgICAgICBDYWxsVUlEZWxlZ2F0ZShz
ZWxmLCBzZWxlY3RvciwgbGlzdGVuZXIpOwotICAgICAgICAgICAgW2xpc3RlbmVyIHJlbGVhc2Vd
OworICAgICAgICAgICAgYXV0byBsaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJLaXRGdWxsU2NyZWVu
TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudDplbGVtZW50XSk7CisgICAgICAgICAgICBD
YWxsVUlEZWxlZ2F0ZShzZWxmLCBzZWxlY3RvciwgbGlzdGVuZXIuZ2V0KCkpOwogICAgICAgICB9
IGVsc2UgaWYgKF9wcml2YXRlLT5uZXdGdWxsc2NyZWVuQ29udHJvbGxlciAmJiBbX3ByaXZhdGUt
Pm5ld0Z1bGxzY3JlZW5Db250cm9sbGVyIGlzRnVsbFNjcmVlbl0pIHsKICAgICAgICAgICAgIFtf
cHJpdmF0ZS0+bmV3RnVsbHNjcmVlbkNvbnRyb2xsZXIgY2xvc2VdOwogICAgICAgICB9CkBAIC0z
NjEzLDExICszNjAyLDEwIEBAIC0gKHZvaWQpcmVtb3ZlQWxsQ2FyZXRDaGFuZ2VMaXN0ZW5lcnMK
IC0gKHZvaWQpY2FyZXRDaGFuZ2VkCiB7CiAgICAgW19wcml2YXRlLT5fY2FyZXRDaGFuZ2VMaXN0
ZW5lciBjYXJldENoYW5nZWRdOwotICAgIE5TU2V0ICpjb3B5ID0gW19wcml2YXRlLT5fY2FyZXRD
aGFuZ2VMaXN0ZW5lcnMgY29weV07Ci0gICAgZm9yIChpZCA8V2ViQ2FyZXRDaGFuZ2VMaXN0ZW5l
cj4gbGlzdGVuZXIgaW4gY29weSkgeworICAgIGF1dG8gY29weSA9IGFkb3B0TlMoW19wcml2YXRl
LT5fY2FyZXRDaGFuZ2VMaXN0ZW5lcnMgY29weV0pOworICAgIGZvciAoaWQgPFdlYkNhcmV0Q2hh
bmdlTGlzdGVuZXI+IGxpc3RlbmVyIGluIGNvcHkuZ2V0KCkpIHsKICAgICAgICAgW2xpc3RlbmVy
IGNhcmV0Q2hhbmdlZF07CiAgICAgfQotICAgIFtjb3B5IHJlbGVhc2VdOwogfQogCiAtICh2b2lk
KV9jbGVhckRlbGVnYXRlcwpAQCAtMzg2MSw5ICszODQ5LDggQEAgLSAodm9pZClzZXRCYWNrZ3Jv
dW5kQ29sb3I6KE5TQ29sb3IgKiliYWNrZ3JvdW5kQ29sb3IKICAgICBpZiAoW19wcml2YXRlLT5i
YWNrZ3JvdW5kQ29sb3IgaXNFcXVhbDpiYWNrZ3JvdW5kQ29sb3JdKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZCBvbGQgPSBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yOworICAgIGF1dG8gb2xk
ID0gYWRvcHROUyhfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yKTsKICAgICBfcHJpdmF0ZS0+YmFj
a2dyb3VuZENvbG9yID0gW2JhY2tncm91bmRDb2xvciByZXRhaW5dOwotICAgIFtvbGQgcmVsZWFz
ZV07CiAKICAgICBbW3NlbGYgbWFpbkZyYW1lXSBfdXBkYXRlQmFja2dyb3VuZEFuZFVwZGF0ZXNX
aGlsZU9mZnNjcmVlbl07CiB9CkBAIC01MzAwLDcgKzUyODcsNyBAQCArIChOU0FycmF5ICopTUlN
RVR5cGVzU2hvd25Bc0hUTUwKIAogKyAodm9pZClzZXRNSU1FVHlwZXNTaG93bkFzSFRNTDooTlNB
cnJheSAqKU1JTUVUeXBlcwogewotICAgIE5TRGljdGlvbmFyeSAqdmlld1R5cGVzID0gW1tXZWJG
cmFtZVZpZXcgX3ZpZXdUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246WUVTXSBjb3B5XTsKKyAg
ICBhdXRvIHZpZXdUeXBlcyA9IGFkb3B0TlMoW1tXZWJGcmFtZVZpZXcgX3ZpZXdUeXBlc0FsbG93
SW1hZ2VUeXBlT21pc3Npb246WUVTXSBjb3B5XSk7CiAgICAgTlNFbnVtZXJhdG9yICplbnVtZXJh
dG9yID0gW3ZpZXdUeXBlcyBrZXlFbnVtZXJhdG9yXTsKICAgICBpZCBrZXk7CiAgICAgd2hpbGUg
KChrZXkgPSBbZW51bWVyYXRvciBuZXh0T2JqZWN0XSkpIHsKQEAgLTUzMTQsNyArNTMwMSw2IEBA
ICsgKHZvaWQpc2V0TUlNRVR5cGVzU2hvd25Bc0hUTUw6KE5TQXJyYXkgKilNSU1FVHlwZXMKICAg
ICAgICAgICAgICAgICByZXByZXNlbnRhdGlvbkNsYXNzOltXZWJIVE1MUmVwcmVzZW50YXRpb24g
Y2xhc3NdCiAgICAgICAgICAgICAgICAgZm9yTUlNRVR5cGU6W01JTUVUeXBlcyBvYmplY3RBdElu
ZGV4OmldXTsKICAgICB9Ci0gICAgW3ZpZXdUeXBlcyByZWxlYXNlXTsKIH0KIAogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQpAQCAtNTgwOSw3ICs1Nzk1LDcgQEAgLSAodm9pZClzZXRQcmVmZXJl
bmNlczooV2ViUHJlZmVyZW5jZXMgKilwcmVmcwogCiAgICAgW3ByZWZzIHdpbGxBZGRUb1dlYlZp
ZXddOwogCi0gICAgV2ViUHJlZmVyZW5jZXMgKm9sZFByZWZzID0gX3ByaXZhdGUtPnByZWZlcmVu
Y2VzOworICAgIGF1dG8gb2xkUHJlZnMgPSBhZG9wdE5TKF9wcml2YXRlLT5wcmVmZXJlbmNlcyk7
CiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2Vy
dmVyOnNlbGYgbmFtZTpXZWJQcmVmZXJlbmNlc0NoYW5nZWRJbnRlcm5hbE5vdGlmaWNhdGlvbiBv
YmplY3Q6W3NlbGYgcHJlZmVyZW5jZXNdXTsKICAgICBbV2ViUHJlZmVyZW5jZXMgX3JlbW92ZVJl
ZmVyZW5jZUZvcklkZW50aWZpZXI6W29sZFByZWZzIGlkZW50aWZpZXJdXTsKQEAgLTU4MjMsNyAr
NTgwOSw2IEBAIC0gKHZvaWQpc2V0UHJlZmVyZW5jZXM6KFdlYlByZWZlcmVuY2VzICopcHJlZnMK
ICAgICBbW3NlbGYgcHJlZmVyZW5jZXNdIF9wb3N0UHJlZmVyZW5jZXNDaGFuZ2VkQVBJTm90aWZp
Y2F0aW9uXTsKIAogICAgIFtvbGRQcmVmcyBkaWRSZW1vdmVGcm9tV2ViVmlld107Ci0gICAgW29s
ZFByZWZzIHJlbGVhc2VdOwogfQogCiAtIChXZWJQcmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzCkBA
IC01ODM0LDkgKzU4MTksOCBAQCAtIChXZWJQcmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzCiAtICh2
b2lkKXNldFByZWZlcmVuY2VzSWRlbnRpZmllcjooTlNTdHJpbmcgKilhbklkZW50aWZpZXIKIHsK
ICAgICBpZiAoIV9wcml2YXRlLT5jbG9zZWQgJiYgIVthbklkZW50aWZpZXIgaXNFcXVhbDpbW3Nl
bGYgcHJlZmVyZW5jZXNdIGlkZW50aWZpZXJdXSkgewotICAgICAgICBXZWJQcmVmZXJlbmNlcyAq
cHJlZnMgPSBbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6YW5JZGVu
dGlmaWVyXTsKLSAgICAgICAgW3NlbGYgc2V0UHJlZmVyZW5jZXM6cHJlZnNdOwotICAgICAgICBb
cHJlZnMgcmVsZWFzZV07CisgICAgICAgIGF1dG8gcHJlZnMgPSBhZG9wdE5TKFtbV2ViUHJlZmVy
ZW5jZXMgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjphbklkZW50aWZpZXJdKTsKKyAgICAgICAg
W3NlbGYgc2V0UHJlZmVyZW5jZXM6cHJlZnMuZ2V0KCldOwogICAgIH0KIH0KIApAQCAtNjgwNyw5
ICs2NzkxLDggQEAgLSAoQk9PTClzaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbgogCiAtICh2b2lk
KXNldEN1cnJlbnROb2RlSGlnaGxpZ2h0OihXZWJOb2RlSGlnaGxpZ2h0ICopbm9kZUhpZ2hsaWdo
dAogewotICAgIGlkIG9sZCA9IF9wcml2YXRlLT5jdXJyZW50Tm9kZUhpZ2hsaWdodDsKKyAgICBh
dXRvIG9sZCA9IGFkb3B0TlMoX3ByaXZhdGUtPmN1cnJlbnROb2RlSGlnaGxpZ2h0KTsKICAgICBf
cHJpdmF0ZS0+Y3VycmVudE5vZGVIaWdobGlnaHQgPSBbbm9kZUhpZ2hsaWdodCByZXRhaW5dOwot
ICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKIC0gKFdlYk5vZGVIaWdobGlnaHQgKiljdXJyZW50Tm9k
ZUhpZ2hsaWdodApAQCAtNzE1MywxMiArNzEzNiwxMSBAQCAtICh2b2lkKXN0b3BMb2FkaW5nQW5k
Q2xlYXIKIAogICAgICAgICBXZWJGcmFtZVZpZXcgKm1haW5GcmFtZVZpZXcgPSBbZnJhbWUgZnJh
bWVWaWV3XTsKICAgICAgICAgZmxvYXQgc2NhbGUgPSBbW21haW5GcmFtZVZpZXcgZG9jdW1lbnRW
aWV3XSBzY2FsZV07Ci0gICAgICAgIFdlYlBsYWluV2hpdGVWaWV3ICpwbGFpbldoaXRlVmlldyA9
IFtbV2ViUGxhaW5XaGl0ZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF07Cisg
ICAgICAgIGF1dG8gcGxhaW5XaGl0ZVZpZXcgPSBhZG9wdE5TKFtbV2ViUGxhaW5XaGl0ZVZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0pOwogICAgICAgICBbcGxhaW5XaGl0ZVZp
ZXcgc2V0U2NhbGU6c2NhbGVdOwogICAgICAgICBbcGxhaW5XaGl0ZVZpZXcgc2V0RnJhbWU6W21h
aW5GcmFtZVZpZXcgYm91bmRzXV07Ci0gICAgICAgIFttYWluRnJhbWVWaWV3IF9zZXREb2N1bWVu
dFZpZXc6cGxhaW5XaGl0ZVZpZXddOworICAgICAgICBbbWFpbkZyYW1lVmlldyBfc2V0RG9jdW1l
bnRWaWV3OnBsYWluV2hpdGVWaWV3LmdldCgpXTsKICAgICAgICAgW3BsYWluV2hpdGVWaWV3IHNl
dE5lZWRzRGlzcGxheTpZRVNdOwotICAgICAgICBbcGxhaW5XaGl0ZVZpZXcgcmVsZWFzZV07CiAg
ICAgfSk7CiB9CiAjZW5kaWYKQEAgLTg2NzAsMTEgKzg2NTIsMTAgQEAgLSAodm9pZClfb3BlbkZy
YW1lSW5OZXdXaW5kb3dGcm9tTWVudTooTlNNZW51SXRlbSAqKXNlbmRlcgogICAgIEFTU0VSVChb
ZWxlbWVudCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSk7CiAKICAgICBXZWJE
YXRhU291cmNlICpkYXRhU291cmNlID0gWyhXZWJGcmFtZSAqKVtlbGVtZW50IG9iamVjdEZvcktl
eTpXZWJFbGVtZW50RnJhbWVLZXldIGRhdGFTb3VyY2VdOwotICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IFtbZGF0YVNvdXJjZSByZXF1ZXN0XSBjb3B5XTsKKyAgICBhdXRvIHJlcXVlc3QgPSBh
ZG9wdE5TKFtbZGF0YVNvdXJjZSByZXF1ZXN0XSBjb3B5XSk7CiAgICAgQVNTRVJUKHJlcXVlc3Qp
OwogCi0gICAgW3NlbGYgX29wZW5OZXdXaW5kb3dXaXRoUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBb
cmVxdWVzdCByZWxlYXNlXTsKKyAgICBbc2VsZiBfb3Blbk5ld1dpbmRvd1dpdGhSZXF1ZXN0OnJl
cXVlc3QuZ2V0KCldOwogfQogCiAtICh2b2lkKV9zZWFyY2hXaXRoR29vZ2xlRnJvbU1lbnU6KGlk
KXNlbmRlcgpAQCAtODY5MSwxMiArODY3MiwxMSBAQCAtICh2b2lkKV9zZWFyY2hXaXRoR29vZ2xl
RnJvbU1lbnU6KGlkKXNlbmRlcgogCiAgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05T
UGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aFVuaXF1ZU5hbWVdOwogICAgIFtwYXN0ZWJvYXJkIGRl
Y2xhcmVUeXBlczpAW1dlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldIG93bmVy
Om5pbF07Ci0gICAgTlNNdXRhYmxlU3RyaW5nICpzID0gW3NlbGVjdGVkU3RyaW5nIG11dGFibGVD
b3B5XTsKKyAgICBhdXRvIHMgPSBhZG9wdE5TKFtzZWxlY3RlZFN0cmluZyBtdXRhYmxlQ29weV0p
OwogICAgIGNvbnN0IHVuaWNoYXIgbm9uQnJlYWtpbmdTcGFjZUNoYXJhY3RlciA9IDB4QTA7CiAg
ICAgTlNTdHJpbmcgKm5vbkJyZWFraW5nU3BhY2VTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6Jm5vbkJyZWFraW5nU3BhY2VDaGFyYWN0ZXIgbGVuZ3RoOjFdOwogICAgIFtz
IHJlcGxhY2VPY2N1cnJlbmNlc09mU3RyaW5nOm5vbkJyZWFraW5nU3BhY2VTdHJpbmcgd2l0aFN0
cmluZzpAIiAiIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBbcyBsZW5ndGhdKV07Ci0g
ICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOnMgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQ
YXN0ZWJvYXJkVHlwZSgpXTsKLSAgICBbcyByZWxlYXNlXTsKKyAgICBbcGFzdGVib2FyZCBzZXRT
dHJpbmc6cy5nZXQoKSBmb3JUeXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCldOwogCiAgICAgLy8gRklYTUU6IHNlZW1zIGZyYWdpbGUgdG8gdXNlIHRoZSBzZXJ2aWNlIGJ5
IG5hbWUsIGJ1dCB0aGlzIGlzIHdoYXQgQXBwS2l0IGRvZXMKICAgICBOU1BlcmZvcm1TZXJ2aWNl
KEAiU2VhcmNoIFdpdGggR29vZ2xlIiwgcGFzdGVib2FyZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYldpbmRvd0FuaW1hdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tCmluZGV4IGFmYTdi
NTE0N2I5NWRiN2FkNGQ1NzdhNjkwOGU4ODA0OTA4OTRhZWQuLmUwMGM5ODhmYjQ1MTFlZDZlZTdj
YzFjZDQzNDU1NDMxYjZhYWQ4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1w
b3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbXBvcnQgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAKIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHNsb3dNb3Rpb25GYWN0b3IgPSAxMDsKIApAQCAt
MTc4LDkgKzE3OSw4IEBAIC0gKHZvaWQpc2V0Q3VycmVudFByb2dyZXNzOihOU0FuaW1hdGlvblBy
b2dyZXNzKXByb2dyZXNzCiAKIC0gKHZvaWQpc2V0U3ViQW5pbWF0aW9uOihOU0FuaW1hdGlvbiAq
KWFuaW1hdGlvbgogewotICAgIGlkIG9sZEFuaW1hdGlvbiA9IF9zdWJBbmltYXRpb247CisgICAg
YXV0byBvbGRBbmltYXRpb24gPSBhZG9wdE5TKF9zdWJBbmltYXRpb24pOwogICAgIF9zdWJBbmlt
YXRpb24gPSBbYW5pbWF0aW9uIHJldGFpbl07Ci0gICAgW29sZEFuaW1hdGlvbiByZWxlYXNlXTsK
IH0KIAogLSAoTlNUaW1lSW50ZXJ2YWwpYWRkaXRpb25hbER1cmF0aW9uTmVlZGVkVG9SZWFjaEZp
bmFsRnJhbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBiMTMxYmRlMmE0MjAyN2Y2M2VhYWYzMGQwYzBjNDU3YzY3NDkxMzhhLi4yMTY4YjNhYmQ2
YjI5YmY0NzRiNzk1MGNhMjk0ODVmNmZiZWE0ZTVkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMjEtMDItMTEgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQg
dXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE3ODAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMg
cmVsZWFzZV0gaW4gV2ViS2l0IGJ5IHVzaW5nIHNtYXJ0IHBvaW50ZXJzLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMu
bW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0
ZW5lcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRp
b25MaXN0ZW5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tOgorICAgICAgICAoY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAg
IChkZXN0cm95V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChkdW1wRnJhbWVB
c1BERik6CisgICAgICAgIChkdW1wQmFja0ZvcndhcmRMaXN0Rm9yV2ViVmlldyk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbToKKyAgICAg
ICAgKCtbRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkIF9wYXN0ZWJvYXJkV2l0aE5hbWU6XSk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06Cisg
ICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VEb3duOndpdGhNb2RpZmllcnM6
XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VVcDp3aXRoTW9kaWZp
ZXJzOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIG1vdXNlTW92ZVRvWDpZ
Ol0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIGtleURvd246d2l0aE1vZGlm
aWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIg
c2VudFRvdWNoRXZlbnRPZlR5cGU6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIgdG91Y2hFbmRdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciB0b3VjaENh
bmNlbF0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzpyZXNvdXJjZTp3
aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTpdKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RS
dW5uZXI6OmFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4pOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKFRlc3RS
dW5uZXI6OmNsZWFyQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmtlZXBX
ZWJIaXN0b3J5KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldERhdGFiYXNlUXVvdGEpOgorICAg
ICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKC1bQVBJVGVz
dERlbGVnYXRlSVBob25lIGluaXRXaXRoVGVzdFJ1bm5lcjp1dGY4RGF0YTpiYXNlVVJMOl0pOgor
ICAgICAgICAoLVtBUElUZXN0RGVsZWdhdGVJUGhvbmUgZGVhbGxvY10pOgorICAgICAgICAoLVtB
UElUZXN0RGVsZWdhdGVJUGhvbmUgcnVuXSk6CisgICAgICAgICgtW0FQSVRlc3REZWxlZ2F0ZUlQ
aG9uZSBfY2xlYW5VcF0pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YXBpVGVzdE5ld1dpbmRvd0Rh
dGFMb2FkQmFzZVVSTCk6CisgICAgICAgICgtW1N5bmNocm9ub3VzTG9hZGVyIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bU3luY2hyb25vdXNMb2FkZXIgY29ubmVjdGlvbjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6XSk6CisgICAgICAgICgrW1N5bmNocm9ub3VzTG9hZGVyIG1ha2VS
ZXF1ZXN0OndpdGhVc2VybmFtZTpwYXNzd29yZDpdKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFk
ZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVn
YXRlLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAg
ICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVl
c3RGcm9tT3JpZ2luOmZyYW1lOmxpc3RlbmVyOl0pOgorICAgICAgICAoLVtVSURlbGVnYXRlIHRp
bWVyRmlyZWRdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSBkZWFsbG9jXSk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dElPUy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZp
Y2F0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
ZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25M
aXN0ZW5lcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0
b3IubW06CisgICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIGludGVycG9sYXRlZEV2ZW50czpd
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW06
CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAg
IChXVFI6OlBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8u
bW06CisgICAgICAgICgtW1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8gZGVhbGxvY10pOgor
ICAgICAgICAoLVtXZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvIGRyYWdnZWRJbWFnZV0pOgor
ICAgICAgICAoLVtXZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvIGRyYWdnaW5nUGFzdGVib2Fy
ZF0pOgorICAgICAgICAoLVtXZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291
cmNlXSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBh
c3RlYm9hcmQubW06CisgICAgICAgICgrW1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkIF9wYXN0
ZWJvYXJkV2l0aE5hbWU6XSk6CisgICAgICAgICgtW0xvY2FsUGFzdGVib2FyZCBfYWRkVHlwZXNX
aXRob3V0VXBkYXRpbmdDaGFuZ2VDb3VudDpvd25lcjpdKToKKwogMjAyMS0wMi0xMSAgQWFrYXNo
IEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgYnVpbGQud2Via2l0Lm9y
ZyBzaG91bGQgZGlzcGxheSBjb21taXQgaWRlbnRpZmllciBpbiBidWlsZHMKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KaW5k
ZXggNjQ1ZmM4NjNjZWYxMGEwMGY1YmI0YjdkMTM5YzZlMGRjZTQwOGRlMS4uNDk4NDA5ZGIxYmEw
ZTY4MTdlZmNmNmQzMmZhNDE2N2YzNTJhZThjOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KQEAgLTEwNTAsNyArMTA1
MCw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVu
ZXIoSlNPYmplY3RSZWYgZnVuY3Rpb25DYWxsYmFjCiAgICAgLy8gT3RoZXIgcGxhdGZvcm1zIG1h
eSBiZSBkaWZmZXJlbnQuCiAgICAgaWYgKG1fbm90aWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IFtbQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXIgYWxsb2NdIGluaXRdOworCisgICAgbV9ub3RpZmljYXRpb25I
YW5kbGVyID0gYWRvcHROUyhbW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGFsbG9j
XSBpbml0XSk7CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzZXRQbGF0Zm9ybUVsZW1lbnQ6
cGxhdGZvcm1VSUVsZW1lbnQoKV07CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzZXRDYWxs
YmFjazpmdW5jdGlvbkNhbGxiYWNrXTsKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHN0YXJ0
T2JzZXJ2aW5nXTsKQEAgLTEwNjQsNyArMTA2NSw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQogICAgIEFTU0VSVChtX25vdGlmaWNh
dGlvbkhhbmRsZXIpOwogICAgIAogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc3RvcE9ic2Vy
dmluZ107Ci0gICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciByZWxlYXNlXTsKICAgICBtX25vdGlm
aWNhdGlvbkhhbmRsZXIgPSBuaWw7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggZTRhZmFjNjYyNTVlM2Vh
ODlkNmI0ZDkyMDFkMGQ4NTQ4ZDhkODkwNy4uOTY2ZjQ2NWJmYWIwNzdhZTgyY2VjYjdhMTcyMTRi
NDgyZDQ0MDRlOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE0ODAsNyArMTQ4MCw4IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNPYmplY3RSZWYgZnVu
Y3Rpb25DYWxsYmFjCiAgICAgLy8gT3RoZXIgcGxhdGZvcm1zIG1heSBiZSBkaWZmZXJlbnQuCiAg
ICAgaWYgKG1fbm90aWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IFtbQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRs
ZXIgYWxsb2NdIGluaXRdOworCisgICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gYWRvcHROUyhb
W0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW21f
bm90aWZpY2F0aW9uSGFuZGxlciBzZXRQbGF0Zm9ybUVsZW1lbnQ6cGxhdGZvcm1VSUVsZW1lbnQo
KV07CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzZXRDYWxsYmFjazpmdW5jdGlvbkNhbGxi
YWNrXTsKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHN0YXJ0T2JzZXJ2aW5nXTsKQEAgLTE0
OTQsNyArMTQ5NSw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZp
Y2F0aW9uTGlzdGVuZXIoKQogICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkhhbmRsZXIpOwogCiAg
ICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzdG9wT2JzZXJ2aW5nXTsKLSAgICBbbV9ub3RpZmlj
YXRpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IG5pbDsK
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDY0
MzY1NDVhYjhmOTg1NmVmMjJhZDdmYzE1NjFhYmU0NzBiOGJlZGQuLjM1YWJmMWJlNWVmZmU0NmE0
OTMwMTk0NzU3ZWFlNjE0N2Y0MWU4OWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0KQEAgLTczNSwyMSArNzM1LDE5IEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZp
ZXdBbmRPZmZzY3JlZW5XaW5kb3coKQogICAgIHVpV2luZG93UmVjdC5vcmlnaW4ueSArPSBbVUlB
cHAgc3RhdHVzQmFySGVpZ2h0XTsKICAgICBVSVdpbmRvdyAqdWlXaW5kb3cgPSBbW1tVSVdpbmRv
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTp1aVdpbmRvd1JlY3RdIGF1dG9yZWxlYXNlXTsKIAotICAg
IFVJVmlld0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyID0gW1tVSVZpZXdDb250cm9sbGVyIGFs
bG9jXSBpbml0XTsKLSAgICBbdWlXaW5kb3cgc2V0Um9vdFZpZXdDb250cm9sbGVyOnZpZXdDb250
cm9sbGVyXTsKLSAgICBbdmlld0NvbnRyb2xsZXIgcmVsZWFzZV07CisgICAgYXV0byB2aWV3Q29u
dHJvbGxlciA9IGFkb3B0TlMoW1tVSVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CisgICAg
W3VpV2luZG93IHNldFJvb3RWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlci5nZXQoKV07CiAK
ICAgICAvLyBUaGUgVUlXaW5kb3cgYW5kIFVJV2ViQnJvd3NlclZpZXcgYXJlIHJlbGVhc2VkIHdo
ZW4gdGhlIER1bXBSZW5kZXJUcmVlV2luZG93IGlzIGNsb3NlZC4KICAgICBkcnRXaW5kb3cudWlX
aW5kb3cgPSB1aVdpbmRvdzsKICAgICBkcnRXaW5kb3cuYnJvd3NlclZpZXcgPSB3ZWJCcm93c2Vy
VmlldzsKIAotICAgIER1bXBSZW5kZXJUcmVlV2ViU2Nyb2xsVmlldyAqc2Nyb2xsVmlldyA9IFtb
RHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmxheW91dFRl
c3RWaWV3cG9ydFJlY3RdOworICAgIGF1dG8gc2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tEdW1wUmVu
ZGVyVHJlZVdlYlNjcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6bGF5b3V0VGVzdFZpZXdw
b3J0UmVjdF0pOwogICAgIFtzY3JvbGxWaWV3IGFkZFN1YnZpZXc6d2ViQnJvd3NlclZpZXddOwog
Ci0gICAgW3ZpZXdDb250cm9sbGVyLnZpZXcgYWRkU3VidmlldzpzY3JvbGxWaWV3XTsKLSAgICBb
c2Nyb2xsVmlldyByZWxlYXNlXTsKKyAgICBbW3ZpZXdDb250cm9sbGVyIHZpZXddIGFkZFN1YnZp
ZXc6c2Nyb2xsVmlldy5nZXQoKV07CiAKLSAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0YW5kYXJk
Vmlld3BvcnQod2ViQnJvd3NlclZpZXcsIHNjcm9sbFZpZXcpOworICAgIGFkanVzdFdlYkRvY3Vt
ZW50Rm9yU3RhbmRhcmRWaWV3cG9ydCh3ZWJCcm93c2VyVmlldywgc2Nyb2xsVmlldy5nZXQoKSk7
CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNzkxLDkgKzc4OSw4IEBA
IHN0YXRpYyB2b2lkIGRlc3Ryb3lXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KFdlYlZpZXcgKndl
YlZpZXcpCiAKICAgICBbd2luZG93IGNsb3NlXTsgLy8gcmVsZWFzZXMgd2hlbiBjbG9zZWQKICNl
bHNlCi0gICAgVUlXaW5kb3cgKnVpV2luZG93ID0gW2dXZWJCcm93c2VyVmlldyB3aW5kb3ddOwor
ICAgIGF1dG8gdWlXaW5kb3cgPSBhZG9wdE5TKFtnV2ViQnJvd3NlclZpZXcgd2luZG93XSk7CiAg
ICAgW3VpV2luZG93IHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgIFt1aVdpbmRvdyByZWxlYXNl
XTsKICNlbmRpZgogCiAgICAgW3dlYlZpZXcgcmVsZWFzZV07CkBAIC0xNDU0LDE3ICsxNDUxLDE1
IEBAIHN0YXRpYyBOU0RhdGEgKmR1bXBGcmFtZUFzUERGKFdlYkZyYW1lICpmcmFtZSkKICAgICBb
cHJpbnRJbmZvRGljdCBzZXRPYmplY3Q6TlNQcmludFNhdmVKb2IgZm9yS2V5Ok5TUHJpbnRKb2JE
aXNwb3NpdGlvbl07CiAgICAgW3ByaW50SW5mb0RpY3Qgc2V0T2JqZWN0OnBhdGggZm9yS2V5Ok5T
UHJpbnRTYXZlUGF0aF07CiAKLSAgICBOU1ByaW50SW5mbyAqcHJpbnRJbmZvID0gW1tOU1ByaW50
SW5mbyBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OnByaW50SW5mb0RpY3RdOworICAgIGF1dG8g
cHJpbnRJbmZvID0gYWRvcHROUyhbW05TUHJpbnRJbmZvIGFsbG9jXSBpbml0V2l0aERpY3Rpb25h
cnk6cHJpbnRJbmZvRGljdF0pOwogICAgIFtwcmludEluZm8gc2V0SG9yaXpvbnRhbFBhZ2luYXRp
b246TlNBdXRvUGFnaW5hdGlvbl07CiAgICAgW3ByaW50SW5mbyBzZXRWZXJ0aWNhbFBhZ2luYXRp
b246TlNBdXRvUGFnaW5hdGlvbl07CiAgICAgW3ByaW50SW5mbyBzZXRWZXJ0aWNhbGx5Q2VudGVy
ZWQ6Tk9dOwogCi0gICAgTlNQcmludE9wZXJhdGlvbiAqcHJpbnRPcGVyYXRpb24gPSBbTlNQcmlu
dE9wZXJhdGlvbiBwcmludE9wZXJhdGlvbldpdGhWaWV3OltmcmFtZSBmcmFtZVZpZXddIHByaW50
SW5mbzpwcmludEluZm9dOworICAgIE5TUHJpbnRPcGVyYXRpb24gKnByaW50T3BlcmF0aW9uID0g
W05TUHJpbnRPcGVyYXRpb24gcHJpbnRPcGVyYXRpb25XaXRoVmlldzpbZnJhbWUgZnJhbWVWaWV3
XSBwcmludEluZm86cHJpbnRJbmZvLmdldCgpXTsKICAgICBbcHJpbnRPcGVyYXRpb24gc2V0U2hv
d1BhbmVsczpOT107CiAgICAgW3ByaW50T3BlcmF0aW9uIHJ1bk9wZXJhdGlvbl07CiAKLSAgICBb
cHJpbnRJbmZvIHJlbGVhc2VdOwotCiAgICAgTlNEYXRhICpwZGZEYXRhID0gW05TRGF0YSBkYXRh
V2l0aENvbnRlbnRzT2ZGaWxlOnBhdGhdOwogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gcmVtb3ZlRmlsZUF0UGF0aDpwYXRoIGhhbmRsZXI6bmlsXTsKIApAQCAtMTQ4MSw3ICsx
NDc2LDcgQEAgc3RhdGljIHZvaWQgZHVtcEJhY2tGb3J3YXJkTGlzdEZvcldlYlZpZXcoV2ViVmll
dyAqdmlldykKIAogICAgIC8vIFByaW50IG91dCBhbGwgaXRlbXMgaW4gdGhlIGxpc3QgYWZ0ZXIg
cHJldlRlc3RCRkl0ZW0sIHdoaWNoIHdhcyBmcm9tIHRoZSBwcmV2aW91cyB0ZXN0CiAgICAgLy8g
R2F0aGVyIGl0ZW1zIGZyb20gdGhlIGVuZCBvZiB0aGUgbGlzdCwgdGhlIHByaW50IHRoZW0gb3V0
IGZyb20gb2xkZXN0IHRvIG5ld2VzdAotICAgIE5TTXV0YWJsZUFycmF5ICppdGVtc1RvUHJpbnQg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIGl0ZW1zVG9QcmludCA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAoaW50IGkg
PSBbYmZMaXN0IGZvcndhcmRMaXN0Q291bnRdOyBpID4gMDsgaS0tKSB7CiAgICAgICAgIFdlYkhp
c3RvcnlJdGVtICppdGVtID0gW2JmTGlzdCBpdGVtQXRJbmRleDppXTsKICAgICAgICAgLy8gc29t
ZXRoaW5nIGlzIHdyb25nIGlmIHRoZSBpdGVtIGZyb20gdGhlIGxhc3QgdGVzdCBpcyBpbiB0aGUg
Zm9yd2FyZCBwYXJ0IG9mIHRoZSBiL2YgbGlzdApAQCAtMTUwMyw3ICsxNDk4LDYgQEAgc3RhdGlj
IHZvaWQgZHVtcEJhY2tGb3J3YXJkTGlzdEZvcldlYlZpZXcoV2ViVmlldyAqdmlldykKICAgICBm
b3IgKGludCBpID0gW2l0ZW1zVG9QcmludCBjb3VudF0tMTsgaSA+PSAwOyBpLS0pCiAgICAgICAg
IGR1bXBIaXN0b3J5SXRlbShbaXRlbXNUb1ByaW50IG9iamVjdEF0SW5kZXg6aV0sIDgsIGkgPT0g
Y3VycmVudEl0ZW1JbmRleCk7CiAKLSAgICBbaXRlbXNUb1ByaW50IHJlbGVhc2VdOwogICAgIHBy
aW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIp
OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWVQYXN0ZWJvYXJkLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
UGFzdGVib2FyZC5tbQppbmRleCA5ODA3NzM2ZjM4M2QyZWU3NjAwZmJlY2NlYzc0ZmVjZTQ4MmVh
ZGQ5Li40MTYyODg5MzUzMzVmNjM4ODZkNGIwYTU4Mzg0ZjU4NWZlZmQ3YjU5IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0K
QEAgLTY4LDEzICs2OCwxMSBAQCArIChOU1Bhc3RlYm9hcmQgKilfcGFzdGVib2FyZFdpdGhOYW1l
OihOU1N0cmluZyAqKW5hbWUKICAgICAgICAgbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiTG9jYWxQYXN0ZWJvYXJkJWQiLCArK251bWJlcl07CiAgICAgaWYgKCFsb2NhbFBhc3Rl
Ym9hcmRzKQogICAgICAgICBsb2NhbFBhc3RlYm9hcmRzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XTsKLSAgICBMb2NhbFBhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbbG9jYWxQ
YXN0ZWJvYXJkcyBvYmplY3RGb3JLZXk6bmFtZV07Ci0gICAgaWYgKHBhc3RlYm9hcmQpCisgICAg
aWYgKExvY2FsUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtsb2NhbFBhc3RlYm9hcmRzIG9iamVj
dEZvcktleTpuYW1lXSkKICAgICAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7Ci0gICAgcGFzdGVib2Fy
ZCA9IFtbTG9jYWxQYXN0ZWJvYXJkIGFsbG9jXSBpbml0V2l0aE5hbWU6bmFtZV07Ci0gICAgW2xv
Y2FsUGFzdGVib2FyZHMgc2V0T2JqZWN0OnBhc3RlYm9hcmQgZm9yS2V5Om5hbWVdOwotICAgIFtw
YXN0ZWJvYXJkIHJlbGVhc2VdOwotICAgIHJldHVybiBwYXN0ZWJvYXJkOworICAgIGF1dG8gcGFz
dGVib2FyZCA9IGFkb3B0TlMoW1tMb2NhbFBhc3RlYm9hcmQgYWxsb2NdIGluaXRXaXRoTmFtZTpu
YW1lXSk7CisgICAgW2xvY2FsUGFzdGVib2FyZHMgc2V0T2JqZWN0OnBhc3RlYm9hcmQuZ2V0KCkg
Zm9yS2V5Om5hbWVdOworICAgIHJldHVybiBwYXN0ZWJvYXJkLmdldCgpOwogfQogCiArICh2b2lk
KXJlbGVhc2VMb2NhbFBhc3RlYm9hcmRzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IDgyNzUxYmM1Yjc0MTcxNTVjZTViNTQ0
YWM4NzBhNmM5ZGQzZGIyMTMuLjdlZDlhOGRlYjU5Mjc4OTQ3M2ZhMTI5YTNiYzJlYmM4Y2EzYjdj
NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLm1tCkBAIC01ODQsNyArNTg0LDcgQEAgLSAodm9pZCltb3VzZURvd246KGludClidXR0
b25OdW1iZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0Kiltb2RpZmllcnMKICAgICAK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU0V2ZW50VHlwZSBldmVudFR5cGUgPSBl
dmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihidXR0b25OdW1iZXIsIE1vdXNlRG93bik7
Ci0gICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZXZlbnRU
eXBlCisgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5
cGU6ZXZlbnRUeXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9j
YXRpb246bGFzdE1vdXNlUG9zaXRpb24gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZGlmaWVyRmxhZ3M6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycykKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZl
bnRUaW1lXQpAQCAtNTkyLDIzICs1OTIsMjMgQEAgLSAodm9pZCltb3VzZURvd246KGludClidXR0
b25OdW1iZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0Kiltb2RpZmllcnMKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0Nv
bnRleHQgY3VycmVudENvbnRleHRdIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV2ZW50TnVtYmVyOisrZXZlbnROdW1iZXIgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsaWNrQ291bnQ6Y2xpY2tDb3VudCAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcmVzc3VyZTowLjBdOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByZXNzdXJlOjAuMF0pOwogI2Vsc2UKLSAgICBXZWJFdmVudCAq
ZXZlbnQgPSBbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aE1vdXNlRXZlbnRUeXBlOldlYkV2ZW50
TW91c2VEb3duCisgICAgYXV0byBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5p
dFdpdGhNb3VzZUV2ZW50VHlwZTpXZWJFdmVudE1vdXNlRG93bgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lU3RhbXA6W3NlbGYgY3VycmVu
dEV2ZW50VGltZV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2F0aW9uOmxhc3RNb3VzZVBvc2l0aW9uXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOmxhc3RNb3VzZVBv
c2l0aW9uXSk7CiAjZW5kaWYKIAogICAgIE5TVmlldyAqc3ViVmlldyA9IFtbbWFpbkZyYW1lIHdl
YlZpZXddIGhpdFRlc3Q6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKICAgICBpZiAoc3ViVmll
dykgewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBbTlNBcHAgX3NldEN1cnJl
bnRFdmVudDpldmVudF07CisgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50Lmdl
dCgpXTsKICNlbmRpZgogICAgICAgICB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
ICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gZXZlbnRQcmVz
c2VkTW91c2VCdXR0b25zU3dpenpsZXJGb3JWaWV3QW5kRXZlbnQoc3ViVmlldywgZXZlbnQpOwor
ICAgICAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IGV2ZW50
UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KHN1YlZpZXcsIGV2ZW50
LmdldCgpKTsKICNlbmRpZgotICAgICAgICAgICAgW3N1YlZpZXcgbW91c2VEb3duOmV2ZW50XTsK
KyAgICAgICAgICAgIFtzdWJWaWV3IG1vdXNlRG93bjpldmVudC5nZXQoKV07CiAgICAgICAgIH0K
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZl
bnQ6bmlsXTsKQEAgLTYxNiwxMCArNjE2LDYgQEAgLSAodm9pZCltb3VzZURvd246KGludClidXR0
b25OdW1iZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0Kiltb2RpZmllcnMKICAgICAg
ICAgaWYgKGJ1dHRvbk51bWJlciA9PSBMZWZ0TW91c2VCdXR0b24pCiAgICAgICAgICAgICBsZWZ0
TW91c2VCdXR0b25Eb3duID0gWUVTOwogICAgIH0KLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgW2V2ZW50IHJlbGVhc2VdOwotI2VuZGlmCiB9CiAKIC0gKHZvaWQpbW91c2VEb3duOihp
bnQpYnV0dG9uTnVtYmVyCkBAIC02NzYsNyArNjcyLDcgQEAgLSAodm9pZCltb3VzZVVwOihpbnQp
YnV0dG9uTnVtYmVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCopbW9kaWZpZXJzCiAg
ICAgW1tbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGV2ZW50VHlw
ZUZvck1vdXNlQnV0dG9uQW5kQWN0aW9uKGJ1dHRvbk51bWJlciwgTW91c2VVcCk7Ci0gICAgTlNF
dmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBlCisgICAg
YXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZXZlbnRU
eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246bGFz
dE1vdXNlUG9zaXRpb24gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlm
aWVyRmxhZ3M6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycykKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQpA
QCAtNjg0LDExICs2ODAsMTEgQEAgLSAodm9pZCltb3VzZVVwOihpbnQpYnV0dG9uTnVtYmVyIHdp
dGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCopbW9kaWZpZXJzCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJl
bnRDb250ZXh0XSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudE51
bWJlcjorK2V2ZW50TnVtYmVyIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGlja0NvdW50OmNsaWNrQ291bnQgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJlc3N1cmU6MC4wXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcmVzc3VyZTowLjBdKTsKICNlbHNlCi0gICAgV2ViRXZlbnQgKmV2ZW50ID0gW1tX
ZWJFdmVudCBhbGxvY10gaW5pdFdpdGhNb3VzZUV2ZW50VHlwZTpXZWJFdmVudE1vdXNlVXAKKyAg
ICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aE1vdXNlRXZl
bnRUeXBlOldlYkV2ZW50TW91c2VVcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0
aW9uOmxhc3RNb3VzZVBvc2l0aW9uXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOmxhc3RNb3VzZVBvc2l0aW9uXSk7CiAjZW5k
aWYKIAogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IFtbbWFpbkZyYW1lIHdlYlZpZXddIGhpdFRl
c3Q6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKQEAgLTY5OCwxMyArNjk0LDEzIEBAIC0gKHZv
aWQpbW91c2VVcDooaW50KWJ1dHRvbk51bWJlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmpl
Y3QqKW1vZGlmaWVycwogICAgIHRhcmdldFZpZXcgPSB0YXJnZXRWaWV3ID8gdGFyZ2V0VmlldyA6
IFtbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKICAgICBhc3NlcnQodGFyZ2V0
Vmlldyk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW05TQXBwIF9zZXRDdXJyZW50
RXZlbnQ6ZXZlbnRdOworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50LmdldCgpXTsK
ICNlbmRpZgogICAgIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgYXV0byBl
dmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9u
c1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KHRhcmdldFZpZXcsIGV2ZW50KTsKKyAgICAgICAgYXV0
byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IGV2ZW50UHJlc3NlZE1vdXNlQnV0
dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KHRhcmdldFZpZXcsIGV2ZW50LmdldCgpKTsKICNl
bmRpZgotICAgICAgICBbdGFyZ2V0VmlldyBtb3VzZVVwOmV2ZW50XTsKKyAgICAgICAgW3Rhcmdl
dFZpZXcgbW91c2VVcDpldmVudC5nZXQoKV07CiAgICAgfQogI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CkBAIC03MzAsMTAgKzcyNiw2
IEBAIC0gKHZvaWQpbW91c2VVcDooaW50KWJ1dHRvbk51bWJlciB3aXRoTW9kaWZpZXJzOihXZWJT
Y3JpcHRPYmplY3QqKW1vZGlmaWVycwogICAgICAgICBkcmFnZ2luZ0luZm8gPSBuaWw7CiAgICAg
fQogI2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtldmVudCByZWxlYXNl
XTsKLSNlbmRpZgogfQogCiAtICh2b2lkKW1vdXNlVXA6KGludClidXR0b25OdW1iZXIKQEAgLTc1
Nyw3ICs3NDksNyBAQCAtICh2b2lkKW1vdXNlTW92ZVRvWDooaW50KXggWTooaW50KXkKICAgICBO
U1ZpZXcgKnZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwogI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIE5TUG9pbnQgbmV3TW91c2VQb3NpdGlvbiA9IFt2aWV3IGNvbnZlcnRQb2ludDpO
U01ha2VQb2ludCh4LCBbdmlldyBmcmFtZV0uc2l6ZS5oZWlnaHQgLSB5KSB0b1ZpZXc6bmlsXTsK
LSAgICBOU0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZToobGVmdE1v
dXNlQnV0dG9uRG93biA/IE5TRXZlbnRUeXBlTGVmdE1vdXNlRHJhZ2dlZCA6IE5TRXZlbnRUeXBl
TW91c2VNb3ZlZCkKKyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IG1vdXNlRXZl
bnRXaXRoVHlwZToobGVmdE1vdXNlQnV0dG9uRG93biA/IE5TRXZlbnRUeXBlTGVmdE1vdXNlRHJh
Z2dlZCA6IE5TRXZlbnRUeXBlTW91c2VNb3ZlZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2NhdGlvbjpuZXdNb3VzZVBvc2l0aW9uCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6MCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQpAQCAt
NzY1LDIzICs3NTcsMjMgQEAgLSAodm9pZCltb3VzZU1vdmVUb1g6KGludCl4IFk6KGludCl5CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhp
Y3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBldmVudE51bWJlcjorK2V2ZW50TnVtYmVyIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbGlja0NvdW50OihsZWZ0TW91c2VCdXR0b25Eb3duID8gY2xpY2tD
b3VudCA6IDApIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNz
dXJlOjAuMF07Ci0gICAgQ0dFdmVudFJlZiBjZ0V2ZW50ID0gZXZlbnQuQ0dFdmVudDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzc3VyZTowLjBdKTsKKyAgICBD
R0V2ZW50UmVmIGNnRXZlbnQgPSBbZXZlbnQgQ0dFdmVudF07CiAgICAgQ0dFdmVudFNldEludGVn
ZXJWYWx1ZUZpZWxkKGNnRXZlbnQsIGtDR01vdXNlRXZlbnREZWx0YVgsIG5ld01vdXNlUG9zaXRp
b24ueCAtIGxhc3RNb3VzZVBvc2l0aW9uLngpOwogICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVG
aWVsZChjZ0V2ZW50LCBrQ0dNb3VzZUV2ZW50RGVsdGFZLCBuZXdNb3VzZVBvc2l0aW9uLnkgLSBs
YXN0TW91c2VQb3NpdGlvbi55KTsKLSAgICBldmVudCA9IFtOU0V2ZW50IGV2ZW50V2l0aENHRXZl
bnQ6Y2dFdmVudF07CisgICAgZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQgZXZlbnRXaXRoQ0dF
dmVudDpjZ0V2ZW50XSk7CiAgICAgbGFzdE1vdXNlUG9zaXRpb24gPSBuZXdNb3VzZVBvc2l0aW9u
OwogI2Vsc2UKICAgICBsYXN0TW91c2VQb3NpdGlvbiA9IFt2aWV3IGNvbnZlcnRQb2ludDpOU01h
a2VQb2ludCh4LCB5KSB0b1ZpZXc6bmlsXTsKLSAgICBXZWJFdmVudCAqZXZlbnQgPSBbW1dlYkV2
ZW50IGFsbG9jXSBpbml0V2l0aE1vdXNlRXZlbnRUeXBlOldlYkV2ZW50TW91c2VNb3ZlZAorICAg
IGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoTW91c2VFdmVu
dFR5cGU6V2ViRXZlbnRNb3VzZU1vdmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9j
YXRpb246bGFzdE1vdXNlUG9zaXRpb25dOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246bGFzdE1vdXNlUG9zaXRpb25dKTsKICNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogICAgIE5TVmlldyAqc3ViVmlldyA9IFtb
bWFpbkZyYW1lIHdlYlZpZXddIGhpdFRlc3Q6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKICAg
ICBpZiAoc3ViVmlldykgewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBbTlNB
cHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CisgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2
ZW50OmV2ZW50LmdldCgpXTsKICNlbmRpZgogICAgICAgICBpZiAobGVmdE1vdXNlQnV0dG9uRG93
bikgewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNzkyLDI1ICs3ODQsMjEgQEAgLSAo
dm9pZCltb3VzZU1vdmVUb1g6KGludCl4IFk6KGludCl5CiAgICAgICAgICAgICAgICAgW1ttYWlu
RnJhbWUgd2ViVmlld10gZHJhZ2dpbmdVcGRhdGVkOmRyYWdnaW5nSW5mb107CiAgICAgICAgICAg
ICB9IGVsc2UgewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAgICAgICAgIGF1
dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBldmVudFByZXNzZWRNb3VzZUJ1
dHRvbnNTd2l6emxlckZvclZpZXdBbmRFdmVudChzdWJWaWV3LCBldmVudCk7CisgICAgICAgICAg
ICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IGV2ZW50UHJlc3Nl
ZE1vdXNlQnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KHN1YlZpZXcsIGV2ZW50LmdldCgp
KTsKICNlbmRpZgotICAgICAgICAgICAgICAgIFtzdWJWaWV3IG1vdXNlRHJhZ2dlZDpldmVudF07
CisgICAgICAgICAgICAgICAgW3N1YlZpZXcgbW91c2VEcmFnZ2VkOmV2ZW50LmdldCgpXTsKICAg
ICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICB9IGVsc2UgewogI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgICAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxl
ciA9IGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KHN1YlZp
ZXcsIGV2ZW50KTsKKyAgICAgICAgICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dp
enpsZXIgPSBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlckZvclZpZXdBbmRFdmVudChz
dWJWaWV3LCBldmVudC5nZXQoKSk7CiAjZW5kaWYKLSAgICAgICAgICAgIFtzdWJWaWV3IG1vdXNl
TW92ZWQ6ZXZlbnRdOworICAgICAgICAgICAgW3N1YlZpZXcgbW91c2VNb3ZlZDpldmVudC5nZXQo
KV07CiAgICAgICAgIH0KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgW05TQXBw
IF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKICNlbmRpZgogICAgIH0KLQotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgW2V2ZW50IHJlbGVhc2VdOwotI2VuZGlmCiB9CiAKIC0gKHZvaWQpbW91
c2VTY3JvbGxCeVg6KGludCl4IGFuZFk6KGludCl5IGNvbnRpbnVvdXNseTooQk9PTCljb250aW51
b3VzbHkKQEAgLTExNjcsNyArMTE1NSw3IEBAIC0gKHZvaWQpa2V5RG93bjooTlNTdHJpbmcgKilj
aGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzCiAgICAg
W1tbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogCiAjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVu
dFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIo
W05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleURvd24KICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKICAgICAgICAgICAgICAgICAgICAg
ICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQpAQCAtMTE3NiwyMSArMTE2NCwy
MSBAQCAtICh2b2lkKWtleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6
KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycwogICAgICAgICAgICAgICAgICAgICAgICAgY2hh
cmFjdGVyczpldmVudENoYXJhY3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwogICAgICAgICAg
ICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlD
b2RlOmtleUNvZGVdOworICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7
CiAjZWxzZQotICAgIFdlYkV2ZW50ICpldmVudCA9IFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRo
S2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50
VGltZV0gY2hhcmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncylt
b2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJI
aW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleToo
W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXTsKKyAgICBhdXRvIGV2ZW50
ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVu
dEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6ZXZl
bnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJGbGFncyBpc1JlcGVh
dGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hh
cmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVy
QXRJbmRleDowXSA9PSAnXHQnKV0pOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CisgICAgW05TQXBwIF9zZXRD
dXJyZW50RXZlbnQ6ZXZlbnQuZ2V0KCldOwogI2VuZGlmCi0gICAgW1tbW21haW5GcmFtZSB3ZWJW
aWV3XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBrZXlEb3duOmV2ZW50XTsKKyAgICBbW1tbbWFp
bkZyYW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnQuZ2V0
KCldOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2
ZW50Om5pbF07CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGV2ZW50
ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCisgICAgZXZlbnQg
PSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCiAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQogICAgICAg
ICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCiAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KQEAgLTExOTks
MjMgKzExODcsMTggQEAgLSAodm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRo
TW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTwotICAgICAgICAgICAgICAgICAg
ICAgICAga2V5Q29kZTprZXlDb2RlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6
a2V5Q29kZV0pOwogI2Vsc2UKLSAgICBbZXZlbnQgcmVsZWFzZV07Ci0gICAgZXZlbnQgPSBbW1dl
YkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFt
cDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyIGNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgbW9kaWZp
ZXJzOihXZWJFdmVudEZsYWdzKW1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdz
OjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJB
dEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0
JyldOworICAgIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2
ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBj
aGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdzKW1vZGlmaWVy
RmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmls
IGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFj
dGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKICNlbmRpZgogCiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOworICAg
IFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50LmdldCgpXTsKICNlbmRpZgotICAgIFtbW1tt
YWluRnJhbWUgd2ViVmlld10gd2luZG93XSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnRdOwor
ICAgIFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6
ZXZlbnQuZ2V0KCldOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtOU0FwcCBfc2V0
Q3VycmVudEV2ZW50Om5pbF07CiAjZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgW2V2ZW50IHJlbGVhc2VdOwotI2VuZGlmCiB9CiAKIC0gKHZvaWQpa2V5RG93bldyYXBwZXI6
KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1v
ZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KQEAgLTE0OTQsOSAr
MTQ3Nyw5IEBAIC0gKHZvaWQpc2V0VG91Y2hNb2RpZmllcjooTlNTdHJpbmcqKW1vZGlmaWVyTmFt
ZSB2YWx1ZTooQk9PTClmbGFnCiAKIC0gKHZvaWQpc2VudFRvdWNoRXZlbnRPZlR5cGU6KFdlYkV2
ZW50VHlwZSl0eXBlCiB7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKnRvdWNoTG9jYXRpb25zID0gW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpbdG91Y2hlcyBjb3VudF1dOwot
ICAgIE5TTXV0YWJsZUFycmF5ICp0b3VjaElkZW50aWZpZXJzID0gW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eTpbdG91Y2hlcyBjb3VudF1dOwotICAgIE5TTXV0YWJsZUFy
cmF5ICp0b3VjaFBoYXNlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNp
dHk6W3RvdWNoZXMgY291bnRdXTsKKyAgICBhdXRvIHRvdWNoTG9jYXRpb25zID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Olt0b3VjaGVzIGNvdW50XV0p
OworICAgIGF1dG8gdG91Y2hJZGVudGlmaWVycyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eTpbdG91Y2hlcyBjb3VudF1dKTsKKyAgICBhdXRvIHRvdWNo
UGhhc2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
Olt0b3VjaGVzIGNvdW50XV0pOwogICAgIAogICAgIENHUG9pbnQgY2VudHJvaWQgPSBDR1BvaW50
WmVybzsKICAgICBOU1VJbnRlZ2VyIHRvdWNoZXNEb3duQ291bnQgPSAwOwpAQCAtMTUyMCwyNSAr
MTUwMywyMCBAQCAtICh2b2lkKXNlbnRUb3VjaEV2ZW50T2ZUeXBlOihXZWJFdmVudFR5cGUpdHlw
ZQogICAgIGVsc2UKICAgICAgICAgY2VudHJvaWQgPSBDR1BvaW50WmVybzsKIAotICAgIFdlYkV2
ZW50ICpldmVudCA9IFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoVG91Y2hFdmVudFR5cGU6dHlw
ZQorICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoVG91
Y2hFdmVudFR5cGU6dHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOmNlbnRyb2lkCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdzKW5leHRFdmVudEZs
YWdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hDb3VudDpb
dG91Y2hlcyBjb3VudF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b3VjaExvY2F0aW9uczp0b3VjaExvY2F0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRvdWNoSWRlbnRpZmllcnM6dG91Y2hJZGVudGlmaWVycwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNoUGhhc2VzOnRvdWNoUGhhc2VzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hMb2NhdGlvbnM6dG91
Y2hMb2NhdGlvbnMuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0b3VjaElkZW50aWZpZXJzOnRvdWNoSWRlbnRpZmllcnMuZ2V0KCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0b3VjaFBoYXNlczp0b3VjaFBoYXNlcy5nZXQoKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzR2VzdHVyZToodG91Y2hl
c0Rvd25Db3VudCA+IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VzdHVyZVNjYWxlOjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZXN0dXJlUm90YXRpb246MF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2VzdHVyZVJvdGF0aW9uOjBdKTsKICAgICAvLyBFbnN1cmUgdGhhdCBsYXlvdXQgaXMgdXAt
dG8tZGF0ZSBzbyB0aGF0IGhpdC10ZXN0aW5nIHRocm91Z2ggV0FLVmlld3Mgd29ya3MgY29ycmVj
dGx5LgogICAgIFttYWluRnJhbWUgdXBkYXRlTGF5b3V0XTsKLSAgICBbW1ttYWluRnJhbWUgd2Vi
Vmlld10gd2luZG93XSBzZW5kRXZlbnRTeW5jaHJvbm91c2x5OmV2ZW50XTsKLSAgICBbZXZlbnQg
cmVsZWFzZV07Ci0gICAgCi0gICAgW3RvdWNoTG9jYXRpb25zIHJlbGVhc2VdOwotICAgIFt0b3Vj
aElkZW50aWZpZXJzIHJlbGVhc2VdOwotICAgIFt0b3VjaFBoYXNlcyByZWxlYXNlXTsKKyAgICBb
W1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBzZW5kRXZlbnRTeW5jaHJvbm91c2x5OmV2ZW50
LmdldCgpXTsKICAgICAKICAgICBuZXh0RXZlbnRGbGFncyA9IDA7CiB9CkBAIC0xNTU3LDI4ICsx
NTM1LDI2IEBAIC0gKHZvaWQpdG91Y2hFbmQKIHsKICAgICBbc2VsZiBzZW50VG91Y2hFdmVudE9m
VHlwZTpXZWJFdmVudFRvdWNoRW5kXTsKIAotICAgIE5TTXV0YWJsZUFycmF5ICp0b3VjaGVzVG9S
ZW1vdmUgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHRvdWNoZXNU
b1JlbW92ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZv
ciAoU3ludGhldGljVG91Y2ggKmN1cnJUb3VjaCBpbiB0b3VjaGVzKSB7CiAgICAgICAgIGlmIChj
dXJyVG91Y2gucGhhc2UgPT0gVUlUb3VjaFBoYXNlRW5kZWQpCiAgICAgICAgICAgICBbdG91Y2hl
c1RvUmVtb3ZlIGFkZE9iamVjdDpjdXJyVG91Y2hdOwogICAgIH0KIAotICAgIFt0b3VjaGVzIHJl
bW92ZU9iamVjdHNJbkFycmF5OnRvdWNoZXNUb1JlbW92ZV07Ci0gICAgW3RvdWNoZXNUb1JlbW92
ZSByZWxlYXNlXTsKKyAgICBbdG91Y2hlcyByZW1vdmVPYmplY3RzSW5BcnJheTp0b3VjaGVzVG9S
ZW1vdmUuZ2V0KCldOwogfQogCiAtICh2b2lkKXRvdWNoQ2FuY2VsCiB7CiAgICAgW3NlbGYgc2Vu
dFRvdWNoRXZlbnRPZlR5cGU6V2ViRXZlbnRUb3VjaENhbmNlbF07CiAKLSAgICBOU011dGFibGVB
cnJheSAqdG91Y2hlc1RvUmVtb3ZlID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Cisg
ICAgYXV0byB0b3VjaGVzVG9SZW1vdmUgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdKTsKICAgICBmb3IgKFN5bnRoZXRpY1RvdWNoICpjdXJyVG91Y2ggaW4gdG91Y2hlcykg
ewogICAgICAgICBpZiAoY3VyclRvdWNoLnBoYXNlID09IFVJVG91Y2hQaGFzZUNhbmNlbGxlZCkK
ICAgICAgICAgICAgIFt0b3VjaGVzVG9SZW1vdmUgYWRkT2JqZWN0OmN1cnJUb3VjaF07CiAgICAg
fQogCi0gICAgW3RvdWNoZXMgcmVtb3ZlT2JqZWN0c0luQXJyYXk6dG91Y2hlc1RvUmVtb3ZlXTsK
LSAgICBbdG91Y2hlc1RvUmVtb3ZlIHJlbGVhc2VdOworICAgIFt0b3VjaGVzIHJlbW92ZU9iamVj
dHNJbkFycmF5OnRvdWNoZXNUb1JlbW92ZS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IDVkZjEx
Njk2ODE3MDM2MGU0YTVjNzNkMTMzNzg3ZmYyOGE1M2I1OTUuLmUyNDlhYmYwZGY1Mzg0YWY5M2Q2
YjdhMGE3YWE5YmJkMDMyYTg2ZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTE3OCw5ICsxNzgsOCBAQCAtKE5TVVJMUmVxdWVz
dCAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcmVzb3VyY2U6aWRlbnRpZmllciB3aWxsU2VuZFJl
cXVlc3Q6IChOUwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5ld1JlcXVlc3QgPSBbcmVxdWVz
dCBtdXRhYmxlQ29weV07CiAgICAgY29uc3Qgc2V0PHN0cmluZz4mIGNsZWFySGVhZGVycyA9IGdU
ZXN0UnVubmVyLT53aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMoKTsKICAgICBmb3IgKHNldDxz
dHJpbmc+Ojpjb25zdF9pdGVyYXRvciBoZWFkZXIgPSBjbGVhckhlYWRlcnMuYmVnaW4oKTsgaGVh
ZGVyICE9IGNsZWFySGVhZGVycy5lbmQoKTsgKytoZWFkZXIpIHsKLSAgICAgICAgTlNTdHJpbmcg
Km5zSGVhZGVyID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhVVEY4U3RyaW5nOmhlYWRlci0+
Y19zdHIoKV07Ci0gICAgICAgIFtuZXdSZXF1ZXN0IHNldFZhbHVlOm5pbCBmb3JIVFRQSGVhZGVy
RmllbGQ6bnNIZWFkZXJdOwotICAgICAgICBbbnNIZWFkZXIgcmVsZWFzZV07CisgICAgICAgIGF1
dG8gbnNIZWFkZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmlu
ZzpoZWFkZXItPmNfc3RyKCldKTsKKyAgICAgICAgW25ld1JlcXVlc3Qgc2V0VmFsdWU6bmlsIGZv
ckhUVFBIZWFkZXJGaWVsZDpuc0hlYWRlci5nZXQoKV07CiAgICAgfQogICAgIGlmIChhdXRvKiBk
ZXN0aW5hdGlvbiA9IGdUZXN0UnVubmVyLT5yZWRpcmVjdGlvbkRlc3RpbmF0aW9uRm9yVVJMKFtb
dXJsIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSkpCiAgICAgICAgIFtuZXdSZXF1ZXN0IHNl
dFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6
ZGVzdGluYXRpb25dXV07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVz
dFJ1bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CmluZGV4IDg0NTA5ZTBlYjBhMTBhY2VjZDIxZmNiNWNiZDc5ODE0NjU0OTI4N2YuLmRjMDRjODdi
NTc5OGExYTIzYjY1NDc1OTJjMmY0NGI5ZjBiZWRiNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9UZXN0UnVubmVyTWFjLm1tCkBAIC0xNTgsMjAgKzE1OCwxNyBAQCB2b2lkIFRlc3RSdW5u
ZXI6OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKQogCiBsb25nIGxvbmcgVGVzdFJ1bm5lcjo6
YXBwbGljYXRpb25DYWNoZURpc2tVc2FnZUZvck9yaWdpbihKU1N0cmluZ1JlZiB1cmwpCiB7Ci0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7Ci0gICAgV2ViU2VjdXJpdHlPcmlnaW4g
Km9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKXVybENGLmdldCgpXV07Ci0gICAgbG9u
ZyBsb25nIHVzYWdlID0gW1dlYkFwcGxpY2F0aW9uQ2FjaGUgZGlza1VzYWdlRm9yT3JpZ2luOm9y
aWdpbl07Ci0gICAgW29yaWdpbiByZWxlYXNlXTsKKyAgICBhdXRvIHVybENGID0gYWRvcHRDRihK
U1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwpKTsKKyAgICBhdXRv
IG9yaWdpbiA9IGFkb3B0TlMoW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXSk7
CisgICAgbG9uZyBsb25nIHVzYWdlID0gW1dlYkFwcGxpY2F0aW9uQ2FjaGUgZGlza1VzYWdlRm9y
T3JpZ2luOm9yaWdpbi5nZXQoKV07CiAgICAgcmV0dXJuIHVzYWdlOwogfQogCiB2b2lkIFRlc3RS
dW5uZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihKU1N0cmluZ1JlZiB1cmwpCiB7
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5
Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7Ci0KLSAgICBXZWJTZWN1cml0eU9y
aWdpbiAqb3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXTsKLSAg
ICBbV2ViQXBwbGljYXRpb25DYWNoZSBkZWxldGVDYWNoZUZvck9yaWdpbjpvcmlnaW5dOwotICAg
IFtvcmlnaW4gcmVsZWFzZV07CisgICAgYXV0byB1cmxDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5
Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7CisgICAgYXV0byBvcmlnaW4gPSBh
ZG9wdE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKXVybENGLmdldCgpXV0pOworICAgIFtXZWJB
cHBsaWNhdGlvbkNhY2hlIGRlbGV0ZUNhY2hlRm9yT3JpZ2luOm9yaWdpbi5nZXQoKV07CiB9CiAK
IHN0YXRpYyBKU09iamVjdFJlZiBvcmlnaW5zQXJyYXlUb0pTKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBOU0FycmF5ICpvcmlnaW5zKQpAQCAtMjE5LDE2ICsyMTYsMTUgQEAgdm9pZCBUZXN0UnVubmVy
OjpjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMoKQogdm9pZCBUZXN0UnVubmVyOjpjbGVh
ckJhY2tGb3J3YXJkTGlzdCgpCiB7CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0ICpiYWNrRm9yd2Fy
ZExpc3QgPSBbW21haW5GcmFtZSB3ZWJWaWV3XSBiYWNrRm9yd2FyZExpc3RdOwotICAgIFdlYkhp
c3RvcnlJdGVtICppdGVtID0gW1tiYWNrRm9yd2FyZExpc3QgY3VycmVudEl0ZW1dIHJldGFpbl07
CisgICAgYXV0byBpdGVtID0gcmV0YWluUHRyKFtiYWNrRm9yd2FyZExpc3QgY3VycmVudEl0ZW1d
KTsKIAogICAgIC8vIFdlIGNsZWFyIHRoZSBoaXN0b3J5IGJ5IHNldHRpbmcgdGhlIGJhY2svZm9y
d2FyZCBsaXN0J3MgY2FwYWNpdHkgdG8gMAogICAgIC8vIHRoZW4gcmVzdG9yaW5nIGl0IGJhY2sg
YW5kIGFkZGluZyBiYWNrIHRoZSBjdXJyZW50IGl0ZW0uCiAgICAgaW50IGNhcGFjaXR5ID0gW2Jh
Y2tGb3J3YXJkTGlzdCBjYXBhY2l0eV07CiAgICAgW2JhY2tGb3J3YXJkTGlzdCBzZXRDYXBhY2l0
eTowXTsKICAgICBbYmFja0ZvcndhcmRMaXN0IHNldENhcGFjaXR5OmNhcGFjaXR5XTsKLSAgICBb
YmFja0ZvcndhcmRMaXN0IGFkZEl0ZW06aXRlbV07Ci0gICAgW2JhY2tGb3J3YXJkTGlzdCBnb1Rv
SXRlbTppdGVtXTsKLSAgICBbaXRlbSByZWxlYXNlXTsKKyAgICBbYmFja0ZvcndhcmRMaXN0IGFk
ZEl0ZW06aXRlbS5nZXQoKV07CisgICAgW2JhY2tGb3J3YXJkTGlzdCBnb1RvSXRlbTppdGVtLmdl
dCgpXTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6OmNvcHlEZWNv
ZGVkSG9zdE5hbWUoSlNTdHJpbmdSZWYgbmFtZSkKQEAgLTI1NywxMSArMjUzLDggQEAgdm9pZCBU
ZXN0UnVubmVyOjpkaXNwbGF5QW5kVHJhY2tSZXBhaW50cygpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6
a2VlcFdlYkhpc3RvcnkoKQogewotICAgIGlmICghW1dlYkhpc3Rvcnkgb3B0aW9uYWxTaGFyZWRI
aXN0b3J5XSkgewotICAgICAgICBXZWJIaXN0b3J5ICpoaXN0b3J5ID0gW1tXZWJIaXN0b3J5IGFs
bG9jXSBpbml0XTsKLSAgICAgICAgW1dlYkhpc3Rvcnkgc2V0T3B0aW9uYWxTaGFyZWRIaXN0b3J5
Omhpc3RvcnldOwotICAgICAgICBbaGlzdG9yeSByZWxlYXNlXTsKLSAgICB9CisgICAgaWYgKCFb
V2ViSGlzdG9yeSBvcHRpb25hbFNoYXJlZEhpc3RvcnldKQorICAgICAgICBbV2ViSGlzdG9yeSBz
ZXRPcHRpb25hbFNoYXJlZEhpc3Rvcnk6YWRvcHROUyhbW1dlYkhpc3RvcnkgYWxsb2NdIGluaXRd
KS5nZXQoKV07CiB9CiAKIGludCBUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0cygpCkBAIC00MTcsOSArNDEwLDggQEAgdm9pZCBUZXN0UnVubmVy
OjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3Np
dmUpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0RGF0YWJhc2VRdW90YSh1bnNpZ25lZCBsb25nIGxv
bmcgcXVvdGEpCiB7ICAgIAotICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBbW1dlYlNl
Y3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZp
bGU6Ly8vIl1dOworICAgIGF1dG8gb3JpZ2luID0gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3JpZ2lu
IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZpbGU6Ly8vIl1dKTsK
ICAgICBbW29yaWdpbiBkYXRhYmFzZVF1b3RhTWFuYWdlcl0gc2V0UXVvdGE6cXVvdGFdOwotICAg
IFtvcmlnaW4gcmVsZWFzZV07CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6Z29CYWNrKCkKQEAgLTQ0
MywxNyArNDM1LDE2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9u
KGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvCiAgICAgLy8gRHVtcFJlbmRl
clRyZWUgY29uZmlndXJlZCB0aGUgV2ViVmlldyB0byB1c2UgV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlck1vY2suCiAgICAgaWQ8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcj4gcHJvdmlk
ZXIgPSBbW21haW5GcmFtZSB3ZWJWaWV3XSBfZGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcl07CiAg
ICAgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sgKm1vY2tQcm92aWRlciA9IHN0YXRp
Y19jYXN0PFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrKj4ocHJvdmlkZXIpOwotICAg
IFdlYkRldmljZU9yaWVudGF0aW9uICpvcmllbnRhdGlvbiA9IFtbV2ViRGV2aWNlT3JpZW50YXRp
b24gYWxsb2NdIGluaXRXaXRoQ2FuUHJvdmlkZUFscGhhOmNhblByb3ZpZGVBbHBoYSBhbHBoYTph
bHBoYSBjYW5Qcm92aWRlQmV0YTpjYW5Qcm92aWRlQmV0YSBiZXRhOmJldGEgY2FuUHJvdmlkZUdh
bW1hOmNhblByb3ZpZGVHYW1tYSBnYW1tYTpnYW1tYV07Ci0gICAgW21vY2tQcm92aWRlciBzZXRP
cmllbnRhdGlvbjpvcmllbnRhdGlvbl07Ci0gICAgW29yaWVudGF0aW9uIHJlbGVhc2VdOworICAg
IGF1dG8gb3JpZW50YXRpb24gPSBhZG9wdE5TKFtbV2ViRGV2aWNlT3JpZW50YXRpb24gYWxsb2Nd
IGluaXRXaXRoQ2FuUHJvdmlkZUFscGhhOmNhblByb3ZpZGVBbHBoYSBhbHBoYTphbHBoYSBjYW5Q
cm92aWRlQmV0YTpjYW5Qcm92aWRlQmV0YSBiZXRhOmJldGEgY2FuUHJvdmlkZUdhbW1hOmNhblBy
b3ZpZGVHYW1tYSBnYW1tYTpnYW1tYV0pOworICAgIFttb2NrUHJvdmlkZXIgc2V0T3JpZW50YXRp
b246b3JpZW50YXRpb24uZ2V0KCldOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91Ymxl
IGFjY3VyYWN5LCBib29sIHByb3ZpZGVzQWx0aXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgYm9vbCBw
cm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHBy
b3ZpZGVzSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91Ymxl
IHNwZWVkLCBib29sIHByb3ZpZGVzRmxvb3JMZXZlbCwgZG91YmxlIGZsb29yTGV2ZWwpCiB7Ci0g
ICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24gPSBuaWw7CisgICAgUmV0YWluUHRy
PFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uOwogICAgIGlmICghcHJvdmlkZXNBbHRp
dHVkZSAmJiAhcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5ICYmICFwcm92aWRlc0hlYWRpbmcgJiYg
IXByb3ZpZGVzU3BlZWQpIHsKICAgICAgICAgLy8gVGVzdCB0aGUgZXhwb3NlZCBBUEkuCi0gICAg
ICAgIHBvc2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aFRp
bWVzdGFtcDpXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkgbGF0
aXR1ZGU6bGF0aXR1ZGUgbG9uZ2l0dWRlOmxvbmdpdHVkZSBhY2N1cmFjeTphY2N1cmFjeV07Cisg
ICAgICAgIHBvc2l0aW9uID0gYWRvcHROUyhbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2Nd
IGluaXRXaXRoVGltZXN0YW1wOldhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNl
Y29uZHMoKSBsYXRpdHVkZTpsYXRpdHVkZSBsb25naXR1ZGU6bG9uZ2l0dWRlIGFjY3VyYWN5OmFj
Y3VyYWN5XSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGEgZ2VvbG9jYXRpb25Qb3NpdGlvbiB7IFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2lu
Y2VFcG9jaCgpLnNlY29uZHMoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsKICAg
ICAgICAgaWYgKHByb3ZpZGVzQWx0aXR1ZGUpCkBAIC00NjYsMTAgKzQ1Nyw5IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3Vi
bGUgbG9uZ2l0dWRlLCBkCiAgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLnNwZWVkID0g
c3BlZWQ7CiAgICAgICAgIGlmIChwcm92aWRlc0Zsb29yTGV2ZWwpCiAgICAgICAgICAgICBnZW9s
b2NhdGlvblBvc2l0aW9uLmZsb29yTGV2ZWwgPSBmbG9vckxldmVsOwotICAgICAgICBwb3NpdGlv
biA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBv
c2l0aW9uOihXVEZNb3ZlKGdlb2xvY2F0aW9uUG9zaXRpb24pKV07CisgICAgICAgIHBvc2l0aW9u
ID0gYWRvcHROUyhbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9j
YXRpb25Qb3NpdGlvbjooV1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSldKTsKICAgICB9Ci0g
ICAgW1tNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHNldFBvc2l0aW9uOnBvc2l0aW9u
XTsKLSAgICBbcG9zaXRpb24gcmVsZWFzZV07CisgICAgW1tNb2NrR2VvbG9jYXRpb25Qcm92aWRl
ciBzaGFyZWRdIHNldFBvc2l0aW9uOnBvc2l0aW9uLmdldCgpXTsKIH0KIAogdm9pZCBUZXN0UnVu
bmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdS
ZWYgbWVzc2FnZSkKQEAgLTg0MCw5ICs4MzAsOSBAQCBAZW5kCiBAaW50ZXJmYWNlIEFQSVRlc3RE
ZWxlZ2F0ZUlQaG9uZSA6IE5TT2JqZWN0IDxXZWJGcmFtZUxvYWREZWxlZ2F0ZT4KIHsKICAgICBU
ZXN0UnVubmVyKiB0ZXN0UnVubmVyOwotICAgIE5TRGF0YSAqZGF0YTsKLSAgICBOU1VSTCAqYmFz
ZVVSTDsKLSAgICBXZWJWaWV3ICp3ZWJWaWV3OworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7
CisgICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMOworICAgIFJldGFpblB0cjxXZWJWaWV3PiB3
ZWJWaWV3OwogfQogLSAoaWQpaW5pdFdpdGhUZXN0UnVubmVyOihUZXN0UnVubmVyKil0ZXN0UnVu
bmVyIHV0ZjhEYXRhOihKU1N0cmluZ1JlZilkYXRhIGJhc2VVUkw6KEpTU3RyaW5nUmVmKWJhc2VV
Ukw7CiAtICh2b2lkKXJ1bjsKQEAgLTg1NywxNSArODQ3LDEzIEBAIC0gKGlkKWluaXRXaXRoVGVz
dFJ1bm5lcjooVGVzdFJ1bm5lciopcnVubmVyIHV0ZjhEYXRhOihKU1N0cmluZ1JlZilkYXRhU3Ry
aW5nIGJhCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICB0ZXN0UnVubmVyID0gcnVubmVyOwot
ICAgIGRhdGEgPSBbWyhfX2JyaWRnZSBOU1N0cmluZyAqKWFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YVN0cmluZykpLmdldCgpIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSByZXRhaW5dOwotICAgIGJhc2VVUkwgPSBbW05T
VVJMIFVSTFdpdGhTdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopYWRvcHRDRihKU1N0cmluZ0Nv
cHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBiYXNlVVJMU3RyaW5nKSkuZ2V0KCldIHJl
dGFpbl07CisgICAgZGF0YSA9IFsoX19icmlkZ2UgTlNTdHJpbmcgKilhZG9wdENGKEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGFTdHJpbmcpKS5nZXQoKSBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgYmFzZVVSTCA9IFtOU1VS
TCBVUkxXaXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWFkb3B0Q0YoSlNTdHJpbmdDb3B5
Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzZVVSTFN0cmluZykpLmdldCgpXTsKICAg
ICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW2RhdGEgcmVsZWFz
ZV07Ci0gICAgW2Jhc2VVUkwgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBA
IC04NzgsOSArODY2LDkgQEAgLSAodm9pZClydW4KIAogICAgIFdlYlRocmVhZExvY2soKTsKIAot
ICAgIHdlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBm
cmFtZU5hbWU6QCIiIGdyb3VwTmFtZTpAIiJdOworICAgIHdlYlZpZXcgPSBhZG9wdE5TKFtbV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpAIiIgZ3JvdXBO
YW1lOkAiIl0pOwogICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOnNlbGZdOwotICAg
IFtbd2ViVmlldyBtYWluRnJhbWVdIGxvYWREYXRhOmRhdGEgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwi
IHRleHRFbmNvZGluZ05hbWU6QCJ1dGYtOCIgYmFzZVVSTDpiYXNlVVJMXTsKKyAgICBbW3dlYlZp
ZXcgbWFpbkZyYW1lXSBsb2FkRGF0YTpkYXRhLmdldCgpIE1JTUVUeXBlOkAidGV4dC9odG1sIiB0
ZXh0RW5jb2RpbmdOYW1lOkAidXRmLTgiIGJhc2VVUkw6YmFzZVVSTC5nZXQoKV07CiB9CiAKIC0g
KHZvaWQpX2NsZWFuVXAKQEAgLTg5Miw3ICs4ODAsNiBAQCAtICh2b2lkKV9jbGVhblVwCiAKICAg
ICBbd2ViVmlldyBfY2xlYXJEZWxlZ2F0ZXNdOwogICAgIFt3ZWJWaWV3IGNsb3NlXTsKLSAgICBb
d2ViVmlldyByZWxlYXNlXTsKICAgICB3ZWJWaWV3ID0gbmlsOwogCiAgICAgdGVzdFJ1bm5lci0+
bm90aWZ5RG9uZSgpOwpAQCAtOTM4LDExICs5MjUsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjphcGlU
ZXN0TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMKEpTU3RyaW5nUmVmIHV0ZjhEYXRhLCBKU1N0cmlu
Z1IKICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGY4RGF0YUNGID0gYWRvcHRDRihK
U1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1dGY4RGF0YSkpOwogICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJhc2VVUkxDRiA9IGFkb3B0Q0YoSlNTdHJpbmdD
b3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzZVVSTCkpOwogCi0gICAgICAgIFdl
YlZpZXcgKndlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVj
dCBmcmFtZU5hbWU6QCIiIGdyb3VwTmFtZTpAIiJdOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFt
ZTpAIiIgZ3JvdXBOYW1lOkAiIl0pOwogCiAgICAgICAgIGJvb2wgZG9uZSA9IGZhbHNlOwotICAg
ICAgICBBUElUZXN0RGVsZWdhdGUgKmRlbGVnYXRlID0gW1tBUElUZXN0RGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoQ29tcGxldGlvbkNvbmRpdGlvbjomZG9uZV07Ci0gICAgICAgIFt3ZWJWaWV3IHNl
dEZyYW1lTG9hZERlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tBUElUZXN0RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQ29tcGxldGlvbkNvbmRpdGlv
bjomZG9uZV0pOworICAgICAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CiAKICAgICAgICAgW1t3ZWJWaWV3IG1haW5GcmFtZV0gbG9hZERhdGE6WyhfX2Jy
aWRnZSBOU1N0cmluZyAqKXV0ZjhEYXRhQ0YuZ2V0KCkgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddIE1JTUVUeXBlOkAidGV4dC9odG1sIiB0ZXh0RW5jb2RpbmdOYW1lOkAi
dXRmLTgiIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICop
YmFzZVVSTENGLmdldCgpXV07CiAKQEAgLTk1Nyw4ICs5NDQsNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkwoSlNTdHJpbmdSZWYgdXRmOERhdGEsIEpT
U3RyaW5nUgogI2VuZGlmCiAKICAgICAgICAgW3dlYlZpZXcgY2xvc2VdOwotICAgICAgICBbd2Vi
VmlldyByZWxlYXNlXTsKLSAgICAgICAgW2RlbGVnYXRlIHJlbGVhc2VdOwogICAgIH0KIH0KIApA
QCAtOTc4LDggKzk2Myw4IEBAIHN0YXRpYyBOU1N0cmluZyAqU3luY2hyb25vdXNMb2FkZXJSdW5M
b29wTW9kZSA9IEAiRHVtcFJlbmRlclRyZWVTeW5jaHJvbm91c0xvYWRlCiAKIEBpbnRlcmZhY2Ug
U3luY2hyb25vdXNMb2FkZXIgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGU+CiB7
Ci0gICAgTlNTdHJpbmcgKm1fdXNlcm5hbWU7Ci0gICAgTlNTdHJpbmcgKm1fcGFzc3dvcmQ7Cisg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX3VzZXJuYW1lOworICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gbV9wYXNzd29yZDsKICAgICBCT09MIG1faXNEb25lOwogfQogKyAodm9pZCltYWtlUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3aXRoVXNlcm5hbWU6KE5TU3RyaW5nICopdXNlcm5h
bWUgcGFzc3dvcmQ6KE5TU3RyaW5nICopcGFzc3dvcmQ7CkBAIC05ODgsOSArOTczLDYgQEAgQGVu
ZAogQGltcGxlbWVudGF0aW9uIFN5bmNocm9ub3VzTG9hZGVyIDogTlNPYmplY3QKIC0gKHZvaWQp
ZGVhbGxvYwogewotICAgIFttX3VzZXJuYW1lIHJlbGVhc2VdOwotICAgIFttX3Bhc3N3b3JkIHJl
bGVhc2VdOwotCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC0xMDA0LDcgKzk4Niw3IEBA
IC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuCiBJR05PUkVfV0FSTklOR1NfRU5ECiB7CiAgICAgaWYg
KFtjaGFsbGVuZ2UgcHJldmlvdXNGYWlsdXJlQ291bnRdID09IDApIHsKLSAgICAgICAgUmV0YWlu
UHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbCA9IGFkb3B0TlMoW1tOU1VSTENyZWRlbnRp
YWwgYWxsb2NdICBpbml0V2l0aFVzZXI6bV91c2VybmFtZSBwYXNzd29yZDptX3Bhc3N3b3JkIHBl
cnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbl0pOworICAgICAg
ICBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW50aWFsID0gYWRvcHROUyhbW05TVVJM
Q3JlZGVudGlhbCBhbGxvY10gIGluaXRXaXRoVXNlcjptX3VzZXJuYW1lLmdldCgpIHBhc3N3b3Jk
Om1fcGFzc3dvcmQuZ2V0KCkgcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VG
b3JTZXNzaW9uXSk7CiAgICAgICAgIFtbY2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDpj
cmVkZW50aWFsLmdldCgpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZV07CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDI3LDIxICsxMDA5LDE4IEBAICsgKHZvaWQpbWFr
ZVJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2l0aFVzZXJuYW1lOihOU1N0cmluZyAq
KXVzZXJuYW1lIHBhCiAgICAgQVNTRVJUKCFbW3JlcXVlc3QgVVJMXSB1c2VyXSk7CiAgICAgQVNT
RVJUKCFbW3JlcXVlc3QgVVJMXSBwYXNzd29yZF0pOwogCi0gICAgU3luY2hyb25vdXNMb2FkZXIg
KmRlbGVnYXRlID0gW1tTeW5jaHJvbm91c0xvYWRlciBhbGxvY10gaW5pdF07Ci0gICAgZGVsZWdh
dGUtPm1fdXNlcm5hbWUgPSBbdXNlcm5hbWUgY29weV07Ci0gICAgZGVsZWdhdGUtPm1fcGFzc3dv
cmQgPSBbcGFzc3dvcmQgY29weV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTeW5j
aHJvbm91c0xvYWRlciBhbGxvY10gaW5pdF0pOworICAgIGRlbGVnYXRlLmdldCgpLT5tX3VzZXJu
YW1lID0gYWRvcHROUyhbdXNlcm5hbWUgY29weV0pOworICAgIGRlbGVnYXRlLmdldCgpLT5tX3Bh
c3N3b3JkID0gYWRvcHROUyhbcGFzc3dvcmQgY29weV0pOwogCi0gICAgTlNVUkxDb25uZWN0aW9u
ICpjb25uZWN0aW9uID0gW1tOU1VSTENvbm5lY3Rpb24gYWxsb2NdIGluaXRXaXRoUmVxdWVzdDpy
ZXF1ZXN0IGRlbGVnYXRlOmRlbGVnYXRlIHN0YXJ0SW1tZWRpYXRlbHk6Tk9dOworICAgIGF1dG8g
Y29ubmVjdGlvbiA9IGFkb3B0TlMoW1tOU1VSTENvbm5lY3Rpb24gYWxsb2NdIGluaXRXaXRoUmVx
dWVzdDpyZXF1ZXN0IGRlbGVnYXRlOmRlbGVnYXRlLmdldCgpIHN0YXJ0SW1tZWRpYXRlbHk6Tk9d
KTsKICAgICBbY29ubmVjdGlvbiBzY2hlZHVsZUluUnVuTG9vcDpbTlNSdW5Mb29wIGN1cnJlbnRS
dW5Mb29wXSBmb3JNb2RlOlN5bmNocm9ub3VzTG9hZGVyUnVuTG9vcE1vZGVdOwogICAgIFtjb25u
ZWN0aW9uIHN0YXJ0XTsKICAgICAKLSAgICB3aGlsZSAoIWRlbGVnYXRlLT5tX2lzRG9uZSkKKyAg
ICB3aGlsZSAoIWRlbGVnYXRlLmdldCgpLT5tX2lzRG9uZSkKICAgICAgICAgW1tOU1J1bkxvb3Ag
Y3VycmVudFJ1bkxvb3BdIHJ1bk1vZGU6U3luY2hyb25vdXNMb2FkZXJSdW5Mb29wTW9kZSBiZWZv
cmVEYXRlOltOU0RhdGUgZGlzdGFudEZ1dHVyZV1dOwogCiAgICAgW2Nvbm5lY3Rpb24gY2FuY2Vs
XTsKLSAgICAKLSAgICBbY29ubmVjdGlvbiByZWxlYXNlXTsKLSAgICBbZGVsZWdhdGUgcmVsZWFz
ZV07CiB9CiAKIEBlbmQKQEAgLTEwODUsMTMgKzEwNjQsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlvbk5hbWUpCiB2b2lkIFRlc3RSdW5u
ZXI6OmFkZENocm9tZUlucHV0RmllbGQoKQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIE5TVGV4dEZpZWxkICp0ZXh0RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAyMCldOwotICAgIHRleHRGaWVsZC50YWcgPSAx
OwotICAgIFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBjb250ZW50Vmlld10gYWRkU3Vi
dmlldzp0ZXh0RmllbGRdOwotICAgIFt0ZXh0RmllbGQgcmVsZWFzZV07CisgICAgYXV0byB0ZXh0
RmllbGQgPSBhZG9wdE5TKFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCAxMDAsIDIwKV0pOworICAgIFt0ZXh0RmllbGQgc2V0VGFnOiAxXTsKKyAgICBb
W1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gY29udGVudFZpZXddIGFkZFN1YnZpZXc6dGV4
dEZpZWxkLmdldCgpXTsKICAgICAKICAgICBbdGV4dEZpZWxkIHNldE5leHRLZXlWaWV3OlttYWlu
RnJhbWUgd2ViVmlld11dOwotICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldE5leHRLZXlWaWV3
OnRleHRGaWVsZF07CisgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0TmV4dEtleVZpZXc6dGV4
dEZpZWxkLmdldCgpXTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVUlEZWxlZ2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdh
dGUuaAppbmRleCBjZjE5ZmZkNmZhNDZiZmRmNTM0OTZkZmQ2ODE4MThhZDA4YjBiMTNjLi4zMTY1
NWRiY2ViMDhmNGY4ODg4YTNiMWRmMmVhMTRlYzIzNTY4ZjM0IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9VSURlbGVnYXRlLmgKQEAgLTM1LDExICszNSwxMiBAQAogI2VuZGlmCiAKICNpbXBvcnQg
PFdlYktpdC9XZWJVSURlbGVnYXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBp
bnRlcmZhY2UgVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXZWJVSURlbGVnYXRlPiB7CiBAcHJpdmF0
ZQogICAgIE5TUG9pbnQgd2luZG93T3JpZ2luOwotICAgIE5TTXV0YWJsZVNldCAqbV9wZW5kaW5n
R2VvbG9jYXRpb25QZXJtaXNzaW9uTGlzdGVuZXJzOworICAgIFJldGFpblB0cjxOU011dGFibGVT
ZXQ+IG1fcGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvbkxpc3RlbmVyczsKICAgICBOU1RpbWVy
ICptX3RpbWVyOwogICAgIEJPT0wgbV9lbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkOwog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQppbmRleCAwOGRmMTA0MDFiMjhh
MGMzNzNhMzY2NTAzZDk4OGRhODI2MzNjZGVlLi5mZGNiMDRkNDk4YmQ5YTAyYzQ2MGU2ZDNkMzBl
ODIzZTUxNTUzNmFkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxl
Z2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQpAQCAt
MjUyLDcgKzI1Miw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRl
UG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooCiB7CiAgICAgaWYgKCFnVGVz
dFJ1bm5lci0+aXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQoKSkgewogICAgICAgICBpZiAoIW1f
cGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvbkxpc3RlbmVycykKLSAgICAgICAgICAgIG1fcGVu
ZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvbkxpc3RlbmVycyA9IFtbTlNNdXRhYmxlU2V0IHNldF0g
cmV0YWluXTsKKyAgICAgICAgICAgIG1fcGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvbkxpc3Rl
bmVycyA9IFtOU011dGFibGVTZXQgc2V0XTsKICAgICAgICAgW21fcGVuZGluZ0dlb2xvY2F0aW9u
UGVybWlzc2lvbkxpc3RlbmVycyBhZGRPYmplY3Q6bGlzdGVuZXJdOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjkwLDcgKzI5MCw2IEBAIC0gKHZvaWQpdGltZXJGaXJlZAogICAgICAgICAg
ICAgW2xpc3RlbmVyIGRlbnldOwogICAgIH0KICAgICBbbV9wZW5kaW5nR2VvbG9jYXRpb25QZXJt
aXNzaW9uTGlzdGVuZXJzIHJlbW92ZUFsbE9iamVjdHNdOwotICAgIFttX3BlbmRpbmdHZW9sb2Nh
dGlvblBlcm1pc3Npb25MaXN0ZW5lcnMgcmVsZWFzZV07CiAgICAgbV9wZW5kaW5nR2VvbG9jYXRp
b25QZXJtaXNzaW9uTGlzdGVuZXJzID0gbmlsOwogfQogCkBAIC00MzcsOCArNDM2LDYgQEAgLSAo
dm9pZClkZWFsbG9jCiAgICAgW2RyYWdnaW5nSW5mbyByZWxlYXNlXTsKICAgICBkcmFnZ2luZ0lu
Zm8gPSBuaWw7CiAjZW5kaWYKLSAgICBbbV9wZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uTGlz
dGVuZXJzIHJlbGVhc2VdOwotICAgIG1fcGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvbkxpc3Rl
bmVycyA9IG5pbDsKIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCmluZGV4IDE5ZTllOWNiMjg1YWIyMmM4NWU2NGJiMTQy
ZWRmMjEyN2NiM2Q3MjYuLmQxMjBkMTUxZDhhMDMwMTgzYWI4MmMxY2YwOGI0MzNiYzQ0YzM1NWQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQpAQCAtMTAyMSw3
ICsxMDIxLDggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25M
aXN0ZW5lcihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2sKICAgICAvLyBPdGhlciBwbGF0Zm9y
bXMgbWF5IGJlIGRpZmZlcmVudC4KICAgICBpZiAobV9ub3RpZmljYXRpb25IYW5kbGVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gW1tBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxvY10gaW5pdF07CisKKyAgICBtX25vdGlmaWNh
dGlvbkhhbmRsZXIgPSBhZG9wdE5TKFtbQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIg
YWxsb2NdIGluaXRdKTsKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHNldFBsYXRmb3JtRWxl
bWVudDpwbGF0Zm9ybVVJRWxlbWVudCgpXTsKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHNl
dENhbGxiYWNrOmZ1bmN0aW9uQ2FsbGJhY2tdOwogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIg
c3RhcnRPYnNlcnZpbmddOwpAQCAtMTAzNSw3ICsxMDM2LDYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCiAgICAgQVNTRVJUKG1fbm90
aWZpY2F0aW9uSGFuZGxlcik7CiAgICAgCiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzdG9w
T2JzZXJ2aW5nXTsKLSAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgIG1f
bm90aWZpY2F0aW9uSGFuZGxlciA9IG5pbDsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IGJmNmE3MGZjZTRkOTM1
ZGEzZDY4ZGY2NjE2M2I5NTY0ZTY4NmQxYmYuLjdlM2ViMWM2NjkxY2IyZWVjMWI5NDQ4NDg1NjYw
NmY4MGY3NWQzN2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bQpAQCAtMTU4OSw3ICsxNTg5LDggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGRO
b3RpZmljYXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2sKICAgICAvLyBP
dGhlciBwbGF0Zm9ybXMgbWF5IGJlIGRpZmZlcmVudC4KICAgICBpZiAobV9ub3RpZmljYXRpb25I
YW5kbGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9ub3RpZmljYXRpb25IYW5kbGVy
ID0gW1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxvY10gaW5pdF07CisKKyAg
ICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSBhZG9wdE5TKFtbQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHNl
dFBsYXRmb3JtRWxlbWVudDpwbGF0Zm9ybVVJRWxlbWVudCgpXTsKICAgICBbbV9ub3RpZmljYXRp
b25IYW5kbGVyIHNldENhbGxiYWNrOmZ1bmN0aW9uQ2FsbGJhY2tdOwogICAgIFttX25vdGlmaWNh
dGlvbkhhbmRsZXIgc3RhcnRPYnNlcnZpbmddOwpAQCAtMTYwMyw3ICsxNjA0LDYgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCiAgICAg
QVNTRVJUKG1fbm90aWZpY2F0aW9uSGFuZGxlcik7CiAKICAgICBbbV9ub3RpZmljYXRpb25IYW5k
bGVyIHN0b3BPYnNlcnZpbmddOwotICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgcmVsZWFzZV07
CiAgICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gbmlsOwogICAgIAogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0
b3IubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpp
bmRleCAwYzQ0NjMzNWIyNDBkNmE3ZTA2NzQxNGNhOWMzMDQwYWE2ZTM1NDYzLi5mZmZiMTkwNDRj
MDI1MjgxNDNkYjU0YzEzNTYzMzlhODJkN2Q3YjRjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpAQCAtMTA0Miw5ICsxMDQyLDkgQEAgLSAo
TlNBcnJheSAqKWludGVycG9sYXRlZEV2ZW50czooTlNEaWN0aW9uYXJ5ICopaW50ZXJwb2xhdGlv
bnNEaWN0aW9uYXJ5CiAgICAgTlNBcnJheSAqZW5kVG91Y2hlcyA9IGVuZEV2ZW50W0hJREV2ZW50
VG91Y2hlc0tleV07CiAgICAgCiAgICAgd2hpbGUgKHRpbWUgPCBlbmRUaW1lKSB7Ci0gICAgICAg
IE5TTXV0YWJsZURpY3Rpb25hcnkgKm5ld0V2ZW50ID0gW2VuZEV2ZW50IG11dGFibGVDb3B5XTsK
KyAgICAgICAgYXV0byBuZXdFdmVudCA9IGFkb3B0TlMoW2VuZEV2ZW50IG11dGFibGVDb3B5XSk7
CiAgICAgICAgIGRvdWJsZSB0aW1lUmF0aW8gPSAodGltZSAtIHN0YXJ0VGltZSkgLyAoZW5kVGlt
ZSAtIHN0YXJ0VGltZSk7Ci0gICAgICAgIG5ld0V2ZW50W0hJREV2ZW50VGltZU9mZnNldEtleV0g
PSBAKHRpbWUpOworICAgICAgICBuZXdFdmVudC5nZXQoKVtISURFdmVudFRpbWVPZmZzZXRLZXld
ID0gQCh0aW1lKTsKICAgICAgICAgCiAgICAgICAgIE5TRW51bWVyYXRvciAqc3RhcnRFbnVtZXJh
dG9yID0gW3N0YXJ0VG91Y2hlcyBvYmplY3RFbnVtZXJhdG9yXTsKICAgICAgICAgTlNEaWN0aW9u
YXJ5ICpzdGFydFRvdWNoOwpAQCAtMTA1OCwyNyArMTA1OCwyNSBAQCAtIChOU0FycmF5ICopaW50
ZXJwb2xhdGVkRXZlbnRzOihOU0RpY3Rpb25hcnkgKilpbnRlcnBvbGF0aW9uc0RpY3Rpb25hcnkK
ICAgICAgICAgICAgICAgICBlbmRUb3VjaCA9IFtlbmRFbnVtZXJhdG9yIG5leHRPYmplY3RdOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZW5kVG91Y2gpIHsKLSAgICAgICAgICAgICAg
ICBOU011dGFibGVEaWN0aW9uYXJ5ICpuZXdUb3VjaCA9IFtlbmRUb3VjaCBtdXRhYmxlQ29weV07
CisgICAgICAgICAgICAgICAgYXV0byBuZXdUb3VjaCA9IGFkb3B0TlMoW2VuZFRvdWNoIG11dGFi
bGVDb3B5XSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKG5ld1RvdWNo
W0hJREV2ZW50WEtleV0gIT0gc3RhcnRUb3VjaFtISURFdmVudFhLZXldKQotICAgICAgICAgICAg
ICAgICAgICBuZXdUb3VjaFtISURFdmVudFhLZXldID0gQChpbnRlcnBvbGF0aW9uc1tpbnRlcnBv
bGF0aW9uVHlwZV0oW3N0YXJ0VG91Y2hbSElERXZlbnRYS2V5XSBkb3VibGVWYWx1ZV0sIFtlbmRU
b3VjaFtISURFdmVudFhLZXldIGRvdWJsZVZhbHVlXSwgdGltZVJhdGlvKSk7CisgICAgICAgICAg
ICAgICAgaWYgKG5ld1RvdWNoLmdldCgpW0hJREV2ZW50WEtleV0gIT0gc3RhcnRUb3VjaFtISURF
dmVudFhLZXldKQorICAgICAgICAgICAgICAgICAgICBuZXdUb3VjaC5nZXQoKVtISURFdmVudFhL
ZXldID0gQChpbnRlcnBvbGF0aW9uc1tpbnRlcnBvbGF0aW9uVHlwZV0oW3N0YXJ0VG91Y2hbSElE
RXZlbnRYS2V5XSBkb3VibGVWYWx1ZV0sIFtlbmRUb3VjaFtISURFdmVudFhLZXldIGRvdWJsZVZh
bHVlXSwgdGltZVJhdGlvKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYg
KG5ld1RvdWNoW0hJREV2ZW50WUtleV0gIT0gc3RhcnRUb3VjaFtISURFdmVudFlLZXldKQotICAg
ICAgICAgICAgICAgICAgICBuZXdUb3VjaFtISURFdmVudFlLZXldID0gQChpbnRlcnBvbGF0aW9u
c1tpbnRlcnBvbGF0aW9uVHlwZV0oW3N0YXJ0VG91Y2hbSElERXZlbnRZS2V5XSBkb3VibGVWYWx1
ZV0sIFtlbmRUb3VjaFtISURFdmVudFlLZXldIGRvdWJsZVZhbHVlXSwgdGltZVJhdGlvKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKG5ld1RvdWNoLmdldCgpW0hJREV2ZW50WUtleV0gIT0gc3RhcnRU
b3VjaFtISURFdmVudFlLZXldKQorICAgICAgICAgICAgICAgICAgICBuZXdUb3VjaC5nZXQoKVtI
SURFdmVudFlLZXldID0gQChpbnRlcnBvbGF0aW9uc1tpbnRlcnBvbGF0aW9uVHlwZV0oW3N0YXJ0
VG91Y2hbSElERXZlbnRZS2V5XSBkb3VibGVWYWx1ZV0sIFtlbmRUb3VjaFtISURFdmVudFlLZXld
IGRvdWJsZVZhbHVlXSwgdGltZVJhdGlvKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgaWYgKG5ld1RvdWNoW0hJREV2ZW50UHJlc3N1cmVLZXldICE9IHN0YXJ0VG91Y2hbSElE
RXZlbnRQcmVzc3VyZUtleV0pCi0gICAgICAgICAgICAgICAgICAgIG5ld1RvdWNoW0hJREV2ZW50
UHJlc3N1cmVLZXldID0gQChpbnRlcnBvbGF0aW9uc1tpbnRlcnBvbGF0aW9uVHlwZV0oW3N0YXJ0
VG91Y2hbSElERXZlbnRQcmVzc3VyZUtleV0gZG91YmxlVmFsdWVdLCBbZW5kVG91Y2hbSElERXZl
bnRQcmVzc3VyZUtleV0gZG91YmxlVmFsdWVdLCB0aW1lUmF0aW8pKTsKKyAgICAgICAgICAgICAg
ICBpZiAobmV3VG91Y2guZ2V0KClbSElERXZlbnRQcmVzc3VyZUtleV0gIT0gc3RhcnRUb3VjaFtI
SURFdmVudFByZXNzdXJlS2V5XSkKKyAgICAgICAgICAgICAgICAgICAgbmV3VG91Y2guZ2V0KClb
SElERXZlbnRQcmVzc3VyZUtleV0gPSBAKGludGVycG9sYXRpb25zW2ludGVycG9sYXRpb25UeXBl
XShbc3RhcnRUb3VjaFtISURFdmVudFByZXNzdXJlS2V5XSBkb3VibGVWYWx1ZV0sIFtlbmRUb3Vj
aFtISURFdmVudFByZXNzdXJlS2V5XSBkb3VibGVWYWx1ZV0sIHRpbWVSYXRpbykpOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIFtuZXdUb3VjaGVzIGFkZE9iamVjdDpuZXdUb3Vj
aF07Ci0gICAgICAgICAgICAgICAgW25ld1RvdWNoIHJlbGVhc2VdOworICAgICAgICAgICAgICAg
IFtuZXdUb3VjaGVzIGFkZE9iamVjdDpuZXdUb3VjaC5nZXQoKV07CiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICBOU0xvZyhAIk1pc3NpbmcgRW5kIFRvdWNoIHdpdGggSUQ6ICVs
ZCIsIChsb25nKXN0YXJ0VG91Y2hJRCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIG5l
d0V2ZW50W0hJREV2ZW50VG91Y2hlc0tleV0gPSBuZXdUb3VjaGVzOworICAgICAgICBuZXdFdmVu
dC5nZXQoKVtISURFdmVudFRvdWNoZXNLZXldID0gbmV3VG91Y2hlczsKICAgICAgICAgCi0gICAg
ICAgIFtpbnRlcnBvbGF0ZWRFdmVudHMgYWRkT2JqZWN0Om5ld0V2ZW50XTsKLSAgICAgICAgW25l
d0V2ZW50IHJlbGVhc2VdOworICAgICAgICBbaW50ZXJwb2xhdGVkRXZlbnRzIGFkZE9iamVjdDpu
ZXdFdmVudC5nZXQoKV07CiAgICAgICAgIHRpbWUgKz0gdGltZVN0ZXA7CiAgICAgfQogICAgIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9T
Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tCmlu
ZGV4IDAyMTExMWNlMTQ1NDVkMDAwNDQ5Y2QyZjljMDA0MzU1MjNhY2ZiYjUuLmU4MDZkNjczYTBj
YWFjOTA1ZDhmY2U1OWY0MzlkY2MxMjk5NTgxNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KQEAgLTIwOSw5ICsyMDksNyBAQCBQbGF0
Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1dlYlZpZXdDb25maWd1cmF0aW9uKiBjb25m
aWd1cmF0aW9uLCBjb25zdCBUZQogICAgIG1fd2luZG93LmJhY2tncm91bmRDb2xvciA9IFtVSUNv
bG9yIGxpZ2h0R3JheUNvbG9yXTsKICAgICBtX3dpbmRvdy5wbGF0Zm9ybVdlYlZpZXcgPSB0aGlz
OwogCi0gICAgVUlWaWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIgPSBbW1BsYXRmb3JtV2Vi
Vmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdOwotICAgIFttX3dpbmRvdyBzZXRSb290Vmlld0Nv
bnRyb2xsZXI6dmlld0NvbnRyb2xsZXJdOwotICAgIFt2aWV3Q29udHJvbGxlciByZWxlYXNlXTsK
KyAgICBbbV93aW5kb3cgc2V0Um9vdFZpZXdDb250cm9sbGVyOmFkb3B0TlMoW1tQbGF0Zm9ybVdl
YlZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSkuZ2V0KCldOwogCiAgICAgbV92aWV3ID0gW1tU
ZXN0UnVubmVyV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnZpZXdSZWN0Rm9yV2luZG93
UmVjdChyZWN0LCBXZWJWaWV3U2l6aW5nTW9kZTo6RGVmYXVsdCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxh
dGZvcm1XZWJWaWV3TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1X
ZWJWaWV3TWFjLm1tCmluZGV4IDQ2OGExMmQ4NDdmOWVkYzc1ZGE2MGQ3MDJmNTBhYThlN2IxZTA5
MjEuLjZhZmYzZjFkZDlhOTY1Yzc5ZTI3ODAzY2NiZDMxNDc3Njk2ODhhOTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KQEAgLTE0OSwx
NCArMTQ5LDEzIEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpkaWRJbml0aWFsaXplQ2xpZW50cygp
CiAKIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKIHsKLSAgICBO
U1RleHRGaWVsZCAqdGV4dEZpZWxkID0gW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMjApXTsKLSAgICB0ZXh0RmllbGQudGFnID0gMTsKLSAg
ICBbW21fd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnRleHRGaWVsZF07Ci0gICAgW3Rl
eHRGaWVsZCByZWxlYXNlXTsKKyAgICBhdXRvIHRleHRGaWVsZCA9IGFkb3B0TlMoW1tOU1RleHRG
aWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMjApXSk7Cisg
ICAgW3RleHRGaWVsZCBzZXRUYWc6IDFdOworICAgIFtbbV93aW5kb3cgY29udGVudFZpZXddIGFk
ZFN1YnZpZXc6dGV4dEZpZWxkLmdldCgpXTsKIAogICAgIE5TVmlldyAqdmlldyA9IHBsYXRmb3Jt
VmlldygpOwogICAgIFt0ZXh0RmllbGQgc2V0TmV4dEtleVZpZXc6dmlld107Ci0gICAgW3ZpZXcg
c2V0TmV4dEtleVZpZXc6dGV4dEZpZWxkXTsKKyAgICBbdmlldyBzZXROZXh0S2V5Vmlldzp0ZXh0
RmllbGQuZ2V0KCldOwogfQogCiB2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5w
dXRGaWVsZCgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRU
ZXN0UnVubmVyRHJhZ2dpbmdJbmZvLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJL
aXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLmgKaW5kZXggMjJmNDcxNDk5YWQzZmRkMDg5OWE1ZTNj
ZTEyOTg2OGNjZTExM2U2ZS4uNWRjNDg5YzllMThkYzlhMTZiYmE0ZDMwZmI1MTM4YzhhYjdmZDgy
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5l
ckRyYWdnaW5nSW5mby5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRl
c3RSdW5uZXJEcmFnZ2luZ0luZm8uaApAQCAtMjUsMTIgKzI1LDE0IEBACiAKICNpZiBQTEFURk9S
TShNQUMpCiAKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKIEBpbnRlcmZhY2UgV2ViS2l0
VGVzdFJ1bm5lckRyYWdnaW5nSW5mbyA6IE5TT2JqZWN0IDxOU0RyYWdnaW5nSW5mbz4gewogQHBy
aXZhdGUKICAgICBOU1NpemUgX29mZnNldDsKLSAgICBOU0ltYWdlICpfZHJhZ2dlZEltYWdlOwot
ICAgIE5TUGFzdGVib2FyZCAqX2RyYWdnaW5nUGFzdGVib2FyZDsKLSAgICBpZCBfZHJhZ2dpbmdT
b3VyY2U7CisgICAgUmV0YWluUHRyPE5TSW1hZ2U+IF9kcmFnZ2VkSW1hZ2U7CisgICAgUmV0YWlu
UHRyPE5TUGFzdGVib2FyZD4gX2RyYWdnaW5nUGFzdGVib2FyZDsKKyAgICBSZXRhaW5QdHI8aWQ+
IF9kcmFnZ2luZ1NvdXJjZTsKIH0KIAogLSAoaWQpaW5pdFdpdGhJbWFnZTooTlNJbWFnZSAqKWlt
YWdlIG9mZnNldDooTlNTaXplKW9mZnNldCBwYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0
ZWJvYXJkIHNvdXJjZTooaWQpc291cmNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbSBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8ubW0KaW5kZXggNTY1ZGIy
ZjEyNGY4ZjJjMzI0OGU5YzMyMWJjYzhlOWM4ZGRjYjhlMi4uZTYwM2I0YjJhOGJhNjY2NDVlZTkw
YTZhM2FjM2VlNTVjNGE2Nzk0NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLm1tCkBAIC00MSw5ICs0MSw5
IEBAIC0gKGlkKWluaXRXaXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBvZmZzZXQ6KE5TU2l6ZSlv
ZmZzZXQgcGFzdGVib2FyZDooTlNQYXN0ZWJvCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgX2RyYWdnZWRJbWFnZSA9IFtpbWFnZSByZXRhaW5dOwotICAgIF9kcmFn
Z2luZ1Bhc3RlYm9hcmQgPSBbcGFzdGVib2FyZCByZXRhaW5dOwotICAgIF9kcmFnZ2luZ1NvdXJj
ZSA9IFtzb3VyY2UgcmV0YWluXTsKKyAgICBfZHJhZ2dlZEltYWdlID0gaW1hZ2U7CisgICAgX2Ry
YWdnaW5nUGFzdGVib2FyZCA9IHBhc3RlYm9hcmQ7CisgICAgX2RyYWdnaW5nU291cmNlID0gc291
cmNlOwogICAgIF9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgCiAgICAgcmV0dXJuIHNlbGY7CkBAIC01
MSw5ICs1MSw2IEBAIC0gKGlkKWluaXRXaXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBvZmZzZXQ6
KE5TU2l6ZSlvZmZzZXQgcGFzdGVib2FyZDooTlNQYXN0ZWJvCiAKIC0gKHZvaWQpZGVhbGxvYwog
ewotICAgIFtfZHJhZ2dlZEltYWdlIHJlbGVhc2VdOwotICAgIFtfZHJhZ2dpbmdQYXN0ZWJvYXJk
IHJlbGVhc2VdOwotICAgIFtfZHJhZ2dpbmdTb3VyY2UgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRl
YWxsb2NdOwogfQogCkBAIC04MiwxNyArNzksMTcgQEAgLSAoTlNQb2ludClkcmFnZ2VkSW1hZ2VM
b2NhdGlvbgogCiAtIChOU0ltYWdlICopZHJhZ2dlZEltYWdlCiB7Ci0gICAgcmV0dXJuIF9kcmFn
Z2VkSW1hZ2U7CisgICAgcmV0dXJuIF9kcmFnZ2VkSW1hZ2UuZ2V0KCk7CiB9CiAKIC0gKE5TUGFz
dGVib2FyZCAqKWRyYWdnaW5nUGFzdGVib2FyZAogewotICAgIHJldHVybiBfZHJhZ2dpbmdQYXN0
ZWJvYXJkOworICAgIHJldHVybiBfZHJhZ2dpbmdQYXN0ZWJvYXJkLmdldCgpOwogfQogCiAtIChp
ZClkcmFnZ2luZ1NvdXJjZQogewotICAgIHJldHVybiBfZHJhZ2dpbmdTb3VyY2U7CisgICAgcmV0
dXJuIF9kcmFnZ2luZ1NvdXJjZS5nZXQoKTsKIH0KIAogLSAoaW50KWRyYWdnaW5nU2VxdWVuY2VO
dW1iZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RS
dW5uZXJQYXN0ZWJvYXJkLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVz
dFJ1bm5lclBhc3RlYm9hcmQubW0KaW5kZXggMGQzMDRmYzI4NGEyODgzY2ZkMGY3MmUyZjk2NjA1
MGNmMjVlZGIwZi4uYjNhZDIzN2NhZDk1YjM2MTA3M2Y4YzkzNmI2YjhlNGNkM2RiNjk5OSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3Rl
Ym9hcmQubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5l
clBhc3RlYm9hcmQubW0KQEAgLTU3LDEzICs1NywxMSBAQCArIChOU1Bhc3RlYm9hcmQgKilfcGFz
dGVib2FyZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKICAgICAgICAgbmFtZSA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiTG9jYWxQYXN0ZWJvYXJkJWQiLCArK251bWJlcl07CiAgICAg
aWYgKCFsb2NhbFBhc3RlYm9hcmRzKQogICAgICAgICBsb2NhbFBhc3RlYm9hcmRzID0gW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICBMb2NhbFBhc3RlYm9hcmQgKnBhc3Rl
Ym9hcmQgPSBbbG9jYWxQYXN0ZWJvYXJkcyBvYmplY3RGb3JLZXk6bmFtZV07Ci0gICAgaWYgKHBh
c3RlYm9hcmQpCisgICAgaWYgKExvY2FsUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtsb2NhbFBh
c3RlYm9hcmRzIG9iamVjdEZvcktleTpuYW1lXSkKICAgICAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7
Ci0gICAgcGFzdGVib2FyZCA9IFtbTG9jYWxQYXN0ZWJvYXJkIGFsbG9jXSBpbml0V2l0aE5hbWU6
bmFtZV07Ci0gICAgW2xvY2FsUGFzdGVib2FyZHMgc2V0T2JqZWN0OnBhc3RlYm9hcmQgZm9yS2V5
Om5hbWVdOwotICAgIFtwYXN0ZWJvYXJkIHJlbGVhc2VdOwotICAgIHJldHVybiBwYXN0ZWJvYXJk
OworICAgIGF1dG8gcGFzdGVib2FyZCA9IGFkb3B0TlMoW1tMb2NhbFBhc3RlYm9hcmQgYWxsb2Nd
IGluaXRXaXRoTmFtZTpuYW1lXSk7CisgICAgW2xvY2FsUGFzdGVib2FyZHMgc2V0T2JqZWN0OnBh
c3RlYm9hcmQuZ2V0KCkgZm9yS2V5Om5hbWVdOworICAgIHJldHVybiBwYXN0ZWJvYXJkLmdldCgp
OwogfQogCiAvLyBUaGlzIG1ldGhvZCBjcmFzaGVzIHdoZW4gY2FsbGVkIG9uIExvY2FsUGFzdGVi
b2FyZC4KQEAgLTE1MSwxNSArMTQ5LDE0IEBAIC0gKHZvaWQpX2FkZFR5cGVzV2l0aG91dFVwZGF0
aW5nQ2hhbmdlQ291bnQ6KE5TQXJyYXkgKiluZXdUeXBlcyBvd25lcjooaWQpbmV3T3duCiAgICAg
dW5zaWduZWQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBO
U1N0cmluZyAqdHlwZSA9IFtuZXdUeXBlcyBvYmplY3RBdEluZGV4OmldOwotICAgICAgICBOU1N0
cmluZyAqc2V0VHlwZSA9IFtfdHlwZXNTZXQgbWVtYmVyOnR5cGVdOworICAgICAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IHNldFR5cGUgPSBbX3R5cGVzU2V0IG1lbWJlcjp0eXBlXTsKICAgICAgICAg
aWYgKCFzZXRUeXBlKSB7Ci0gICAgICAgICAgICBzZXRUeXBlID0gW3R5cGUgY29weV07Ci0gICAg
ICAgICAgICBbX3R5cGVzQXJyYXkgYWRkT2JqZWN0OnNldFR5cGVdOwotICAgICAgICAgICAgW190
eXBlc1NldCBhZGRPYmplY3Q6c2V0VHlwZV07Ci0gICAgICAgICAgICBbc2V0VHlwZSByZWxlYXNl
XTsKKyAgICAgICAgICAgIHNldFR5cGUgPSBhZG9wdE5TKFt0eXBlIGNvcHldKTsKKyAgICAgICAg
ICAgIFtfdHlwZXNBcnJheSBhZGRPYmplY3Q6c2V0VHlwZS5nZXQoKV07CisgICAgICAgICAgICBb
X3R5cGVzU2V0IGFkZE9iamVjdDpzZXRUeXBlLmdldCgpXTsKICAgICAgICAgfQogICAgICAgICBp
ZiAobmV3T3duZXIgJiYgW25ld093bmVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFz
dGVib2FyZDpwcm92aWRlRGF0YUZvclR5cGU6KV0pCi0gICAgICAgICAgICBbbmV3T3duZXIgcGFz
dGVib2FyZDpzZWxmIHByb3ZpZGVEYXRhRm9yVHlwZTpzZXRUeXBlXTsKKyAgICAgICAgICAgIFtu
ZXdPd25lciBwYXN0ZWJvYXJkOnNlbGYgcHJvdmlkZURhdGFGb3JUeXBlOnNldFR5cGUuZ2V0KCld
OwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420092</attachid>
            <date>2021-02-11 21:23:32 -0800</date>
            <delta_ts>2021-02-12 16:55:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221780-20210211212331.patch</filename>
            <type>text/plain</type>
            <size>273041</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg3ZTJkODBmODNkZmY0
MjI3ZGU1OGUyODNkMjJiNDU0NTJhOWY2OC4uN2FmOWU4MjlhM2Y0NDBlN2NiZmI0Yzk1MjQ0OTIz
ZjZiOWQ2NmZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTAyLTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVz
YWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJl
bGVhc2VdIGluIFdlYktpdCBieSB1c2luZyBzbWFydCBwb2ludGVycy4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhcnJheU9mVGV4dEZvclRleHRN
YXJrZXJzOmF0dHJpYnV0ZWQ6XSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0
U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpwb3N0
VXNlckluZm9Gb3JDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBv
c3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb25G
b3JUZXh0Q29udHJvbCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgorICAgICAg
ICAqIGJyaWRnZS90ZXN0YmluZGluZ3MubW06CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpI
VE1MQ29udmVydGVyKToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRl
c0ZvckVsZW1lbnQpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZE1hcmtlcnNUb0xpc3Qp
OgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAqIGhpc3RvcnkvbWFjL0hp
c3RvcnlJdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OnNldFZpZXdT
dGF0ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjOjpleHBvc2VkVW5maWxsZWRBcmVhIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW06CisgICAgICAgICgtW1dlYkNvcmVNb3Rpb25NYW5h
Z2VyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQ29yZU1vdGlvbk1hbmFnZXIgaW5pdGlhbGl6
ZU9uTWFpblRocmVhZF0pOgorICAgICAgICAoLVtXZWJDb3JlTW90aW9uTWFuYWdlciBjaGVja0Ns
aWVudFN0YXR1c10pOgorICAgICAgICAoLVtXZWJDb3JlTW90aW9uTWFuYWdlciB1cGRhdGVdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW06CisgICAgICAgICgtW1dBS1Zp
ZXcgZGVhbGxvY10pOgorICAgICAgICAoLVtXQUtWaWV3IF9zdWJ2aWV3UmVmZXJlbmNlc10pOgor
ICAgICAgICAoLVtXQUtWaWV3IGFkZFN1YnZpZXc6XSk6CisgICAgICAgICgtW1dBS1ZpZXcgcmVt
b3ZlRnJvbVN1cGVydmlld10pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLVmlld0lu
dGVybmFsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViTmV0d29ya1N0YXRlT2JzZXJ2ZXIgaW5pdFdpdGhCbG9jazpd
KToKKyAgICAgICAgKC1bV2ViTmV0d29ya1N0YXRlT2JzZXJ2ZXIgZGVhbGxvY10pOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6Om1ha2VEZWxlZ2F0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5kV29y
ZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmROZXh0V29yZEZyb21JbmRleCk6CisK
IDIwMjEtMDItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXcgdXNhZ2Ugb2YgYWRvcHROUygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJlYTY2ZTNhMTA5YWNkMzRlZGVh
OWZhZTgxMTc1ZDNkMDJiZjIwZDIuLjc5ZTYzNGNjZmQ2Yjg2YTc1Nzg5NGMyZGI4OTg0NzYxMWNj
YWQxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMDItMTEgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2Yg
W29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjE3ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0g
aW4gV2ViS2l0IGJ5IHVzaW5nIHNtYXJ0IHBvaW50ZXJzLgorCisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dLT2JqZWN0Lm1tOgorICAgICAgICAoLVtXS09iamVjdCBkZWFsbG9jXSk6CisgICAgICAg
IChpbml0aWFsaXplVGFyZ2V0SWZOZWVkZWQpOgorICAgICAgICAoLVtXS09iamVjdCBmb3J3YXJk
aW5nVGFyZ2V0Rm9yU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dLT2JqZWN0IGZvcndhcmRJbnZv
Y2F0aW9uOl0pOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlUHJvcGVydHlBcHBsaWVyLm1tOgorICAgICAgICAoLVtVSVZpZXcgX3dlYl9zZXRTdWJ2aWV3
czpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfc25hcHNob3RSZWN0OmludG9JbWFnZU9mV2lkdGg6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBp
bml0V2l0aExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OmN1c3RvbVByb3RvY29sSUQ6
cmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBkZWFsbG9jXSk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3Rh
cnRMb2FkaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0lu
c3BlY3RvckhpZ2hsaWdodFZpZXcubW06CisgICAgICAgICgtW1dLSW5zcGVjdG9ySGlnaGxpZ2h0
VmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcgZGVhbGxvY10pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgX3JlbW92
ZUFsbExheWVyc10pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgX2NyZWF0
ZUxheWVyczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2VsZWN0UG9zaXRpb25BdFBvaW50
OnN0YXlpbmdXaXRoaW5Gb2N1c2VkRWxlbWVudDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnk6aW5EaXJlY3Rpb246
ZnJvbVBvaW50OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IG1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5OmluRGlyZWN0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dDp3aXRoQm91bmRhcnk6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS1Njcm9sbFZpZXcubW06CisgICAgICAgICgtW1dLU2Nyb2xsVmlldyBfdXBkYXRlRGVs
ZWdhdGVdKToKKyAgICAgICAgKC1bV0tTY3JvbGxWaWV3IGRlYWxsb2NdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW06CisgICAgICAgICgtW1dL
U2VsZWN0UG9wb3ZlciBpbml0V2l0aFZpZXc6aGFzR3JvdXBzOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1Rl
eHRJbnB1dFBhbmVsIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRQYW5lbCBpbml0
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbToKKyAgICAg
ICAgKCtbV0tQb3BvdmVyQ29sb3JXZWxsIF9jb2xvclBvcG92ZXJDcmVhdGVJZk5lY2Vzc2FyeTpd
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3RCYXNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbToKKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlUGFyZW50Ol0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbToKKyAgICAg
ICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBkZWFsbG9jXSk6CisgICAgICAgICgt
W1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgorCiAyMDIxLTAyLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3IHVzYWdlIG9mIGFkb3B0TlMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9n
CmluZGV4IDcxZDZlMzg4YmU5Yzk1MWIxMDRjMDNlYzBjMTNiOGVmM2ZmNzgxMmUuLjUyOTZmNDU0
MjNmMjM2YTQ3Nzg4YTIzMTA3NTFmNGU4ZjhlYWNlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0wMi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxl
YXNlXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMTc4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQg
YnkgdXNpbmcgc21hcnQgcG9pbnRlcnMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnRJT1MubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnRJT1M6OnJ1bk9wZW5Q
YW5lbCk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAoLVtX
ZWJQREZWaWV3IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViUERGVmlldyBzZXREYXRhU291cmNl
Ol0pOgorICAgICAgICAoLVtXZWJQREZWaWV3IF9jaGVja1BERlRpdGxlXSk6CisgICAgICAgICgt
W1dlYlBERlZpZXcgdGl0bGVdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhv
bGRlci5tbToKKyAgICAgICAgKC1bV2ViUERGVmlld1BsYWNlaG9sZGVyIF91cGRhdGVUaXRsZUZv
ckRvY3VtZW50SWZBdmFpbGFibGVdKToKKwogMjAyMS0wMS0xOSAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kdWxhcml6ZSBXZWJLaXRMZWdhY3kuZnJhbWV3
b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYTdlMjYxNTU3ZTgwNzM1YTczMzU0
NDkyZjdkODRlNzVlMDY4MDQwNS4uNmE2N2MwMzFlOWRlMGU0YzQ4ZTI2MDY4YWYyMzhiYzgzNzIy
NjVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MyBAQAorMjAy
MS0wMi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVj
ZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTc4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2Fn
ZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQgYnkgdXNpbmcgc21hcnQgcG9pbnRlcnMuCisK
KyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01Ob2Rl
IGFic29sdXRlUXVhZHNdKToKKyAgICAgICAgKC1bRE9NSFRNTEFyZWFFbGVtZW50IGFic29sdXRl
UXVhZHNXaXRoT3duZXI6XSk6CisgICAgICAgICogRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tOgor
ICAgICAgICAocmFpc2VET01FcnJvckV4Y2VwdGlvbik6CisgICAgICAgICogRGVmYXVsdERlbGVn
YXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViRGVmYXVsdFVJRGVs
ZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OmRlZmF1
bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5
Lm1tOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICgtW1dl
Ykhpc3RvcnlQcml2YXRlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUg
cmVtb3ZlSXRlbUZyb21EYXRlQ2FjaGVzOl0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0
ZSBhZGRJdGVtVG9EYXRlQ2FjaGVzOl0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSB2
aXNpdGVkVVJMOndpdGhUaXRsZTpdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgYWRk
SXRlbTpkaXNjYXJkRHVwbGljYXRlOl0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBy
ZWJ1aWxkSGlzdG9yeUJ5RGF5SWZOZWVkZWQ6XSk6CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2
YXRlIHJlbW92ZUFsbEl0ZW1zXSk6CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIG9yZGVy
ZWRMYXN0VmlzaXRlZERheXNdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgbG9hZEhp
c3RvcnlHdXRzRnJvbVVSTDpzYXZlZEl0ZW1zQ291bnQ6Y29sbGVjdERpc2NhcmRlZEl0ZW1zSW50
bzplcnJvcjpdKToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgYWRkVmlzaXRlZExpbmtz
VG9WaXNpdGVkTGlua1N0b3JlOl0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5IGxvYWRGcm9tVVJM
OmVycm9yOl0pOgorICAgICAgICAoLVtXZWJIaXN0b3J5IF92aXNpdGVkVVJMOndpdGhUaXRsZTpt
ZXRob2Q6d2FzRmFpbHVyZTpdKToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1t
OgorICAgICAgICAoLVtXZWJIaXN0b3J5SXRlbSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRh
dGlvbjpdKToKKyAgICAgICAgKiBNaXNjL1dlYkRvd25sb2FkLm1tOgorICAgICAgICAoLVtXZWJE
b3dubG9hZEludGVybmFsIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViRG93bmxvYWRJbnRlcm5h
bCBzZXRSZWFsRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYkRvd25sb2FkSW50ZXJuYWwgZG93
bmxvYWREaWRCZWdpbjpdKToKKyAgICAgICAgKC1bV2ViRG93bmxvYWRJbnRlcm5hbCBkb3dubG9h
ZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XSk6CisgICAgICAgICgtW1dlYkRv
d25sb2FkSW50ZXJuYWwgZG93bmxvYWQ6ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAo
LVtXZWJEb3dubG9hZEludGVybmFsIGRvd25sb2FkOmRpZFJlY2VpdmVEYXRhT2ZMZW5ndGg6XSk6
CisgICAgICAgICgtW1dlYkRvd25sb2FkSW50ZXJuYWwgZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6XSk6CisgICAgICAgICgtW1dlYkRvd25sb2FkSW50ZXJu
YWwgZG93bmxvYWQ6ZGlkQ3JlYXRlRGVzdGluYXRpb246XSk6CisgICAgICAgICgtW1dlYkRvd25s
b2FkSW50ZXJuYWwgZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAgICAgICgtW1dlYkRvd25sb2Fk
SW50ZXJuYWwgZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKiBNaXNjL1dl
Yk5TRGF0YUV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNEYXRhIF93ZWJraXRfcGFyc2VSRkM4MjJI
ZWFkZXJGaWVsZHNdKToKKyAgICAgICAgKiBNaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbToK
KyAgICAgICAgKC1bTlNQYXN0ZWJvYXJkIF93ZWJfd3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFj
aG1lbnQ6XSk6CisgICAgICAgICgtW05TUGFzdGVib2FyZCBfd2ViX2RlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZUZvckVsZW1lbnQ6VVJMOnRpdGxlOmFyY2hpdmU6c291cmNlOl0pOgorICAgICAgICAq
IFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6OnNwYXduUGx1Z2luSG9zdCk6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnBlcmZvcm1SZXF1ZXN0
KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgorICAgICAg
ICAoV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3IHBsdWdpblZpZXc6cmVjZWl2ZWREYXRhOl0pOgorICAgICAgICAoLVtXZWJOZXRz
Y2FwZVBsdWdpblZpZXcgbG9hZFBsdWdpblJlcXVlc3Q6XSk6CisgICAgICAgICgtW1dlYk5ldHNj
YXBlUGx1Z2luVmlldyBsb2FkUmVxdWVzdDppblRhcmdldDp3aXRoTm90aWZ5RGF0YTpzZW5kTm90
aWZpY2F0aW9uOl0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbToK
KyAgICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxlciBwbHVnaW5WaWV3OnJlY2VpdmVkUmVzcG9u
c2U6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbToKKyAgICAgICAg
KC1bV2ViUGx1Z2luRGF0YWJhc2UgcmVmcmVzaF0pOgorICAgICAgICAoLVtXZWJQbHVnaW5EYXRh
YmFzZSBfcmVtb3ZlUGx1Z2luOl0pOgorICAgICAgICAoLVtXZWJQbHVnaW5EYXRhYmFzZSBfc2Nh
bkZvck5ld1BsdWdpbnNdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAg
IChXZWJDaHJvbWVDbGllbnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ2hy
b21lQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDaHJvbWVD
bGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6
OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAoV2ViQ2hyb21l
Q2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpleGl0RnVs
bFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbToKKyAgICAgICAgKGF0dHJpYnV0ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lv
bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Zm9yY2VMYXlvdXRGb3JOb25IVE1MKToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3
UGFnZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeSBj
b25zdCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAg
ICAgICAocGx1Z2luVmlldyk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
UGx1Z2luKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5t
bToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbik6Cisg
ICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJbml0aWFsaXphdGlvbkxpc3RlbmVyIGlu
aXRpYWxpemF0aW9uQWxsb3dlZFdlYlZpZXc6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250
cm9sbGVyIGluaXRdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBp
bml0V2l0aEluc3BlY3RlZFdlYlZpZXc6aXNVbmRlclRlc3Q6XSk6CisgICAgICAgICgtW1dlYklu
c3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJJbnNwZWN0
b3JXaW5kb3dDb250cm9sbGVyIGZyb250ZW5kV2ViVmlld10pOgorICAgICAgICAoLVtXZWJJbnNw
ZWN0b3JXaW5kb3dDb250cm9sbGVyIHdpbmRvd10pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JX
aW5kb3dDb250cm9sbGVyIHNob3dXaW5kb3c6XSk6CisgICAgICAgICgtW1dlYkluc3BlY3Rvcldp
bmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3Vs
dExpc3RlbmVyOmFsbG93TXVsdGlwbGVGaWxlczpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJOb3RpZmljYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGll
bnQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6
Y2hlY2tQZXJtaXNzaW9uKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmUubW06CisgICAg
ICAgICgtW1dlYkFyY2hpdmVQcml2YXRlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQXJjaGl2
ZSBpbml0V2l0aE1haW5SZXNvdXJjZTpzdWJyZXNvdXJjZXM6c3ViZnJhbWVBcmNoaXZlczpdKToK
KyAgICAgICAgKC1bV2ViQXJjaGl2ZSBtYWluUmVzb3VyY2VdKToKKyAgICAgICAgKC1bV2ViQXJj
aGl2ZSBzdWJyZXNvdXJjZXNdKToKKyAgICAgICAgKC1bV2ViQXJjaGl2ZSBzdWJmcmFtZUFyY2hp
dmVzXSk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtX
ZWJEYXRhU291cmNlIF9kb2N1bWVudEZyYWdtZW50V2l0aEFyY2hpdmU6XSk6CisgICAgICAgICgt
W1dlYkRhdGFTb3VyY2UgX21ha2VSZXByZXNlbnRhdGlvbl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lUHJpdmF0ZSBkZWFsbG9jXSk6CisgICAg
ICAgICgtW1dlYkZyYW1lUHJpdmF0ZSBzZXRXZWJGcmFtZVZpZXc6XSk6CisgICAgICAgICgrW1dl
YkZyYW1lIF9jcmVhdGVGcmFtZVdpdGhQYWdlOmZyYW1lTmFtZTpmcmFtZVZpZXc6b3duZXJFbGVt
ZW50Ol0pOgorICAgICAgICAoK1tXZWJGcmFtZSBfY3JlYXRlTWFpbkZyYW1lV2l0aFBhZ2U6ZnJh
bWVOYW1lOmZyYW1lVmlldzpdKToKKyAgICAgICAgKCtbV2ViRnJhbWUgX2NyZWF0ZU1haW5GcmFt
ZVdpdGhTaW1wbGVIVE1MRG9jdW1lbnRXaXRoUGFnZTpmcmFtZVZpZXc6c3R5bGU6XSk6CisgICAg
ICAgICgtW1dlYkZyYW1lIGdldERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6
CisgICAgICAgICgtW1dlYkZyYW1lIGZyYW1lVmlld10pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
RnJhbWVJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJGcmFtZVZpZXdQcml2YXRlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViRnJh
bWVWaWV3IF9zY3JvbGxWaWV3XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfaW5zdGFsbF0p
OgorICAgICAgICAoLVtXZWJGcmFtZVZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAgICAgKC1b
V2ViRnJhbWVWaWV3IF9zZXRDdXN0b21TY3JvbGxWaWV3Q2xhc3M6XSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVl
bkNvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06Cisg
ICAgICAgICgtW1dlYkhUTUxWaWV3IF91cGRhdGVNb3VzZW92ZXJXaXRoRXZlbnQ6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJOYXZpZ2F0aW9uRGF0YS5tbToKKyAgICAgICAgKC1bV2ViTmF2aWdh
dGlvbkRhdGFQcml2YXRlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViTmF2aWdhdGlvbkRhdGEg
aW5pdFdpdGhVUkxTdHJpbmc6dGl0bGU6b3JpZ2luYWxSZXF1ZXN0OnJlc3BvbnNlOmhhc1N1YnN0
aXR1dGVEYXRhOmNsaWVudFJlZGlyZWN0U291cmNlOl0pOgorICAgICAgICAoLVtXZWJOYXZpZ2F0
aW9uRGF0YSB1cmxdKToKKyAgICAgICAgKC1bV2ViTmF2aWdhdGlvbkRhdGEgdGl0bGVdKToKKyAg
ICAgICAgKC1bV2ViTmF2aWdhdGlvbkRhdGEgb3JpZ2luYWxSZXF1ZXN0XSk6CisgICAgICAgICgt
W1dlYk5hdmlnYXRpb25EYXRhIHJlc3BvbnNlXSk6CisgICAgICAgICgtW1dlYk5hdmlnYXRpb25E
YXRhIGNsaWVudFJlZGlyZWN0U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZEb2N1
bWVudEV4dHJhcy5tbToKKyAgICAgICAgKGFsbFNjcmlwdHNJblBERkRvY3VtZW50KToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJQREZS
ZXByZXNlbnRhdGlvbiBmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAgICAgICgtW1dlYlBERlZpZXcgbWVudUZvckV2
ZW50Ol0pOgorICAgICAgICAoLVtXZWJQREZWaWV3IGNvdW50TWF0Y2hlc0ZvclRleHQ6aW5ET01S
YW5nZTpvcHRpb25zOmxpbWl0Om1hcmtNYXRjaGVzOl0pOgorICAgICAgICAoLVtXZWJQREZWaWV3
IGF0dHJpYnV0ZWRTdHJpbmddKToKKyAgICAgICAgKC1bV2ViUERGVmlldyBzZWxlY3Rpb25JbWFn
ZUZvcmNpbmdCbGFja1RleHQ6XSk6CisgICAgICAgICgtW1dlYlBERlZpZXcgX21lbnVJdGVtc0Zy
b21QREZLaXRGb3JFdmVudDpdKToKKyAgICAgICAgKC1bV2ViUERGVmlldyBfbmV4dE1hdGNoRm9y
OmRpcmVjdGlvbjpjYXNlU2Vuc2l0aXZlOndyYXA6ZnJvbVNlbGVjdGlvbjpzdGFydEluU2VsZWN0
aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUG9saWN5RGVsZWdhdGUubW06CisgICAgICAg
ICgtW1dlYlBvbGljeURlY2lzaW9uTGlzdGVuZXJQcml2YXRlIGluaXRXaXRoVGFyZ2V0OmFjdGlv
bjpdKToKKyAgICAgICAgKC1bV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lclByaXZhdGUgZGVhbGxv
Y10pOgorICAgICAgICAoLVtXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyIF91c2VQb2xpY3k6XSk6
CisgICAgICAgICgtW1dlYlBvbGljeURlY2lzaW9uTGlzdGVuZXIgX2ludmFsaWRhdGVdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJl
bmNlcyBfc2V0SUJDcmVhdG9ySUQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJTY3JpcHREZWJ1
Z2dlci5tbToKKyAgICAgICAgKFdlYlNjcmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tOgorICAgICAgICAo
LVtXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIgX2J1aWxkVUldKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV2ViVmlldyBfcmVnaXN0ZXJEcmFnZ2VkVHlwZXNdKToKKyAgICAgICAg
KC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpd
KToKKyAgICAgICAgKCtbV2ViVmlldyBfc3VwcG9ydGVkRmlsZUV4dGVuc2lvbnNdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnByZWZl
cmVuY2VzOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZG93bmxvYWRVUkw6XSk6
CisgICAgICAgICgtW1dlYlZpZXcgX29wZW5OZXdXaW5kb3dXaXRoUmVxdWVzdDpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBjYXJldENoYW5nZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRCYWNr
Z3JvdW5kQ29sb3I6XSk6CisgICAgICAgICgrW1dlYlZpZXcgc2V0TUlNRVR5cGVzU2hvd25Bc0hU
TUw6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0UHJlZmVyZW5jZXM6XSk6CisgICAgICAgICgt
W1dlYlZpZXcgc2V0UHJlZmVyZW5jZXNJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IHNldEN1cnJlbnROb2RlSGlnaGxpZ2h0Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IHN0b3BMb2Fk
aW5nQW5kQ2xlYXJdKToKKyAgICAgICAgKC1bV2ViVmlldyBfb3BlbkZyYW1lSW5OZXdXaW5kb3dG
cm9tTWVudTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2VhcmNoV2l0aEdvb2dsZUZyb21NZW51
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tOgorICAgICAgICAo
LVtXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbiBzZXRTdWJBbmltYXRpb246XSk6CisKIDIwMjEtMDIt
MTAgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBVc2UgZXZlbnQgbG9v
cCB0byBzZXQgdGl0bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5k
ZXggM2NlZTk2ZmUzNmY4NGRiOTI0NGFhMDkwNWQxNmZmZjcwMTA1MzUzYS4uZDQ3MjkwN2Y2MzUz
M2U0ODZiOTQ1NDgxN2I5MzRmMmIyMmNiYzMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KQEAgLTIzNjEsMTYgKzIzNjEsMTQgQEAgLSAoTlNBcnJheSAqKWFycmF5
T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKiltYXJrZXJzIGF0dHJpYnV0ZWQ6KEJPT0wp
YXR0cmkKICAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbigmbm9kZSwgbWFrZUNv
bnRhaW5lck9mZnNldFBvc2l0aW9uKGl0LnJhbmdlKCkuc3RhcnQpKTsKIAogICAgICAgICAgICAg
ICAgIGlmICghbGlzdE1hcmtlclRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcgPSBbW05TTXV0YWJsZUF0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdOwotICAgICAgICAgICAgICAgICAgICBBWEF0dHJpYnV0
ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcsICZub2RlLCBsaXN0TWFya2VyVGV4dCk7Ci0g
ICAgICAgICAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6YXR0clN0cmluZ107Ci0gICAgICAg
ICAgICAgICAgICAgIFthdHRyU3RyaW5nIHJlbGVhc2VdOworICAgICAgICAgICAgICAgICAgICBh
dXRvIGF0dHJTdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdF0pOworICAgICAgICAgICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRU
ZXh0KGF0dHJTdHJpbmcuZ2V0KCksICZub2RlLCBsaXN0TWFya2VyVGV4dCk7CisgICAgICAgICAg
ICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6YXR0clN0cmluZy5nZXQoKV07CiAgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqYXR0
clN0cmluZyA9IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF07Ci0gICAg
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5nLCAmbm9k
ZSwgaXQudGV4dCgpLmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDphdHRyU3RyaW5nXTsKLSAgICAgICAgICAgICAg
ICBbYXR0clN0cmluZyByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICBhdXRvIGF0dHJTdHJpbmcg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0pOworICAg
ICAgICAgICAgICAgIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoYXR0clN0cmluZy5nZXQo
KSwgJm5vZGUsIGl0LnRleHQoKS5jcmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkp
OworICAgICAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6YXR0clN0cmluZy5nZXQoKV07CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBOb2RlKiByZXBsYWNl
ZE5vZGUgPSBpdC5ub2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCAwNmVlYzZhOWI2Yzk2MzYwMmM5NTNiMmRi
ZTEyNDU1ZmQxYWJhNWRjLi5kYzRjZDEzMDkzMDFlMmM2OTY1MzBhNjU2ZjA2MjUyOTk5OWIyY2Ri
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENh
Y2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0
Q2FjaGVNYWMubW0KQEAgLTQyMyw3ICs0MjMsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RU
ZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdAog
ICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVEaWN0aW9u
YXJ5ICp1c2VySW5mbyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBh
Y2l0eTo1XTsKKyAgICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25h
cnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NV0pOwogICAgIGlmIChtX2lzU3luY2hyb25pemlu
Z1NlbGVjdGlvbikKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpAWUVTIGZvcktleTpOU0Fj
Y2Vzc2liaWxpdHlUZXh0U3RhdGVTeW5jS2V5XTsKICAgICBpZiAoaW50ZW50LnR5cGUgIT0gQVhU
ZXh0U3RhdGVDaGFuZ2VUeXBlVW5rbm93bikgewpAQCAtNDYyLDEyICs0NjIsMTAgQEAgdm9pZCBB
WE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhD
b3JlT2JqZWN0KiBvYmplY3QKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDp3cmFwcGVyIGZv
cktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlRWxlbWVudF07CiAKICAgICBpZiAoYXV0byBy
b290ID0gcm9vdFdlYkFyZWEoKSkgewotICAgICAgICBBWFBvc3ROb3RpZmljYXRpb25XaXRoVXNl
ckluZm8ocm9vdFdlYkFyZWEoKS0+d3JhcHBlcigpLCBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRl
eHRDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mbyk7CisgICAgICAgIEFYUG9zdE5vdGlmaWNh
dGlvbldpdGhVc2VySW5mbyhyb290V2ViQXJlYSgpLT53cmFwcGVyKCksIE5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkVGV4dENoYW5nZWROb3RpZmljYXRpb24sIHVzZXJJbmZvLmdldCgpKTsKICAgICAg
ICAgaWYgKHJvb3QtPndyYXBwZXIoKSAhPSBvYmplY3QtPndyYXBwZXIoKSkKLSAgICAgICAgICAg
IEFYUG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhvYmplY3QtPndyYXBwZXIoKSwgTlNBY2Nl
c3NpYmlsaXR5U2VsZWN0ZWRUZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbiwgdXNlckluZm8pOworICAg
ICAgICAgICAgQVhQb3N0Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKG9iamVjdC0+d3JhcHBlcigp
LCBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5m
by5nZXQoKSk7CiAgICAgfQotCi0gICAgW3VzZXJJbmZvIHJlbGVhc2VdOwogfQogCiBzdGF0aWMg
dm9pZCBhZGRUZXh0TWFya2VyRm9yKE5TTXV0YWJsZURpY3Rpb25hcnkqIGNoYW5nZSwgQVhDb3Jl
T2JqZWN0JiBvYmplY3QsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCkBAIC01MTIs
NyArNTEwLDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCoKIAogc3RhdGljIHZvaWQgcG9zdFVz
ZXJJbmZvRm9yQ2hhbmdlcyhBWENvcmVPYmplY3QmIHJvb3RXZWJBcmVhLCBBWENvcmVPYmplY3Qm
IG9iamVjdCwgTlNNdXRhYmxlQXJyYXkqIGNoYW5nZXMpCiB7Ci0gICAgTlNNdXRhYmxlRGljdGlv
bmFyeSAqdXNlckluZm8gPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2Fw
YWNpdHk6NF07CisgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjRdKTsKICAgICBbdXNlckluZm8gc2V0T2JqZWN0
OkAocGxhdGZvcm1DaGFuZ2VUeXBlRm9yV2ViQ29yZUNoYW5nZVR5cGUoQVhUZXh0U3RhdGVDaGFu
Z2VUeXBlRWRpdCkpIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0U3RhdGVDaGFuZ2VUeXBlS2V5
XTsKICAgICBpZiAoY2hhbmdlcy5jb3VudCkKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpj
aGFuZ2VzIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVzXTsKQEAgLTUyMCwx
MSArNTE4LDkgQEAgc3RhdGljIHZvaWQgcG9zdFVzZXJJbmZvRm9yQ2hhbmdlcyhBWENvcmVPYmpl
Y3QmIHJvb3RXZWJBcmVhLCBBWENvcmVPYmplY3QmIG9iamUKICAgICBpZiAoaWQgd3JhcHBlciA9
IG9iamVjdC53cmFwcGVyKCkpCiAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6d3JhcHBlciBm
b3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dENoYW5nZUVsZW1lbnRdOwogCi0gICAgQVhQb3N0Tm90
aWZpY2F0aW9uV2l0aFVzZXJJbmZvKHJvb3RXZWJBcmVhLndyYXBwZXIoKSwgTlNBY2Nlc3NpYmls
aXR5VmFsdWVDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mbyk7CisgICAgQVhQb3N0Tm90aWZp
Y2F0aW9uV2l0aFVzZXJJbmZvKHJvb3RXZWJBcmVhLndyYXBwZXIoKSwgTlNBY2Nlc3NpYmlsaXR5
VmFsdWVDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mby5nZXQoKSk7CiAgICAgaWYgKHJvb3RX
ZWJBcmVhLndyYXBwZXIoKSAhPSBvYmplY3Qud3JhcHBlcigpKQotICAgICAgICBBWFBvc3ROb3Rp
ZmljYXRpb25XaXRoVXNlckluZm8ob2JqZWN0LndyYXBwZXIoKSwgTlNBY2Nlc3NpYmlsaXR5VmFs
dWVDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mbyk7Ci0KLSAgICBbdXNlckluZm8gcmVsZWFz
ZV07CisgICAgICAgIEFYUG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhvYmplY3Qud3JhcHBl
cigpLCBOU0FjY2Vzc2liaWxpdHlWYWx1ZUNoYW5nZWROb3RpZmljYXRpb24sIHVzZXJJbmZvLmdl
dCgpKTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZv
cm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYVGV4dEVkaXRUeXBlIGRlbGV0
aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBkZWxldGVkVGV4dCwgQVhUZXh0RWRpdFR5cGUgaW5zZXJ0
aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBpbnNlcnRlZFRleHQsIGNvbnN0IFZpc2libGVQb3NpdGlv
biYgcG9zaXRpb24pCkBAIC01MzUsMTUgKzUzMSwxNCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBv
c3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVj
dAogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBOU011dGFibGVBcnJh
eSAqY2hhbmdlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml07
CisgICAgYXV0byBjaGFuZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OjJdKTsKICAgICBpZiAoTlNEaWN0aW9uYXJ5ICpjaGFuZ2UgPSB0ZXh0UmVw
bGFjZW1lbnRDaGFuZ2VEaWN0aW9uYXJ5KCpvYmplY3QsIGRlbGV0aW9uVHlwZSwgZGVsZXRlZFRl
eHQsIHBvc2l0aW9uKSkKICAgICAgICAgW2NoYW5nZXMgYWRkT2JqZWN0OmNoYW5nZV07CiAgICAg
aWYgKE5TRGljdGlvbmFyeSAqY2hhbmdlID0gdGV4dFJlcGxhY2VtZW50Q2hhbmdlRGljdGlvbmFy
eSgqb2JqZWN0LCBpbnNlcnRpb25UeXBlLCBpbnNlcnRlZFRleHQsIHBvc2l0aW9uKSkKICAgICAg
ICAgW2NoYW5nZXMgYWRkT2JqZWN0OmNoYW5nZV07CiAKICAgICBpZiAoYXV0byogcm9vdCA9IHJv
b3RXZWJBcmVhKCkpCi0gICAgICAgIHBvc3RVc2VySW5mb0ZvckNoYW5nZXMoKnJvb3QsICpvYmpl
Y3QsIGNoYW5nZXMpOwotICAgIFtjaGFuZ2VzIHJlbGVhc2VdOworICAgICAgICBwb3N0VXNlcklu
Zm9Gb3JDaGFuZ2VzKCpyb290LCAqb2JqZWN0LCBjaGFuZ2VzLmdldCgpKTsKIH0KIAogdm9pZCBB
WE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb25Gb3JU
ZXh0Q29udHJvbChBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBkZWxldGVkVGV4
dCwgY29uc3QgU3RyaW5nJiBpbnNlcnRlZFRleHQsIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
JiB0ZXh0Q29udHJvbCkKQEAgLTU1NCwxNSArNTQ5LDE0IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woQVhD
b3JlCiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TTXV0YWJsZUFy
cmF5ICpjaGFuZ2VzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eToy
XTsKKyAgICBhdXRvIGNoYW5nZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6Ml0pOwogICAgIGlmIChOU0RpY3Rpb25hcnkgKmNoYW5nZSA9IHRleHRS
ZXBsYWNlbWVudENoYW5nZURpY3Rpb25hcnkoKm9iamVjdCwgQVhUZXh0RWRpdFR5cGVEZWxldGUs
IGRlbGV0ZWRUZXh0LCB0ZXh0Q29udHJvbCkpCiAgICAgICAgIFtjaGFuZ2VzIGFkZE9iamVjdDpj
aGFuZ2VdOwogICAgIGlmIChOU0RpY3Rpb25hcnkgKmNoYW5nZSA9IHRleHRSZXBsYWNlbWVudENo
YW5nZURpY3Rpb25hcnkoKm9iamVjdCwgQVhUZXh0RWRpdFR5cGVJbnNlcnQsIGluc2VydGVkVGV4
dCwgdGV4dENvbnRyb2wpKQogICAgICAgICBbY2hhbmdlcyBhZGRPYmplY3Q6Y2hhbmdlXTsKIAog
ICAgIGlmIChhdXRvKiByb290ID0gcm9vdFdlYkFyZWEoKSkKLSAgICAgICAgcG9zdFVzZXJJbmZv
Rm9yQ2hhbmdlcygqcm9vdCwgKm9iamVjdCwgY2hhbmdlcyk7Ci0gICAgW2NoYW5nZXMgcmVsZWFz
ZV07CisgICAgICAgIHBvc3RVc2VySW5mb0ZvckNoYW5nZXMoKnJvb3QsICpvYmplY3QsIGNoYW5n
ZXMuZ2V0KCkpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxh
dGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogYXhGcmFtZU9iamVjdCwgQVhM
b2FkaW5nRXZlbnQgbG9hZGluZ0V2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQppbmRleCAyZjdmNzJiYWFlM2RkMTg4NTJmOGQ3ZDVjMWEyZGU4OGI0ZjVhZjA2Li5l
ZGY0NTc0ZDIxMzAxMTZiNGYyMGFhNjRjMzE4MDk5Mzk4NDI1MDg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMTMyMSw3ICsxMzIxLDYgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgc3RhdGljIE5TQXJyYXkqIGJ1dHRvbkF0
dHJzID0gbmlsOwogICAgIHN0YXRpYyBOU0FycmF5KiBzY3JvbGxWaWV3QXR0cnMgPSBuaWw7CiAg
ICAgc3RhdGljIE5TQXJyYXkqIGluY3JlbWVudG9yQXR0cnMgPSBuaWw7Ci0gICAgTlNNdXRhYmxl
QXJyYXkqIHRlbXBBcnJheTsKICAgICBpZiAoYXR0cmlidXRlcyA9PSBuaWwpIHsKICAgICAgICAg
YXR0cmlidXRlcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOiBOU0FjY2Vzc2li
aWxpdHlSb2xlQXR0cmlidXRlLAogICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0
dHJpYnV0ZSwKQEAgLTEzNjQsMTUgKzEzNjMsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwogICAgIH0KICAg
ICBpZiAoYW5jaG9yQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107CisgICAgICAgIGF1dG8g
dGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5
OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5VVJMQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5TGlua1JlbGF0aW9uc2hpcFR5cGVBdHRyaWJ1dGVdOwotICAgICAgICBh
bmNob3JBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwot
ICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBhbmNob3JBdHRycyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KICAgICBp
ZiAod2ViQXJlYUF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRl
bXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTph
dHRyaWJ1dGVzXSk7CiAgICAgICAgIC8vIFdlYkFyZWFzIHNob3VsZCBub3QgZXhwb3NlIEFYU3Vi
cm9sZS4KICAgICAgICAgW3RlbXBBcnJheSByZW1vdmVPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U3Vi
cm9sZUF0dHJpYnV0ZV07CiAgICAgICAgIC8vIFdlYkFyZWFzIHNob3VsZCBub3QgZXhwb3NlIGFu
Y2VzdG9yIGF0dHJpYnV0ZXMKQEAgLTEzODcsMTEgKzEzODUsMTAgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNw
YXRjaEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVdlYlNlc3Npb25JREF0dHJpYnV0ZV07Ci0gICAgICAgIHdlYkFyZWFBdHRycyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5
IHJlbGVhc2VdOworICAgICAgICB3ZWJBcmVhQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKHRleHRBdHRycyA9PSBu
aWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlOdW1iZXJPZkNoYXJhY3RlcnNB
dHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlT
ZWxlY3RlZFRleHRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZV07CkBAIC0xNDAzLDU3ICsxNDAw
LDUxIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZh
bHVlQXV0b2ZpbGxlZEF0dHJpYnV0ZV07Ci0gICAgICAgIHRleHRBdHRycyA9IFtbTlNBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVh
c2VdOworICAgICAgICB0ZXh0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKGxpc3RBdHRycyA9PSBuaWwpIHsKLSAg
ICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTph
dHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxk
cmVuQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIGxpc3RBdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBb
dGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBsaXN0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKGxpc3RCb3hB
dHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTpsaXN0QXR0cnNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpsaXN0QXR0cnNdKTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UmVx
dWlyZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICBsaXN0Qm94QXR0cnMg
PSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3Rl
bXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgbGlzdEJveEF0dHJzID0gW1tOU0FycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAgICAgfQogICAgIGlmIChyYW5nZUF0
dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF4
VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07
Ci0gICAgICAgIHJhbmdlQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVt
cEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgcmFuZ2VBdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAg
IH0KICAgICBpZiAobWVudUJhckF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc107Cisg
ICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxkcmVuQXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVV
SUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0gICAgICAgIG1lbnVCYXJBdHRycyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFy
cmF5IHJlbGVhc2VdOworICAgICAgICBtZW51QmFyQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKG1lbnVBdHRycyA9
PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTpjb21tb25NZW51QXR0cnNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0
cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0
ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1
dGVdOwotICAgICAgICBtZW51QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgbWVudUF0
dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CiAg
ICAgfQogICAgIGlmIChtZW51SXRlbUF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc107
CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc10pOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SGVscEF0dHJpYnV0ZV07CkBA
IC0xNDY3LDggKzE0NTgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhNZW51SXRlbVByaW1h
cnlVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlTZXJ2ZXNBc1RpdGxlRm9yVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGVdOwot
ICAgICAgICBtZW51SXRlbUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRl
bXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIG1lbnVJdGVt
QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsK
ICAgICB9CiAgICAgaWYgKG1lbnVCdXR0b25BdHRycyA9PSBuaWwpIHsKICAgICAgICAgbWVudUJ1
dHRvbkF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNBY2Nlc3NpYmls
aXR5Um9sZUF0dHJpYnV0ZSwKQEAgLTE0ODMsNDIgKzE0NzMsMzggQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vz
c2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwgbmlsXTsKICAgICB9CiAgICAgaWYgKGNvbnRyb2xB
dHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10p
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxl
bWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07Ci0gICAgICAgIGNvbnRyb2xB
dHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAg
ICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBjb250cm9sQXR0cnMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKGlu
Y3JlbWVudG9yQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107CisgICAgICAgIGF1dG8gdGVt
cEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0
dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
SW5jcmVtZW50QnV0dG9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5RGVjcmVtZW50QnV0dG9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF4
VmFsdWVBdHRyaWJ1dGVdOwotICAgICAgICBpbmNyZW1lbnRvckF0dHJzID0gW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFz
ZV07CisgICAgICAgIGluY3JlbWVudG9yQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKGJ1dHRvbkF0dHJzID09IG5p
bCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAg
IC8vIEJ1dHRvbnMgc2hvdWxkIG5vdCBleHBvc2UgQVhWYWx1ZS4KICAgICAgICAgW3RlbXBBcnJh
eSByZW1vdmVPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tl
eUF0dHJpYnV0ZV07Ci0gICAgICAgIGJ1dHRvbkF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAg
ICAgIGJ1dHRvbkF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJh
eS5nZXQoKV07CiAgICAgfQogICAgIGlmIChjb21ib0JveEF0dHJzID09IG5pbCkgewotICAgICAg
ICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbnRy
b2xBdHRyc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbnRyb2xBdHRyc10pOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlFeHBhbmRlZEF0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRl
XTsKLSAgICAgICAgY29tYm9Cb3hBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBjb21i
b0JveEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQo
KV07CiAgICAgfQogICAgIGlmICh0YWJsZUF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJy
YXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwor
ICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdOwpAQCAtMTUz
MSw5MSArMTUxNyw4MCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93Q291bnRBdHRyaWJ1
dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBQ29s
dW1uQ291bnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlBUklBUm93Q291bnRBdHRyaWJ1dGVdOwotICAgICAgICB0YWJsZUF0dHJzID0gW1tO
U0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJy
YXkgcmVsZWFzZV07CisgICAgICAgIHRhYmxlQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKHRhYmxlUm93QXR0cnMg
PT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6YXR0cmlidXRlc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVd
OwotICAgICAgICB0YWJsZVJvd0F0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5
OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIHRhYmxl
Um93QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgp
XTsKICAgICB9CiAgICAgaWYgKHRhYmxlQ29sQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBB
cnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107
CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdOwot
ICAgICAgICB0YWJsZUNvbEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRl
bXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIHRhYmxlQ29s
QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsK
ICAgICB9CiAgICAgaWYgKHRhYmxlQ2VsbEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJy
YXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwor
ICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVJvd0luZGV4UmFuZ2VBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5JbmRleFJhbmdlQXR0cmlidXRlXTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSGVhZGVy
VUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVJvd0hlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBQ29sdW1uSW5kZXhBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBUm93SW5kZXhB
dHRyaWJ1dGVdOwotICAgICAgICB0YWJsZUNlbGxBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAg
ICAgICB0YWJsZUNlbGxBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1w
QXJyYXkuZ2V0KCldOwogICAgIH0KICAgICBpZiAoZ3JvdXBBdHRycyA9PSBuaWwpIHsKLSAgICAg
ICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAg
ICAgIGdyb3VwQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5
XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICAgICAgZ3JvdXBBdHRycyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KICAg
ICBpZiAoaW5wdXRJbWFnZUF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmJ1dHRvbkF0dHJzXTsKKyAgICAgICAg
YXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6YnV0dG9uQXR0cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKLSAgICAgICAgaW5wdXRJbWFnZUF0dHJzID0gW1tOU0Fy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkg
cmVsZWFzZV07CisgICAgICAgIGlucHV0SW1hZ2VBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwogICAgIH0KICAgICBpZiAocGFzc3dvcmRGaWVs
ZEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVz
XSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlF
bGVtZW50QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXV0b2ZpbGxlZEF0dHJp
YnV0ZV07Ci0gICAgICAgIHBhc3N3b3JkRmllbGRBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAg
ICAgICBwYXNzd29yZEZpZWxkQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKHRhYkxpc3RBdHRycyA9PSBuaWwpIHsK
LSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTphdHRyaWJ1dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0
dHJpYnV0ZV07Ci0gICAgICAgIHRhYkxpc3RBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAg
ICB0YWJMaXN0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5
LmdldCgpXTsKICAgICB9CiAgICAgaWYgKG91dGxpbmVBdHRycyA9PSBuaWwpIHsKLSAgICAgICAg
dGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1
dGVzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
QXR0cmlidXRlXTsKLSAgICAgICAgb3V0bGluZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAg
ICAgIG91dGxpbmVBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJy
YXkuZ2V0KCldOwogICAgIH0KICAgICBpZiAob3V0bGluZVJvd0F0dHJzID09IG5pbCkgewotICAg
ICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRh
YmxlUm93QXR0cnNdOworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0YWJsZVJvd0F0dHJzXSk7CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NpbmdBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRCeVJv
d0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eURpc2Nsb3N1cmVMZXZlbEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFy
cmF5IHJlbW92ZU9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV07Ci0gICAgICAg
IG91dGxpbmVSb3dBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJy
YXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICBvdXRsaW5lUm93QXR0
cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAg
ICB9CiAgICAgaWYgKHNjcm9sbFZpZXdBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5
ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKKyAg
ICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlDb250ZW50c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUhvcml6b250YWxTY3JvbGxCYXJBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWZXJ0aWNhbFNjcm9sbEJh
ckF0dHJpYnV0ZV07Ci0gICAgICAgIHNjcm9sbFZpZXdBdHRycyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwor
ICAgICAgICBzY3JvbGxWaWV3QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAKICAgICBOU0FycmF5ICpvYmplY3RBdHRyaWJ1dGVz
ID0gYXR0cmlidXRlczsKQEAgLTMxMjgsNyArMzEwMyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmICh0ZXh0UGFyYW1BdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgTlNNdXRhYmxlQXJyYXkqIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6cGFyYW1BdHRyc107CisgICAgICAgIGF1dG8gdGVtcEFycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnBhcmFtQXR0
cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhMaW5lRm9y
SW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6KE5TU3RyaW5nKilrQVhSYW5nZUZvckxpbmVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhTdHJpbmdGb3JSYW5nZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwpAQCAtMzEzOCwyMiArMzExMywxOSBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
KE5TU3RyaW5nKilrQVhSVEZGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWEF0dHJpYnV0ZWRTdHJpbmdGb3JS
YW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDooTlNTdHJpbmcqKWtBWFN0eWxlUmFuZ2VGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVd
OwotICAgICAgICB0ZXh0UGFyYW1BdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgICAgICB0ZXh0
UGFyYW1BdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0
KCldOwogICAgIH0KICAgICBpZiAodGFibGVQYXJhbUF0dHJzID09IG5pbCkgewotICAgICAgICBO
U011dGFibGVBcnJheSogdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTpwYXJhbUF0dHJzXTsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6cGFyYW1BdHRyc10pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDZWxsRm9yQ29sdW1uQW5kUm93
UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07Ci0gICAgICAgIHRhYmxlUGFyYW1BdHRycyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5
IHJlbGVhc2VdOworICAgICAgICB0YWJsZVBhcmFtQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKICAgICB9CiAgICAgaWYgKCF3ZWJBcmVhUGFy
YW1BdHRycykgewotICAgICAgICBOU011dGFibGVBcnJheSogdGVtcEFycmF5ID0gW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpwYXJhbUF0dHJzXTsKKyAgICAgICAgYXV0byB0
ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
cGFyYW1BdHRyc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklzVmFsaWRQYXJhbWV0
ZXJpemVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5SW5kZXhGb3JUZXh0TWFya2VyUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07Ci0gICAgICAg
IHdlYkFyZWFQYXJhbUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBB
cnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgICAgIHdlYkFyZWFQYXJh
bUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07
CiAgICAgfQogCiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KaW5kZXggZGViODA5NzI1YmNiMDVkY2E0ZTRh
YTQ2NGY4OGRhMzA3YTIxODdhOC4uYzU5MGQ0OTMwNzlmYmU3ZDYzMWY0YjA1OTVkNmI0NjJjNjUx
OTU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCkBAIC0yNDUsOSArMjQ1
LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICBpbnRlcnAuc2V0
R2xvYmFsT2JqZWN0KGdsb2JhbCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0ID0gaW50ZXJwLmdsb2JhbE9iamVjdCgpOwogICAgICAgICAKLSAgICAgICAgTXlG
aXJzdEludGVyZmFjZSAqbXlJbnRlcmZhY2UgPSBbW015Rmlyc3RJbnRlcmZhY2UgYWxsb2NdIGlu
aXRdOworICAgICAgICBhdXRvIG15SW50ZXJmYWNlID0gYWRvcHROUyhbW015Rmlyc3RJbnRlcmZh
Y2UgYWxsb2NdIGluaXRdKTsKICAgICAgICAgCi0gICAgICAgIGdsb2JhbC5wdXQobGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhsZXhpY2FsR2xvYmFsT2JqZWN0LCAi
bXlJbnRlcmZhY2UiKSwgSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoSW5zdGFuY2U6Ok9i
amVjdGl2ZUNMYW5ndWFnZSwgKHZvaWQgKilteUludGVyZmFjZSkpOworICAgICAgICBnbG9iYWwu
cHV0KGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEds
b2JhbE9iamVjdCwgIm15SW50ZXJmYWNlIiksIEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0
KEluc3RhbmNlOjpPYmplY3RpdmVDTGFuZ3VhZ2UsICh2b2lkICopbXlJbnRlcmZhY2UuZ2V0KCkp
KTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CiAg
ICAgICAgICAgICBjb25zdCBjaGFyICpjb2RlID0gcmVhZEphdmFTY3JpcHRGcm9tRmlsZShhcmd2
W2ldKTsKQEAgLTI3OCw3ICsyNzgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFtteUludGVyZmFj
ZSByZWxlYXNlXTsKKyAgICAgICAgbXlJbnRlcmZhY2UgPSBuaWw7CiAgICAgICAgIFtwb29sIGRy
YWluXTsKICAgICB9IC8vIGVuZCBibG9jaywgc28gdGhhdCBJbnRlcnByZXRlciBhbmQgZ2xvYmFs
IGdldCBkZWxldGVkCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KaW5kZXggNWE4YjRmZjRhMjBiNGI1ODU4MGM0MWM1OWZmMWU1YzUwOGJkY2Ux
MS4uNzJkYTExYTc1MWU4ZjlkZDNhNDQyZDU3YmQ5MWMyYjE5YzUzMTNjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjkzLDE5ICsyOTMs
MTkgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFJldGFpblB0cjxDRlR5cGVSZWY+LCBSZWZQdHI8
RWxlbWVudD4+IG1fdGV4dFRhYmxlRm9vdGVyczsKICAgICBIYXNoTWFwPFJlZlB0cjxFbGVtZW50
PiwgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4+IG1fYWdncmVnYXRlZEF0dHJpYnV0ZXNGb3JFbGVt
ZW50czsKIAotICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKl9hdHRyU3RyOwotICAgIE5T
TXV0YWJsZURpY3Rpb25hcnkgKl9kb2N1bWVudEF0dHJzOworICAgIFJldGFpblB0cjxOU011dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nPiBfYXR0clN0cjsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGlj
dGlvbmFyeT4gX2RvY3VtZW50QXR0cnM7CiAgICAgTlNVUkwgKl9iYXNlVVJMOwotICAgIE5TTXV0
YWJsZUFycmF5ICpfdGV4dExpc3RzOwotICAgIE5TTXV0YWJsZUFycmF5ICpfdGV4dEJsb2NrczsK
LSAgICBOU011dGFibGVBcnJheSAqX3RleHRUYWJsZXM7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKl90
ZXh0VGFibGVTcGFjaW5nczsKLSAgICBOU011dGFibGVBcnJheSAqX3RleHRUYWJsZVBhZGRpbmdz
OwotICAgIE5TTXV0YWJsZUFycmF5ICpfdGV4dFRhYmxlUm93czsKLSAgICBOU011dGFibGVBcnJh
eSAqX3RleHRUYWJsZVJvd0FycmF5czsKLSAgICBOU011dGFibGVBcnJheSAqX3RleHRUYWJsZVJv
d0JhY2tncm91bmRDb2xvcnM7Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX2ZvbnRDYWNoZTsK
LSAgICBOU011dGFibGVBcnJheSAqX3dyaXRpbmdEaXJlY3Rpb25BcnJheTsKKyAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IF90ZXh0TGlzdHM7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBfdGV4dEJsb2NrczsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF90ZXh0VGFi
bGVzOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX3RleHRUYWJsZVNwYWNpbmdzOwor
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX3RleHRUYWJsZVBhZGRpbmdzOworICAgIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4gX3RleHRUYWJsZVJvd3M7CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiBfdGV4dFRhYmxlUm93QXJyYXlzOworICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gX3RleHRUYWJsZVJvd0JhY2tncm91bmRDb2xvcnM7CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+IF9mb250Q2FjaGU7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBfd3JpdGluZ0RpcmVjdGlvbkFycmF5OwogICAgIAogICAgIENHRmxvYXQgX2RlZmF1bHRU
YWJJbnRlcnZhbDsKICAgICBOU1VJbnRlZ2VyIF9kb21SYW5nZVN0YXJ0SW5kZXg7CkBAIC0zNjAs
MTkgKzM2MCwxOSBAQCBIVE1MQ29udmVydGVyOjpIVE1MQ29udmVydGVyKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSkKICAgICA6IG1fc3RhcnQobWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKHJh
bmdlLnN0YXJ0KSkKICAgICAsIG1fZW5kKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihyYW5n
ZS5lbmQpKQogewotICAgIF9hdHRyU3RyID0gW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0XTsKLSAgICBfZG9jdW1lbnRBdHRycyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF07CisgICAgX2F0dHJTdHIgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdF0pOworICAgIF9kb2N1bWVudEF0dHJzID0gYWRvcHROUyhbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBfYmFzZVVSTCA9IG5pbDsKLSAg
ICBfdGV4dExpc3RzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgX3RleHRC
bG9ja3MgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICBfdGV4dFRhYmxlcyA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIF90ZXh0VGFibGVTcGFjaW5ncyA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIF90ZXh0VGFibGVQYWRkaW5ncyA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIF90ZXh0VGFibGVSb3dzID0gW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgX3RleHRUYWJsZVJvd0FycmF5cyA9IFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIF90ZXh0VGFibGVSb3dCYWNrZ3JvdW5k
Q29sb3JzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgX2ZvbnRDYWNoZSA9
IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgX3dyaXRpbmdEaXJlY3Rp
b25BcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIF90ZXh0TGlzdHMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBfdGV4dEJsb2Nr
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIF90ZXh0VGFi
bGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgX3RleHRU
YWJsZVNwYWNpbmdzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Cisg
ICAgX3RleHRUYWJsZVBhZGRpbmdzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XSk7CisgICAgX3RleHRUYWJsZVJvd3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKKyAgICBfdGV4dFRhYmxlUm93QXJyYXlzID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgX3RleHRUYWJsZVJvd0JhY2tncm91bmRDb2xvcnMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBfZm9udENhY2hl
ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBfd3Jp
dGluZ0RpcmVjdGlvbkFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7CiAKICAgICBfZGVmYXVsdFRhYkludGVydmFsID0gMzY7CiAgICAgX2RvbVJhbmdlU3RhcnRJ
bmRleCA9IDA7CkBAIC0zODUsMjEgKzM4NSw3IEBAIEhUTUxDb252ZXJ0ZXI6OkhUTUxDb252ZXJ0
ZXIoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogICAgIF9jYWNoZXMgPSBtYWtlVW5pcXVlPEhU
TUxDb252ZXJ0ZXJDYWNoZXM+KCk7CiB9CiAKLUhUTUxDb252ZXJ0ZXI6On5IVE1MQ29udmVydGVy
KCkKLXsKLSAgICBbX2F0dHJTdHIgcmVsZWFzZV07Ci0gICAgW19kb2N1bWVudEF0dHJzIHJlbGVh
c2VdOwotICAgIFtfdGV4dExpc3RzIHJlbGVhc2VdOwotICAgIFtfdGV4dEJsb2NrcyByZWxlYXNl
XTsKLSAgICBbX3RleHRUYWJsZXMgcmVsZWFzZV07Ci0gICAgW190ZXh0VGFibGVTcGFjaW5ncyBy
ZWxlYXNlXTsKLSAgICBbX3RleHRUYWJsZVBhZGRpbmdzIHJlbGVhc2VdOwotICAgIFtfdGV4dFRh
YmxlUm93cyByZWxlYXNlXTsKLSAgICBbX3RleHRUYWJsZVJvd0FycmF5cyByZWxlYXNlXTsKLSAg
ICBbX3RleHRUYWJsZVJvd0JhY2tncm91bmRDb2xvcnMgcmVsZWFzZV07Ci0gICAgW19mb250Q2Fj
aGUgcmVsZWFzZV07Ci0gICAgW193cml0aW5nRGlyZWN0aW9uQXJyYXkgcmVsZWFzZV07Ci19CitI
VE1MQ29udmVydGVyOjp+SFRNTENvbnZlcnRlcigpID0gZGVmYXVsdDsKIAogQXR0cmlidXRlZFN0
cmluZyBIVE1MQ29udmVydGVyOjpjb252ZXJ0KCkKIHsKQEAgLTk3OCw3ICs5NjQsNyBAQCBOU0Rp
Y3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxl
bWVudCYgZWxlbWVudCkKICAgICBpZiAoIWZvbnQpIHsKICAgICAgICAgU3RyaW5nIGZvbnROYW1l
ID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlGb250
RmFtaWx5KTsKICAgICAgICAgaWYgKGZvbnROYW1lLmxlbmd0aCgpKQotICAgICAgICAgICAgZm9u
dCA9IF9mb250Rm9yTmFtZUFuZFNpemUoZm9udE5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2Uo
KSwgZm9udFNpemUsIF9mb250Q2FjaGUpOworICAgICAgICAgICAgZm9udCA9IF9mb250Rm9yTmFt
ZUFuZFNpemUoZm9udE5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgZm9udFNpemUsIF9m
b250Q2FjaGUuZ2V0KCkpOwogICAgICAgICBpZiAoIWZvbnQpCiAgICAgICAgICAgICBmb250ID0g
W1BsYXRmb3JtRm9udENsYXNzIGZvbnRXaXRoTmFtZTpAIlRpbWVzIiBzaXplOmZvbnRTaXplXTsK
IApAQCAtMTA4NCwxMSArMTA3MCwxMSBAQCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNv
bXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAogICAgIEVsZW1l
bnQqIGJsb2NrRWxlbWVudCA9IF9ibG9ja0xldmVsRWxlbWVudEZvck5vZGUoJmVsZW1lbnQpOwog
ICAgIGlmICgmZWxlbWVudCAhPSBibG9ja0VsZW1lbnQgJiYgW193cml0aW5nRGlyZWN0aW9uQXJy
YXkgY291bnRdID4gMCkKLSAgICAgICAgW2F0dHJzIHNldE9iamVjdDpbTlNBcnJheSBhcnJheVdp
dGhBcnJheTpfd3JpdGluZ0RpcmVjdGlvbkFycmF5XSBmb3JLZXk6TlNXcml0aW5nRGlyZWN0aW9u
QXR0cmlidXRlTmFtZV07CisgICAgICAgIFthdHRycyBzZXRPYmplY3Q6W05TQXJyYXkgYXJyYXlX
aXRoQXJyYXk6X3dyaXRpbmdEaXJlY3Rpb25BcnJheS5nZXQoKV0gZm9yS2V5Ok5TV3JpdGluZ0Rp
cmVjdGlvbkF0dHJpYnV0ZU5hbWVdOwogCiAgICAgaWYgKGJsb2NrRWxlbWVudCkgewogICAgICAg
ICBFbGVtZW50JiBjb3JlQmxvY2tFbGVtZW50ID0gKmJsb2NrRWxlbWVudDsKLSAgICAgICAgTlNN
dXRhYmxlUGFyYWdyYXBoU3R5bGUgKnBhcmFncmFwaFN0eWxlID0gW2RlZmF1bHRQYXJhZ3JhcGhT
dHlsZSgpIG11dGFibGVDb3B5XTsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVBhcmFncmFw
aFN0eWxlPiBwYXJhZ3JhcGhTdHlsZSA9IGFkb3B0TlMoW2RlZmF1bHRQYXJhZ3JhcGhTdHlsZSgp
IG11dGFibGVDb3B5XSk7CiAgICAgICAgIHVuc2lnbmVkIGhlYWRpbmcgPSAwOwogICAgICAgICBp
ZiAoY29yZUJsb2NrRWxlbWVudC5oYXNUYWdOYW1lKGgxVGFnKSkKICAgICAgICAgICAgIGhlYWRp
bmcgPSAxOwpAQCAtMTE1MCwxMSArMTEzNiwxMCBAQCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0
ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICAg
ICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0UGFyYWdyYXBoU3BhY2luZzptYXJnaW5Cb3R0
b21dOwogICAgICAgICB9CiAgICAgICAgIGlmIChbX3RleHRMaXN0cyBjb3VudF0gPiAwKQotICAg
ICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldFRleHRMaXN0czpfdGV4dExpc3RzXTsKKyAgICAg
ICAgICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRUZXh0TGlzdHM6X3RleHRMaXN0cy5nZXQoKV07CiAg
ICAgICAgIGlmIChbX3RleHRCbG9ja3MgY291bnRdID4gMCkKLSAgICAgICAgICAgIFtwYXJhZ3Jh
cGhTdHlsZSBzZXRUZXh0QmxvY2tzOl90ZXh0QmxvY2tzXTsKLSAgICAgICAgW2F0dHJzIHNldE9i
amVjdDpwYXJhZ3JhcGhTdHlsZSBmb3JLZXk6TlNQYXJhZ3JhcGhTdHlsZUF0dHJpYnV0ZU5hbWVd
OwotICAgICAgICBbcGFyYWdyYXBoU3R5bGUgcmVsZWFzZV07CisgICAgICAgICAgICBbcGFyYWdy
YXBoU3R5bGUgc2V0VGV4dEJsb2NrczpfdGV4dEJsb2Nrcy5nZXQoKV07CisgICAgICAgIFthdHRy
cyBzZXRPYmplY3Q6cGFyYWdyYXBoU3R5bGUuZ2V0KCkgZm9yS2V5Ok5TUGFyYWdyYXBoU3R5bGVB
dHRyaWJ1dGVOYW1lXTsKICAgICB9CiAgICAgcmV0dXJuIGF0dHJzOwogfQpAQCAtMTkwOSw3ICsx
ODk0LDcgQEAgdm9pZCBIVE1MQ29udmVydGVyOjpfYWRkTWFya2Vyc1RvTGlzdChOU1RleHRMaXN0
ICpsaXN0LCBOU1JhbmdlIHJhbmdlKQogICAgIE5TRGljdGlvbmFyeSAqYXR0cnNUb0luc2VydCA9
IG5pbDsKICAgICBQbGF0Zm9ybUZvbnQgKmZvbnQ7CiAgICAgTlNQYXJhZ3JhcGhTdHlsZSAqcGFy
YWdyYXBoU3R5bGU7Ci0gICAgTlNNdXRhYmxlUGFyYWdyYXBoU3R5bGUgKm5ld1N0eWxlOworICAg
IFJldGFpblB0cjxOU011dGFibGVQYXJhZ3JhcGhTdHlsZT4gbmV3U3R5bGU7CiAgICAgTlNUZXh0
VGFiICp0YWIgPSBuaWw7CiAgICAgTlNUZXh0VGFiICp0YWJUb1JlbW92ZTsKICAgICBOU1Jhbmdl
IHBhcmFncmFwaFJhbmdlOwpAQCAtMTk0OCw3ICsxOTMzLDcgQEAgdm9pZCBIVE1MQ29udmVydGVy
OjpfYWRkTWFya2Vyc1RvTGlzdChOU1RleHRMaXN0ICpsaXN0LCBOU1JhbmdlIHJhbmdlKQogICAg
ICAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBoUmFuZ2UubG9jYXRpb24gPCBfZG9tUmFuZ2VT
dGFydEluZGV4KQogICAgICAgICAgICAgICAgICAgICAgICAgX2RvbVJhbmdlU3RhcnRJbmRleCAr
PSBpbnNlcnRMZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICBuZXdTdHlsZSA9IFtwYXJhZ3JhcGhTdHlsZSBtdXRhYmxlQ29weV07CisgICAgICAgICAgICAg
ICAgICAgIG5ld1N0eWxlID0gYWRvcHROUyhbcGFyYWdyYXBoU3R5bGUgbXV0YWJsZUNvcHldKTsK
ICAgICAgICAgICAgICAgICAgICAgbGlzdExvY2F0aW9uID0gKGxpc3RJbmRleCArIDEpICogMzY7
CiAgICAgICAgICAgICAgICAgICAgIG1hcmtlckxvY2F0aW9uID0gbGlzdExvY2F0aW9uIC0gMjU7
CiAgICAgICAgICAgICAgICAgICAgIFtuZXdTdHlsZSBzZXRGaXJzdExpbmVIZWFkSW5kZW50OjBd
OwpAQCAtMTk2NCwxNCArMTk0OSwxMCBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9hZGRNYXJrZXJz
VG9MaXN0KE5TVGV4dExpc3QgKmxpc3QsIE5TUmFuZ2UgcmFuZ2UpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgdGFiID0gW1tQbGF0Zm9ybU5TVGV4
dFRhYiBhbGxvY10gaW5pdFdpdGhUeXBlOk5TTGVmdFRhYlN0b3BUeXBlIGxvY2F0aW9uOm1hcmtl
ckxvY2F0aW9uXTsKLSAgICAgICAgICAgICAgICAgICAgW25ld1N0eWxlIGFkZFRhYlN0b3A6dGFi
XTsKLSAgICAgICAgICAgICAgICAgICAgW3RhYiByZWxlYXNlXTsKLSAgICAgICAgICAgICAgICAg
ICAgdGFiID0gW1tQbGF0Zm9ybU5TVGV4dFRhYiBhbGxvY10gaW5pdFdpdGhUZXh0QWxpZ25tZW50
Ok5TVGV4dEFsaWdubWVudE5hdHVyYWwgbG9jYXRpb246bGlzdExvY2F0aW9uIG9wdGlvbnM6QHsg
fV07Ci0gICAgICAgICAgICAgICAgICAgIFtuZXdTdHlsZSBhZGRUYWJTdG9wOnRhYl07Ci0gICAg
ICAgICAgICAgICAgICAgIFt0YWIgcmVsZWFzZV07Ci0gICAgICAgICAgICAgICAgICAgIFtfYXR0
clN0ciBhZGRBdHRyaWJ1dGU6TlNQYXJhZ3JhcGhTdHlsZUF0dHJpYnV0ZU5hbWUgdmFsdWU6bmV3
U3R5bGUgcmFuZ2U6cGFyYWdyYXBoUmFuZ2VdOwotICAgICAgICAgICAgICAgICAgICBbbmV3U3R5
bGUgcmVsZWFzZV07CisgICAgICAgICAgICAgICAgICAgIFtuZXdTdHlsZSBhZGRUYWJTdG9wOmFk
b3B0TlMoW1tQbGF0Zm9ybU5TVGV4dFRhYiBhbGxvY10gaW5pdFdpdGhUeXBlOk5TTGVmdFRhYlN0
b3BUeXBlIGxvY2F0aW9uOm1hcmtlckxvY2F0aW9uXSkuZ2V0KCldOworICAgICAgICAgICAgICAg
ICAgICBbbmV3U3R5bGUgYWRkVGFiU3RvcDphZG9wdE5TKFtbUGxhdGZvcm1OU1RleHRUYWIgYWxs
b2NdIGluaXRXaXRoVGV4dEFsaWdubWVudDpOU1RleHRBbGlnbm1lbnROYXR1cmFsIGxvY2F0aW9u
Omxpc3RMb2NhdGlvbiBvcHRpb25zOkB7IH1dKS5nZXQoKV07CisgICAgICAgICAgICAgICAgICAg
IFtfYXR0clN0ciBhZGRBdHRyaWJ1dGU6TlNQYXJhZ3JhcGhTdHlsZUF0dHJpYnV0ZU5hbWUgdmFs
dWU6bmV3U3R5bGUuZ2V0KCkgcmFuZ2U6cGFyYWdyYXBoUmFuZ2VdOworICAgICAgICAgICAgICAg
ICAgICBuZXdTdHlsZSA9IG5pbDsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIGlkeCA9IE5TTWF4UmFuZ2UocGFyYWdyYXBoUmFuZ2UpOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CkBAIC0yMzM4LDEyICsyMzE5LDggQEAgc3RhdGljIE5TRmlsZVdyYXBwZXIgKmZp
bGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOU1VSTCAqVVJMKQog
ICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAg
TlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxv
Y10gaW5pdFdpdGhVUkw6VVJMXTsKIAotICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJl
c3BvbnNlID0gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJl
cXVlc3Q6cmVxdWVzdF07Ci0gICAgW3JlcXVlc3QgcmVsZWFzZV07Ci0gICAgCisgICAgTlNDYWNo
ZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVzcG9uc2UgPSBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2Fj
aGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDphZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVz
dCBhbGxvY10gaW5pdFdpdGhVUkw6VVJMXSkuZ2V0KCldOwogICAgIGlmIChjYWNoZWRSZXNwb25z
ZSkgewogICAgICAgICBOU0ZpbGVXcmFwcGVyICp3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOltjYWNoZWRSZXNwb25zZSBkYXRhXV0g
YXV0b3JlbGVhc2VdOwogICAgICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpbW2Nh
Y2hlZFJlc3BvbnNlIHJlc3BvbnNlXSBzdWdnZXN0ZWRGaWxlbmFtZV1dOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9tYWMvSGlzdG9yeUl0ZW1NYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1hYy5tbQppbmRleCA3MDBkMWM1MGI2ZjUwY2M0
OWIzMWQ1MmYxYzZmMDczYjFhMmE4NTE0Li45NjdjMTVkMTE2Y2Q2ZmZmNjExYTU1NjdiZDIzMjU0
MWE5M2U1ZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L21hYy9IaXN0b3J5
SXRlbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1h
Yy5tbQpAQCAtMzcsOSArMzcsNyBAQCBpZCBIaXN0b3J5SXRlbTo6dmlld1N0YXRlKCkgY29uc3QK
IAogdm9pZCBIaXN0b3J5SXRlbTo6c2V0Vmlld1N0YXRlKGlkIHN0YXRlUExpc3QpCiB7Ci0gICAg
aWQgbmV3U3RhdGUgPSBbc3RhdGVQTGlzdCBjb3B5XTsKLSAgICBtX3ZpZXdTdGF0ZSA9IG5ld1N0
YXRlOwotICAgIFtuZXdTdGF0ZSByZWxlYXNlXTsKKyAgICBtX3ZpZXdTdGF0ZSA9IGFkb3B0TlMo
W3N0YXRlUExpc3QgY29weV0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCmluZGV4IDFhN2Q1MjBkZjI2YzRj
YTY1ODgyYWE1ZjNkYTNkY2E0ZDU4OTg0ZGQuLmU1NzA0MzEwZGE4NWZkZTQxYmMxMzM3OTIyYjI0
NTE5OWJlZmExMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFj
Lm1tCkBAIC0yNDQsMTggKzI0NCwxNiBAQCB1bnNpZ25lZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTWFjOjpleHBvc2VkVW5maWxsZWRBcmVhKCkgY29uc3QKIAogICAgIHdoaWxlICgh
bGF5ZXJRdWV1ZS5pc0VtcHR5KCkgJiYgdGlsZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIENBTGF5
ZXIqIGxheWVyID0gbGF5ZXJRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgTlNBcnJheSogc3Vi
bGF5ZXJzID0gW1tsYXllciBzdWJsYXllcnNdIGNvcHldOworICAgICAgICBhdXRvIHN1YmxheWVy
cyA9IGFkb3B0TlMoW1tsYXllciBzdWJsYXllcnNdIGNvcHldKTsKIAogICAgICAgICAvLyBJZiB0
aGlzIGxheWVyIGlzIHRoZSBwYXJlbnQgb2YgYSB0aWxlLCBpdCBpcyB0aGUgcGFyZW50IG9mIGFs
bCBvZiB0aGUgdGlsZXMgYW5kIG5vdGhpbmcgZWxzZS4KICAgICAgICAgaWYgKFtbW3N1YmxheWVy
cyBvYmplY3RBdEluZGV4OjBdIHZhbHVlRm9yS2V5OkAiaXNUaWxlIl0gYm9vbFZhbHVlXSkgewot
ICAgICAgICAgICAgZm9yIChDQUxheWVyKiBzdWJsYXllciBpbiBzdWJsYXllcnMpCisgICAgICAg
ICAgICBmb3IgKENBTGF5ZXIqIHN1YmxheWVyIGluIHN1YmxheWVycy5nZXQoKSkKICAgICAgICAg
ICAgICAgICB0aWxlcy5hcHBlbmQoc3VibGF5ZXIpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgZm9yIChDQUxheWVyKiBzdWJsYXllciBpbiBzdWJsYXllcnMpCisgICAgICAgICAgICBm
b3IgKENBTGF5ZXIqIHN1YmxheWVyIGluIHN1YmxheWVycy5nZXQoKSkKICAgICAgICAgICAgICAg
ICBsYXllclF1ZXVlLmFwcGVuZChzdWJsYXllcik7CiAgICAgICAgIH0KLQotICAgICAgICBbc3Vi
bGF5ZXJzIHJlbGVhc2VdOwogICAgIH0KIAogICAgIEZsb2F0UG9pbnQgY2xhbXBlZFNjcm9sbFBv
c2l0aW9uID0gY2xhbXBTY3JvbGxQb3NpdGlvbihjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5o
CmluZGV4IGMyYjM0NjAyMjhlYzlkM2RiZTljY2M5OTZmN2ZmMDFmYWM5ZGE2ZjEuLmQ0YTg2Mzhm
MTUxZDZjYzIwMDgzOTgzY2FkNjA4ZmZjZTcwM2ExOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikK
IAogI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NvcmVMb2NhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIGNvbnN0ZXhwciBmbG9h
dCBrTW90aW9uVXBkYXRlSW50ZXJ2YWwgPSAxLjBmIC8gNjAuMGY7CkBAIC0zNywxMSArMzgsMTEg
QEAgY2xhc3MgTW90aW9uTWFuYWdlckNsaWVudDsKIH0KIAogV0VCQ09SRV9FWFBPUlQgQGludGVy
ZmFjZSBXZWJDb3JlTW90aW9uTWFuYWdlciA6IE5TT2JqZWN0IHsKLSAgICBDTU1vdGlvbk1hbmFn
ZXIqIG1fbW90aW9uTWFuYWdlcjsKLSAgICBDTExvY2F0aW9uTWFuYWdlciogbV9sb2NhdGlvbk1h
bmFnZXI7CisgICAgUmV0YWluUHRyPENNTW90aW9uTWFuYWdlcj4gbV9tb3Rpb25NYW5hZ2VyOwor
ICAgIFJldGFpblB0cjxDTExvY2F0aW9uTWFuYWdlcj4gbV9sb2NhdGlvbk1hbmFnZXI7CiAgICAg
V2Vha0hhc2hTZXQ8V2ViQ29yZTo6TW90aW9uTWFuYWdlckNsaWVudD4gbV9kZXZpY2VNb3Rpb25D
bGllbnRzOwogICAgIFdlYWtIYXNoU2V0PFdlYkNvcmU6Ok1vdGlvbk1hbmFnZXJDbGllbnQ+IG1f
ZGV2aWNlT3JpZW50YXRpb25DbGllbnRzOwotICAgIE5TVGltZXIqIG1fdXBkYXRlVGltZXI7Cisg
ICAgUmV0YWluUHRyPE5TVGltZXI+IG1fdXBkYXRlVGltZXI7CiAgICAgQk9PTCBtX2d5cm9BdmFp
bGFibGU7CiAgICAgQk9PTCBtX2hlYWRpbmdBdmFpbGFibGU7CiAgICAgQk9PTCBtX2luaXRpYWxp
emVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rp
b25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25N
YW5hZ2VyLm1tCmluZGV4IGYyZGQwOTc1NGI4ZmE5ZTM0ZWZmZWFlNzI2MTVkOWVjYjA4NTczZmYu
LjQzODE2ZjdmYzU1NmIxNDkxYmE2OWFiMTFmODk5ZTI4YjNiNzMxODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KQEAgLTg5
LDEzICs4OSwxMSBAQCAtICh2b2lkKWRlYWxsb2MKIAogICAgIGlmIChtX2hlYWRpbmdBdmFpbGFi
bGUpCiAgICAgICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRpbmdIZWFkaW5nXTsKLSAg
ICBbbV9sb2NhdGlvbk1hbmFnZXIgcmVsZWFzZV07CiAKICAgICBpZiAobV9neXJvQXZhaWxhYmxl
KQogICAgICAgICBbbV9tb3Rpb25NYW5hZ2VyIHN0b3BEZXZpY2VNb3Rpb25VcGRhdGVzXTsKICAg
ICBlbHNlCiAgICAgICAgIFttX21vdGlvbk1hbmFnZXIgc3RvcEFjY2VsZXJvbWV0ZXJVcGRhdGVz
XTsKLSAgICBbbV9tb3Rpb25NYW5hZ2VyIHJlbGVhc2VdOwogCiAgICAgW3N1cGVyIGRlYWxsb2Nd
OwogfQpAQCAtMTQyLDE2ICsxNDAsMTYgQEAgLSAodm9pZClpbml0aWFsaXplT25NYWluVGhyZWFk
CiB7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKLSAgICBtX21vdGlvbk1h
bmFnZXIgPSBbYWxsb2NDTU1vdGlvbk1hbmFnZXJJbnN0YW5jZSgpIGluaXRdOworICAgIG1fbW90
aW9uTWFuYWdlciA9IGFkb3B0TlMoW2FsbG9jQ01Nb3Rpb25NYW5hZ2VySW5zdGFuY2UoKSBpbml0
XSk7CiAKLSAgICBtX2d5cm9BdmFpbGFibGUgPSBtX21vdGlvbk1hbmFnZXIuZGV2aWNlTW90aW9u
QXZhaWxhYmxlOworICAgIG1fZ3lyb0F2YWlsYWJsZSA9IG1fbW90aW9uTWFuYWdlci5nZXQoKS5k
ZXZpY2VNb3Rpb25BdmFpbGFibGU7CiAKICAgICBpZiAobV9neXJvQXZhaWxhYmxlKQotICAgICAg
ICBtX21vdGlvbk1hbmFnZXIuZGV2aWNlTW90aW9uVXBkYXRlSW50ZXJ2YWwgPSBrTW90aW9uVXBk
YXRlSW50ZXJ2YWw7CisgICAgICAgIFttX21vdGlvbk1hbmFnZXIgc2V0RGV2aWNlTW90aW9uVXBk
YXRlSW50ZXJ2YWw6IGtNb3Rpb25VcGRhdGVJbnRlcnZhbF07CiAgICAgZWxzZQotICAgICAgICBt
X21vdGlvbk1hbmFnZXIuYWNjZWxlcm9tZXRlclVwZGF0ZUludGVydmFsID0ga01vdGlvblVwZGF0
ZUludGVydmFsOworICAgICAgICBbbV9tb3Rpb25NYW5hZ2VyIHNldEFjY2VsZXJvbWV0ZXJVcGRh
dGVJbnRlcnZhbDoga01vdGlvblVwZGF0ZUludGVydmFsXTsKIAotICAgIG1fbG9jYXRpb25NYW5h
Z2VyID0gW2FsbG9jQ0xMb2NhdGlvbk1hbmFnZXJJbnN0YW5jZSgpIGluaXRdOworICAgIG1fbG9j
YXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0aW9uTWFuYWdlckluc3RhbmNlKCkg
aW5pdF0pOwogICAgIG1faGVhZGluZ0F2YWlsYWJsZSA9IFtnZXRDTExvY2F0aW9uTWFuYWdlckNs
YXNzKCkgaGVhZGluZ0F2YWlsYWJsZV07CiAKICAgICBtX2luaXRpYWxpemVkID0gWUVTOwpAQCAt
MTg4LDEwICsxODYsOCBAQCAtICh2b2lkKWNoZWNrQ2xpZW50U3RhdHVzCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0czpZ
RVNdIHJldGFpbl07CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBOU1RpbWVyICp0
aW1lciA9IG1fdXBkYXRlVGltZXI7CisgICAgICAgIFttX3VwZGF0ZVRpbWVyIGludmFsaWRhdGVd
OwogICAgICAgICBtX3VwZGF0ZVRpbWVyID0gbmlsOwotICAgICAgICBbdGltZXIgaW52YWxpZGF0
ZV07Ci0gICAgICAgIFt0aW1lciByZWxlYXNlXTsKIAogICAgICAgICBpZiAobV9neXJvQXZhaWxh
YmxlKQogICAgICAgICAgICAgW21fbW90aW9uTWFuYWdlciBzdG9wRGV2aWNlTW90aW9uVXBkYXRl
c107CkBAIC0yMTEsMTEgKzIwNywxMSBAQCAtICh2b2lkKXVwZGF0ZQogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgLy8gV2Ugc2hvdWxkLCBob3dldmVyLCBndWFyZCBmb3IgdGhlIGNhc2Ugd2hl
cmUgdGhlIG1hbmFnZXJzIHJldHVybiBuaWwgZGF0YS4KLSAgICBDTURldmljZU1vdGlvbiAqZGV2
aWNlTW90aW9uID0gbV9tb3Rpb25NYW5hZ2VyLmRldmljZU1vdGlvbjsKKyAgICBDTURldmljZU1v
dGlvbiAqZGV2aWNlTW90aW9uID0gW21fbW90aW9uTWFuYWdlciBkZXZpY2VNb3Rpb25dOwogICAg
IGlmIChtX2d5cm9BdmFpbGFibGUgJiYgZGV2aWNlTW90aW9uKQotICAgICAgICBbc2VsZiBzZW5k
TW90aW9uRGF0YTpkZXZpY2VNb3Rpb24gd2l0aEhlYWRpbmc6bV9sb2NhdGlvbk1hbmFnZXIuaGVh
ZGluZ107CisgICAgICAgIFtzZWxmIHNlbmRNb3Rpb25EYXRhOmRldmljZU1vdGlvbiB3aXRoSGVh
ZGluZzpbbV9sb2NhdGlvbk1hbmFnZXIgaGVhZGluZ11dOwogICAgIGVsc2UgewotICAgICAgICBp
ZiAoQ01BY2NlbGVyb21ldGVyRGF0YSAqYWNjZWxlcm9tZXRlckRhdGEgPSBtX21vdGlvbk1hbmFn
ZXIuYWNjZWxlcm9tZXRlckRhdGEpCisgICAgICAgIGlmIChDTUFjY2VsZXJvbWV0ZXJEYXRhICph
Y2NlbGVyb21ldGVyRGF0YSA9IFttX21vdGlvbk1hbmFnZXIgYWNjZWxlcm9tZXRlckRhdGFdKQog
ICAgICAgICAgICAgW3NlbGYgc2VuZEFjY2VsZXJvbWV0ZXJEYXRhOmFjY2VsZXJvbWV0ZXJEYXRh
XTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dBS1ZpZXcubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0K
aW5kZXggMjQ3ZjkyZmU5YWQzM2YzMzY5NGMzOTJiNWEyYjliOTYwYjU2YTgwYS4uZjI0MzViZjNi
MTYwZGY4ODA5MzdkMjJlMzIxYTNkOWI1NDUwZWU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV0FLVmlldy5tbQpAQCAtMjQ2LDcgKzI0Niw3IEBAIC0gKHZvaWQpZGVhbGxv
YwogICAgIH0KICAgICAKICAgICBbc3Vidmlld1JlZmVyZW5jZXMgcmVsZWFzZV07Ci0gICAgCisK
ICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTMyOCwxMyArMzI4LDEyIEBAIC0gKFdBS1Zp
ZXcgKilsYXN0U2Nyb2xsYWJsZUFuY2VzdG9yCiAKIC0gKHZvaWQpYWRkU3VidmlldzooV0FLVmll
dyAqKXN1YnZpZXcKIHsKLSAgICBbc3VidmlldyByZXRhaW5dOworICAgIGF1dG8gcHJvdGVjdGVk
U3ViVmlldyA9IHJldGFpblB0cihzdWJ2aWV3KTsKICAgICBbc3VidmlldyByZW1vdmVGcm9tU3Vw
ZXJ2aWV3XTsKICAgICBXS1ZpZXdBZGRTdWJ2aWV3ICh2aWV3UmVmLCBbc3VidmlldyBfdmlld1Jl
Zl0pOwogICAgIAogICAgIC8vIEtlZXAgYSByZWZlcmVuY2UgdG8gc3VidmlldyBzbyBpdCBzdGlj
a3MgYXJvdW5kLgogICAgIFtbc2VsZiBfc3Vidmlld1JlZmVyZW5jZXNdIGFkZE9iamVjdDpzdWJ2
aWV3XTsKLSAgICBbc3VidmlldyByZWxlYXNlXTsKIH0KIAogLSAodm9pZCl3aWxsUmVtb3ZlU3Vi
dmlldzooV0FLVmlldyAqKXN1YnZpZXcKQEAgLTM0NCwxMCArMzQzLDkgQEAgLSAodm9pZCl3aWxs
UmVtb3ZlU3VidmlldzooV0FLVmlldyAqKXN1YnZpZXcKIAogLSAodm9pZClyZW1vdmVGcm9tU3Vw
ZXJ2aWV3CiB7Ci0gICAgV0FLVmlldyAqb2xkU3VwZXJ2aWV3ID0gW1tzZWxmIHN1cGVydmlld10g
cmV0YWluXTsKKyAgICBSZXRhaW5QdHI8V0FLVmlldz4gb2xkU3VwZXJ2aWV3ID0gW3NlbGYgc3Vw
ZXJ2aWV3XTsKICAgICBXS1ZpZXdSZW1vdmVGcm9tU3VwZXJ2aWV3ICh2aWV3UmVmKTsKICAgICBb
W29sZFN1cGVydmlldyBfc3Vidmlld1JlZmVyZW5jZXNdIHJlbW92ZU9iamVjdDpzZWxmXTsKLSAg
ICBbb2xkU3VwZXJ2aWV3IHJlbGVhc2VdOwogfQogCiAtICh2b2lkKXZpZXdEaWRNb3ZlVG9XaW5k
b3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXgg
YTE5ZDMxNGYyNTlhZjE1YjE0YjlkYTc1N2M4ZmU1NzFiZTkwYmJmYi4uZjMyNmE2OWY5NTYwZmMz
NDFmZGJjNDYwNzU4OWFjMDA3YTY4NjJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1NSw5ICsyNTUsNyBAQCBzdGF0aWMgTlNGaWxlV3Jh
cHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2Up
CiAKIHN0YXRpYyB2b2lkIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdy
YXBwZXIgKndyYXBwZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QmIG5l
d0NoYW5nZUNvdW50KQogewotICAgIE5TVGV4dEF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBbW05T
VGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRmlsZVdyYXBwZXI6d3JhcHBlcl07Ci0gICAg
TlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcgPSBbTlNBdHRyaWJ1dGVkU3RyaW5nIGF0dHJpYnV0
ZWRTdHJpbmdXaXRoQXR0YWNobWVudDphdHRhY2htZW50XTsKLSAgICBbYXR0YWNobWVudCByZWxl
YXNlXTsKKyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtOU0F0dHJpYnV0ZWRTdHJp
bmcgYXR0cmlidXRlZFN0cmluZ1dpdGhBdHRhY2htZW50OmFkb3B0TlMoW1tOU1RleHRBdHRhY2ht
ZW50IGFsbG9jXSBpbml0V2l0aEZpbGVXcmFwcGVyOndyYXBwZXJdKS5nZXQoKV07CiAKICAgICBO
U0RhdGEgKlJURkREYXRhID0gW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtz
dHJpbmcgbGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dOwogICAgIGlmICghUlRGRERh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCmluZGV4IDBmYWVkZjg0YmQ1NjczYzU4Y2YxZmI2NGI4
MzVhMDk5MzNhNzc4ZDcuLjI5NThmMWJjZTM5ZWNlYzk4NmRiODg1MjlmMTU4ZDcyMmZhZDY2Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCkBAIC0yNDEsOSArMjQxLDcgQEAgdm9pZCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KCkKICAgICAgICAgTlNTdHJp
bmcgKnZvaWNlVVJJID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVm9pY2VJZGVudGlmaWVy
XTsKICAgICAgICAgTlNTdHJpbmcgKm5hbWUgPSBbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNW
b2ljZU5hbWVdOwogICAgICAgICBOU1N0cmluZyAqbGFuZ3VhZ2UgPSBbYXR0cmlidXRlcyBvYmpl
Y3RGb3JLZXk6TlNWb2ljZUxvY2FsZUlkZW50aWZpZXJdOwotICAgICAgICBOU0xvY2FsZSAqbG9j
YWxlID0gW1tOU0xvY2FsZSBhbGxvY10gaW5pdFdpdGhMb2NhbGVJZGVudGlmaWVyOmxhbmd1YWdl
XTsKLSAgICAgICAgTlNTdHJpbmcgKmRlZmF1bHRWb2ljZVVSSSA9IHNwZWVjaFN5bnRoZXNpc0dl
dERlZmF1bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUobG9jYWxlKTsKLSAgICAgICAgW2xvY2Fs
ZSByZWxlYXNlXTsKKyAgICAgICAgTlNTdHJpbmcgKmRlZmF1bHRWb2ljZVVSSSA9IHNwZWVjaFN5
bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUoYWRvcHROUyhbW05TTG9j
YWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZpZXI6bGFuZ3VhZ2VdKS5nZXQoKSk7CiAK
ICAgICAgICAgLy8gQ2hhbmdlIHRvIEJDUC00NyBmb3JtYXQgYXMgZGVmaW5lZCBieSBzcGVjLgog
ICAgICAgICBsYW5ndWFnZSA9IFtsYW5ndWFnZSBzdHJpbmdCeVJlcGxhY2luZ09jY3VycmVuY2Vz
T2ZTdHJpbmc6QCJfIiB3aXRoU3RyaW5nOkAiLSJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklPUy5t
bQppbmRleCBmYjEwOTQ2ZmVjOTNiZjFlZjE0NjA1NTY3OWVlYjg4OWQxZWQ4Y2FiLi5iOGU5YjNj
Nzc3OTljZDYxY2Y5YzU5ZjA5OGI2YzZhYzQ1ZjYyZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmll
cklPUy5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFsU2V0
dGluZ3MuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKKyNpbXBvcnQgPHd0Zi9CbG9j
a1B0ci5oPgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPEFwcFN1cHBv
cnQvQ1BOZXR3b3JrT2JzZXJ2ZXIuaD4KQEAgLTQyLDcgKzQzLDcgQEAgQGVuZAogI2VuZGlmCiAK
IEBpbnRlcmZhY2UgV2ViTmV0d29ya1N0YXRlT2JzZXJ2ZXIgOiBOU09iamVjdCB7Ci0gICAgdm9p
ZCAoXmJsb2NrKSgpOworICAgIEJsb2NrUHRyPHZvaWQoKT4gYmxvY2s7CiB9CiAtIChpZClpbml0
V2l0aEJsb2NrOih2b2lkICheKSgpKWJsb2NrOwogQGVuZApAQCAtNTQsMTMgKzU1LDEyIEBAIC0g
KGlkKWluaXRXaXRoQmxvY2s6KHZvaWQgKF4pKCkpb2JzZXJ2ZXJCbG9jawogICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIFtbQ1BOZXR3b3Jr
T2JzZXJ2ZXIgc2hhcmVkTmV0d29ya09ic2VydmVyXSBhZGROZXR3b3JrUmVhY2hhYmxlT2JzZXJ2
ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IobmV0d29ya1N0YXRlQ2hhbmdlZDopXTsKLSAgICBi
bG9jayA9IFtvYnNlcnZlckJsb2NrIGNvcHldOworICAgIGJsb2NrID0gbWFrZUJsb2NrUHRyKG9i
c2VydmVyQmxvY2spOwogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsK
LSAgICBbYmxvY2sgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxl
TWFjLm1tCmluZGV4IGQxZThjMDJhMzkwZmZkZjMwYTc1Y2Q2NDcyNjg1ZGUwNzdiYjc0NGEuLmIy
Y2JhYjdjOGFjZjJjMzk1Zjk4NDcwYTUwYmYwNzgyZDkxMmNhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1t
CkBAIC0zMTUsMTQgKzMxNSwxMCBAQCBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIFJlZlB0cjxTeW5jaHJvbgogewogICAgIEFT
U0VSVCghZC0+bV9kZWxlZ2F0ZSk7CiAKLSAgICBpZCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGU+
IGRlbGVnYXRlOwogICAgIGlmIChzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkKLSAgICAgICAg
ZGVsZWdhdGUgPSBbW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhIYW5kbGU6dGhpcyBtZXNzYWdlUXVldWU6V1RGTW92ZShxdWV1ZSld
OworICAgICAgICBkLT5tX2RlbGVnYXRlID0gYWRvcHROUyhbW1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhIYW5kbGU6dGhpcyBtZXNz
YWdlUXVldWU6V1RGTW92ZShxdWV1ZSldKTsKICAgICBlbHNlCi0gICAgICAgIGRlbGVnYXRlID0g
W1tXZWJDb3JlUmVzb3VyY2VIYW5kbGVXaXRoQ3JlZGVudGlhbFN0b3JhZ2VBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoSGFuZGxlOnRoaXMgbWVzc2FnZVF1ZXVlOldURk1v
dmUocXVldWUpXTsKLQotICAgIGQtPm1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBbZGVsZWdh
dGUgcmVsZWFzZV07CisgICAgICAgIGQtPm1fZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQ29yZVJl
c291cmNlSGFuZGxlV2l0aENyZWRlbnRpYWxTdG9yYWdlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aEhhbmRsZTp0aGlzIG1lc3NhZ2VRdWV1ZTpXVEZNb3ZlKHF1ZXVlKV0p
OwogCiAgICAgcmV0dXJuIGQtPm1fZGVsZWdhdGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCmluZGV4IDQwOTBiNjY4
OWMxNmVlOTBiYjBmMTI5ZDBjNDg0Mjg1NDY4Njk3NzAuLjVmMzZkMDgzMTQ4NmM5ZDllNGZjOTNi
OWJkZjFkNjE3N2MyMGU2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCkBAIC0xODEsOSArMTgxLDggQEAgc3RhdGljIHZvaWQg
ZmluZENvbXBsZXhXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGlu
dCogc3RhcnQsIGkKIHZvaWQgZmluZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIGludCBw
b3NpdGlvbiwgaW50KiBzdGFydCwgaW50KiBlbmQpCiB7CiAjaWYgVVNFKEFQUEtJVCkKLSAgICBO
U0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6dGV4dC5jcmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5n
KCkuZ2V0KCldOworICAgIGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRleHQuY3JlYXRlTlNTdHJpbmdXaXRo
b3V0Q29weWluZygpLmdldCgpXSk7CiAgICAgTlNSYW5nZSByYW5nZSA9IFthdHRyaWJ1dGVkU3Ry
aW5nIGRvdWJsZUNsaWNrQXRJbmRleDpzdGQ6Om1pbjx1bnNpZ25lZD4ocG9zaXRpb24sIHRleHQu
bGVuZ3RoKCkgLSAxKV07Ci0gICAgW2F0dHJpYnV0ZWRTdHJpbmcgcmVsZWFzZV07CiAgICAgKnN0
YXJ0ID0gcmFuZ2UubG9jYXRpb247CiAgICAgKmVuZCA9IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2Uu
bGVuZ3RoOwogI2Vsc2UKQEAgLTIzMiw5ICsyMzEsOCBAQCB2b2lkIGZpbmRFbmRXb3JkQm91bmRh
cnkoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGludCogZW5kKQogaW50IGZpbmROZXh0
V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJk
KQogeyAgIAogI2lmIFVTRShBUFBLSVQpCi0gICAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1
dGVkU3RyaW5nID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRl
eHQuY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpXTsKKyAgICBhdXRvIGF0dHJp
YnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFN0cmluZzp0ZXh0LmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKV0pOwogICAg
IGludCByZXN1bHQgPSBbYXR0cmlidXRlZFN0cmluZyBuZXh0V29yZEZyb21JbmRleDpwb3NpdGlv
biBmb3J3YXJkOmZvcndhcmRdOwotICAgIFthdHRyaWJ1dGVkU3RyaW5nIHJlbGVhc2VdOwogICAg
IHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIC8vIFRoaXMgdmVyeSBsaWtlbHkgd29uJ3QgYmVo
YXZlIGV4YWN0bHkgbGlrZSB0aGUgbm9uLWlQaG9uZSB2ZXJzaW9uLCBidXQgaXQgd29ya3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLT2JqZWN0Lm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV0tPYmplY3QubW0KaW5kZXggNzM2NjEwNWNiMTFhZjA1ZmE4
OWQxYmNmNzM4OWVlNjEyNDlhMWExNC4uM2E4ZTM0YzQzYzkyOGVjMzFjNzgzZjhiNWYwNmJmOWEx
NDUxY2Q1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tPYmplY3Qu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tPYmplY3QubW0KQEAgLTI3LDYg
KzI3LDcgQEAKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAKICNpbXBvcnQgIkFQSU9iamVjdC5oIgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW50ZXJmYWNlIE5TT2JqZWN0ICgpCiAtIChC
T09MKWlzTlNBcnJheV9fOwpAQCAtNDUsMTMgKzQ2LDEyIEBAIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIFdLT2JqZWN0IHsKICAgICBCT09MIF9oYXNJbml0aWFsaXplZFRhcmdldDsKLSAgICBOU09i
amVjdCAqX3RhcmdldDsKKyAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IF90YXJnZXQ7CiB9CiAKIC0g
KHZvaWQpZGVhbGxvYwogewogICAgIEFQSTo6T2JqZWN0Ojpmcm9tV0tPYmplY3RFeHRyYVNwYWNl
KHNlbGYpLn5PYmplY3QoKTsKLSAgICBbX3RhcmdldCByZWxlYXNlXTsKIAogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGluaXRpYWxp
emVUYXJnZXRJZk5lZWRlZChXS09iamVjdCAqc2VsZikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
c2VsZi0+X2hhc0luaXRpYWxpemVkVGFyZ2V0ID0gWUVTOwotICAgIHNlbGYtPl90YXJnZXQgPSBb
c2VsZiBfd2ViX2NyZWF0ZVRhcmdldF07CisgICAgc2VsZi0+X3RhcmdldCA9IGFkb3B0TlMoW3Nl
bGYgX3dlYl9jcmVhdGVUYXJnZXRdKTsKIH0KIAogLSAoQk9PTClpc0VxdWFsOihpZClvYmplY3QK
QEAgLTExNyw3ICsxMTcsNyBAQCAtIChpZClmb3J3YXJkaW5nVGFyZ2V0Rm9yU2VsZWN0b3I6KFNF
TClzZWxlY3RvcgogewogICAgIGluaXRpYWxpemVUYXJnZXRJZk5lZWRlZChzZWxmKTsKIAotICAg
IHJldHVybiBfdGFyZ2V0OworICAgIHJldHVybiBfdGFyZ2V0LmdldCgpOwogfQogCiAtIChOU1N0
cmluZyAqKWRlc2NyaXB0aW9uCkBAIC0xNTcsNyArMTU3LDcgQEAgLSAodm9pZClmb3J3YXJkSW52
b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbgogewogICAgIGluaXRpYWxpemVUYXJn
ZXRJZk5lZWRlZChzZWxmKTsKIAotICAgIFtpbnZvY2F0aW9uIGludm9rZVdpdGhUYXJnZXQ6X3Rh
cmdldF07CisgICAgW2ludm9jYXRpb24gaW52b2tlV2l0aFRhcmdldDpfdGFyZ2V0LmdldCgpXTsK
IH0KIAogLSAoTlNNZXRob2RTaWduYXR1cmUgKiltZXRob2RTaWduYXR1cmVGb3JTZWxlY3Rvcjoo
U0VMKXNlbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KaW5kZXgg
MGZkNzBkNmY3ZmJkODY1N2MxYTUyMWZlMTEyNjYyMDY0NDg3ZGZkZi4uYTFhZTMxZjUxZGU0MTE2
MjlhZjhmNDRiMDdjYzYyMjRkOWRjYzNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlUHJv
cGVydHlBcHBsaWVyLm1tCkBAIC02OSwxMCArNjksMTAgQEAgLSAodm9pZClfd2ViX3NldFN1YnZp
ZXdzOihOU0FycmF5ICopbmV3U3Vidmlld3MKICAgICB9CiAKICAgICAvLyBSZW1vdmUgdmlld3Mg
YXQgdGhlIGVuZC4KLSAgICBOU011dGFibGVBcnJheSAqdmlld3NUb1JlbW92ZSA9IG5pbDsKKyAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHZpZXdzVG9SZW1vdmU7CiAgICAgYXV0byBhcHBl
bmRWaWV3VG9SZW1vdmUgPSBbJnZpZXdzVG9SZW1vdmVdKFVJVmlldyAqdmlldykgewogICAgICAg
ICBpZiAoIXZpZXdzVG9SZW1vdmUpCi0gICAgICAgICAgICB2aWV3c1RvUmVtb3ZlID0gW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgICAgICAgICB2aWV3c1RvUmVtb3ZlID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgW3ZpZXdzVG9S
ZW1vdmUgYWRkT2JqZWN0OnZpZXddOwogICAgIH07CkBAIC04NCwxMCArODQsOCBAQCAtICh2b2lk
KV93ZWJfc2V0U3Vidmlld3M6KE5TQXJyYXkgKiluZXdTdWJ2aWV3cwogICAgICAgICAgICAgYXBw
ZW5kVmlld1RvUmVtb3ZlKHN1YnZpZXcpOwogICAgIH0KIAotICAgIGlmICh2aWV3c1RvUmVtb3Zl
KSB7CisgICAgaWYgKHZpZXdzVG9SZW1vdmUpCiAgICAgICAgIFt2aWV3c1RvUmVtb3ZlIG1ha2VP
YmplY3RzUGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVGcm9tU3VwZXJ2aWV3KV07Ci0g
ICAgICAgIFt2aWV3c1RvUmVtb3ZlIHJlbGVhc2VdOwotICAgIH0KIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCA4YzFm
ZTk2MGMxYTZmY2RiNDNhYTAwODA3Y2RkOTVlZWNlZTJlYWRhLi4wZjY5NGJhOGRjZjZlZmYyNWMw
ZDdmNjVmMzdmYzQzYzc5NWU3MzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAtNTksNiArNTksNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9WZXJzaW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEku
aD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL0dyYXBoaWNzU2VydmljZXNTUEkuaD4KKyNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNp
ZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCkBAIC0zMDMyLDExICszMDMzLDggQEAgLSAodm9pZClf
c25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlld0Nvb3JkaW5hdGVzIGludG9JbWFnZU9mV2lk
dGg6KENHRmxvYXQpaW0KIHsKICAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIT0g
V2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykgewogICAgICAg
ICAvLyBEZWZlciBzbmFwc2hvdHRpbmcgdW50aWwgYWZ0ZXIgdGhlIGN1cnJlbnQgcmVzaXplIGNv
bXBsZXRlcy4KLSAgICAgICAgdm9pZCAoXmNvcGllZENvbXBsZXRpb25IYW5kbGVyKShDR0ltYWdl
UmVmKSA9IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKLSAgICAgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gcmV0YWluZWRTZWxmID0gc2VsZjsKLSAgICAgICAgX2NhbGxiYWNrc0RlZmVycmVkRHVy
aW5nUmVzaXplLmFwcGVuZChbcmV0YWluZWRTZWxmLCByZWN0SW5WaWV3Q29vcmRpbmF0ZXMsIGlt
YWdlV2lkdGgsIGNvcGllZENvbXBsZXRpb25IYW5kbGVyXSB7Ci0gICAgICAgICAgICBbcmV0YWlu
ZWRTZWxmIF9zbmFwc2hvdFJlY3Q6cmVjdEluVmlld0Nvb3JkaW5hdGVzIGludG9JbWFnZU9mV2lk
dGg6aW1hZ2VXaWR0aCBjb21wbGV0aW9uSGFuZGxlcjpjb3BpZWRDb21wbGV0aW9uSGFuZGxlcl07
Ci0gICAgICAgICAgICBbY29waWVkQ29tcGxldGlvbkhhbmRsZXIgcmVsZWFzZV07CisgICAgICAg
IF9jYWxsYmFja3NEZWZlcnJlZER1cmluZ1Jlc2l6ZS5hcHBlbmQoW3JldGFpbmVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKSwgcmVjdEluVmlld0Nvb3JkaW5hdGVzLCBpbWFnZVdpZHRoLCBjb21wbGV0
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAg
ICAgIFtyZXRhaW5lZFNlbGYgX3NuYXBzaG90UmVjdDpyZWN0SW5WaWV3Q29vcmRpbmF0ZXMgaW50
b0ltYWdlT2ZXaWR0aDppbWFnZVdpZHRoIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5k
bGVyLmdldCgpXTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0KaW5kZXggMTUxMjI5MDQ1ZjEzZTljZGRiZTA5MWU2
MjdiZmExZmUyMDZkZTI4OS4uN2ZiN2Y4YWEzNmUwZTVmZmI4M2M2MjAyYzZiOTQ0Yzg0N2ZhYmJj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpAQCAtMzcsNyArMzcsNyBA
QCBAcHJpdmF0ZQogICAgIFdlYWtQdHI8V2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eT4gX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OwogICAgIFdlYktpdDo6TGVnYWN5
Q3VzdG9tUHJvdG9jb2xJRCBfY3VzdG9tUHJvdG9jb2xJRDsKICAgICBOU1VSTENhY2hlU3RvcmFn
ZVBvbGljeSBfc3RvcmFnZVBvbGljeTsKLSAgICBOU1VSTENvbm5lY3Rpb24gKl91cmxDb25uZWN0
aW9uOworICAgIFJldGFpblB0cjxOU1VSTENvbm5lY3Rpb24+IF91cmxDb25uZWN0aW9uOwogfQog
LSAoaWQpaW5pdFdpdGhMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooV2ViS2l0OjpM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYpY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkgY3VzdG9tUHJvdG9jb2xJRDooV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbElEKWN1c3Rv
bVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKIC0gKHZvaWQpY2Fu
Y2VsOwpAQCAtNTYsNyArNTYsNyBAQCAtIChpZClpbml0V2l0aExlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5OihXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYQogICAgIF9jdXN0
b21Qcm90b2NvbElEID0gY3VzdG9tUHJvdG9jb2xJRDsKICAgICBfc3RvcmFnZVBvbGljeSA9IE5T
VVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZDsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgIF91cmxDb25uZWN0aW9uID0gW1tOU1VSTENvbm5lY3Rpb24gYWxsb2Nd
IGluaXRXaXRoUmVxdWVzdDpyZXF1ZXN0IGRlbGVnYXRlOnNlbGYgc3RhcnRJbW1lZGlhdGVseTpO
T107CisgICAgX3VybENvbm5lY3Rpb24gPSBhZG9wdE5TKFtbTlNVUkxDb25uZWN0aW9uIGFsbG9j
XSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdCBkZWxlZ2F0ZTpzZWxmIHN0YXJ0SW1tZWRpYXRlbHk6
Tk9dKTsKICAgICBbX3VybENvbm5lY3Rpb24gc2NoZWR1bGVJblJ1bkxvb3A6W05TUnVuTG9vcCBt
YWluUnVuTG9vcF0gZm9yTW9kZTpOU1J1bkxvb3BDb21tb25Nb2Rlc107CiAgICAgW191cmxDb25u
ZWN0aW9uIHN0YXJ0XTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAg
LTY3LDcgKzY3LDYgQEAgLSAoaWQpaW5pdFdpdGhMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTooV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmEKIC0gKHZvaWQpZGVhbGxvYwog
ewogICAgIFtfdXJsQ29ubmVjdGlvbiBjYW5jZWxdOwotICAgIFtfdXJsQ29ubmVjdGlvbiByZWxl
YXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTE0NSwxMSArMTQ0LDEwIEBAIHZv
aWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OjpzdGFydExvYWRpbmcoTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyCiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47
CiAKLSAgICBXS0N1c3RvbVByb3RvY29sTG9hZGVyICpsb2FkZXIgPSBbW1dLQ3VzdG9tUHJvdG9j
b2xMb2FkZXIgYWxsb2NdIGluaXRXaXRoTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6
bWFuYWdlciBjdXN0b21Qcm90b2NvbElEOmN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDpyZXF1ZXN0
XTsKKyAgICBhdXRvIGxvYWRlciA9IGFkb3B0TlMoW1tXS0N1c3RvbVByb3RvY29sTG9hZGVyIGFs
bG9jXSBpbml0V2l0aExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Om1hbmFnZXIgY3Vz
dG9tUHJvdG9jb2xJRDpjdXN0b21Qcm90b2NvbElEIHJlcXVlc3Q6cmVxdWVzdF0pOwogICAgIEFT
U0VSVChsb2FkZXIpOwogICAgIEFTU0VSVCghbV9sb2FkZXJNYXAuY29udGFpbnMoY3VzdG9tUHJv
dG9jb2xJRCkpOwotICAgIG1fbG9hZGVyTWFwLmFkZChjdXN0b21Qcm90b2NvbElELCBsb2FkZXIp
OwotICAgIFtsb2FkZXIgcmVsZWFzZV07CisgICAgbV9sb2FkZXJNYXAuYWRkKGN1c3RvbVByb3Rv
Y29sSUQsIFdURk1vdmUobG9hZGVyKSk7CiB9CiAKIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50OjpzdG9wTG9hZGluZyhMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYsIFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCBjdXN0b21Qcm90b2NvbElEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3Mv
V0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmgKaW5kZXggMzAxYmFiMTEwOWNlN2ZmNjc0YTM2MjNh
YjFjYTE5YTkwNjcyZWY0NS4uMTg3MTkxZmY2MDQ1YmQ1MGYzYWZjNDNiMGNhMGJhYzMzZWJlZmQ1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0lu
c3BlY3RvckhpZ2hsaWdodFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5oCkBAIC0yOSw3ICsyOSw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0luc3BlY3Rvck92ZXJsYXkuaD4KIAogQGludGVyZmFjZSBXS0luc3Bl
Y3RvckhpZ2hsaWdodFZpZXcgOiBVSVZpZXcgewotICAgIE5TTXV0YWJsZUFycmF5ICpfbGF5ZXJz
OyAvLyBDQVNoYXBlTGF5ZXJzLgorICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX2xheWVy
czsgLy8gQ0FTaGFwZUxheWVycy4KIH0KIC0gKHZvaWQpdXBkYXRlOihjb25zdCBXZWJDb3JlOjpJ
bnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQmKWhpZ2hsaWdodDsKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGln
aHRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3Bl
Y3RvckhpZ2hsaWdodFZpZXcubW0KaW5kZXggNmJhZjY2YjlmM2MyMmU3MzYyODMzYzUzZTU1ZWVh
YzQ0NjMyM2FlOS4uNDQxMjQ0MzdjMjQzNDI1YzNlZGRiOTkzNzZjZDYyMjRmMmZjMTZhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KQEAgLTM3LDIwICszNywxOSBAQCAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiB7CiAgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgX2xheWVycyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIF9sYXllcnMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgW3NlbGYgX3JlbW92ZUFsbExheWVyc107
Ci0gICAgW19sYXllcnMgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtICh2
b2lkKV9yZW1vdmVBbGxMYXllcnMKIHsKLSAgICBmb3IgKENBU2hhcGVMYXllciAqbGF5ZXIgaW4g
X2xheWVycykKKyAgICBmb3IgKENBU2hhcGVMYXllciAqbGF5ZXIgaW4gX2xheWVycy5nZXQoKSkK
ICAgICAgICAgW2xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKICAgICBbX2xheWVycyByZW1v
dmVBbGxPYmplY3RzXTsKIH0KQEAgLTYzLDEwICs2Miw5IEBAIC0gKHZvaWQpX2NyZWF0ZUxheWVy
czooTlNVSW50ZWdlciludW1MYXllcnMKICAgICBbc2VsZiBfcmVtb3ZlQWxsTGF5ZXJzXTsKIAog
ICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IG51bUxheWVyczsgKytpKSB7Ci0gICAgICAg
IENBU2hhcGVMYXllciAqbGF5ZXIgPSBbW0NBU2hhcGVMYXllciBhbGxvY10gaW5pdF07Ci0gICAg
ICAgIFtfbGF5ZXJzIGFkZE9iamVjdDpsYXllcl07Ci0gICAgICAgIFtzZWxmLmxheWVyIGFkZFN1
YmxheWVyOmxheWVyXTsKLSAgICAgICAgW2xheWVyIHJlbGVhc2VdOworICAgICAgICBhdXRvIGxh
eWVyID0gYWRvcHROUyhbW0NBU2hhcGVMYXllciBhbGxvY10gaW5pdF0pOworICAgICAgICBbX2xh
eWVycyBhZGRPYmplY3Q6bGF5ZXIuZ2V0KCldOworICAgICAgICBbc2VsZi5sYXllciBhZGRTdWJs
YXllcjpsYXllci5nZXQoKV07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBjZWM4N2M1
OGYwMTFjYTdkYTQ5OTNjZjE1M2MxZDZmZTcyNDVhNGI4Li41MDhhYWUyZmQ1ZDkwMTNiOTQ1ODVi
MGI3ZWQyOGJkYmVkMjk1MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTQyNjEsMzkgKzQyNjEsMjgg
QEAgLSAodm9pZClzZWxlY3RQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWMKIC0gKHZvaWQpX3NlbGVjdFBvc2l0aW9uQXRQb2lu
dDooQ0dQb2ludClwb2ludCBzdGF5aW5nV2l0aGluRm9jdXNlZEVsZW1lbnQ6KEJPT0wpc3RheWlu
Z1dpdGhpbkZvY3VzZWRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlcgogewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZRVM7
Ci0gICAgVUlXS1NlbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIHNlbGVjdGlvbkhhbmRsZXIgPSBb
Y29tcGxldGlvbkhhbmRsZXIgY29weV07Ci0gICAgUmV0YWluUHRyPFdLQ29udGVudFZpZXc+IHZp
ZXcgPSBzZWxmOwogCi0gICAgX3BhZ2UtPnNlbGVjdFBvc2l0aW9uQXRQb2ludChXZWJDb3JlOjpJ
bnRQb2ludChwb2ludCksIHN0YXlpbmdXaXRoaW5Gb2N1c2VkRWxlbWVudCwgW3ZpZXcsIHNlbGVj
dGlvbkhhbmRsZXJdKCkgewotICAgICAgICBzZWxlY3Rpb25IYW5kbGVyKCk7CisgICAgX3BhZ2Ut
PnNlbGVjdFBvc2l0aW9uQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHN0YXlpbmdX
aXRoaW5Gb2N1c2VkRWxlbWVudCwgW3ZpZXcgPSByZXRhaW5QdHIoc2VsZiksIGNvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHZpZXctPl91c2luZ0dlc3R1cmVGb3JTZWxlY3Rp
b24gPSBOTzsKLSAgICAgICAgW3NlbGVjdGlvbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgfSk7CiB9
CiAKIC0gKHZvaWQpc2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5OihVSVRleHRHcmFudWxhcml0eSln
cmFudWxhcml0eSBpbkRpcmVjdGlvbjooVUlUZXh0RGlyZWN0aW9uKWRpcmVjdGlvbiBmcm9tUG9p
bnQ6KENHUG9pbnQpcG9pbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CiAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IFlFUzsKLSAg
ICBVSVdLU2VsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgc2VsZWN0aW9uSGFuZGxlciA9IFtjb21w
bGV0aW9uSGFuZGxlciBjb3B5XTsKLSAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4gdmlldyA9
IHNlbGY7Ci0gICAgCi0gICAgX3BhZ2UtPnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24oV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51
bGFyaXR5KSwgdG9XS1NlbGVjdGlvbkRpcmVjdGlvbihkaXJlY3Rpb24pLCBzZWxmLl9oYXNGb2N1
c2VkRWxlbWVudCwgW3ZpZXcsIHNlbGVjdGlvbkhhbmRsZXJdKCkgewotICAgICAgICBzZWxlY3Rp
b25IYW5kbGVyKCk7CisgICAgX3BhZ2UtPnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24oV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51
bGFyaXR5KSwgdG9XS1NlbGVjdGlvbkRpcmVjdGlvbihkaXJlY3Rpb24pLCBzZWxmLl9oYXNGb2N1
c2VkRWxlbWVudCwgW3ZpZXcgPSByZXRhaW5QdHIoc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiAgICAgICAgIHZpZXctPl91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsK
LSAgICAgICAgW3NlbGVjdGlvbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgfSk7CiB9CiAKIC0gKHZv
aWQpbW92ZVNlbGVjdGlvbkF0Qm91bmRhcnk6KFVJVGV4dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5
IGluRGlyZWN0aW9uOihVSVRleHREaXJlY3Rpb24pZGlyZWN0aW9uIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIF91c2luZ0dlc3R1cmVG
b3JTZWxlY3Rpb24gPSBZRVM7Ci0gICAgVUlXS1NlbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIHNl
bGVjdGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgY29weV07Ci0gICAgUmV0YWluUHRy
PFdLQ29udGVudFZpZXc+IHZpZXcgPSBzZWxmOwotICAgIAotICAgIF9wYWdlLT5tb3ZlU2VsZWN0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odG9XS1RleHRHcmFudWxhcml0eShncmFudWxhcml0
eSksIHRvV0tTZWxlY3Rpb25EaXJlY3Rpb24oZGlyZWN0aW9uKSwgW3ZpZXcsIHNlbGVjdGlvbkhh
bmRsZXJdIHsKLSAgICAgICAgc2VsZWN0aW9uSGFuZGxlcigpOworICAgIF9wYWdlLT5tb3ZlU2Vs
ZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odG9XS1RleHRHcmFudWxhcml0eShncmFudWxh
cml0eSksIHRvV0tTZWxlY3Rpb25EaXJlY3Rpb24oZGlyZWN0aW9uKSwgW3ZpZXcgPSByZXRhaW5Q
dHIoc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICB2aWV3LT5fdXNp
bmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87Ci0gICAgICAgIFtzZWxlY3Rpb25IYW5kbGVyIHJl
bGVhc2VdOwogICAgIH0pOwogfQogCkBAIC00MzI1LDEyICs0MzE0LDkgQEAgLSAodm9pZCl1cGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQ6KENHUG9pbnQpcG9pbnQgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4KIAogLSAodm9pZCl1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQ6KENH
UG9pbnQpcG9pbnQgd2l0aEJvdW5kYXJ5OihVSVRleHRHcmFudWxhcml0eSlncmFudWxhcml0eSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBzZWxlY3Rpb25FbmRJc01vdmluZykpY29t
cGxldGlvbkhhbmRsZXIKIHsKLSAgICBVSVdLU2VsZWN0aW9uV2l0aERpcmVjdGlvbkNvbXBsZXRp
b25IYW5kbGVyIHNlbGVjdGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgY29weV07Ci0g
ICAgCiAgICAgKytfc3VwcHJlc3NOb25FZGl0YWJsZVNpbmdsZVRhcFRleHRJbnRlcmFjdGlvbkNv
dW50OwotICAgIF9wYWdlLT51cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFy
eShXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHRvV0tUZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJp
dHkpLCBzZWxmLl9oYXNGb2N1c2VkRWxlbWVudCwgW3NlbGVjdGlvbkhhbmRsZXIsIHByb3RlY3Rl
ZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIChib29sIGVuZElzTW92aW5nKSB7Ci0gICAgICAgIHNl
bGVjdGlvbkhhbmRsZXIoZW5kSXNNb3ZpbmcpOwotICAgICAgICBbc2VsZWN0aW9uSGFuZGxlciBy
ZWxlYXNlXTsKKyAgICBfcGFnZS0+dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91
bmRhcnkoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51
bGFyaXR5KSwgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciksIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZildIChib29sIGVuZElzTW92aW5nKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVu
ZElzTW92aW5nKTsKICAgICAgICAgLS1wcm90ZWN0ZWRTZWxmLT5fc3VwcHJlc3NOb25FZGl0YWJs
ZVNpbmdsZVRhcFRleHRJbnRlcmFjdGlvbkNvdW50OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0KaW5kZXggNTI4YjgwYzI3ZWFlZjNhM2Qy
NTY2NWY0YTdhOTAyYzc2MzUyZWRjMC4uYjgyYjQ1OTMyNGNkM2UxYmFlMGVkNTE3NTY4YTkyMzc5
OWFjNjRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xs
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1t
CkBAIC0xMjUsNyArMTI1LDcgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tTY3JvbGxWaWV3
IHsKICAgICBXZWFrT2JqQ1B0cjxpZCA8VUlTY3JvbGxWaWV3RGVsZWdhdGU+PiBfZXh0ZXJuYWxE
ZWxlZ2F0ZTsKLSAgICBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUZvcndhcmRlciAqX2RlbGVnYXRlRm9y
d2FyZGVyOworICAgIFJldGFpblB0cjxXS1Njcm9sbFZpZXdEZWxlZ2F0ZUZvcndhcmRlcj4gX2Rl
bGVnYXRlRm9yd2FyZGVyOwogCiAvLyBGSVhNRTogTGlrZWx5IHdlIGNhbiByZW1vdmUgdGhpcyBz
cGVjaWFsIGNhc2UgZm9yIHdhdGNoT1MgYW5kIHR2T1MuCiAjaWYgIVBMQVRGT1JNKFdBVENIT1Mp
ICYmICFQTEFURk9STShBUFBMRVRWKQpAQCAtMjA1LDIzICsyMDUsMjAgQEAgLSAoQk9PTClnZXN0
dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyIHNo
b3VsZEJlUmVxdWkKIAogLSAodm9pZClfdXBkYXRlRGVsZWdhdGUKIHsKLSAgICBXS1Njcm9sbFZp
ZXdEZWxlZ2F0ZUZvcndhcmRlciAqb2xkRm9yd2FyZGVyID0gX2RlbGVnYXRlRm9yd2FyZGVyOwot
ICAgIF9kZWxlZ2F0ZUZvcndhcmRlciA9IG5pbDsKKyAgICBhdXRvIG9sZEZvcndhcmRlciA9IHN0
ZDo6ZXhjaGFuZ2UoX2RlbGVnYXRlRm9yd2FyZGVyLCBuaWwpOwogICAgIGF1dG8gZXh0ZXJuYWxE
ZWxlZ2F0ZSA9IF9leHRlcm5hbERlbGVnYXRlLmdldCgpOwogICAgIGlmICghZXh0ZXJuYWxEZWxl
Z2F0ZSkKICAgICAgICAgW3N1cGVyIHNldERlbGVnYXRlOl9pbnRlcm5hbERlbGVnYXRlXTsKICAg
ICBlbHNlIGlmICghX2ludGVybmFsRGVsZWdhdGUpCiAgICAgICAgIFtzdXBlciBzZXREZWxlZ2F0
ZTpleHRlcm5hbERlbGVnYXRlLmdldCgpXTsKICAgICBlbHNlIHsKLSAgICAgICAgX2RlbGVnYXRl
Rm9yd2FyZGVyID0gW1tXS1Njcm9sbFZpZXdEZWxlZ2F0ZUZvcndhcmRlciBhbGxvY10gaW5pdFdp
dGhJbnRlcm5hbERlbGVnYXRlOl9pbnRlcm5hbERlbGVnYXRlIGV4dGVybmFsRGVsZWdhdGU6ZXh0
ZXJuYWxEZWxlZ2F0ZS5nZXQoKV07Ci0gICAgICAgIFtzdXBlciBzZXREZWxlZ2F0ZTpfZGVsZWdh
dGVGb3J3YXJkZXJdOworICAgICAgICBfZGVsZWdhdGVGb3J3YXJkZXIgPSBhZG9wdE5TKFtbV0tT
Y3JvbGxWaWV3RGVsZWdhdGVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoSW50ZXJuYWxEZWxlZ2F0
ZTpfaW50ZXJuYWxEZWxlZ2F0ZSBleHRlcm5hbERlbGVnYXRlOmV4dGVybmFsRGVsZWdhdGUuZ2V0
KCldKTsKKyAgICAgICAgW3N1cGVyIHNldERlbGVnYXRlOl9kZWxlZ2F0ZUZvcndhcmRlci5nZXQo
KV07CiAgICAgfQotICAgIFtvbGRGb3J3YXJkZXIgcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpZGVh
bGxvYwogewotICAgIFtfZGVsZWdhdGVGb3J3YXJkZXIgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRl
YWxsb2NdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCmluZGV4IDU3NzE0YjgzNTVlZGQ0NzEyZTZlMjgy
ZmE4N2VmZTJlZjRjODlhNDIuLjlhNWMwNzc1MTFmYTAzNmY4Mjc2NjlhYTNhMTRjYTQ1YzQyYWZi
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1T
ZWxlY3RQb3BvdmVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0Zvcm1TZWxlY3RQb3BvdmVyLm1tCkBAIC00MDEsMjYgKzQwMSwyMSBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBoYXNHcm91cHM6KEJPT0wpaGFz
R3JvdXBzCiAKICAgICBfdGFibGVWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS1NlbGVjdFRh
YmxlVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3IGhhc0dyb3VwczpoYXNH
cm91cHNdKTsKICAgICBbX3RhYmxlVmlld0NvbnRyb2xsZXIgc2V0UG9wb3ZlcjpzZWxmXTsKLSAg
ICBVSVZpZXdDb250cm9sbGVyICpwb3BvdmVyVmlld0NvbnRyb2xsZXIgPSBfdGFibGVWaWV3Q29u
dHJvbGxlci5nZXQoKTsKLSAgICBVSU5hdmlnYXRpb25Db250cm9sbGVyICpuYXZDb250cm9sbGVy
ID0gbmlsOworICAgIFJldGFpblB0cjxVSVZpZXdDb250cm9sbGVyPiBwb3BvdmVyVmlld0NvbnRy
b2xsZXIgPSBfdGFibGVWaWV3Q29udHJvbGxlci5nZXQoKTsKICAgICBCT09MIG5lZWRzTmF2aWdh
dGlvbkNvbnRyb2xsZXIgPSAhdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnRpdGxlLmlz
RW1wdHkoKTsKLSAgICBpZiAobmVlZHNOYXZpZ2F0aW9uQ29udHJvbGxlcikgewotICAgICAgICBu
YXZDb250cm9sbGVyID0gW1tVSU5hdmlnYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFJv
b3RWaWV3Q29udHJvbGxlcjpfdGFibGVWaWV3Q29udHJvbGxlci5nZXQoKV07Ci0gICAgICAgIHBv
cG92ZXJWaWV3Q29udHJvbGxlciA9IG5hdkNvbnRyb2xsZXI7Ci0gICAgfQorICAgIGlmIChuZWVk
c05hdmlnYXRpb25Db250cm9sbGVyKQorICAgICAgICBwb3BvdmVyVmlld0NvbnRyb2xsZXIgPSBh
ZG9wdE5TKFtbVUlOYXZpZ2F0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhSb290Vmlld0Nv
bnRyb2xsZXI6X3RhYmxlVmlld0NvbnRyb2xsZXIuZ2V0KCldKTsKICAgICAKICAgICBDR1NpemUg
cG9wb3ZlclNpemUgPSBbX3RhYmxlVmlld0NvbnRyb2xsZXIuZ2V0KCkudGFibGVWaWV3IHNpemVU
aGF0Rml0czpDR1NpemVNYWtlKDMyMCwgQ0dGTE9BVF9NQVgpXTsKICAgICBpZiAobmVlZHNOYXZp
Z2F0aW9uQ29udHJvbGxlcikKICAgICAgICAgWyhVSU5hdmlnYXRpb25Db250cm9sbGVyICopcG9w
b3ZlclZpZXdDb250cm9sbGVyIHRvcFZpZXdDb250cm9sbGVyXS5wcmVmZXJyZWRDb250ZW50U2l6
ZSA9IHBvcG92ZXJTaXplOwogICAgIGVsc2UKLSAgICAgICAgcG9wb3ZlclZpZXdDb250cm9sbGVy
LnByZWZlcnJlZENvbnRlbnRTaXplID0gcG9wb3ZlclNpemU7CisgICAgICAgIFtwb3BvdmVyVmll
d0NvbnRyb2xsZXIgc2V0UHJlZmVycmVkQ29udGVudFNpemU6IHBvcG92ZXJTaXplXTsKICAgICAK
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHNlbGYucG9wb3Zl
ckNvbnRyb2xsZXIgPSBbW1tVSVBvcG92ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRl
bnRWaWV3Q29udHJvbGxlcjpwb3BvdmVyVmlld0NvbnRyb2xsZXJdIGF1dG9yZWxlYXNlXTsKKyAg
ICBzZWxmLnBvcG92ZXJDb250cm9sbGVyID0gW1tbVUlQb3BvdmVyQ29udHJvbGxlciBhbGxvY10g
aW5pdFdpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6cG9wb3ZlclZpZXdDb250cm9sbGVyLmdldCgp
XSBhdXRvcmVsZWFzZV07CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAK
LSAgICBbbmF2Q29udHJvbGxlciByZWxlYXNlXTsKLQogI2lmICFVU0UoVUlLSVRfS0VZQk9BUkRf
QURESVRJT05TKQogICAgIFtbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2VdIHNldERlbGVn
YXRlOl90YWJsZVZpZXdDb250cm9sbGVyLmdldCgpXTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIu
bW0KaW5kZXggMzUyNzVkZjhmZDdjY2M0MDVjNjczMmQxYzg4ZmMxOTQ3Y2UxYTYyZi4uMGY4NmE1
NmVhYWE0MDg0ZWU3YmNmOWRjOGQ4YzZkMDMzMzVkNGZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1t
CkBAIC00Niw3ICs0Niw3IEBAIC0gKE5TQXJyYXkgKil2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRU
ZXh0CiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tUZXh0SW5wdXRQYW5lbCA6IFdlYlBhbmVsIHsKLSAg
ICBOU1RleHRWaWV3ICpfaW5wdXRUZXh0VmlldzsKKyAgICBSZXRhaW5QdHI8TlNUZXh0Vmlldz4g
X2lucHV0VGV4dFZpZXc7CiB9CiAKIC0gKE5TVGV4dElucHV0Q29udGV4dCAqKV9pbnB1dENvbnRl
eHQ7CkBAIC02NSw4ICs2NSw2IEBAIC0gKHZvaWQpZGVhbGxvYwogewogICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CiAgICAgCi0g
ICAgW19pbnB1dFRleHRWaWV3IHJlbGVhc2VdOwotICAgIAogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIApAQCAtODIsMTMgKzgwLDEyIEBAIC0gKGlkKWluaXQKICAgICAgCiAgICAgW3NlbGYgc2V0
RnJhbWU6ZnJhbWUgZGlzcGxheTpOT107CiAgICAgICAgIAotICAgIF9pbnB1dFRleHRWaWV3ID0g
W1tXS1RleHRJbnB1dFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6WyhOU1ZpZXcgKilzZWxmLmNv
bnRlbnRWaWV3IGZyYW1lXV07Ci0gICAgX2lucHV0VGV4dFZpZXcuYXV0b3Jlc2l6aW5nTWFzayA9
IE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUgfCBOU1ZpZXdNYXhYTWFy
Z2luIHwgTlNWaWV3TWluWE1hcmdpbiB8IE5TVmlld01heFlNYXJnaW4gfCBOU1ZpZXdNaW5ZTWFy
Z2luOworICAgIF9pbnB1dFRleHRWaWV3ID0gYWRvcHROUyhbW1dLVGV4dElucHV0VmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpbKE5TVmlldyAqKXNlbGYuY29udGVudFZpZXcgZnJhbWVdXSk7Cisg
ICAgW19pbnB1dFRleHRWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6IE5TVmlld1dpZHRoU2l6YWJs
ZSB8IE5TVmlld0hlaWdodFNpemFibGUgfCBOU1ZpZXdNYXhYTWFyZ2luIHwgTlNWaWV3TWluWE1h
cmdpbiB8IE5TVmlld01heFlNYXJnaW4gfCBOU1ZpZXdNaW5ZTWFyZ2luXTsKICAgICAgICAgCi0g
ICAgTlNTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0gW1tOU1Njcm9sbFZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6WyhOU1ZpZXcgKilzZWxmLmNvbnRlbnRWaWV3IGZyYW1lXV07Ci0gICAgc2Nyb2xs
Vmlldy5kb2N1bWVudFZpZXcgPSBfaW5wdXRUZXh0VmlldzsKLSAgICBzZWxmLmNvbnRlbnRWaWV3
ID0gc2Nyb2xsVmlldzsKLSAgICBbc2Nyb2xsVmlldyByZWxlYXNlXTsKKyAgICBhdXRvIHNjcm9s
bFZpZXcgPSBhZG9wdE5TKFtbTlNTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOlsoTlNW
aWV3ICopc2VsZi5jb250ZW50VmlldyBmcmFtZV1dKTsKKyAgICBbc2Nyb2xsVmlldyBzZXREb2N1
bWVudFZpZXc6IF9pbnB1dFRleHRWaWV3LmdldCgpXTsKKyAgICBzZWxmLmNvbnRlbnRWaWV3ID0g
c2Nyb2xsVmlldy5nZXQoKTsKICAgICAgICAgCiAgICAgW3NlbGYgc2V0RmxvYXRpbmdQYW5lbDpZ
RVNdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQ
aWNrZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJN
YWMubW0KaW5kZXggYWM3MmVhY2U2YzFjZmUwMTQxM2Y2NTU0NzhjMzc1N2Y2MjYzNmE4Yy4uOWYw
ZTIzOWY0MjVlYjdjZTk1MmRlNTQxNzZmYzA0ZjA0MGZlMWYxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQpAQCAtMTM4LDEwICsxMzgs
OSBAQCArIChOU1BvcG92ZXIgKilfY29sb3JQb3BvdmVyQ3JlYXRlSWZOZWNlc3Nhcnk6KEJPT0wp
Zm9yY2VDcmVhdGlvbgogICAgICAgICBbcG9wb3ZlciBfc2V0UmVxdWlyZXNDb3JyZWN0Q29udGVu
dEFwcGVhcmFuY2U6WUVTXTsKICAgICAgICAgcG9wb3Zlci5iZWhhdmlvciA9IE5TUG9wb3ZlckJl
aGF2aW9yVHJhbnNpZW50OwogCi0gICAgICAgIE5TQ29sb3JQb3BvdmVyQ29udHJvbGxlciAqY29u
dHJvbGxlciA9IFtbTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0NvbG9yUG9wb3ZlckNvbnRyb2xsZXIi
KSBhbGxvY10gaW5pdF07Ci0gICAgICAgIHBvcG92ZXIuY29udGVudFZpZXdDb250cm9sbGVyID0g
Y29udHJvbGxlcjsKLSAgICAgICAgY29udHJvbGxlci5wb3BvdmVyID0gcG9wb3ZlcjsKLSAgICAg
ICAgW2NvbnRyb2xsZXIgcmVsZWFzZV07CisgICAgICAgIGF1dG8gY29udHJvbGxlciA9IGFkb3B0
TlMoW1tOU0NsYXNzRnJvbVN0cmluZyhAIk5TQ29sb3JQb3BvdmVyQ29udHJvbGxlciIpIGFsbG9j
XSBpbml0XSk7CisgICAgICAgIHBvcG92ZXIuY29udGVudFZpZXdDb250cm9sbGVyID0gY29udHJv
bGxlci5nZXQoKTsKKyAgICAgICAgW2NvbnRyb2xsZXIgc2V0UG9wb3ZlcjogcG9wb3Zlcl07CiAK
ICAgICAgICAgY29sb3JQb3BvdmVyID0gcG9wb3ZlcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCmluZGV4IGM4ZDhhMjNjYWMyMDA3NzE5OWE3NDY3
MTMwNDIzMmE1ODIxMjhkMzEuLmY4MWE2YzdiM2NiZGY3MGQ0N2EwNTAyMmM1MTMyMmNkZTAzNTQ0
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCkBAIC0z
Myw3ICszMyw3IEBAIGNsYXNzIFdlYlBhZ2U7CiBAaW50ZXJmYWNlIFdLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlIDogTlNPYmplY3QgewogICAgIE5ha2VkUHRyPFdlYktpdDo6V2ViUGFn
ZT4gbV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIGlk
IG1fcGFyZW50OworICAgIFJldGFpblB0cjxpZD4gbV9wYXJlbnQ7CiAgICAgYm9vbCBtX2hhc01h
aW5GcmFtZVBsdWdpbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLm1tCmluZGV4IDdkYTU5M2UyMDBkNDRmMGZjZjc4OTMzODZlYjVhNzU2NDRkODZjNmYu
LmFhM2JlYzBkMDZjODhjYjVjN2NlMTlhMzIzOGU5N2RlMGRhNDBjNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KQEAgLTEzMSwxMCArMTMxLDggQEAg
LSAodm9pZClzZXRIYXNNYWluRnJhbWVQbHVnaW46KGJvb2wpaGFzUGx1Z2luCiAtICh2b2lkKXNl
dFJlbW90ZVBhcmVudDooaWQpcGFyZW50CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBpZiAocGFyZW50ICE9IG1fcGFyZW50KSB7Ci0gICAgICAgIFttX3BhcmVudCByZWxlYXNl
XTsKLSAgICAgICAgbV9wYXJlbnQgPSBbcGFyZW50IHJldGFpbl07Ci0gICAgfQorICAgIGlmIChw
YXJlbnQgIT0gbV9wYXJlbnQpCisgICAgICAgIG1fcGFyZW50ID0gcGFyZW50OwogfQogCiAtIChp
ZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdE1hYy5tbQppbmRleCBmYTM2NmQ4NjY0YWY1MjUwNDQ1MWVhODRmOGQ0OTI3
ZWMwY2IwMTU5Li42ZGFiY2ZjMjc1NGU1YWQzYTQxOTE4MWMyYTYxNmNkODBhYjBkNzk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbQpAQCAtNjMsNyArNjMs
NiBAQCBAaW1wbGVtZW50YXRpb24gV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdAogLSAodm9p
ZClkZWFsbG9jCiB7CiAgICAgTlNBY2Nlc3NpYmlsaXR5VW5yZWdpc3RlclVuaXF1ZUlkRm9yVUlF
bGVtZW50KHNlbGYpOwotICAgIFttX3BhcmVudCByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxv
Y107CiB9CiAKQEAgLTE2MSw3ICsxNjAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICAgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJp
bGl0eSgpOwogICAgIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlQYXJlbnRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gbV9wYXJlbnQ7CisgICAg
ICAgIHJldHVybiBtX3BhcmVudC5nZXQoKTsKICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlXSkKICAgICAgICAgcmV0
dXJuIFttX3BhcmVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
V2luZG93QXR0cmlidXRlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQppbmRleCA3NTA4MWQxZjU1
MTY4Y2MyYTEzNTNhZWNkNmQ5OTc0NWZlNjhmMzBkLi4wNjg3MDMyNjZmZGI3NTY3M2IxNDBhMDE1
YmFhNDk1NDVlYWJiNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBAIC0xMzMsNyArMTMz
LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OnJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVD
aG9vc2VyJiBjaG9vc2VyKQogewogICAgIGF1dG8mIHNldHRpbmdzID0gY2hvb3Nlci5zZXR0aW5n
cygpOwogICAgIEJPT0wgYWxsb3dNdWx0aXBsZUZpbGVzID0gc2V0dGluZ3MuYWxsb3dzTXVsdGlw
bGVGaWxlczsKLSAgICBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciAqbGlzdGVuZXIgPSBbW1dl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIGFsbG9jXSBpbml0V2l0aENob29zZXI6Y2hvb3Nlcl07
CisgICAgYXV0byBsaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ciBhbGxvY10gaW5pdFdpdGhDaG9vc2VyOmNob29zZXJdKTsKIAogICAgIFdlYk1lZGlhQ2FwdHVy
ZVR5cGUgY2FwdHVyZVR5cGUgPSBXZWJNZWRpYUNhcHR1cmVUeXBlTm9uZTsKICNpZiBFTkFCTEUo
TUVESUFfQ0FQVFVSRSkKQEAgLTE0NiwxMyArMTQ2LDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
SU9TOjpydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYgY2hvb3NlcikKICAgICB9Owog
CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbdGhpcywgbGlzdGVuZXIgPSByZXRhaW5QdHIobGlzdGVuZXIpLCBjb25maWd1
cmF0aW9uID0gcmV0YWluUHRyKGNvbmZpZ3VyYXRpb24pXSB7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbdGhpcywgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKSwgY29uZmln
dXJhdGlvbiA9IHJldGFpblB0cihjb25maWd1cmF0aW9uKV0gewogICAgICAgICAgICAgW1t3ZWJW
aWV3KCkgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldygpIHJ1bk9wZW5Q
YW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6bGlzdGVuZXIuZ2V0KCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXTsKICAgICAgICAgfSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIFtbd2ViVmlldygpIF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZp
ZXcoKSBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOmxpc3RlbmVy
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07Ci0KLSAgICBbbGlzdGVuZXIgcmVsZWFzZV07
CisgICAgICAgIFtbd2ViVmlldygpIF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Ondl
YlZpZXcoKSBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOmxpc3Rl
bmVyLmdldCgpIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07CiB9CiAKIHZvaWQgV2ViQ2hy
b21lQ2xpZW50SU9TOjpzaG93U2hhcmVTaGVldChTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQppbmRleCBiZTVkNjQ3ZmRkYmIwYmNjZWM1MzE3
YzI3NzkxNTg2NzEyNjM4Yzg4Li44YWUzMmFhNGUxYjdiNWQyMjQ1ZjhiZTg0NDRmZmUxMDUwZmQx
MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZp
ZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3
SU9TLm1tCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGNyZWF0ZUNHQ29sb3JX
aXRoRGV2aWNlV2hpdGUoQ0dGbG9hdCB3aGl0ZSwgQ0dGbG9hdCBhbHBoYSkKIEBpbXBsZW1lbnRh
dGlvbiBXZWJQREZWaWV3IHsKICAgICBCT09MIGRhdGFTb3VyY2VIYXNCZWVuU2V0OwogICAgIENH
UERGRG9jdW1lbnRSZWYgX1BERkRvY3VtZW50OwotICAgIE5TU3RyaW5nICpfdGl0bGU7CisgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBfdGl0bGU7CiAgICAgQ0dSZWN0ICpfcGFnZVJlY3RzOwogfQog
CkBAIC0xMDksNyArMTA5LDYgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgaWYgKF9QREZEb2N1bWVu
dCAhPSBOVUxMKQogICAgICAgICBDR1BERkRvY3VtZW50UmVsZWFzZShfUERGRG9jdW1lbnQpOwog
ICAgIGZyZWUoX3BhZ2VSZWN0cyk7Ci0gICAgW190aXRsZSByZWxlYXNlXTsKICAgICBbc3VwZXIg
ZGVhbGxvY107CiB9CiAKQEAgLTIwMyw3ICsyMDIsNyBAQCAtICh2b2lkKXNldERhdGFTb3VyY2U6
KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgh
X3RpdGxlKQotICAgICAgICBfdGl0bGUgPSBbW1tbZGF0YVNvdXJjZSByZXF1ZXN0XSBVUkxdIGxh
c3RQYXRoQ29tcG9uZW50XSBjb3B5XTsKKyAgICAgICAgX3RpdGxlID0gYWRvcHROUyhbW1tbZGF0
YVNvdXJjZSByZXF1ZXN0XSBVUkxdIGxhc3RQYXRoQ29tcG9uZW50XSBjb3B5XSk7CiAKICAgICBX
QUtWaWV3ICogc3VwZXJ2aWV3ID0gW3NlbGYgc3VwZXJ2aWV3XTsKICAgICAKQEAgLTI5Niw4ICsy
OTUsNyBAQCAtICh2b2lkKV9jaGVja1BERlRpdGxlCiAgICAgICAgIHRpdGxlID0gWyhOU1N0cmlu
ZyAqKUNHUERGU3RyaW5nQ29weVRleHRTdHJpbmcodmFsdWUpIGF1dG9yZWxlYXNlXTsKIAogICAg
IGlmIChbdGl0bGUgbGVuZ3RoXSkgewotICAgICAgICBbX3RpdGxlIHJlbGVhc2VdOwotICAgICAg
ICBfdGl0bGUgPSBbdGl0bGUgY29weV07CisgICAgICAgIF90aXRsZSA9IGFkb3B0TlMoW3RpdGxl
IGNvcHldKTsKICAgICAgICAgY29yZShbc2VsZiBfZnJhbWVdKS0+bG9hZGVyKCkuY2xpZW50KCku
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoeyB0aXRsZSwgVGV4dERpcmVjdGlvbjo6TFRSIH0pOwog
ICAgIH0KIH0KQEAgLTM0NCw3ICszNDIsNyBAQCAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNl
CiAKIC0gKE5TU3RyaW5nICopdGl0bGUKIHsKLSAgICByZXR1cm4gX3RpdGxlOworICAgIHJldHVy
biBfdGl0bGUuZ2V0KCk7CiB9CiAKIC0gKHVuc2lnbmVkKXBhZ2VOdW1iZXJGb3JSZWN0OihDR1Jl
Y3QpcmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQ
REZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dl
YlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCBmZTQ0OTY2YjA5MTJlOTRhZTRjZGQ1NmVhYTc0
NTY5M2I2MTQxYTI4Li42OTZkZjViNjkxMTNmMTUyODk5NWRkMmQzYTIwMjdjNTViMzRhNjNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFj
ZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZp
ZXdQbGFjZWhvbGRlci5tbQpAQCAtMzI4LDE5ICszMjgsMTcgQEAgLSAodm9pZClfdXBkYXRlVGl0
bGVGb3JEb2N1bWVudElmQXZhaWxhYmxlCiAgICAgaWYgKCFfZG9jdW1lbnQgfHwgIUNHUERGRG9j
dW1lbnRJc1VubG9ja2VkKF9kb2N1bWVudCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TU3Ry
aW5nICp0aXRsZSA9IG5pbDsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHRpdGxlOwogCiAgICAg
Q0dQREZEaWN0aW9uYXJ5UmVmIGluZm8gPSBDR1BERkRvY3VtZW50R2V0SW5mbyhfZG9jdW1lbnQp
OwogICAgIENHUERGU3RyaW5nUmVmIHZhbHVlOwogICAgIGlmIChDR1BERkRpY3Rpb25hcnlHZXRT
dHJpbmcoaW5mbywgIlRpdGxlIiwgJnZhbHVlKSkKLSAgICAgICAgdGl0bGUgPSAoTlNTdHJpbmcg
KilDR1BERlN0cmluZ0NvcHlUZXh0U3RyaW5nKHZhbHVlKTsKKyAgICAgICAgdGl0bGUgPSBhZG9w
dE5TKChOU1N0cmluZyAqKUNHUERGU3RyaW5nQ29weVRleHRTdHJpbmcodmFsdWUpKTsKIAogICAg
IGlmIChbdGl0bGUgbGVuZ3RoXSkgewotICAgICAgICBbc2VsZiBzZXRUaXRsZTp0aXRsZV07Ci0g
ICAgICAgIFtbc2VsZiBfZnJhbWVdIF9kaXNwYXRjaERpZFJlY2VpdmVUaXRsZTp0aXRsZV07Cisg
ICAgICAgIFtzZWxmIHNldFRpdGxlOnRpdGxlLmdldCgpXTsKKyAgICAgICAgW1tzZWxmIF9mcmFt
ZV0gX2Rpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlOnRpdGxlLmdldCgpXTsKICAgICB9Ci0KLSAgICBb
dGl0bGUgcmVsZWFzZV07CiB9CiAKIC0gKENHUmVjdClfZ2V0UERGUGFnZUJvdW5kczooQ0dQREZQ
YWdlUmVmKXBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01V
SUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRF
eHRlbnNpb25zLm1tCmluZGV4IGI1MjA2OGQ1YzVmMzUxNjMwYmNjZTkxY2QyNDU3NWY1MWIzYzAy
ZWMuLjhjYWY3NThiOGE2NTBlOGJmYzM4ZTcxMGRlNDdmNTJhOGM4MTU0ZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMTgz
LDkgKzE4Myw4IEBAIC0gKE5TQXJyYXkgKilhYnNvbHV0ZVF1YWRzCiAgICAgfQogCiAgICAgaWYg
KCFbcXVhZHMgY291bnRdKSB7Ci0gICAgICAgIFdLUXVhZE9iamVjdCogcXVhZE9iamVjdCA9IFtb
V0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkXV07Ci0g
ICAgICAgIHF1YWRzID0gQFtxdWFkT2JqZWN0XTsKLSAgICAgICAgW3F1YWRPYmplY3QgcmVsZWFz
ZV07CisgICAgICAgIGF1dG8gcXVhZE9iamVjdCA9IGFkb3B0TlMoW1tXS1F1YWRPYmplY3QgYWxs
b2NdIGluaXRXaXRoUXVhZDpbc2VsZiBhYnNvbHV0ZVF1YWRdXSk7CisgICAgICAgIHF1YWRzID0g
QFtxdWFkT2JqZWN0LmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcXVhZHM7CkBAIC0zNjAs
OSArMzU5LDggQEAgLSAoTlNBcnJheSAqKWJvdW5kaW5nQm94ZXNXaXRoT3duZXI6KERPTU5vZGUg
Kilvd25lcgogCiAtIChOU0FycmF5ICopYWJzb2x1dGVRdWFkc1dpdGhPd25lcjooRE9NTm9kZSAq
KW93bmVyCiB7Ci0gICAgV0tRdWFkT2JqZWN0ICpxdWFkT2JqZWN0ID0gW1tXS1F1YWRPYmplY3Qg
YWxsb2NdIGluaXRXaXRoUXVhZDpbc2VsZiBhYnNvbHV0ZVF1YWRXaXRoT3duZXI6b3duZXJdXTsK
LSAgICBOU0FycmF5ICpxdWFkQXJyYXkgPSBAW3F1YWRPYmplY3RdOwotICAgIFtxdWFkT2JqZWN0
IHJlbGVhc2VdOworICAgIGF1dG8gcXVhZE9iamVjdCA9IGFkb3B0TlMoW1tXS1F1YWRPYmplY3Qg
YWxsb2NdIGluaXRXaXRoUXVhZDpbc2VsZiBhYnNvbHV0ZVF1YWRXaXRoT3duZXI6b3duZXJdXSk7
CisgICAgTlNBcnJheSAqcXVhZEFycmF5ID0gQFtxdWFkT2JqZWN0LmdldCgpXTsKICAgICByZXR1
cm4gcXVhZEFycmF5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRXhjZXB0aW9uSGFuZGxlcnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRXhj
ZXB0aW9uSGFuZGxlcnMubW0KaW5kZXggYzhiZTU1MWI4NTBiY2UxNzIzYTJmMTE0ZTJkZWU2Y2U2
ZGQyOTVhMS4uNzlkN2MwMDM2ZjA4MDhjMDIxY2IxMWZlN2U1NTM3ZGNhZTI0YjBmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbQpAQCAt
NDIsMTkgKzQyLDE1IEBAIHN0YXRpYyBOT19SRVRVUk4gdm9pZCByYWlzZURPTUVycm9yRXhjZXB0
aW9uKFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMpCiAKICAgICBhdXRvIGRlc2NyaXB0aW9uID0g
V2ViQ29yZTo6RE9NRXhjZXB0aW9uOjpkZXNjcmlwdGlvbihlYyk7CiAKLSAgICBOU1N0cmluZyAq
cmVhc29uOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gcmVhc29uOwogICAgIGlmIChkZXNjcmlw
dGlvbi5uYW1lKQotICAgICAgICByZWFzb24gPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZv
cm1hdDpAIioqKiAlczogJUAgJWQiLCBkZXNjcmlwdGlvbi5uYW1lLmNoYXJhY3RlcnMoKSwgRE9N
RXhjZXB0aW9uLCBkZXNjcmlwdGlvbi5sZWdhY3lDb2RlXTsKKyAgICAgICAgcmVhc29uID0gYWRv
cHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIioqKiAlczogJUAgJWQiLCBk
ZXNjcmlwdGlvbi5uYW1lLmNoYXJhY3RlcnMoKSwgRE9NRXhjZXB0aW9uLCBkZXNjcmlwdGlvbi5s
ZWdhY3lDb2RlXSk7CiAgICAgZWxzZQotICAgICAgICByZWFzb24gPSBbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aEZvcm1hdDpAIioqKiAlQCAlZCIsIERPTUV4Y2VwdGlvbiwgZGVzY3JpcHRpb24u
bGVnYWN5Q29kZV07CisgICAgICAgIHJlYXNvbiA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhGb3JtYXQ6QCIqKiogJUAgJWQiLCBET01FeGNlcHRpb24sIGRlc2NyaXB0aW9uLmxl
Z2FjeUNvZGVdKTsKIAotICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBbW05TRGljdGlvbmFy
eSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpAKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUp
LCBET01FeGNlcHRpb24sIG5pbF07Ci0KLSAgICBOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uID0gW05T
RXhjZXB0aW9uIGV4Y2VwdGlvbldpdGhOYW1lOkRPTUV4Y2VwdGlvbiByZWFzb246cmVhc29uIHVz
ZXJJbmZvOnVzZXJJbmZvXTsKLQotICAgIFtyZWFzb24gcmVsZWFzZV07Ci0gICAgW3VzZXJJbmZv
IHJlbGVhc2VdOworICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOkAoZGVzY3JpcHRpb24ubGVnYWN5Q29kZSksIERP
TUV4Y2VwdGlvbiwgbmlsXSk7CiAKKyAgICBOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uID0gW05TRXhj
ZXB0aW9uIGV4Y2VwdGlvbldpdGhOYW1lOkRPTUV4Y2VwdGlvbiByZWFzb246cmVhc29uLmdldCgp
IHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXTsKICAgICBbZXhjZXB0aW9uIHJhaXNlXTsKIAogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0
ZS5tbQppbmRleCBkY2I3YzkzMWM5Njc3NmZkMDhmNDk2YWZiYzlmMWY0ZDIwZWUyMTNhLi4wZjU4
OGQyMDFmYjg2M2Q0YzUzNDY2M2VhOTU0MTEyZGI0ZjdlZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVs
dFVJRGVsZWdhdGUubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3
LmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbXBvcnQgIldlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5oIgpAQCAtMTkyLDcgKzE5
Myw3IEBAIC0gKEJPT0wpd2ViVmlldzogKFdlYlZpZXcgKil3diBydW5KYXZhU2NyaXB0Q29uZmly
bVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopCiAtIChOU1N0cmluZyAqKXdlYlZpZXc6IChX
ZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdHJp
bmcgKilwcm9tcHQgZGVmYXVsdFRleHQ6KE5TU3RyaW5nICopZGVmYXVsdFRleHQgaW5pdGlhdGVk
QnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbCAqcGFuZWwgPSBbW1dlYkphdmFTY3JpcHRU
ZXh0SW5wdXRQYW5lbCBhbGxvY10gaW5pdFdpdGhQcm9tcHQ6cHJvbXB0IHRleHQ6ZGVmYXVsdFRl
eHRdOworICAgIGF1dG8gcGFuZWwgPSBhZG9wdE5TKFtbV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBh
bmVsIGFsbG9jXSBpbml0V2l0aFByb21wdDpwcm9tcHQgdGV4dDpkZWZhdWx0VGV4dF0pOwogICAg
IFtwYW5lbCBzaG93V2luZG93Om5pbF07CiAgICAgTlNTdHJpbmcgKnJlc3VsdDsKICAgICBpZiAo
W05TQXBwIHJ1bk1vZGFsRm9yV2luZG93OltwYW5lbCB3aW5kb3ddXSkKQEAgLTIwMCw3ICsyMDEs
NiBAQCAtIChOU1N0cmluZyAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdFRl
eHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdAogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0g
bmlsOwogICAgIFtbcGFuZWwgd2luZG93XSBjbG9zZV07Ci0gICAgW3BhbmVsIHJlbGVhc2VdOwog
ICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KaW5kZXggZjI3NDcwZGJjMzAwY2Fh
MGU1Y2MwMjlhMjdiMmRhMTM5ZmFmMjFlZi4uOWJmMzAyMGFhMzI2ZTk2NTk1OWQ2NGM2ZjgwMGQx
NjUyNTlhMGJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9X
ZWJIaXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlz
dG9yeS5tbQpAQCAtNzksOSArNzksOSBAQCBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViSGlzdG9yeVBy
aXZhdGUgOiBOU09iamVjdCB7CiBAcHJpdmF0ZQotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9l
bnRyaWVzQnlVUkw7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IF9lbnRyaWVz
QnlVUkw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGVUb0VudHJpZXNNYXA+IF9lbnRyaWVzQnlE
YXRlOwotICAgIE5TTXV0YWJsZUFycmF5ICpfb3JkZXJlZExhc3RWaXNpdGVkRGF5czsKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9vcmRlcmVkTGFzdFZpc2l0ZWREYXlzOwogICAgIEJP
T0wgaXRlbUxpbWl0U2V0OwogICAgIGludCBpdGVtTGltaXQ7CiAgICAgQk9PTCBhZ2VJbkRheXNM
aW1pdFNldDsKQEAgLTEzMSw3ICsxMzEsNyBAQCAtIChpZClpbml0CiAgICAgaWYgKCFzZWxmKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIF9lbnRyaWVzQnlVUkwgPSBbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgIF9lbnRyaWVzQnlVUkwgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIF9lbnRyaWVzQnlEYXRlID0g
bWFrZVVuaXF1ZTxEYXRlVG9FbnRyaWVzTWFwPigpOwogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0x
MzksOCArMTM5LDYgQEAgLSAoaWQpaW5pdAogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbX2Vu
dHJpZXNCeVVSTCByZWxlYXNlXTsKLSAgICBbX29yZGVyZWRMYXN0VmlzaXRlZERheXMgcmVsZWFz
ZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC0yMzgsNyArMjM2LDYgQEAgLSAoQk9P
TClyZW1vdmVJdGVtRnJvbURhdGVDYWNoZXM6KFdlYkhpc3RvcnlJdGVtICopZW50cnkKICAgICBp
ZiAoW2VudHJpZXNGb3JEYXRlIGNvdW50XSA9PSAwKSB7CiAgICAgICAgIF9lbnRyaWVzQnlEYXRl
LT5yZW1vdmUoaXQpOwogICAgICAgICAvLyBDbGVhciBfb3JkZXJlZExhc3RWaXNpdGVkRGF5cyBz
byBpdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIHdoZW4gbmV4dCByZXF1ZXN0ZWQuCi0gICAgICAgIFtf
b3JkZXJlZExhc3RWaXNpdGVkRGF5cyByZWxlYXNlXTsKICAgICAgICAgX29yZGVyZWRMYXN0Vmlz
aXRlZERheXMgPSBuaWw7CiAgICAgfQogICAgIApAQCAtMjc0LDExICsyNzEsOSBAQCAtICh2b2lk
KWFkZEl0ZW1Ub0RhdGVDYWNoZXM6KFdlYkhpc3RvcnlJdGVtICopZW50cnkKICAgICAgICAgW3Nl
bGYgaW5zZXJ0SXRlbTplbnRyeSBmb3JEYXRlS2V5OmRhdGVLZXldOwogICAgIGVsc2UgewogICAg
ICAgICAvLyBubyBvdGhlciBlbnRyaWVzIGV4aXN0IGZvciB0aGlzIGRhdGUKLSAgICAgICAgTlNN
dXRhYmxlQXJyYXkgKmVudHJpZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9i
amVjdHM6JmVudHJ5IGNvdW50OjFdOwotICAgICAgICBfZW50cmllc0J5RGF0ZS0+c2V0KGRhdGVL
ZXksIGVudHJpZXMpOwotICAgICAgICBbZW50cmllcyByZWxlYXNlXTsKKyAgICAgICAgYXV0byBl
bnRyaWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6
JmVudHJ5IGNvdW50OjFdKTsKKyAgICAgICAgX2VudHJpZXNCeURhdGUtPnNldChkYXRlS2V5LCBl
bnRyaWVzLmdldCgpKTsKICAgICAgICAgLy8gQ2xlYXIgX29yZGVyZWRMYXN0VmlzaXRlZERheXMg
c28gaXQgd2lsbCBiZSByZWdlbmVyYXRlZCB3aGVuIG5leHQgcmVxdWVzdGVkLgotICAgICAgICBb
X29yZGVyZWRMYXN0VmlzaXRlZERheXMgcmVsZWFzZV07CiAgICAgICAgIF9vcmRlcmVkTGFzdFZp
c2l0ZWREYXlzID0gbmlsOwogICAgIH0KIH0KQEAgLTI5MSwyNiArMjg2LDI1IEBAIC0gKFdlYkhp
c3RvcnlJdGVtICopdmlzaXRlZFVSTDooTlNVUkwgKil1cmwgd2l0aFRpdGxlOihOU1N0cmluZyAq
KXRpdGxlCiAgICAgTlNTdHJpbmcgKlVSTFN0cmluZyA9IFt1cmwgX3dlYl9vcmlnaW5hbERhdGFB
c1N0cmluZ107CiAgICAgaWYgKCFVUkxTdHJpbmcpCiAgICAgICAgIFVSTFN0cmluZyA9IEAiIjsK
LSAgICBXZWJIaXN0b3J5SXRlbSAqZW50cnkgPSBbX2VudHJpZXNCeVVSTCBvYmplY3RGb3JLZXk6
VVJMU3RyaW5nXTsKKyAgICBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+IGVudHJ5ID0gW19lbnRy
aWVzQnlVUkwgb2JqZWN0Rm9yS2V5OlVSTFN0cmluZ107CiAKICAgICBpZiAoZW50cnkpIHsKLSAg
ICAgICAgTE9HKEhpc3RvcnksICJVcGRhdGluZyBnbG9iYWwgaGlzdG9yeSBlbnRyeSAlQCIsIGVu
dHJ5KTsKKyAgICAgICAgTE9HKEhpc3RvcnksICJVcGRhdGluZyBnbG9iYWwgaGlzdG9yeSBlbnRy
eSAlQCIsIGVudHJ5LmdldCgpKTsKICAgICAgICAgLy8gUmVtb3ZlIHRoZSBpdGVtIGZyb20gZGF0
ZSBjYWNoZXMgYmVmb3JlIGNoYW5naW5nIGl0cyBsYXN0IHZpc2l0ZWQgZGF0ZS4gIE90aGVyd2lz
ZSB3ZSBtaWdodCBnZXQgZHVwbGljYXRlIGVudHJpZXMKICAgICAgICAgLy8gYXMgc2VlbiBpbiA8
cmRhcjovL3Byb2JsZW0vNjU3MDU3Mz4uCi0gICAgICAgIEJPT0wgaXRlbVdhc0luRGF0ZUNhY2hl
cyA9IFtzZWxmIHJlbW92ZUl0ZW1Gcm9tRGF0ZUNhY2hlczplbnRyeV07CisgICAgICAgIEJPT0wg
aXRlbVdhc0luRGF0ZUNhY2hlcyA9IFtzZWxmIHJlbW92ZUl0ZW1Gcm9tRGF0ZUNhY2hlczplbnRy
eS5nZXQoKV07CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoaXRlbVdhc0luRGF0ZUNhY2hlcywgaXRl
bVdhc0luRGF0ZUNhY2hlcyk7CiAKICAgICAgICAgW2VudHJ5IF92aXNpdGVkV2l0aFRpdGxlOnRp
dGxlXTsKICAgICB9IGVsc2UgewogICAgICAgICBMT0coSGlzdG9yeSwgIkFkZGluZyBuZXcgZ2xv
YmFsIGhpc3RvcnkgZW50cnkgZm9yICVAIiwgdXJsKTsKLSAgICAgICAgZW50cnkgPSBbW1dlYkhp
c3RvcnlJdGVtIGFsbG9jXSBpbml0V2l0aFVSTFN0cmluZzpVUkxTdHJpbmcgdGl0bGU6dGl0bGUg
bGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWw6W05TRGF0ZSB0aW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5j
ZURhdGVdXTsKLSAgICAgICAgW19lbnRyaWVzQnlVUkwgc2V0T2JqZWN0OmVudHJ5IGZvcktleTpV
UkxTdHJpbmddOwotICAgICAgICBbZW50cnkgcmVsZWFzZV07CisgICAgICAgIGVudHJ5ID0gYWRv
cHROUyhbW1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0V2l0aFVSTFN0cmluZzpVUkxTdHJpbmcg
dGl0bGU6dGl0bGUgbGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWw6W05TRGF0ZSB0aW1lSW50ZXJ2YWxT
aW5jZVJlZmVyZW5jZURhdGVdXSk7CisgICAgICAgIFtfZW50cmllc0J5VVJMIHNldE9iamVjdDpl
bnRyeS5nZXQoKSBmb3JLZXk6VVJMU3RyaW5nXTsKICAgICB9CiAgICAgCi0gICAgW3NlbGYgYWRk
SXRlbVRvRGF0ZUNhY2hlczplbnRyeV07CisgICAgW3NlbGYgYWRkSXRlbVRvRGF0ZUNhY2hlczpl
bnRyeS5nZXQoKV07CiAKLSAgICByZXR1cm4gZW50cnk7CisgICAgcmV0dXJuIGVudHJ5LmdldCgp
OwogfQogCiAtIChCT09MKWFkZEl0ZW06KFdlYkhpc3RvcnlJdGVtICopZW50cnkgZGlzY2FyZER1
cGxpY2F0ZTooQk9PTClkaXNjYXJkRHVwbGljYXRlCkBAIC0zMjEsMzMgKzMxNSwyMiBAQCAtIChC
T09MKWFkZEl0ZW06KFdlYkhpc3RvcnlJdGVtICopZW50cnkgZGlzY2FyZER1cGxpY2F0ZTooQk9P
TClkaXNjYXJkRHVwbGljYXRlCiAgICAgTlNTdHJpbmcgKlVSTFN0cmluZyA9IFtlbnRyeSBVUkxT
dHJpbmddOwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgV2ViSGlzdG9yeUl0ZW0g
Km9sZEVudHJ5ID0gW19lbnRyaWVzQnlVUkwgb2JqZWN0Rm9yS2V5OlVSTFN0cmluZ107Ci0gICAg
aWYgKG9sZEVudHJ5KSB7CisgICAgaWYgKGF1dG8gb2xkRW50cnkgPSByZXRhaW5QdHIoW19lbnRy
aWVzQnlVUkwgb2JqZWN0Rm9yS2V5OlVSTFN0cmluZ10pKSB7CiAgICAgICAgIGlmIChkaXNjYXJk
RHVwbGljYXRlKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgICAgIC8vIFRoZSBsYXN0
IHJlZmVyZW5jZSB0byBvbGRFbnRyeSBtaWdodCBiZSB0aGlzIGRpY3Rpb25hcnksIHNvIHdlIGhv
bGQgb250byBhIHJlZmVyZW5jZQotICAgICAgICAvLyB1bnRpbCB3ZSdyZSBkb25lIHdpdGggb2xk
RW50cnkuCi0gICAgICAgIFtvbGRFbnRyeSByZXRhaW5dOwogICAgICAgICBbc2VsZiByZW1vdmVJ
dGVtRm9yVVJMU3RyaW5nOlVSTFN0cmluZ107Ci0gICAgICAgIFtvbGRFbnRyeSByZWxlYXNlXTsK
ICAgICB9CiAKICAgICBbc2VsZiBhZGRJdGVtVG9EYXRlQ2FjaGVzOmVudHJ5XTsKICAgICBbX2Vu
dHJpZXNCeVVSTCBzZXRPYmplY3Q6ZW50cnkgZm9yS2V5OlVSTFN0cmluZ107CiAjZWxzZQotICAg
IFdlYkhpc3RvcnlJdGVtICpvdGhlckVudHJ5ID0gW19lbnRyaWVzQnlVUkwgb2JqZWN0Rm9yS2V5
OlVSTFN0cmluZ107Ci0gICAgaWYgKG90aGVyRW50cnkpIHsKKyAgICBpZiAoYXV0byBvdGhlckVu
dHJ5ID0gcmV0YWluUHRyKFtfZW50cmllc0J5VVJMIG9iamVjdEZvcktleTpVUkxTdHJpbmddKSkg
ewogICAgICAgICBpZiAoZGlzY2FyZER1cGxpY2F0ZSkKICAgICAgICAgICAgIHJldHVybiBOTzsK
IAogICAgICAgICBpZiAoW290aGVyRW50cnkgbGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWxdIDwgW2Vu
dHJ5IGxhc3RWaXNpdGVkVGltZUludGVydmFsXSkgewotICAgICAgICAgICAgLy8gVGhlIGxhc3Qg
cmVmZXJlbmNlIHRvIG9sZEVudHJ5IG1pZ2h0IGJlIHRoaXMgZGljdGlvbmFyeSwgc28gd2UgaG9s
ZCBvbnRvIGEgcmVmZXJlbmNlCi0gICAgICAgICAgICAvLyB1bnRpbCB3ZSdyZSBkb25lIHdpdGgg
b2xkRW50cnkuCi0gICAgICAgICAgICBbb3RoZXJFbnRyeSByZXRhaW5dOwogICAgICAgICAgICAg
W3NlbGYgcmVtb3ZlSXRlbUZvclVSTFN0cmluZzpVUkxTdHJpbmddOwotICAgICAgICAgICAgW290
aGVyRW50cnkgcmVsZWFzZV07Ci0KICAgICAgICAgICAgIFtzZWxmIGFkZEl0ZW1Ub0RhdGVDYWNo
ZXM6ZW50cnldOwogICAgICAgICAgICAgW19lbnRyaWVzQnlVUkwgc2V0T2JqZWN0OmVudHJ5IGZv
cktleTpVUkxTdHJpbmddOwogICAgICAgICB9IGVsc2UKQEAgLTM2OCwxMCArMzUxLDggQEAgLSAo
dm9pZClyZWJ1aWxkSGlzdG9yeUJ5RGF5SWZOZWVkZWQ6KFdlYkhpc3RvcnkgKil3ZWJIaXN0b3J5
CiAgICAgYXV0byBlbnRyeUFycmF5cyA9IGNvcHlUb1ZlY3RvcihfZW50cmllc0J5RGF0ZS0+dmFs
dWVzKCkpOwogICAgIF9lbnRyaWVzQnlEYXRlLT5jbGVhcigpOwogICAgIAotICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmVudHJpZXNCeVVSTCA9IF9lbnRyaWVzQnlVUkw7Ci0gICAgX2VudHJpZXNC
eVVSTCA9IG5pbDsKKyAgICBhdXRvIGVudHJpZXNCeVVSTCA9IHN0ZDo6ZXhjaGFuZ2UoX2VudHJp
ZXNCeVVSTCwgbmlsKTsKICAgICAKLSAgICBbX29yZGVyZWRMYXN0VmlzaXRlZERheXMgcmVsZWFz
ZV07CiAgICAgX29yZGVyZWRMYXN0VmlzaXRlZERheXMgPSBuaWw7CiAgICAgCiAgICAgTlNBcnJh
eSAqYWxsRW50cmllcyA9IFtlbnRyaWVzQnlVUkwgYWxsVmFsdWVzXTsKQEAgLTQyMyw3ICs0MDQs
NiBAQCAtIChCT09MKXJlbW92ZUFsbEl0ZW1zCiAgICAgW19lbnRyaWVzQnlVUkwgcmVtb3ZlQWxs
T2JqZWN0c107CiAKICAgICAvLyBDbGVhciBfb3JkZXJlZExhc3RWaXNpdGVkRGF5cyBzbyBpdCB3
aWxsIGJlIHJlZ2VuZXJhdGVkIHdoZW4gbmV4dCByZXF1ZXN0ZWQuCi0gICAgW19vcmRlcmVkTGFz
dFZpc2l0ZWREYXlzIHJlbGVhc2VdOwogICAgIF9vcmRlcmVkTGFzdFZpc2l0ZWREYXlzID0gbmls
OwogCiAgICAgV2ViVmlzaXRlZExpbmtTdG9yZTo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7CkBA
IC00NTgsMTUgKzQzOCwxNCBAQCAtIChOU0FycmF5ICopb3JkZXJlZExhc3RWaXNpdGVkRGF5cwog
CiAgICAgICAgIHN0ZDo6c29ydChkYXlzQXNUaW1lSW50ZXJ2YWxzLmJlZ2luKCksIGRheXNBc1Rp
bWVJbnRlcnZhbHMuZW5kKCkpOwogICAgICAgICBzaXplX3QgY291bnQgPSBkYXlzQXNUaW1lSW50
ZXJ2YWxzLnNpemUoKTsKLSAgICAgICAgX29yZGVyZWRMYXN0VmlzaXRlZERheXMgPSBbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvdW50XTsKKyAgICAgICAgX29yZGVy
ZWRMYXN0VmlzaXRlZERheXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQ2FwYWNpdHk6Y291bnRdKTsKICAgICAgICAgZm9yIChpbnQgaSA9IGNvdW50IC0gMTsgaSA+
PSAwOyBpLS0pIHsKICAgICAgICAgICAgIE5TVGltZUludGVydmFsIGludGVydmFsID0gZGF5c0Fz
VGltZUludGVydmFsc1tpXTsKLSAgICAgICAgICAgIE5TQ2FsZW5kYXJEYXRlICpkYXRlID0gW1tO
U0NhbGVuZGFyRGF0ZSBhbGxvY10gaW5pdFdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURh
dGU6aW50ZXJ2YWxdOwotICAgICAgICAgICAgW19vcmRlcmVkTGFzdFZpc2l0ZWREYXlzIGFkZE9i
amVjdDpkYXRlXTsKLSAgICAgICAgICAgIFtkYXRlIHJlbGVhc2VdOworICAgICAgICAgICAgYXV0
byBkYXRlID0gYWRvcHROUyhbW05TQ2FsZW5kYXJEYXRlIGFsbG9jXSBpbml0V2l0aFRpbWVJbnRl
cnZhbFNpbmNlUmVmZXJlbmNlRGF0ZTppbnRlcnZhbF0pOworICAgICAgICAgICAgW19vcmRlcmVk
TGFzdFZpc2l0ZWREYXlzIGFkZE9iamVjdDpkYXRlLmdldCgpXTsKICAgICAgICAgfQogICAgIH0K
LSAgICByZXR1cm4gX29yZGVyZWRMYXN0VmlzaXRlZERheXM7CisgICAgcmV0dXJuIF9vcmRlcmVk
TGFzdFZpc2l0ZWREYXlzLmdldCgpOwogfQogCiAtIChOU0FycmF5ICopb3JkZXJlZEl0ZW1zTGFz
dFZpc2l0ZWRPbkRheTooTlNDYWxlbmRhckRhdGUgKilkYXRlCkBAIC01OTMsNyArNTcyLDcgQEAg
LSAoQk9PTClsb2FkSGlzdG9yeUd1dHNGcm9tVVJMOihOU1VSTCAqKVVSTCBzYXZlZEl0ZW1zQ291
bnQ6KGludCAqKW51bWJlck9mSXRlbXMKIAogICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppdGVtQXNE
aWN0aW9uYXJ5IGluIGFycmF5KSB7CiAgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAg
ICAgICAgV2ViSGlzdG9yeUl0ZW0gKml0ZW0gPSBbW1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0
RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjppdGVtQXNEaWN0aW9uYXJ5XTsKKyAgICAgICAg
ICAgIGF1dG8gaXRlbSA9IGFkb3B0TlMoW1tXZWJIaXN0b3J5SXRlbSBhbGxvY10gaW5pdEZyb21E
aWN0aW9uYXJ5UmVwcmVzZW50YXRpb246aXRlbUFzRGljdGlvbmFyeV0pOwogCiAgICAgICAgICAg
ICAvLyBpdGVtIHdpdGhvdXQgVVJMIGlzIHVzZWxlc3M7IGRhdGEgb24gZGlzayBtdXN0IGhhdmUg
YmVlbiBiYWQ7IGlnbm9yZQogICAgICAgICAgICAgaWYgKFtpdGVtIFVSTFN0cmluZ10pIHsKQEAg
LTYwMywxNiArNTgyLDE0IEBAIC0gKEJPT0wpbG9hZEhpc3RvcnlHdXRzRnJvbVVSTDooTlNVUkwg
KilVUkwgc2F2ZWRJdGVtc0NvdW50OihpbnQgKiludW1iZXJPZkl0ZW1zCiAgICAgICAgICAgICAg
ICAgICAgIGFnZUxpbWl0UGFzc2VkID0gWUVTOwogCiAgICAgICAgICAgICAgICAgaWYgKGFnZUxp
bWl0UGFzc2VkIHx8IGl0ZW1MaW1pdFBhc3NlZCkKLSAgICAgICAgICAgICAgICAgICAgW2Rpc2Nh
cmRlZEl0ZW1zIGFkZE9iamVjdDppdGVtXTsKKyAgICAgICAgICAgICAgICAgICAgW2Rpc2NhcmRl
ZEl0ZW1zIGFkZE9iamVjdDppdGVtLmdldCgpXTsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKFtzZWxmIGFkZEl0ZW06aXRlbSBkaXNjYXJkRHVwbGljYXRl
OllFU10pCisgICAgICAgICAgICAgICAgICAgIGlmIChbc2VsZiBhZGRJdGVtOml0ZW0uZ2V0KCkg
ZGlzY2FyZER1cGxpY2F0ZTpZRVNdKQogICAgICAgICAgICAgICAgICAgICAgICAgKysoKm51bWJl
ck9mSXRlbXNMb2FkZWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoKm51bWJlck9mSXRlbXNM
b2FkZWQgPT0gaXRlbUNvdW50TGltaXQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtTGlt
aXRQYXNzZWQgPSBZRVM7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBbaXRlbSByZWxlYXNlXTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNjY5LDcgKzY0
Niw3IEBAIC0gKEJPT0wpc2F2ZVRvVVJMOihOU1VSTCAqKVVSTCBlcnJvcjooTlNFcnJvciAqKill
cnJvcgogCiAtICh2b2lkKWFkZFZpc2l0ZWRMaW5rc1RvVmlzaXRlZExpbmtTdG9yZTooV2ViVmlz
aXRlZExpbmtTdG9yZSYpdmlzaXRlZExpbmtTdG9yZQogewotICAgIGZvciAoTlNTdHJpbmcgKnVy
bFN0cmluZyBpbiBfZW50cmllc0J5VVJMKQorICAgIGZvciAoTlNTdHJpbmcgKnVybFN0cmluZyBp
biBfZW50cmllc0J5VVJMLmdldCgpKQogICAgICAgICB2aXNpdGVkTGlua1N0b3JlLmFkZFZpc2l0
ZWRMaW5rKHVybFN0cmluZyk7CiB9CiAKQEAgLTc4OCwxMSArNzY1LDkgQEAgLSAoV2ViSGlzdG9y
eUl0ZW0gKilpdGVtRm9yVVJMOihOU1VSTCAqKVVSTAogCiAtIChCT09MKWxvYWRGcm9tVVJMOihO
U1VSTCAqKVVSTCBlcnJvcjooTlNFcnJvciAqKillcnJvcgogewotICAgIE5TTXV0YWJsZUFycmF5
ICpkaXNjYXJkZWRJdGVtcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOyAgICAKLSAg
ICBpZiAoIVtfaGlzdG9yeVByaXZhdGUgbG9hZEZyb21VUkw6VVJMIGNvbGxlY3REaXNjYXJkZWRJ
dGVtc0ludG86ZGlzY2FyZGVkSXRlbXMgZXJyb3I6ZXJyb3JdKSB7Ci0gICAgICAgIFtkaXNjYXJk
ZWRJdGVtcyByZWxlYXNlXTsKKyAgICBhdXRvIGRpc2NhcmRlZEl0ZW1zID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgaWYgKCFbX2hpc3RvcnlQcml2YXRlIGxv
YWRGcm9tVVJMOlVSTCBjb2xsZWN0RGlzY2FyZGVkSXRlbXNJbnRvOmRpc2NhcmRlZEl0ZW1zLmdl
dCgpIGVycm9yOmVycm9yXSkKICAgICAgICAgcmV0dXJuIE5POwotICAgIH0KIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgV2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbihXZWJIaXN0b3J5
TG9hZGVkTm90aWZpY2F0aW9uLCBzZWxmLCBuaWwpOwpAQCAtODAzLDkgKzc3OCw4IEBAIC0gKEJP
T0wpbG9hZEZyb21VUkw6KE5TVVJMICopVVJMIGVycm9yOihOU0Vycm9yICoqKWVycm9yCiAjZW5k
aWYKIAogICAgIGlmIChbZGlzY2FyZGVkSXRlbXMgY291bnRdKQotICAgICAgICBbc2VsZiBfc2Vu
ZE5vdGlmaWNhdGlvbjpXZWJIaXN0b3J5SXRlbXNEaXNjYXJkZWRXaGlsZUxvYWRpbmdOb3RpZmlj
YXRpb24gZW50cmllczpkaXNjYXJkZWRJdGVtc107CisgICAgICAgIFtzZWxmIF9zZW5kTm90aWZp
Y2F0aW9uOldlYkhpc3RvcnlJdGVtc0Rpc2NhcmRlZFdoaWxlTG9hZGluZ05vdGlmaWNhdGlvbiBl
bnRyaWVzOmRpc2NhcmRlZEl0ZW1zLmdldCgpXTsKIAotICAgIFtkaXNjYXJkZWRJdGVtcyByZWxl
YXNlXTsKICAgICByZXR1cm4gWUVTOwogfQogCkBAIC04ODUsOSArODU5LDggQEAgLSAodm9pZClf
dmlzaXRlZFVSTDooTlNVUkwgKil1cmwgd2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIG1ldGhv
ZDooTlNTdHJpbmcgKikKIAogICAgIGVudHJ5LT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IG51
bGxwdHI7CiAKLSAgICBOU0FycmF5ICplbnRyaWVzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHM6ZW50cnksIG5pbF07Ci0gICAgW3NlbGYgX3NlbmROb3RpZmljYXRpb246V2ViSGlz
dG9yeUl0ZW1zQWRkZWROb3RpZmljYXRpb24gZW50cmllczplbnRyaWVzXTsKLSAgICBbZW50cmll
cyByZWxlYXNlXTsKKyAgICBhdXRvIGVudHJpZXMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhPYmplY3RzOmVudHJ5LCBuaWxdKTsKKyAgICBbc2VsZiBfc2VuZE5vdGlmaWNhdGlv
bjpXZWJIaXN0b3J5SXRlbXNBZGRlZE5vdGlmaWNhdGlvbiBlbnRyaWVzOmVudHJpZXMuZ2V0KCld
OwogfQogCiAtICh2b2lkKV9hZGRWaXNpdGVkTGlua3NUb1Zpc2l0ZWRMaW5rU3RvcmU6KFdlYlZp
c2l0ZWRMaW5rU3RvcmUgJil2aXNpdGVkTGlua1N0b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCA4N2U2MjlmOTk0OWYxMjE0
ODA0YmZlZDRhMDJiMTQ2NzVlN2NjYjZlLi5jYjE2Y2Q3NTIyZjBiYTk2YWNhMTUwMWZiNDY5NWU4
NDRkNDcxNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dl
Ykhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW0KQEAgLTM1Miw5ICszNTIsOCBAQCAtIChpZClpbml0RnJvbURpY3Rpb25h
cnlSZXByZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5ICopZGljdAogICAgIE5TQXJyYXkgKmNoaWxk
RGljdHMgPSBbZGljdCBvYmplY3RGb3JLZXk6Y2hpbGRyZW5LZXldOwogICAgIGlmIChjaGlsZERp
Y3RzKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBbY2hpbGREaWN0cyBjb3VudF0gLSAxOyBpID49
IDA7IGktLSkgewotICAgICAgICAgICAgV2ViSGlzdG9yeUl0ZW0gKmNoaWxkID0gW1tXZWJIaXN0
b3J5SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246W2NoaWxkRGlj
dHMgb2JqZWN0QXRJbmRleDppXV07CisgICAgICAgICAgICBhdXRvIGNoaWxkID0gYWRvcHROUyhb
W1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpb
Y2hpbGREaWN0cyBvYmplY3RBdEluZGV4OmldXSk7CiAgICAgICAgICAgICBjb3JlKF9wcml2YXRl
KS0+YWRkQ2hpbGRJdGVtKCpjb3JlKGNoaWxkLT5fcHJpdmF0ZSkpOwotICAgICAgICAgICAgW2No
aWxkIHJlbGVhc2VdOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJEb3dubG9hZC5tbQppbmRleCA1MDU5OGRlZTVjNWQxOGNkNWExY2QyMTBhMmQy
MWFmY2ZlNzgzYWNkLi4yZmNiMDBhZGIyNGFjYjY1ZGNmMzc5YjFhZmZkMjdmNzk0N2Q5NTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRG93bmxvYWQubW0KQEAgLTcyLDcg
KzcyLDcgQEAgc3RhdGljIHZvaWQgY2FsbE9uRGVsZWdhdGVUaHJlYWRBbmRXYWl0KENhbGxhYmxl
JiYgd29yaykKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkRvd25s
b2FkSW50ZXJuYWwgOiBOU09iamVjdCA8TlNVUkxEb3dubG9hZERlbGVnYXRlPiB7Ci0gICAgaWQg
cmVhbERlbGVnYXRlOworICAgIFJldGFpblB0cjxpZD4gcmVhbERlbGVnYXRlOwogfQogLSAodm9p
ZClzZXRSZWFsRGVsZWdhdGU6KGlkKXJlYWxEZWxlZ2F0ZTsKIEBlbmQKQEAgLTgxLDE0ICs4MSwx
MSBAQCBAaW1wbGVtZW50YXRpb24gV2ViRG93bmxvYWRJbnRlcm5hbAogCiAtICh2b2lkKWRlYWxs
b2MKIHsKLSAgICBbcmVhbERlbGVnYXRlIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIAogLSAodm9pZClzZXRSZWFsRGVsZWdhdGU6KGlkKXJkCiB7Ci0gICAgW3JkIHJldGFpbl07
Ci0gICAgW3JlYWxEZWxlZ2F0ZSByZWxlYXNlXTsKICAgICByZWFsRGVsZWdhdGUgPSByZDsKIH0K
IApAQCAtMTExLDcgKzEwOCw3IEBAIC0gKEJPT0wpcmVzcG9uZHNUb1NlbGVjdG9yOihTRUwpc2Vs
ZWN0b3IKIAogLSAodm9pZClkb3dubG9hZERpZEJlZ2luOihOU1VSTERvd25sb2FkICopZG93bmxv
YWQKIHsKLSAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRy
KHJlYWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKV0geworICAgIGNh
bGxPbkRlbGVnYXRlVGhyZWFkKFtyZWFsRGVsZWdhdGUgPSByZWFsRGVsZWdhdGUsIGRvd25sb2Fk
ID0gcmV0YWluUHRyKGRvd25sb2FkKV0gewogICAgICAgICBbcmVhbERlbGVnYXRlIGRvd25sb2Fk
RGlkQmVnaW46ZG93bmxvYWQuZ2V0KCldOwogICAgIH0pOwogfQpAQCAtMTQwLDExICsxMzcsMTEg
QEAgLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlMKICAgICB9CiAKICAgICBpZiAoW3JlYWxEZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTopXSkgewotICAgICAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVh
bERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0YWluUHRy
KGRvd25sb2FkKSwgY2hhbGxlbmdlID0gcmV0YWluUHRyKGNoYWxsZW5nZSldIHsKKyAgICAgICAg
Y2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93bmxv
YWQgPSByZXRhaW5QdHIoZG93bmxvYWQpLCBjaGFsbGVuZ2UgPSByZXRhaW5QdHIoY2hhbGxlbmdl
KV0gewogICAgICAgICAgICAgW3JlYWxEZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQoKSBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlLmdldCgpXTsKICAgICAg
ICAgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxE
ZWxlZ2F0ZSA9IHJldGFpblB0cihyZWFsRGVsZWdhdGUpLCBkb3dubG9hZCA9IHJldGFpblB0cihk
b3dubG9hZCksIGNoYWxsZW5nZSA9IHJldGFpblB0cihjaGFsbGVuZ2UpXSB7CisgICAgICAgIGNh
bGxPbkRlbGVnYXRlVGhyZWFkKFtyZWFsRGVsZWdhdGUgPSByZWFsRGVsZWdhdGUsIGRvd25sb2Fk
ID0gcmV0YWluUHRyKGRvd25sb2FkKSwgY2hhbGxlbmdlID0gcmV0YWluUHRyKGNoYWxsZW5nZSld
IHsKICAgICAgICAgICAgIE5TV2luZG93ICp3aW5kb3cgPSBuaWw7CiAgICAgICAgICAgICBpZiAo
W3JlYWxEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkV2luZG93
Rm9yQXV0aGVudGljYXRpb25TaGVldDopXSkKICAgICAgICAgICAgICAgICB3aW5kb3cgPSBbcmVh
bERlbGVnYXRlIGRvd25sb2FkV2luZG93Rm9yQXV0aGVudGljYXRpb25TaGVldDooV2ViRG93bmxv
YWQgKilkb3dubG9hZC5nZXQoKV07CkBAIC0xNTcsMTQgKzE1NCwxNCBAQCAtICh2b2lkKWRvd25s
b2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOihOUwogCiAtICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKIHsKLSAgICBjYWxs
T25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0ZSks
IGRvd25sb2FkID0gcmV0YWluUHRyKGRvd25sb2FkKSwgcmVzcG9uc2UgPSByZXRhaW5QdHIocmVz
cG9uc2UpXSB7CisgICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJlYWxE
ZWxlZ2F0ZSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQpLCByZXNwb25zZSA9IHJldGFp
blB0cihyZXNwb25zZSldIHsKICAgICAgICAgW3JlYWxEZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9h
ZC5nZXQoKSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOwogICAgIH0pOwogfQog
CiAtICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZURh
dGFPZkxlbmd0aDooTlNVSW50ZWdlcilsZW5ndGgKIHsKLSAgICBjYWxsT25EZWxlZ2F0ZVRocmVh
ZChbcmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0
YWluUHRyKGRvd25sb2FkKSwgbGVuZ3RoXSB7CisgICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3Jl
YWxEZWxlZ2F0ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93bmxvYWQgPSByZXRhaW5QdHIoZG93bmxvYWQp
LCBsZW5ndGhdIHsKICAgICAgICAgW3JlYWxEZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQo
KSBkaWRSZWNlaXZlRGF0YU9mTGVuZ3RoOmxlbmd0aF07CiAgICAgfSk7CiB9CkBAIC0xODEsMjgg
KzE3OCwyOCBAQCAtIChCT09MKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQgc2hv
dWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU6KE5TUwogCiAtICh2b2lkKWRvd25sb2FkOihO
U1VSTERvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUKIHsKLSAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChb
cmVhbERlbGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0YWlu
UHRyKGRvd25sb2FkKSwgZmlsZW5hbWUgPSByZXRhaW5QdHIoZmlsZW5hbWUpXSB7CisgICAgY2Fs
bE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93bmxvYWQg
PSByZXRhaW5QdHIoZG93bmxvYWQpLCBmaWxlbmFtZSA9IHJldGFpblB0cihmaWxlbmFtZSldIHsK
ICAgICAgICAgW3JlYWxEZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQoKSBkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZS5nZXQoKV07CiAgICAgfSk7CiB9
CiAKIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVE
ZXN0aW5hdGlvbjooTlNTdHJpbmcgKilwYXRoCiB7Ci0gICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQo
W3JlYWxEZWxlZ2F0ZSA9IHJldGFpblB0cihyZWFsRGVsZWdhdGUpLCBkb3dubG9hZCA9IHJldGFp
blB0cihkb3dubG9hZCksIHBhdGggPSByZXRhaW5QdHIocGF0aCldIHsKKyAgICBjYWxsT25EZWxl
Z2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmVhbERlbGVnYXRlLCBkb3dubG9hZCA9IHJldGFp
blB0cihkb3dubG9hZCksIHBhdGggPSByZXRhaW5QdHIocGF0aCldIHsKICAgICAgICAgW3JlYWxE
ZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQoKSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpwYXRo
LmdldCgpXTsKICAgICB9KTsKIH0KIAogLSAodm9pZClkb3dubG9hZERpZEZpbmlzaDooTlNVUkxE
b3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgY2FsbE9uRGVsZWdhdGVUaHJlYWQoW3JlYWxEZWxl
Z2F0ZSA9IHJldGFpblB0cihyZWFsRGVsZWdhdGUpLCBkb3dubG9hZCA9IHJldGFpblB0cihkb3du
bG9hZCldIHsKKyAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERlbGVnYXRlID0gcmVhbERl
bGVnYXRlLCBkb3dubG9hZCA9IHJldGFpblB0cihkb3dubG9hZCldIHsKICAgICAgICAgW3JlYWxE
ZWxlZ2F0ZSBkb3dubG9hZERpZEZpbmlzaDpkb3dubG9hZC5nZXQoKV07CiAgICAgfSk7CiB9CiAK
IC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3IKIHsKLSAgICBjYWxsT25EZWxlZ2F0ZVRocmVhZChbcmVhbERl
bGVnYXRlID0gcmV0YWluUHRyKHJlYWxEZWxlZ2F0ZSksIGRvd25sb2FkID0gcmV0YWluUHRyKGRv
d25sb2FkKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSB7CisgICAgY2FsbE9uRGVsZWdhdGVU
aHJlYWQoW3JlYWxEZWxlZ2F0ZSA9IHJlYWxEZWxlZ2F0ZSwgZG93bmxvYWQgPSByZXRhaW5QdHIo
ZG93bmxvYWQpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildIHsKICAgICAgICAgW3JlYWxEZWxl
Z2F0ZSBkb3dubG9hZDpkb3dubG9hZC5nZXQoKSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLmdldCgp
XTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNEYXRhRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0Rh
dGFFeHRyYXMubW0KaW5kZXggYzY5NGU1MjA5YzRmOTBjZDgyZjc4ODg4ZmU4NjQyNWE4ZmZlNDg4
OS4uMGRkZTI4N2MyZjA0Yzk2MDk2NDE0OGRkZmIyYzMzNDM4MmU1MTc5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KQEAgLTI3LDYgKzI3
LDcgQEAKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJOU0RhdGFFeHRyYXNQcml2YXRlLmg+CiAK
ICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
IEBpbnRlcmZhY2UgTlNTdHJpbmcgKFdlYk5TRGF0YUV4dHJhc0ludGVybmFsKQogLSAoTlNTdHJp
bmcgKilfd2ViX2NhcGl0YWxpemVSRkM4MjJIZWFkZXJGaWVsZE5hbWU7CkBAIC0zMTEsMTEgKzMx
MiwxMCBAQCAtIChOU011dGFibGVEaWN0aW9uYXJ5ICopX3dlYmtpdF9wYXJzZVJGQzgyMkhlYWRl
ckZpZWxkcwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGNvbnRpbnVh
dGlvbiBvZiB0aGUgcHJldmlvdXMgaGVhZGVyCiAgICAgICAgICAgICBOU1N0cmluZyAqY3VycmVu
dFZhbHVlID0gW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6bGFzdEtleV07Ci0gICAgICAgICAg
ICBOU1N0cmluZyAqbmV3VmFsdWUgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmxp
bmUgbGVuZ3RoOmxpbmVMZW5ndGggZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ107
CisgICAgICAgICAgICBhdXRvIG5ld1ZhbHVlID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aEJ5dGVzOmxpbmUgbGVuZ3RoOmxpbmVMZW5ndGggZW5jb2Rpbmc6TlNJU09MYXRpbjFT
dHJpbmdFbmNvZGluZ10pOwogICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRWYWx1ZSk7CiAgICAg
ICAgICAgICBBU1NFUlQobmV3VmFsdWUpOwotICAgICAgICAgICAgW2hlYWRlckZpZWxkcyBzZXRP
YmplY3Q6W2N1cnJlbnRWYWx1ZSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpuZXdWYWx1ZV0gZm9y
S2V5Omxhc3RLZXldOwotICAgICAgICAgICAgW25ld1ZhbHVlIHJlbGVhc2VdOworICAgICAgICAg
ICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6W2N1cnJlbnRWYWx1ZSBzdHJpbmdCeUFwcGVuZGlu
Z1N0cmluZzpuZXdWYWx1ZS5nZXQoKV0gZm9yS2V5Omxhc3RLZXldOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gQnJhbmQgbmV3IGhlYWRlcgogICAgICAgICAgICAgY29uc3QgVUlu
dDgqIGNvbG9uOwpAQCAtMzMxLDEzICszMzEsMTIgQEAgLSAoTlNNdXRhYmxlRGljdGlvbmFyeSAq
KV93ZWJraXRfcGFyc2VSRkM4MjJIZWFkZXJGaWVsZHMKICAgICAgICAgICAgICAgICBpZiAoKmNv
bG9uICE9ICcgJyAmJiAqY29sb24gIT0gJ1x0JykKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBOU1N0cmluZyAqdmFsdWUgPSBbW05TU3RyaW5n
IGFsbG9jXSBpbml0V2l0aEJ5dGVzOmNvbG9uIGxlbmd0aDplb2wgLSBjb2xvbiBlbmNvZGluZzpO
U0lTT0xhdGluMVN0cmluZ0VuY29kaW5nXTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0ZXM6Y29sb24gbGVuZ3RoOmVvbCAtIGNv
bG9uIGVuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5nRW5jb2RpbmddKTsKICAgICAgICAgICAgIGlm
IChOU1N0cmluZyAqb2xkVmFsdWUgPSBbaGVhZGVyRmllbGRzIG9iamVjdEZvcktleTpsYXN0S2V5
XSkgewotICAgICAgICAgICAgICAgIFt2YWx1ZSBhdXRvcmVsZWFzZV07Ci0gICAgICAgICAgICAg
ICAgdmFsdWUgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIiVALCAlQCIsIG9s
ZFZhbHVlLCB2YWx1ZV07CisgICAgICAgICAgICAgICAgYXV0byBuZXdWYWx1ZSA9IFtbTlNTdHJp
bmcgYWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiJUAsICVAIiwgb2xkVmFsdWUsIHZhbHVlLmdldCgp
XTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IFdURk1vdmUobmV3VmFsdWUpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6dmFsdWUgZm9yS2V5Omxh
c3RLZXldOwotICAgICAgICAgICAgW3ZhbHVlIHJlbGVhc2VdOworICAgICAgICAgICAgW2hlYWRl
ckZpZWxkcyBzZXRPYmplY3Q6dmFsdWUuZ2V0KCkgZm9yS2V5Omxhc3RLZXldOwogICAgICAgICB9
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5T
UGFzdGVib2FyZEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQ
YXN0ZWJvYXJkRXh0cmFzLm1tCmluZGV4IDU2OGUzZjU5MzY2N2RhYjgzM2QwMDRhYjIyZmExM2Qw
N2VmOTVlNzAuLjRhZTBjNzkwZTNiMDJjZmZhYTI0OWFmMzNhNzdhNGRiZmJmNzJmNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0
cmFzLm1tCkBAIC0xOTMsMTAgKzE5Myw4IEBAICsgKGludClfd2ViX3NldEZpbmRQYXN0ZWJvYXJk
U3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoT3duZXI6KGlkKW93bmVyCiAKIC0gKHZvaWQp
X3dlYl93cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudDooTlNGaWxlV3JhcHBlciAqKXdy
YXBwZXIKIHsKLSAgICBOU1RleHRBdHRhY2htZW50ICphdHRhY2htZW50ID0gW1tOU1RleHRBdHRh
Y2htZW50IGFsbG9jXSBpbml0V2l0aEZpbGVXcmFwcGVyOndyYXBwZXJdOwotICAgIAotICAgIE5T
QXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVk
U3RyaW5nV2l0aEF0dGFjaG1lbnQ6YXR0YWNobWVudF07Ci0gICAgW2F0dGFjaG1lbnQgcmVsZWFz
ZV07CisgICAgYXV0byBhdHRhY2htZW50ID0gYWRvcHROUyhbW05TVGV4dEF0dGFjaG1lbnQgYWxs
b2NdIGluaXRXaXRoRmlsZVdyYXBwZXI6d3JhcHBlcl0pOworICAgIE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nID0gW05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0dGFj
aG1lbnQ6YXR0YWNobWVudC5nZXQoKV07CiAgICAgCiAgICAgTlNEYXRhICpSVEZERGF0YSA9IFtz
dHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pIGRvY3Vt
ZW50QXR0cmlidXRlczpAeyB9XTsKICAgICBbc2VsZiBzZXREYXRhOlJURkREYXRhIGZvclR5cGU6
bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCldOwpAQCAtMzE3LDkgKzMxNSw4IEBAIC0gKGlkKV93
ZWJfZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlRm9yRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1l
bnQKICAgICBpZiAoY3VzdG9tRGF0YUJ1ZmZlcikKICAgICAgICAgW3NlbGYgc2V0RGF0YTpjdXN0
b21EYXRhQnVmZmVyLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpXTsKIAotICAgIE5TQXJyYXkgKmV4dGVuc2lvbnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0czpleHRlbnNpb24sIG5pbF07Ci0gICAgW3NlbGYgc2V0UHJvcGVydHlMaXN0
OmV4dGVuc2lvbnMgZm9yVHlwZTpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpXTsK
LSAgICBbZXh0ZW5zaW9ucyByZWxlYXNlXTsKKyAgICBhdXRvIGV4dGVuc2lvbnMgPSBhZG9wdE5T
KFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOmV4dGVuc2lvbiwgbmlsXSk7CisgICAg
W3NlbGYgc2V0UHJvcGVydHlMaXN0OmV4dGVuc2lvbnMuZ2V0KCkgZm9yVHlwZTpsZWdhY3lGaWxl
c1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpXTsKIAogICAgIHJldHVybiBzb3VyY2U7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCA5NTYxZDIyZWJiZmI5ZWE0OWQ0
Zjg4MzZiMmYwZmQ1OTVjYTY4ZDM5Li5iYmVhN2VhNjI2MmMyZjQwZTNmNDNmNmRkY2I2MjcyZWUw
ZTMyNGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTE3Miwx
NiArMTcyLDE0IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6c3Bhd25QbHVnaW5I
b3N0KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY3B1X3R5CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgdGhlIHNl
Y29uZCBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1soTlNTdHJpbmcqKXBsdWdpblBhdGggbGFzdFBhdGhDb21wb25lbnRd
IHN0cmluZ0J5RGVsZXRpbmdQYXRoRXh0ZW5zaW9uXSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJ
bmZvXSBwcm9jZXNzTmFtZV1dOwogICAgIAotICAgIE5TRGljdGlvbmFyeSAqaG9zdFByb3BlcnRp
ZXMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKKyAgICBh
dXRvIGhvc3RQcm9wZXJ0aWVzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZp
c2libGVOYW1lLCBAInZpc2libGVOYW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChOU1N0cmluZyAqKXBsdWdpblBhdGgsIEAiYnVuZGxlUGF0aCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmlsXSk7CiAgICAgCi0gICAgZGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlh
bGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6aG9zdFByb3BlcnRpZXMgZm9ybWF0Ok5TUHJv
cGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOk5VTExdOworICAgIGRh
dGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0Omhv
c3RQcm9wZXJ0aWVzLmdldCgpIGZvcm1hdDpOU1Byb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8w
IG9wdGlvbnM6MCBlcnJvcjpOVUxMXTsKICAgICBBU1NFUlQoZGF0YSk7CiAKLSAgICBbaG9zdFBy
b3BlcnRpZXMgcmVsZWFzZV07Ci0KICAgICBQcm9jZXNzU2VyaWFsTnVtYmVyIHBzbjsKIAogICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggYjcwZTc1ZTNlZWNkZDU4Y2FiOTFjZjgxNWMwYTY0
YmU4OWQzOWFiYy4uNTFjNTllYzg0OGE3NDAxOWVmZTRkNDA4OGVjN2VjMjFkZjU4NjUyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNjUxLDExICs2NTEs
MTAgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnBlcmZvcm1SZXF1ZXN0KFBs
dWdpblJlcXVlc3QqIHBsdWdpblJlcXVlc3QpCiAgICAgICAgIGZyYW1lID0ga2l0KGNvcmUoW21f
cGx1Z2luVmlldyB3ZWJGcmFtZV0pLT5sb2FkZXIoKS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZy
YW1lTmFtZSkpOwogICAgICAgICBpZiAoIWZyYW1lKSB7CiAgICAgICAgICAgICBXZWJWaWV3ICpj
dXJyZW50V2ViVmlldyA9IFttX3BsdWdpblZpZXcgd2ViVmlld107Ci0gICAgICAgICAgICBOU0Rp
Y3Rpb25hcnkgKmZlYXR1cmVzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgICAg
ICAgICAgYXV0byBmZWF0dXJlcyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRd
KTsKICAgICAgICAgICAgIFdlYlZpZXcgKm5ld1dlYlZpZXcgPSBbW2N1cnJlbnRXZWJWaWV3IF9V
SURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OmN1cnJlbnRXZWJWaWV3CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVdlYlZpZXdX
aXRoUmVxdWVzdDpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0ZlYXR1cmVzOmZlYXR1cmVzXTsKLSAgICAg
ICAgICAgIFtmZWF0dXJlcyByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0ZlYXR1cmVzOmZlYXR1
cmVzLmdldCgpXTsKIAogICAgICAgICAgICAgaWYgKCFuZXdXZWJWaWV3KSB7CiAgICAgICAgICAg
ICAgICAgX1dLUEhMb2FkVVJMTm90aWZ5KG1fcGx1Z2luSG9zdFByb3h5LT5wb3J0KCksIG1fcGx1
Z2luSUQsIHBsdWdpblJlcXVlc3QtPnJlcXVlc3RJRCgpLCBOUEVSUl9HRU5FUklDX0VSUk9SKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtLm1tCmluZGV4IGE0ZmU5MGI2YWNhNTVkOTU4NjA5OWVmMTY0NDNjZjJm
YTkzZjk4ZGIuLjBiMzI2NzI3MjJmOGM5MDI0NTdmYjQ1M2QyMjE2MjFhNmJhMWYyM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5T
dHJlYW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5tbQpAQCAtNjEzLDIwICs2MTMsMTggQEAgdm9pZCBXZWJOZXRzY2FwZVBs
dWdpblN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciop
CiAKIHZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiB7Ci0g
ICAgTlNEYXRhICpkYXRhID0gW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZv
aWQqKWJ5dGVzIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKKyAgICBhdXRvIGRhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilieXRl
cyBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOwogCiAgICAgQVNTRVJUKFtkYXRhIGxl
bmd0aF0gPiAwKTsKICAgICAKICAgICBpZiAobV90cmFuc2Zlck1vZGUgIT0gTlBfQVNGSUxFT05M
WSkgewogICAgICAgICBpZiAoIW1fZGVsaXZlcnlEYXRhKQogICAgICAgICAgICAgbV9kZWxpdmVy
eURhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpb
ZGF0YSBsZW5ndGhdXSk7Ci0gICAgICAgIFttX2RlbGl2ZXJ5RGF0YS5nZXQoKSBhcHBlbmREYXRh
OmRhdGFdOworICAgICAgICBbbV9kZWxpdmVyeURhdGEuZ2V0KCkgYXBwZW5kRGF0YTpkYXRhLmdl
dCgpXTsKICAgICAgICAgZGVsaXZlckRhdGEoKTsKICAgICB9CiAgICAgaWYgKG1fdHJhbnNmZXJN
b2RlID09IE5QX0FTRklMRSB8fCBtX3RyYW5zZmVyTW9kZSA9PSBOUF9BU0ZJTEVPTkxZKQotICAg
ICAgICBkZWxpdmVyRGF0YVRvRmlsZShkYXRhKTsKLSAgICAKLSAgICBbZGF0YSByZWxlYXNlXTsK
KyAgICAgICAgZGVsaXZlckRhdGFUb0ZpbGUoZGF0YS5nZXQoKSk7CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
blZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luVmlldy5tbQppbmRleCBhYmRlODYxY2ZmMDI3NzViMDFkNWNmYjY1MTIyZTU4NDEyMjIxNDAz
Li4wNjg3YmJiYmU4MGY1YjdkODdiMjc4ZjkxODM5MDUwYzA1ZTBkN2Q1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmll
dy5tbQpAQCAtMTAzNCwxMyArMTAzNCwxMiBAQCAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAq
KXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhCiAgICAgICAgIGlmIChbc2Vs
ZiBfc2hvdWxkQ2FuY2VsU3JjU3RyZWFtXSkgewogICAgICAgICAgICAgTlNVUkxSZXNwb25zZSAq
cmVzcG9uc2UgPSBbW3NlbGYgZGF0YVNvdXJjZV0gcmVzcG9uc2VdOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBOU0Vycm9yICplcnJvciA9IFtbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1
Z2luRXJyb3JDb2RlOldlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQKKyAgICAgICAgICAg
IGF1dG8gZXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJy
b3JDb2RlOldlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRVUkw6W3Jl
c3BvbnNlIFVSTF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBsdWdpblBhZ2VVUkw6bmlsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5OYW1lOm5pbCAvLyBGSVhN
RTogR2V0IHRoaXMgZnJvbSBzb21ld2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6W3Jlc3BvbnNlIE1JTUVU
eXBlXV07Ci0gICAgICAgICAgICBbW3NlbGYgZGF0YVNvdXJjZV0gX2RvY3VtZW50TG9hZGVyXS0+
Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7Ci0gICAgICAgICAgICBbZXJyb3IgcmVsZWFz
ZV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE1JTUVUeXBlOltyZXNwb25zZSBNSU1FVHlwZV1dKTsKKyAgICAgICAgICAgIFtb
c2VsZiBkYXRhU291cmNlXSBfZG9jdW1lbnRMb2FkZXJdLT5jYW5jZWxNYWluUmVzb3VyY2VMb2Fk
KGVycm9yLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAK
QEAgLTExNzcsMTEgKzExNzYsMTAgQEAgLSAodm9pZClsb2FkUGx1Z2luUmVxdWVzdDooV2ViUGx1
Z2luUmVxdWVzdCAqKXBsdWdpblJlcXVlc3QKICAgICAgICAgZnJhbWUgPSBraXQoY29yZShbc2Vs
ZiB3ZWJGcmFtZV0pLT5sb2FkZXIoKS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSkp
OwogICAgICAgICBpZiAoZnJhbWUgPT0gbmlsKSB7CiAgICAgICAgICAgICBXZWJWaWV3ICpjdXJy
ZW50V2ViVmlldyA9IFtzZWxmIHdlYlZpZXddOwotICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpm
ZWF0dXJlcyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIGF1dG8g
ZmVhdHVyZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgICAg
ICAgICBXZWJWaWV3ICpuZXdXZWJWaWV3ID0gW1tjdXJyZW50V2ViVmlldyBfVUlEZWxlZ2F0ZUZv
cndhcmRlcl0gd2ViVmlldzpjdXJyZW50V2ViVmlldwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6
bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aW5kb3dGZWF0dXJlczpmZWF0dXJlc107Ci0gICAgICAgICAgICBbZmVh
dHVyZXMgcmVsZWFzZV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dGZWF0dXJlczpmZWF0dXJlcy5nZXQoKV07
CiAKICAgICAgICAgICAgIGlmICghbmV3V2ViVmlldykgewogICAgICAgICAgICAgICAgIGlmIChb
cGx1Z2luUmVxdWVzdCBzZW5kTm90aWZpY2F0aW9uXSkgewpAQCAtMTI3MywxMyArMTI3MSwxMiBA
QCAtIChOUEVycm9yKWxvYWRSZXF1ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdCBp
blRhcmdldDooY29uc3QgY2hhciAqKWNUYQogICAgICAgICBpZiAoX2V2ZW50SGFuZGxlcikKICAg
ICAgICAgICAgIGN1cnJlbnRFdmVudElzVXNlckdlc3R1cmUgPSBfZXZlbnRIYW5kbGVyLT5jdXJy
ZW50RXZlbnRJc1VzZXJHZXN0dXJlKCk7CiAgICAgICAgIAotICAgICAgICBXZWJQbHVnaW5SZXF1
ZXN0ICpwbHVnaW5SZXF1ZXN0ID0gW1tXZWJQbHVnaW5SZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFJl
cXVlc3Q6cmVxdWVzdCAKKyAgICAgICAgYXV0byBwbHVnaW5SZXF1ZXN0ID0gYWRvcHROUyhbW1dl
YlBsdWdpblJlcXVlc3QgYWxsb2NdIGluaXRXaXRoUmVxdWVzdDpyZXF1ZXN0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lTmFtZTp0YXJnZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZnlEYXRhOm5vdGlm
eURhdGEgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VuZE5vdGlmaWNhdGlvbjpzZW5kTm90aWZpY2F0aW9uCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRTdGFydEZyb21Vc2VyR2VzdHVyZTpjdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlXTsKLSAgICAg
ICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rvcihsb2FkUGx1Z2luUmVxdWVzdDopIHdp
dGhPYmplY3Q6cGx1Z2luUmVxdWVzdCBhZnRlckRlbGF5OjBdOwotICAgICAgICBbcGx1Z2luUmVx
dWVzdCByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0RnJvbVVzZXJHZXN0dXJlOmN1cnJlbnRFdmVudElz
VXNlckdlc3R1cmVdKTsKKyAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rvcihs
b2FkUGx1Z2luUmVxdWVzdDopIHdpdGhPYmplY3Q6cGx1Z2luUmVxdWVzdC5nZXQoKSBhZnRlckRl
bGF5OjBdOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGF1dG8gc3RyZWFtID0gV2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OmNyZWF0ZShyZXF1ZXN0LCBwbHVnaW4sIHNlbmROb3RpZmljYXRpb24sIG5v
dGlmeURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYlBsdWdpbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYlBsdWdpbkNvbnRyb2xsZXIubW0KaW5kZXggNmI1NmQ3MzBmYzVmOGE1NzJkN2IyOTQzODlm
OTczZDNhOTk0YjQwMy4uN2I4MmRlZjA2YWYwYzEwOWUyNzgwOGYyY2Y3YjUwZjExZWNiMGQyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2lu
Q29udHJvbGxlci5tbQpAQCAtNTcyLDEzICs1NzIsMTIgQEAgLSAodm9pZClwbHVnaW5WaWV3OihO
U1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNw
b24KICAgICBlbHNlIHsKICAgICAgICAgLy8gQ2FuY2VsIHRoZSBsb2FkIHNpbmNlIHRoaXMgcGx1
Zy1pbiBkb2VzIGl0cyBvd24gbG9hZGluZy4KICAgICAgICAgLy8gRklYTUU6IFNlZSA8cmRhcjov
L3Byb2JsZW0vNDI1ODAwOD4gZm9yIGEgcHJvYmxlbSB3aXRoIHRoaXMuCi0gICAgICAgIE5TRXJy
b3IgKmVycm9yID0gW1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6V2Vi
S2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZAorICAgICAgICBhdXRvIGVycm9yID0gYWRvcHRO
UyhbW05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTpXZWJLaXRFcnJvclBs
dWdJbldpbGxIYW5kbGVMb2FkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRlbnRVUkw6W3Jlc3BvbnNlIFVSTF0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luUGFnZVVSTDpu
aWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGx1Z2luTmFtZTpuaWwgLy8gRklYTUU6IEdldCB0aGlzIGZyb20gc29tZXdoZXJlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlN
RVR5cGU6W3Jlc3BvbnNlIE1JTUVUeXBlXV07Ci0gICAgICAgIFtfZGF0YVNvdXJjZSBfZG9jdW1l
bnRMb2FkZXJdLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKLSAgICAgICAgW2Vycm9y
IHJlbGVhc2VdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1JTUVUeXBlOltyZXNwb25zZSBNSU1FVHlwZV1dKTsKKyAgICAgICAgW19k
YXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3Iu
Z2V0KCkpOwogICAgIH0gICAgICAgIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQppbmRleCAwOTNlNjk3NWQ0MWVjODI4
YWI1MmNmMzhkNGI5NjZkOGYzZjk1ZTE1Li5kYTA0ODY5ZGRjMTVhNDZkMDVmOWI2ZTllNjYwNzI5
NGRkYWQ5ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
YlBsdWdpbkRhdGFiYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViUGx1Z2luRGF0YWJhc2UubW0KQEAgLTI4Nyw3ICsyODcsNyBAQCAtICh2b2lkKXJlZnJlc2gK
ICAgICAgICAgICAgIFtzZWxmIF9hZGRQbHVnaW46cGx1Z2luXTsKIAogICAgICAgICAvLyBCdWls
ZCBhIGxpc3Qgb2YgTUlNRSB0eXBlcy4KLSAgICAgICAgTlNNdXRhYmxlU2V0ICpNSU1FVHlwZXMg
PSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07CisgICAgICAgIGF1dG8gTUlNRVR5cGVzID0g
YWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwogICAgICAgICBwbHVnaW5FbnVt
ZXJhdG9yID0gW3BsdWdpbnMgb2JqZWN0RW51bWVyYXRvcl07CiAgICAgICAgIHdoaWxlICgocGx1
Z2luID0gW3BsdWdpbkVudW1lcmF0b3IgbmV4dE9iamVjdF0pKSB7CiAgICAgICAgICAgICBjb25z
dCBhdXRvJiBwbHVnaW5JbmZvID0gW3BsdWdpbiBwbHVnaW5JbmZvXTsKQEAgLTMxOCw3ICszMTgs
NiBAQCAtICh2b2lkKXJlZnJlc2gKICAgICAgICAgICAgIGlmIChzZWxmID09IHNoYXJlZERhdGFi
YXNlKQogICAgICAgICAgICAgICAgIFtXZWJWaWV3IF9yZWdpc3RlclBsdWdpbk1JTUVUeXBlOk1J
TUVUeXBlXTsKICAgICAgICAgfQotICAgICAgICBbTUlNRVR5cGVzIHJlbGVhc2VdOwogICAgIH0K
IH0KIApAQCAtNDUyLDE3ICs0NTEsMTYgQEAgLSAodm9pZClfcmVtb3ZlUGx1Z2luOihXZWJCYXNl
UGx1Z2luUGFja2FnZSAqKXBsdWdpbgogICAgIC8vIFJlbW92ZSBwbHVnLWluIGZyb20gZGF0YWJh
c2UKICAgICBOU1N0cmluZyAqcGx1Z2luUGF0aCA9IFtwbHVnaW4gcGF0aF07CiAgICAgQVNTRVJU
KHBsdWdpblBhdGgpOwotICAgIFtwbHVnaW4gcmV0YWluXTsKKyAgICBhdXRvIHByb3RlY3RlZFBs
dWdpbiA9IHJldGFpblB0cihwbHVnaW4pOwogICAgIFtwbHVnaW5zIHJlbW92ZU9iamVjdEZvcktl
eTpwbHVnaW5QYXRoXTsKICAgICBbcGx1Z2luIHdhc1JlbW92ZWRGcm9tUGx1Z2luRGF0YWJhc2U6
c2VsZl07Ci0gICAgW3BsdWdpbiByZWxlYXNlXTsKIH0KIAogLSAoTlNNdXRhYmxlU2V0ICopX3Nj
YW5Gb3JOZXdQbHVnaW5zCiB7CiAgICAgTlNNdXRhYmxlU2V0ICpuZXdQbHVnaW5zID0gW05TTXV0
YWJsZVNldCBzZXRdOwogICAgIE5TRW51bWVyYXRvciAqZGlyZWN0b3J5RW51bWVyYXRvciA9IFtb
c2VsZiBfcGx1Z0luUGF0aHNdIG9iamVjdEVudW1lcmF0b3JdOwotICAgIE5TTXV0YWJsZVNldCAq
dW5pcXVlRmlsZW5hbWVzID0gW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdOworICAgIGF1dG8g
dW5pcXVlRmlsZW5hbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwog
ICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdOwogICAgIE5TU3RyaW5nICpwbHVnaW5EaXJlY3Rvcnk7CiAgICAgd2hpbGUgKChwbHVn
aW5EaXJlY3RvcnkgPSBbZGlyZWN0b3J5RW51bWVyYXRvciBuZXh0T2JqZWN0XSkgIT0gbmlsKSB7
CkBAIC00ODQsNyArNDgyLDYgQEAgLSAoTlNNdXRhYmxlU2V0ICopX3NjYW5Gb3JOZXdQbHVnaW5z
CiAgICAgICAgICAgICAgICAgW25ld1BsdWdpbnMgYWRkT2JqZWN0OnBsdWdpblBhY2thZ2VdOwog
ICAgICAgICB9CiAgICAgfQotICAgIFt1bmlxdWVGaWxlbmFtZXMgcmVsZWFzZV07CiAgICAgCiAg
ICAgcmV0dXJuIG5ld1BsdWdpbnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggODZhZmEwZTlk
MzdhY2ZlM2VkMzRjYzA0YzJmMDA0ZjFlNWRlY2VkNS4uZDc5NDA3MTIzMmUyMmU4MzQ0MWM1Zjhi
ZTM4MGI0OGY5YWVlZjRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtMjUzLDUxICsyNTMsMzgg
QEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25z
dCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMKICNlbmRpZgogICAgIAogICAgIGlmIChbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRo
UmVxdWVzdDp3aW5kb3dGZWF0dXJlczopXSkgewotICAgICAgICBOU051bWJlciAqeCA9IGZlYXR1
cmVzLnggPyBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEZsb2F0OipmZWF0dXJlcy54XSA6IG5p
bDsKLSAgICAgICAgTlNOdW1iZXIgKnkgPSBmZWF0dXJlcy55ID8gW1tOU051bWJlciBhbGxvY10g
aW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMueV0gOiBuaWw7Ci0gICAgICAgIE5TTnVtYmVyICp3aWR0
aCA9IGZlYXR1cmVzLndpZHRoID8gW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVh
dHVyZXMud2lkdGhdIDogbmlsOwotICAgICAgICBOU051bWJlciAqaGVpZ2h0ID0gZmVhdHVyZXMu
aGVpZ2h0ID8gW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMuaGVpZ2h0
XSA6IG5pbDsKLSAgICAgICAgTlNOdW1iZXIgKm1lbnVCYXJWaXNpYmxlID0gW1tOU051bWJlciBh
bGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlXTsKLSAgICAgICAgTlNO
dW1iZXIgKnN0YXR1c0JhclZpc2libGUgPSBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6
ZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZV07Ci0gICAgICAgIE5TTnVtYmVyICp0b29sQmFyVmlz
aWJsZSA9IFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy50b29sQmFyVmlz
aWJsZV07Ci0gICAgICAgIE5TTnVtYmVyICpzY3JvbGxiYXJzVmlzaWJsZSA9IFtbTlNOdW1iZXIg
YWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZV07Ci0gICAgICAg
IE5TTnVtYmVyICpyZXNpemFibGUgPSBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVh
dHVyZXMucmVzaXphYmxlXTsKLSAgICAgICAgTlNOdW1iZXIgKmZ1bGxzY3JlZW4gPSBbW05TTnVt
YmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMuZnVsbHNjcmVlbl07Ci0gICAgICAgIE5T
TnVtYmVyICpkaWFsb2cgPSBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMu
ZGlhbG9nXTsKKyAgICAgICAgYXV0byB4ID0gZmVhdHVyZXMueCA/IGFkb3B0TlMoW1tOU051bWJl
ciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMueF0pIDogbmlsOworICAgICAgICBhdXRv
IHkgPSBmZWF0dXJlcy55ID8gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEZsb2F0
OipmZWF0dXJlcy55XSkgOiBuaWw7CisgICAgICAgIGF1dG8gd2lkdGggPSBmZWF0dXJlcy53aWR0
aCA/IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMud2lk
dGhdKSA6IG5pbDsKKyAgICAgICAgYXV0byBoZWlnaHQgPSBmZWF0dXJlcy5oZWlnaHQgPyBhZG9w
dE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoRmxvYXQ6KmZlYXR1cmVzLmhlaWdodF0pIDog
bmlsOworICAgICAgICBhdXRvIG1lbnVCYXJWaXNpYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFs
bG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMubWVudUJhclZpc2libGVdKTsKKyAgICAgICAgYXV0
byBzdGF0dXNCYXJWaXNpYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJv
b2w6ZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZV0pOworICAgICAgICBhdXRvIHRvb2xCYXJWaXNp
YmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMudG9v
bEJhclZpc2libGVdKTsKKyAgICAgICAgYXV0byBzY3JvbGxiYXJzVmlzaWJsZSA9IGFkb3B0TlMo
W1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxl
XSk7CisgICAgICAgIGF1dG8gcmVzaXphYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBp
bml0V2l0aEJvb2w6ZmVhdHVyZXMucmVzaXphYmxlXSk7CisgICAgICAgIGF1dG8gZnVsbHNjcmVl
biA9IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLmZ1bGxz
Y3JlZW5dKTsKKyAgICAgICAgYXV0byBkaWFsb2cgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2Nd
IGluaXRXaXRoQm9vbDpmZWF0dXJlcy5kaWFsb2ddKTsKICAgICAgICAgCi0gICAgICAgIE5TTXV0
YWJsZURpY3Rpb25hcnkgKmRpY3RGZWF0dXJlcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lbnVCYXJWaXNpYmxlLCBAIm1lbnVCYXJWaXNpYmxlIiwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNCYXJWaXNpYmxl
LCBAInN0YXR1c0JhclZpc2libGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdG9vbEJhclZpc2libGUsIEAidG9vbEJhclZpc2libGUiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYmFyc1Zpc2libGUsIEAi
c2Nyb2xsYmFyc1Zpc2libGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzaXphYmxlLCBAInJlc2l6YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuLCBAImZ1bGxzY3JlZW4iLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nLCBAImRpYWxvZyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworICAg
ICAgICBhdXRvIGRpY3RGZWF0dXJlcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVudUJhclZpc2libGUuZ2V0KCksIEAibWVudUJhclZpc2libGUi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQmFy
VmlzaWJsZS5nZXQoKSwgQCJzdGF0dXNCYXJWaXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xCYXJWaXNpYmxlLmdldCgpLCBAInRvb2xCYXJW
aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj
cm9sbGJhcnNWaXNpYmxlLmdldCgpLCBAInNjcm9sbGJhcnNWaXNpYmxlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZS5nZXQoKSwgQCJyZXNp
emFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVs
bHNjcmVlbi5nZXQoKSwgQCJmdWxsc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpYWxvZy5nZXQoKSwgQCJkaWFsb2ciLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSk7CiAgICAgICAgIAogICAgICAg
ICBpZiAoeCkKLSAgICAgICAgICAgIFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0OnggZm9yS2V5OkAi
eCJdOworICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6eC5nZXQoKSBmb3JLZXk6
QCJ4Il07CiAgICAgICAgIGlmICh5KQotICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmpl
Y3Q6eSBmb3JLZXk6QCJ5Il07CisgICAgICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDp5
LmdldCgpIGZvcktleTpAInkiXTsKICAgICAgICAgaWYgKHdpZHRoKQotICAgICAgICAgICAgW2Rp
Y3RGZWF0dXJlcyBzZXRPYmplY3Q6d2lkdGggZm9yS2V5OkAid2lkdGgiXTsKKyAgICAgICAgICAg
IFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0OndpZHRoLmdldCgpIGZvcktleTpAIndpZHRoIl07CiAg
ICAgICAgIGlmIChoZWlnaHQpCi0gICAgICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDpo
ZWlnaHQgZm9yS2V5OkAiaGVpZ2h0Il07CisgICAgICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9i
amVjdDpoZWlnaHQuZ2V0KCkgZm9yS2V5OkAiaGVpZ2h0Il07CiAgICAgICAgIAotICAgICAgICBu
ZXdXZWJWaWV3ID0gQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpj
cmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6d2luZG93RmVhdHVyZXM6KSwgbmlsLCBkaWN0RmVhdHVy
ZXMpOwotICAgICAgICAKLSAgICAgICAgW2RpY3RGZWF0dXJlcyByZWxlYXNlXTsKLSAgICAgICAg
W3ggcmVsZWFzZV07Ci0gICAgICAgIFt5IHJlbGVhc2VdOwotICAgICAgICBbd2lkdGggcmVsZWFz
ZV07Ci0gICAgICAgIFtoZWlnaHQgcmVsZWFzZV07Ci0gICAgICAgIFttZW51QmFyVmlzaWJsZSBy
ZWxlYXNlXTsKLSAgICAgICAgW3N0YXR1c0JhclZpc2libGUgcmVsZWFzZV07Ci0gICAgICAgIFt0
b29sQmFyVmlzaWJsZSByZWxlYXNlXTsKLSAgICAgICAgW3Njcm9sbGJhcnNWaXNpYmxlIHJlbGVh
c2VdOwotICAgICAgICBbcmVzaXphYmxlIHJlbGVhc2VdOwotICAgICAgICBbZnVsbHNjcmVlbiBy
ZWxlYXNlXTsKLSAgICAgICAgW2RpYWxvZyByZWxlYXNlXTsKKyAgICAgICAgbmV3V2ViVmlldyA9
IENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmll
d1dpdGhSZXF1ZXN0OndpbmRvd0ZlYXR1cmVzOiksIG5pbCwgZGljdEZlYXR1cmVzLmdldCgpKTsK
ICAgICB9IGVsc2UgaWYgKGZlYXR1cmVzLmRpYWxvZyAmJiBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdNb2RhbERpYWxvZ1dpdGhSZXF1
ZXN0OildKSB7CiAgICAgICAgIG5ld1dlYlZpZXcgPSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcs
IEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdNb2RhbERpYWxvZ1dpdGhSZXF1ZXN0Oiks
IG5pbCk7CiAgICAgfSBlbHNlIHsKQEAgLTQ2MywyNSArNDUwLDIzIEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
TGV2ZWwgbGV2CiAgICAgfQogCiAgICAgTlNTdHJpbmcgKm1lc3NhZ2VTb3VyY2UgPSBzdHJpbmdG
b3JNZXNzYWdlU291cmNlKHNvdXJjZSk7Ci0gICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0g
W1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgYXV0byBk
aWN0aW9uYXJ5ID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
QW5kS2V5czoKICAgICAgICAgKE5TU3RyaW5nICopbWVzc2FnZSwgQCJtZXNzYWdlIiwKICAgICAg
ICAgQChsaW5lTnVtYmVyKSwgQCJsaW5lTnVtYmVyIiwKICAgICAgICAgQChjb2x1bW5OdW1iZXIp
LCBAImNvbHVtbk51bWJlciIsCiAgICAgICAgIChOU1N0cmluZyAqKXNvdXJjZVVSTCwgQCJzb3Vy
Y2VVUkwiLAogICAgICAgICBtZXNzYWdlU291cmNlLCBAIk1lc3NhZ2VTb3VyY2UiLAogICAgICAg
ICBzdHJpbmdGb3JNZXNzYWdlTGV2ZWwobGV2ZWwpLCBAIk1lc3NhZ2VMZXZlbCIsCi0gICAgICAg
IE5VTExdOworICAgICAgICBOVUxMXSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IFtbW21fd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gYXN5bmNGb3J3YXJkZXJdIHdl
YlZpZXc6bV93ZWJWaWV3IGFkZE1lc3NhZ2VUb0NvbnNvbGU6ZGljdGlvbmFyeSB3aXRoU291cmNl
Om1lc3NhZ2VTb3VyY2VdOworICAgIFtbW21fd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRl
cl0gYXN5bmNGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGFkZE1lc3NhZ2VUb0NvbnNvbGU6
ZGljdGlvbmFyeS5nZXQoKSB3aXRoU291cmNlOm1lc3NhZ2VTb3VyY2VdOwogI2Vsc2UKICAgICBp
ZiAocmVzcG9uZHNUb05ld1NlbGVjdG9yKQotICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZp
ZXcsIHNlbGVjdG9yLCBkaWN0aW9uYXJ5LCBtZXNzYWdlU291cmNlKTsKKyAgICAgICAgQ2FsbFVJ
RGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3RvciwgZGljdGlvbmFyeS5nZXQoKSwgbWVzc2FnZVNv
dXJjZSk7CiAgICAgZWxzZQotICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVj
dG9yLCBkaWN0aW9uYXJ5KTsKKyAgICAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxl
Y3RvciwgZGljdGlvbmFyeS5nZXQoKSk7CiAjZW5kaWYKLQotICAgIFtkaWN0aW9uYXJ5IHJlbGVh
c2VdOwogfQogCiBib29sIFdlYkNocm9tZUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKCkKQEAgLTY2OCw5ICs2NTMsOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6dW5hdmFp
bGFibGVQbHVnaW5CdXR0b25DbGlja2VkKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlckVtYgogCiB2
b2lkIFdlYkNocm9tZUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVz
dFJlc3VsdCYgcmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzLCBjb25zdCBTdHJpbmcmIHRv
b2xUaXAsIFRleHREaXJlY3Rpb24pCiB7Ci0gICAgV2ViRWxlbWVudERpY3Rpb25hcnkgKmVsZW1l
bnQgPSBbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6
cmVzdWx0XTsKLSAgICBbbV93ZWJWaWV3IF9tb3VzZURpZE1vdmVPdmVyRWxlbWVudDplbGVtZW50
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFnc107Ci0gICAgW2VsZW1lbnQgcmVsZWFzZV07Cisg
ICAgYXV0byBlbGVtZW50ID0gYWRvcHROUyhbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBp
bml0V2l0aEhpdFRlc3RSZXN1bHQ6cmVzdWx0XSk7CisgICAgW21fd2ViVmlldyBfbW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQ6ZWxlbWVudC5nZXQoKSBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3Nd
OwogICAgIHNldFRvb2xUaXAodG9vbFRpcCk7CiB9CiAKQEAgLTY5NCw5ICs2NzgsOCBAQCB2b2lk
IFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lJiBmcmFtZSwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwog
Ci0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4g
YWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjomZnJhbWUuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKV07Ci0gICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0
b3Iod2ViVmlldzpmcmFtZTpleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjpk
YXRhYmFzZTopLCBraXQoJmZyYW1lKSwgd2ViT3JpZ2luLCAoTlNTdHJpbmcgKilkYXRhYmFzZU5h
bWUpOwotICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07CisgICAgYXV0byB3ZWJPcmlnaW4gPSBhZG9w
dE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9y
aWdpbjomZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKV0pOworICAgIENhbGxVSURl
bGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZnJhbWU6ZXhjZWVkZWREYXRhYmFz
ZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46ZGF0YWJhc2U6KSwga2l0KCZmcmFtZSksIHdlYk9yaWdp
bi5nZXQoKSwgKE5TU3RyaW5nICopZGF0YWJhc2VOYW1lKTsKIAogICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKIH0KQEAgLTcxMCw5ICs2OTMsOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
LAogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCi0gICAgV2ViU2VjdXJpdHlP
cmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdl
YkNvcmVTZWN1cml0eU9yaWdpbjomb3JpZ2luXTsKLSAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZp
ZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
Rm9yU2VjdXJpdHlPcmlnaW46dG90YWxTcGFjZU5lZWRlZDopLCB3ZWJPcmlnaW4sIHN0YXRpY19j
YXN0PE5TVUludGVnZXI+KHRvdGFsU3BhY2VOZWVkZWQpKTsKLSAgICBbd2ViT3JpZ2luIHJlbGVh
c2VdOworICAgIGF1dG8gd2ViT3JpZ2luID0gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFs
bG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Jm9yaWdpbl0pOworICAgIENhbGxV
SURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZXhjZWVkZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp0b3RhbFNwYWNlTmVlZGVkOiksIHdl
Yk9yaWdpbi5nZXQoKSwgc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4odG90YWxTcGFjZU5lZWRlZCkp
OwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpAQCAtNzgyLDE1ICs3NjQsMTQg
QEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2Vy
JiBjaG9vc2VyKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIEJPT0wg
YWxsb3dNdWx0aXBsZUZpbGVzID0gY2hvb3Nlci5zZXR0aW5ncygpLmFsbG93c011bHRpcGxlRmls
ZXM7Ci0gICAgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgKmxpc3RlbmVyID0gW1tXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDaG9vc2VyOmNob29zZXJdOworICAg
IGF1dG8gbGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgYWxs
b2NdIGluaXRXaXRoQ2hvb3NlcjpjaG9vc2VyXSk7CiAgICAgaWQgZGVsZWdhdGUgPSBbbV93ZWJW
aWV3IFVJRGVsZWdhdGVdOwogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVu
ZXI6YWxsb3dNdWx0aXBsZUZpbGVzOildKQotICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZp
ZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0
TGlzdGVuZXI6YWxsb3dNdWx0aXBsZUZpbGVzOiksIGxpc3RlbmVyLCBhbGxvd011bHRpcGxlRmls
ZXMpOworICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3
OnJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6YWxsb3dNdWx0aXBs
ZUZpbGVzOiksIGxpc3RlbmVyLmdldCgpLCBhbGxvd011bHRpcGxlRmlsZXMpOwogICAgIGVsc2Ug
aWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVuT3Bl
blBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjopXSkKLSAgICAgICAgQ2FsbFVJ
RGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpydW5PcGVuUGFuZWxGb3JGaWxl
QnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOiksIGxpc3RlbmVyKTsKKyAgICAgICAgQ2FsbFVJRGVs
ZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpydW5PcGVuUGFuZWxGb3JGaWxlQnV0
dG9uV2l0aFJlc3VsdExpc3RlbmVyOiksIGxpc3RlbmVyLmdldCgpKTsKICAgICBlbHNlCiAgICAg
ICAgIFtsaXN0ZW5lciBjYW5jZWxdOwotICAgIFtsaXN0ZW5lciByZWxlYXNlXTsKICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTEwNzksOSArMTA2MCw4IEBAIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkK
IHsKICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpleGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQ6bGlzdGVuZXI6KTsKICAgICBpZiAoW1ttX3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVz
cG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgewotICAgICAgICBXZWJLaXRGdWxsU2NyZWVuTGlz
dGVuZXIqIGxpc3RlbmVyID0gW1tXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgYWxsb2NdIGluaXRX
aXRoRWxlbWVudDplbGVtZW50XTsKLSAgICAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBz
ZWxlY3Rvciwga2l0KGVsZW1lbnQpLCBsaXN0ZW5lcik7Ci0gICAgICAgIFtsaXN0ZW5lciByZWxl
YXNlXTsKKyAgICAgICAgYXV0byBsaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJLaXRGdWxsU2NyZWVu
TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudDplbGVtZW50XSk7CisgICAgICAgIENhbGxV
SURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIGtpdChlbGVtZW50KSwgbGlzdGVuZXIuZ2V0
KCkpOwogICAgIH0KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0KaW5kZXggMDFlYzAzZWE4N2JjNDEwNjJiYjZkZjU1YjU4MGE5ZWFhYWZjZWJlMS4u
MGExNjQ5YzBhODIzYTU5MDhhMzMzMDI2M2QyN2VjMDc0ODFkOWNiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgX1dlYkNyZWF0ZUZyYWdtZW50KERvY3VtZW50
JiwgTlNBdHRyaWJ1dGVkU3RyaW5nICosIEZyYWdtZW50QW5kUmVzb3VyY2VzJikKIHN0YXRpYyBO
U0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpCiB7
CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBpZGVu
dGljYWxseSBuYW1lZCBvbmUgaW4gV2ViQ29yZSwgd2hpY2ggaXMgdXNlZCBvbiBuZXdlciBPUyB2
ZXJzaW9ucy4KLSAgICBOU011dGFibGVBcnJheSAqZXhjbHVkZWRFbGVtZW50cyA9IFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKKyAgICBhdXRvIGV4Y2x1ZGVkRWxlbWVu
dHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKICAg
ICAgICAgLy8gT21pdCBzdHlsZSBzaW5jZSB3ZSB3YW50IHN0eWxlIHRvIGJlIGlubGluZSBzbyB0
aGUgZnJhZ21lbnQgY2FuIGJlIGVhc2lseSBpbnNlcnRlZC4KICAgICAgICAgQCJzdHlsZSIsCiAg
ICAgICAgIC8vIE9taXQgeG1sIHNvIHRoZSByZXN1bHQgaXMgbm90IFhIVE1MLgpAQCAtNDQ3LDE2
ICs0NDcsMTQgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRT
dHJpbmdDb252ZXJzaW9uKCkKICAgICAgICAgLy8gT21pdCBvYmplY3Qgc28gbm8gZmlsZSBhdHRh
Y2htZW50cyBhcmUgcGFydCBvZiB0aGUgZnJhZ21lbnQuCiAgICAgICAgIEAib2JqZWN0IiwKICNl
bmRpZgotICAgICAgICBuaWxdOworICAgICAgICBuaWxdKTsKIAogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpKQogICAgICAgICBbZXhjbHVkZWRFbGVt
ZW50cyBhZGRPYmplY3Q6QCJvYmplY3QiXTsKICNlbmRpZgogCi0gICAgTlNEaWN0aW9uYXJ5ICpk
aWN0aW9uYXJ5ID0gQHsgTlNFeGNsdWRlZEVsZW1lbnRzRG9jdW1lbnRBdHRyaWJ1dGU6IGV4Y2x1
ZGVkRWxlbWVudHMgfTsKLQotICAgIFtleGNsdWRlZEVsZW1lbnRzIHJlbGVhc2VdOworICAgIE5T
RGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IEB7IE5TRXhjbHVkZWRFbGVtZW50c0RvY3VtZW50QXR0
cmlidXRlOiBleGNsdWRlZEVsZW1lbnRzLmdldCgpIH07CiAKICAgICByZXR1cm4gZGljdGlvbmFy
eTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZjc1ZjgwYzY3NGNhMDAzMTM2
MzYzM2RkNTM1MTUxZWU0MGEwNjFkNS4uYjNhY2MxNWQ1MzJmNDEzMWQ5MmY4NmJmMWYyNWUwZDEy
NDI5OGE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTI1OCw3ICsyNTgsNyBA
QCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpmb3JjZUxheW91dE9uUmVzdG9yZUZyb21CYWNr
Rm9yd2FyZENhY2hlKCkKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Zm9yY2VMYXlvdXRG
b3JOb25IVE1MKCkKIHsKLSAgICBXZWJGcmFtZVZpZXcgKnRoaXNWaWV3ID0gbV93ZWJGcmFtZS0+
X3ByaXZhdGUtPndlYkZyYW1lVmlldzsKKyAgICBhdXRvIHRoaXNWaWV3ID0gbV93ZWJGcmFtZS0+
X3ByaXZhdGUtPndlYkZyYW1lVmlldzsKICAgICBOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKnRo
aXNEb2N1bWVudFZpZXcgPSBbdGhpc1ZpZXcgZG9jdW1lbnRWaWV3XTsKICAgICBBU1NFUlQodGhp
c0RvY3VtZW50VmlldyAhPSBuaWwpOwogICAgIApAQCAtMjk0LDcgKzI5NCw2IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDIoKQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkZXRhY2hlZEZyb21QYXJlbnQzKCkKIHsKLSAgICBbbV93ZWJGcmFtZS0+
X3ByaXZhdGUtPndlYkZyYW1lVmlldyByZWxlYXNlXTsKICAgICBtX3dlYkZyYW1lLT5fcHJpdmF0
ZS0+d2ViRnJhbWVWaWV3ID0gbmlsOwogfQogCkBAIC04MzYsMTEgKzgzNSwxMCBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKE9wdGlv
blNldDxXZWJDb3JlOjpMYQogV2ViQ29yZTo6RnJhbWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIFdlYkNv
cmU6Ok5ld0ZyYW1lT3BlbmVyUG9saWN5KQogewogICAgIFdlYlZpZXcgKmN1cnJlbnRXZWJWaWV3
ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKLSAgICBOU0RpY3Rpb25hcnkgKmZlYXR1
cmVzID0gW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgIGF1dG8gZmVhdHVyZXMgPSBh
ZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgV2ViVmlldyAqbmV3V2Vi
VmlldyA9IFtbY3VycmVudFdlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6Y3Vy
cmVudFdlYlZpZXcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6bmlsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93RmVhdHVyZXM6ZmVhdHVy
ZXNdOwotICAgIFtmZWF0dXJlcyByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dGZWF0dXJlczpmZWF0dXJlcy5n
ZXQoKV07CiAgICAgCiAjaWYgVVNFKFBMVUdJTl9IT1NUX1BST0NFU1MpICYmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogICAgIGlmIChuZXdXZWJWaWV3KQpAQCAtMTAwOCw5ICsxMDA2LDgg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQo
KQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0g
ICAgTlNEYXRhICpuc0RhdGEgPSBbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToo
dm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT107Ci0gICAgW2RhdGFTb3Vy
Y2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOm5zRGF0YV07Ci0gICAgW25zRGF0YSByZWxlYXNlXTsK
KyAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNO
b0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKKyAgICBb
ZGF0YVNvdXJjZShsb2FkZXIpIF9yZWNlaXZlZERhdGE6bnNEYXRhLmdldCgpXTsKIH0KIAogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiBsb2FkZXIpCkBAIC0xMzE5LDEwICsxMzE2LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIC8vIGEgbm9u
LWVkaXRvciBpcyBmaXJzdFJlcG9uZGVyIGl0IHdpbGwgbm90IGJlIGFmZmVjdGVkIGJ5IGVuZEVk
aXRpbmdGb3I6LgogICAgIC8vIFBvdGVudGlhbGx5IG9uZSBkYXkgc29tZW9uZSBjb3VsZCB3cml0
ZSBhIERvY1ZpZXcgd2hvc2UgZWRpdG9ycyB3ZXJlIG5vdCBhbGwKICAgICAvLyByZXBsYWNlZCBi
eSBsb2FkaW5nIG5ldyBjb250ZW50LCBidXQgdGhhdCBkb2VzIG5vdCBhcHBseSBjdXJyZW50bHku
Ci0gICAgTlNWaWV3ICpmcmFtZVZpZXcgPSBtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVW
aWV3OworICAgIGF1dG8gZnJhbWVWaWV3ID0gbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1l
VmlldzsKICAgICBOU1dpbmRvdyAqd2luZG93ID0gW2ZyYW1lVmlldyB3aW5kb3ddOwogICAgIE5T
UmVzcG9uZGVyICpmaXJzdFJlc3AgPSBbd2luZG93IGZpcnN0UmVzcG9uZGVyXTsKLSAgICBpZiAo
W2ZpcnN0UmVzcCBpc0tpbmRPZkNsYXNzOltOU1ZpZXcgY2xhc3NdXSAmJiBbKE5TVmlldyAqKWZp
cnN0UmVzcCBpc0Rlc2NlbmRhbnRPZjpmcmFtZVZpZXddKQorICAgIGlmIChbZmlyc3RSZXNwIGlz
S2luZE9mQ2xhc3M6W05TVmlldyBjbGFzc11dICYmIFsoTlNWaWV3ICopZmlyc3RSZXNwIGlzRGVz
Y2VuZGFudE9mOmZyYW1lVmlldy5nZXQoKV0pCiAgICAgICAgIFt3aW5kb3cgZW5kRWRpdGluZ0Zv
cjpmaXJzdFJlc3BdOwogI2VuZGlmCiB9CkBAIC0xMzMxLDkgKzEzMjgsOCBAQCBSZWY8V2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExv
YWRlcihjb25zdCBXZQogewogICAgIGF1dG8gbG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXJNYWM6
OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiAKLSAgICBXZWJEYXRhU291cmNlICpk
YXRhU291cmNlID0gW1tXZWJEYXRhU291cmNlIGFsbG9jXSBfaW5pdFdpdGhEb2N1bWVudExvYWRl
cjpsb2FkZXIuY29weVJlZigpXTsKLSAgICBsb2FkZXItPnNldERhdGFTb3VyY2UoZGF0YVNvdXJj
ZSwgZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSk7Ci0gICAgW2RhdGFTb3VyY2UgcmVsZWFz
ZV07CisgICAgYXV0byBkYXRhU291cmNlID0gYWRvcHROUyhbW1dlYkRhdGFTb3VyY2UgYWxsb2Nd
IF9pbml0V2l0aERvY3VtZW50TG9hZGVyOmxvYWRlci5jb3B5UmVmKCldKTsKKyAgICBsb2FkZXIt
PnNldERhdGFTb3VyY2UoZGF0YVNvdXJjZS5nZXQoKSwgZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdl
dCgpKSk7CiAKICAgICByZXR1cm4gV1RGTW92ZShsb2FkZXIpOwogfQpAQCAtMTM2OCw3ICsxMzY0
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6
U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGMKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqIGNh
Y2hlZEZyYW1lKQogewotICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YShtYWtlVW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihtX3dlYkZyYW1lLT5fcHJp
dmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50VmlldykpOworICAgIGNhY2hlZEZyYW1lLT5zZXRD
YWNoZWRGcmFtZVBsYXRmb3JtRGF0YShtYWtlVW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhPihbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBkb2N1bWVudFZpZXddKSk7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25v
dyB0aGlzIGZyYW1lIGlzIGdvaW5nIHRvIGJlIGNhY2hlZC4gU3RvcCBhbGwgcGx1Z2lucy4KQEAg
LTE0MzUsMTUgKzE0MzEsMTQgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZp
ZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgW3dlYlZpZXcgcmVtb3ZlUGx1Z2luSW5zdGFuY2VW
aWV3c0ZvcjoobV93ZWJGcmFtZS5nZXQoKSldOwogICAgIAotICAgIE5TVmlldyA8V2ViRG9jdW1l
bnRWaWV3PiAqZG9jdW1lbnRWaWV3ID0gW21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZp
ZXcgX21ha2VEb2N1bWVudFZpZXdGb3JEYXRhU291cmNlOmRhdGFTb3VyY2VdOworICAgIFJldGFp
blB0cjxOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4+IGRvY3VtZW50VmlldyA9IFttX3dlYkZyYW1l
LT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3IF9tYWtlRG9jdW1lbnRWaWV3Rm9yRGF0YVNvdXJjZTpk
YXRhU291cmNlXTsKICNlbHNlCi0gICAgTlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+ICpkb2N1bWVu
dFZpZXcgPSBuaWw7CisgICAgUmV0YWluUHRyPE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3Pj4gZG9j
dW1lbnRWaWV3OwogCiAgICAgLy8gRmFzdCBwYXRoIHRoYXQgc2tpcHMgaW5pdGlhbGl6YXRpb24g
b2Ygb2JqYyBjbGFzcyBvYmplY3RzLgogICAgIGlmICh3aWxsUHJvZHVjZUhUTUxWaWV3KSB7Ci0g
ICAgICAgIGRvY3VtZW50VmlldyA9IFtbV2ViSFRNTFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
W21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgYm91bmRzXV07Ci0gICAgICAgIFtt
X3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3IF9zZXREb2N1bWVudFZpZXc6ZG9jdW1l
bnRWaWV3XTsKLSAgICAgICAgW2RvY3VtZW50VmlldyByZWxlYXNlXTsKKyAgICAgICAgZG9jdW1l
bnRWaWV3ID0gYWRvcHROUyhbW1dlYkhUTUxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOlttX3dl
YkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3IGJvdW5kc11dKTsKKyAgICAgICAgW21fd2Vi
RnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgX3NldERvY3VtZW50Vmlldzpkb2N1bWVudFZp
ZXcuZ2V0KCldOwogICAgIH0gZWxzZQogICAgICAgICBkb2N1bWVudFZpZXcgPSBbbV93ZWJGcmFt
ZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBfbWFrZURvY3VtZW50Vmlld0ZvckRhdGFTb3VyY2U6
ZGF0YVNvdXJjZV07CiAjZW5kaWYKQEAgLTE1NzAsMTAgKzE1NjUsOSBAQCBOU0RpY3Rpb25hcnkg
KldlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KGNvbnN0IFdlYkNvcmU6Ok5h
dmlnYXRpb25BYwogCiAgICAgaWYgKGF1dG8gbW91c2VFdmVudERhdGEgPSBhY3Rpb24ubW91c2VF
dmVudERhdGEoKSkgewogICAgICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0
OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93
Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKLSAgICAg
ICAgV2ViRWxlbWVudERpY3Rpb25hcnkgKmVsZW1lbnQgPSBbW1dlYkVsZW1lbnREaWN0aW9uYXJ5
IGFsbG9jXQotICAgICAgICAgICAgaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFt
ZS5nZXQoKSktPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnRE
YXRhLT5hYnNvbHV0ZUxvY2F0aW9uLCBoaXRUeXBlKV07Ci0gICAgICAgIFtyZXN1bHQgc2V0T2Jq
ZWN0OmVsZW1lbnQgZm9yS2V5OldlYkFjdGlvbkVsZW1lbnRLZXldOwotICAgICAgICBbZWxlbWVu
dCByZWxlYXNlXTsKKyAgICAgICAgYXV0byBlbGVtZW50ID0gYWRvcHROUyhbW1dlYkVsZW1lbnRE
aWN0aW9uYXJ5IGFsbG9jXQorICAgICAgICAgICAgaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmUo
bV93ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1v
dXNlRXZlbnREYXRhLT5hYnNvbHV0ZUxvY2F0aW9uLCBoaXRUeXBlKV0pOworICAgICAgICBbcmVz
dWx0IHNldE9iamVjdDplbGVtZW50LmdldCgpIGZvcktleTpXZWJBY3Rpb25FbGVtZW50S2V5XTsK
IAogICAgICAgICBpZiAobW91c2VFdmVudERhdGEtPmlzVHJ1c3RlZCkKICAgICAgICAgICAgIFty
ZXN1bHQgc2V0T2JqZWN0OkAobW91c2VFdmVudERhdGEtPmJ1dHRvbikgZm9yS2V5OldlYkFjdGlv
bkJ1dHRvbktleV07CkBAIC0xNjE0LDEwICsxNjA4LDkgQEAgUmVmUHRyPFdlYkNvcmU6OkZyYW1l
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBX
ZWIKICAgICAKICAgICBBU1NFUlQobV93ZWJGcmFtZSk7CiAgICAgCi0gICAgV2ViRnJhbWVWaWV3
ICpjaGlsZFZpZXcgPSBbW1dlYkZyYW1lVmlldyBhbGxvY10gaW5pdF07CisgICAgYXV0byBjaGls
ZFZpZXcgPSBhZG9wdE5TKFtbV2ViRnJhbWVWaWV3IGFsbG9jXSBpbml0XSk7CiAgICAgCi0gICAg
UmVmUHRyPFdlYkNvcmU6OkZyYW1lPiByZXN1bHQgPSBbV2ViRnJhbWUgX2NyZWF0ZVN1YmZyYW1l
V2l0aE93bmVyRWxlbWVudDomb3duZXJFbGVtZW50IGZyYW1lTmFtZTpuYW1lIGZyYW1lVmlldzpj
aGlsZFZpZXddOwotICAgIFtjaGlsZFZpZXcgcmVsZWFzZV07CisgICAgUmVmUHRyPFdlYkNvcmU6
OkZyYW1lPiByZXN1bHQgPSBbV2ViRnJhbWUgX2NyZWF0ZVN1YmZyYW1lV2l0aE93bmVyRWxlbWVu
dDomb3duZXJFbGVtZW50IGZyYW1lTmFtZTpuYW1lIGZyYW1lVmlldzpjaGlsZFZpZXcuZ2V0KCld
OwogCiAgICAgV2ViRnJhbWUgKm5ld0ZyYW1lID0ga2l0KHJlc3VsdC5nZXQoKSk7CiAKQEAgLTE2
OTksMTIgKzE2OTIsMTEgQEAgc3RhdGljIE5TVmlldyAqcGx1Z2luVmlldyhXZWJGcmFtZSAqZnJh
bWUsIFdlYlBsdWdpblBhY2thZ2UgKnBsdWdpblBhY2thZ2UsCiAgICAgV2ViUGx1Z2luQ29udHJv
bGxlciAqcGx1Z2luQ29udHJvbGxlciA9IFtkb2NWaWV3IF9wbHVnaW5Db250cm9sbGVyXTsKIAog
ICAgIC8vIFN0b3JlIGF0dHJpYnV0ZXMgaW4gYSBkaWN0aW9uYXJ5IHNvIHRoZXkgY2FuIGJlIHBh
c3NlZCB0byBXZWJQbHVnaW5zLgotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmF0dHJpYnV0ZXMg
PSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czphdHRyaWJ1dGVW
YWx1ZXMgZm9yS2V5czphdHRyaWJ1dGVOYW1lc107CisgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czphdHRyaWJ1
dGVWYWx1ZXMgZm9yS2V5czphdHRyaWJ1dGVOYW1lc10pOwogCiAgICAgW3BsdWdpblBhY2thZ2Ug
bG9hZF07CiAgICAgQ2xhc3Mgdmlld0ZhY3RvcnkgPSBbcGx1Z2luUGFja2FnZSB2aWV3RmFjdG9y
eV07CiAgICAgCi0gICAgTlNWaWV3ICp2aWV3ID0gbmlsOwogICAgIE5TRGljdGlvbmFyeSAqYXJn
dW1lbnRzID0gbmlsOwogCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVuZGVjbGFyZWQtc2VsZWN0
b3IiKQpAQCAtMTcxNCw3ICsxNzA2LDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIGlmIChb
dmlld0ZhY3RvcnkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwbHVnSW5WaWV3V2l0aEFy
Z3VtZW50czopXSkgewogICAgICAgICBhcmd1bWVudHMgPSBAewogICAgICAgICAgICAgV2ViUGx1
Z0luQmFzZVVSTEtleTogYmFzZVVSTCwKLSAgICAgICAgICAgIFdlYlBsdWdJbkF0dHJpYnV0ZXNL
ZXk6IGF0dHJpYnV0ZXMsCisgICAgICAgICAgICBXZWJQbHVnSW5BdHRyaWJ1dGVzS2V5OiBhdHRy
aWJ1dGVzLmdldCgpLAogICAgICAgICAgICAgV2ViUGx1Z0luQ29udGFpbmVyS2V5OiBwbHVnaW5D
b250cm9sbGVyLAogICAgICAgICAgICAgV2ViUGx1Z0luTW9kZUtleTogQChsb2FkTWFudWFsbHkg
PyBXZWJQbHVnSW5Nb2RlRnVsbCA6IFdlYlBsdWdJbk1vZGVFbWJlZCksCiAgICAgICAgICAgICBX
ZWJQbHVnSW5TaG91bGRMb2FkTWFpblJlc291cmNlS2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6IWxvYWRNYW51YWxseV0sCkBAIC0xNzI0LDE3ICsxNzE2LDE0IEBAIElHTk9SRV9XQVJOSU5H
U19FTkQKICAgICB9IGVsc2UgaWYgKFt2aWV3RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0b3I6b2xk
U2VsZWN0b3JdKSB7CiAgICAgICAgIGFyZ3VtZW50cyA9IEB7CiAgICAgICAgICAgICBXZWJQbHVn
aW5CYXNlVVJMS2V5OiBiYXNlVVJMLAotICAgICAgICAgICAgV2ViUGx1Z2luQXR0cmlidXRlc0tl
eTogYXR0cmlidXRlcywKKyAgICAgICAgICAgIFdlYlBsdWdpbkF0dHJpYnV0ZXNLZXk6IGF0dHJp
YnV0ZXMuZ2V0KCksCiAgICAgICAgICAgICBXZWJQbHVnaW5Db250YWluZXJLZXk6IHBsdWdpbkNv
bnRyb2xsZXIsCiAgICAgICAgICAgICBXZWJQbHVnSW5Db250YWluaW5nRWxlbWVudEtleTogZWxl
bWVudCwKICAgICAgICAgfTsKICAgICAgICAgTE9HKFBsdWdpbnMsICJhcmd1bWVudHM6XG4lQCIs
IGFyZ3VtZW50cyk7CiAgICAgfQogCi0gICAgdmlldyA9IFtwbHVnaW5Db250cm9sbGVyIHBsdWdJ
blZpZXdXaXRoQXJndW1lbnRzOmFyZ3VtZW50cyBmcm9tUGx1Z2luUGFja2FnZTpwbHVnaW5QYWNr
YWdlXTsKLSAgICBbYXR0cmlidXRlcyByZWxlYXNlXTsKLQotICAgIHJldHVybiB2aWV3OworICAg
IHJldHVybiBbcGx1Z2luQ29udHJvbGxlciBwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czphcmd1bWVu
dHMgZnJvbVBsdWdpblBhY2thZ2U6cGx1Z2luUGFja2FnZV07CiB9CiAKIGNsYXNzIFBsdWdpbldp
ZGdldCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5WaWV3QmFzZSB7CkBAIC0xOTAyLDE4ICsxODkx
LDE2IEBAIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVj
dG9yKHdlYlZpZXc6cGx1Z0luVmlld1dpdGhBcmd1bWVudHM6KTsKICAgICBpZiAoW1t3ZWJWaWV3
IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pIHsKICAgICAgICAgTlNE
aWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVj
dHM6Y3JlYXRlTlNBcnJheShwYXJhbVZhbHVlcykuZ2V0KCkgZm9yS2V5czphdHRyaWJ1dGVLZXlz
LmdldCgpXTsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICphcmd1bWVudHMgPSBbW05TRGljdGlvbmFy
eSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgYXV0byBhcmd1bWVudHMg
PSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgog
ICAgICAgICAgICAgYXR0cmlidXRlcywgV2ViUGx1Z0luQXR0cmlidXRlc0tleSwKICAgICAgICAg
ICAgIEAobG9hZE1hbnVhbGx5ID8gV2ViUGx1Z0luTW9kZUZ1bGwgOiBXZWJQbHVnSW5Nb2RlRW1i
ZWQpLCBXZWJQbHVnSW5Nb2RlS2V5LAogICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhC
b29sOiFsb2FkTWFudWFsbHldLCBXZWJQbHVnSW5TaG91bGRMb2FkTWFpblJlc291cmNlS2V5LAog
ICAgICAgICAgICAga2l0KCZlbGVtZW50KSwgV2ViUGx1Z0luQ29udGFpbmluZ0VsZW1lbnRLZXks
CiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIHBhc3NpbmcgYmFzZSBVUkwsIHNl
ZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MjE1Pi4KICAgICAg
ICAgICAgIHBsdWdpblVSTCwgV2ViUGx1Z0luQmFzZVVSTEtleSwgLy8gcGx1Z2luVVJMIG1pZ2h0
IGJlIG5pbCwgc28gYWRkIGl0IGxhc3QKLSAgICAgICAgICAgIG5pbF07Ci0KLSAgICAgICAgTlNW
aWV3ICp2aWV3ID0gQ2FsbFVJRGVsZWdhdGUod2ViVmlldywgc2VsZWN0b3IsIGFyZ3VtZW50cyk7
CisgICAgICAgICAgICBuaWxdKTsKIAotICAgICAgICBbYXJndW1lbnRzIHJlbGVhc2VdOworICAg
ICAgICBOU1ZpZXcgKnZpZXcgPSBDYWxsVUlEZWxlZ2F0ZSh3ZWJWaWV3LCBzZWxlY3RvciwgYXJn
dW1lbnRzLmdldCgpKTsKIAogICAgICAgICBpZiAodmlldykKICAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFBsdWdpbldpZGdldCh2aWV3KSk7CkBAIC0xOTg3LDExICsxOTc0LDEwIEBA
IFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgICAgICAgICAgICAgcGx1Z2luUGFnZVVSTCA9
IFVSTCgpOwogICAgICAgICAgICAgTlNTdHJpbmcgKnBsdWdpbk5hbWUgPSBwbHVnaW5QYWNrYWdl
ID8gKE5TU3RyaW5nICopW3BsdWdpblBhY2thZ2UgcGx1Z2luSW5mb10ubmFtZSA6IG5pbDsKIAot
ICAgICAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBbW05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBs
dWdpbkVycm9yQ29kZTplcnJvckNvZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRVUkw6cGx1Z2luVVJMIHBsdWdpblBh
Z2VVUkw6cGx1Z2luUGFnZVVSTCBwbHVnaW5OYW1lOnBsdWdpbk5hbWUgTUlNRVR5cGU6TUlNRVR5
cGVdOworICAgICAgICAgICAgYXV0byBlcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBf
aW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6ZXJyb3JDb2RlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VVJMOnBsdWdpblVS
TCBwbHVnaW5QYWdlVVJMOnBsdWdpblBhZ2VVUkwgcGx1Z2luTmFtZTpwbHVnaW5OYW1lIE1JTUVU
eXBlOk1JTUVUeXBlXSk7CiAgICAgICAgICAgICBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoaW1w
bGVtZW50YXRpb25zLT5wbHVnSW5GYWlsZWRXaXRoRXJyb3JGdW5jLCBbbV93ZWJGcmFtZS5nZXQo
KSB3ZWJWaWV3XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc2VsZWN0
b3Iod2ViVmlldzpwbHVnSW5GYWlsZWRXaXRoRXJyb3I6ZGF0YVNvdXJjZTopLCBlcnJvciwgW21f
d2ViRnJhbWUuZ2V0KCkgX2RhdGFTb3VyY2VdKTsKLSAgICAgICAgICAgIFtlcnJvciByZWxlYXNl
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc2VsZWN0b3Iod2ViVmll
dzpwbHVnSW5GYWlsZWRXaXRoRXJyb3I6ZGF0YVNvdXJjZTopLCBlcnJvci5nZXQoKSwgW21fd2Vi
RnJhbWUuZ2V0KCkgX2RhdGFTb3VyY2VdKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQppbmRleCBiZGExNGI0YTI2YmJiYTc3
MDRiZjU2ZGUxMTRmMDlhYzUyODhiNDg5Li4xZWQxNDM4YWM2NmUwNTVhMTJlZmYxODY3NTM5Y2I1
MWQ5MmMxNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQpAQCAtMTIxLDEzICsxMjEs
MTAgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9j
YXRpb24mIGdlb2xvY2F0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgV2ViU2Vj
dXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0
V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjomZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCldOwotICAgIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIqIGxpc3RlbmVyID0gW1tX
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uOmdl
b2xvY2F0aW9uXTsKKyAgICBhdXRvIHdlYk9yaWdpbiA9IGFkb3B0TlMoW1tXZWJTZWN1cml0eU9y
aWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOiZmcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKV0pOworICAgIGF1dG8gbGlzdGVuZXIgPSBhZG9wdE5TKFtb
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvbjpn
ZW9sb2NhdGlvbl0pOwogCi0gICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwg
d2ViT3JpZ2luLCBraXQoZnJhbWUpLCBsaXN0ZW5lcik7Ci0KLSAgICBbd2ViT3JpZ2luIHJlbGVh
c2VdOwotICAgIFtsaXN0ZW5lciByZWxlYXNlXTsKKyAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZp
ZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4uZ2V0KCksIGtpdChmcmFtZSksIGxpc3RlbmVyLmdldCgp
KTsKICNlbHNlCiAgICAgUmV0YWluUHRyPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJJbml0aWFsaXph
dGlvbkxpc3RlbmVyPiBsaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJHZW9sb2NhdGlvblByb3ZpZGVy
SW5pdGlhbGl6YXRpb25MaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvbjpnZW9sb2Nh
dGlvbl0pOwogICAgIFtbbV93ZWJWaWV3IF9nZW9sb2NhdGlvblByb3ZpZGVyXSBpbml0aWFsaXpl
R2VvbG9jYXRpb25Gb3JXZWJWaWV3Om1fd2ViVmlldyBsaXN0ZW5lcjpsaXN0ZW5lci5nZXQoKV07
CkBAIC0yMjQsMTIgKzIyMSwxMCBAQCAtICh2b2lkKWluaXRpYWxpemF0aW9uQWxsb3dlZFdlYlZp
ZXc6KFdlYlZpZXcgKil3ZWJWaWV3CiAgICAgRnJhbWUqIGZyYW1lID0gbV9nZW9sb2NhdGlvbi0+
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgV2ViU2VjdXJp
dHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0
aFdlYkNvcmVTZWN1cml0eU9yaWdpbjomZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCldOwotICAgIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgKmxpc3RlbmVyID0gW1tXZWJH
ZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uOm1fZ2Vv
bG9jYXRpb24uZ2V0KCkgZm9yV2ViVmlldzp3ZWJWaWV3XTsKKyAgICBhdXRvIHdlYk9yaWdpbiA9
IGFkb3B0TlMoW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3Vy
aXR5T3JpZ2luOiZmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKV0pOworICAgIGF1
dG8gbGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxv
Y10gaW5pdFdpdGhHZW9sb2NhdGlvbjptX2dlb2xvY2F0aW9uLmdldCgpIGZvcldlYlZpZXc6d2Vi
Vmlld10pOwogICAgIFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46ZnJhbWU6bGlzdGVuZXI6KTsKLSAgICBD
YWxsVUlEZWxlZ2F0ZSh3ZWJWaWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2luLCBraXQoZnJhbWUpLCBs
aXN0ZW5lcik7Ci0gICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKLSAgICBbbGlzdGVuZXIgcmVsZWFz
ZV07CisgICAgQ2FsbFVJRGVsZWdhdGUod2ViVmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbi5nZXQo
KSwga2l0KGZyYW1lKSwgbGlzdGVuZXIuZ2V0KCkpOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDY2ZjY2NzI3NzNmNjg2Yzhm
YzU5ZmIzYzljOTEzNTJjOWM1NWE3NTguLmEyYzU0YjMzMmI1MTFhNmZkOTU0NGMyY2NiY2ZkYTZh
MWY3YjEzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3Rh
dGljIGNvbnN0IENHRmxvYXQgaW5pdGlhbFdpbmRvd0hlaWdodCA9IDY1MDsKIEBpbnRlcmZhY2Ug
V2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlciA8TlNXaW5k
b3dEZWxlZ2F0ZSwgV2ViUG9saWN5RGVsZWdhdGUsIFdlYlVJRGVsZWdhdGU+IHsKIEBwcml2YXRl
CiAgICAgUmV0YWluUHRyPFdlYlZpZXc+IF9pbnNwZWN0ZWRXZWJWaWV3OwotICAgIFdlYlZpZXcq
IF9mcm9udGVuZFdlYlZpZXc7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IF9mcm9udGVuZFdlYlZp
ZXc7CiAgICAgTmFrZWRQdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IF9mcm9udGVuZENs
aWVudDsKICAgICBXZWJJbnNwZWN0b3JDbGllbnQqIF9pbnNwZWN0b3JDbGllbnQ7CiAgICAgQk9P
TCBfYXR0YWNoZWRUb0luc3BlY3RlZFdlYlZpZXc7CkBAIC00NzUsNyArNDc1LDcgQEAgLSAoaWQp
aW5pdAogCiAgICAgLy8gS2VlcCBwcmVmZXJlbmNlcyBzZXBhcmF0ZSBmcm9tIHRoZSByZXN0IG9m
IHRoZSBjbGllbnQsIG1ha2luZyBzdXJlIHdlIGFyZSB1c2luZyBleHBlY3RlZCBwcmVmZXJlbmNl
IHZhbHVlcy4KIAotICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbV2ViUHJlZmVy
ZW5jZXMgYWxsb2NdIGluaXRdOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBhZG9wdE5TKFtbV2Vi
UHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKICAgICBbcHJlZmVyZW5jZXMgc2V0QWxsb3dzQW5p
bWF0ZWRJbWFnZXM6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0QXV0aG9yQW5kVXNlclN0eWxl
c0VuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0QXV0b3NhdmVzOk5PXTsKQEAgLTQ5
NCwxNCArNDk0LDEyIEBAIC0gKGlkKWluaXQKICAgICBbcHJlZmVyZW5jZXMgc2V0QWxsb3dUb3BO
YXZpZ2F0aW9uVG9EYXRhVVJMczpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRTdG9yYWdlQmxv
Y2tpbmdQb2xpY3k6V2ViQWxsb3dBbGxTdG9yYWdlXTsKIAotICAgIF9mcm9udGVuZFdlYlZpZXcg
PSBbW1dlYlZpZXcgYWxsb2NdIGluaXRdOwotICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldFByZWZl
cmVuY2VzOnByZWZlcmVuY2VzXTsKKyAgICBfZnJvbnRlbmRXZWJWaWV3ID0gYWRvcHROUyhbW1dl
YlZpZXcgYWxsb2NdIGluaXRdKTsKKyAgICBbX2Zyb250ZW5kV2ViVmlldyBzZXRQcmVmZXJlbmNl
czpwcmVmZXJlbmNlcy5nZXQoKV07CiAgICAgW19mcm9udGVuZFdlYlZpZXcgc2V0UHJvaGliaXRz
TWFpbkZyYW1lU2Nyb2xsaW5nOllFU107CiAgICAgW19mcm9udGVuZFdlYlZpZXcgc2V0VUlEZWxl
Z2F0ZTpzZWxmXTsKICAgICBbX2Zyb250ZW5kV2ViVmlldyBzZXRQb2xpY3lEZWxlZ2F0ZTpzZWxm
XTsKIAotICAgIFtwcmVmZXJlbmNlcyByZWxlYXNlXTsKLQogICAgIFtzZWxmIHNldFdpbmRvd0Zy
YW1lQXV0b3NhdmVOYW1lOkAiV2ViIEluc3BlY3RvciAyIl07CiAgICAgcmV0dXJuIHNlbGY7CiB9
CkBAIC01MTQsMTYgKzUxMiwxNCBAQCAtIChpZClpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6KFdl
YlZpZXcgKil3ZWJWaWV3IGlzVW5kZXJUZXN0OihCT09MKWlzVW5kZXJUZXN0CiAgICAgX2luc3Bl
Y3RlZFdlYlZpZXcgPSB3ZWJWaWV3OwogCiAgICAgTlNTdHJpbmcgKnBhZ2VQYXRoID0gaXNVbmRl
clRlc3QgPyBbc2VsZiBpbnNwZWN0b3JUZXN0UGFnZVBhdGhdIDogW3NlbGYgaW5zcGVjdG9yUGFn
ZVBhdGhdOwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtbTlNVUkxSZXF1ZXN0IGFsbG9j
XSBpbml0V2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOiBwYWdlUGF0aF1dOwotICAgIFtb
X2Zyb250ZW5kV2ViVmlldyBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotICAgIFty
ZXF1ZXN0IHJlbGVhc2VdOworICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVl
c3QgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6IHBhZ2VQYXRoXV0p
OworICAgIFtbX2Zyb250ZW5kV2ViVmlldyBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OnJlcXVlc3Qu
Z2V0KCldOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAg
IFtfZnJvbnRlbmRXZWJWaWV3IHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApA
QCAtNTUyLDMyICs1NDgsMjkgQEAgLSAoTlNTdHJpbmcgKilpbnNwZWN0b3JUZXN0UGFnZVBhdGgK
IAogLSAoV2ViVmlldyAqKWZyb250ZW5kV2ViVmlldwogewotICAgIHJldHVybiBfZnJvbnRlbmRX
ZWJWaWV3OworICAgIHJldHVybiBfZnJvbnRlbmRXZWJWaWV3LmdldCgpOwogfQogCiAtIChOU1dp
bmRvdyAqKXdpbmRvdwogewotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc3VwZXIgd2luZG93XTsK
LSAgICBpZiAod2luZG93KQorICAgIGlmIChhdXRvICp3aW5kb3cgPSBbc3VwZXIgd2luZG93XSkK
ICAgICAgICAgcmV0dXJuIHdpbmRvdzsKIAogICAgIE5TVUludGVnZXIgc3R5bGVNYXNrID0gTlNX
aW5kb3dTdHlsZU1hc2tUaXRsZWQgfCBOU1dpbmRvd1N0eWxlTWFza0Nsb3NhYmxlIHwgTlNXaW5k
b3dTdHlsZU1hc2tNaW5pYXR1cml6YWJsZSB8IE5TV2luZG93U3R5bGVNYXNrUmVzaXphYmxlIHwg
TlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6ZUNvbnRlbnRWaWV3OwotICAgIHdpbmRvdyA9IFtbTlNX
aW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCBpbml0aWFs
V2luZG93V2lkdGgsIGluaXRpYWxXaW5kb3dIZWlnaHQpIHN0eWxlTWFzazpzdHlsZU1hc2sgYmFj
a2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKKyAgICBhdXRvIHdpbmRvdyA9
IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0
KDAsIDAsIGluaXRpYWxXaW5kb3dXaWR0aCwgaW5pdGlhbFdpbmRvd0hlaWdodCkgc3R5bGVNYXNr
OnN0eWxlTWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKICAg
ICBbd2luZG93IHNldERlbGVnYXRlOnNlbGZdOwogICAgIFt3aW5kb3cgc2V0TWluU2l6ZTpOU01h
a2VTaXplKG1pbmltdW1XaW5kb3dXaWR0aCwgbWluaW11bVdpbmRvd0hlaWdodCldOwogICAgIFt3
aW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOihbd2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl0g
fCBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvckZ1bGxTY3JlZW5QcmltYXJ5KV07CiAKLSAgICBD
R0Zsb2F0IGFwcHJveGltYXRlbHlIYWxmU2NyZWVuU2l6ZSA9ICh3aW5kb3cuc2NyZWVuLmZyYW1l
LnNpemUud2lkdGggLyAyKSAtIDQ7CisgICAgQ0dGbG9hdCBhcHByb3hpbWF0ZWx5SGFsZlNjcmVl
blNpemUgPSAoW3dpbmRvdyBzY3JlZW5dLmZyYW1lLnNpemUud2lkdGggLyAyKSAtIDQ7CiAgICAg
Q0dGbG9hdCBtaW5pbXVtRnVsbFNjcmVlbldpZHRoID0gc3RkOjptYXg8Q0dGbG9hdD4oNjM2LCBh
cHByb3hpbWF0ZWx5SGFsZlNjcmVlblNpemUpOwogICAgIFt3aW5kb3cgc2V0TWluRnVsbFNjcmVl
bkNvbnRlbnRTaXplOk5TTWFrZVNpemUobWluaW11bUZ1bGxTY3JlZW5XaWR0aCwgbWluaW11bVdp
bmRvd0hlaWdodCldOwogICAgIFt3aW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOihbd2luZG93
IGNvbGxlY3Rpb25CZWhhdmlvcl0gfCBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvckZ1bGxTY3Jl
ZW5BbGxvd3NUaWxpbmcpXTsKIAotICAgIHdpbmRvdy50aXRsZWJhckFwcGVhcnNUcmFuc3BhcmVu
dCA9IFlFUzsKLQotICAgIFtzZWxmIHNldFdpbmRvdzp3aW5kb3ddOwotICAgIFt3aW5kb3cgcmVs
ZWFzZV07CisgICAgW3dpbmRvdyBzZXRUaXRsZWJhckFwcGVhcnNUcmFuc3BhcmVudDogWUVTXTsK
IAotICAgIHJldHVybiB3aW5kb3c7CisgICAgW3NlbGYgc2V0V2luZG93OndpbmRvdy5nZXQoKV07
CisgICAgcmV0dXJuIHdpbmRvdy5nZXQoKTsKIH0KIAogLy8gTUFSSzogLQpAQCAtNjU5LDggKzY1
Miw4IEBAIC0gKElCQWN0aW9uKXNob3dXaW5kb3c6KGlkKXNlbmRlcgogICAgICAgICBXZWJGcmFt
ZVZpZXcgKmZyYW1lVmlldyA9IFtbX2luc3BlY3RlZFdlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBm
cmFtZVZpZXddOwogCiAgICAgICAgIFtfZnJvbnRlbmRXZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZp
ZXddOwotICAgICAgICBbX2luc3BlY3RlZFdlYlZpZXcuZ2V0KCkgYWRkU3VidmlldzpfZnJvbnRl
bmRXZWJWaWV3IHBvc2l0aW9uZWQ6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOihOU1ZpZXcgKilm
cmFtZVZpZXddOwotICAgICAgICBbW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIHdpbmRvd10gbWFr
ZUZpcnN0UmVzcG9uZGVyOl9mcm9udGVuZFdlYlZpZXddOworICAgICAgICBbX2luc3BlY3RlZFdl
YlZpZXcuZ2V0KCkgYWRkU3VidmlldzpfZnJvbnRlbmRXZWJWaWV3LmdldCgpIHBvc2l0aW9uZWQ6
TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOihOU1ZpZXcgKilmcmFtZVZpZXddOworICAgICAgICBb
W19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOl9mcm9u
dGVuZFdlYlZpZXcuZ2V0KCldOwogCiAgICAgICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldEF1dG9y
ZXNpemluZ01hc2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUgfCBO
U1ZpZXdNYXhZTWFyZ2luKV07CiAgICAgICAgIFtmcmFtZVZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFz
azooTlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZSB8IE5TVmlld01pbllN
YXJnaW4pXTsKQEAgLTY3Myw3ICs2NjYsNyBAQCAtIChJQkFjdGlvbilzaG93V2luZG93OihpZClz
ZW5kZXIKICAgICAgICAgW19mcm9udGVuZFdlYlZpZXcgc2V0RnJhbWU6W2NvbnRlbnRWaWV3IGZy
YW1lXV07CiAgICAgICAgIFtfZnJvbnRlbmRXZWJWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5T
Vmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUpXTsKICAgICAgICAgW19mcm9u
dGVuZFdlYlZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAgICAgIFtjb250ZW50VmlldyBh
ZGRTdWJ2aWV3Ol9mcm9udGVuZFdlYlZpZXddOworICAgICAgICBbY29udGVudFZpZXcgYWRkU3Vi
dmlldzpfZnJvbnRlbmRXZWJWaWV3LmdldCgpXTsKIAogICAgICAgICBbc3VwZXIgc2hvd1dpbmRv
dzpuaWxdOwogICAgIH0KQEAgLTc5Niw4ICs3ODksOCBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXIgcnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjoo
aQogICAgICAgICBbcmVzdWx0TGlzdGVuZXIgY2hvb3NlRmlsZW5hbWVzOmZpbGVuYW1lc107CiAg
ICAgfTsKIAotICAgIGlmIChfZnJvbnRlbmRXZWJWaWV3LndpbmRvdykKLSAgICAgICAgW3BhbmVs
IGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzpfZnJvbnRlbmRXZWJWaWV3LndpbmRvdyBjb21wbGV0
aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgaWYgKFtfZnJvbnRlbmRXZWJWaWV3
IHdpbmRvd10pCisgICAgICAgIFtwYW5lbCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6W19mcm9u
dGVuZFdlYlZpZXcgd2luZG93XSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07
CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbcGFuZWwgcnVuTW9kYWxdKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Yk5vdGlmaWNhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQppbmRleCBhYjEyMzg5NzcyMzlhMjRkN2Yz
MGRiNjU4ZTgzYTI2OTVjNDdhYmM4Li5kOGU3NDhiNTc5Y2JmZDZmNDI1YThkNDJhN2E5NDRiNmRl
MmNjZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCkBAIC0xMzAsMTEgKzEzMCw5
IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXCiAKICAgICBtX2V2ZXJSZXF1ZXN0ZWRQZXJtaXNz
aW9uID0gdHJ1ZTsKIAotICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNl
Y3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29udGV4
dC0+c2VjdXJpdHlPcmlnaW4oKV07CisgICAgYXV0byB3ZWJPcmlnaW4gPSBhZG9wdE5TKFtbV2Vi
U2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpjb250
ZXh0LT5zZWN1cml0eU9yaWdpbigpXSk7CiAgICAgCi0gICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJW
aWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2luLCBsaXN0ZW5lcik7Ci0gICAgCi0gICAgW3dlYk9yaWdp
biByZWxlYXNlXTsKKyAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCB3ZWJP
cmlnaW4uZ2V0KCksIGxpc3RlbmVyKTsKIH0KIAogYm9vbCBXZWJOb3RpZmljYXRpb25DbGllbnQ6
Omhhc1BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNv
bnN0CkBAIC0xNDcsOSArMTQ1LDggQEAgYm9vbCBXZWJOb3RpZmljYXRpb25DbGllbnQ6Omhhc1Bl
bmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiYmIGNh
bGxiYWNrKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFdlYk5vdGlm
aWNhdGlvblBvbGljeUxpc3RlbmVyICpsaXN0ZW5lciA9IFtbV2ViTm90aWZpY2F0aW9uUG9saWN5
TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6V1RGTW92ZShjYWxsYmFjayldOwotICAg
IHJlcXVlc3RQZXJtaXNzaW9uKGNvbnRleHQsIGxpc3RlbmVyKTsKLSAgICBbbGlzdGVuZXIgcmVs
ZWFzZV07CisgICAgYXV0byBsaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJOb3RpZmljYXRpb25Qb2xp
Y3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazpXVEZNb3ZlKGNhbGxiYWNrKV0pOwor
ICAgIHJlcXVlc3RQZXJtaXNzaW9uKGNvbnRleHQsIGxpc3RlbmVyLmdldCgpKTsKICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTE1OSw5ICsxNTYsOCBAQCBOb3RpZmljYXRp
b25DbGllbnQ6OlBlcm1pc3Npb24gV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjaGVja1Blcm1pc3Np
b24oU2NyaXB0RXhlYwogICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNz
aW9uOjpEZW5pZWQ7CiAgICAgaWYgKCFbW21fd2ViVmlldyBwcmVmZXJlbmNlc10gbm90aWZpY2F0
aW9uc0VuYWJsZWRdKQogICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNz
aW9uOjpEZW5pZWQ7Ci0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2Vj
dXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpXTsKLSAgICBXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uIHBlcm1p
c3Npb24gPSBbW21fd2ViVmlldyBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIHBvbGljeUZvck9yaWdp
bjp3ZWJPcmlnaW5dOwotICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07CisgICAgYXV0byB3ZWJPcmln
aW4gPSBhZG9wdE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVT
ZWN1cml0eU9yaWdpbjpjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpXSk7CisgICAgV2ViTm90aWZp
Y2F0aW9uUGVybWlzc2lvbiBwZXJtaXNzaW9uID0gW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblBy
b3ZpZGVyXSBwb2xpY3lGb3JPcmlnaW46d2ViT3JpZ2luLmdldCgpXTsKICAgICBzd2l0Y2ggKHBl
cm1pc3Npb24pIHsKICAgICAgICAgY2FzZSBXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uQWxsb3dl
ZDoKICAgICAgICAgICAgIHJldHVybiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb246Okdy
YW50ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkFy
Y2hpdmUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0K
aW5kZXggMjU5YzdlOWVhNmQ1MWJmMGM3NDY5OTdkZmJkYTc5N2MxZWIwODhhNy4uMWZmMmY1NDYy
ZDY1MjMzNjA4ZDZhYWE1MTUyZjQ2ZGIxZmEwYjY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQpAQCAtNTMsOSArNTMsOSBAQCBzdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCBXZWJTdWJmcmFtZUFyY2hpdmVzS2V5ID0gQCJXZWJTdWJmcmFtZUFyY2hp
dmVzIjsKIAogQGludGVyZmFjZSBXZWJBcmNoaXZlUHJpdmF0ZSA6IE5TT2JqZWN0IHsKIEBwdWJs
aWMKLSAgICBXZWJSZXNvdXJjZSAqY2FjaGVkTWFpblJlc291cmNlOwotICAgIE5TQXJyYXkgKmNh
Y2hlZFN1YnJlc291cmNlczsKLSAgICBOU0FycmF5ICpjYWNoZWRTdWJmcmFtZUFyY2hpdmVzOwor
ICAgIFJldGFpblB0cjxXZWJSZXNvdXJjZT4gY2FjaGVkTWFpblJlc291cmNlOworICAgIFJldGFp
blB0cjxOU0FycmF5PiBjYWNoZWRTdWJyZXNvdXJjZXM7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+
IGNhY2hlZFN1YmZyYW1lQXJjaGl2ZXM7CiBAcHJpdmF0ZQogICAgIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBjb3JlQXJjaGl2ZTsKIH0KQEAgLTExMiwxMCArMTEyLDYgQEAgLSAodm9pZClkZWFs
bG9jCiAgICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtX
ZWJBcmNoaXZlUHJpdmF0ZSBjbGFzc10sIHNlbGYpKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgW2NhY2hlZE1haW5SZXNvdXJjZSByZWxlYXNlXTsKLSAgICBbY2FjaGVkU3VicmVzb3VyY2Vz
IHJlbGVhc2VdOwotICAgIFtjYWNoZWRTdWJmcmFtZUFyY2hpdmVzIHJlbGVhc2VdOwotICAgIAog
ICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMTU2LDIxICsxNTIsMjEgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoTWFpblJlc291cmNlOihXZWJSZXNvdXJjZSAqKW1haW5SZXNvdXJjZSBz
dWJyZXNvdXJjZXM6KE4KIAogICAgIF9wcml2YXRlID0gW1tXZWJBcmNoaXZlUHJpdmF0ZSBhbGxv
Y10gaW5pdF07CiAKLSAgICBfcHJpdmF0ZS0+Y2FjaGVkTWFpblJlc291cmNlID0gW21haW5SZXNv
dXJjZSByZXRhaW5dOworICAgIF9wcml2YXRlLT5jYWNoZWRNYWluUmVzb3VyY2UgPSBtYWluUmVz
b3VyY2U7CiAgICAgaWYgKCFfcHJpdmF0ZS0+Y2FjaGVkTWFpblJlc291cmNlKSB7CiAgICAgICAg
IFtzZWxmIHJlbGVhc2VdOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KICAgICAKICAgICBp
ZiAoIXN1YnJlc291cmNlcyB8fCBpc0FycmF5T2ZDbGFzcyhzdWJyZXNvdXJjZXMsIFtXZWJSZXNv
dXJjZSBjbGFzc10pKQotICAgICAgICBfcHJpdmF0ZS0+Y2FjaGVkU3VicmVzb3VyY2VzID0gW3N1
YnJlc291cmNlcyByZXRhaW5dOworICAgICAgICBfcHJpdmF0ZS0+Y2FjaGVkU3VicmVzb3VyY2Vz
ID0gc3VicmVzb3VyY2VzOwogICAgIGVsc2UgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKICAgICBpZiAoIXN1YmZyYW1lQXJjaGl2ZXMgfHwg
aXNBcnJheU9mQ2xhc3Moc3ViZnJhbWVBcmNoaXZlcywgW1dlYkFyY2hpdmUgY2xhc3NdKSkKLSAg
ICAgICAgX3ByaXZhdGUtPmNhY2hlZFN1YmZyYW1lQXJjaGl2ZXMgPSBbc3ViZnJhbWVBcmNoaXZl
cyByZXRhaW5dOworICAgICAgICBfcHJpdmF0ZS0+Y2FjaGVkU3ViZnJhbWVBcmNoaXZlcyA9IHN1
YmZyYW1lQXJjaGl2ZXM7CiAgICAgZWxzZSB7CiAgICAgICAgIFtzZWxmIHJlbGVhc2VdOwogICAg
ICAgICByZXR1cm4gbmlsOwpAQCAtMjY5LDExICsyNjUsMTIgQEAgLSAoV2ViUmVzb3VyY2UgKilt
YWluUmVzb3VyY2UKICAgICBpZiAoIV9wcml2YXRlLT5jYWNoZWRNYWluUmVzb3VyY2UpIHsKICAg
ICAgICAgaWYgKGF1dG8qIGNvcmVBcmNoaXZlID0gW19wcml2YXRlIGNvcmVBcmNoaXZlXSkgewog
ICAgICAgICAgICAgaWYgKGF1dG8qIG1haW5SZXNvdXJjZSA9IGNvcmVBcmNoaXZlLT5tYWluUmVz
b3VyY2UoKSkKLSAgICAgICAgICAgICAgICBfcHJpdmF0ZS0+Y2FjaGVkTWFpblJlc291cmNlID0g
W1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNlOiptYWluUmVzb3VyY2Vd
OworICAgICAgICAgICAgICAgIF9wcml2YXRlLT5jYWNoZWRNYWluUmVzb3VyY2UgPSBhZG9wdE5T
KFtbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0V2l0aENvcmVSZXNvdXJjZToqbWFpblJlc291cmNl
XSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgcmV0dXJuIFtbX3ByaXZhdGUtPmNhY2hl
ZE1haW5SZXNvdXJjZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNhY2hlZE1haW5S
ZXNvdXJjZUNvcHkgPSBfcHJpdmF0ZS0+Y2FjaGVkTWFpblJlc291cmNlOworICAgIHJldHVybiBj
YWNoZWRNYWluUmVzb3VyY2VDb3B5LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TQXJyYXkgKilz
dWJyZXNvdXJjZXMKQEAgLTI4NSwxNiArMjgyLDIwIEBAIC0gKE5TQXJyYXkgKilzdWJyZXNvdXJj
ZXMKICAgICBpZiAoIV9wcml2YXRlLT5jYWNoZWRTdWJyZXNvdXJjZXMpIHsKICAgICAgICAgYXV0
byBjb3JlQXJjaGl2ZSA9IFtfcHJpdmF0ZSBjb3JlQXJjaGl2ZV07CiAgICAgICAgIGlmICghY29y
ZUFyY2hpdmUpCi0gICAgICAgICAgICBfcHJpdmF0ZS0+Y2FjaGVkU3VicmVzb3VyY2VzID0gW1tO
U0FycmF5IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIF9wcml2YXRlLT5jYWNoZWRTdWJyZXNv
dXJjZXMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIF9wcml2YXRlLT5jYWNoZWRTdWJyZXNvdXJjZXMgPSBjcmVhdGVOU0FycmF5
KGNvcmVBcmNoaXZlLT5zdWJyZXNvdXJjZXMoKSwgW10gKGF1dG8mIHN1YnJlc291cmNlKSB7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRX
aXRoQ29yZVJlc291cmNlOnN1YnJlc291cmNlLmdldCgpXSk7Ci0gICAgICAgICAgICB9KS5sZWFr
UmVmKCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KICAgICAvLyBNYWludGFp
biB0aGUgV2ViS2l0IDMgYmVoYXZpb3Igb2YgdGhpcyBBUEksIHdoaWNoIGlzIGRvY3VtZW50ZWQg
YW5kCiAgICAgLy8gcmVsaWVkIHVwb24gYnkgc29tZSBjbGllbnRzLCBvZiByZXR1cm5pbmcgbmls
IGlmIHRoZXJlIGFyZSBubyBzdWJyZXNvdXJjZXMuCi0gICAgcmV0dXJuIFtfcHJpdmF0ZS0+Y2Fj
aGVkU3VicmVzb3VyY2VzIGNvdW50XSA/IFtbX3ByaXZhdGUtPmNhY2hlZFN1YnJlc291cmNlcyBy
ZXRhaW5dIGF1dG9yZWxlYXNlXSA6IG5pbDsKKyAgICBpZiAoIVtfcHJpdmF0ZS0+Y2FjaGVkU3Vi
cmVzb3VyY2VzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8gY2FjaGVk
U3VicmVzb3VyY2VzQ29weSA9IF9wcml2YXRlLT5jYWNoZWRTdWJyZXNvdXJjZXM7CisgICAgcmV0
dXJuIGNhY2hlZFN1YnJlc291cmNlc0NvcHkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNBcnJh
eSAqKXN1YmZyYW1lQXJjaGl2ZXMKQEAgLTMwNiwxNSArMzA3LDE2IEBAIC0gKE5TQXJyYXkgKilz
dWJmcmFtZUFyY2hpdmVzCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y2FjaGVkU3ViZnJhbWVBcmNoaXZl
cykgewogICAgICAgICBhdXRvKiBjb3JlQXJjaGl2ZSA9IFtfcHJpdmF0ZSBjb3JlQXJjaGl2ZV07
CiAgICAgICAgIGlmICghY29yZUFyY2hpdmUpCi0gICAgICAgICAgICBfcHJpdmF0ZS0+Y2FjaGVk
U3ViZnJhbWVBcmNoaXZlcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdF07CisgICAgICAgICAgICBf
cHJpdmF0ZS0+Y2FjaGVkU3ViZnJhbWVBcmNoaXZlcyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9j
XSBpbml0XSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgX3ByaXZhdGUtPmNhY2hlZFN1
YmZyYW1lQXJjaGl2ZXMgPSBjcmVhdGVOU0FycmF5KGNvcmVBcmNoaXZlLT5zdWJmcmFtZUFyY2hp
dmVzKCksIFtdIChhdXRvJiBhcmNoaXZlKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0
TlMoW1tXZWJBcmNoaXZlIGFsbG9jXSBfaW5pdFdpdGhDb3JlTGVnYWN5V2ViQXJjaGl2ZTpzdGF0
aWNfY2FzdDxMZWdhY3lXZWJBcmNoaXZlKj4oYXJjaGl2ZS5wdHIoKSldKTsKLSAgICAgICAgICAg
IH0pLmxlYWtSZWYoKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQogICAgIAot
ICAgIHJldHVybiBbW19wcml2YXRlLT5jYWNoZWRTdWJmcmFtZUFyY2hpdmVzIHJldGFpbl0gYXV0
b3JlbGVhc2VdOworICAgIGF1dG8gY2FjaGVkU3ViZnJhbWVBcmNoaXZlc0NvcHkgPSBfcHJpdmF0
ZS0+Y2FjaGVkU3ViZnJhbWVBcmNoaXZlczsKKyAgICByZXR1cm4gY2FjaGVkU3ViZnJhbWVBcmNo
aXZlc0NvcHkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNEYXRhICopZGF0YQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDFiNTk3
MTY0Njg1M2E2ZDE2YmE2Mjg2ZTBjYTNmYjNmYmRmMTNmNDkuLjY0OGE0NDBiZTI0M2FhOTdiMDlm
NzIzZDM2NDcwZjJhODhjYjk1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTMxMiwxMyArMzEyLDEyIEBAIC0gKERPTURvY3Vt
ZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGhBcmNoaXZlOihXZWJBcmNoaXZlICop
YXJjaGl2ZQogICAgIGlmIChtYWluUmVzb3VyY2UpIHsKICAgICAgICAgTlNTdHJpbmcgKk1JTUVU
eXBlID0gW21haW5SZXNvdXJjZSBNSU1FVHlwZV07CiAgICAgICAgIGlmIChbV2ViVmlldyBjYW5T
aG93TUlNRVR5cGVBc0hUTUw6TUlNRVR5cGVdKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqbWFy
a3VwU3RyaW5nID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOlttYWluUmVzb3VyY2Ug
ZGF0YV0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgICAgICAgICAgYXV0byBt
YXJrdXBTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpbbWFp
blJlc291cmNlIGRhdGFdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBzZWVtcyBwb29yIGZvcm0gdG8gZG8gdGhpcyBhcyBhIHNpZGUgZWZm
ZWN0IG9mIGdldHRpbmcgYSBkb2N1bWVudCBmcmFnbWVudAogICAgICAgICAgICAgdG9Qcml2YXRl
KF9wcml2YXRlKS0+bG9hZGVyLT5hZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCpbYXJjaGl2ZSBfY29y
ZUxlZ2FjeVdlYkFyY2hpdmVdKTsKIAotICAgICAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAq
ZnJhZ21lbnQgPSBbW3NlbGYgd2ViRnJhbWVdIF9kb2N1bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0
cmluZzptYXJrdXBTdHJpbmcgYmFzZVVSTFN0cmluZzpbW21haW5SZXNvdXJjZSBVUkxdIF93ZWJf
b3JpZ2luYWxEYXRhQXNTdHJpbmddXTsKLSAgICAgICAgICAgIFttYXJrdXBTdHJpbmcgcmVsZWFz
ZV07CisgICAgICAgICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtbc2VsZiB3
ZWJGcmFtZV0gX2RvY3VtZW50RnJhZ21lbnRXaXRoTWFya3VwU3RyaW5nOm1hcmt1cFN0cmluZy5n
ZXQoKSBiYXNlVVJMU3RyaW5nOltbbWFpblJlc291cmNlIFVSTF0gX3dlYl9vcmlnaW5hbERhdGFB
c1N0cmluZ11dOwogICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwogICAgICAgICB9IGVsc2Ug
aWYgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShN
SU1FVHlwZSkpIHsKICAgICAgICAgICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRGcmFnbWVudFdp
dGhJbWFnZVJlc291cmNlOm1haW5SZXNvdXJjZV07CkBAIC0zODUsOSArMzg0LDggQEAgLSAodm9p
ZClfbWFrZVJlcHJlc2VudGF0aW9uCiAKICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBzb3VyY2Ug
d2FzIGFscmVhZHkgYm91bmQ/CiAgICAgaWYgKCFbW3NlbGYgcmVwcmVzZW50YXRpb25dIGlzS2lu
ZE9mQ2xhc3M6cmVwQ2xhc3NdKSB7Ci0gICAgICAgIGlkIG5ld1JlcCA9IHJlcENsYXNzICE9IG5p
bCA/IFsoTlNPYmplY3QgKilbcmVwQ2xhc3MgYWxsb2NdIGluaXRdIDogbmlsOwotICAgICAgICBb
c2VsZiBfc2V0UmVwcmVzZW50YXRpb246KGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilu
ZXdSZXBdOwotICAgICAgICBbbmV3UmVwIHJlbGVhc2VdOworICAgICAgICBSZXRhaW5QdHI8aWQ+
IG5ld1JlcCA9IHJlcENsYXNzICE9IG5pbCA/IGFkb3B0TlMoWyhOU09iamVjdCAqKVtyZXBDbGFz
cyBhbGxvY10gaW5pdF0pIDogbmlsOworICAgICAgICBbc2VsZiBfc2V0UmVwcmVzZW50YXRpb246
KGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPiluZXdSZXAuZ2V0KCldOwogICAgIH0KIAog
ICAgIGlkPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+IHJlcHJlc2VudGF0aW9uID0gdG9Qcml2
YXRlKF9wcml2YXRlKS0+cmVwcmVzZW50YXRpb24uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBkZTI0OTY4OGFiNjhmNzk4OTAyMDg0Nzhm
NmFjNDM0ZmVjYTA5ODI1Li40ZTEzNDYyODM2MGU4MjZhYTg4NTc1NTUyYmZhMTEwNDdmYTBjMTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTE4
OSwxNSArMTg5LDExIEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJGcmFtZVByaXZhdGUKIAogLSAodm9p
ZClkZWFsbG9jCiB7Ci0gICAgW3dlYkZyYW1lVmlldyByZWxlYXNlXTsKLQogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIAogLSAodm9pZClzZXRXZWJGcmFtZVZpZXc6KFdlYkZyYW1lVmlldyAqKXYK
IHsgCi0gICAgW3YgcmV0YWluXTsKLSAgICBbd2ViRnJhbWVWaWV3IHJlbGVhc2VdOwogICAgIHdl
YkZyYW1lVmlldyA9IHY7CiB9CiAKQEAgLTMwNiw5ICszMDIsOCBAQCArIChSZWY8V2ViQ29yZTo6
RnJhbWU+KV9jcmVhdGVGcmFtZVdpdGhQYWdlOihXZWJDb3JlOjpQYWdlKilwYWdlIGZyYW1lTmFt
ZTooY29ucwogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBraXQocGFnZSk7CiAKLSAgICBXZWJG
cmFtZSAqZnJhbWUgPSBbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFdlYkZyYW1lVmlldzpmcmFtZVZp
ZXcgd2ViVmlldzp3ZWJWaWV3XTsKLSAgICBhdXRvIGNvcmVGcmFtZSA9IFdlYkNvcmU6OkZyYW1l
OjpjcmVhdGUocGFnZSwgb3duZXJFbGVtZW50LCBtYWtlVW5pcXVlUmVmPFdlYkZyYW1lTG9hZGVy
Q2xpZW50PihmcmFtZSkpOwotICAgIFtmcmFtZSByZWxlYXNlXTsKKyAgICBSZXRhaW5QdHI8V2Vi
RnJhbWU+IGZyYW1lID0gYWRvcHROUyhbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFdlYkZyYW1lVmll
dzpmcmFtZVZpZXcgd2ViVmlldzp3ZWJWaWV3XSk7CisgICAgYXV0byBjb3JlRnJhbWUgPSBXZWJD
b3JlOjpGcmFtZTo6Y3JlYXRlKHBhZ2UsIG93bmVyRWxlbWVudCwgbWFrZVVuaXF1ZVJlZjxXZWJG
cmFtZUxvYWRlckNsaWVudD4oZnJhbWUuZ2V0KCkpKTsKICAgICBmcmFtZS0+X3ByaXZhdGUtPmNv
cmVGcmFtZSA9IGNvcmVGcmFtZS5wdHIoKTsKIAogICAgIGNvcmVGcmFtZS5nZXQoKS50cmVlKCku
c2V0TmFtZShuYW1lKTsKQEAgLTMyOCwxMCArMzIzLDkgQEAgKyAodm9pZClfY3JlYXRlTWFpbkZy
YW1lV2l0aFBhZ2U6KFdlYkNvcmU6OlBhZ2UqKXBhZ2UgZnJhbWVOYW1lOihjb25zdCBTdHJpbmcm
KW4KIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0ga2l0KHBhZ2UpOwogCi0gICAgV2ViRnJhbWUg
KmZyYW1lID0gW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhXZWJGcmFtZVZpZXc6ZnJhbWVWaWV3IHdl
YlZpZXc6d2ViVmlld107CisgICAgUmV0YWluUHRyPFdlYkZyYW1lPiBmcmFtZSA9IGFkb3B0TlMo
W1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhXZWJGcmFtZVZpZXc6ZnJhbWVWaWV3IHdlYlZpZXc6d2Vi
Vmlld10pOwogICAgIGZyYW1lLT5fcHJpdmF0ZS0+Y29yZUZyYW1lID0gJnBhZ2UtPm1haW5GcmFt
ZSgpOwotICAgIHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Jj4ocGFnZS0+bWFpbkZy
YW1lKCkubG9hZGVyKCkuY2xpZW50KCkpLnNldFdlYkZyYW1lKCpmcmFtZSk7Ci0gICAgW2ZyYW1l
IHJlbGVhc2VdOworICAgIHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Jj4ocGFnZS0+
bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkpLnNldFdlYkZyYW1lKCpmcmFtZS5nZXQoKSk7
CiAKICAgICBwYWdlLT5tYWluRnJhbWUoKS50cmVlKCkuc2V0TmFtZShuYW1lKTsKICAgICBwYWdl
LT5tYWluRnJhbWUoKS5pbml0KCk7CkBAIC0zNTYsMTIgKzM1MCwxMSBAQCArICh2b2lkKV9jcmVh
dGVNYWluRnJhbWVXaXRoU2ltcGxlSFRNTERvY3VtZW50V2l0aFBhZ2U6KFdlYkNvcmU6OlBhZ2Uq
KXBhZ2UgZnJhbQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBraXQocGFnZSk7CiAgICAgCi0g
ICAgV2ViRnJhbWUgKmZyYW1lID0gW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhXZWJGcmFtZVZpZXc6
ZnJhbWVWaWV3IHdlYlZpZXc6d2ViVmlld107CisgICAgUmV0YWluUHRyPFdlYkZyYW1lPiBmcmFt
ZSA9IGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhXZWJGcmFtZVZpZXc6ZnJhbWVWaWV3
IHdlYlZpZXc6d2ViVmlld10pOwogICAgIGZyYW1lLT5fcHJpdmF0ZS0+Y29yZUZyYW1lID0gJnBh
Z2UtPm1haW5GcmFtZSgpOwotICAgIHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Jj4o
cGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkpLnNldFdlYkZyYW1lKCpmcmFtZSk7
Ci0gICAgW2ZyYW1lIHJlbGVhc2VdOworICAgIHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Jj4ocGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkpLnNldFdlYkZyYW1lKCpm
cmFtZS5nZXQoKSk7CiAKLSAgICBmcmFtZS0+X3ByaXZhdGUtPmNvcmVGcmFtZS0+aW5pdFdpdGhT
aW1wbGVIVE1MRG9jdW1lbnQoc3R5bGUsIGNyZWF0ZVVuaXF1ZVdlYkRhdGFVUkwoKSk7CisgICAg
ZnJhbWUuZ2V0KCktPl9wcml2YXRlLT5jb3JlRnJhbWUtPmluaXRXaXRoU2ltcGxlSFRNTERvY3Vt
ZW50KHN0eWxlLCBjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCkpOwogfQogI2VuZGlmCiAKQEAgLTE3
MzEsNyArMTcyNCw3IEBAIC0gKHZvaWQpZ2V0RGljdGF0aW9uUmVzdWx0UmFuZ2VzOihOU0FycmF5
ICoqKW91dFJhbmdlcyBhbmRNZXRhZGF0YXM6KE5TQXJyYXkgKiopCiAgICAgYXV0byYgc2VsZWN0
aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGF1dG8gcm9vdCA9IHNl
bGVjdGlvbi5pc05vbmUoKSA/IGZyYW1lLT5kb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNldCgpIDog
c2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIAotICAgIERPTVJhbmdlICpwcmV2aW91
c0RPTVJhbmdlID0gbmlsOworICAgIFJldGFpblB0cjxET01SYW5nZT4gcHJldmlvdXNET01SYW5n
ZTsKICAgICBpZCBwcmV2aW91c01ldGFkYXRhID0gbmlsOwogCiAgICAgZm9yIChXZWJDb3JlOjpO
b2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IFdlYkNvcmU6Ok5vZGVUcmF2ZXJzYWw6Om5l
eHQoKm5vZGUpKSB7CkBAIC0xNzU4LDEzICsxNzUxLDExIEBAIC0gKHZvaWQpZ2V0RGljdGF0aW9u
UmVzdWx0UmFuZ2VzOihOU0FycmF5ICoqKW91dFJhbmdlcyBhbmRNZXRhZGF0YXM6KE5TQXJyYXkg
KiopCiAgICAgICAgICAgICAgICAgLy8gSXQgaXMgcG9zc2libGUgZm9yIGEgRG9jdW1lbnRNYXJr
ZXIgdG8gYmUgc3BsaXQgYnkgZWRpdGluZy4gQWRqYWNlbnQgbWFya2VycyB3aXRoIHRoZQogICAg
ICAgICAgICAgICAgIC8vIHRoZSBzYW1lIG1ldGFkYXRhIGFyZSBmb3IgdGhlIHNhbWUgcmVzdWx0
LiBTbyBjb21iaW5lIHRoZWlyIHJhbmdlcy4KICAgICAgICAgICAgICAgICBBU1NFUlQocHJldmlv
dXNET01SYW5nZSA9PSBbcmFuZ2VzIGxhc3RPYmplY3RdKTsKLSAgICAgICAgICAgICAgICBbcHJl
dmlvdXNET01SYW5nZSByZXRhaW5dOwogICAgICAgICAgICAgICAgIFtyYW5nZXMgcmVtb3ZlTGFz
dE9iamVjdF07CiAgICAgICAgICAgICAgICAgRE9NTm9kZSAqc3RhcnRDb250YWluZXIgPSBbZG9t
UmFuZ2Ugc3RhcnRDb250YWluZXJdOwogICAgICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9
IFtkb21SYW5nZSBzdGFydE9mZnNldF07CiAgICAgICAgICAgICAgICAgW3ByZXZpb3VzRE9NUmFu
Z2Ugc2V0RW5kOnN0YXJ0Q29udGFpbmVyIG9mZnNldDpzdGFydE9mZnNldF07Ci0gICAgICAgICAg
ICAgICAgW3JhbmdlcyBhZGRPYmplY3Q6cHJldmlvdXNET01SYW5nZV07Ci0gICAgICAgICAgICAg
ICAgW3ByZXZpb3VzRE9NUmFuZ2UgcmVsZWFzZV07CisgICAgICAgICAgICAgICAgW3JhbmdlcyBh
ZGRPYmplY3Q6cHJldmlvdXNET01SYW5nZS5nZXQoKV07CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkBAIC0yMzkwLDcgKzIzODEsNyBAQCAtIChOU1N0cmluZyAqKW5hbWUKIAogLSAo
V2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3CiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT53ZWJGcmFt
ZVZpZXc7CisgICAgcmV0dXJuIF9wcml2YXRlLT53ZWJGcmFtZVZpZXcuZ2V0KCk7CiB9CiAKIC0g
KFdlYlZpZXcgKil3ZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWVJbnRlcm5hbC5oCmluZGV4IDMwYzQ4ZDE1ZTlmNjE3OWE5OTVkMTlhOTNlN2Ex
YjIyZDFhMzAzMTAuLjY5YTgxMmRhZjI0YzJmNmM3NjQ4OGU4ZDM4ZjMxZjAwNmUzZTI3YWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5h
bC5oCkBAIC04Nyw3ICs4Nyw3IEBAIFdlYlZpZXcgKmdldFdlYlZpZXcoV2ViRnJhbWUgKndlYkZy
YW1lKTsKIEBpbnRlcmZhY2UgV2ViRnJhbWVQcml2YXRlIDogTlNPYmplY3QgewogQHB1YmxpYwog
ICAgIE5ha2VkUHRyPFdlYkNvcmU6OkZyYW1lPiBjb3JlRnJhbWU7Ci0gICAgV2ViRnJhbWVWaWV3
ICp3ZWJGcmFtZVZpZXc7CisgICAgUmV0YWluUHRyPFdlYkZyYW1lVmlldz4gd2ViRnJhbWVWaWV3
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTY3JpcHREZWJ1Z2dlcj4gc2NyaXB0RGVidWdnZXI7
CiAgICAgaWQgaW50ZXJuYWxMb2FkRGVsZWdhdGU7CiAgICAgQk9PTCBzaG91bGRDcmVhdGVSZW5k
ZXJlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3
Lm1tCmluZGV4IDBmYjA1NTA3MWYwZGQ0Y2FlZDNmNjExZGU0NDdiZjczNDYwMWE0ZjYuLmI2MTZm
YTdiZjY0ZTRkOTc5ZmJkMDY4MWFiYjNhZjAzOTI2M2E4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCkBAIC0xMTAsNyArMTEwLDcgQEAg
QGVuZAogQGludGVyZmFjZSBXZWJGcmFtZVZpZXdQcml2YXRlIDogTlNPYmplY3QgewogQHB1Ymxp
YwogICAgIFdlYkZyYW1lICp3ZWJGcmFtZTsKLSAgICBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcg
KmZyYW1lU2Nyb2xsVmlldzsKKyAgICBSZXRhaW5QdHI8V2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3
PiBmcmFtZVNjcm9sbFZpZXc7CiAgICAgQk9PTCBpbmNsdWRlZEluV2ViS2l0U3RhdGlzdGljczsK
IH0KIEBlbmQKQEAgLTExOSw3ICsxMTksNiBAQCBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWVWaWV3
UHJpdmF0ZQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbZnJhbWVTY3JvbGxWaWV3IHJlbGVh
c2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMjM3LDcgKzIzNiw3IEBAIC0gKFdl
YkR5bmFtaWNTY3JvbGxCYXJzVmlldyAqKV9zY3JvbGxWaWV3CiAgICAgLy8gYWZ0ZXIgX3ByaXZh
dGUgaGFzIGJlZW4gbmlsbGVkIG91dC4KICAgICBpZiAoX3ByaXZhdGUgPT0gbmlsKQogICAgICAg
ICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3OworICAg
IHJldHVybiBfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3LmdldCgpOwogfQogCiAtIChmbG9hdClf
dmVydGljYWxQYWdlU2Nyb2xsRGlzdGFuY2UKQEAgLTMxNiw3ICszMTUsNyBAQCAtICh2b2lkKV9p
bnN0YWxsCiAKICAgICBhdXRvKiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKIAotICAgIHZpZXctPnNl
dFBsYXRmb3JtV2lkZ2V0KF9wcml2YXRlLT5mcmFtZVNjcm9sbFZpZXcpOworICAgIHZpZXctPnNl
dFBsYXRmb3JtV2lkZ2V0KF9wcml2YXRlLT5mcmFtZVNjcm9sbFZpZXcuZ2V0KCkpOwogCiAgICAg
Ly8gRklYTUU6IEZyYW1lIHRyaWVzIHRvIGRvIHRoaXMgdG9vLiBJcyB0aGlzIGNvZGUgbmVlZGVk
PwogICAgIGlmIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQqIG93bmVyID0gZnJhbWUtPm93bmVyUmVu
ZGVyZXIoKSkgewpAQCAtMzczLDcgKzM3Miw3IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVj
dClmcmFtZQogCiAgICAgX3ByaXZhdGUgPSBbW1dlYkZyYW1lVmlld1ByaXZhdGUgYWxsb2NdIGlu
aXRdOwogCi0gICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpzY3JvbGxWaWV3ID0gW1tXZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLjBm
LCAwLjBmLCBmcmFtZS5zaXplLndpZHRoLCBmcmFtZS5zaXplLmhlaWdodCldOworICAgIGF1dG8g
c2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLjBmLCAwLjBmLCBmcmFtZS5zaXplLndpZHRoLCBmcmFt
ZS5zaXplLmhlaWdodCldKTsKICAgICBfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3ID0gc2Nyb2xs
VmlldzsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtzY3JvbGxWaWV3IHNldERlbGVn
YXRlOnNlbGZdOwpAQCAtMzg1LDEyICszODQsMTIgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNS
ZWN0KWZyYW1lCiAgICAgW3Njcm9sbFZpZXcgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGVyOk5PXTsK
ICAgICBbc2Nyb2xsVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8
IE5TVmlld0hlaWdodFNpemFibGVdOwogICAgIFtzY3JvbGxWaWV3IHNldExpbmVTY3JvbGw6V2Vi
Q29yZTo6U2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpXTsKLSAgICBbc2VsZiBhZGRTdWJ2
aWV3OnNjcm9sbFZpZXddOworICAgIFtzZWxmIGFkZFN1YnZpZXc6c2Nyb2xsVmlldy5nZXQoKV07
CiAKICAgICAvLyBEb24ndCBjYWxsIG91ciBvdmVycmlkZGVuIHZlcnNpb24gb2Ygc2V0TmV4dEtl
eVZpZXcgaGVyZTsgd2UgbmVlZCB0byBtYWtlIHRoZSBzdGFuZGFyZCBOU1ZpZXcKICAgICAvLyBs
aW5rIGJldHdlZW4gdXMgYW5kIG91ciBzdWJ2aWV3IHNvIHRoYXQgcHJldmlvdXNLZXlWaWV3IGFu
ZCBwcmV2aW91c1ZhbGlkS2V5VmlldyB3b3JrIGFzIGV4cGVjdGVkLgogICAgIC8vIFRoaXMgd29y
a3MgdG9nZXRoZXIgd2l0aCBvdXIgYmVjb21lRmlyc3RSZXNwb25kZXIgYW5kIHNldE5leHRLZXlW
aWV3IG92ZXJyaWRlcy4KLSAgICBbc3VwZXIgc2V0TmV4dEtleVZpZXc6c2Nyb2xsVmlld107Cisg
ICAgW3N1cGVyIHNldE5leHRLZXlWaWV3OnNjcm9sbFZpZXcuZ2V0KCldOwogICAgIAogICAgIHJl
dHVybiBzZWxmOwogfQpAQCAtMTIzNCwzMSArMTIzMywyOSBAQCAtICh2b2lkKV9zZXRDdXN0b21T
Y3JvbGxWaWV3Q2xhc3M6KENsYXNzKWN1c3RvbUNsYXNzCiAgICAgaWYgKCFbY3VzdG9tQ2xhc3Mg
aXNTdWJjbGFzc09mQ2xhc3M6W1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBjbGFzc11dKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKm9sZFNjcm9sbFZp
ZXcgPSBfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3OyAvLyBhbHJlYWR5IHJldGFpbmVkCi0gICAg
TlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+ICpkb2N1bWVudFZpZXcgPSBbW3NlbGYgZG9jdW1lbnRW
aWV3XSByZXRhaW5dOworICAgIGF1dG8gb2xkU2Nyb2xsVmlldyA9IF9wcml2YXRlLT5mcmFtZVNj
cm9sbFZpZXc7IC8vIGFscmVhZHkgcmV0YWluZWQKKyAgICBhdXRvIGRvY3VtZW50VmlldyA9IHJl
dGFpblB0cihbc2VsZiBkb2N1bWVudFZpZXddKTsKIAotICAgIFdlYkR5bmFtaWNTY3JvbGxCYXJz
VmlldyAqc2Nyb2xsVmlldyAgPSBbW2N1c3RvbUNsYXNzIGFsbG9jXSBpbml0V2l0aEZyYW1lOltv
bGRTY3JvbGxWaWV3IGZyYW1lXV07CisgICAgUmV0YWluUHRyPFdlYkR5bmFtaWNTY3JvbGxCYXJz
Vmlldz4gc2Nyb2xsVmlldyAgPSBhZG9wdE5TKFtbY3VzdG9tQ2xhc3MgYWxsb2NdIGluaXRXaXRo
RnJhbWU6W29sZFNjcm9sbFZpZXcgZnJhbWVdXSk7CiAgICAgW3Njcm9sbFZpZXcgc2V0Q29udGVu
dFZpZXc6W1tbV2ViQ2xpcFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6W3Njcm9sbFZpZXcgYm91
bmRzXV0gYXV0b3JlbGVhc2VdXTsKICAgICBbc2Nyb2xsVmlldyBzZXREcmF3c0JhY2tncm91bmQ6
W29sZFNjcm9sbFZpZXcgZHJhd3NCYWNrZ3JvdW5kXV07CiAgICAgW3Njcm9sbFZpZXcgc2V0SGFz
VmVydGljYWxTY3JvbGxlcjpbb2xkU2Nyb2xsVmlldyBoYXNWZXJ0aWNhbFNjcm9sbGVyXV07CiAg
ICAgW3Njcm9sbFZpZXcgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGVyOltvbGRTY3JvbGxWaWV3IGhh
c0hvcml6b250YWxTY3JvbGxlcl1dOwogICAgIFtzY3JvbGxWaWV3IHNldEF1dG9yZXNpemluZ01h
c2s6W29sZFNjcm9sbFZpZXcgYXV0b3Jlc2l6aW5nTWFza11dOwogICAgIFtzY3JvbGxWaWV3IHNl
dExpbmVTY3JvbGw6W29sZFNjcm9sbFZpZXcgbGluZVNjcm9sbF1dOwotICAgIFtzZWxmIGFkZFN1
YnZpZXc6c2Nyb2xsVmlld107CisgICAgW3NlbGYgYWRkU3VidmlldzpzY3JvbGxWaWV3LmdldCgp
XTsKIAogICAgIC8vIGRvbid0IGNhbGwgb3VyIG92ZXJyaWRkZW4gdmVyc2lvbiBoZXJlOyB3ZSBu
ZWVkIHRvIG1ha2UgdGhlIHN0YW5kYXJkIE5TVmlldyBsaW5rIGJldHdlZW4gdXMKICAgICAvLyBh
bmQgb3VyIHN1YnZpZXcgc28gdGhhdCBwcmV2aW91c0tleVZpZXcgYW5kIHByZXZpb3VzVmFsaWRL
ZXlWaWV3IHdvcmsgYXMgZXhwZWN0ZWQuIFRoaXMgd29ya3MKICAgICAvLyB0b2dldGhlciB3aXRo
IG91ciBiZWNvbWVGaXJzdFJlc3BvbmRlciBhbmQgc2V0TmV4dEtleVZpZXcgb3ZlcnJpZGVzLgot
ICAgIFtzdXBlciBzZXROZXh0S2V5VmlldzpzY3JvbGxWaWV3XTsKKyAgICBbc3VwZXIgc2V0TmV4
dEtleVZpZXc6c2Nyb2xsVmlldy5nZXQoKV07CiAKLSAgICBfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxW
aWV3ID0gc2Nyb2xsVmlldzsKKyAgICBfcHJpdmF0ZS0+ZnJhbWVTY3JvbGxWaWV3ID0gV1RGTW92
ZShzY3JvbGxWaWV3KTsKIAotICAgIFtzZWxmIF9zZXREb2N1bWVudFZpZXc6ZG9jdW1lbnRWaWV3
XTsKKyAgICBbc2VsZiBfc2V0RG9jdW1lbnRWaWV3OmRvY3VtZW50Vmlldy5nZXQoKV07CiAgICAg
W3NlbGYgX2luc3RhbGxdOwogCiAgICAgW29sZFNjcm9sbFZpZXcgcmVtb3ZlRnJvbVN1cGVydmll
d107Ci0gICAgW29sZFNjcm9sbFZpZXcgcmVsZWFzZV07Ci0gICAgW2RvY3VtZW50VmlldyByZWxl
YXNlXTsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xs
ZXIubW0KaW5kZXggYjg0NDRmNzMxODViNDJjMzUzNDI5ODI4NWUzMjdhYjM2OTkwM2M5Mi4uODZm
MjBkMmJmODgyODQ0Yzk1ZmJkYWYwOGJjZWE5ZTg0MjQ5MmIwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVy
Lm1tCkBAIC04MSw5ICs4MSw4IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJGdWxsU2NyZWVuQ29udHJv
bGxlcgogLSAoaWQpaW5pdAogewogICAgIC8vIERvIG5vdCBkZWZlciB3aW5kb3cgY3JlYXRpb24s
IHRvIG1ha2Ugc3VyZSAtd2luZG93TnVtYmVyIGlzIGNyZWF0ZWQgKG5lZWRlZCBieSBXZWJXaW5k
b3dTY2FsZUFuaW1hdGlvbikuCi0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNaZXJvUmVjdCBzdHlsZU1h
c2s6TlNXaW5kb3dTdHlsZU1hc2tDbG9zYWJsZSBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVy
ZWQgZGVmZXI6Tk9dOwotICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhXaW5kb3c6d2luZG93XTsK
LSAgICBbd2luZG93IHJlbGVhc2VdOworICAgIGF1dG8gd2luZG93ID0gYWRvcHROUyhbW1dlYkNv
cmVGdWxsU2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TWmVyb1JlY3Qg
c3R5bGVNYXNrOk5TV2luZG93U3R5bGVNYXNrQ2xvc2FibGUgYmFja2luZzpOU0JhY2tpbmdTdG9y
ZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CisgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aFdpbmRvdzp3
aW5kb3cuZ2V0KCldOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBb
c2VsZiB3aW5kb3dEaWRMb2FkXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDk2MjBlODZmYjBhNzIwMTQwMWMyY2FkNTUxZGUyY2ZiODg4
OWJlZGIuLjY2ZmI4MTY4NjdjMTUxOTk1ZGJmNTVkMTczNTdiMGU5ZTIxMDE5YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMTkxMSwx
MyArMTkxMSwxMCBAQCAtICh2b2lkKV91cGRhdGVNb3VzZW92ZXJXaXRoRXZlbnQ6KE5TRXZlbnQg
KilldmVudAogICAgIE5TVmlldyAqaGl0VmlldyA9IFtjb250ZW50VmlldyBoaXRUZXN0OmxvY2F0
aW9uRm9ySGl0VGVzdF07CiAgICAgZm9yY2VXZWJIVE1MVmlld0hpdFRlc3QgPSBOTzsKICAgICAK
LSAgICBXZWJIVE1MVmlldyAqdmlldyA9IG5pbDsKKyAgICBSZXRhaW5QdHI8V2ViSFRNTFZpZXc+
IHZpZXc7CiAgICAgaWYgKFtoaXRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNz
XV0pCiAgICAgICAgIHZpZXcgPSAoV2ViSFRNTFZpZXcgKiloaXRWaWV3OyAgICAKIAotICAgIGlm
ICh2aWV3KQotICAgICAgICBbdmlldyByZXRhaW5dOwotCiAgICAgaWYgKGxhc3RIaXRWaWV3ICE9
IHZpZXcgJiYgbGFzdEhpdFZpZXcgJiYgW2xhc3RIaXRWaWV3IF9mcmFtZV0pIHsKICAgICAgICAg
Ly8gSWYgd2UgYXJlIG1vdmluZyBvdXQgb2YgYSB2aWV3IChvciBmcmFtZSksIGxldCdzIHByZXRl
bmQgdGhlIG1vdXNlIG1vdmVkCiAgICAgICAgIC8vIGFsbCB0aGUgd2F5IG91dCBvZiB0aGF0IHZp
ZXcuIEJ1dCB3ZSBoYXZlIHRvIGFjY291bnQgZm9yIHNjcm9sbGluZywgYmVjYXVzZQpAQCAtMTkz
OCw3ICsxOTM1LDcgQEAgLSAodm9pZClfdXBkYXRlTW91c2VvdmVyV2l0aEV2ZW50OihOU0V2ZW50
ICopZXZlbnQKICAgICAgICAgICAgIGxhc3RIaXRDb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLm1v
dXNlTW92ZWQoZXZlbnQsIFtbc2VsZiBfd2ViVmlld10gX3ByZXNzdXJlRXZlbnRdKTsKICAgICB9
CiAKLSAgICBsYXN0SGl0VmlldyA9IHZpZXc7CisgICAgbGFzdEhpdFZpZXcgPSB2aWV3LmdldCgp
OwogCiAgICAgaWYgKHZpZXcpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUo
W3ZpZXcgX2ZyYW1lXSkpIHsKQEAgLTE5NTUsOCArMTk1Miw2IEBAIC0gKHZvaWQpX3VwZGF0ZU1v
dXNlb3ZlcldpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50CiAgICAgICAgICAgICAgICAgY29yZUZy
YW1lLT5ldmVudEhhbmRsZXIoKS5wYXNzTW91c2VNb3ZlZEV2ZW50VG9TY3JvbGxiYXJzKGV2ZW50
LCBbW3NlbGYgX3dlYlZpZXddIF9wcmVzc3VyZUV2ZW50XSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLQotICAgICAgICBbdmlldyByZWxlYXNlXTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTmF2aWdhdGlvbkRhdGEubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk5hdmlnYXRpb25EYXRhLm1tCmluZGV4
IDA2ZTRhNjAzMDE2OGFhYzI0NTY0MDAxN2QzOTg2OTc4ZTIzZjEyN2EuLjYzOGMzYTVlNGY3OWMy
MTI5MDg1ZjMwM2NlZGVmZmQ4ZmNmNDA2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViTmF2aWdhdGlvbkRhdGEubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJOYXZpZ2F0aW9uRGF0YS5tbQpAQCAtMjQsMTYgKzI0LDE3IEBA
CiAgKi8KIAogI2ltcG9ydCAiV2ViTmF2aWdhdGlvbkRhdGEuaCIKKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KIAogQGludGVyZmFjZSBXZWJOYXZpZ2F0aW9uRGF0YVByaXZhdGUgOiBOU09iamVj
dAogewogQHB1YmxpYwotICAgIE5TU3RyaW5nICp1cmw7Ci0gICAgTlNTdHJpbmcgKnRpdGxlOwot
ICAgIE5TVVJMUmVxdWVzdCAqb3JpZ2luYWxSZXF1ZXN0OwotICAgIE5TVVJMUmVzcG9uc2UgKnJl
c3BvbnNlOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gdXJsOworICAgIFJldGFpblB0cjxOU1N0
cmluZz4gdGl0bGU7CisgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gb3JpZ2luYWxSZXF1ZXN0
OworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZTsKICAgICBCT09MIGhhc1N1
YnN0aXR1dGVEYXRhOwotICAgIE5TU3RyaW5nICpjbGllbnRSZWRpcmVjdFNvdXJjZTsKKyAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IGNsaWVudFJlZGlyZWN0U291cmNlOwogfQogCiBAZW5kCkBAIC00
MiwxMiArNDMsNiBAQCBAaW1wbGVtZW50YXRpb24gV2ViTmF2aWdhdGlvbkRhdGFQcml2YXRlCiAK
IC0gKHZvaWQpZGVhbGxvYwogewotICAgIFt1cmwgcmVsZWFzZV07Ci0gICAgW3RpdGxlIHJlbGVh
c2VdOwotICAgIFtvcmlnaW5hbFJlcXVlc3QgcmVsZWFzZV07Ci0gICAgW3Jlc3BvbnNlIHJlbGVh
c2VdOwotICAgIFtjbGllbnRSZWRpcmVjdFNvdXJjZSByZWxlYXNlXTsKLQogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIApAQCAtNjIsMzQgKzU3LDM0IEBAIC0gKGlkKWluaXRXaXRoVVJMU3RyaW5n
OihOU1N0cmluZyAqKXVybCB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSBvcmlnaW5hbFJlcXVlc3Q6
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgX3ByaXZhdGUgPSBbW1dlYk5hdmlnYXRpb25EYXRh
UHJpdmF0ZSBhbGxvY10gaW5pdF07CiAgICAgCi0gICAgX3ByaXZhdGUtPnVybCA9IFt1cmwgcmV0
YWluXTsKLSAgICBfcHJpdmF0ZS0+dGl0bGUgPSBbdGl0bGUgcmV0YWluXTsKLSAgICBfcHJpdmF0
ZS0+b3JpZ2luYWxSZXF1ZXN0ID0gW3JlcXVlc3QgcmV0YWluXTsKLSAgICBfcHJpdmF0ZS0+cmVz
cG9uc2UgPSBbcmVzcG9uc2UgcmV0YWluXTsKKyAgICBfcHJpdmF0ZS0+dXJsID0gdXJsOworICAg
IF9wcml2YXRlLT50aXRsZSA9IHRpdGxlOworICAgIF9wcml2YXRlLT5vcmlnaW5hbFJlcXVlc3Qg
PSByZXF1ZXN0OworICAgIF9wcml2YXRlLT5yZXNwb25zZSA9IHJlc3BvbnNlOwogICAgIF9wcml2
YXRlLT5oYXNTdWJzdGl0dXRlRGF0YSA9IGhhc1N1YnN0aXR1dGVEYXRhOwotICAgIF9wcml2YXRl
LT5jbGllbnRSZWRpcmVjdFNvdXJjZSA9IFtyZWRpcmVjdFNvdXJjZSByZXRhaW5dOworICAgIF9w
cml2YXRlLT5jbGllbnRSZWRpcmVjdFNvdXJjZSA9IHJlZGlyZWN0U291cmNlOwogICAgIAogICAg
IHJldHVybiBzZWxmOwogfQogCiAtIChOU1N0cmluZyAqKXVybAogewotICAgIHJldHVybiBfcHJp
dmF0ZS0+dXJsOworICAgIHJldHVybiBfcHJpdmF0ZS0+dXJsLmdldCgpOwogfQogCiAtIChOU1N0
cmluZyAqKXRpdGxlCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT50aXRsZTsKKyAgICByZXR1cm4g
X3ByaXZhdGUtPnRpdGxlLmdldCgpOwogfQogCiAtIChOU1VSTFJlcXVlc3QgKilvcmlnaW5hbFJl
cXVlc3QKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPm9yaWdpbmFsUmVxdWVzdDsKKyAgICByZXR1
cm4gX3ByaXZhdGUtPm9yaWdpbmFsUmVxdWVzdC5nZXQoKTsKIH0KIAogLSAoTlNVUkxSZXNwb25z
ZSAqKXJlc3BvbnNlCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5yZXNwb25zZTsKKyAgICByZXR1
cm4gX3ByaXZhdGUtPnJlc3BvbnNlLmdldCgpOwogfQogCiAtIChCT09MKWhhc1N1YnN0aXR1dGVE
YXRhCkBAIC05OSw3ICs5NCw3IEBAIC0gKEJPT0wpaGFzU3Vic3RpdHV0ZURhdGEKIAogLSAoTlNT
dHJpbmcgKiljbGllbnRSZWRpcmVjdFNvdXJjZQogewotICAgIHJldHVybiBfcHJpdmF0ZS0+Y2xp
ZW50UmVkaXJlY3RTb3VyY2U7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jbGllbnRSZWRpcmVjdFNv
dXJjZS5nZXQoKTsKIH0KIAogLSAodm9pZClkZWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERkRvY3VtZW50RXh0cmFzLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZEb2N1bWVudEV4dHJhcy5tbQppbmRleCAxNzdj
ZTkzYmVlODM4M2EwNGVhY2M3Y2IxZjAwNmJhNGVkZWI4MTFjLi4yNjY1ODlhNmExMWYzNDk1OTFh
M2Y3Yjc5MTg1MDQzMmRlODQ4ZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlBERkRvY3VtZW50RXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUERGRG9jdW1lbnRFeHRyYXMubW0KQEAgLTExOSwxMiArMTE5LDEx
IEBAIE5TQXJyYXkgKmFsbFNjcmlwdHNJblBERkRvY3VtZW50KENHUERGRG9jdW1lbnRSZWYgcGRm
RG9jdW1lbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBOU1N0cmluZ0VuY29k
aW5nIGVuY29kaW5nID0gKGxlbmd0aCA+IDEgJiYgYnl0ZXNbMF0gPT0gMHhGRSAmJiBieXRlc1sx
XSA9PSAweEZGKSA/IE5TVW5pY29kZVN0cmluZ0VuY29kaW5nIDogTlNVVEY4U3RyaW5nRW5jb2Rp
bmc7Ci0gICAgICAgIE5TU3RyaW5nICpzY3JpcHQgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aEJ5dGVzOmJ5dGVzIGxlbmd0aDpsZW5ndGggZW5jb2Rpbmc6ZW5jb2RpbmddOworICAgICAgICBh
dXRvIHNjcmlwdCA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhCeXRlczpieXRl
cyBsZW5ndGg6bGVuZ3RoIGVuY29kaW5nOmVuY29kaW5nXSk7CiAgICAgICAgIGlmICghc2NyaXB0
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgW3NjcmlwdHMgYWRkT2JqZWN0OnNj
cmlwdF07Ci0gICAgICAgIFtzY3JpcHQgcmVsZWFzZV07CisgICAgICAgIFtzY3JpcHRzIGFkZE9i
amVjdDpzY3JpcHQuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBzY3JpcHRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRp
b24ubW0KaW5kZXggZWJjYTNiMDg0ZTZiNWYwMWEzYjVjZmRhZmU3Y2ExYWVjMjk0ZDM5MC4uNTJm
MzBhMDk2YTEyYTJjMDQzYjU1NmZjOTQzZWM5ZWU0ZmRkZTk0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCkBA
IC0xMjEsMTEgKzEyMSwxMCBAQCAtICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNl
OihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogICAgIH0KIAogICAgIFdlYlBERlZpZXcgKnZp
ZXcgPSAoV2ViUERGVmlldyAqKVtbW2RhdGFTb3VyY2Ugd2ViRnJhbWVdIGZyYW1lVmlld10gZG9j
dW1lbnRWaWV3XTsKLSAgICBQREZEb2N1bWVudCAqZG9jID0gW1tbW3NlbGYgY2xhc3NdIFBERkRv
Y3VtZW50Q2xhc3NdIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV07Ci0gICAgW3ZpZXcgc2V0UERG
RG9jdW1lbnQ6ZG9jXTsKKyAgICBhdXRvIGRvYyA9IGFkb3B0TlMoW1tbW3NlbGYgY2xhc3NdIFBE
RkRvY3VtZW50Q2xhc3NdIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV0pOworICAgIFt2aWV3IHNl
dFBERkRvY3VtZW50OmRvYy5nZXQoKV07CiAKLSAgICBOU0FycmF5ICpzY3JpcHRzID0gYWxsU2Ny
aXB0c0luUERGRG9jdW1lbnQoZG9jKTsKLSAgICBbZG9jIHJlbGVhc2VdOworICAgIE5TQXJyYXkg
KnNjcmlwdHMgPSBhbGxTY3JpcHRzSW5QREZEb2N1bWVudChkb2MuZ2V0KCkpOwogICAgIGRvYyA9
IG5pbDsKIAogICAgIGlmICghW3NjcmlwdHMgY291bnRdKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmluZGV4IGY3ZjNlMzE1ODA3MTVhN2QyMzJmNTYz
MGNiZmVlNDkxMzI1YWY5MWUuLjg1MjExY2EwZjkyMjc4ODZiYWE4OWVmYzM4ODMwZDc1YmU1MDVh
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0K
QEAgLTM5MCwxMiArMzkwLDExIEBAIC0gKE5TTWVudSAqKW1lbnVGb3JFdmVudDooTlNFdmVudCAq
KXRoZUV2ZW50CiAgICAgLy8gVG8gbWF0Y2ggdGhlIFBERktpdCBzdHlsZSwgd2UnbGwgYWRkIE9w
ZW4gd2l0aCBQcmV2aWV3IGV2ZW4gd2hlbiB0aGVyZSdzIG5vIGRvY3VtZW50IHlldCB0byB2aWV3
LCBhbmQKICAgICAvLyBkaXNhYmxlIGl0IHVzaW5nIHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW0u
CiAgICAgTlNTdHJpbmcgKnRpdGxlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6VUlfU1RS
SU5HX0lOVEVSTkFMKCJPcGVuIHdpdGggJUAiLCAiY29udGV4dCBtZW51IGl0ZW0gZm9yIFBERiIp
LCBhcHBOYW1lXTsKLSAgICBOU01lbnVJdGVtICppdGVtID0gW1tOU01lbnVJdGVtIGFsbG9jXSBp
bml0V2l0aFRpdGxlOnRpdGxlIGFjdGlvbjpAc2VsZWN0b3IoX29wZW5XaXRoRmluZGVyOikga2V5
RXF1aXZhbGVudDpAIiJdOworICAgIGF1dG8gaXRlbSA9IGFkb3B0TlMoW1tOU01lbnVJdGVtIGFs
bG9jXSBpbml0V2l0aFRpdGxlOnRpdGxlIGFjdGlvbjpAc2VsZWN0b3IoX29wZW5XaXRoRmluZGVy
Oikga2V5RXF1aXZhbGVudDpAIiJdKTsKICAgICBbaXRlbSBzZXRUYWc6V2ViTWVudUl0ZW1UYWdP
cGVuV2l0aERlZmF1bHRBcHBsaWNhdGlvbl07CiAgICAgaWYgKGFwcEljb24pCiAgICAgICAgIFtp
dGVtIHNldEltYWdlOmFwcEljb25dOwotICAgIFtpdGVtcyBpbnNlcnRPYmplY3Q6aXRlbSBhdElu
ZGV4OjBdOwotICAgIFtpdGVtIHJlbGVhc2VdOworICAgIFtpdGVtcyBpbnNlcnRPYmplY3Q6aXRl
bS5nZXQoKSBhdEluZGV4OjBdOwogICAgIAogICAgIFtpdGVtcyBpbnNlcnRPYmplY3Q6W05TTWVu
dUl0ZW0gc2VwYXJhdG9ySXRlbV0gYXRJbmRleDoxXTsKICAgICAKQEAgLTY0Miw3ICs2NDEsNyBA
QCAtIChOU1VJbnRlZ2VyKWNvdW50TWF0Y2hlc0ZvclRleHQ6KE5TU3RyaW5nICopc3RyaW5nIGlu
RE9NUmFuZ2U6KERPTVJhbmdlICopcmFuZwogICAgICAgICByZXR1cm4gMDsKIAogICAgIFBERlNl
bGVjdGlvbiAqcHJldmlvdXNNYXRjaCA9IG5pbDsKLSAgICBOU011dGFibGVBcnJheSAqbWF0Y2hl
cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bGltaXRdOworICAg
IGF1dG8gbWF0Y2hlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTpsaW1pdF0pOwogCiAgICAgZm9yICg7OykgewogICAgICAgICBQREZTZWxlY3Rpb24g
Km5leHRNYXRjaCA9IFtzZWxmIF9uZXh0TWF0Y2hGb3I6c3RyaW5nIGRpcmVjdGlvbjpZRVMgY2Fz
ZVNlbnNpdGl2ZTohKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkgd3Jh
cDpOTyBmcm9tU2VsZWN0aW9uOnByZXZpb3VzTWF0Y2ggc3RhcnRJblNlbGVjdGlvbjpOT107CkBA
IC02NTYsOCArNjU1LDcgQEAgLSAoTlNVSW50ZWdlciljb3VudE1hdGNoZXNGb3JUZXh0OihOU1N0
cmluZyAqKXN0cmluZyBpbkRPTVJhbmdlOihET01SYW5nZSAqKXJhbmcKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIFtzZWxmIF9zZXRUZXh0TWF0Y2hlczptYXRjaGVzXTsKLSAgICBb
bWF0Y2hlcyByZWxlYXNlXTsKKyAgICBbc2VsZiBfc2V0VGV4dE1hdGNoZXM6bWF0Y2hlcy5nZXQo
KV07CiAgICAgCiAgICAgcmV0dXJuIFttYXRjaGVzIGNvdW50XTsKIH0KQEAgLTcwOCwxMiArNzA2
LDExIEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdHJpbmcKICAgICAvLyBj
aGFuZ2luZyB0aGUgc2VsZWN0aW9uIGlzIGEgaGFjaywgYnV0IHRoZSBvbmx5IHdheSB0byBnZXQg
YW4gYXR0ciBzdHJpbmcgaXMgdmlhIFBERlNlbGVjdGlvbgogICAgIAogICAgIC8vIG11c3QgY29w
eSB0aGlzIHNlbGVjdGlvbiBvYmplY3QgYmVjYXVzZSB3ZSBjaGFuZ2UgdGhlIHNlbGVjdGlvbiB3
aGljaCBzZWVtcyB0byByZWxlYXNlIGl0Ci0gICAgUERGU2VsZWN0aW9uICpzYXZlZFNlbGVjdGlv
biA9IFtbUERGU3VidmlldyBjdXJyZW50U2VsZWN0aW9uXSBjb3B5XTsKKyAgICBhdXRvIHNhdmVk
U2VsZWN0aW9uID0gYWRvcHROUyhbW1BERlN1YnZpZXcgY3VycmVudFNlbGVjdGlvbl0gY29weV0p
OwogICAgIFtQREZTdWJ2aWV3IHNlbGVjdEFsbDpuaWxdOwogICAgIE5TQXR0cmlidXRlZFN0cmlu
ZyAqcmVzdWx0ID0gW1tQREZTdWJ2aWV3IGN1cnJlbnRTZWxlY3Rpb25dIGF0dHJpYnV0ZWRTdHJp
bmddOwogICAgIGlmIChzYXZlZFNlbGVjdGlvbikgewotICAgICAgICBbUERGU3VidmlldyBzZXRD
dXJyZW50U2VsZWN0aW9uOnNhdmVkU2VsZWN0aW9uXTsKLSAgICAgICAgW3NhdmVkU2VsZWN0aW9u
IHJlbGVhc2VdOworICAgICAgICBbUERGU3VidmlldyBzZXRDdXJyZW50U2VsZWN0aW9uOnNhdmVk
U2VsZWN0aW9uLmdldCgpXTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogYmVoYXZp
b3Igb2Ygc2V0Q3VycmVudFNlbGVjdGlvbjpuaWwgaXMgbm90IGRvY3VtZW50ZWQgLSBjaGVjayA0
MTgyOTM0IGZvciBwcm9ncmVzcwogICAgICAgICAvLyBPdGhlcndpc2UsIHdlIGNvdWxkIGNvbGxh
cHNlIHRoaXMgY29kZSB3aXRoIHRoZSBjYXNlIGFib3ZlLgpAQCAtODc0LDcgKzg3MSw3IEBAIC0g
KE5TSW1hZ2UgKilzZWxlY3Rpb25JbWFnZUZvcmNpbmdCbGFja1RleHQ6KEJPT0wpZm9yY2VCbGFj
a1RleHQKICAgICAvLyBDb252ZXJ0IHRoZSBzZWxlY3Rpb24gdG8gYW4gYXR0cmlidXRlZCBzdHJp
bmcsIGFuZCBkcmF3IHRoYXQuCiAgICAgLy8gRklYTUUgNDYyMTE1NDogdGhpcyBkb2Vzbid0IGhh
bmRsZSBpdGFsaWNzIChhbmQgbWF5YmUgb3RoZXIgc3R5bGVzKQogICAgIC8vIEZJWE1FIDQ2MDQz
NjY6IHRoaXMgZG9lc24ndCBoYW5kbGUgdGV4dCBhdCBub24tYWN0dWFsIHNpemUKLSAgICBOU011
dGFibGVBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW1tzZWxmIHNlbGVjdGVk
QXR0cmlidXRlZFN0cmluZ10gbXV0YWJsZUNvcHldOworICAgIFJldGFpblB0cjxOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW3NlbGYgc2VsZWN0
ZWRBdHRyaWJ1dGVkU3RyaW5nXSBtdXRhYmxlQ29weV0pOwogICAgIE5TUmFuZ2Ugd2hvbGVTdHJp
bmdSYW5nZSA9IE5TTWFrZVJhbmdlKDAsIFthdHRyaWJ1dGVkU3RyaW5nIGxlbmd0aF0pOwogICAg
IAogICAgIC8vIE1vZGlmeSB0aGUgc3R5bGVzIGluIHRoZSBhdHRyaWJ1dGVkIHN0cmluZyB0byBk
cmF3IGJsYWNrIHRleHQsIG5vIGJhY2tncm91bmQsIGFuZCBubyB1bmRlcmxpbmUuIFdlIGRyYXcg
CkBAIC04OTEsOCArODg4LDYgQEAgLSAoTlNJbWFnZSAqKXNlbGVjdGlvbkltYWdlRm9yY2luZ0Js
YWNrVGV4dDooQk9PTClmb3JjZUJsYWNrVGV4dAogICAgIFtzZWxlY3Rpb25JbWFnZSBsb2NrRm9j
dXNdOwogICAgIFthdHRyaWJ1dGVkU3RyaW5nIGRyYXdBdFBvaW50Ok5TWmVyb1BvaW50XTsKICAg
ICBbc2VsZWN0aW9uSW1hZ2UgdW5sb2NrRm9jdXNdOwotICAgIAotICAgIFthdHRyaWJ1dGVkU3Ry
aW5nIHJlbGVhc2VdOwogCiAgICAgcmV0dXJuIHNlbGVjdGlvbkltYWdlOwogfQpAQCAtMTEwNiw3
ICsxMTAxLDcgQEAgLSAoTlNNdXRhYmxlQXJyYXkgKilfbWVudUl0ZW1zRnJvbVBERktpdEZvckV2
ZW50OihOU0V2ZW50ICopdGhlRXZlbnQKICAgICBOU011dGFibGVBcnJheSAqY29waWVkSXRlbXMg
PSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVuZGVj
bGFyZWQtc2VsZWN0b3IiKQotICAgIE5TRGljdGlvbmFyeSAqYWN0aW9uc1RvVGFncyA9IFtbTlNE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgorICAgIGF1dG8gYWN0aW9u
c1RvVGFncyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0Fu
ZEtleXM6CiAgICAgICAgIEAoV2ViTWVudUl0ZW1QREZBY3R1YWxTaXplKSwgTlNTdHJpbmdGcm9t
U2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRBY3R1YWxTaXplOikpLAogICAgICAgICBAKFdlYk1lbnVJ
dGVtUERGWm9vbUluKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKHpvb21JbjopKSwK
ICAgICAgICAgQChXZWJNZW51SXRlbVBERlpvb21PdXQpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihA
c2VsZWN0b3Ioem9vbU91dDopKSwKQEAgLTExMTgsMjAgKzExMTMsMjAgQEAgSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVjdG9yIikKICAgICAgICAgQChXZWJNZW51SXRlbVBE
RkNvbnRpbnVvdXMpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3RvZ2dsZUNvbnRp
bnVvdXM6KSksCiAgICAgICAgIEAoV2ViTWVudUl0ZW1QREZOZXh0UGFnZSksIE5TU3RyaW5nRnJv
bVNlbGVjdG9yKEBzZWxlY3Rvcihnb1RvTmV4dFBhZ2U6KSksCiAgICAgICAgIEAoV2ViTWVudUl0
ZW1QREZQcmV2aW91c1BhZ2UpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoZ29Ub1By
ZXZpb3VzUGFnZTopKSwKLSAgICAgICAgbmlsXTsKKyAgICAgICAgbmlsXSk7CiBJR05PUkVfV0FS
TklOR1NfRU5ECiAKICAgICAvLyBMZWF2ZSB0aGVzZSBtZW51IGl0ZW1zIG91dCwgc2luY2UgV2Vi
S2l0IGluc2VydHMgZXF1aXZhbGVudCBvbmVzLiBOb3RlIHRoYXQgd2UgbGVhdmUgb3V0IFBERktp
dCdzICJMb29rIFVwIGluIERpY3Rpb25hcnkiCiAgICAgLy8gaXRlbSBoZXJlIGJlY2F1c2UgV2Vi
S2l0IGFscmVhZHkgaW5jbHVkZXMgYW4gaXRlbSB3aXRoIHRoZSBzYW1lIHRpdGxlIGFuZCBwdXJw
b3NlLiBXZSBtYXAgV2ViS2l0J3MgdG8gUERGS2l0J3MgCiAgICAgLy8gIkxvb2sgVXAgaW4gRGlj
dGlvbmFyeSIgdmlhIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiAtW1dlYlBERlZpZXcgX2xvb2tVcElu
RGljdGlvbmFyeUZyb21NZW51Ol0uCi0gICAgTlNTZXQgKnVud2FudGVkQWN0aW9ucyA9IFtbTlNT
ZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKKyAgICBhdXRvIHVud2FudGVkQWN0aW9ucyA9IGFk
b3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bmRlY2xhcmVkLXNlbGVjdG9yIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2VhcmNoSW5TcG90bGlnaHQ6KSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0
b3IoX3NlYXJjaEluR29vZ2xlOikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNT
dHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZWFyY2hJbkRpY3Rpb25hcnk6KSksCiBJR05P
UkVfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU1N0cmluZ0Zy
b21TZWxlY3RvcihAc2VsZWN0b3IoY29weTopKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5pbF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdKTsKICAgICAKICAg
ICBOU0VudW1lcmF0b3IgKmUgPSBbW1tQREZTdWJ2aWV3IG1lbnVGb3JFdmVudDp0aGVFdmVudF0g
aXRlbUFycmF5XSBvYmplY3RFbnVtZXJhdG9yXTsKICAgICBOU01lbnVJdGVtICppdGVtOwpAQCAt
MTE0NCw5ICsxMTM5LDggQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgICAgICAKICAgICAgICAg
Ly8gQ29weSBpdGVtcyBzaW5jZSBhIG1lbnUgaXRlbSBjYW4gYmUgaW4gb25seSBvbmUgbWVudSBh
dCBhIHRpbWUsIGFuZCB3ZSBkb24ndAogICAgICAgICAvLyB3YW50IHRvIG1vZGlmeSB0aGUgb3Jp
Z2luYWwgbWVudSBzdXBwbGllZCBieSBQREZLaXQuCi0gICAgICAgIE5TTWVudUl0ZW0gKml0ZW1D
b3B5ID0gW2l0ZW0gY29weV07Ci0gICAgICAgIFtjb3BpZWRJdGVtcyBhZGRPYmplY3Q6aXRlbUNv
cHldOwotICAgICAgICBbaXRlbUNvcHkgcmVsZWFzZV07CisgICAgICAgIFJldGFpblB0cjxOU01l
bnVJdGVtPiBpdGVtQ29weSA9IGFkb3B0TlMoW2l0ZW0gY29weV0pOworICAgICAgICBbY29waWVk
SXRlbXMgYWRkT2JqZWN0Oml0ZW1Db3B5LmdldCgpXTsKICAgICAgICAgCiAgICAgICAgIC8vIElu
Y2x1ZGUgYWxsIG9mIFBERktpdCdzIHNlcGFyYXRvcnMgZm9yIG5vdy4gQXQgdGhlIGVuZCB3ZSds
bCByZW1vdmUgYW55IG9uZXMgdGhhdCB3ZXJlIG1hZGUKICAgICAgICAgLy8gdXNlbGVzcyBieSBy
ZW1vdmluZyBQREZLaXQncyBtZW51IGl0ZW1zLgpAQCAtMTE3Niw5ICsxMTcwLDYgQEAgSUdOT1JF
X1dBUk5JTkdTX0VORAogICAgICAgICAgICAgTE9HX0VSUk9SKCJQREYgY29udGV4dCBtZW51IGl0
ZW0gJUAgY2FtZSB3aXRoIHRhZyAlZCwgc28gbm8gV2ViS2l0IHRhZyB3YXMgYXBwbGllZC4gVGhp
cyBjb3VsZCBtZWFuIHRoYXQgdGhlIGl0ZW0gZG9lc24ndCBhcHBlYXIgaW4gY2xpZW50cyBzdWNo
IGFzIFNhZmFyaS4iLCBbaXRlbUNvcHkgdGl0bGVdLCBbaXRlbUNvcHkgdGFnXSk7CiAgICAgfQog
ICAgIAotICAgIFthY3Rpb25zVG9UYWdzIHJlbGVhc2VdOwotICAgIFt1bndhbnRlZEFjdGlvbnMg
cmVsZWFzZV07Ci0gICAgCiAgICAgLy8gU2luY2Ugd2UgbWlnaHQgaGF2ZSByZW1vdmVkIGVsZW1l
bnRzIHN1cHBsaWVkIGJ5IFBERktpdCwgYW5kIHdlIHdhbnQgdG8gbWluaW1pemUgb3VyIGhhcmR3
aXJlZAogICAgIC8vIGtub3dsZWRnZSBvZiB0aGUgb3JkZXIgYW5kIGFycmFuZ2VtZW50IG9mIFBE
RktpdCdzIG1lbnUgaXRlbXMsIHdlIG5lZWQgdG8gcmVtb3ZlIGFueSBib2d1cwogICAgIC8vIHNl
cGFyYXRvcnMgdGhhdCB3ZXJlIGxlZnQgYmVoaW5kLgpAQCAtMTIwMSw3ICsxMTkyLDcgQEAgLSAo
UERGU2VsZWN0aW9uICopX25leHRNYXRjaEZvcjooTlNTdHJpbmcgKilzdHJpbmcgZGlyZWN0aW9u
OihCT09MKWZvcndhcmQgY2FzZVMKICAgICAKICAgICBQREZEb2N1bWVudCAqZG9jdW1lbnQgPSBb
UERGU3VidmlldyBkb2N1bWVudF07CiAgICAgCi0gICAgUERGU2VsZWN0aW9uICpzZWxlY3Rpb25G
b3JJbml0aWFsU2VhcmNoID0gW2luaXRpYWxTZWxlY3Rpb24gY29weV07CisgICAgYXV0byBzZWxl
Y3Rpb25Gb3JJbml0aWFsU2VhcmNoID0gYWRvcHROUyhbaW5pdGlhbFNlbGVjdGlvbiBjb3B5XSk7
CiAgICAgaWYgKHN0YXJ0SW5TZWxlY3Rpb24pIHsKICAgICAgICAgLy8gSW5pdGlhbGx5IHdlIHdh
bnQgdG8gaW5jbHVkZSB0aGUgc2VsZWN0ZWQgdGV4dCBpbiB0aGUgc2VhcmNoLiBQREZEb2N1bWVu
dCdzIEFQSSBhbHdheXMgc2VhcmNoZXMgZnJvbSBqdXN0CiAgICAgICAgIC8vIHBhc3QgdGhlIHBh
c3NlZC1pbiBzZWxlY3Rpb24sIHNvIHdlIG5lZWQgdG8gcGFzcyBhIHNlbGVjdGlvbiB0aGF0J3Mg
bW9kaWZpZWQgYXBwcm9wcmlhdGVseS4gCkBAIC0xMjE4LDggKzEyMDksNyBAQCAtIChQREZTZWxl
Y3Rpb24gKilfbmV4dE1hdGNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJlY3Rpb246KEJPT0wp
Zm9yd2FyZCBjYXNlUwogICAgICAgICAgICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggZXh0
ZW5kU2VsZWN0aW9uQXRTdGFydDotaW5pdGlhbFNlbGVjdGlvbkxlbmd0aF07CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgUERGU2VsZWN0aW9uICpmb3VuZFNlbGVjdGlvbiA9IFtkb2N1bWVudCBmaW5k
U3RyaW5nOnN0cmluZyBmcm9tU2VsZWN0aW9uOnNlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggd2l0
aE9wdGlvbnM6b3B0aW9uc107Ci0gICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggcmVsZWFz
ZV07CisgICAgUERGU2VsZWN0aW9uICpmb3VuZFNlbGVjdGlvbiA9IFtkb2N1bWVudCBmaW5kU3Ry
aW5nOnN0cmluZyBmcm9tU2VsZWN0aW9uOnNlbGVjdGlvbkZvckluaXRpYWxTZWFyY2guZ2V0KCkg
d2l0aE9wdGlvbnM6b3B0aW9uc107CiAKICAgICAvLyBJZiB3ZSBmaXJzdCBzZWFyY2hlZCBpbiB0
aGUgc2VsZWN0aW9uLCBhbmQgd2UgZm91bmQgdGhlIHNlbGVjdGlvbiwgc2VhcmNoIGFnYWluIGZy
b20ganVzdCBwYXN0IHRoZSBzZWxlY3Rpb24KICAgICBpZiAoc3RhcnRJblNlbGVjdGlvbiAmJiBf
UERGU2VsZWN0aW9uc0FyZUVxdWFsKGZvdW5kU2VsZWN0aW9uLCBpbml0aWFsU2VsZWN0aW9uKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUG9saWN5RGVs
ZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBvbGljeURlbGVn
YXRlLm1tCmluZGV4IGZlNzdkYzk1ODE4YTdlZTA5YmYzMTdhZWFhNGJmNDI2NDBmNGVlYTcuLmUy
OGFiOGY0YThkMjBlMmJkMDU1ZTE5ZDdkZDM5NTI1ZjViMTBmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUG9saWN5RGVsZWdhdGUubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQb2xpY3lEZWxlZ2F0ZS5tbQpAQCAtNDMs
NyArNDMsNyBAQCBOU1N0cmluZyAqV2ViQWN0aW9uT3JpZ2luYWxVUkxLZXkgPSBAIldlYkFjdGlv
bk9yaWdpbmFsVVJMS2V5IjsKIEBpbnRlcmZhY2UgV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lclBy
aXZhdGUgOiBOU09iamVjdAogewogQHB1YmxpYwotICAgIGlkIHRhcmdldDsKKyAgICBSZXRhaW5Q
dHI8aWQ+IHRhcmdldDsKICAgICBTRUwgYWN0aW9uOwogfQogCkBAIC01OCwxNCArNTgsMTMgQEAg
LSAoaWQpaW5pdFdpdGhUYXJnZXQ6KGlkKXQgYWN0aW9uOihTRUwpYQogICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHRhcmdl
dCA9IFt0IHJldGFpbl07CisgICAgdGFyZ2V0ID0gdDsKICAgICBhY3Rpb24gPSBhOwogICAgIHJl
dHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbdGFyZ2V0IHJlbGVhc2Vd
OwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtOTEsMTQgKzkwLDEyIEBAIC0odm9pZClk
ZWFsbG9jCiAtICh2b2lkKV91c2VQb2xpY3k6KFBvbGljeUFjdGlvbilwb2xpY3kKIHsKICAgICBp
ZiAoX3ByaXZhdGUtPnRhcmdldCkKLSAgICAgICAgd3RmT2JqQ01zZ1NlbmQ8dm9pZD4oX3ByaXZh
dGUtPnRhcmdldCwgX3ByaXZhdGUtPmFjdGlvbiwgcG9saWN5KTsKKyAgICAgICAgd3RmT2JqQ01z
Z1NlbmQ8dm9pZD4oX3ByaXZhdGUtPnRhcmdldC5nZXQoKSwgX3ByaXZhdGUtPmFjdGlvbiwgcG9s
aWN5KTsKIH0KIAogLSAodm9pZClfaW52YWxpZGF0ZQogewotICAgIGlkIHRhcmdldCA9IF9wcml2
YXRlLT50YXJnZXQ7CiAgICAgX3ByaXZhdGUtPnRhcmdldCA9IG5pbDsKLSAgICBbdGFyZ2V0IHJl
bGVhc2VdOwogfQogCiAvLyBXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyIGltcGxlbWVudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5t
bQppbmRleCBiM2M4ZmNhZjNlODc2NWUyMGFlMzAzNGU3NjQ2Yzg2NDI4NDUyMTMwLi4zMzNhMzI0
NzkzZGRiYzhmYTBhMGVkZjYxZDg2OGI0MzFhMGI1YTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTE2NTEsOSArMTY1MSw4
IEBAIHN0YXRpYyBOU1N0cmluZyAqY2xhc3NJQkNyZWF0b3JJRCA9IG5pbDsKIAogKyAodm9pZClf
c2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaW5nCiB7Ci0gICAgTlNTdHJpbmcgKm9sZCA9
IGNsYXNzSUJDcmVhdG9ySUQ7CisgICAgYXV0byBvbGQgPSBhZG9wdE5TKGNsYXNzSUJDcmVhdG9y
SUQpOwogICAgIGNsYXNzSUJDcmVhdG9ySUQgPSBbc3RyaW5nIGNvcHldOwotICAgIFtvbGQgcmVs
ZWFzZV07CiB9CiAKIC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IGI4NGM3
MzcwMTllY2UzNGUxOTBjMmNlNzczYmY3YTFkOWQ1ODZkZmUuLmIyZjQyMjc4MjFmZTE3YTQ1MTcy
NjRjOWYyZTgxMzJmNDI0YzRjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtOTcsMTQgKzk3LDExIEBAIHZvaWQg
V2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBOU1N0
cmluZyogbnNFcnJvck1lc3NhZ2UgPSBuc1N0cmluZ05pbElmRW1wdHkoZXJyb3JNc2cpOwotICAg
ICAgICBOU0RpY3Rpb25hcnkgKmluZm8gPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhP
YmplY3RzQW5kS2V5czpuc0Vycm9yTWVzc2FnZSwgV2ViU2NyaXB0RXJyb3JEZXNjcmlwdGlvbktl
eSwgQChlcnJvckxpbmUpLCBXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXJLZXksIG5pbF07Ci0gICAg
ICAgIE5TRXJyb3IgKmVycm9yID0gW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpXZWJT
Y3JpcHRFcnJvckRvbWFpbiBjb2RlOldlYlNjcmlwdEdlbmVyYWxFcnJvckNvZGUgdXNlckluZm86
aW5mb107CisgICAgICAgIGF1dG8gaW5mbyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0c0FuZEtleXM6bnNFcnJvck1lc3NhZ2UsIFdlYlNjcmlwdEVycm9yRGVz
Y3JpcHRpb25LZXksIEAoZXJyb3JMaW5lKSwgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmVyS2V5LCBu
aWxdKTsKKyAgICAgICAgYXV0byBlcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0
V2l0aERvbWFpbjpXZWJTY3JpcHRFcnJvckRvbWFpbiBjb2RlOldlYlNjcmlwdEdlbmVyYWxFcnJv
ckNvZGUgdXNlckluZm86aW5mby5nZXQoKV0pOwogCiAgICAgICAgIGlmIChpbXBsZW1lbnRhdGlv
bnMtPmZhaWxlZFRvUGFyc2VTb3VyY2VGdW5jKQotICAgICAgICAgICAgQ2FsbFNjcmlwdERlYnVn
RGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5mYWlsZWRUb1BhcnNlU291cmNlRnVuYywgd2ViVmll
dywgQHNlbGVjdG9yKHdlYlZpZXc6ZmFpbGVkVG9QYXJzZVNvdXJjZTpiYXNlTGluZU51bWJlcjpm
cm9tVVJMOndpdGhFcnJvcjpmb3JXZWJGcmFtZTopLCBuc1NvdXJjZSwgZmlyc3RMaW5lLCBuc1VS
TCwgZXJyb3IsIHdlYkZyYW1lKTsKLQotICAgICAgICBbZXJyb3IgcmVsZWFzZV07Ci0gICAgICAg
IFtpbmZvIHJlbGVhc2VdOworICAgICAgICAgICAgQ2FsbFNjcmlwdERlYnVnRGVsZWdhdGUoaW1w
bGVtZW50YXRpb25zLT5mYWlsZWRUb1BhcnNlU291cmNlRnVuYywgd2ViVmlldywgQHNlbGVjdG9y
KHdlYlZpZXc6ZmFpbGVkVG9QYXJzZVNvdXJjZTpiYXNlTGluZU51bWJlcjpmcm9tVVJMOndpdGhF
cnJvcjpmb3JXZWJGcmFtZTopLCBuc1NvdXJjZSwgZmlyc3RMaW5lLCBuc1VSTCwgZXJyb3IuZ2V0
KCksIHdlYkZyYW1lKTsKICAgICB9CiAKICAgICBtX2NhbGxpbmdEZWxlZ2F0ZSA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0Q29tcGxl
dGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRl
eHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQppbmRleCA4MDFiZWZlYzc2ZDA5NmY5M2YwZjQ4ZDYz
Y2Y4N2RmOTVkNTUxYmEwLi5mNzhlNTQ0NTFmNWY3M2QyMzZiOWMzZjAzYzk0NGM3N2FhY2Q5ZjQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21w
bGV0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQpAQCAtODgsMTQgKzg4LDEzIEBAIC0gKHZv
aWQpX2J1aWxkVUkKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
IHRhYmxlRnJhbWUuc2l6ZSA9IFtOU1Njcm9sbFZpZXcgY29udGVudFNpemVGb3JGcmFtZVNpemU6
c2Nyb2xsRnJhbWUuc2l6ZSBoYXNIb3Jpem9udGFsU2Nyb2xsZXI6Tk8gaGFzVmVydGljYWxTY3Jv
bGxlcjpZRVMgYm9yZGVyVHlwZTpOU05vQm9yZGVyXTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKLSAgICBOU1RhYmxlQ29sdW1uICpjb2x1bW4gPSBbW05TVGFibGVDb2x1
bW4gYWxsb2NdIGluaXRdOworICAgIGF1dG8gY29sdW1uID0gYWRvcHROUyhbW05TVGFibGVDb2x1
bW4gYWxsb2NdIGluaXRdKTsKICAgICBbY29sdW1uIHNldFdpZHRoOnRhYmxlRnJhbWUuc2l6ZS53
aWR0aF07CiAgICAgW2NvbHVtbiBzZXRFZGl0YWJsZTpOT107CiAgICAgCiAgICAgX3RhYmxlVmll
dyA9IFtbTlNUYWJsZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6dGFibGVGcmFtZV07CiAgICAg
W190YWJsZVZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazpOU1ZpZXdXaWR0aFNpemFibGVdOwotICAg
IFtfdGFibGVWaWV3IGFkZFRhYmxlQ29sdW1uOmNvbHVtbl07Ci0gICAgW2NvbHVtbiByZWxlYXNl
XTsKKyAgICBbX3RhYmxlVmlldyBhZGRUYWJsZUNvbHVtbjpjb2x1bW4uZ2V0KCldOwogICAgIFtf
dGFibGVWaWV3IHNldEdyaWRTdHlsZU1hc2s6TlNUYWJsZVZpZXdHcmlkTm9uZV07CiAgICAgW190
YWJsZVZpZXcgc2V0Q29ybmVyVmlldzpuaWxdOwogICAgIFtfdGFibGVWaWV3IHNldEhlYWRlclZp
ZXc6bmlsXTsKQEAgLTEwNSw3ICsxMDQsNyBAQCAtICh2b2lkKV9idWlsZFVJCiAgICAgW190YWJs
ZVZpZXcgc2V0VGFyZ2V0OnNlbGZdOwogICAgIFtfdGFibGVWaWV3IHNldERvdWJsZUFjdGlvbjpA
c2VsZWN0b3IodGFibGVBY3Rpb246KV07CiAgICAgCi0gICAgTlNTY3JvbGxWaWV3ICpzY3JvbGxW
aWV3ID0gW1tOU1Njcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6c2Nyb2xsRnJhbWVdOwor
ICAgIGF1dG8gc2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tOU1Njcm9sbFZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6c2Nyb2xsRnJhbWVdKTsKICAgICBbc2Nyb2xsVmlldyBzZXRCb3JkZXJUeXBlOk5T
Tm9Cb3JkZXJdOwogICAgIFtzY3JvbGxWaWV3IHNldEhhc1ZlcnRpY2FsU2Nyb2xsZXI6WUVTXTsK
ICAgICBbc2Nyb2xsVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8
IE5TVmlld0hlaWdodFNpemFibGVdOwpAQCAtMTE0LDggKzExMyw3IEBAIC0gKHZvaWQpX2J1aWxk
VUkKICAgICAKICAgICBfcG9wdXBXaW5kb3cgPSBbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENv
bnRlbnRSZWN0OnNjcm9sbEZyYW1lIHN0eWxlTWFzazpOU1dpbmRvd1N0eWxlTWFza0JvcmRlcmxl
c3MgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKICAgICBbX3BvcHVw
V2luZG93IHNldEFscGhhVmFsdWU6MC44OGZdOwotICAgIFtfcG9wdXBXaW5kb3cgc2V0Q29udGVu
dFZpZXc6c2Nyb2xsVmlld107Ci0gICAgW3Njcm9sbFZpZXcgcmVsZWFzZV07CisgICAgW19wb3B1
cFdpbmRvdyBzZXRDb250ZW50VmlldzpzY3JvbGxWaWV3LmdldCgpXTsKICAgICBbX3BvcHVwV2lu
ZG93IHNldEhhc1NoYWRvdzpZRVNdOwogICAgIFtfcG9wdXBXaW5kb3cgX3NldEZvcmNlQWN0aXZl
Q29udHJvbHM6WUVTXTsKICAgICBbX3BvcHVwV2luZG93IHNldFJlbGVhc2VkV2hlbkNsb3NlZDpO
T107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KaW5kZXggMDY1MGRiZjE1M2FjZDkyNzI5
ZmViMDZlZjQ0MGU4NzJjNWMyNzBhNi4uYTBkYzJiOGRhOWVmYmI2OGEyOGZmZjM1YTMxZDk1MjVh
MjcyYjQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQpAQCAtMTQxLDExICsxNDEs
MTAgQEAgQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIKIC0gKGlk
KWluaXQKIHsKICAgICAvLyBEbyBub3QgZGVmZXIgd2luZG93IGNyZWF0aW9uLCB0byBtYWtlIHN1
cmUgLXdpbmRvd051bWJlciBpcyBjcmVhdGVkIChuZWVkZWQgYnkgV2ViV2luZG93U2NhbGVBbmlt
YXRpb24pLgotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW1dlYkNvcmVGdWxsU2NyZWVuV2luZG93
IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TWmVyb1JlY3Qgc3R5bGVNYXNrOihOU1dpbmRv
d1N0eWxlTWFza0Z1bGxTaXplQ29udGVudFZpZXcgfCBOU1dpbmRvd1N0eWxlTWFza1Jlc2l6YWJs
ZSkgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKKyAgICBhdXRvIHdp
bmRvdyA9IGFkb3B0TlMoW1tXZWJDb3JlRnVsbFNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhD
b250ZW50UmVjdDpOU1plcm9SZWN0IHN0eWxlTWFzazooTlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6
ZUNvbnRlbnRWaWV3IHwgTlNXaW5kb3dTdHlsZU1hc2tSZXNpemFibGUpIGJhY2tpbmc6TlNCYWNr
aW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwogICAgIFt3aW5kb3cgc2V0Q29sbGVjdGlvbkJl
aGF2aW9yOihbd2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl0gfCBOU1dpbmRvd0NvbGxlY3Rpb25C
ZWhhdmlvckZ1bGxTY3JlZW5QcmltYXJ5KV07Ci0gICAgd2luZG93LmRlbGVnYXRlID0gc2VsZjsK
LSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoV2luZG93OndpbmRvd107Ci0gICAgW3dpbmRvdyBy
ZWxlYXNlXTsKKyAgICBbd2luZG93IHNldERlbGVnYXRlOiBzZWxmXTsKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRXaXRoV2luZG93OndpbmRvdy5nZXQoKV07CiAgICAgaWYgKCFzZWxmKQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIF9wbGF5YmFja01vZGVsID0gV2ViQ29yZTo6UGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGY0NzhjYWE3ODI2ZTZiMTgwYTJkMzliNzhlOGNiNmU4
Y2FjMTRjMzUuLjIzZjRkMmNjZjI5YWMwNzc2NTllZjdlM2FhODNlNjAwNDhlNTRjMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEzMzIsMTEgKzEz
MzIsMTAgQEAgLSAodm9pZClfcmVnaXN0ZXJEcmFnZ2VkVHlwZXMKIHsKICAgICBOU0FycmF5ICpl
ZGl0YWJsZVR5cGVzID0gW1dlYkhUTUxWaWV3IF9pbnNlcnRhYmxlUGFzdGVib2FyZFR5cGVzXTsK
ICAgICBOU0FycmF5ICpVUkxUeXBlcyA9IFtOU1Bhc3RlYm9hcmQgX3dlYl9kcmFnVHlwZXNGb3JV
UkxdOwotICAgIE5TTXV0YWJsZVNldCAqdHlwZXMgPSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5p
dFdpdGhBcnJheTplZGl0YWJsZVR5cGVzXTsKKyAgICBhdXRvIHR5cGVzID0gYWRvcHROUyhbW05T
TXV0YWJsZVNldCBhbGxvY10gaW5pdFdpdGhBcnJheTplZGl0YWJsZVR5cGVzXSk7CiAgICAgW3R5
cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6VVJMVHlwZXNdOwogICAgIFt0eXBlcyBhZGRPYmplY3Q6
W1dlYkhUTUxWaWV3IF9kdW1teVBhc3RlYm9hcmRUeXBlXV07CiAgICAgW3NlbGYgcmVnaXN0ZXJG
b3JEcmFnZ2VkVHlwZXM6W3R5cGVzIGFsbE9iamVjdHNdXTsKLSAgICBbdHlwZXMgcmVsZWFzZV07
CiB9CiAKIHN0YXRpYyBib29sIG5lZWRzT3V0bG9va1F1aXJrc1NjcmlwdCgpCkBAIC0xNDQ5LDEw
ICsxNDQ4LDkgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihO
U1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICNlbmRpZgogCiAgICAgTlNSZWN0
IGYgPSBbc2VsZiBmcmFtZV07Ci0gICAgV2ViRnJhbWVWaWV3ICpmcmFtZVZpZXcgPSBbW1dlYkZy
YW1lVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTogTlNNYWtlUmVjdCgwLDAsZi5zaXplLndpZHRo
LGYuc2l6ZS5oZWlnaHQpXTsKKyAgICBhdXRvIGZyYW1lVmlldyA9IGFkb3B0TlMoW1tXZWJGcmFt
ZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6IE5TTWFrZVJlY3QoMCwwLGYuc2l6ZS53aWR0aCxm
LnNpemUuaGVpZ2h0KV0pOwogICAgIFtmcmFtZVZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazpOU1Zp
ZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlXTsKLSAgICBbc2VsZiBhZGRTdWJ2
aWV3OmZyYW1lVmlld107Ci0gICAgW2ZyYW1lVmlldyByZWxlYXNlXTsKKyAgICBbc2VsZiBhZGRT
dWJ2aWV3OmZyYW1lVmlldy5nZXQoKV07CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKENs
YXNzIGdlc3R1cmVDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNJbW1lZGlhdGVBY3Rpb25H
ZXN0dXJlUmVjb2duaXplciIpKSB7CkBAIC0xNjA5LDcgKzE2MDcsNyBAQCAtICh2b2lkKV9jb21t
b25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3Vw
TmFtZTooTlNTdAogICAgIGlmIChbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSBvYmplY3RGb3JLZXk6V2ViU21hcnRJbnNlcnREZWxldGVFbmFibGVkXSkKICAgICAgICAgW3Nl
bGYgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOltbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6V2ViU21hcnRJbnNlcnREZWxldGVFbmFibGVkXV07CiAK
LSAgICBbV2ViRnJhbWUgX2NyZWF0ZU1haW5GcmFtZVdpdGhQYWdlOl9wcml2YXRlLT5wYWdlIGZy
YW1lTmFtZTpmcmFtZU5hbWUgZnJhbWVWaWV3OmZyYW1lVmlld107CisgICAgW1dlYkZyYW1lIF9j
cmVhdGVNYWluRnJhbWVXaXRoUGFnZTpfcHJpdmF0ZS0+cGFnZSBmcmFtZU5hbWU6ZnJhbWVOYW1l
IGZyYW1lVmlldzpmcmFtZVZpZXcuZ2V0KCldOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBXZWJUaHJlYWROU1J1bkxvb3AoKTsKQEAgLTE2MzEs
NyArMTYyOSw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZToo
TlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAgICAgTlNWaWV3ICpuZXh0S2V5
VmlldyA9IFtzZWxmIG5leHRLZXlWaWV3XTsKICAgICBpZiAobmV4dEtleVZpZXcgJiYgbmV4dEtl
eVZpZXcgIT0gZnJhbWVWaWV3KQogICAgICAgICBbZnJhbWVWaWV3IHNldE5leHRLZXlWaWV3Om5l
eHRLZXlWaWV3XTsKLSAgICBbc3VwZXIgc2V0TmV4dEtleVZpZXc6ZnJhbWVWaWV3XTsKKyAgICBb
c3VwZXIgc2V0TmV4dEtleVZpZXc6ZnJhbWVWaWV3LmdldCgpXTsKIAogICAgIGlmIChbW3NlbGYg
Y2xhc3NdIHNob3VsZEluY2x1ZGVJbldlYktpdFN0YXRpc3RpY3NdKQogICAgICAgICArK1dlYlZp
ZXdDb3VudDsKQEAgLTE3MjgsNyArMTcyNiw3IEBAICsgKE5TQXJyYXkgKilfc3VwcG9ydGVkTUlN
RVR5cGVzCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiArIChOU0FycmF5ICopX3N1cHBvcnRl
ZEZpbGVFeHRlbnNpb25zCiB7Ci0gICAgTlNNdXRhYmxlU2V0ICpleHRlbnNpb25zID0gW1tOU011
dGFibGVTZXQgYWxsb2NdIGluaXRdOworICAgIGF1dG8gZXh0ZW5zaW9ucyA9IGFkb3B0TlMoW1tO
U011dGFibGVTZXQgYWxsb2NdIGluaXRdKTsKICAgICBOU0FycmF5ICpNSU1FVHlwZXMgPSBbc2Vs
ZiBfc3VwcG9ydGVkTUlNRVR5cGVzXTsKICAgICBOU0VudW1lcmF0b3IgKmVudW1lcmF0b3IgPSBb
TUlNRVR5cGVzIG9iamVjdEVudW1lcmF0b3JdOwogICAgIE5TU3RyaW5nICpNSU1FVHlwZTsKQEAg
LTE3MzgsOSArMTczNiw3IEBAICsgKE5TQXJyYXkgKilfc3VwcG9ydGVkRmlsZUV4dGVuc2lvbnMK
ICAgICAgICAgICAgIFtleHRlbnNpb25zIGFkZE9iamVjdHNGcm9tQXJyYXk6ZXh0ZW5zaW9uc0Zv
clR5cGVdOwogICAgICAgICB9CiAgICAgfQotICAgIE5TQXJyYXkgKnVuaXF1ZUV4dGVuc2lvbnMg
PSBbZXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKLSAgICBbZXh0ZW5zaW9ucyByZWxlYXNlXTsKLSAg
ICByZXR1cm4gdW5pcXVlRXh0ZW5zaW9uczsKKyAgICByZXR1cm4gW2V4dGVuc2lvbnMgYWxsT2Jq
ZWN0c107CiB9CiAjZW5kaWYKIApAQCAtMTc4NSwxMSArMTc4MSw5IEBAIC0gKGlkKWluaXRTaW1w
bGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICopc3R5bGUgZnJhbWU6KENHUmVjdClm
cmFtZSBwcmVmCiAgICAgX3ByaXZhdGUtPmRyYXdzQmFja2dyb3VuZCA9IFlFUzsKICAgICBfcHJp
dmF0ZS0+YmFja2dyb3VuZENvbG9yID0gQ0dDb2xvclJldGFpbihXZWJDb3JlOjpjYWNoZWRDR0Nv
bG9yKFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSkpOwogCi0gICAgV2ViRnJhbWVWaWV3ICpmcmFtZVZp
ZXcgPSBuaWw7Ci0gICAgZnJhbWVWaWV3ID0gW1tXZWJGcmFtZVZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6IENHUmVjdE1ha2UoMCwwLGZyYW1lLnNpemUud2lkdGgsZnJhbWUuc2l6ZS5oZWlnaHQp
XTsKKyAgICBhdXRvIGZyYW1lVmlldyA9IGFkb3B0TlMoW1tXZWJGcmFtZVZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6IENHUmVjdE1ha2UoMCwwLGZyYW1lLnNpemUud2lkdGgsZnJhbWUuc2l6ZS5o
ZWlnaHQpXSk7CiAgICAgW2ZyYW1lVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRo
U2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVdOwotICAgIFtzZWxmIGFkZFN1YnZpZXc6ZnJh
bWVWaWV3XTsKLSAgICBbZnJhbWVWaWV3IHJlbGVhc2VdOworICAgIFtzZWxmIGFkZFN1YnZpZXc6
ZnJhbWVWaWV3LmdldCgpXTsKIAogICAgIF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6
Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMuX2xvY2FsU3RvcmFn
ZURhdGFiYXNlUGF0aCk7CiAgICAgX3ByaXZhdGUtPmdyb3VwLT5hZGRXZWJWaWV3KHNlbGYpOwpA
QCAtMTg2NSw3ICsxODU5LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHls
ZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6
QHNlbGVjdG9yKF93YWtXaW5kb3dTY3JlZW5TY2FsZUNoYW5nZWQ6KSBuYW1lOldBS1dpbmRvd1Nj
cmVlblNjYWxlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpA
c2VsZWN0b3IoX3dha1dpbmRvd1Zpc2liaWxpdHlDaGFuZ2VkOikgbmFtZTpXQUtXaW5kb3dWaXNp
YmlsaXR5RGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogCi0gICAgW1dlYkZyYW1l
IF9jcmVhdGVNYWluRnJhbWVXaXRoU2ltcGxlSFRNTERvY3VtZW50V2l0aFBhZ2U6X3ByaXZhdGUt
PnBhZ2UgZnJhbWVWaWV3OmZyYW1lVmlldyBzdHlsZTpzdHlsZV07CisgICAgW1dlYkZyYW1lIF9j
cmVhdGVNYWluRnJhbWVXaXRoU2ltcGxlSFRNTERvY3VtZW50V2l0aFBhZ2U6X3ByaXZhdGUtPnBh
Z2UgZnJhbWVWaWV3OmZyYW1lVmlldy5nZXQoKSBzdHlsZTpzdHlsZV07CiAKICAgICBbc2VsZiBf
YWRkVG9BbGxXZWJWaWV3c1NldF07CiAKQEAgLTI1NzYsMjIgKzI1NzAsMTggQEAgLSAoV2ViRG93
bmxvYWQgKilfZG93bmxvYWRVUkw6KE5TVVJMICopVVJMCiB7CiAgICAgQVNTRVJUKFVSTCk7CiAK
LSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdp
dGhVUkw6VVJMXTsKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFs
bG9jXSBpbml0V2l0aFVSTDpVUkxdKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCi0gICAgV2ViRG93bmxvYWQgKmRvd25sb2FkID0gW1dlYkRvd25sb2FkIF9kb3dubG9hZFdp
dGhSZXF1ZXN0OnJlcXVlc3QgZGVsZWdhdGU6X3ByaXZhdGUtPmRvd25sb2FkRGVsZWdhdGUgZGly
ZWN0b3J5Om5pbF07CisgICAgcmV0dXJuIFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoUmVxdWVz
dDpyZXF1ZXN0LmdldCgpIGRlbGVnYXRlOl9wcml2YXRlLT5kb3dubG9hZERlbGVnYXRlIGRpcmVj
dG9yeTpuaWxdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgW3JlcXVl
c3QgcmVsZWFzZV07Ci0KLSAgICByZXR1cm4gZG93bmxvYWQ7CiB9CiAKIC0gKFdlYlZpZXcgKilf
b3Blbk5ld1dpbmRvd1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7Ci0gICAg
TlNEaWN0aW9uYXJ5ICpmZWF0dXJlcyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAg
ICBhdXRvIGZlYXR1cmVzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwog
ICAgIFdlYlZpZXcgKm5ld1dpbmRvd1dlYlZpZXcgPSBbW3NlbGYgX1VJRGVsZWdhdGVGb3J3YXJk
ZXJdIHdlYlZpZXc6c2VsZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6bmlsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dGZWF0dXJlczpmZWF0dXJlc107
Ci0gICAgW2ZlYXR1cmVzIHJlbGVhc2VdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93RmVhdHVyZXM6ZmVhdHVyZXMuZ2V0KCldOwog
ICAgIGlmICghbmV3V2luZG93V2ViVmlldykKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMzM2
Niw5ICszMzU2LDggQEAgLSAodm9pZClfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZToo
V2ViRnJhbWUgKilmcmFtZQogICAgIGlmIChhdXRvKiBlbGVtZW50ID0gZG9jdW1lbnQgPyBkb2N1
bWVudC0+ZnVsbHNjcmVlbk1hbmFnZXIoKS5jdXJyZW50RnVsbHNjcmVlbkVsZW1lbnQoKSA6IDAp
IHsKICAgICAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6Y2xvc2VGdWxsU2Ny
ZWVuV2l0aExpc3RlbmVyOik7CiAgICAgICAgIGlmIChbX3ByaXZhdGUtPlVJRGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgewotICAgICAgICAgICAgV2ViS2l0RnVsbFNjcmVl
bkxpc3RlbmVyICpsaXN0ZW5lciA9IFtbV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFsbG9jXSBp
bml0V2l0aEVsZW1lbnQ6ZWxlbWVudF07Ci0gICAgICAgICAgICBDYWxsVUlEZWxlZ2F0ZShzZWxm
LCBzZWxlY3RvciwgbGlzdGVuZXIpOwotICAgICAgICAgICAgW2xpc3RlbmVyIHJlbGVhc2VdOwor
ICAgICAgICAgICAgYXV0byBsaXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJLaXRGdWxsU2NyZWVuTGlz
dGVuZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudDplbGVtZW50XSk7CisgICAgICAgICAgICBDYWxs
VUlEZWxlZ2F0ZShzZWxmLCBzZWxlY3RvciwgbGlzdGVuZXIuZ2V0KCkpOwogICAgICAgICB9IGVs
c2UgaWYgKF9wcml2YXRlLT5uZXdGdWxsc2NyZWVuQ29udHJvbGxlciAmJiBbX3ByaXZhdGUtPm5l
d0Z1bGxzY3JlZW5Db250cm9sbGVyIGlzRnVsbFNjcmVlbl0pIHsKICAgICAgICAgICAgIFtfcHJp
dmF0ZS0+bmV3RnVsbHNjcmVlbkNvbnRyb2xsZXIgY2xvc2VdOwogICAgICAgICB9CkBAIC0zNjEz
LDExICszNjAyLDEwIEBAIC0gKHZvaWQpcmVtb3ZlQWxsQ2FyZXRDaGFuZ2VMaXN0ZW5lcnMKIC0g
KHZvaWQpY2FyZXRDaGFuZ2VkCiB7CiAgICAgW19wcml2YXRlLT5fY2FyZXRDaGFuZ2VMaXN0ZW5l
ciBjYXJldENoYW5nZWRdOwotICAgIE5TU2V0ICpjb3B5ID0gW19wcml2YXRlLT5fY2FyZXRDaGFu
Z2VMaXN0ZW5lcnMgY29weV07Ci0gICAgZm9yIChpZCA8V2ViQ2FyZXRDaGFuZ2VMaXN0ZW5lcj4g
bGlzdGVuZXIgaW4gY29weSkgeworICAgIGF1dG8gY29weSA9IGFkb3B0TlMoW19wcml2YXRlLT5f
Y2FyZXRDaGFuZ2VMaXN0ZW5lcnMgY29weV0pOworICAgIGZvciAoaWQgPFdlYkNhcmV0Q2hhbmdl
TGlzdGVuZXI+IGxpc3RlbmVyIGluIGNvcHkuZ2V0KCkpIHsKICAgICAgICAgW2xpc3RlbmVyIGNh
cmV0Q2hhbmdlZF07CiAgICAgfQotICAgIFtjb3B5IHJlbGVhc2VdOwogfQogCiAtICh2b2lkKV9j
bGVhckRlbGVnYXRlcwpAQCAtMzg2MSw5ICszODQ5LDggQEAgLSAodm9pZClzZXRCYWNrZ3JvdW5k
Q29sb3I6KE5TQ29sb3IgKiliYWNrZ3JvdW5kQ29sb3IKICAgICBpZiAoW19wcml2YXRlLT5iYWNr
Z3JvdW5kQ29sb3IgaXNFcXVhbDpiYWNrZ3JvdW5kQ29sb3JdKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZCBvbGQgPSBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yOworICAgIGF1dG8gb2xkID0g
YWRvcHROUyhfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yKTsKICAgICBfcHJpdmF0ZS0+YmFja2dy
b3VuZENvbG9yID0gW2JhY2tncm91bmRDb2xvciByZXRhaW5dOwotICAgIFtvbGQgcmVsZWFzZV07
CiAKICAgICBbW3NlbGYgbWFpbkZyYW1lXSBfdXBkYXRlQmFja2dyb3VuZEFuZFVwZGF0ZXNXaGls
ZU9mZnNjcmVlbl07CiB9CkBAIC01MzAwLDcgKzUyODcsNyBAQCArIChOU0FycmF5ICopTUlNRVR5
cGVzU2hvd25Bc0hUTUwKIAogKyAodm9pZClzZXRNSU1FVHlwZXNTaG93bkFzSFRNTDooTlNBcnJh
eSAqKU1JTUVUeXBlcwogewotICAgIE5TRGljdGlvbmFyeSAqdmlld1R5cGVzID0gW1tXZWJGcmFt
ZVZpZXcgX3ZpZXdUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246WUVTXSBjb3B5XTsKKyAgICBh
dXRvIHZpZXdUeXBlcyA9IGFkb3B0TlMoW1tXZWJGcmFtZVZpZXcgX3ZpZXdUeXBlc0FsbG93SW1h
Z2VUeXBlT21pc3Npb246WUVTXSBjb3B5XSk7CiAgICAgTlNFbnVtZXJhdG9yICplbnVtZXJhdG9y
ID0gW3ZpZXdUeXBlcyBrZXlFbnVtZXJhdG9yXTsKICAgICBpZCBrZXk7CiAgICAgd2hpbGUgKChr
ZXkgPSBbZW51bWVyYXRvciBuZXh0T2JqZWN0XSkpIHsKQEAgLTUzMTQsNyArNTMwMSw2IEBAICsg
KHZvaWQpc2V0TUlNRVR5cGVzU2hvd25Bc0hUTUw6KE5TQXJyYXkgKilNSU1FVHlwZXMKICAgICAg
ICAgICAgICAgICByZXByZXNlbnRhdGlvbkNsYXNzOltXZWJIVE1MUmVwcmVzZW50YXRpb24gY2xh
c3NdCiAgICAgICAgICAgICAgICAgZm9yTUlNRVR5cGU6W01JTUVUeXBlcyBvYmplY3RBdEluZGV4
OmldXTsKICAgICB9Ci0gICAgW3ZpZXdUeXBlcyByZWxlYXNlXTsKIH0KIAogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQpAQCAtNTgwOSw3ICs1Nzk1LDcgQEAgLSAodm9pZClzZXRQcmVmZXJlbmNl
czooV2ViUHJlZmVyZW5jZXMgKilwcmVmcwogCiAgICAgW3ByZWZzIHdpbGxBZGRUb1dlYlZpZXdd
OwogCi0gICAgV2ViUHJlZmVyZW5jZXMgKm9sZFByZWZzID0gX3ByaXZhdGUtPnByZWZlcmVuY2Vz
OworICAgIGF1dG8gb2xkUHJlZnMgPSBhZG9wdE5TKF9wcml2YXRlLT5wcmVmZXJlbmNlcyk7CiAK
ICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVy
OnNlbGYgbmFtZTpXZWJQcmVmZXJlbmNlc0NoYW5nZWRJbnRlcm5hbE5vdGlmaWNhdGlvbiBvYmpl
Y3Q6W3NlbGYgcHJlZmVyZW5jZXNdXTsKICAgICBbV2ViUHJlZmVyZW5jZXMgX3JlbW92ZVJlZmVy
ZW5jZUZvcklkZW50aWZpZXI6W29sZFByZWZzIGlkZW50aWZpZXJdXTsKQEAgLTU4MjMsNyArNTgw
OSw2IEBAIC0gKHZvaWQpc2V0UHJlZmVyZW5jZXM6KFdlYlByZWZlcmVuY2VzICopcHJlZnMKICAg
ICBbW3NlbGYgcHJlZmVyZW5jZXNdIF9wb3N0UHJlZmVyZW5jZXNDaGFuZ2VkQVBJTm90aWZpY2F0
aW9uXTsKIAogICAgIFtvbGRQcmVmcyBkaWRSZW1vdmVGcm9tV2ViVmlld107Ci0gICAgW29sZFBy
ZWZzIHJlbGVhc2VdOwogfQogCiAtIChXZWJQcmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzCkBAIC01
ODM0LDkgKzU4MTksOCBAQCAtIChXZWJQcmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzCiAtICh2b2lk
KXNldFByZWZlcmVuY2VzSWRlbnRpZmllcjooTlNTdHJpbmcgKilhbklkZW50aWZpZXIKIHsKICAg
ICBpZiAoIV9wcml2YXRlLT5jbG9zZWQgJiYgIVthbklkZW50aWZpZXIgaXNFcXVhbDpbW3NlbGYg
cHJlZmVyZW5jZXNdIGlkZW50aWZpZXJdXSkgewotICAgICAgICBXZWJQcmVmZXJlbmNlcyAqcHJl
ZnMgPSBbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6YW5JZGVudGlm
aWVyXTsKLSAgICAgICAgW3NlbGYgc2V0UHJlZmVyZW5jZXM6cHJlZnNdOwotICAgICAgICBbcHJl
ZnMgcmVsZWFzZV07CisgICAgICAgIGF1dG8gcHJlZnMgPSBhZG9wdE5TKFtbV2ViUHJlZmVyZW5j
ZXMgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjphbklkZW50aWZpZXJdKTsKKyAgICAgICAgW3Nl
bGYgc2V0UHJlZmVyZW5jZXM6cHJlZnMuZ2V0KCldOwogICAgIH0KIH0KIApAQCAtNjgwNyw5ICs2
NzkxLDggQEAgLSAoQk9PTClzaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbgogCiAtICh2b2lkKXNl
dEN1cnJlbnROb2RlSGlnaGxpZ2h0OihXZWJOb2RlSGlnaGxpZ2h0ICopbm9kZUhpZ2hsaWdodAog
ewotICAgIGlkIG9sZCA9IF9wcml2YXRlLT5jdXJyZW50Tm9kZUhpZ2hsaWdodDsKKyAgICBhdXRv
IG9sZCA9IGFkb3B0TlMoX3ByaXZhdGUtPmN1cnJlbnROb2RlSGlnaGxpZ2h0KTsKICAgICBfcHJp
dmF0ZS0+Y3VycmVudE5vZGVIaWdobGlnaHQgPSBbbm9kZUhpZ2hsaWdodCByZXRhaW5dOwotICAg
IFtvbGQgcmVsZWFzZV07CiB9CiAKIC0gKFdlYk5vZGVIaWdobGlnaHQgKiljdXJyZW50Tm9kZUhp
Z2hsaWdodApAQCAtNzE1MywxMiArNzEzNiwxMSBAQCAtICh2b2lkKXN0b3BMb2FkaW5nQW5kQ2xl
YXIKIAogICAgICAgICBXZWJGcmFtZVZpZXcgKm1haW5GcmFtZVZpZXcgPSBbZnJhbWUgZnJhbWVW
aWV3XTsKICAgICAgICAgZmxvYXQgc2NhbGUgPSBbW21haW5GcmFtZVZpZXcgZG9jdW1lbnRWaWV3
XSBzY2FsZV07Ci0gICAgICAgIFdlYlBsYWluV2hpdGVWaWV3ICpwbGFpbldoaXRlVmlldyA9IFtb
V2ViUGxhaW5XaGl0ZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF07CisgICAg
ICAgIGF1dG8gcGxhaW5XaGl0ZVZpZXcgPSBhZG9wdE5TKFtbV2ViUGxhaW5XaGl0ZVZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0pOwogICAgICAgICBbcGxhaW5XaGl0ZVZpZXcg
c2V0U2NhbGU6c2NhbGVdOwogICAgICAgICBbcGxhaW5XaGl0ZVZpZXcgc2V0RnJhbWU6W21haW5G
cmFtZVZpZXcgYm91bmRzXV07Ci0gICAgICAgIFttYWluRnJhbWVWaWV3IF9zZXREb2N1bWVudFZp
ZXc6cGxhaW5XaGl0ZVZpZXddOworICAgICAgICBbbWFpbkZyYW1lVmlldyBfc2V0RG9jdW1lbnRW
aWV3OnBsYWluV2hpdGVWaWV3LmdldCgpXTsKICAgICAgICAgW3BsYWluV2hpdGVWaWV3IHNldE5l
ZWRzRGlzcGxheTpZRVNdOwotICAgICAgICBbcGxhaW5XaGl0ZVZpZXcgcmVsZWFzZV07CiAgICAg
fSk7CiB9CiAjZW5kaWYKQEAgLTg2NzAsMTEgKzg2NTIsMTAgQEAgLSAodm9pZClfb3BlbkZyYW1l
SW5OZXdXaW5kb3dGcm9tTWVudTooTlNNZW51SXRlbSAqKXNlbmRlcgogICAgIEFTU0VSVChbZWxl
bWVudCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSk7CiAKICAgICBXZWJEYXRh
U291cmNlICpkYXRhU291cmNlID0gWyhXZWJGcmFtZSAqKVtlbGVtZW50IG9iamVjdEZvcktleTpX
ZWJFbGVtZW50RnJhbWVLZXldIGRhdGFTb3VyY2VdOwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVz
dCA9IFtbZGF0YVNvdXJjZSByZXF1ZXN0XSBjb3B5XTsKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9w
dE5TKFtbZGF0YVNvdXJjZSByZXF1ZXN0XSBjb3B5XSk7CiAgICAgQVNTRVJUKHJlcXVlc3QpOwog
Ci0gICAgW3NlbGYgX29wZW5OZXdXaW5kb3dXaXRoUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBbcmVx
dWVzdCByZWxlYXNlXTsKKyAgICBbc2VsZiBfb3Blbk5ld1dpbmRvd1dpdGhSZXF1ZXN0OnJlcXVl
c3QuZ2V0KCldOwogfQogCiAtICh2b2lkKV9zZWFyY2hXaXRoR29vZ2xlRnJvbU1lbnU6KGlkKXNl
bmRlcgpAQCAtODY5MSwxMiArODY3MiwxMSBAQCAtICh2b2lkKV9zZWFyY2hXaXRoR29vZ2xlRnJv
bU1lbnU6KGlkKXNlbmRlcgogCiAgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFz
dGVib2FyZCBwYXN0ZWJvYXJkV2l0aFVuaXF1ZU5hbWVdOwogICAgIFtwYXN0ZWJvYXJkIGRlY2xh
cmVUeXBlczpAW1dlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5p
bF07Ci0gICAgTlNNdXRhYmxlU3RyaW5nICpzID0gW3NlbGVjdGVkU3RyaW5nIG11dGFibGVDb3B5
XTsKKyAgICBhdXRvIHMgPSBhZG9wdE5TKFtzZWxlY3RlZFN0cmluZyBtdXRhYmxlQ29weV0pOwog
ICAgIGNvbnN0IHVuaWNoYXIgbm9uQnJlYWtpbmdTcGFjZUNoYXJhY3RlciA9IDB4QTA7CiAgICAg
TlNTdHJpbmcgKm5vbkJyZWFraW5nU3BhY2VTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6Jm5vbkJyZWFraW5nU3BhY2VDaGFyYWN0ZXIgbGVuZ3RoOjFdOwogICAgIFtzIHJl
cGxhY2VPY2N1cnJlbmNlc09mU3RyaW5nOm5vbkJyZWFraW5nU3BhY2VTdHJpbmcgd2l0aFN0cmlu
ZzpAIiAiIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBbcyBsZW5ndGhdKV07Ci0gICAg
W3Bhc3RlYm9hcmQgc2V0U3RyaW5nOnMgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXTsKLSAgICBbcyByZWxlYXNlXTsKKyAgICBbcGFzdGVib2FyZCBzZXRTdHJp
bmc6cy5nZXQoKSBmb3JUeXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCld
OwogCiAgICAgLy8gRklYTUU6IHNlZW1zIGZyYWdpbGUgdG8gdXNlIHRoZSBzZXJ2aWNlIGJ5IG5h
bWUsIGJ1dCB0aGlzIGlzIHdoYXQgQXBwS2l0IGRvZXMKICAgICBOU1BlcmZvcm1TZXJ2aWNlKEAi
U2VhcmNoIFdpdGggR29vZ2xlIiwgcGFzdGVib2FyZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYldpbmRvd0FuaW1hdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tCmluZGV4IGFmYTdiNTE0
N2I5NWRiN2FkNGQ1NzdhNjkwOGU4ODA0OTA4OTRhZWQuLmUwMGM5ODhmYjQ1MTFlZDZlZTdjYzFj
ZDQzNDU1NDMxYjZhYWQ4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0
IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMu
aD4KICNpbXBvcnQgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHNsb3dNb3Rpb25GYWN0b3IgPSAxMDsKIApAQCAtMTc4
LDkgKzE3OSw4IEBAIC0gKHZvaWQpc2V0Q3VycmVudFByb2dyZXNzOihOU0FuaW1hdGlvblByb2dy
ZXNzKXByb2dyZXNzCiAKIC0gKHZvaWQpc2V0U3ViQW5pbWF0aW9uOihOU0FuaW1hdGlvbiAqKWFu
aW1hdGlvbgogewotICAgIGlkIG9sZEFuaW1hdGlvbiA9IF9zdWJBbmltYXRpb247CisgICAgYXV0
byBvbGRBbmltYXRpb24gPSBhZG9wdE5TKF9zdWJBbmltYXRpb24pOwogICAgIF9zdWJBbmltYXRp
b24gPSBbYW5pbWF0aW9uIHJldGFpbl07Ci0gICAgW29sZEFuaW1hdGlvbiByZWxlYXNlXTsKIH0K
IAogLSAoTlNUaW1lSW50ZXJ2YWwpYWRkaXRpb25hbER1cmF0aW9uTmVlZGVkVG9SZWFjaEZpbmFs
RnJhbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBiMTMxYmRlMmE0MjAyN2Y2M2VhYWYzMGQwYzBjNDU3YzY3NDkxMzhhLi4yMTY4YjNhYmQ2YjI5
YmY0NzRiNzk1MGNhMjk0ODVmNmZiZWE0ZTVkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMjEtMDItMTEgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNh
Z2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE3ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVs
ZWFzZV0gaW4gV2ViS2l0IGJ5IHVzaW5nIHNtYXJ0IHBvaW50ZXJzLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25M
aXN0ZW5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
OgorICAgICAgICAoY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChk
ZXN0cm95V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChkdW1wRnJhbWVBc1BE
Rik6CisgICAgICAgIChkdW1wQmFja0ZvcndhcmRMaXN0Rm9yV2ViVmlldyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbToKKyAgICAgICAg
KCtbRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkIF9wYXN0ZWJvYXJkV2l0aE5hbWU6XSk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VEb3duOndpdGhNb2RpZmllcnM6XSk6
CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VVcDp3aXRoTW9kaWZpZXJz
Ol0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIG1vdXNlTW92ZVRvWDpZOl0p
OgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIGtleURvd246d2l0aE1vZGlmaWVy
czp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgc2Vu
dFRvdWNoRXZlbnRPZlR5cGU6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIg
dG91Y2hFbmRdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciB0b3VjaENhbmNl
bF0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5t
bToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzpyZXNvdXJjZTp3aWxs
U2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTpdKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OmFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4pOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OmNsZWFyQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmtlZXBXZWJI
aXN0b3J5KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldERhdGFiYXNlUXVvdGEpOgorICAgICAg
ICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKFRlc3RS
dW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKC1bQVBJVGVzdERl
bGVnYXRlSVBob25lIGluaXRXaXRoVGVzdFJ1bm5lcjp1dGY4RGF0YTpiYXNlVVJMOl0pOgorICAg
ICAgICAoLVtBUElUZXN0RGVsZWdhdGVJUGhvbmUgZGVhbGxvY10pOgorICAgICAgICAoLVtBUElU
ZXN0RGVsZWdhdGVJUGhvbmUgcnVuXSk6CisgICAgICAgICgtW0FQSVRlc3REZWxlZ2F0ZUlQaG9u
ZSBfY2xlYW5VcF0pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YXBpVGVzdE5ld1dpbmRvd0RhdGFM
b2FkQmFzZVVSTCk6CisgICAgICAgICgtW1N5bmNocm9ub3VzTG9hZGVyIGRlYWxsb2NdKToKKyAg
ICAgICAgKC1bU3luY2hyb25vdXNMb2FkZXIgY29ubmVjdGlvbjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6XSk6CisgICAgICAgICgrW1N5bmNocm9ub3VzTG9hZGVyIG1ha2VSZXF1
ZXN0OndpdGhVc2VybmFtZTpwYXNzd29yZDpdKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFkZENo
cm9tZUlucHV0RmllbGQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRl
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAgICAg
ICgtW1VJRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RG
cm9tT3JpZ2luOmZyYW1lOmxpc3RlbmVyOl0pOgorICAgICAgICAoLVtVSURlbGVnYXRlIHRpbWVy
RmlyZWRdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSBkZWFsbG9jXSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElP
Uy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0
aW9uTGlzdGVuZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1v
dmVOb3RpZmljYXRpb25MaXN0ZW5lcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3Iu
bW06CisgICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIGludGVycG9sYXRlZEV2ZW50czpdKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW06Cisg
ICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAgIChX
VFI6OlBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8ubW06
CisgICAgICAgICgtW1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8gZGVhbGxvY10pOgorICAg
ICAgICAoLVtXZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvIGRyYWdnZWRJbWFnZV0pOgorICAg
ICAgICAoLVtXZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvIGRyYWdnaW5nUGFzdGVib2FyZF0p
OgorICAgICAgICAoLVtXZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNl
XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3Rl
Ym9hcmQubW06CisgICAgICAgICgrW1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkIF9wYXN0ZWJv
YXJkV2l0aE5hbWU6XSk6CisgICAgICAgICgtW0xvY2FsUGFzdGVib2FyZCBfYWRkVHlwZXNXaXRo
b3V0VXBkYXRpbmdDaGFuZ2VDb3VudDpvd25lcjpdKToKKwogMjAyMS0wMi0xMSAgQWFrYXNoIEph
aW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgYnVpbGQud2Via2l0Lm9yZyBz
aG91bGQgZGlzcGxheSBjb21taXQgaWRlbnRpZmllciBpbiBidWlsZHMKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KaW5kZXgg
NjQ1ZmM4NjNjZWYxMGEwMGY1YmI0YjdkMTM5YzZlMGRjZTQwOGRlMS4uNDk4NDA5ZGIxYmEwZTY4
MTdlZmNmNmQzMmZhNDE2N2YzNTJhZThjOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KQEAgLTEwNTAsNyArMTA1MCw4
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIo
SlNPYmplY3RSZWYgZnVuY3Rpb25DYWxsYmFjCiAgICAgLy8gT3RoZXIgcGxhdGZvcm1zIG1heSBi
ZSBkaWZmZXJlbnQuCiAgICAgaWYgKG1fbm90aWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IFtbQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIgYWxsb2NdIGluaXRdOworCisgICAgbV9ub3RpZmljYXRpb25IYW5k
bGVyID0gYWRvcHROUyhbW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGFsbG9jXSBp
bml0XSk7CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzZXRQbGF0Zm9ybUVsZW1lbnQ6cGxh
dGZvcm1VSUVsZW1lbnQoKV07CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzZXRDYWxsYmFj
azpmdW5jdGlvbkNhbGxiYWNrXTsKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHN0YXJ0T2Jz
ZXJ2aW5nXTsKQEAgLTEwNjQsNyArMTA2NSw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQogICAgIEFTU0VSVChtX25vdGlmaWNhdGlv
bkhhbmRsZXIpOwogICAgIAogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc3RvcE9ic2Vydmlu
Z107Ci0gICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciByZWxlYXNlXTsKICAgICBtX25vdGlmaWNh
dGlvbkhhbmRsZXIgPSBuaWw7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggZTRhZmFjNjYyNTVlM2VhODlk
NmI0ZDkyMDFkMGQ4NTQ4ZDhkODkwNy4uOTY2ZjQ2NWJmYWIwNzdhZTgyY2VjYjdhMTcyMTRiNDgy
ZDQ0MDRlOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE0ODAsNyArMTQ4MCw4IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNPYmplY3RSZWYgZnVuY3Rp
b25DYWxsYmFjCiAgICAgLy8gT3RoZXIgcGxhdGZvcm1zIG1heSBiZSBkaWZmZXJlbnQuCiAgICAg
aWYgKG1fbm90aWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1f
bm90aWZpY2F0aW9uSGFuZGxlciA9IFtbQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIg
YWxsb2NdIGluaXRdOworCisgICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gYWRvcHROUyhbW0Fj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW21fbm90
aWZpY2F0aW9uSGFuZGxlciBzZXRQbGF0Zm9ybUVsZW1lbnQ6cGxhdGZvcm1VSUVsZW1lbnQoKV07
CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzZXRDYWxsYmFjazpmdW5jdGlvbkNhbGxiYWNr
XTsKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHN0YXJ0T2JzZXJ2aW5nXTsKQEAgLTE0OTQs
NyArMTQ5NSw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0
aW9uTGlzdGVuZXIoKQogICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkhhbmRsZXIpOwogCiAgICAg
W21fbm90aWZpY2F0aW9uSGFuZGxlciBzdG9wT2JzZXJ2aW5nXTsKLSAgICBbbV9ub3RpZmljYXRp
b25IYW5kbGVyIHJlbGVhc2VdOwogICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IG5pbDsKIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDY0MzY1
NDVhYjhmOTg1NmVmMjJhZDdmYzE1NjFhYmU0NzBiOGJlZGQuLjM1YWJmMWJlNWVmZmU0NmE0OTMw
MTk0NzU3ZWFlNjE0N2Y0MWU4OWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KQEAgLTczNSwyMSArNzM1LDE5IEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdB
bmRPZmZzY3JlZW5XaW5kb3coKQogICAgIHVpV2luZG93UmVjdC5vcmlnaW4ueSArPSBbVUlBcHAg
c3RhdHVzQmFySGVpZ2h0XTsKICAgICBVSVdpbmRvdyAqdWlXaW5kb3cgPSBbW1tVSVdpbmRvdyBh
bGxvY10gaW5pdFdpdGhGcmFtZTp1aVdpbmRvd1JlY3RdIGF1dG9yZWxlYXNlXTsKIAotICAgIFVJ
Vmlld0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyID0gW1tVSVZpZXdDb250cm9sbGVyIGFsbG9j
XSBpbml0XTsKLSAgICBbdWlXaW5kb3cgc2V0Um9vdFZpZXdDb250cm9sbGVyOnZpZXdDb250cm9s
bGVyXTsKLSAgICBbdmlld0NvbnRyb2xsZXIgcmVsZWFzZV07CisgICAgYXV0byB2aWV3Q29udHJv
bGxlciA9IGFkb3B0TlMoW1tVSVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3Vp
V2luZG93IHNldFJvb3RWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlci5nZXQoKV07CiAKICAg
ICAvLyBUaGUgVUlXaW5kb3cgYW5kIFVJV2ViQnJvd3NlclZpZXcgYXJlIHJlbGVhc2VkIHdoZW4g
dGhlIER1bXBSZW5kZXJUcmVlV2luZG93IGlzIGNsb3NlZC4KICAgICBkcnRXaW5kb3cudWlXaW5k
b3cgPSB1aVdpbmRvdzsKICAgICBkcnRXaW5kb3cuYnJvd3NlclZpZXcgPSB3ZWJCcm93c2VyVmll
dzsKIAotICAgIER1bXBSZW5kZXJUcmVlV2ViU2Nyb2xsVmlldyAqc2Nyb2xsVmlldyA9IFtbRHVt
cFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmxheW91dFRlc3RW
aWV3cG9ydFJlY3RdOworICAgIGF1dG8gc2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVy
VHJlZVdlYlNjcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6bGF5b3V0VGVzdFZpZXdwb3J0
UmVjdF0pOwogICAgIFtzY3JvbGxWaWV3IGFkZFN1YnZpZXc6d2ViQnJvd3NlclZpZXddOwogCi0g
ICAgW3ZpZXdDb250cm9sbGVyLnZpZXcgYWRkU3VidmlldzpzY3JvbGxWaWV3XTsKLSAgICBbc2Ny
b2xsVmlldyByZWxlYXNlXTsKKyAgICBbW3ZpZXdDb250cm9sbGVyIHZpZXddIGFkZFN1YnZpZXc6
c2Nyb2xsVmlldy5nZXQoKV07CiAKLSAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0YW5kYXJkVmll
d3BvcnQod2ViQnJvd3NlclZpZXcsIHNjcm9sbFZpZXcpOworICAgIGFkanVzdFdlYkRvY3VtZW50
Rm9yU3RhbmRhcmRWaWV3cG9ydCh3ZWJCcm93c2VyVmlldywgc2Nyb2xsVmlldy5nZXQoKSk7CiAj
ZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNzkxLDkgKzc4OSw4IEBAIHN0
YXRpYyB2b2lkIGRlc3Ryb3lXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KFdlYlZpZXcgKndlYlZp
ZXcpCiAKICAgICBbd2luZG93IGNsb3NlXTsgLy8gcmVsZWFzZXMgd2hlbiBjbG9zZWQKICNlbHNl
Ci0gICAgVUlXaW5kb3cgKnVpV2luZG93ID0gW2dXZWJCcm93c2VyVmlldyB3aW5kb3ddOworICAg
IGF1dG8gdWlXaW5kb3cgPSBhZG9wdE5TKFtnV2ViQnJvd3NlclZpZXcgd2luZG93XSk7CiAgICAg
W3VpV2luZG93IHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgIFt1aVdpbmRvdyByZWxlYXNlXTsK
ICNlbmRpZgogCiAgICAgW3dlYlZpZXcgcmVsZWFzZV07CkBAIC0xNDU0LDE3ICsxNDUxLDE1IEBA
IHN0YXRpYyBOU0RhdGEgKmR1bXBGcmFtZUFzUERGKFdlYkZyYW1lICpmcmFtZSkKICAgICBbcHJp
bnRJbmZvRGljdCBzZXRPYmplY3Q6TlNQcmludFNhdmVKb2IgZm9yS2V5Ok5TUHJpbnRKb2JEaXNw
b3NpdGlvbl07CiAgICAgW3ByaW50SW5mb0RpY3Qgc2V0T2JqZWN0OnBhdGggZm9yS2V5Ok5TUHJp
bnRTYXZlUGF0aF07CiAKLSAgICBOU1ByaW50SW5mbyAqcHJpbnRJbmZvID0gW1tOU1ByaW50SW5m
byBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OnByaW50SW5mb0RpY3RdOworICAgIGF1dG8gcHJp
bnRJbmZvID0gYWRvcHROUyhbW05TUHJpbnRJbmZvIGFsbG9jXSBpbml0V2l0aERpY3Rpb25hcnk6
cHJpbnRJbmZvRGljdF0pOwogICAgIFtwcmludEluZm8gc2V0SG9yaXpvbnRhbFBhZ2luYXRpb246
TlNBdXRvUGFnaW5hdGlvbl07CiAgICAgW3ByaW50SW5mbyBzZXRWZXJ0aWNhbFBhZ2luYXRpb246
TlNBdXRvUGFnaW5hdGlvbl07CiAgICAgW3ByaW50SW5mbyBzZXRWZXJ0aWNhbGx5Q2VudGVyZWQ6
Tk9dOwogCi0gICAgTlNQcmludE9wZXJhdGlvbiAqcHJpbnRPcGVyYXRpb24gPSBbTlNQcmludE9w
ZXJhdGlvbiBwcmludE9wZXJhdGlvbldpdGhWaWV3OltmcmFtZSBmcmFtZVZpZXddIHByaW50SW5m
bzpwcmludEluZm9dOworICAgIE5TUHJpbnRPcGVyYXRpb24gKnByaW50T3BlcmF0aW9uID0gW05T
UHJpbnRPcGVyYXRpb24gcHJpbnRPcGVyYXRpb25XaXRoVmlldzpbZnJhbWUgZnJhbWVWaWV3XSBw
cmludEluZm86cHJpbnRJbmZvLmdldCgpXTsKICAgICBbcHJpbnRPcGVyYXRpb24gc2V0U2hvd1Bh
bmVsczpOT107CiAgICAgW3ByaW50T3BlcmF0aW9uIHJ1bk9wZXJhdGlvbl07CiAKLSAgICBbcHJp
bnRJbmZvIHJlbGVhc2VdOwotCiAgICAgTlNEYXRhICpwZGZEYXRhID0gW05TRGF0YSBkYXRhV2l0
aENvbnRlbnRzT2ZGaWxlOnBhdGhdOwogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gcmVtb3ZlRmlsZUF0UGF0aDpwYXRoIGhhbmRsZXI6bmlsXTsKIApAQCAtMTQ4MSw3ICsxNDc2
LDcgQEAgc3RhdGljIHZvaWQgZHVtcEJhY2tGb3J3YXJkTGlzdEZvcldlYlZpZXcoV2ViVmlldyAq
dmlldykKIAogICAgIC8vIFByaW50IG91dCBhbGwgaXRlbXMgaW4gdGhlIGxpc3QgYWZ0ZXIgcHJl
dlRlc3RCRkl0ZW0sIHdoaWNoIHdhcyBmcm9tIHRoZSBwcmV2aW91cyB0ZXN0CiAgICAgLy8gR2F0
aGVyIGl0ZW1zIGZyb20gdGhlIGVuZCBvZiB0aGUgbGlzdCwgdGhlIHByaW50IHRoZW0gb3V0IGZy
b20gb2xkZXN0IHRvIG5ld2VzdAotICAgIE5TTXV0YWJsZUFycmF5ICppdGVtc1RvUHJpbnQgPSBb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIGl0ZW1zVG9QcmludCA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAoaW50IGkgPSBb
YmZMaXN0IGZvcndhcmRMaXN0Q291bnRdOyBpID4gMDsgaS0tKSB7CiAgICAgICAgIFdlYkhpc3Rv
cnlJdGVtICppdGVtID0gW2JmTGlzdCBpdGVtQXRJbmRleDppXTsKICAgICAgICAgLy8gc29tZXRo
aW5nIGlzIHdyb25nIGlmIHRoZSBpdGVtIGZyb20gdGhlIGxhc3QgdGVzdCBpcyBpbiB0aGUgZm9y
d2FyZCBwYXJ0IG9mIHRoZSBiL2YgbGlzdApAQCAtMTUwMyw3ICsxNDk4LDYgQEAgc3RhdGljIHZv
aWQgZHVtcEJhY2tGb3J3YXJkTGlzdEZvcldlYlZpZXcoV2ViVmlldyAqdmlldykKICAgICBmb3Ig
KGludCBpID0gW2l0ZW1zVG9QcmludCBjb3VudF0tMTsgaSA+PSAwOyBpLS0pCiAgICAgICAgIGR1
bXBIaXN0b3J5SXRlbShbaXRlbXNUb1ByaW50IG9iamVjdEF0SW5kZXg6aV0sIDgsIGkgPT0gY3Vy
cmVudEl0ZW1JbmRleCk7CiAKLSAgICBbaXRlbXNUb1ByaW50IHJlbGVhc2VdOwogICAgIHByaW50
ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOwog
fQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQ
YXN0ZWJvYXJkLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFz
dGVib2FyZC5tbQppbmRleCA5ODA3NzM2ZjM4M2QyZWU3NjAwZmJlY2NlYzc0ZmVjZTQ4MmVhZGQ5
Li40MTYyODg5MzUzMzVmNjM4ODZkNGIwYTU4Mzg0ZjU4NWZlZmQ3YjU5IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0KQEAg
LTY4LDEzICs2OCwxMSBAQCArIChOU1Bhc3RlYm9hcmQgKilfcGFzdGVib2FyZFdpdGhOYW1lOihO
U1N0cmluZyAqKW5hbWUKICAgICAgICAgbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiTG9jYWxQYXN0ZWJvYXJkJWQiLCArK251bWJlcl07CiAgICAgaWYgKCFsb2NhbFBhc3RlYm9h
cmRzKQogICAgICAgICBsb2NhbFBhc3RlYm9hcmRzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XTsKLSAgICBMb2NhbFBhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbbG9jYWxQYXN0
ZWJvYXJkcyBvYmplY3RGb3JLZXk6bmFtZV07Ci0gICAgaWYgKHBhc3RlYm9hcmQpCisgICAgaWYg
KExvY2FsUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtsb2NhbFBhc3RlYm9hcmRzIG9iamVjdEZv
cktleTpuYW1lXSkKICAgICAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7Ci0gICAgcGFzdGVib2FyZCA9
IFtbTG9jYWxQYXN0ZWJvYXJkIGFsbG9jXSBpbml0V2l0aE5hbWU6bmFtZV07Ci0gICAgW2xvY2Fs
UGFzdGVib2FyZHMgc2V0T2JqZWN0OnBhc3RlYm9hcmQgZm9yS2V5Om5hbWVdOwotICAgIFtwYXN0
ZWJvYXJkIHJlbGVhc2VdOwotICAgIHJldHVybiBwYXN0ZWJvYXJkOworICAgIGF1dG8gcGFzdGVi
b2FyZCA9IGFkb3B0TlMoW1tMb2NhbFBhc3RlYm9hcmQgYWxsb2NdIGluaXRXaXRoTmFtZTpuYW1l
XSk7CisgICAgW2xvY2FsUGFzdGVib2FyZHMgc2V0T2JqZWN0OnBhc3RlYm9hcmQuZ2V0KCkgZm9y
S2V5Om5hbWVdOworICAgIHJldHVybiBwYXN0ZWJvYXJkLmdldCgpOwogfQogCiArICh2b2lkKXJl
bGVhc2VMb2NhbFBhc3RlYm9hcmRzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9F
dmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IDgyNzUxYmM1Yjc0MTcxNTVjZTViNTQ0YWM4
NzBhNmM5ZGQzZGIyMTMuLjdlZDlhOGRlYjU5Mjc4OTQ3M2ZhMTI5YTNiYzJlYmM4Y2EzYjdjNGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9s
bGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9s
bGVyLm1tCkBAIC01ODQsNyArNTg0LDcgQEAgLSAodm9pZCltb3VzZURvd246KGludClidXR0b25O
dW1iZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0Kiltb2RpZmllcnMKICAgICAKICNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU0V2ZW50VHlwZSBldmVudFR5cGUgPSBldmVu
dFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihidXR0b25OdW1iZXIsIE1vdXNlRG93bik7Ci0g
ICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBl
CisgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6
ZXZlbnRUeXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRp
b246bGFzdE1vdXNlUG9zaXRpb24gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1vZGlmaWVyRmxhZ3M6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycykKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRU
aW1lXQpAQCAtNTkyLDIzICs1OTIsMjMgQEAgLSAodm9pZCltb3VzZURvd246KGludClidXR0b25O
dW1iZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0Kiltb2RpZmllcnMKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRl
eHQgY3VycmVudENvbnRleHRdIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV2ZW50TnVtYmVyOisrZXZlbnROdW1iZXIgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWNrQ291bnQ6Y2xpY2tDb3VudCAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmVzc3VyZTowLjBdOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByZXNzdXJlOjAuMF0pOwogI2Vsc2UKLSAgICBXZWJFdmVudCAqZXZl
bnQgPSBbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aE1vdXNlRXZlbnRUeXBlOldlYkV2ZW50TW91
c2VEb3duCisgICAgYXV0byBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdp
dGhNb3VzZUV2ZW50VHlwZTpXZWJFdmVudE1vdXNlRG93bgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2
ZW50VGltZV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvY2F0aW9uOmxhc3RNb3VzZVBvc2l0aW9uXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOmxhc3RNb3VzZVBvc2l0
aW9uXSk7CiAjZW5kaWYKIAogICAgIE5TVmlldyAqc3ViVmlldyA9IFtbbWFpbkZyYW1lIHdlYlZp
ZXddIGhpdFRlc3Q6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKICAgICBpZiAoc3ViVmlldykg
ewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRF
dmVudDpldmVudF07CisgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50LmdldCgp
XTsKICNlbmRpZgogICAgICAgICB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAg
ICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gZXZlbnRQcmVzc2Vk
TW91c2VCdXR0b25zU3dpenpsZXJGb3JWaWV3QW5kRXZlbnQoc3ViVmlldywgZXZlbnQpOworICAg
ICAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IGV2ZW50UHJl
c3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KHN1YlZpZXcsIGV2ZW50Lmdl
dCgpKTsKICNlbmRpZgotICAgICAgICAgICAgW3N1YlZpZXcgbW91c2VEb3duOmV2ZW50XTsKKyAg
ICAgICAgICAgIFtzdWJWaWV3IG1vdXNlRG93bjpldmVudC5nZXQoKV07CiAgICAgICAgIH0KICNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6
bmlsXTsKQEAgLTYxNiwxMCArNjE2LDYgQEAgLSAodm9pZCltb3VzZURvd246KGludClidXR0b25O
dW1iZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0Kiltb2RpZmllcnMKICAgICAgICAg
aWYgKGJ1dHRvbk51bWJlciA9PSBMZWZ0TW91c2VCdXR0b24pCiAgICAgICAgICAgICBsZWZ0TW91
c2VCdXR0b25Eb3duID0gWUVTOwogICAgIH0KLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgW2V2ZW50IHJlbGVhc2VdOwotI2VuZGlmCiB9CiAKIC0gKHZvaWQpbW91c2VEb3duOihpbnQp
YnV0dG9uTnVtYmVyCkBAIC02NzYsNyArNjcyLDcgQEAgLSAodm9pZCltb3VzZVVwOihpbnQpYnV0
dG9uTnVtYmVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCopbW9kaWZpZXJzCiAgICAg
W1tbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIE5TRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGV2ZW50VHlwZUZv
ck1vdXNlQnV0dG9uQW5kQWN0aW9uKGJ1dHRvbk51bWJlciwgTW91c2VVcCk7Ci0gICAgTlNFdmVu
dCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBlCisgICAgYXV0
byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBl
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246bGFzdE1v
dXNlUG9zaXRpb24gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVy
RmxhZ3M6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQpAQCAt
Njg0LDExICs2ODAsMTEgQEAgLSAodm9pZCltb3VzZVVwOihpbnQpYnV0dG9uTnVtYmVyIHdpdGhN
b2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCopbW9kaWZpZXJzCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRD
b250ZXh0XSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudE51bWJl
cjorK2V2ZW50TnVtYmVyIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGlja0NvdW50OmNsaWNrQ291bnQgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJlc3N1cmU6MC4wXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmVzc3VyZTowLjBdKTsKICNlbHNlCi0gICAgV2ViRXZlbnQgKmV2ZW50ID0gW1tXZWJF
dmVudCBhbGxvY10gaW5pdFdpdGhNb3VzZUV2ZW50VHlwZTpXZWJFdmVudE1vdXNlVXAKKyAgICBh
dXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aE1vdXNlRXZlbnRU
eXBlOldlYkV2ZW50TW91c2VVcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9u
Omxhc3RNb3VzZVBvc2l0aW9uXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOmxhc3RNb3VzZVBvc2l0aW9uXSk7CiAjZW5kaWYK
IAogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IFtbbWFpbkZyYW1lIHdlYlZpZXddIGhpdFRlc3Q6
W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKQEAgLTY5OCwxMyArNjk0LDEzIEBAIC0gKHZvaWQp
bW91c2VVcDooaW50KWJ1dHRvbk51bWJlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3Qq
KW1vZGlmaWVycwogICAgIHRhcmdldFZpZXcgPSB0YXJnZXRWaWV3ID8gdGFyZ2V0VmlldyA6IFtb
bWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKICAgICBhc3NlcnQodGFyZ2V0Vmll
dyk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW05TQXBwIF9zZXRDdXJyZW50RXZl
bnQ6ZXZlbnRdOworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50LmdldCgpXTsKICNl
bmRpZgogICAgIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgYXV0byBldmVu
dFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3
aXp6bGVyRm9yVmlld0FuZEV2ZW50KHRhcmdldFZpZXcsIGV2ZW50KTsKKyAgICAgICAgYXV0byBl
dmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9u
c1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KHRhcmdldFZpZXcsIGV2ZW50LmdldCgpKTsKICNlbmRp
ZgotICAgICAgICBbdGFyZ2V0VmlldyBtb3VzZVVwOmV2ZW50XTsKKyAgICAgICAgW3RhcmdldFZp
ZXcgbW91c2VVcDpldmVudC5nZXQoKV07CiAgICAgfQogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CkBAIC03MzAsMTAgKzcyNiw2IEBA
IC0gKHZvaWQpbW91c2VVcDooaW50KWJ1dHRvbk51bWJlciB3aXRoTW9kaWZpZXJzOihXZWJTY3Jp
cHRPYmplY3QqKW1vZGlmaWVycwogICAgICAgICBkcmFnZ2luZ0luZm8gPSBuaWw7CiAgICAgfQog
I2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtldmVudCByZWxlYXNlXTsK
LSNlbmRpZgogfQogCiAtICh2b2lkKW1vdXNlVXA6KGludClidXR0b25OdW1iZXIKQEAgLTc1Nyw3
ICs3NDksNyBAQCAtICh2b2lkKW1vdXNlTW92ZVRvWDooaW50KXggWTooaW50KXkKICAgICBOU1Zp
ZXcgKnZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIE5TUG9pbnQgbmV3TW91c2VQb3NpdGlvbiA9IFt2aWV3IGNvbnZlcnRQb2ludDpOU01h
a2VQb2ludCh4LCBbdmlldyBmcmFtZV0uc2l6ZS5oZWlnaHQgLSB5KSB0b1ZpZXc6bmlsXTsKLSAg
ICBOU0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZToobGVmdE1vdXNl
QnV0dG9uRG93biA/IE5TRXZlbnRUeXBlTGVmdE1vdXNlRHJhZ2dlZCA6IE5TRXZlbnRUeXBlTW91
c2VNb3ZlZCkKKyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IG1vdXNlRXZlbnRX
aXRoVHlwZToobGVmdE1vdXNlQnV0dG9uRG93biA/IE5TRXZlbnRUeXBlTGVmdE1vdXNlRHJhZ2dl
ZCA6IE5TRXZlbnRUeXBlTW91c2VNb3ZlZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2NhdGlvbjpuZXdNb3VzZVBvc2l0aW9uCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6MCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQpAQCAtNzY1
LDIzICs3NTcsMjMgQEAgLSAodm9pZCltb3VzZU1vdmVUb1g6KGludCl4IFk6KGludCl5CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3ND
b250ZXh0IGN1cnJlbnRDb250ZXh0XSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBldmVudE51bWJlcjorK2V2ZW50TnVtYmVyIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGlja0NvdW50OihsZWZ0TW91c2VCdXR0b25Eb3duID8gY2xpY2tDb3Vu
dCA6IDApIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNzdXJl
OjAuMF07Ci0gICAgQ0dFdmVudFJlZiBjZ0V2ZW50ID0gZXZlbnQuQ0dFdmVudDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzc3VyZTowLjBdKTsKKyAgICBDR0V2
ZW50UmVmIGNnRXZlbnQgPSBbZXZlbnQgQ0dFdmVudF07CiAgICAgQ0dFdmVudFNldEludGVnZXJW
YWx1ZUZpZWxkKGNnRXZlbnQsIGtDR01vdXNlRXZlbnREZWx0YVgsIG5ld01vdXNlUG9zaXRpb24u
eCAtIGxhc3RNb3VzZVBvc2l0aW9uLngpOwogICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVs
ZChjZ0V2ZW50LCBrQ0dNb3VzZUV2ZW50RGVsdGFZLCBuZXdNb3VzZVBvc2l0aW9uLnkgLSBsYXN0
TW91c2VQb3NpdGlvbi55KTsKLSAgICBldmVudCA9IFtOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6
Y2dFdmVudF07CisgICAgZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQgZXZlbnRXaXRoQ0dFdmVu
dDpjZ0V2ZW50XSk7CiAgICAgbGFzdE1vdXNlUG9zaXRpb24gPSBuZXdNb3VzZVBvc2l0aW9uOwog
I2Vsc2UKICAgICBsYXN0TW91c2VQb3NpdGlvbiA9IFt2aWV3IGNvbnZlcnRQb2ludDpOU01ha2VQ
b2ludCh4LCB5KSB0b1ZpZXc6bmlsXTsKLSAgICBXZWJFdmVudCAqZXZlbnQgPSBbW1dlYkV2ZW50
IGFsbG9jXSBpbml0V2l0aE1vdXNlRXZlbnRUeXBlOldlYkV2ZW50TW91c2VNb3ZlZAorICAgIGF1
dG8gZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoTW91c2VFdmVudFR5
cGU6V2ViRXZlbnRNb3VzZU1vdmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRp
b246bGFzdE1vdXNlUG9zaXRpb25dOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246bGFzdE1vdXNlUG9zaXRpb25dKTsKICNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogICAgIE5TVmlldyAqc3ViVmlldyA9IFtbbWFp
bkZyYW1lIHdlYlZpZXddIGhpdFRlc3Q6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKICAgICBp
ZiAoc3ViVmlldykgewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBbTlNBcHAg
X3NldEN1cnJlbnRFdmVudDpldmVudF07CisgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50
OmV2ZW50LmdldCgpXTsKICNlbmRpZgogICAgICAgICBpZiAobGVmdE1vdXNlQnV0dG9uRG93bikg
ewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNzkyLDI1ICs3ODQsMjEgQEAgLSAodm9p
ZCltb3VzZU1vdmVUb1g6KGludCl4IFk6KGludCl5CiAgICAgICAgICAgICAgICAgW1ttYWluRnJh
bWUgd2ViVmlld10gZHJhZ2dpbmdVcGRhdGVkOmRyYWdnaW5nSW5mb107CiAgICAgICAgICAgICB9
IGVsc2UgewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAgICAgICAgIGF1dG8g
ZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBldmVudFByZXNzZWRNb3VzZUJ1dHRv
bnNTd2l6emxlckZvclZpZXdBbmRFdmVudChzdWJWaWV3LCBldmVudCk7CisgICAgICAgICAgICAg
ICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IGV2ZW50UHJlc3NlZE1v
dXNlQnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KHN1YlZpZXcsIGV2ZW50LmdldCgpKTsK
ICNlbmRpZgotICAgICAgICAgICAgICAgIFtzdWJWaWV3IG1vdXNlRHJhZ2dlZDpldmVudF07Cisg
ICAgICAgICAgICAgICAgW3N1YlZpZXcgbW91c2VEcmFnZ2VkOmV2ZW50LmdldCgpXTsKICAgICAg
ICAgICAgIH0KICNlbmRpZgogICAgICAgICB9IGVsc2UgewogI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQotICAgICAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9
IGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KHN1YlZpZXcs
IGV2ZW50KTsKKyAgICAgICAgICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenps
ZXIgPSBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlckZvclZpZXdBbmRFdmVudChzdWJW
aWV3LCBldmVudC5nZXQoKSk7CiAjZW5kaWYKLSAgICAgICAgICAgIFtzdWJWaWV3IG1vdXNlTW92
ZWQ6ZXZlbnRdOworICAgICAgICAgICAgW3N1YlZpZXcgbW91c2VNb3ZlZDpldmVudC5nZXQoKV07
CiAgICAgICAgIH0KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgW05TQXBwIF9z
ZXRDdXJyZW50RXZlbnQ6bmlsXTsKICNlbmRpZgogICAgIH0KLQotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgW2V2ZW50IHJlbGVhc2VdOwotI2VuZGlmCiB9CiAKIC0gKHZvaWQpbW91c2VT
Y3JvbGxCeVg6KGludCl4IGFuZFk6KGludCl5IGNvbnRpbnVvdXNseTooQk9PTCljb250aW51b3Vz
bHkKQEAgLTExNjcsNyArMTE1NSw3IEBAIC0gKHZvaWQpa2V5RG93bjooTlNTdHJpbmcgKiljaGFy
YWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzCiAgICAgW1tb
bWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogCiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdp
dGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05T
RXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleURvd24KICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQpAQCAtMTE3NiwyMSArMTE2NCwyMSBA
QCAtICh2b2lkKWtleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdl
YlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFj
dGVyczpldmVudENoYXJhY3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwogICAgICAgICAgICAg
ICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2Rl
OmtleUNvZGVdOworICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7CiAj
ZWxzZQotICAgIFdlYkV2ZW50ICpldmVudCA9IFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5
RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGlt
ZV0gY2hhcmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2Rp
ZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50
Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2No
YXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXTsKKyAgICBhdXRvIGV2ZW50ID0g
YWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtl
eURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6ZXZlbnRD
aGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJGbGFncyBpc1JlcGVhdGlu
ZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFj
dGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJ
bmRleDowXSA9PSAnXHQnKV0pOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CisgICAgW05TQXBwIF9zZXRDdXJy
ZW50RXZlbnQ6ZXZlbnQuZ2V0KCldOwogI2VuZGlmCi0gICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3
XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBrZXlEb3duOmV2ZW50XTsKKyAgICBbW1tbbWFpbkZy
YW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnQuZ2V0KCld
OwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50
Om5pbF07CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGV2ZW50ID0g
W05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCisgICAgZXZlbnQgPSBy
ZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCiAgICAg
ICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQogICAgICAgICAg
ICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCiAgICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KQEAgLTExOTksMjMg
KzExODcsMTggQEAgLSAodm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRoTW9k
aWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAg
ICAga2V5Q29kZTprZXlDb2RlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5
Q29kZV0pOwogI2Vsc2UKLSAgICBbZXZlbnQgcmVsZWFzZV07Ci0gICAgZXZlbnQgPSBbW1dlYkV2
ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpb
c2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgbW9kaWZpZXJz
OihXZWJFdmVudEZsYWdzKW1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAg
d2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdElu
ZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0Jyld
OworICAgIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50
VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFy
YWN0ZXJzOmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdzKW1vZGlmaWVyRmxh
Z3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtl
eUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVy
IGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOworICAgIFtO
U0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50LmdldCgpXTsKICNlbmRpZgotICAgIFtbW1ttYWlu
RnJhbWUgd2ViVmlld10gd2luZG93XSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnRdOworICAg
IFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZl
bnQuZ2V0KCldOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtOU0FwcCBfc2V0Q3Vy
cmVudEV2ZW50Om5pbF07CiAjZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
W2V2ZW50IHJlbGVhc2VdOwotI2VuZGlmCiB9CiAKIC0gKHZvaWQpa2V5RG93bldyYXBwZXI6KE5T
U3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlm
aWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KQEAgLTE0OTQsOSArMTQ3
Nyw5IEBAIC0gKHZvaWQpc2V0VG91Y2hNb2RpZmllcjooTlNTdHJpbmcqKW1vZGlmaWVyTmFtZSB2
YWx1ZTooQk9PTClmbGFnCiAKIC0gKHZvaWQpc2VudFRvdWNoRXZlbnRPZlR5cGU6KFdlYkV2ZW50
VHlwZSl0eXBlCiB7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKnRvdWNoTG9jYXRpb25zID0gW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpbdG91Y2hlcyBjb3VudF1dOwotICAg
IE5TTXV0YWJsZUFycmF5ICp0b3VjaElkZW50aWZpZXJzID0gW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTpbdG91Y2hlcyBjb3VudF1dOwotICAgIE5TTXV0YWJsZUFycmF5
ICp0b3VjaFBoYXNlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6
W3RvdWNoZXMgY291bnRdXTsKKyAgICBhdXRvIHRvdWNoTG9jYXRpb25zID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Olt0b3VjaGVzIGNvdW50XV0pOwor
ICAgIGF1dG8gdG91Y2hJZGVudGlmaWVycyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTpbdG91Y2hlcyBjb3VudF1dKTsKKyAgICBhdXRvIHRvdWNoUGhh
c2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Olt0
b3VjaGVzIGNvdW50XV0pOwogICAgIAogICAgIENHUG9pbnQgY2VudHJvaWQgPSBDR1BvaW50WmVy
bzsKICAgICBOU1VJbnRlZ2VyIHRvdWNoZXNEb3duQ291bnQgPSAwOwpAQCAtMTUyMCwyNSArMTUw
MywyMCBAQCAtICh2b2lkKXNlbnRUb3VjaEV2ZW50T2ZUeXBlOihXZWJFdmVudFR5cGUpdHlwZQog
ICAgIGVsc2UKICAgICAgICAgY2VudHJvaWQgPSBDR1BvaW50WmVybzsKIAotICAgIFdlYkV2ZW50
ICpldmVudCA9IFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoVG91Y2hFdmVudFR5cGU6dHlwZQor
ICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoVG91Y2hF
dmVudFR5cGU6dHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2F0aW9uOmNlbnRyb2lkCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdzKW5leHRFdmVudEZsYWdz
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hDb3VudDpbdG91
Y2hlcyBjb3VudF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3Vj
aExvY2F0aW9uczp0b3VjaExvY2F0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRvdWNoSWRlbnRpZmllcnM6dG91Y2hJZGVudGlmaWVycwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNoUGhhc2VzOnRvdWNoUGhhc2VzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hMb2NhdGlvbnM6dG91Y2hM
b2NhdGlvbnMuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b3VjaElkZW50aWZpZXJzOnRvdWNoSWRlbnRpZmllcnMuZ2V0KCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0b3VjaFBoYXNlczp0b3VjaFBoYXNlcy5nZXQoKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzR2VzdHVyZToodG91Y2hlc0Rv
d25Db3VudCA+IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Vz
dHVyZVNjYWxlOjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXN0
dXJlUm90YXRpb246MF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VzdHVyZVJvdGF0aW9uOjBdKTsKICAgICAvLyBFbnN1cmUgdGhhdCBsYXlvdXQgaXMgdXAtdG8t
ZGF0ZSBzbyB0aGF0IGhpdC10ZXN0aW5nIHRocm91Z2ggV0FLVmlld3Mgd29ya3MgY29ycmVjdGx5
LgogICAgIFttYWluRnJhbWUgdXBkYXRlTGF5b3V0XTsKLSAgICBbW1ttYWluRnJhbWUgd2ViVmll
d10gd2luZG93XSBzZW5kRXZlbnRTeW5jaHJvbm91c2x5OmV2ZW50XTsKLSAgICBbZXZlbnQgcmVs
ZWFzZV07Ci0gICAgCi0gICAgW3RvdWNoTG9jYXRpb25zIHJlbGVhc2VdOwotICAgIFt0b3VjaElk
ZW50aWZpZXJzIHJlbGVhc2VdOwotICAgIFt0b3VjaFBoYXNlcyByZWxlYXNlXTsKKyAgICBbW1tt
YWluRnJhbWUgd2ViVmlld10gd2luZG93XSBzZW5kRXZlbnRTeW5jaHJvbm91c2x5OmV2ZW50Lmdl
dCgpXTsKICAgICAKICAgICBuZXh0RXZlbnRGbGFncyA9IDA7CiB9CkBAIC0xNTU3LDI4ICsxNTM1
LDI2IEBAIC0gKHZvaWQpdG91Y2hFbmQKIHsKICAgICBbc2VsZiBzZW50VG91Y2hFdmVudE9mVHlw
ZTpXZWJFdmVudFRvdWNoRW5kXTsKIAotICAgIE5TTXV0YWJsZUFycmF5ICp0b3VjaGVzVG9SZW1v
dmUgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHRvdWNoZXNUb1Jl
bW92ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAo
U3ludGhldGljVG91Y2ggKmN1cnJUb3VjaCBpbiB0b3VjaGVzKSB7CiAgICAgICAgIGlmIChjdXJy
VG91Y2gucGhhc2UgPT0gVUlUb3VjaFBoYXNlRW5kZWQpCiAgICAgICAgICAgICBbdG91Y2hlc1Rv
UmVtb3ZlIGFkZE9iamVjdDpjdXJyVG91Y2hdOwogICAgIH0KIAotICAgIFt0b3VjaGVzIHJlbW92
ZU9iamVjdHNJbkFycmF5OnRvdWNoZXNUb1JlbW92ZV07Ci0gICAgW3RvdWNoZXNUb1JlbW92ZSBy
ZWxlYXNlXTsKKyAgICBbdG91Y2hlcyByZW1vdmVPYmplY3RzSW5BcnJheTp0b3VjaGVzVG9SZW1v
dmUuZ2V0KCldOwogfQogCiAtICh2b2lkKXRvdWNoQ2FuY2VsCiB7CiAgICAgW3NlbGYgc2VudFRv
dWNoRXZlbnRPZlR5cGU6V2ViRXZlbnRUb3VjaENhbmNlbF07CiAKLSAgICBOU011dGFibGVBcnJh
eSAqdG91Y2hlc1RvUmVtb3ZlID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAg
YXV0byB0b3VjaGVzVG9SZW1vdmUgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRdKTsKICAgICBmb3IgKFN5bnRoZXRpY1RvdWNoICpjdXJyVG91Y2ggaW4gdG91Y2hlcykgewog
ICAgICAgICBpZiAoY3VyclRvdWNoLnBoYXNlID09IFVJVG91Y2hQaGFzZUNhbmNlbGxlZCkKICAg
ICAgICAgICAgIFt0b3VjaGVzVG9SZW1vdmUgYWRkT2JqZWN0OmN1cnJUb3VjaF07CiAgICAgfQog
Ci0gICAgW3RvdWNoZXMgcmVtb3ZlT2JqZWN0c0luQXJyYXk6dG91Y2hlc1RvUmVtb3ZlXTsKLSAg
ICBbdG91Y2hlc1RvUmVtb3ZlIHJlbGVhc2VdOworICAgIFt0b3VjaGVzIHJlbW92ZU9iamVjdHNJ
bkFycmF5OnRvdWNoZXNUb1JlbW92ZS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IDVkZjExNjk2
ODE3MDM2MGU0YTVjNzNkMTMzNzg3ZmYyOGE1M2I1OTUuLmUyNDlhYmYwZGY1Mzg0YWY5M2Q2Yjdh
MGE3YWE5YmJkMDMyYTg2ZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVz
b3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTE3OCw5ICsxNzgsOCBAQCAtKE5TVVJMUmVxdWVzdCAq
KXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcmVzb3VyY2U6aWRlbnRpZmllciB3aWxsU2VuZFJlcXVl
c3Q6IChOUwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5ld1JlcXVlc3QgPSBbcmVxdWVzdCBt
dXRhYmxlQ29weV07CiAgICAgY29uc3Qgc2V0PHN0cmluZz4mIGNsZWFySGVhZGVycyA9IGdUZXN0
UnVubmVyLT53aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMoKTsKICAgICBmb3IgKHNldDxzdHJp
bmc+Ojpjb25zdF9pdGVyYXRvciBoZWFkZXIgPSBjbGVhckhlYWRlcnMuYmVnaW4oKTsgaGVhZGVy
ICE9IGNsZWFySGVhZGVycy5lbmQoKTsgKytoZWFkZXIpIHsKLSAgICAgICAgTlNTdHJpbmcgKm5z
SGVhZGVyID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhVVEY4U3RyaW5nOmhlYWRlci0+Y19z
dHIoKV07Ci0gICAgICAgIFtuZXdSZXF1ZXN0IHNldFZhbHVlOm5pbCBmb3JIVFRQSGVhZGVyRmll
bGQ6bnNIZWFkZXJdOwotICAgICAgICBbbnNIZWFkZXIgcmVsZWFzZV07CisgICAgICAgIGF1dG8g
bnNIZWFkZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzpo
ZWFkZXItPmNfc3RyKCldKTsKKyAgICAgICAgW25ld1JlcXVlc3Qgc2V0VmFsdWU6bmlsIGZvckhU
VFBIZWFkZXJGaWVsZDpuc0hlYWRlci5nZXQoKV07CiAgICAgfQogICAgIGlmIChhdXRvKiBkZXN0
aW5hdGlvbiA9IGdUZXN0UnVubmVyLT5yZWRpcmVjdGlvbkRlc3RpbmF0aW9uRm9yVVJMKFtbdXJs
IGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSkpCiAgICAgICAgIFtuZXdSZXF1ZXN0IHNldFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6ZGVz
dGluYXRpb25dXV07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmlu
ZGV4IDg0NTA5ZTBlYjBhMTBhY2VjZDIxZmNiNWNiZDc5ODE0NjU0OTI4N2YuLmRjMDRjODdiNTc5
OGExYTIzYjY1NDc1OTJjMmY0NGI5ZjBiZWRiNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9UZXN0UnVubmVyTWFjLm1tCkBAIC0xNTgsMjAgKzE1OCwxNyBAQCB2b2lkIFRlc3RSdW5uZXI6
OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKQogCiBsb25nIGxvbmcgVGVzdFJ1bm5lcjo6YXBw
bGljYXRpb25DYWNoZURpc2tVc2FnZUZvck9yaWdpbihKU1N0cmluZ1JlZiB1cmwpCiB7Ci0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7Ci0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKm9y
aWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKXVybENGLmdldCgpXV07Ci0gICAgbG9uZyBs
b25nIHVzYWdlID0gW1dlYkFwcGxpY2F0aW9uQ2FjaGUgZGlza1VzYWdlRm9yT3JpZ2luOm9yaWdp
bl07Ci0gICAgW29yaWdpbiByZWxlYXNlXTsKKyAgICBhdXRvIHVybENGID0gYWRvcHRDRihKU1N0
cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwpKTsKKyAgICBhdXRvIG9y
aWdpbiA9IGFkb3B0TlMoW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXSk7Cisg
ICAgbG9uZyBsb25nIHVzYWdlID0gW1dlYkFwcGxpY2F0aW9uQ2FjaGUgZGlza1VzYWdlRm9yT3Jp
Z2luOm9yaWdpbi5nZXQoKV07CiAgICAgcmV0dXJuIHVzYWdlOwogfQogCiB2b2lkIFRlc3RSdW5u
ZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihKU1N0cmluZ1JlZiB1cmwpCiB7Ci0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7Ci0KLSAgICBXZWJTZWN1cml0eU9yaWdp
biAqb3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXTsKLSAgICBb
V2ViQXBwbGljYXRpb25DYWNoZSBkZWxldGVDYWNoZUZvck9yaWdpbjpvcmlnaW5dOwotICAgIFtv
cmlnaW4gcmVsZWFzZV07CisgICAgYXV0byB1cmxDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7CisgICAgYXV0byBvcmlnaW4gPSBhZG9w
dE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKXVybENGLmdldCgpXV0pOworICAgIFtXZWJBcHBs
aWNhdGlvbkNhY2hlIGRlbGV0ZUNhY2hlRm9yT3JpZ2luOm9yaWdpbi5nZXQoKV07CiB9CiAKIHN0
YXRpYyBKU09iamVjdFJlZiBvcmlnaW5zQXJyYXlUb0pTKEpTQ29udGV4dFJlZiBjb250ZXh0LCBO
U0FycmF5ICpvcmlnaW5zKQpAQCAtMjE5LDE2ICsyMTYsMTUgQEAgdm9pZCBUZXN0UnVubmVyOjpj
bG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMoKQogdm9pZCBUZXN0UnVubmVyOjpjbGVhckJh
Y2tGb3J3YXJkTGlzdCgpCiB7CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0ICpiYWNrRm9yd2FyZExp
c3QgPSBbW21haW5GcmFtZSB3ZWJWaWV3XSBiYWNrRm9yd2FyZExpc3RdOwotICAgIFdlYkhpc3Rv
cnlJdGVtICppdGVtID0gW1tiYWNrRm9yd2FyZExpc3QgY3VycmVudEl0ZW1dIHJldGFpbl07Cisg
ICAgYXV0byBpdGVtID0gcmV0YWluUHRyKFtiYWNrRm9yd2FyZExpc3QgY3VycmVudEl0ZW1dKTsK
IAogICAgIC8vIFdlIGNsZWFyIHRoZSBoaXN0b3J5IGJ5IHNldHRpbmcgdGhlIGJhY2svZm9yd2Fy
ZCBsaXN0J3MgY2FwYWNpdHkgdG8gMAogICAgIC8vIHRoZW4gcmVzdG9yaW5nIGl0IGJhY2sgYW5k
IGFkZGluZyBiYWNrIHRoZSBjdXJyZW50IGl0ZW0uCiAgICAgaW50IGNhcGFjaXR5ID0gW2JhY2tG
b3J3YXJkTGlzdCBjYXBhY2l0eV07CiAgICAgW2JhY2tGb3J3YXJkTGlzdCBzZXRDYXBhY2l0eTow
XTsKICAgICBbYmFja0ZvcndhcmRMaXN0IHNldENhcGFjaXR5OmNhcGFjaXR5XTsKLSAgICBbYmFj
a0ZvcndhcmRMaXN0IGFkZEl0ZW06aXRlbV07Ci0gICAgW2JhY2tGb3J3YXJkTGlzdCBnb1RvSXRl
bTppdGVtXTsKLSAgICBbaXRlbSByZWxlYXNlXTsKKyAgICBbYmFja0ZvcndhcmRMaXN0IGFkZEl0
ZW06aXRlbS5nZXQoKV07CisgICAgW2JhY2tGb3J3YXJkTGlzdCBnb1RvSXRlbTppdGVtLmdldCgp
XTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6OmNvcHlEZWNvZGVk
SG9zdE5hbWUoSlNTdHJpbmdSZWYgbmFtZSkKQEAgLTI1NywxMSArMjUzLDggQEAgdm9pZCBUZXN0
UnVubmVyOjpkaXNwbGF5QW5kVHJhY2tSZXBhaW50cygpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6a2Vl
cFdlYkhpc3RvcnkoKQogewotICAgIGlmICghW1dlYkhpc3Rvcnkgb3B0aW9uYWxTaGFyZWRIaXN0
b3J5XSkgewotICAgICAgICBXZWJIaXN0b3J5ICpoaXN0b3J5ID0gW1tXZWJIaXN0b3J5IGFsbG9j
XSBpbml0XTsKLSAgICAgICAgW1dlYkhpc3Rvcnkgc2V0T3B0aW9uYWxTaGFyZWRIaXN0b3J5Omhp
c3RvcnldOwotICAgICAgICBbaGlzdG9yeSByZWxlYXNlXTsKLSAgICB9CisgICAgaWYgKCFbV2Vi
SGlzdG9yeSBvcHRpb25hbFNoYXJlZEhpc3RvcnldKQorICAgICAgICBbV2ViSGlzdG9yeSBzZXRP
cHRpb25hbFNoYXJlZEhpc3Rvcnk6YWRvcHROUyhbW1dlYkhpc3RvcnkgYWxsb2NdIGluaXRdKS5n
ZXQoKV07CiB9CiAKIGludCBUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0cygpCkBAIC00MTcsOSArNDEwLDggQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3NpdmUp
CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0RGF0YWJhc2VRdW90YSh1bnNpZ25lZCBsb25nIGxvbmcg
cXVvdGEpCiB7ICAgIAotICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBbW1dlYlNlY3Vy
aXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZpbGU6
Ly8vIl1dOworICAgIGF1dG8gb3JpZ2luID0gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFs
bG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZpbGU6Ly8vIl1dKTsKICAg
ICBbW29yaWdpbiBkYXRhYmFzZVF1b3RhTWFuYWdlcl0gc2V0UXVvdGE6cXVvdGFdOwotICAgIFtv
cmlnaW4gcmVsZWFzZV07CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6Z29CYWNrKCkKQEAgLTQ0Mywx
NyArNDM1LDE2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJv
b2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvCiAgICAgLy8gRHVtcFJlbmRlclRy
ZWUgY29uZmlndXJlZCB0aGUgV2ViVmlldyB0byB1c2UgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92
aWRlck1vY2suCiAgICAgaWQ8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcj4gcHJvdmlkZXIg
PSBbW21haW5GcmFtZSB3ZWJWaWV3XSBfZGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcl07CiAgICAg
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sgKm1vY2tQcm92aWRlciA9IHN0YXRpY19j
YXN0PFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrKj4ocHJvdmlkZXIpOwotICAgIFdl
YkRldmljZU9yaWVudGF0aW9uICpvcmllbnRhdGlvbiA9IFtbV2ViRGV2aWNlT3JpZW50YXRpb24g
YWxsb2NdIGluaXRXaXRoQ2FuUHJvdmlkZUFscGhhOmNhblByb3ZpZGVBbHBoYSBhbHBoYTphbHBo
YSBjYW5Qcm92aWRlQmV0YTpjYW5Qcm92aWRlQmV0YSBiZXRhOmJldGEgY2FuUHJvdmlkZUdhbW1h
OmNhblByb3ZpZGVHYW1tYSBnYW1tYTpnYW1tYV07Ci0gICAgW21vY2tQcm92aWRlciBzZXRPcmll
bnRhdGlvbjpvcmllbnRhdGlvbl07Ci0gICAgW29yaWVudGF0aW9uIHJlbGVhc2VdOworICAgIGF1
dG8gb3JpZW50YXRpb24gPSBhZG9wdE5TKFtbV2ViRGV2aWNlT3JpZW50YXRpb24gYWxsb2NdIGlu
aXRXaXRoQ2FuUHJvdmlkZUFscGhhOmNhblByb3ZpZGVBbHBoYSBhbHBoYTphbHBoYSBjYW5Qcm92
aWRlQmV0YTpjYW5Qcm92aWRlQmV0YSBiZXRhOmJldGEgY2FuUHJvdmlkZUdhbW1hOmNhblByb3Zp
ZGVHYW1tYSBnYW1tYTpnYW1tYV0pOworICAgIFttb2NrUHJvdmlkZXIgc2V0T3JpZW50YXRpb246
b3JpZW50YXRpb24uZ2V0KCldOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFj
Y3VyYWN5LCBib29sIHByb3ZpZGVzQWx0aXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgYm9vbCBwcm92
aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3Zp
ZGVzSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNw
ZWVkLCBib29sIHByb3ZpZGVzRmxvb3JMZXZlbCwgZG91YmxlIGZsb29yTGV2ZWwpCiB7Ci0gICAg
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24gPSBuaWw7CisgICAgUmV0YWluUHRyPFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uOwogICAgIGlmICghcHJvdmlkZXNBbHRpdHVk
ZSAmJiAhcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5ICYmICFwcm92aWRlc0hlYWRpbmcgJiYgIXBy
b3ZpZGVzU3BlZWQpIHsKICAgICAgICAgLy8gVGVzdCB0aGUgZXhwb3NlZCBBUEkuCi0gICAgICAg
IHBvc2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aFRpbWVz
dGFtcDpXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkgbGF0aXR1
ZGU6bGF0aXR1ZGUgbG9uZ2l0dWRlOmxvbmdpdHVkZSBhY2N1cmFjeTphY2N1cmFjeV07CisgICAg
ICAgIHBvc2l0aW9uID0gYWRvcHROUyhbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGlu
aXRXaXRoVGltZXN0YW1wOldhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29u
ZHMoKSBsYXRpdHVkZTpsYXRpdHVkZSBsb25naXR1ZGU6bG9uZ2l0dWRlIGFjY3VyYWN5OmFjY3Vy
YWN5XSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGEgZ2VvbG9jYXRpb25Qb3NpdGlvbiB7IFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VF
cG9jaCgpLnNlY29uZHMoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsKICAgICAg
ICAgaWYgKHByb3ZpZGVzQWx0aXR1ZGUpCkBAIC00NjYsMTAgKzQ1Nyw5IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG9uZ2l0dWRlLCBkCiAgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLnNwZWVkID0gc3Bl
ZWQ7CiAgICAgICAgIGlmIChwcm92aWRlc0Zsb29yTGV2ZWwpCiAgICAgICAgICAgICBnZW9sb2Nh
dGlvblBvc2l0aW9uLmZsb29yTGV2ZWwgPSBmbG9vckxldmVsOwotICAgICAgICBwb3NpdGlvbiA9
IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0
aW9uOihXVEZNb3ZlKGdlb2xvY2F0aW9uUG9zaXRpb24pKV07CisgICAgICAgIHBvc2l0aW9uID0g
YWRvcHROUyhbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRp
b25Qb3NpdGlvbjooV1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSldKTsKICAgICB9Ci0gICAg
W1tNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHNldFBvc2l0aW9uOnBvc2l0aW9uXTsK
LSAgICBbcG9zaXRpb24gcmVsZWFzZV07CisgICAgW1tNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBz
aGFyZWRdIHNldFBvc2l0aW9uOnBvc2l0aW9uLmdldCgpXTsKIH0KIAogdm9pZCBUZXN0UnVubmVy
OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYg
bWVzc2FnZSkKQEAgLTg0MCw5ICs4MzAsOSBAQCBAZW5kCiBAaW50ZXJmYWNlIEFQSVRlc3REZWxl
Z2F0ZUlQaG9uZSA6IE5TT2JqZWN0IDxXZWJGcmFtZUxvYWREZWxlZ2F0ZT4KIHsKICAgICBUZXN0
UnVubmVyKiB0ZXN0UnVubmVyOwotICAgIE5TRGF0YSAqZGF0YTsKLSAgICBOU1VSTCAqYmFzZVVS
TDsKLSAgICBXZWJWaWV3ICp3ZWJWaWV3OworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7Cisg
ICAgUmV0YWluUHRyPE5TVVJMPiBiYXNlVVJMOworICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJW
aWV3OwogfQogLSAoaWQpaW5pdFdpdGhUZXN0UnVubmVyOihUZXN0UnVubmVyKil0ZXN0UnVubmVy
IHV0ZjhEYXRhOihKU1N0cmluZ1JlZilkYXRhIGJhc2VVUkw6KEpTU3RyaW5nUmVmKWJhc2VVUkw7
CiAtICh2b2lkKXJ1bjsKQEAgLTg1NywxNSArODQ3LDEzIEBAIC0gKGlkKWluaXRXaXRoVGVzdFJ1
bm5lcjooVGVzdFJ1bm5lciopcnVubmVyIHV0ZjhEYXRhOihKU1N0cmluZ1JlZilkYXRhU3RyaW5n
IGJhCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICB0ZXN0UnVubmVyID0gcnVubmVyOwotICAg
IGRhdGEgPSBbWyhfX2JyaWRnZSBOU1N0cmluZyAqKWFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YVN0cmluZykpLmdldCgpIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSByZXRhaW5dOwotICAgIGJhc2VVUkwgPSBbW05TVVJM
IFVSTFdpdGhTdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopYWRvcHRDRihKU1N0cmluZ0NvcHlD
RlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBiYXNlVVJMU3RyaW5nKSkuZ2V0KCldIHJldGFp
bl07CisgICAgZGF0YSA9IFsoX19icmlkZ2UgTlNTdHJpbmcgKilhZG9wdENGKEpTU3RyaW5nQ29w
eUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGFTdHJpbmcpKS5nZXQoKSBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgYmFzZVVSTCA9IFtOU1VSTCBV
UkxXaXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzZVVSTFN0cmluZykpLmdldCgpXTsKICAgICBy
ZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW2RhdGEgcmVsZWFzZV07
Ci0gICAgW2Jhc2VVUkwgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC04
NzgsOSArODY2LDkgQEAgLSAodm9pZClydW4KIAogICAgIFdlYlRocmVhZExvY2soKTsKIAotICAg
IHdlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFt
ZU5hbWU6QCIiIGdyb3VwTmFtZTpAIiJdOworICAgIHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpAIiIgZ3JvdXBOYW1l
OkAiIl0pOwogICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOnNlbGZdOwotICAgIFtb
d2ViVmlldyBtYWluRnJhbWVdIGxvYWREYXRhOmRhdGEgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIHRl
eHRFbmNvZGluZ05hbWU6QCJ1dGYtOCIgYmFzZVVSTDpiYXNlVVJMXTsKKyAgICBbW3dlYlZpZXcg
bWFpbkZyYW1lXSBsb2FkRGF0YTpkYXRhLmdldCgpIE1JTUVUeXBlOkAidGV4dC9odG1sIiB0ZXh0
RW5jb2RpbmdOYW1lOkAidXRmLTgiIGJhc2VVUkw6YmFzZVVSTC5nZXQoKV07CiB9CiAKIC0gKHZv
aWQpX2NsZWFuVXAKQEAgLTg5Miw3ICs4ODAsNiBAQCAtICh2b2lkKV9jbGVhblVwCiAKICAgICBb
d2ViVmlldyBfY2xlYXJEZWxlZ2F0ZXNdOwogICAgIFt3ZWJWaWV3IGNsb3NlXTsKLSAgICBbd2Vi
VmlldyByZWxlYXNlXTsKICAgICB3ZWJWaWV3ID0gbmlsOwogCiAgICAgdGVzdFJ1bm5lci0+bm90
aWZ5RG9uZSgpOwpAQCAtOTM4LDExICs5MjUsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjphcGlUZXN0
TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMKEpTU3RyaW5nUmVmIHV0ZjhEYXRhLCBKU1N0cmluZ1IK
ICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGY4RGF0YUNGID0gYWRvcHRDRihKU1N0
cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1dGY4RGF0YSkpOwogICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJhc2VVUkxDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5
Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzZVVSTCkpOwogCi0gICAgICAgIFdlYlZp
ZXcgKndlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBm
cmFtZU5hbWU6QCIiIGdyb3VwTmFtZTpAIiJdOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpA
IiIgZ3JvdXBOYW1lOkAiIl0pOwogCiAgICAgICAgIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgICAg
ICBBUElUZXN0RGVsZWdhdGUgKmRlbGVnYXRlID0gW1tBUElUZXN0RGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoQ29tcGxldGlvbkNvbmRpdGlvbjomZG9uZV07Ci0gICAgICAgIFt3ZWJWaWV3IHNldEZy
YW1lTG9hZERlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tBUElUZXN0RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQ29tcGxldGlvbkNvbmRpdGlvbjom
ZG9uZV0pOworICAgICAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CiAKICAgICAgICAgW1t3ZWJWaWV3IG1haW5GcmFtZV0gbG9hZERhdGE6WyhfX2JyaWRn
ZSBOU1N0cmluZyAqKXV0ZjhEYXRhQ0YuZ2V0KCkgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddIE1JTUVUeXBlOkAidGV4dC9odG1sIiB0ZXh0RW5jb2RpbmdOYW1lOkAidXRm
LTgiIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopYmFz
ZVVSTENGLmdldCgpXV07CiAKQEAgLTk1Nyw4ICs5NDQsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OmFw
aVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkwoSlNTdHJpbmdSZWYgdXRmOERhdGEsIEpTU3Ry
aW5nUgogI2VuZGlmCiAKICAgICAgICAgW3dlYlZpZXcgY2xvc2VdOwotICAgICAgICBbd2ViVmll
dyByZWxlYXNlXTsKLSAgICAgICAgW2RlbGVnYXRlIHJlbGVhc2VdOwogICAgIH0KIH0KIApAQCAt
OTc4LDggKzk2Myw4IEBAIHN0YXRpYyBOU1N0cmluZyAqU3luY2hyb25vdXNMb2FkZXJSdW5Mb29w
TW9kZSA9IEAiRHVtcFJlbmRlclRyZWVTeW5jaHJvbm91c0xvYWRlCiAKIEBpbnRlcmZhY2UgU3lu
Y2hyb25vdXNMb2FkZXIgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGU+CiB7Ci0g
ICAgTlNTdHJpbmcgKm1fdXNlcm5hbWU7Ci0gICAgTlNTdHJpbmcgKm1fcGFzc3dvcmQ7CisgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBtX3VzZXJuYW1lOworICAgIFJldGFpblB0cjxOU1N0cmluZz4g
bV9wYXNzd29yZDsKICAgICBCT09MIG1faXNEb25lOwogfQogKyAodm9pZCltYWtlUmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3aXRoVXNlcm5hbWU6KE5TU3RyaW5nICopdXNlcm5hbWUg
cGFzc3dvcmQ6KE5TU3RyaW5nICopcGFzc3dvcmQ7CkBAIC05ODgsOSArOTczLDYgQEAgQGVuZAog
QGltcGxlbWVudGF0aW9uIFN5bmNocm9ub3VzTG9hZGVyIDogTlNPYmplY3QKIC0gKHZvaWQpZGVh
bGxvYwogewotICAgIFttX3VzZXJuYW1lIHJlbGVhc2VdOwotICAgIFttX3Bhc3N3b3JkIHJlbGVh
c2VdOwotCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC0xMDA0LDcgKzk4Niw3IEBAIC0g
KHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuCiBJR05PUkVfV0FSTklOR1NfRU5ECiB7CiAgICAgaWYgKFtj
aGFsbGVuZ2UgcHJldmlvdXNGYWlsdXJlQ291bnRdID09IDApIHsKLSAgICAgICAgUmV0YWluUHRy
PE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbCA9IGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwg
YWxsb2NdICBpbml0V2l0aFVzZXI6bV91c2VybmFtZSBwYXNzd29yZDptX3Bhc3N3b3JkIHBlcnNp
c3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbl0pOworICAgICAgICBS
ZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW50aWFsID0gYWRvcHROUyhbW05TVVJMQ3Jl
ZGVudGlhbCBhbGxvY10gIGluaXRXaXRoVXNlcjptX3VzZXJuYW1lLmdldCgpIHBhc3N3b3JkOm1f
cGFzc3dvcmQuZ2V0KCkgcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JT
ZXNzaW9uXSk7CiAgICAgICAgIFtbY2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDpjcmVk
ZW50aWFsLmdldCgpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZV07CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xMDI3LDIxICsxMDA5LDE4IEBAICsgKHZvaWQpbWFrZVJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2l0aFVzZXJuYW1lOihOU1N0cmluZyAqKXVz
ZXJuYW1lIHBhCiAgICAgQVNTRVJUKCFbW3JlcXVlc3QgVVJMXSB1c2VyXSk7CiAgICAgQVNTRVJU
KCFbW3JlcXVlc3QgVVJMXSBwYXNzd29yZF0pOwogCi0gICAgU3luY2hyb25vdXNMb2FkZXIgKmRl
bGVnYXRlID0gW1tTeW5jaHJvbm91c0xvYWRlciBhbGxvY10gaW5pdF07Ci0gICAgZGVsZWdhdGUt
Pm1fdXNlcm5hbWUgPSBbdXNlcm5hbWUgY29weV07Ci0gICAgZGVsZWdhdGUtPm1fcGFzc3dvcmQg
PSBbcGFzc3dvcmQgY29weV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTeW5jaHJv
bm91c0xvYWRlciBhbGxvY10gaW5pdF0pOworICAgIGRlbGVnYXRlLmdldCgpLT5tX3VzZXJuYW1l
ID0gYWRvcHROUyhbdXNlcm5hbWUgY29weV0pOworICAgIGRlbGVnYXRlLmdldCgpLT5tX3Bhc3N3
b3JkID0gYWRvcHROUyhbcGFzc3dvcmQgY29weV0pOwogCi0gICAgTlNVUkxDb25uZWN0aW9uICpj
b25uZWN0aW9uID0gW1tOU1VSTENvbm5lY3Rpb24gYWxsb2NdIGluaXRXaXRoUmVxdWVzdDpyZXF1
ZXN0IGRlbGVnYXRlOmRlbGVnYXRlIHN0YXJ0SW1tZWRpYXRlbHk6Tk9dOworICAgIGF1dG8gY29u
bmVjdGlvbiA9IGFkb3B0TlMoW1tOU1VSTENvbm5lY3Rpb24gYWxsb2NdIGluaXRXaXRoUmVxdWVz
dDpyZXF1ZXN0IGRlbGVnYXRlOmRlbGVnYXRlLmdldCgpIHN0YXJ0SW1tZWRpYXRlbHk6Tk9dKTsK
ICAgICBbY29ubmVjdGlvbiBzY2hlZHVsZUluUnVuTG9vcDpbTlNSdW5Mb29wIGN1cnJlbnRSdW5M
b29wXSBmb3JNb2RlOlN5bmNocm9ub3VzTG9hZGVyUnVuTG9vcE1vZGVdOwogICAgIFtjb25uZWN0
aW9uIHN0YXJ0XTsKICAgICAKLSAgICB3aGlsZSAoIWRlbGVnYXRlLT5tX2lzRG9uZSkKKyAgICB3
aGlsZSAoIWRlbGVnYXRlLmdldCgpLT5tX2lzRG9uZSkKICAgICAgICAgW1tOU1J1bkxvb3AgY3Vy
cmVudFJ1bkxvb3BdIHJ1bk1vZGU6U3luY2hyb25vdXNMb2FkZXJSdW5Mb29wTW9kZSBiZWZvcmVE
YXRlOltOU0RhdGUgZGlzdGFudEZ1dHVyZV1dOwogCiAgICAgW2Nvbm5lY3Rpb24gY2FuY2VsXTsK
LSAgICAKLSAgICBbY29ubmVjdGlvbiByZWxlYXNlXTsKLSAgICBbZGVsZWdhdGUgcmVsZWFzZV07
CiB9CiAKIEBlbmQKQEAgLTEwODUsMTMgKzEwNjQsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRU
ZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlvbk5hbWUpCiB2b2lkIFRlc3RSdW5uZXI6
OmFkZENocm9tZUlucHV0RmllbGQoKQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IE5TVGV4dEZpZWxkICp0ZXh0RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAyMCldOwotICAgIHRleHRGaWVsZC50YWcgPSAxOwot
ICAgIFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBjb250ZW50Vmlld10gYWRkU3Vidmll
dzp0ZXh0RmllbGRdOwotICAgIFt0ZXh0RmllbGQgcmVsZWFzZV07CisgICAgYXV0byB0ZXh0Rmll
bGQgPSBhZG9wdE5TKFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAxMDAsIDIwKV0pOworICAgIFt0ZXh0RmllbGQgc2V0VGFnOiAxXTsKKyAgICBbW1tb
bWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gY29udGVudFZpZXddIGFkZFN1YnZpZXc6dGV4dEZp
ZWxkLmdldCgpXTsKICAgICAKICAgICBbdGV4dEZpZWxkIHNldE5leHRLZXlWaWV3OlttYWluRnJh
bWUgd2ViVmlld11dOwotICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldE5leHRLZXlWaWV3OnRl
eHRGaWVsZF07CisgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0TmV4dEtleVZpZXc6dGV4dEZp
ZWxkLmdldCgpXTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVUlEZWxlZ2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUu
aAppbmRleCBjZjE5ZmZkNmZhNDZiZmRmNTM0OTZkZmQ2ODE4MThhZDA4YjBiMTNjLi4zMTY1NWRi
Y2ViMDhmNGY4ODg4YTNiMWRmMmVhMTRlYzIzNTY4ZjM0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9VSURlbGVnYXRlLmgKQEAgLTM1LDExICszNSwxMiBAQAogI2VuZGlmCiAKICNpbXBvcnQgPFdl
YktpdC9XZWJVSURlbGVnYXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbnRl
cmZhY2UgVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXZWJVSURlbGVnYXRlPiB7CiBAcHJpdmF0ZQog
ICAgIE5TUG9pbnQgd2luZG93T3JpZ2luOwotICAgIE5TTXV0YWJsZVNldCAqbV9wZW5kaW5nR2Vv
bG9jYXRpb25QZXJtaXNzaW9uTGlzdGVuZXJzOworICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ+
IG1fcGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvbkxpc3RlbmVyczsKICAgICBOU1RpbWVyICpt
X3RpbWVyOwogICAgIEJPT0wgbV9lbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkOwogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQppbmRleCAwOGRmMTA0MDFiMjhhMGMz
NzNhMzY2NTAzZDk4OGRhODI2MzNjZGVlLi5mZGNiMDRkNDk4YmQ5YTAyYzQ2MGU2ZDNkMzBlODIz
ZTUxNTUzNmFkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0
ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQpAQCAtMjUy
LDcgKzI1Miw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooCiB7CiAgICAgaWYgKCFnVGVzdFJ1
bm5lci0+aXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQoKSkgewogICAgICAgICBpZiAoIW1fcGVu
ZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvbkxpc3RlbmVycykKLSAgICAgICAgICAgIG1fcGVuZGlu
Z0dlb2xvY2F0aW9uUGVybWlzc2lvbkxpc3RlbmVycyA9IFtbTlNNdXRhYmxlU2V0IHNldF0gcmV0
YWluXTsKKyAgICAgICAgICAgIG1fcGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvbkxpc3RlbmVy
cyA9IFtOU011dGFibGVTZXQgc2V0XTsKICAgICAgICAgW21fcGVuZGluZ0dlb2xvY2F0aW9uUGVy
bWlzc2lvbkxpc3RlbmVycyBhZGRPYmplY3Q6bGlzdGVuZXJdOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMjkwLDcgKzI5MCw2IEBAIC0gKHZvaWQpdGltZXJGaXJlZAogICAgICAgICAgICAg
W2xpc3RlbmVyIGRlbnldOwogICAgIH0KICAgICBbbV9wZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNz
aW9uTGlzdGVuZXJzIHJlbW92ZUFsbE9iamVjdHNdOwotICAgIFttX3BlbmRpbmdHZW9sb2NhdGlv
blBlcm1pc3Npb25MaXN0ZW5lcnMgcmVsZWFzZV07CiAgICAgbV9wZW5kaW5nR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uTGlzdGVuZXJzID0gbmlsOwogfQogCkBAIC00MzcsOCArNDM2LDYgQEAgLSAodm9p
ZClkZWFsbG9jCiAgICAgW2RyYWdnaW5nSW5mbyByZWxlYXNlXTsKICAgICBkcmFnZ2luZ0luZm8g
PSBuaWw7CiAjZW5kaWYKLSAgICBbbV9wZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uTGlzdGVu
ZXJzIHJlbGVhc2VdOwotICAgIG1fcGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvbkxpc3RlbmVy
cyA9IG5pbDsKIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJ
T1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50SU9TLm1tCmluZGV4IDE5ZTllOWNiMjg1YWIyMmM4NWU2NGJiMTQyZWRm
MjEyN2NiM2Q3MjYuLmQxMjBkMTUxZDhhMDMwMTgzYWI4MmMxY2YwOGI0MzNiYzQ0YzM1NWQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQpAQCAtMTAyMSw3ICsx
MDIxLDggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0
ZW5lcihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2sKICAgICAvLyBPdGhlciBwbGF0Zm9ybXMg
bWF5IGJlIGRpZmZlcmVudC4KICAgICBpZiAobV9ub3RpZmljYXRpb25IYW5kbGVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gW1tBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxvY10gaW5pdF07CisKKyAgICBtX25vdGlmaWNhdGlv
bkhhbmRsZXIgPSBhZG9wdE5TKFtbQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHNldFBsYXRmb3JtRWxlbWVu
dDpwbGF0Zm9ybVVJRWxlbWVudCgpXTsKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHNldENh
bGxiYWNrOmZ1bmN0aW9uQ2FsbGJhY2tdOwogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc3Rh
cnRPYnNlcnZpbmddOwpAQCAtMTAzNSw3ICsxMDM2LDYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCiAgICAgQVNTRVJUKG1fbm90aWZp
Y2F0aW9uSGFuZGxlcik7CiAgICAgCiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzdG9wT2Jz
ZXJ2aW5nXTsKLSAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgIG1fbm90
aWZpY2F0aW9uSGFuZGxlciA9IG5pbDsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IGJmNmE3MGZjZTRkOTM1ZGEz
ZDY4ZGY2NjE2M2I5NTY0ZTY4NmQxYmYuLjdlM2ViMWM2NjkxY2IyZWVjMWI5NDQ4NDg1NjYwNmY4
MGY3NWQzN2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpA
QCAtMTU4OSw3ICsxNTg5LDggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3Rp
ZmljYXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2sKICAgICAvLyBPdGhl
ciBwbGF0Zm9ybXMgbWF5IGJlIGRpZmZlcmVudC4KICAgICBpZiAobV9ub3RpZmljYXRpb25IYW5k
bGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0g
W1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxvY10gaW5pdF07CisKKyAgICBt
X25vdGlmaWNhdGlvbkhhbmRsZXIgPSBhZG9wdE5TKFtbQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHNldFBs
YXRmb3JtRWxlbWVudDpwbGF0Zm9ybVVJRWxlbWVudCgpXTsKICAgICBbbV9ub3RpZmljYXRpb25I
YW5kbGVyIHNldENhbGxiYWNrOmZ1bmN0aW9uQ2FsbGJhY2tdOwogICAgIFttX25vdGlmaWNhdGlv
bkhhbmRsZXIgc3RhcnRPYnNlcnZpbmddOwpAQCAtMTYwMyw3ICsxNjA0LDYgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCiAgICAgQVNT
RVJUKG1fbm90aWZpY2F0aW9uSGFuZGxlcik7CiAKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVy
IHN0b3BPYnNlcnZpbmddOwotICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgcmVsZWFzZV07CiAg
ICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gbmlsOwogICAgIAogICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3Iu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQppbmRl
eCAwYzQ0NjMzNWIyNDBkNmE3ZTA2NzQxNGNhOWMzMDQwYWE2ZTM1NDYzLi5mZmZiMTkwNDRjMDI1
MjgxNDNkYjU0YzEzNTYzMzlhODJkN2Q3YjRjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpAQCAtMTA0Miw5ICsxMDQyLDkgQEAgLSAoTlNB
cnJheSAqKWludGVycG9sYXRlZEV2ZW50czooTlNEaWN0aW9uYXJ5ICopaW50ZXJwb2xhdGlvbnNE
aWN0aW9uYXJ5CiAgICAgTlNBcnJheSAqZW5kVG91Y2hlcyA9IGVuZEV2ZW50W0hJREV2ZW50VG91
Y2hlc0tleV07CiAgICAgCiAgICAgd2hpbGUgKHRpbWUgPCBlbmRUaW1lKSB7Ci0gICAgICAgIE5T
TXV0YWJsZURpY3Rpb25hcnkgKm5ld0V2ZW50ID0gW2VuZEV2ZW50IG11dGFibGVDb3B5XTsKKyAg
ICAgICAgYXV0byBuZXdFdmVudCA9IGFkb3B0TlMoW2VuZEV2ZW50IG11dGFibGVDb3B5XSk7CiAg
ICAgICAgIGRvdWJsZSB0aW1lUmF0aW8gPSAodGltZSAtIHN0YXJ0VGltZSkgLyAoZW5kVGltZSAt
IHN0YXJ0VGltZSk7Ci0gICAgICAgIG5ld0V2ZW50W0hJREV2ZW50VGltZU9mZnNldEtleV0gPSBA
KHRpbWUpOworICAgICAgICBuZXdFdmVudC5nZXQoKVtISURFdmVudFRpbWVPZmZzZXRLZXldID0g
QCh0aW1lKTsKICAgICAgICAgCiAgICAgICAgIE5TRW51bWVyYXRvciAqc3RhcnRFbnVtZXJhdG9y
ID0gW3N0YXJ0VG91Y2hlcyBvYmplY3RFbnVtZXJhdG9yXTsKICAgICAgICAgTlNEaWN0aW9uYXJ5
ICpzdGFydFRvdWNoOwpAQCAtMTA1OCwyNyArMTA1OCwyNSBAQCAtIChOU0FycmF5ICopaW50ZXJw
b2xhdGVkRXZlbnRzOihOU0RpY3Rpb25hcnkgKilpbnRlcnBvbGF0aW9uc0RpY3Rpb25hcnkKICAg
ICAgICAgICAgICAgICBlbmRUb3VjaCA9IFtlbmRFbnVtZXJhdG9yIG5leHRPYmplY3RdOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZW5kVG91Y2gpIHsKLSAgICAgICAgICAgICAgICBO
U011dGFibGVEaWN0aW9uYXJ5ICpuZXdUb3VjaCA9IFtlbmRUb3VjaCBtdXRhYmxlQ29weV07Cisg
ICAgICAgICAgICAgICAgYXV0byBuZXdUb3VjaCA9IGFkb3B0TlMoW2VuZFRvdWNoIG11dGFibGVD
b3B5XSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKG5ld1RvdWNoW0hJ
REV2ZW50WEtleV0gIT0gc3RhcnRUb3VjaFtISURFdmVudFhLZXldKQotICAgICAgICAgICAgICAg
ICAgICBuZXdUb3VjaFtISURFdmVudFhLZXldID0gQChpbnRlcnBvbGF0aW9uc1tpbnRlcnBvbGF0
aW9uVHlwZV0oW3N0YXJ0VG91Y2hbSElERXZlbnRYS2V5XSBkb3VibGVWYWx1ZV0sIFtlbmRUb3Vj
aFtISURFdmVudFhLZXldIGRvdWJsZVZhbHVlXSwgdGltZVJhdGlvKSk7CisgICAgICAgICAgICAg
ICAgaWYgKG5ld1RvdWNoLmdldCgpW0hJREV2ZW50WEtleV0gIT0gc3RhcnRUb3VjaFtISURFdmVu
dFhLZXldKQorICAgICAgICAgICAgICAgICAgICBuZXdUb3VjaC5nZXQoKVtISURFdmVudFhLZXld
ID0gQChpbnRlcnBvbGF0aW9uc1tpbnRlcnBvbGF0aW9uVHlwZV0oW3N0YXJ0VG91Y2hbSElERXZl
bnRYS2V5XSBkb3VibGVWYWx1ZV0sIFtlbmRUb3VjaFtISURFdmVudFhLZXldIGRvdWJsZVZhbHVl
XSwgdGltZVJhdGlvKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKG5l
d1RvdWNoW0hJREV2ZW50WUtleV0gIT0gc3RhcnRUb3VjaFtISURFdmVudFlLZXldKQotICAgICAg
ICAgICAgICAgICAgICBuZXdUb3VjaFtISURFdmVudFlLZXldID0gQChpbnRlcnBvbGF0aW9uc1tp
bnRlcnBvbGF0aW9uVHlwZV0oW3N0YXJ0VG91Y2hbSElERXZlbnRZS2V5XSBkb3VibGVWYWx1ZV0s
IFtlbmRUb3VjaFtISURFdmVudFlLZXldIGRvdWJsZVZhbHVlXSwgdGltZVJhdGlvKSk7CisgICAg
ICAgICAgICAgICAgaWYgKG5ld1RvdWNoLmdldCgpW0hJREV2ZW50WUtleV0gIT0gc3RhcnRUb3Vj
aFtISURFdmVudFlLZXldKQorICAgICAgICAgICAgICAgICAgICBuZXdUb3VjaC5nZXQoKVtISURF
dmVudFlLZXldID0gQChpbnRlcnBvbGF0aW9uc1tpbnRlcnBvbGF0aW9uVHlwZV0oW3N0YXJ0VG91
Y2hbSElERXZlbnRZS2V5XSBkb3VibGVWYWx1ZV0sIFtlbmRUb3VjaFtISURFdmVudFlLZXldIGRv
dWJsZVZhbHVlXSwgdGltZVJhdGlvKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgaWYgKG5ld1RvdWNoW0hJREV2ZW50UHJlc3N1cmVLZXldICE9IHN0YXJ0VG91Y2hbSElERXZl
bnRQcmVzc3VyZUtleV0pCi0gICAgICAgICAgICAgICAgICAgIG5ld1RvdWNoW0hJREV2ZW50UHJl
c3N1cmVLZXldID0gQChpbnRlcnBvbGF0aW9uc1tpbnRlcnBvbGF0aW9uVHlwZV0oW3N0YXJ0VG91
Y2hbSElERXZlbnRQcmVzc3VyZUtleV0gZG91YmxlVmFsdWVdLCBbZW5kVG91Y2hbSElERXZlbnRQ
cmVzc3VyZUtleV0gZG91YmxlVmFsdWVdLCB0aW1lUmF0aW8pKTsKKyAgICAgICAgICAgICAgICBp
ZiAobmV3VG91Y2guZ2V0KClbSElERXZlbnRQcmVzc3VyZUtleV0gIT0gc3RhcnRUb3VjaFtISURF
dmVudFByZXNzdXJlS2V5XSkKKyAgICAgICAgICAgICAgICAgICAgbmV3VG91Y2guZ2V0KClbSElE
RXZlbnRQcmVzc3VyZUtleV0gPSBAKGludGVycG9sYXRpb25zW2ludGVycG9sYXRpb25UeXBlXShb
c3RhcnRUb3VjaFtISURFdmVudFByZXNzdXJlS2V5XSBkb3VibGVWYWx1ZV0sIFtlbmRUb3VjaFtI
SURFdmVudFByZXNzdXJlS2V5XSBkb3VibGVWYWx1ZV0sIHRpbWVSYXRpbykpOwogICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIFtuZXdUb3VjaGVzIGFkZE9iamVjdDpuZXdUb3VjaF07
Ci0gICAgICAgICAgICAgICAgW25ld1RvdWNoIHJlbGVhc2VdOworICAgICAgICAgICAgICAgIFtu
ZXdUb3VjaGVzIGFkZE9iamVjdDpuZXdUb3VjaC5nZXQoKV07CiAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICBOU0xvZyhAIk1pc3NpbmcgRW5kIFRvdWNoIHdpdGggSUQ6ICVsZCIs
IChsb25nKXN0YXJ0VG91Y2hJRCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIG5ld0V2
ZW50W0hJREV2ZW50VG91Y2hlc0tleV0gPSBuZXdUb3VjaGVzOworICAgICAgICBuZXdFdmVudC5n
ZXQoKVtISURFdmVudFRvdWNoZXNLZXldID0gbmV3VG91Y2hlczsKICAgICAgICAgCi0gICAgICAg
IFtpbnRlcnBvbGF0ZWRFdmVudHMgYWRkT2JqZWN0Om5ld0V2ZW50XTsKLSAgICAgICAgW25ld0V2
ZW50IHJlbGVhc2VdOworICAgICAgICBbaW50ZXJwb2xhdGVkRXZlbnRzIGFkZE9iamVjdDpuZXdF
dmVudC5nZXQoKV07CiAgICAgICAgIHRpbWUgKz0gdGltZVN0ZXA7CiAgICAgfQogICAgIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tCmluZGV4
IDAyMTExMWNlMTQ1NDVkMDAwNDQ5Y2QyZjljMDA0MzU1MjNhY2ZiYjUuLmU4MDZkNjczYTBjYWFj
OTA1ZDhmY2U1OWY0MzlkY2MxMjk5NTgxNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KQEAgLTIwOSw5ICsyMDksNyBAQCBQbGF0Zm9y
bVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1dlYlZpZXdDb25maWd1cmF0aW9uKiBjb25maWd1
cmF0aW9uLCBjb25zdCBUZQogICAgIG1fd2luZG93LmJhY2tncm91bmRDb2xvciA9IFtVSUNvbG9y
IGxpZ2h0R3JheUNvbG9yXTsKICAgICBtX3dpbmRvdy5wbGF0Zm9ybVdlYlZpZXcgPSB0aGlzOwog
Ci0gICAgVUlWaWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIgPSBbW1BsYXRmb3JtV2ViVmll
d0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdOwotICAgIFttX3dpbmRvdyBzZXRSb290Vmlld0NvbnRy
b2xsZXI6dmlld0NvbnRyb2xsZXJdOwotICAgIFt2aWV3Q29udHJvbGxlciByZWxlYXNlXTsKKyAg
ICBbbV93aW5kb3cgc2V0Um9vdFZpZXdDb250cm9sbGVyOmFkb3B0TlMoW1tQbGF0Zm9ybVdlYlZp
ZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSkuZ2V0KCldOwogCiAgICAgbV92aWV3ID0gW1tUZXN0
UnVubmVyV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnZpZXdSZWN0Rm9yV2luZG93UmVj
dChyZWN0LCBXZWJWaWV3U2l6aW5nTW9kZTo6RGVmYXVsdCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZv
cm1XZWJWaWV3TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJW
aWV3TWFjLm1tCmluZGV4IDQ2OGExMmQ4NDdmOWVkYzc1ZGE2MGQ3MDJmNTBhYThlN2IxZTA5MjEu
LjZhZmYzZjFkZDlhOTY1Yzc5ZTI3ODAzY2NiZDMxNDc3Njk2ODhhOTIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KQEAgLTE0OSwxNCAr
MTQ5LDEzIEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpkaWRJbml0aWFsaXplQ2xpZW50cygpCiAK
IHZvaWQgUGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKIHsKLSAgICBOU1Rl
eHRGaWVsZCAqdGV4dEZpZWxkID0gW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDEwMCwgMjApXTsKLSAgICB0ZXh0RmllbGQudGFnID0gMTsKLSAgICBb
W21fd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnRleHRGaWVsZF07Ci0gICAgW3RleHRG
aWVsZCByZWxlYXNlXTsKKyAgICBhdXRvIHRleHRGaWVsZCA9IGFkb3B0TlMoW1tOU1RleHRGaWVs
ZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMjApXSk7CisgICAg
W3RleHRGaWVsZCBzZXRUYWc6IDFdOworICAgIFtbbV93aW5kb3cgY29udGVudFZpZXddIGFkZFN1
YnZpZXc6dGV4dEZpZWxkLmdldCgpXTsKIAogICAgIE5TVmlldyAqdmlldyA9IHBsYXRmb3JtVmll
dygpOwogICAgIFt0ZXh0RmllbGQgc2V0TmV4dEtleVZpZXc6dmlld107Ci0gICAgW3ZpZXcgc2V0
TmV4dEtleVZpZXc6dGV4dEZpZWxkXTsKKyAgICBbdmlldyBzZXROZXh0S2V5Vmlldzp0ZXh0Rmll
bGQuZ2V0KCldOwogfQogCiB2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5wdXRG
aWVsZCgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0
UnVubmVyRHJhZ2dpbmdJbmZvLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRU
ZXN0UnVubmVyRHJhZ2dpbmdJbmZvLmgKaW5kZXggMjJmNDcxNDk5YWQzZmRkMDg5OWE1ZTNjZTEy
OTg2OGNjZTExM2U2ZS4uNWRjNDg5YzllMThkYzlhMTZiYmE0ZDMwZmI1MTM4YzhhYjdmZDgyZCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRy
YWdnaW5nSW5mby5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RS
dW5uZXJEcmFnZ2luZ0luZm8uaApAQCAtMjUsMTIgKzI1LDE0IEBACiAKICNpZiBQTEFURk9STShN
QUMpCiAKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKIEBpbnRlcmZhY2UgV2ViS2l0VGVz
dFJ1bm5lckRyYWdnaW5nSW5mbyA6IE5TT2JqZWN0IDxOU0RyYWdnaW5nSW5mbz4gewogQHByaXZh
dGUKICAgICBOU1NpemUgX29mZnNldDsKLSAgICBOU0ltYWdlICpfZHJhZ2dlZEltYWdlOwotICAg
IE5TUGFzdGVib2FyZCAqX2RyYWdnaW5nUGFzdGVib2FyZDsKLSAgICBpZCBfZHJhZ2dpbmdTb3Vy
Y2U7CisgICAgUmV0YWluUHRyPE5TSW1hZ2U+IF9kcmFnZ2VkSW1hZ2U7CisgICAgUmV0YWluUHRy
PE5TUGFzdGVib2FyZD4gX2RyYWdnaW5nUGFzdGVib2FyZDsKKyAgICBSZXRhaW5QdHI8aWQ+IF9k
cmFnZ2luZ1NvdXJjZTsKIH0KIAogLSAoaWQpaW5pdFdpdGhJbWFnZTooTlNJbWFnZSAqKWltYWdl
IG9mZnNldDooTlNTaXplKW9mZnNldCBwYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJv
YXJkIHNvdXJjZTooaWQpc291cmNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8ubW0KaW5kZXggNTY1ZGIyZjEy
NGY4ZjJjMzI0OGU5YzMyMWJjYzhlOWM4ZGRjYjhlMi4uZTYwM2I0YjJhOGJhNjY2NDVlZTkwYTZh
M2FjM2VlNTVjNGE2Nzk0NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
V2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9XZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLm1tCkBAIC00MSw5ICs0MSw5IEBA
IC0gKGlkKWluaXRXaXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBvZmZzZXQ6KE5TU2l6ZSlvZmZz
ZXQgcGFzdGVib2FyZDooTlNQYXN0ZWJvCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgX2RyYWdnZWRJbWFnZSA9IFtpbWFnZSByZXRhaW5dOwotICAgIF9kcmFnZ2lu
Z1Bhc3RlYm9hcmQgPSBbcGFzdGVib2FyZCByZXRhaW5dOwotICAgIF9kcmFnZ2luZ1NvdXJjZSA9
IFtzb3VyY2UgcmV0YWluXTsKKyAgICBfZHJhZ2dlZEltYWdlID0gaW1hZ2U7CisgICAgX2RyYWdn
aW5nUGFzdGVib2FyZCA9IHBhc3RlYm9hcmQ7CisgICAgX2RyYWdnaW5nU291cmNlID0gc291cmNl
OwogICAgIF9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgCiAgICAgcmV0dXJuIHNlbGY7CkBAIC01MSw5
ICs1MSw2IEBAIC0gKGlkKWluaXRXaXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBvZmZzZXQ6KE5T
U2l6ZSlvZmZzZXQgcGFzdGVib2FyZDooTlNQYXN0ZWJvCiAKIC0gKHZvaWQpZGVhbGxvYwogewot
ICAgIFtfZHJhZ2dlZEltYWdlIHJlbGVhc2VdOwotICAgIFtfZHJhZ2dpbmdQYXN0ZWJvYXJkIHJl
bGVhc2VdOwotICAgIFtfZHJhZ2dpbmdTb3VyY2UgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxs
b2NdOwogfQogCkBAIC04MiwxNyArNzksMTcgQEAgLSAoTlNQb2ludClkcmFnZ2VkSW1hZ2VMb2Nh
dGlvbgogCiAtIChOU0ltYWdlICopZHJhZ2dlZEltYWdlCiB7Ci0gICAgcmV0dXJuIF9kcmFnZ2Vk
SW1hZ2U7CisgICAgcmV0dXJuIF9kcmFnZ2VkSW1hZ2UuZ2V0KCk7CiB9CiAKIC0gKE5TUGFzdGVi
b2FyZCAqKWRyYWdnaW5nUGFzdGVib2FyZAogewotICAgIHJldHVybiBfZHJhZ2dpbmdQYXN0ZWJv
YXJkOworICAgIHJldHVybiBfZHJhZ2dpbmdQYXN0ZWJvYXJkLmdldCgpOwogfQogCiAtIChpZClk
cmFnZ2luZ1NvdXJjZQogewotICAgIHJldHVybiBfZHJhZ2dpbmdTb3VyY2U7CisgICAgcmV0dXJu
IF9kcmFnZ2luZ1NvdXJjZS5nZXQoKTsKIH0KIAogLSAoaW50KWRyYWdnaW5nU2VxdWVuY2VOdW1i
ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5u
ZXJQYXN0ZWJvYXJkLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1
bm5lclBhc3RlYm9hcmQubW0KaW5kZXggMGQzMDRmYzI4NGEyODgzY2ZkMGY3MmUyZjk2NjA1MGNm
MjVlZGIwZi4uYjNhZDIzN2NhZDk1YjM2MTA3M2Y4YzkzNmI2YjhlNGNkM2RiNjk5OSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9h
cmQubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBh
c3RlYm9hcmQubW0KQEAgLTU3LDEzICs1NywxMSBAQCArIChOU1Bhc3RlYm9hcmQgKilfcGFzdGVi
b2FyZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKICAgICAgICAgbmFtZSA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiTG9jYWxQYXN0ZWJvYXJkJWQiLCArK251bWJlcl07CiAgICAgaWYg
KCFsb2NhbFBhc3RlYm9hcmRzKQogICAgICAgICBsb2NhbFBhc3RlYm9hcmRzID0gW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICBMb2NhbFBhc3RlYm9hcmQgKnBhc3RlYm9h
cmQgPSBbbG9jYWxQYXN0ZWJvYXJkcyBvYmplY3RGb3JLZXk6bmFtZV07Ci0gICAgaWYgKHBhc3Rl
Ym9hcmQpCisgICAgaWYgKExvY2FsUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtsb2NhbFBhc3Rl
Ym9hcmRzIG9iamVjdEZvcktleTpuYW1lXSkKICAgICAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7Ci0g
ICAgcGFzdGVib2FyZCA9IFtbTG9jYWxQYXN0ZWJvYXJkIGFsbG9jXSBpbml0V2l0aE5hbWU6bmFt
ZV07Ci0gICAgW2xvY2FsUGFzdGVib2FyZHMgc2V0T2JqZWN0OnBhc3RlYm9hcmQgZm9yS2V5Om5h
bWVdOwotICAgIFtwYXN0ZWJvYXJkIHJlbGVhc2VdOwotICAgIHJldHVybiBwYXN0ZWJvYXJkOwor
ICAgIGF1dG8gcGFzdGVib2FyZCA9IGFkb3B0TlMoW1tMb2NhbFBhc3RlYm9hcmQgYWxsb2NdIGlu
aXRXaXRoTmFtZTpuYW1lXSk7CisgICAgW2xvY2FsUGFzdGVib2FyZHMgc2V0T2JqZWN0OnBhc3Rl
Ym9hcmQuZ2V0KCkgZm9yS2V5Om5hbWVdOworICAgIHJldHVybiBwYXN0ZWJvYXJkLmdldCgpOwog
fQogCiAvLyBUaGlzIG1ldGhvZCBjcmFzaGVzIHdoZW4gY2FsbGVkIG9uIExvY2FsUGFzdGVib2Fy
ZC4KQEAgLTE1MSwxNSArMTQ5LDE0IEBAIC0gKHZvaWQpX2FkZFR5cGVzV2l0aG91dFVwZGF0aW5n
Q2hhbmdlQ291bnQ6KE5TQXJyYXkgKiluZXdUeXBlcyBvd25lcjooaWQpbmV3T3duCiAgICAgdW5z
aWduZWQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBOU1N0
cmluZyAqdHlwZSA9IFtuZXdUeXBlcyBvYmplY3RBdEluZGV4OmldOwotICAgICAgICBOU1N0cmlu
ZyAqc2V0VHlwZSA9IFtfdHlwZXNTZXQgbWVtYmVyOnR5cGVdOworICAgICAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IHNldFR5cGUgPSBbX3R5cGVzU2V0IG1lbWJlcjp0eXBlXTsKICAgICAgICAgaWYg
KCFzZXRUeXBlKSB7Ci0gICAgICAgICAgICBzZXRUeXBlID0gW3R5cGUgY29weV07Ci0gICAgICAg
ICAgICBbX3R5cGVzQXJyYXkgYWRkT2JqZWN0OnNldFR5cGVdOwotICAgICAgICAgICAgW190eXBl
c1NldCBhZGRPYmplY3Q6c2V0VHlwZV07Ci0gICAgICAgICAgICBbc2V0VHlwZSByZWxlYXNlXTsK
KyAgICAgICAgICAgIHNldFR5cGUgPSBhZG9wdE5TKFt0eXBlIGNvcHldKTsKKyAgICAgICAgICAg
IFtfdHlwZXNBcnJheSBhZGRPYmplY3Q6c2V0VHlwZS5nZXQoKV07CisgICAgICAgICAgICBbX3R5
cGVzU2V0IGFkZE9iamVjdDpzZXRUeXBlLmdldCgpXTsKICAgICAgICAgfQogICAgICAgICBpZiAo
bmV3T3duZXIgJiYgW25ld093bmVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFzdGVi
b2FyZDpwcm92aWRlRGF0YUZvclR5cGU6KV0pCi0gICAgICAgICAgICBbbmV3T3duZXIgcGFzdGVi
b2FyZDpzZWxmIHByb3ZpZGVEYXRhRm9yVHlwZTpzZXRUeXBlXTsKKyAgICAgICAgICAgIFtuZXdP
d25lciBwYXN0ZWJvYXJkOnNlbGYgcHJvdmlkZURhdGFGb3JUeXBlOnNldFR5cGUuZ2V0KCldOwog
ICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420174</attachid>
            <date>2021-02-12 13:52:27 -0800</date>
            <delta_ts>2021-02-12 14:32:23 -0800</delta_ts>
            <desc>Follow-up</desc>
            <filename>bug-221780-20210212135226.patch</filename>
            <type>text/plain</type>
            <size>69888</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjMDA2YTJlZGMxYWEx
N2ViNTBjNzg4YWQxZmIwN2EwYjQ3MWI0Ny4uNGU2YmVkNmQ1NjFlYzU5MzI5NDBmOTVmNmU3MDA2
ZmI0MjAwOWE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAyLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVz
YWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
NDI4MjM4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBcHBseSByZXZpZXcgZmVlZGJhY2sgZnJvbSBEYXJpbiBBZGxlciBhbmQgU2FtIFdlaW5pZyBh
ZnRlciByMjcyNzg5LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgorICAgICAg
ICAoaWYpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRMaW5rRm9yRWxlbWVudCk6CisgICAgICAgIChIVE1MQ29u
dmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZE1h
cmtlcnNUb0xpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdl
ci5tbToKKyAgICAgICAgKC1bV2ViQ29yZU1vdGlvbk1hbmFnZXIgaW5pdGlhbGl6ZU9uTWFpblRo
cmVhZF0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL05ldHdvcmtTdGF0ZU5vdGlm
aWVySU9TLm1tOgorCiAyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBkYTI0M2UxYThiZWRmYWQyZGQ0NGE1OGUxYzQ2NjU0YWVlMzg4Mzk5
Li5kNTg2YTc0YmNjYzZmNzc1YTZmMzYxZWY3MjFkNTc2YWZlY2QxMDYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdl
YktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
NzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDI4MjM4OT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAyMjE3ODBfb2JqY19yZWxlYXNlX2ZvbGxv
d191cAorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdo
bGlnaHRWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbToKKyAgICAgICAgKCtb
V0tQb3BvdmVyQ29sb3JXZWxsIF9jb2xvclBvcG92ZXJDcmVhdGVJZk5lY2Vzc2FyeTpdKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLm1tOgorICAgICAgICAoLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZSBz
ZXRSZW1vdGVQYXJlbnQ6XSk6CisKIDIwMjEtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFz
ZV0gaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggNTU5ZWY3ZTM4Y2Nl
MWVhOGExNjVhZWI4N2M2ZTI2NjZkNzc1MDRiOS4uY2Y0M2MyMWQ3ZTMwMDJmNmU0YzBjNzU1MGZj
ODFhMDBiMDRhYjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83NDI4MjM4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBcHBseSByZXZpZXcgZmVlZGJhY2sgZnJvbSBEYXJpbiBB
ZGxlciBhbmQgU2FtIFdlaW5pZyBhZnRlciByMjcyNzg5LgorCisgICAgICAgICogV2ViVmlldy9X
ZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQbGFjZWhvbGRl
ciBfdXBkYXRlVGl0bGVGb3JEb2N1bWVudElmQXZhaWxhYmxlXSk6CisKIDIwMjEtMDItMTIgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgZXhwbGljaXQg
dXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggNDM1MzQ0NTdiMDM4YTk0ZjZiMzI5YzUzNDZiNjllM2M5ZWNmMzE3OS4uZWQzNzYx
NjcyOWE1ZDNhMTQwMWM4OTc1NWYwOTY0MWM1NDA1NzIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJl
bGVhc2VdIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxNzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDI4MjM4OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBseSByZXZpZXcg
ZmVlZGJhY2sgZnJvbSBEYXJpbiBBZGxlciBhbmQgU2FtIFdlaW5pZyBhZnRlciByMjcyNzg5Lgor
CisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NTm9k
ZSBhYnNvbHV0ZVF1YWRzXSk6CisgICAgICAgICgtW0RPTUhUTUxBcmVhRWxlbWVudCBhYnNvbHV0
ZVF1YWRzV2l0aE93bmVyOl0pOgorICAgICAgICAqIERPTS9FeGNlcHRpb25IYW5kbGVycy5tbToK
KyAgICAgICAgKHJhaXNlRE9NRXJyb3JFeGNlcHRpb24pOgorICAgICAgICAqIERlZmF1bHREZWxl
Z2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkRlZmF1bHRVSURl
bGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDpkZWZh
dWx0VGV4dDppbml0aWF0ZWRCeUZyYW1lOl0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9y
eS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgdmlzaXRlZFVSTDp3aXRoVGl0bGU6
XSk6CisgICAgICAgICgtW1dlYkhpc3RvcnkgX3Zpc2l0ZWRVUkw6d2l0aFRpdGxlOm1ldGhvZDp3
YXNGYWlsdXJlOl0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW06CisgICAg
ICAgICgtW1dlYkhpc3RvcnlJdGVtIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOl0p
OgorICAgICAgICAqIE1pc2MvV2ViTlNEYXRhRXh0cmFzLm1tOgorICAgICAgICAoLVtOU0RhdGEg
X3dlYmtpdF9wYXJzZVJGQzgyMkhlYWRlckZpZWxkc10pOgorICAgICAgICAqIE1pc2MvV2ViTlNQ
YXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1Bhc3RlYm9hcmQgX3dlYl9kZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVtZW50OlVSTDp0aXRsZTphcmNoaXZlOnNvdXJjZTpdKToK
KyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpzcGF3blBsdWdpbkhv
c3QpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpwZXJm
b3JtUmVxdWVzdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChhdHRyaWJ1dGVzRm9yQXR0cmlidXRl
ZFN0cmluZ0NvbnZlcnNpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rp
b25hcnkgY29uc3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1l
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAg
ICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgaW5pdFdpdGhJbnNwZWN0ZWRXZWJW
aWV3OmlzVW5kZXJUZXN0Ol0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9s
bGVyIHdpbmRvd10pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAg
ICAgKC1bV2ViRGF0YVNvdXJjZSBfZG9jdW1lbnRGcmFnbWVudFdpdGhBcmNoaXZlOl0pOgorICAg
ICAgICAoLVtXZWJEYXRhU291cmNlIF9tYWtlUmVwcmVzZW50YXRpb25dKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3
IF91cGRhdGVNb3VzZW92ZXJXaXRoRXZlbnQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJOYXZp
Z2F0aW9uRGF0YS5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1t
OgorICAgICAgICAoLVtXZWJQREZSZXByZXNlbnRhdGlvbiBmaW5pc2hlZExvYWRpbmdXaXRoRGF0
YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAgICAgICgt
W1dlYlBERlZpZXcgX21lbnVJdGVtc0Zyb21QREZLaXRGb3JFdmVudDpdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlBvbGljeURlbGVnYXRlLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIubW06CisgICAgICAgIChXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFyc2VkKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX29wZW5O
ZXdXaW5kb3dXaXRoUmVxdWVzdDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYldpbmRvd0FuaW1h
dGlvbi5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbiBzZXRTdWJBbmltYXRpb246XSk6CisKIDIwMjEt
MDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2Ug
ZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IGVkZjQ1NzRkMjEzMDExNmI0ZjIwYWE2NGMz
MTgwOTkzOTg0MjUwODYuLmVjYzlkMTZmZjUwODY5YmYxOTg2OTlkNmFlMDk3YzkxOWFjNmU4YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMjk0LDgwICsx
Mjk0LDcyIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKICAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRh
Y2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXTsKIAotICAgIHN0YXRpYyBO
U0FycmF5KiBhdHRyaWJ1dGVzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBhbmNob3JBdHRy
cyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogd2ViQXJlYUF0dHJzID0gbmlsOwotICAgIHN0
YXRpYyBOU0FycmF5KiB0ZXh0QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGxpc3RB
dHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogbGlzdEJveEF0dHJzID0gbmlsOwotICAg
IHN0YXRpYyBOU0FycmF5KiByYW5nZUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBj
b21tb25NZW51QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIG1lbnVBdHRycyA9IG5p
bDsKLSAgICBzdGF0aWMgTlNBcnJheSogbWVudUJhckF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBO
U0FycmF5KiBtZW51SXRlbUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBtZW51QnV0
dG9uQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGNvbnRyb2xBdHRycyA9IG5pbDsK
LSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJh
eSogdGFibGVSb3dBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVDb2xBdHRy
cyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVDZWxsQXR0cnMgPSBuaWw7Ci0gICAg
c3RhdGljIE5TQXJyYXkqIGdyb3VwQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGlu
cHV0SW1hZ2VBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogcGFzc3dvcmRGaWVsZEF0
dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiB0YWJMaXN0QXR0cnMgPSBuaWw7Ci0gICAg
c3RhdGljIE5TQXJyYXkqIGNvbWJvQm94QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkq
IG91dGxpbmVBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogb3V0bGluZVJvd0F0dHJz
ID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBidXR0b25BdHRycyA9IG5pbDsKLSAgICBzdGF0
aWMgTlNBcnJheSogc2Nyb2xsVmlld0F0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBp
bmNyZW1lbnRvckF0dHJzID0gbmlsOwotICAgIGlmIChhdHRyaWJ1dGVzID09IG5pbCkgewotICAg
ICAgICBhdHRyaWJ1dGVzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNj
ZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTdWJy
b2xlQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9u
QXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUs
Ci0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlIZWxwQXR0cmlidXRlLAotICAgICAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5UG9zaXRpb25BdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0
cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGUsCi0gICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKLSAgICAgICAgICAg
IE5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5Rm9jdXNlZEF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRB
dHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1dGUsCi0g
ICAgICAgICAgICBAIkFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UiLAotICAgICAgICAgICAgQCJB
WFN0YXJ0VGV4dE1hcmtlciIsCi0gICAgICAgICAgICBAIkFYRW5kVGV4dE1hcmtlciIsCi0gICAg
ICAgICAgICBAIkFYVmlzaXRlZCIsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlMaW5rZWRV
SUVsZW1lbnRzQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRB
dHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRy
aWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJp
YnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUxhbmd1YWdlQXR0cmlidXRlLAotICAg
ICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RE9NSWRlbnRpZmllckF0dHJpYnV0ZSwKLSAgICAgICAg
ICAgIE5TQWNjZXNzaWJpbGl0eURPTUNsYXNzTGlzdEF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5T
QWNjZXNzaWJpbGl0eUZvY3VzYWJsZUFuY2VzdG9yQXR0cmlidXRlLAotICAgICAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5RWRpdGFibGVBbmNlc3RvckF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNj
ZXNzaWJpbGl0eUhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yQXR0cmlidXRlLAotICAgICAgICAgICAg
bmlsXTsKLSAgICB9Ci0gICAgaWYgKGNvbW1vbk1lbnVBdHRycyA9PSBuaWwpIHsKLSAgICAgICAg
Y29tbW9uTWVudUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNj
ZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0Fj
Y2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwotICAgIH0KKyAgICBzdGF0aWMgTlNBcnJh
eSAqYW5jaG9yQXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkgKndlYkFyZWFBdHRycyA9
IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJheSAqdGV4dEF0dHJzID0gbmlsOworICAgIHN0YXRpYyBO
U0FycmF5ICpsaXN0QXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkgKmxpc3RCb3hBdHRy
cyA9IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJheSAqcmFuZ2VBdHRycyA9IG5pbDsKKyAgICBzdGF0
aWMgTlNBcnJheSAqbWVudUF0dHJzID0gbmlsOworICAgIHN0YXRpYyBOU0FycmF5ICptZW51QmFy
QXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkgKm1lbnVJdGVtQXR0cnMgPSBuaWw7Cisg
ICAgc3RhdGljIE5TQXJyYXkgKmNvbnRyb2xBdHRycyA9IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJh
eSAqdGFibGVBdHRycyA9IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJheSAqdGFibGVSb3dBdHRycyA9
IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJheSAqdGFibGVDb2xBdHRycyA9IG5pbDsKKyAgICBzdGF0
aWMgTlNBcnJheSAqdGFibGVDZWxsQXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkgKmdy
b3VwQXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkgKmlucHV0SW1hZ2VBdHRycyA9IG5p
bDsKKyAgICBzdGF0aWMgTlNBcnJheSAqcGFzc3dvcmRGaWVsZEF0dHJzID0gbmlsOworICAgIHN0
YXRpYyBOU0FycmF5ICp0YWJMaXN0QXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkgKmNv
bWJvQm94QXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkgKm91dGxpbmVBdHRycyA9IG5p
bDsKKyAgICBzdGF0aWMgTlNBcnJheSAqb3V0bGluZVJvd0F0dHJzID0gbmlsOworICAgIHN0YXRp
YyBOU0FycmF5ICpidXR0b25BdHRycyA9IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJheSAqc2Nyb2xs
Vmlld0F0dHJzID0gbmlsOworICAgIHN0YXRpYyBOU0FycmF5ICppbmNyZW1lbnRvckF0dHJzID0g
bmlsOworICAgIHN0YXRpYyBOU0FycmF5ICphdHRyaWJ1dGVzID0gQFtOU0FjY2Vzc2liaWxpdHlS
b2xlQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlLAor
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGUsCisgICAgICAg
IE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxp
dHlIZWxwQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGUs
CisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlLAorICAgICAgICBOU0Fj
Y2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlUaXRsZUF0
dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25BdHRyaWJ1dGUsCisg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2li
aWxpdHlGb2N1c2VkQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0
cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1dGUsCisgICAgICAg
IEAiQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSIsCisgICAgICAgIEAiQVhTdGFydFRleHRNYXJr
ZXIiLAorICAgICAgICBAIkFYRW5kVGV4dE1hcmtlciIsCisgICAgICAgIEAiQVhWaXNpdGVkIiwK
KyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZSwKKyAgICAg
ICAgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJp
bGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5VG9w
TGV2ZWxVSUVsZW1lbnRBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eUxhbmd1YWdl
QXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlET01JZGVudGlmaWVyQXR0cmlidXRl
LAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlET01DbGFzc0xpc3RBdHRyaWJ1dGUsCisgICAgICAg
IE5TQWNjZXNzaWJpbGl0eUZvY3VzYWJsZUFuY2VzdG9yQXR0cmlidXRlLAorICAgICAgICBOU0Fj
Y2Vzc2liaWxpdHlFZGl0YWJsZUFuY2VzdG9yQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2li
aWxpdHlIaWdoZXN0RWRpdGFibGVBbmNlc3RvckF0dHJpYnV0ZV07CisgICAgc3RhdGljIE5TQXJy
YXkgKmNvbW1vbk1lbnVBdHRycyA9IEBbTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKKyAg
ICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAorICAgICAgICBO
U0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5
UGFyZW50QXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmlidXRl
LAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV07CisKICAgICBpZiAoYW5jaG9yQXR0cnMgPT0gbmls
KSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TGlua1JlbGF0aW9uc2hpcFR5cGVBdHRy
aWJ1dGVdOwotICAgICAgICBhbmNob3JBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBhbmNob3JBdHRycyA9IHRlbXBBcnJheS5s
ZWFrUmVmKCk7CiAgICAgfQogICAgIGlmICh3ZWJBcmVhQXR0cnMgPT0gbmlsKSB7CiAgICAgICAg
IGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OmF0dHJpYnV0ZXNdKTsKQEAgLTEzODUsNyArMTM3Nyw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlDYXJldEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlz
cGF0Y2hBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlXZWJTZXNzaW9uSURBdHRyaWJ1dGVdOwotICAgICAgICB3ZWJBcmVhQXR0cnMgPSBbW05T
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKKyAgICAgICAgd2Vi
QXJlYUF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKICAgICB9CiAgICAgaWYgKHRleHRBdHRy
cyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwpAQCAtMTQwMCw3ICsxMzky
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlQbGFjZWhvbGRlclZhbHVlQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFs
dWVBdXRvZmlsbGVkQXR0cmlidXRlXTsKLSAgICAgICAgdGV4dEF0dHJzID0gW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIHRleHRBdHRycyA9
IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChsaXN0QXR0cnMgPT0gbmlsKSB7
CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKQEAgLTE0MDgsNyArMTQwMCw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVt
ZW50QXR0cmlidXRlXTsKLSAgICAgICAgbGlzdEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIGxpc3RBdHRycyA9IHRlbXBBcnJh
eS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChsaXN0Qm94QXR0cnMgPT0gbmlsKSB7CiAgICAg
ICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5Omxpc3RBdHRyc10pOwpAQCAtMTQxNiw3ICsxNDA4LDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAg
ICAgbGlzdEJveEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJh
eS5nZXQoKV07CisgICAgICAgIGxpc3RCb3hBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAg
ICAgfQogICAgIGlmIChyYW5nZUF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJh
eSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1
dGVzXSk7CkBAIC0xNDI1LDcgKzE0MTcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlWYWx1ZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwotICAgICAg
ICByYW5nZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5n
ZXQoKV07CisgICAgICAgIHJhbmdlQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0K
ICAgICBpZiAobWVudUJhckF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51
QXR0cnNdKTsKQEAgLTE0MzMsNyArMTQyNSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlW
aXNpYmxlQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAg
ICAgbWVudUJhckF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJh
eS5nZXQoKV07CisgICAgICAgIG1lbnVCYXJBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAg
ICAgfQogICAgIGlmIChtZW51QXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1l
bnVBdHRyc10pOwpAQCAtMTQ0MSw3ICsxNDMzLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAg
ICAgICBtZW51QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5
LmdldCgpXTsKKyAgICAgICAgbWVudUF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKICAgICB9
CiAgICAgaWYgKG1lbnVJdGVtQXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1l
bnVBdHRyc10pOwpAQCAtMTQ1OCwyNyArMTQ1MCwyNSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilr
QVhNZW51SXRlbVByaW1hcnlVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZXJ2ZXNBc1RpdGxlRm9yVUlFbGVtZW50c0F0dHJp
YnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUZvY3Vz
ZWRBdHRyaWJ1dGVdOwotICAgICAgICBtZW51SXRlbUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07Ci0gICAgfQotICAgIGlmIChtZW51QnV0dG9u
QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIG1lbnVCdXR0b25BdHRycyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRy
aWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlv
bkF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVNp
emVBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlX
aW5kb3dBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxp
dHlFbmFibGVkQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNj
ZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUsIG5pbF07Ci0gICAgfQorICAgICAgICBtZW51
SXRlbUF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKKyAgICB9CisgICAgc3RhdGljIE5TQXJy
YXkgKm1lbnVCdXR0b25BdHRycyA9IEBbTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKKyAg
ICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAorICAgICAgICBO
U0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBv
c2l0aW9uQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAor
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNz
aWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRB
dHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlLAorICAgICAg
IE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsKICAgICBpZiAoY29udHJvbEF0dHJz
ID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UmVxdWly
ZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlJbnZhbGlkQXR0cmlidXRlXTsKLSAgICAgICAgY29udHJvbEF0dHJzID0gW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIGNvbnRyb2xBdHRy
cyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChpbmNyZW1lbnRvckF0dHJz
ID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CkBAIC0xNDg3LDcgKzE0Nzcs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF4
VmFsdWVBdHRyaWJ1dGVdOwotICAgICAgICBpbmNyZW1lbnRvckF0dHJzID0gW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIGluY3JlbWVudG9y
QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAoYnV0dG9uQXR0cnMg
PT0gbmlsKSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKQEAgLTE0OTUsMTMgKzE0ODUs
MTMgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1w
QXJyYXkgcmVtb3ZlT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nl
c3NLZXlBdHRyaWJ1dGVdOwotICAgICAgICBidXR0b25BdHRycyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBidXR0b25BdHRycyA9IHRl
bXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChjb21ib0JveEF0dHJzID09IG5pbCkg
ewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTpjb250cm9sQXR0cnNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5RXhwYW5kZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0gICAg
ICAgIGNvbWJvQm94QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFy
cmF5LmdldCgpXTsKKyAgICAgICAgY29tYm9Cb3hBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7
CiAgICAgfQogICAgIGlmICh0YWJsZUF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzXSk7CkBAIC0xNTE3LDEyICsxNTA3LDEyIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlSb3dDb3VudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eUFSSUFDb2x1bW5Db3VudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFSSUFSb3dDb3VudEF0dHJpYnV0ZV07Ci0gICAgICAg
IHRhYmxlQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5Lmdl
dCgpXTsKKyAgICAgICAgdGFibGVBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQog
ICAgIGlmICh0YWJsZVJvd0F0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVz
XSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluZGV4QXR0
cmlidXRlXTsKLSAgICAgICAgdGFibGVSb3dBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICB0YWJsZVJvd0F0dHJzID0gdGVtcEFy
cmF5LmxlYWtSZWYoKTsKICAgICB9CiAgICAgaWYgKHRhYmxlQ29sQXR0cnMgPT0gbmlsKSB7CiAg
ICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKQEAgLTE1MzAsNyArMTUyMCw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdOwotICAgICAg
ICB0YWJsZUNvbEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJh
eS5nZXQoKV07CisgICAgICAgIHRhYmxlQ29sQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwog
ICAgIH0KICAgICBpZiAodGFibGVDZWxsQXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIGF1dG8gdGVt
cEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0
dHJpYnV0ZXNdKTsKQEAgLTE1NDAsMTcgKzE1MzAsMTcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVJvd0hlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBQ29sdW1uSW5kZXhBdHRyaWJ1dGVdOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBUm93SW5kZXhBdHRyaWJ1
dGVdOwotICAgICAgICB0YWJsZUNlbGxBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICB0YWJsZUNlbGxBdHRycyA9IHRlbXBBcnJh
eS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChncm91cEF0dHJzID09IG5pbCkgewogICAgICAg
ICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKLSAgICAgICAgZ3JvdXBBdHRycyA9
IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAg
ICBncm91cEF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKICAgICB9CiAgICAgaWYgKGlucHV0
SW1hZ2VBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YnV0dG9uQXR0cnNdKTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKLSAg
ICAgICAgaW5wdXRJbWFnZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRl
bXBBcnJheS5nZXQoKV07CisgICAgICAgIGlucHV0SW1hZ2VBdHRycyA9IHRlbXBBcnJheS5sZWFr
UmVmKCk7CiAgICAgfQogICAgIGlmIChwYXNzd29yZEZpZWxkQXR0cnMgPT0gbmlsKSB7CiAgICAg
ICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKQEAgLTE1NTksMTQgKzE1NDksMTQgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlQbGFjZWhvbGRlclZhbHVlQXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdXRvZmlsbGVkQXR0
cmlidXRlXTsKLSAgICAgICAgcGFzc3dvcmRGaWVsZEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIHBhc3N3b3JkRmllbGRBdHRy
cyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmICh0YWJMaXN0QXR0cnMgPT0g
bmlsKSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGFic0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVd
OwotICAgICAgICB0YWJMaXN0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5LmdldCgpXTsKKyAgICAgICAgdGFiTGlzdEF0dHJzID0gdGVtcEFycmF5LmxlYWtS
ZWYoKTsKICAgICB9CiAgICAgaWYgKG91dGxpbmVBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0
byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6YXR0cmlidXRlc10pOwpAQCAtMTU3NCw3ICsxNTY0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eVJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICBvdXRsaW5l
QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsK
KyAgICAgICAgb3V0bGluZUF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKICAgICB9CiAgICAg
aWYgKG91dGxpbmVSb3dBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGFibGVSb3dBdHRy
c10pOwpAQCAtMTU4MywxNCArMTU3MywxNCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGlz
Y2xvc3VyZUxldmVsQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
cmVtb3ZlT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKLSAgICAgICAgb3V0
bGluZVJvd0F0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5n
ZXQoKV07CisgICAgICAgIG91dGxpbmVSb3dBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAg
ICAgfQogICAgIGlmIChzY3JvbGxWaWV3QXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIGF1dG8gdGVt
cEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0
dHJpYnV0ZXNdKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
Q29udGVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1dGVdOwot
ICAgICAgICBzY3JvbGxWaWV3QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5LmdldCgpXTsKKyAgICAgICAgc2Nyb2xsVmlld0F0dHJzID0gdGVtcEFycmF5Lmxl
YWtSZWYoKTsKICAgICB9CiAKICAgICBOU0FycmF5ICpvYmplY3RBdHRyaWJ1dGVzID0gYXR0cmli
dXRlczsKQEAgLTMwNTUsMTAgKzMwNDUsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgc3RhdGljIE5TQXJyYXkqIHBhcmFtQXR0cnMgPSBuaWw7Ci0g
ICAgc3RhdGljIE5TQXJyYXkqIHRleHRQYXJhbUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0Fy
cmF5KiB0YWJsZVBhcmFtQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIHdlYkFyZWFQ
YXJhbUF0dHJzID0gbmlsOworICAgIHN0YXRpYyBOU0FycmF5ICogcGFyYW1BdHRycyA9IG5pbDsK
KyAgICBzdGF0aWMgTlNBcnJheSAqIHRleHRQYXJhbUF0dHJzID0gbmlsOworICAgIHN0YXRpYyBO
U0FycmF5ICogdGFibGVQYXJhbUF0dHJzID0gbmlsOworICAgIHN0YXRpYyBOU0FycmF5ICogd2Vi
QXJlYVBhcmFtQXR0cnMgPSBuaWw7CiAgICAgaWYgKHBhcmFtQXR0cnMgPT0gbmlsKSB7CiAgICAg
ICAgIHBhcmFtQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKICAgICAg
ICAgICAgIEAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCA3MmRhMTFhNzUxZThmOWRkM2E0NDJk
NTdiZDkxYzJiMTljNTMxM2NjLi44ZDc1YWEwYWQ0ZDFlNmUxYjIyYmI4NWY5MTdmNGZlZmE5NmQ2
M2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
CkBAIC0yOTUsNyArMjk1LDcgQEAgcHJpdmF0ZToKIAogICAgIFJldGFpblB0cjxOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nPiBfYXR0clN0cjsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlv
bmFyeT4gX2RvY3VtZW50QXR0cnM7Ci0gICAgTlNVUkwgKl9iYXNlVVJMOworICAgIFJldGFpblB0
cjxOU1VSTD4gX2Jhc2VVUkw7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfdGV4dExp
c3RzOwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX3RleHRCbG9ja3M7CiAgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfdGV4dFRhYmxlczsKQEAgLTE2MzYsNyArMTYzNiw3IEBA
IHZvaWQgSFRNTENvbnZlcnRlcjo6X2FkZExpbmtGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQs
IE5TUmFuZ2UgcmFuZ2UpCiAgICAgICAgIGlmICghdXJsKQogICAgICAgICAgICAgdXJsID0gZWxl
bWVudC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyhzdHJpcHBlZFN0cmluZykpOwogICAgICAgICBpZiAoIXVybCkKLSAgICAgICAgICAgIHVy
bCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6c3RyaXBwZWRTdHJpbmcgcmVsYXRpdmVUb1VS
TDpfYmFzZVVSTF07CisgICAgICAgICAgICB1cmwgPSBbTlNVUkwgX3dlYl9VUkxXaXRoU3RyaW5n
OnN0cmlwcGVkU3RyaW5nIHJlbGF0aXZlVG9VUkw6X2Jhc2VVUkwuZ2V0KCldOwogICAgICAgICBb
X2F0dHJTdHIgYWRkQXR0cmlidXRlOk5TTGlua0F0dHJpYnV0ZU5hbWUgdmFsdWU6dXJsID8gKGlk
KXVybCA6IChpZCl1cmxTdHJpbmcgcmFuZ2U6cmFuZ2VdOwogICAgIH0KIH0KQEAgLTE3OTUsNyAr
MTc5NSw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQsIE5TSW50ZWdlciBkZXB0aCkKICAgICAgICAgaWYgKHVybFN0cmluZyAmJiBbdXJsU3Ry
aW5nIGxlbmd0aF0gPiAwKSB7CiAgICAgICAgICAgICBOU1VSTCAqdXJsID0gZWxlbWVudC5kb2N1
bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxT
dHJpbmcpKTsKICAgICAgICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgICAgIHVybCA9IFtO
U1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6W3VybFN0cmluZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFj
dGVyc0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0ZXNwYWNlQW5kTmV3bGluZUNoYXJhY3RlclNl
dF1dIHJlbGF0aXZlVG9VUkw6X2Jhc2VVUkxdOworICAgICAgICAgICAgICAgIHVybCA9IFtOU1VS
TCBfd2ViX1VSTFdpdGhTdHJpbmc6W3VybFN0cmluZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVy
c0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0ZXNwYWNlQW5kTmV3bGluZUNoYXJhY3RlclNldF1d
IHJlbGF0aXZlVG9VUkw6X2Jhc2VVUkwuZ2V0KCldOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgICAgICBCT09MIHVzZVBsYWNlaG9sZGVySW1hZ2UgPSBOTzsKICNlbHNlCkBAIC0x
ODE1LDE0ICsxODE1LDE0IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIE5TSW50ZWdlciBkZXB0aCkKICAgICAgICAgICAgIGlmIChiYXNlU3Ry
aW5nICYmIFtiYXNlU3RyaW5nIGxlbmd0aF0gPiAwKSB7CiAgICAgICAgICAgICAgICAgYmFzZVVS
TCA9IGVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoYmFzZVN0cmluZykpOwogICAgICAgICAgICAgICAgIGlmICghYmFzZVVSTCkK
LSAgICAgICAgICAgICAgICAgICAgYmFzZVVSTCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6
W2Jhc2VTdHJpbmcgc3RyaW5nQnlUcmltbWluZ0NoYXJhY3RlcnNJblNldDpbTlNDaGFyYWN0ZXJT
ZXQgd2hpdGVzcGFjZUFuZE5ld2xpbmVDaGFyYWN0ZXJTZXRdXSByZWxhdGl2ZVRvVVJMOl9iYXNl
VVJMXTsKKyAgICAgICAgICAgICAgICAgICAgYmFzZVVSTCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhT
dHJpbmc6W2Jhc2VTdHJpbmcgc3RyaW5nQnlUcmltbWluZ0NoYXJhY3RlcnNJblNldDpbTlNDaGFy
YWN0ZXJTZXQgd2hpdGVzcGFjZUFuZE5ld2xpbmVDaGFyYWN0ZXJTZXRdXSByZWxhdGl2ZVRvVVJM
Ol9iYXNlVVJMLmdldCgpXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChiYXNlVVJM
KQogICAgICAgICAgICAgICAgIHVybCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6W3VybFN0
cmluZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVyc0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0
ZXNwYWNlQW5kTmV3bGluZUNoYXJhY3RlclNldF1dIHJlbGF0aXZlVG9VUkw6YmFzZVVSTF07CiAg
ICAgICAgICAgICBpZiAoIXVybCkKICAgICAgICAgICAgICAgICB1cmwgPSBlbGVtZW50LmRvY3Vt
ZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0
cmluZykpOwogICAgICAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICAgICAgdXJsID0gW05T
VVJMIF93ZWJfVVJMV2l0aFN0cmluZzpbdXJsU3RyaW5nIHN0cmluZ0J5VHJpbW1pbmdDaGFyYWN0
ZXJzSW5TZXQ6W05TQ2hhcmFjdGVyU2V0IHdoaXRlc3BhY2VBbmROZXdsaW5lQ2hhcmFjdGVyU2V0
XV0gcmVsYXRpdmVUb1VSTDpfYmFzZVVSTF07CisgICAgICAgICAgICAgICAgdXJsID0gW05TVVJM
IF93ZWJfVVJMV2l0aFN0cmluZzpbdXJsU3RyaW5nIHN0cmluZ0J5VHJpbW1pbmdDaGFyYWN0ZXJz
SW5TZXQ6W05TQ2hhcmFjdGVyU2V0IHdoaXRlc3BhY2VBbmROZXdsaW5lQ2hhcmFjdGVyU2V0XV0g
cmVsYXRpdmVUb1VSTDpfYmFzZVVSTC5nZXQoKV07CiAgICAgICAgICAgICBpZiAodXJsKQogICAg
ICAgICAgICAgICAgIHJldHZhbCA9ICFfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoZWxlbWVudCwg
dXJsLCBpc0Jsb2NrTGV2ZWwsIE5PKTsKICAgICAgICAgfQpAQCAtMTg5NCw3ICsxODk0LDYgQEAg
dm9pZCBIVE1MQ29udmVydGVyOjpfYWRkTWFya2Vyc1RvTGlzdChOU1RleHRMaXN0ICpsaXN0LCBO
U1JhbmdlIHJhbmdlKQogICAgIE5TRGljdGlvbmFyeSAqYXR0cnNUb0luc2VydCA9IG5pbDsKICAg
ICBQbGF0Zm9ybUZvbnQgKmZvbnQ7CiAgICAgTlNQYXJhZ3JhcGhTdHlsZSAqcGFyYWdyYXBoU3R5
bGU7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZVBhcmFncmFwaFN0eWxlPiBuZXdTdHlsZTsKICAg
ICBOU1RleHRUYWIgKnRhYiA9IG5pbDsKICAgICBOU1RleHRUYWIgKnRhYlRvUmVtb3ZlOwogICAg
IE5TUmFuZ2UgcGFyYWdyYXBoUmFuZ2U7CkBAIC0xOTMzLDcgKzE5MzIsNyBAQCB2b2lkIEhUTUxD
b252ZXJ0ZXI6Ol9hZGRNYXJrZXJzVG9MaXN0KE5TVGV4dExpc3QgKmxpc3QsIE5TUmFuZ2UgcmFu
Z2UpCiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGhSYW5nZS5sb2NhdGlvbiA8IF9k
b21SYW5nZVN0YXJ0SW5kZXgpCiAgICAgICAgICAgICAgICAgICAgICAgICBfZG9tUmFuZ2VTdGFy
dEluZGV4ICs9IGluc2VydExlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIG5ld1N0eWxlID0gYWRvcHROUyhbcGFyYWdyYXBoU3R5bGUgbXV0YWJsZUNvcHld
KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdTdHlsZSA9IGFkb3B0TlMoW3BhcmFncmFw
aFN0eWxlIG11dGFibGVDb3B5XSk7CiAgICAgICAgICAgICAgICAgICAgIGxpc3RMb2NhdGlvbiA9
IChsaXN0SW5kZXggKyAxKSAqIDM2OwogICAgICAgICAgICAgICAgICAgICBtYXJrZXJMb2NhdGlv
biA9IGxpc3RMb2NhdGlvbiAtIDI1OwogICAgICAgICAgICAgICAgICAgICBbbmV3U3R5bGUgc2V0
Rmlyc3RMaW5lSGVhZEluZGVudDowXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQppbmRleCA0MzgxNmY3ZmM1NTZiMTQ5MWJhNjlh
YjExZjg5OWUyOGIzYjczMTg2Li4yN2I0MjQ4YzY3OTdiMmM3ZjYyMzVlYmUxZWI0YmU2Y2MzM2Y1
MTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlv
bk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rp
b25NYW5hZ2VyLm1tCkBAIC0xNDUsOSArMTQ1LDkgQEAgLSAodm9pZClpbml0aWFsaXplT25NYWlu
VGhyZWFkCiAgICAgbV9neXJvQXZhaWxhYmxlID0gbV9tb3Rpb25NYW5hZ2VyLmdldCgpLmRldmlj
ZU1vdGlvbkF2YWlsYWJsZTsKIAogICAgIGlmIChtX2d5cm9BdmFpbGFibGUpCi0gICAgICAgIFtt
X21vdGlvbk1hbmFnZXIgc2V0RGV2aWNlTW90aW9uVXBkYXRlSW50ZXJ2YWw6IGtNb3Rpb25VcGRh
dGVJbnRlcnZhbF07CisgICAgICAgIFttX21vdGlvbk1hbmFnZXIgc2V0RGV2aWNlTW90aW9uVXBk
YXRlSW50ZXJ2YWw6a01vdGlvblVwZGF0ZUludGVydmFsXTsKICAgICBlbHNlCi0gICAgICAgIFtt
X21vdGlvbk1hbmFnZXIgc2V0QWNjZWxlcm9tZXRlclVwZGF0ZUludGVydmFsOiBrTW90aW9uVXBk
YXRlSW50ZXJ2YWxdOworICAgICAgICBbbV9tb3Rpb25NYW5hZ2VyIHNldEFjY2VsZXJvbWV0ZXJV
cGRhdGVJbnRlcnZhbDprTW90aW9uVXBkYXRlSW50ZXJ2YWxdOwogCiAgICAgbV9sb2NhdGlvbk1h
bmFnZXIgPSBhZG9wdE5TKFthbGxvY0NMTG9jYXRpb25NYW5hZ2VySW5zdGFuY2UoKSBpbml0XSk7
CiAgICAgbV9oZWFkaW5nQXZhaWxhYmxlID0gW2dldENMTG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBo
ZWFkaW5nQXZhaWxhYmxlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL05ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0KaW5kZXggYjhlOWIz
Yzc3Nzk5Y2Q2MWNmOWM1OWYwOThiNmM2YWM0NWY2MmQwMS4uZTk3M2IwNmQzMDViZDFhMWUxYjg2
ZjI0NjQyM2Y3OWZmYTFlYjU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0KQEAgLTU5
LDExICs1OSw2IEBAIC0gKGlkKWluaXRXaXRoQmxvY2s6KHZvaWQgKF4pKCkpb2JzZXJ2ZXJCbG9j
awogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc3VwZXIg
ZGVhbGxvY107Ci19Ci0KIC0gKHZvaWQpbmV0d29ya1N0YXRlQ2hhbmdlZDooTlNOb3RpZmljYXRp
b24gKil1bnVzZWROb3RpZmljYXRpb24KIHsKICAgICBVTlVTRURfUEFSQU0odW51c2VkTm90aWZp
Y2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9p
b3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5oCmluZGV4IDE4NzE5MWZmNjA0
NWJkNTBmM2FmYzQzYjBjYTBiYWMzM2ViZWZkNWEuLjczMDU3ZTRjZWUzZGY1OGQ2MGRmYmY2MDU3
ZTQ2ODAyZWMzZTA4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaApAQCAtMjks
NyArMjksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JPdmVybGF5Lmg+CiAKIEBpbnRl
cmZhY2UgV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3IDogVUlWaWV3IHsKLSAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IF9sYXllcnM7IC8vIENBU2hhcGVMYXllcnMuCisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PENBU2hhcGVMYXllciAqPj4gX2xheWVyczsKIH0KIC0gKHZvaWQpdXBk
YXRlOihjb25zdCBXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQmKWhpZ2hsaWdo
dDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9s
bFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCmlu
ZGV4IGI4MmI0NTkzMjRjZDNlMWJhZTBlZDUxNzU2OGE5MjM3OTlhYzY0YzQuLjczNjhiZjY0MTg1
NzE3ZmExZDc4YWJiMWFlY2NmZjFjNmUyMGQ3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLU2Nyb2xsVmlldy5tbQpAQCAtMjE3LDExICsyMTcsNiBAQCAtICh2b2lkKV91cGRh
dGVEZWxlZ2F0ZQogICAgIH0KIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3N1cGVyIGRl
YWxsb2NdOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgdmFsdWVzQXJlV2l0aGluT25lUGl4ZWwo
Q0dGbG9hdCBhLCBDR0Zsb2F0IGIpCiB7CiAgICAgcmV0dXJuIENHRkFicyhhIC0gYikgPCAxOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tCmlu
ZGV4IDlmMGUyMzlmNDI1ZWI3Y2U5NTJkZTU0MTc2ZmMwNGYwNDBmZTFmMTQuLjg2YTZmNDY4YzQ2
ZmQ4MWI4ZTAyNzc5NzNlYTJmYmVjNzIyZjFjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW0KQEAgLTE0MCw3ICsxNDAsNyBAQCArIChO
U1BvcG92ZXIgKilfY29sb3JQb3BvdmVyQ3JlYXRlSWZOZWNlc3Nhcnk6KEJPT0wpZm9yY2VDcmVh
dGlvbgogCiAgICAgICAgIGF1dG8gY29udHJvbGxlciA9IGFkb3B0TlMoW1tOU0NsYXNzRnJvbVN0
cmluZyhAIk5TQ29sb3JQb3BvdmVyQ29udHJvbGxlciIpIGFsbG9jXSBpbml0XSk7CiAgICAgICAg
IHBvcG92ZXIuY29udGVudFZpZXdDb250cm9sbGVyID0gY29udHJvbGxlci5nZXQoKTsKLSAgICAg
ICAgW2NvbnRyb2xsZXIgc2V0UG9wb3ZlcjogcG9wb3Zlcl07CisgICAgICAgIFtjb250cm9sbGVy
IHNldFBvcG92ZXI6cG9wb3Zlcl07CiAKICAgICAgICAgY29sb3JQb3BvdmVyID0gcG9wb3ZlcjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KaW5k
ZXggYWEzYmVjMGQwNmM4OGNiNWM3Y2UxOWEzMjM4ZTk3ZGUwZGE0MGM0YS4uYmRmMGI0ODU1ZDQy
OTk5NWExODA2MTdlYzY2ZWUxZWE2MjYxODJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMTMxLDggKzEzMSw3IEBAIC0gKHZvaWQpc2V0SGFz
TWFpbkZyYW1lUGx1Z2luOihib29sKWhhc1BsdWdpbgogLSAodm9pZClzZXRSZW1vdGVQYXJlbnQ6
KGlkKXBhcmVudAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKHBhcmVu
dCAhPSBtX3BhcmVudCkKLSAgICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CisgICAgbV9wYXJlbnQg
PSBwYXJlbnQ7CiB9CiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhv
bGRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNl
aG9sZGVyLm1tCmluZGV4IDY5NmRmNWI2OTExM2YxNTI4OTk1ZGQyZDNhMjAyN2M1NWIzNGE2M2Uu
LjYyZjNkZTQyODVkYTYzZjVkOGZkZjkzZTZiZGNhMDdjMzdmNWFjYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVy
Lm1tCkBAIC0zMjgsMTYgKzMyOCwxNiBAQCAtICh2b2lkKV91cGRhdGVUaXRsZUZvckRvY3VtZW50
SWZBdmFpbGFibGUKICAgICBpZiAoIV9kb2N1bWVudCB8fCAhQ0dQREZEb2N1bWVudElzVW5sb2Nr
ZWQoX2RvY3VtZW50KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPE5TU3RyaW5n
PiB0aXRsZTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRpdGxlOwogCiAgICAgQ0dQREZE
aWN0aW9uYXJ5UmVmIGluZm8gPSBDR1BERkRvY3VtZW50R2V0SW5mbyhfZG9jdW1lbnQpOwogICAg
IENHUERGU3RyaW5nUmVmIHZhbHVlOwogICAgIGlmIChDR1BERkRpY3Rpb25hcnlHZXRTdHJpbmco
aW5mbywgIlRpdGxlIiwgJnZhbHVlKSkKLSAgICAgICAgdGl0bGUgPSBhZG9wdE5TKChOU1N0cmlu
ZyAqKUNHUERGU3RyaW5nQ29weVRleHRTdHJpbmcodmFsdWUpKTsKKyAgICAgICAgdGl0bGUgPSBh
ZG9wdENGKENHUERGU3RyaW5nQ29weVRleHRTdHJpbmcodmFsdWUpKTsKIAotICAgIGlmIChbdGl0
bGUgbGVuZ3RoXSkgewotICAgICAgICBbc2VsZiBzZXRUaXRsZTp0aXRsZS5nZXQoKV07Ci0gICAg
ICAgIFtbc2VsZiBfZnJhbWVdIF9kaXNwYXRjaERpZFJlY2VpdmVUaXRsZTp0aXRsZS5nZXQoKV07
CisgICAgaWYgKENGU3RyaW5nR2V0TGVuZ3RoKHRpdGxlLmdldCgpKSkgeworICAgICAgICBbc2Vs
ZiBzZXRUaXRsZTooTlNTdHJpbmcgKil0aXRsZS5nZXQoKV07CisgICAgICAgIFtbc2VsZiBfZnJh
bWVdIF9kaXNwYXRjaERpZFJlY2VpdmVUaXRsZTooTlNTdHJpbmcgKil0aXRsZS5nZXQoKV07CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlL
aXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0
ZW5zaW9ucy5tbQppbmRleCA4Y2FmNzU4YjhhNjUwZThiZmMzOGU3MTBkZTQ3ZjUyYThjODE1NGYx
Li4wOWRkZWYzYTc3MDIwNDYyM2VkNDBkNjY4NDU3OTA1YjZjYjU1ZDU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTE4Miwx
MCArMTgyLDggQEAgLSAoTlNBcnJheSAqKWFic29sdXRlUXVhZHMKICAgICAgICAgICAgIHF1YWRz
ID0gW3NlbGYgbGluZUJveFF1YWRzXTsKICAgICB9CiAKLSAgICBpZiAoIVtxdWFkcyBjb3VudF0p
IHsKLSAgICAgICAgYXV0byBxdWFkT2JqZWN0ID0gYWRvcHROUyhbW1dLUXVhZE9iamVjdCBhbGxv
Y10gaW5pdFdpdGhRdWFkOltzZWxmIGFic29sdXRlUXVhZF1dKTsKLSAgICAgICAgcXVhZHMgPSBA
W3F1YWRPYmplY3QuZ2V0KCldOwotICAgIH0KKyAgICBpZiAoIVtxdWFkcyBjb3VudF0pCisgICAg
ICAgIHF1YWRzID0gQFthZG9wdE5TKFtbV0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6
W3NlbGYgYWJzb2x1dGVRdWFkXV0pLmdldCgpXTsKIAogICAgIHJldHVybiBxdWFkczsKIH0KQEAg
LTM1OSw5ICszNTcsNyBAQCAtIChOU0FycmF5ICopYm91bmRpbmdCb3hlc1dpdGhPd25lcjooRE9N
Tm9kZSAqKW93bmVyCiAKIC0gKE5TQXJyYXkgKilhYnNvbHV0ZVF1YWRzV2l0aE93bmVyOihET01O
b2RlICopb3duZXIKIHsKLSAgICBhdXRvIHF1YWRPYmplY3QgPSBhZG9wdE5TKFtbV0tRdWFkT2Jq
ZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkV2l0aE93bmVyOm93bmVy
XV0pOwotICAgIE5TQXJyYXkgKnF1YWRBcnJheSA9IEBbcXVhZE9iamVjdC5nZXQoKV07Ci0gICAg
cmV0dXJuIHF1YWRBcnJheTsKKyAgICByZXR1cm4gQFthZG9wdE5TKFtbV0tRdWFkT2JqZWN0IGFs
bG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkV2l0aE93bmVyOm93bmVyXV0pLmdl
dCgpXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0V4Y2VwdGlvbkhhbmRsZXJzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0V4Y2Vw
dGlvbkhhbmRsZXJzLm1tCmluZGV4IDc5ZDdjMDAzNmYwODA4YzAyMWNiMTFmZTdlNTUzN2RjYWUy
NGIwZmIuLmFkZDYzODgwMGUxYmZkMGVmNDAxZjJhYzY3ZmE2MjU2NmNjOTdmMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMubW0KQEAgLTQ4
LDkgKzQ4LDkgQEAgc3RhdGljIE5PX1JFVFVSTiB2b2lkIHJhaXNlRE9NRXJyb3JFeGNlcHRpb24o
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYykKICAgICBlbHNlCiAgICAgICAgIHJlYXNvbiA9IGFk
b3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIqKiogJUAgJWQiLCBET01F
eGNlcHRpb24sIGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGVdKTsKIAotICAgIGF1dG8gdXNlckluZm8g
PSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOkAo
ZGVzY3JpcHRpb24ubGVnYWN5Q29kZSksIERPTUV4Y2VwdGlvbiwgbmlsXSk7CisgICAgTlNEaWN0
aW9uYXJ5ICp1c2VySW5mbyA9IEB7IERPTUV4Y2VwdGlvbjogQChkZXNjcmlwdGlvbi5sZWdhY3lD
b2RlKSB9OwogCi0gICAgTlNFeGNlcHRpb24gKmV4Y2VwdGlvbiA9IFtOU0V4Y2VwdGlvbiBleGNl
cHRpb25XaXRoTmFtZTpET01FeGNlcHRpb24gcmVhc29uOnJlYXNvbi5nZXQoKSB1c2VySW5mbzp1
c2VySW5mby5nZXQoKV07CisgICAgTlNFeGNlcHRpb24gKmV4Y2VwdGlvbiA9IFtOU0V4Y2VwdGlv
biBleGNlcHRpb25XaXRoTmFtZTpET01FeGNlcHRpb24gcmVhc29uOnJlYXNvbi5nZXQoKSB1c2Vy
SW5mbzp1c2VySW5mb107CiAgICAgW2V4Y2VwdGlvbiByYWlzZV07CiAKICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0KaW5kZXgg
MGY1ODhkMjAxZmI4NjNkNGM1MzQ2NjNlYTk1NDExMmRiNGY3ZWVjZC4uZDlkOWE4ZjdkMTU1ZDhi
ZDI0NDI4NTQxNWY2YjBlMWNlNzg3YzAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRl
Lm1tCkBAIC0xOTIsNyArMTkyLDcgQEAgLSAoQk9PTCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1
bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKikKIAogLSAoTlNT
dHJpbmcgKil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5l
bFdpdGhQcm9tcHQ6KE5TU3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0OihOU1N0cmluZyAqKWRl
ZmF1bHRUZXh0IGluaXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKLSNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAgICAgYXV0byBwYW5lbCA9IGFk
b3B0TlMoW1tXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwgYWxsb2NdIGluaXRXaXRoUHJvbXB0
OnByb21wdCB0ZXh0OmRlZmF1bHRUZXh0XSk7CiAgICAgW3BhbmVsIHNob3dXaW5kb3c6bmlsXTsK
ICAgICBOU1N0cmluZyAqcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9y
eS9XZWJIaXN0b3J5Lm1tCmluZGV4IDliZjMwMjBhYTMyNmU5NjU5NTlkNjRjNmY4MDBkMTY1MjU5
YTBiY2MuLjZmZTdlZjJmM2IyOWE5YWU1YzRhNTYyOGEyMWY2NjdiZDdjOTcwYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KQEAgLTEzNywxMSAr
MTM3LDYgQEAgLSAoaWQpaW5pdAogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKWRlYWxs
b2MKLXsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC8vIE1BUks6IE1PRElGWUlORyBDT05U
RU5UUwogCiBzdGF0aWMgdm9pZCBnZXREYXlCb3VuZGFyaWVzKE5TVGltZUludGVydmFsIGludGVy
dmFsLCBOU1RpbWVJbnRlcnZhbCYgYmVnaW5uaW5nT2ZEYXksIE5TVGltZUludGVydmFsJiBiZWdp
bm5pbmdPZk5leHREYXkpCkBAIC0yODYsNyArMjgxLDcgQEAgLSAoV2ViSGlzdG9yeUl0ZW0gKil2
aXNpdGVkVVJMOihOU1VSTCAqKXVybCB3aXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUKICAgICBO
U1N0cmluZyAqVVJMU3RyaW5nID0gW3VybCBfd2ViX29yaWdpbmFsRGF0YUFzU3RyaW5nXTsKICAg
ICBpZiAoIVVSTFN0cmluZykKICAgICAgICAgVVJMU3RyaW5nID0gQCIiOwotICAgIFJldGFpblB0
cjxXZWJIaXN0b3J5SXRlbT4gZW50cnkgPSBbX2VudHJpZXNCeVVSTCBvYmplY3RGb3JLZXk6VVJM
U3RyaW5nXTsKKyAgICBhdXRvIGVudHJ5ID0gcmV0YWluUHRyKFtfZW50cmllc0J5VVJMIG9iamVj
dEZvcktleTpVUkxTdHJpbmddKTsKIAogICAgIGlmIChlbnRyeSkgewogICAgICAgICBMT0coSGlz
dG9yeSwgIlVwZGF0aW5nIGdsb2JhbCBoaXN0b3J5IGVudHJ5ICVAIiwgZW50cnkuZ2V0KCkpOwpA
QCAtMzA0LDcgKzI5OSw3IEBAIC0gKFdlYkhpc3RvcnlJdGVtICopdmlzaXRlZFVSTDooTlNVUkwg
Kil1cmwgd2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlCiAgICAgCiAgICAgW3NlbGYgYWRkSXRl
bVRvRGF0ZUNhY2hlczplbnRyeS5nZXQoKV07CiAKLSAgICByZXR1cm4gZW50cnkuZ2V0KCk7Cisg
ICAgcmV0dXJuIGVudHJ5LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEJPT0wpYWRkSXRlbTooV2Vi
SGlzdG9yeUl0ZW0gKillbnRyeSBkaXNjYXJkRHVwbGljYXRlOihCT09MKWRpc2NhcmREdXBsaWNh
dGUKQEAgLTg1OSw4ICs4NTQsOCBAQCAtICh2b2lkKV92aXNpdGVkVVJMOihOU1VSTCAqKXVybCB3
aXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgbWV0aG9kOihOU1N0cmluZyAqKQogCiAgICAgZW50
cnktPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzID0gbnVsbHB0cjsKIAotICAgIGF1dG8gZW50cmll
cyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6ZW50cnksIG5pbF0p
OwotICAgIFtzZWxmIF9zZW5kTm90aWZpY2F0aW9uOldlYkhpc3RvcnlJdGVtc0FkZGVkTm90aWZp
Y2F0aW9uIGVudHJpZXM6ZW50cmllcy5nZXQoKV07CisgICAgTlNBcnJheSAqZW50cmllcyA9IEBb
IGVudHJ5IF07CisgICAgW3NlbGYgX3NlbmROb3RpZmljYXRpb246V2ViSGlzdG9yeUl0ZW1zQWRk
ZWROb3RpZmljYXRpb24gZW50cmllczplbnRyaWVzXTsKIH0KIAogLSAodm9pZClfYWRkVmlzaXRl
ZExpbmtzVG9WaXNpdGVkTGlua1N0b3JlOihXZWJWaXNpdGVkTGlua1N0b3JlICYpdmlzaXRlZExp
bmtTdG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJI
aXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eUl0ZW0ubW0KaW5kZXggY2IxNmNkNzUyMmYwYmE5NmFjYTE1MDFmYjQ2OTVlODQ0ZDQ3MTc2Yi4u
ZGIzMmQ5ZWZlMTQ3MTFjNTAyMDk5N2U1ZjlhMGVhMGFkNTc0MjYxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC0zNTEsOCAr
MzUxLDggQEAgLSAoaWQpaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246KE5TRGljdGlv
bmFyeSAqKWRpY3QKIAogICAgIE5TQXJyYXkgKmNoaWxkRGljdHMgPSBbZGljdCBvYmplY3RGb3JL
ZXk6Y2hpbGRyZW5LZXldOwogICAgIGlmIChjaGlsZERpY3RzKSB7Ci0gICAgICAgIGZvciAoaW50
IGkgPSBbY2hpbGREaWN0cyBjb3VudF0gLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICAgICAg
YXV0byBjaGlsZCA9IGFkb3B0TlMoW1tXZWJIaXN0b3J5SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0
aW9uYXJ5UmVwcmVzZW50YXRpb246W2NoaWxkRGljdHMgb2JqZWN0QXRJbmRleDppXV0pOworICAg
ICAgICBmb3IgKGlkIGNoaWxkRGljdCBpbiBbY2hpbGREaWN0cyByZXZlcnNlT2JqZWN0RW51bWVy
YXRvcl0pIHsKKyAgICAgICAgICAgIGF1dG8gY2hpbGQgPSBhZG9wdE5TKFtbV2ViSGlzdG9yeUl0
ZW0gYWxsb2NdIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOmNoaWxkRGljdF0pOwog
ICAgICAgICAgICAgY29yZShfcHJpdmF0ZSktPmFkZENoaWxkSXRlbSgqY29yZShjaGlsZC0+X3By
aXZhdGUpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViTlNEYXRhRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KaW5kZXggMGRkZTI4N2MyZjA0Yzk2MDk2NDE0OGRkZmIy
YzMzNDM4MmU1MTc5Ny4uODJhZTFkYjVlNWY3NGUyNGVlNjk3YjFhOGZjMDVjNWM0NjUxYmM5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0K
QEAgLTMzMiwxMCArMzMyLDggQEAgLSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV93ZWJraXRfcGFy
c2VSRkM4MjJIZWFkZXJGaWVsZHMKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBhdXRvIHZhbHVlID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aEJ5dGVzOmNvbG9uIGxlbmd0aDplb2wgLSBjb2xvbiBlbmNvZGluZzpOU0lTT0xh
dGluMVN0cmluZ0VuY29kaW5nXSk7Ci0gICAgICAgICAgICBpZiAoTlNTdHJpbmcgKm9sZFZhbHVl
ID0gW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6bGFzdEtleV0pIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIG5ld1ZhbHVlID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIlQCwg
JUAiLCBvbGRWYWx1ZSwgdmFsdWUuZ2V0KCldOwotICAgICAgICAgICAgICAgIHZhbHVlID0gV1RG
TW92ZShuZXdWYWx1ZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoTlNTdHJpbmcg
Km9sZFZhbHVlID0gW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6bGFzdEtleV0pCisgICAgICAg
ICAgICAgICAgdmFsdWUgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRm9ybWF0
OkAiJUAsICVAIiwgb2xkVmFsdWUsIHZhbHVlLmdldCgpXSk7CiAgICAgICAgICAgICBbaGVhZGVy
RmllbGRzIHNldE9iamVjdDp2YWx1ZS5nZXQoKSBmb3JLZXk6bGFzdEtleV07CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFz
dGVib2FyZEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0
ZWJvYXJkRXh0cmFzLm1tCmluZGV4IDRhZTBjNzkwZTNiMDJjZmZhYTI0OWFmMzNhNzdhNGRiZmJm
NzJmNWIuLmQ5NjBkMThjYzBlZDJlZWNkMGY5MGM4NDVhZTA1Y2Q3NGVmYmQ3MGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFz
Lm1tCkBAIC0zMTUsOCArMzE1LDcgQEAgLSAoaWQpX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1h
Z2VGb3JFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudAogICAgIGlmIChjdXN0b21EYXRhQnVm
ZmVyKQogICAgICAgICBbc2VsZiBzZXREYXRhOmN1c3RvbURhdGFCdWZmZXIuZ2V0KCkgZm9yVHlw
ZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCi0gICAgYXV0byBleHRl
bnNpb25zID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpleHRlbnNp
b24sIG5pbF0pOwotICAgIFtzZWxmIHNldFByb3BlcnR5TGlzdDpleHRlbnNpb25zLmdldCgpIGZv
clR5cGU6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKV07CisgICAgW3NlbGYgc2V0
UHJvcGVydHlMaXN0OkBbZXh0ZW5zaW9uXSBmb3JUeXBlOmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3Rl
Ym9hcmRUeXBlKCldOwogCiAgICAgcmV0dXJuIHNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFn
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkhvc3RNYW5hZ2VyLm1tCmluZGV4IGJiZWE3ZWE2MjYyYzJmNDBlM2Y0M2Y2ZGRjYjYyNzJl
ZTBlMzI0ZDQuLmQ4MzYyMTE2NjU3NDhiOWRlMDIyNjY1NjFlODdhZTRmZDIzYjY0MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSG9zdE1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpAQCAtMTcyLDEyICsxNzIsOCBAQCBi
b29sIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6OnNwYXduUGx1Z2luSG9zdChjb25zdCBTdHJp
bmcmIHBsdWdpblBhdGgsIGNwdV90eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQg
aXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtbKE5TU3RyaW5nKilwbHVnaW5QYXRoIGxhc3RQYXRoQ29tcG9uZW50XSBzdHJpbmdCeURlbGV0
aW5nUGF0aEV4dGVuc2lvbl0sIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05h
bWVdXTsKICAgICAKLSAgICBhdXRvIGhvc3RQcm9wZXJ0aWVzID0gYWRvcHROUyhbW05TRGljdGlv
bmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZpc2libGVOYW1lLCBAInZpc2libGVOYW1lIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChOU1N0cmluZyAqKXBsdWdpblBhdGgsIEAiYnVuZGxl
UGF0aCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdKTsKLSAgICAK
LSAgICBkYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5
TGlzdDpob3N0UHJvcGVydGllcy5nZXQoKSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RCaW5hcnlGb3Jt
YXRfdjFfMCBvcHRpb25zOjAgZXJyb3I6TlVMTF07CisgICAgTlNEaWN0aW9uYXJ5ICpob3N0UHJv
cGVydGllcyA9IEB7IEAidmlzaWJsZU5hbWUiOiAgdmlzaWJsZU5hbWUsIEAiYnVuZGxlUGF0aCI6
IChOU1N0cmluZyAqKXBsdWdpblBhdGggfTsKKyAgICBkYXRhID0gW05TUHJvcGVydHlMaXN0U2Vy
aWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpob3N0UHJvcGVydGllcyBmb3JtYXQ6TlNQ
cm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCBvcHRpb25zOjAgZXJyb3I6TlVMTF07CiAgICAg
QVNTRVJUKGRhdGEpOwogCiAgICAgUHJvY2Vzc1NlcmlhbE51bWJlciBwc247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNTFjNTllYzg0OGE3NDAxOWVmZTRk
NDA4OGVjN2VjMjFkZjU4NjUyMy4uNGI2Y2E3MGM0ZDFhNWMyN2E3N2YxYjIyM2JmODgwMWUxYWFm
MDBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNjUx
LDEwICs2NTEsOSBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cGVyZm9ybVJl
cXVlc3QoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzdCkKICAgICAgICAgZnJhbWUgPSBraXQo
Y29yZShbbV9wbHVnaW5WaWV3IHdlYkZyYW1lXSktPmxvYWRlcigpLmZpbmRGcmFtZUZvck5hdmln
YXRpb24oZnJhbWVOYW1lKSk7CiAgICAgICAgIGlmICghZnJhbWUpIHsKICAgICAgICAgICAgIFdl
YlZpZXcgKmN1cnJlbnRXZWJWaWV3ID0gW21fcGx1Z2luVmlldyB3ZWJWaWV3XTsKLSAgICAgICAg
ICAgIGF1dG8gZmVhdHVyZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7
CiAgICAgICAgICAgICBXZWJWaWV3ICpuZXdXZWJWaWV3ID0gW1tjdXJyZW50V2ViVmlldyBfVUlE
ZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzpjdXJyZW50V2ViVmlldwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVXZWJWaWV3V2l0
aFJlcXVlc3Q6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dGZWF0dXJlczpmZWF0dXJlcy5nZXQoKV07Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp
bmRvd0ZlYXR1cmVzOkB7IH1dOwogCiAgICAgICAgICAgICBpZiAoIW5ld1dlYlZpZXcpIHsKICAg
ICAgICAgICAgICAgICBfV0tQSExvYWRVUkxOb3RpZnkobV9wbHVnaW5Ib3N0UHJveHktPnBvcnQo
KSwgbV9wbHVnaW5JRCwgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdElEKCksIE5QRVJSX0dFTkVSSUNf
RVJST1IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGQ3OTQwNzEyMzJlMjJlODM0NDFjNWY4YmUz
ODBiNDhmOWFlZWY0YmMuLjE2OWJiNjY5Yzg5Nzg1ZjAyMDc3YzNiMjNiYmJjMzFmMzQ4ODU5YTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTI1MywzNiArMjUzLDI0IEBAIFBhZ2UqIFdlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lJiBmcmFtZSwgY29uc3QgV2luZG93RmVhdHVyZXMm
IGZlYXR1cmVzCiAjZW5kaWYKICAgICAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6d2luZG93RmVh
dHVyZXM6KV0pIHsKLSAgICAgICAgYXV0byB4ID0gZmVhdHVyZXMueCA/IGFkb3B0TlMoW1tOU051
bWJlciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMueF0pIDogbmlsOwotICAgICAgICBh
dXRvIHkgPSBmZWF0dXJlcy55ID8gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEZs
b2F0OipmZWF0dXJlcy55XSkgOiBuaWw7Ci0gICAgICAgIGF1dG8gd2lkdGggPSBmZWF0dXJlcy53
aWR0aCA/IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMu
d2lkdGhdKSA6IG5pbDsKLSAgICAgICAgYXV0byBoZWlnaHQgPSBmZWF0dXJlcy5oZWlnaHQgPyBh
ZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoRmxvYXQ6KmZlYXR1cmVzLmhlaWdodF0p
IDogbmlsOwotICAgICAgICBhdXRvIG1lbnVCYXJWaXNpYmxlID0gYWRvcHROUyhbW05TTnVtYmVy
IGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMubWVudUJhclZpc2libGVdKTsKLSAgICAgICAg
YXV0byBzdGF0dXNCYXJWaXNpYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0
aEJvb2w6ZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZV0pOwotICAgICAgICBhdXRvIHRvb2xCYXJW
aXNpYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMu
dG9vbEJhclZpc2libGVdKTsKLSAgICAgICAgYXV0byBzY3JvbGxiYXJzVmlzaWJsZSA9IGFkb3B0
TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLnNjcm9sbGJhcnNWaXNp
YmxlXSk7Ci0gICAgICAgIGF1dG8gcmVzaXphYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9j
XSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMucmVzaXphYmxlXSk7Ci0gICAgICAgIGF1dG8gZnVsbHNj
cmVlbiA9IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLmZ1
bGxzY3JlZW5dKTsKLSAgICAgICAgYXV0byBkaWFsb2cgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxs
b2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy5kaWFsb2ddKTsKLSAgICAgICAgCiAgICAgICAgIGF1
dG8gZGljdEZlYXR1cmVzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZW51QmFyVmlzaWJsZS5nZXQoKSwgQCJtZW51QmFyVmlzaWJsZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNCYXJWaXNpYmxl
LmdldCgpLCBAInN0YXR1c0JhclZpc2libGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG9vbEJhclZpc2libGUuZ2V0KCksIEAidG9vbEJhclZpc2libGUi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYmFy
c1Zpc2libGUuZ2V0KCksIEAic2Nyb2xsYmFyc1Zpc2libGUiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXphYmxlLmdldCgpLCBAInJlc2l6YWJsZSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVu
LmdldCgpLCBAImZ1bGxzY3JlZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlhbG9nLmdldCgpLCBAImRpYWxvZyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBAKGZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlKSwgQCJt
ZW51QmFyVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBAKGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpLCBAInN0YXR1c0JhclZpc2libGUiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQChmZWF0dXJlcy50
b29sQmFyVmlzaWJsZSksIEAidG9vbEJhclZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQChmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSksIEAi
c2Nyb2xsYmFyc1Zpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQChmZWF0dXJlcy5yZXNpemFibGUpLCBAInJlc2l6YWJsZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAKGZlYXR1cmVzLmZ1bGxzY3JlZW4p
LCBAImZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQChmZWF0dXJlcy5kaWFsb2cpLCBAImRpYWxvZyIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdKTsKICAgICAgICAgCi0gICAgICAgIGlmICh4
KQotICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6eC5nZXQoKSBmb3JLZXk6QCJ4
Il07Ci0gICAgICAgIGlmICh5KQotICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6
eS5nZXQoKSBmb3JLZXk6QCJ5Il07Ci0gICAgICAgIGlmICh3aWR0aCkKLSAgICAgICAgICAgIFtk
aWN0RmVhdHVyZXMgc2V0T2JqZWN0OndpZHRoLmdldCgpIGZvcktleTpAIndpZHRoIl07Ci0gICAg
ICAgIGlmIChoZWlnaHQpCi0gICAgICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDpoZWln
aHQuZ2V0KCkgZm9yS2V5OkAiaGVpZ2h0Il07CisgICAgICAgIGlmIChmZWF0dXJlcy54KQorICAg
ICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6QCgqZmVhdHVyZXMueCkgZm9yS2V5OkAi
eCJdOworICAgICAgICBpZiAoZmVhdHVyZXMueSkKKyAgICAgICAgICAgIFtkaWN0RmVhdHVyZXMg
c2V0T2JqZWN0OkAoKmZlYXR1cmVzLnkpIGZvcktleTpAInkiXTsKKyAgICAgICAgaWYgKGZlYXR1
cmVzLndpZHRoKQorICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6QCgqZmVhdHVy
ZXMud2lkdGgpIGZvcktleTpAIndpZHRoIl07CisgICAgICAgIGlmIChmZWF0dXJlcy5oZWlnaHQp
CisgICAgICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDpAKCpmZWF0dXJlcy5oZWlnaHQp
IGZvcktleTpAImhlaWdodCJdOwogICAgICAgICAKICAgICAgICAgbmV3V2ViVmlldyA9IENhbGxV
SURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhS
ZXF1ZXN0OndpbmRvd0ZlYXR1cmVzOiksIG5pbCwgZGljdEZlYXR1cmVzLmdldCgpKTsKICAgICB9
IGVsc2UgaWYgKGZlYXR1cmVzLmRpYWxvZyAmJiBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdNb2RhbERpYWxvZ1dpdGhSZXF1ZXN0Oild
KSB7CkBAIC00NTAsMjIgKzQzOCwyMiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6YWRkTWVzc2Fn
ZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldgogICAgIH0K
IAogICAgIE5TU3RyaW5nICptZXNzYWdlU291cmNlID0gc3RyaW5nRm9yTWVzc2FnZVNvdXJjZShz
b3VyY2UpOwotICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgIChOU1N0cmluZyAqKW1lc3NhZ2Us
IEAibWVzc2FnZSIsCi0gICAgICAgIEAobGluZU51bWJlciksIEAibGluZU51bWJlciIsCi0gICAg
ICAgIEAoY29sdW1uTnVtYmVyKSwgQCJjb2x1bW5OdW1iZXIiLAotICAgICAgICAoTlNTdHJpbmcg
Kilzb3VyY2VVUkwsIEAic291cmNlVVJMIiwKLSAgICAgICAgbWVzc2FnZVNvdXJjZSwgQCJNZXNz
YWdlU291cmNlIiwKLSAgICAgICAgc3RyaW5nRm9yTWVzc2FnZUxldmVsKGxldmVsKSwgQCJNZXNz
YWdlTGV2ZWwiLAotICAgICAgICBOVUxMXSk7CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5
ID0gQHsKKyAgICAgICAgQCJtZXNzYWdlIjogKE5TU3RyaW5nICopbWVzc2FnZSwKKyAgICAgICAg
QCJsaW5lTnVtYmVyIjogQChsaW5lTnVtYmVyKSwKKyAgICAgICAgQCJjb2x1bW5OdW1iZXIiOiBA
KGNvbHVtbk51bWJlciksCisgICAgICAgIEAic291cmNlVVJMIjogKE5TU3RyaW5nICopc291cmNl
VVJMLAorICAgICAgICBAIk1lc3NhZ2VTb3VyY2UiOiBtZXNzYWdlU291cmNlLAorICAgICAgICBA
Ik1lc3NhZ2VMZXZlbCI6IHN0cmluZ0Zvck1lc3NhZ2VMZXZlbChsZXZlbCkKKyAgICB9OwogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBbW1ttX3dlYlZpZXcgX1VJS2l0RGVsZWdhdGVG
b3J3YXJkZXJdIGFzeW5jRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBhZGRNZXNzYWdlVG9D
b25zb2xlOmRpY3Rpb25hcnkuZ2V0KCkgd2l0aFNvdXJjZTptZXNzYWdlU291cmNlXTsKKyAgICBb
W1ttX3dlYlZpZXcgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIGFzeW5jRm9yd2FyZGVyXSB3ZWJW
aWV3Om1fd2ViVmlldyBhZGRNZXNzYWdlVG9Db25zb2xlOmRpY3Rpb25hcnkgd2l0aFNvdXJjZTpt
ZXNzYWdlU291cmNlXTsKICNlbHNlCiAgICAgaWYgKHJlc3BvbmRzVG9OZXdTZWxlY3RvcikKLSAg
ICAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3RvciwgZGljdGlvbmFyeS5nZXQo
KSwgbWVzc2FnZVNvdXJjZSk7CisgICAgICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2Vs
ZWN0b3IsIGRpY3Rpb25hcnksIG1lc3NhZ2VTb3VyY2UpOwogICAgIGVsc2UKLSAgICAgICAgQ2Fs
bFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3RvciwgZGljdGlvbmFyeS5nZXQoKSk7CisgICAg
ICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIGRpY3Rpb25hcnkpOwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCAwYTE2NDljMGE4MjNhNTkwOGEzMzMwMjYz
ZDI3ZWMwNzQ4MWQ5Y2JjLi5hYzdkMTY0OGNiODI5NGI3ODQ2Y2FmMDUyZDU3NDkyYjRlMjJhNGFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00NTQsOSArNDU0LDcgQEAgc3RhdGljIE5TRGljdGlv
bmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKICAgICAgICAg
W2V4Y2x1ZGVkRWxlbWVudHMgYWRkT2JqZWN0OkAib2JqZWN0Il07CiAjZW5kaWYKIAotICAgIE5T
RGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IEB7IE5TRXhjbHVkZWRFbGVtZW50c0RvY3VtZW50QXR0
cmlidXRlOiBleGNsdWRlZEVsZW1lbnRzLmdldCgpIH07Ci0KLSAgICByZXR1cm4gZGljdGlvbmFy
eTsKKyAgICByZXR1cm4gQHsgTlNFeGNsdWRlZEVsZW1lbnRzRG9jdW1lbnRBdHRyaWJ1dGU6IGV4
Y2x1ZGVkRWxlbWVudHMuZ2V0KCkgfTsKIH0KIAogdm9pZCBfV2ViQ3JlYXRlRnJhZ21lbnQoRG9j
dW1lbnQmIGRvY3VtZW50LCBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgRnJhZ21lbnRBbmRS
ZXNvdXJjZXMmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggYjNhY2Mx
NWQ1MzJmNDEzMWQ5MmY4NmJmMWYyNWUwZDEyNDI5OGE0Ny4uYjM4NzAzNDgwYzM3YjI3OGYwMjc1
YTg0NGM1NzUyYmY1ZDk5NThmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTE1
NjUsOCArMTU2NSw3IEBAIE5TRGljdGlvbmFyeSAqV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlv
bkRpY3Rpb25hcnkoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjCiAKICAgICBpZiAoYXV0byBt
b3VzZUV2ZW50RGF0YSA9IGFjdGlvbi5tb3VzZUV2ZW50RGF0YSgpKSB7CiAgICAgICAgIGNvbnN0
ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVx
dWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6QWxs
b3dDaGlsZEZyYW1lQ29udGVudCB9OwotICAgICAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdE5TKFtb
V2ViRWxlbWVudERpY3Rpb25hcnkgYWxsb2NdCi0gICAgICAgICAgICBpbml0V2l0aEhpdFRlc3RS
ZXN1bHQ6Y29yZShtX3dlYkZyYW1lLmdldCgpKS0+ZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3Vs
dEF0UG9pbnQobW91c2VFdmVudERhdGEtPmFic29sdXRlTG9jYXRpb24sIGhpdFR5cGUpXSk7Cisg
ICAgICAgIGF1dG8gZWxlbWVudCA9IGFkb3B0TlMoW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxv
Y10gaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFu
ZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnREYXRhLT5hYnNvbHV0ZUxvY2F0
aW9uLCBoaXRUeXBlKV0pOwogICAgICAgICBbcmVzdWx0IHNldE9iamVjdDplbGVtZW50LmdldCgp
IGZvcktleTpXZWJBY3Rpb25FbGVtZW50S2V5XTsKIAogICAgICAgICBpZiAobW91c2VFdmVudERh
dGEtPmlzVHJ1c3RlZCkKQEAgLTE2MTAsOSArMTYwOSw5IEBAIFJlZlB0cjxXZWJDb3JlOjpGcmFt
ZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwg
V2ViCiAgICAgCiAgICAgYXV0byBjaGlsZFZpZXcgPSBhZG9wdE5TKFtbV2ViRnJhbWVWaWV3IGFs
bG9jXSBpbml0XSk7CiAgICAgCi0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiByZXN1bHQgPSBb
V2ViRnJhbWUgX2NyZWF0ZVN1YmZyYW1lV2l0aE93bmVyRWxlbWVudDomb3duZXJFbGVtZW50IGZy
YW1lTmFtZTpuYW1lIGZyYW1lVmlldzpjaGlsZFZpZXcuZ2V0KCldOworICAgIGF1dG8gcmVzdWx0
ID0gW1dlYkZyYW1lIF9jcmVhdGVTdWJmcmFtZVdpdGhPd25lckVsZW1lbnQ6Jm93bmVyRWxlbWVu
dCBmcmFtZU5hbWU6bmFtZSBmcmFtZVZpZXc6Y2hpbGRWaWV3LmdldCgpXTsKIAotICAgIFdlYkZy
YW1lICpuZXdGcmFtZSA9IGtpdChyZXN1bHQuZ2V0KCkpOworICAgIFdlYkZyYW1lICpuZXdGcmFt
ZSA9IGtpdChyZXN1bHQucHRyKCkpOwogCiAgICAgaWYgKFtuZXdGcmFtZSBfZGF0YVNvdXJjZV0p
CiAgICAgICAgIFtbbmV3RnJhbWUgX2RhdGFTb3VyY2VdIF9kb2N1bWVudExvYWRlcl0tPnNldE92
ZXJyaWRlRW5jb2RpbmcoW1ttX3dlYkZyYW1lLmdldCgpIF9kYXRhU291cmNlXSBfZG9jdW1lbnRM
b2FkZXJdLT5vdmVycmlkZUVuY29kaW5nKCkpOyAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5k
ZXggYTJjNTRiMzMyYjUxMWE2ZmQ5NTQ0YzJjY2JjZmRhNmExZjdiMTM5ZS4uYjg5ODcxODM1OTMx
NjM1ZTU1YTNjZGM3NDQ4NWRjOTk2M2ZiMWFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpA
QCAtNTEyLDE3ICs1MTIsMTIgQEAgLSAoaWQpaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OihXZWJW
aWV3ICopd2ViVmlldyBpc1VuZGVyVGVzdDooQk9PTClpc1VuZGVyVGVzdAogICAgIF9pbnNwZWN0
ZWRXZWJWaWV3ID0gd2ViVmlldzsKIAogICAgIE5TU3RyaW5nICpwYWdlUGF0aCA9IGlzVW5kZXJU
ZXN0ID8gW3NlbGYgaW5zcGVjdG9yVGVzdFBhZ2VQYXRoXSA6IFtzZWxmIGluc3BlY3RvclBhZ2VQ
YXRoXTsKLSAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBp
bml0V2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOiBwYWdlUGF0aF1dKTsKKyAgICBhdXRv
IHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOnBhZ2VQYXRoXV0pOwogICAgIFtbX2Zyb250ZW5kV2ViVmlldyBt
YWluRnJhbWVdIGxvYWRSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOwogCiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogLy8g
TUFSSzogLQogCiAtIChOU1N0cmluZyAqKWluc3BlY3RvclBhZ2VQYXRoCkBAIC01NjcsNyArNTYy
LDcgQEAgLSAoTlNXaW5kb3cgKil3aW5kb3cKICAgICBbd2luZG93IHNldE1pbkZ1bGxTY3JlZW5D
b250ZW50U2l6ZTpOU01ha2VTaXplKG1pbmltdW1GdWxsU2NyZWVuV2lkdGgsIG1pbmltdW1XaW5k
b3dIZWlnaHQpXTsKICAgICBbd2luZG93IHNldENvbGxlY3Rpb25CZWhhdmlvcjooW3dpbmRvdyBj
b2xsZWN0aW9uQmVoYXZpb3JdIHwgTlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3JGdWxsU2NyZWVu
QWxsb3dzVGlsaW5nKV07CiAKLSAgICBbd2luZG93IHNldFRpdGxlYmFyQXBwZWFyc1RyYW5zcGFy
ZW50OiBZRVNdOworICAgIFt3aW5kb3cgc2V0VGl0bGViYXJBcHBlYXJzVHJhbnNwYXJlbnQ6WUVT
XTsKIAogICAgIFtzZWxmIHNldFdpbmRvdzp3aW5kb3cuZ2V0KCldOwogICAgIHJldHVybiB3aW5k
b3cuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0KaW5kZXggNjQ4YTQ0MGJlMjQzYWE5N2IwOWY3MjNkMzY0NzBmMmE4OGNiOTU1Yi4u
MTQ0MjJhMmNkZDM0YjFiMTYxMTJkMzkxOGYxMTFjOWZiYmE2ZmE2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtMzE3LDEyICsz
MTcsOSBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRXaXRoQXJj
aGl2ZTooV2ViQXJjaGl2ZSAqKWFyY2hpdmUKICAgICAgICAgICAgIC8vIEZJWE1FOiBzZWVtcyBw
b29yIGZvcm0gdG8gZG8gdGhpcyBhcyBhIHNpZGUgZWZmZWN0IG9mIGdldHRpbmcgYSBkb2N1bWVu
dCBmcmFnbWVudAogICAgICAgICAgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5hZGRB
bGxBcmNoaXZlUmVzb3VyY2VzKCpbYXJjaGl2ZSBfY29yZUxlZ2FjeVdlYkFyY2hpdmVdKTsKIAot
ICAgICAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbW3NlbGYgd2ViRnJh
bWVdIF9kb2N1bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzptYXJrdXBTdHJpbmcuZ2V0KCkg
YmFzZVVSTFN0cmluZzpbW21haW5SZXNvdXJjZSBVUkxdIF93ZWJfb3JpZ2luYWxEYXRhQXNTdHJp
bmddXTsKLSAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKLSAgICAgICAgfSBlbHNlIGlmIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoTUlNRVR5
cGUpKSB7CisgICAgICAgICAgICByZXR1cm4gW1tzZWxmIHdlYkZyYW1lXSBfZG9jdW1lbnRGcmFn
bWVudFdpdGhNYXJrdXBTdHJpbmc6bWFya3VwU3RyaW5nLmdldCgpIGJhc2VVUkxTdHJpbmc6W1tt
YWluUmVzb3VyY2UgVVJMXSBfd2ViX29yaWdpbmFsRGF0YUFzU3RyaW5nXV07CisgICAgICAgIH0g
ZWxzZSBpZiAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlKE1JTUVUeXBlKSkKICAgICAgICAgICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRGcmFnbWVu
dFdpdGhJbWFnZVJlc291cmNlOm1haW5SZXNvdXJjZV07Ci0gICAgICAgICAgICAKLSAgICAgICAg
fQogICAgIH0KICAgICByZXR1cm4gbmlsOwogfQpAQCAtMzg0LDcgKzM4MSw3IEBAIC0gKHZvaWQp
X21ha2VSZXByZXNlbnRhdGlvbgogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGRhdGEgc291cmNlIHdh
cyBhbHJlYWR5IGJvdW5kPwogICAgIGlmICghW1tzZWxmIHJlcHJlc2VudGF0aW9uXSBpc0tpbmRP
ZkNsYXNzOnJlcENsYXNzXSkgewotICAgICAgICBSZXRhaW5QdHI8aWQ+IG5ld1JlcCA9IHJlcENs
YXNzICE9IG5pbCA/IGFkb3B0TlMoWyhOU09iamVjdCAqKVtyZXBDbGFzcyBhbGxvY10gaW5pdF0p
IDogbmlsOworICAgICAgICBSZXRhaW5QdHI8aWQ+IG5ld1JlcCA9IHJlcENsYXNzICE9IG5pbCA/
IGFkb3B0TlMoW1tyZXBDbGFzcyBhbGxvY10gaW5pdF0pIDogbmlsOwogICAgICAgICBbc2VsZiBf
c2V0UmVwcmVzZW50YXRpb246KGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPiluZXdSZXAu
Z2V0KCldOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KaW5kZXggNGUxMzQ2MjgzNjBlODI2YWE4ODU3NTU1MmJmYTExMDQ3ZmEwYzE3NC4uM2M0
ZTRiYjM5NjA2NTgxNzQ4NDM3MWMzMGU0M2M3NWM2NjUyNjUzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xODcsMTEgKzE4Nyw2IEBAIE5TU3Ry
aW5nICpOU0FjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VBdHRyaWJ1dGUgPSBAIkFY
RW5oYW5jZWRVc2VySW50ZXJmCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJGcmFtZVByaXZhdGUKIAot
LSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCiAtICh2b2lkKXNl
dFdlYkZyYW1lVmlldzooV2ViRnJhbWVWaWV3ICopdgogeyAKICAgICB3ZWJGcmFtZVZpZXcgPSB2
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpp
bmRleCBiNjE2ZmE3YmY2NGU0ZDk3OWZiZDA2ODFhYmIzYWYwMzkyNjNhODQ4Li45NGUwYzkyZTFk
MjNkNzVlZjEyZTc3NTlhOTljMzRjODFmNWJjZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpAQCAtMTE3LDExICsxMTcsNiBAQCBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJGcmFtZVZpZXdQcml2YXRlCiAKLS0gKHZvaWQpZGVhbGxv
YwotewotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24g
V2ViRnJhbWVWaWV3IChXZWJGcmFtZVZpZXdGaWxlSW50ZXJuYWwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA2NmZiODE2ODY3YzE1MTk5
NWRiZjU1ZDE3MzU3YjBlOWUyMTAxOWFhLi4xNzRmZDM0YjAzNWMxOWU3YzdkMDRkMjEwY2Y3OWNm
Yjk1MzM5MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KQEAgLTE5MTEsMTAgKzE5MTEsNyBAQCAtICh2b2lkKV91cGRhdGVNb3VzZW92ZXJX
aXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudAogICAgIE5TVmlldyAqaGl0VmlldyA9IFtjb250ZW50
VmlldyBoaXRUZXN0OmxvY2F0aW9uRm9ySGl0VGVzdF07CiAgICAgZm9yY2VXZWJIVE1MVmlld0hp
dFRlc3QgPSBOTzsKICAgICAKLSAgICBSZXRhaW5QdHI8V2ViSFRNTFZpZXc+IHZpZXc7Ci0gICAg
aWYgKFtoaXRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pCi0gICAgICAg
IHZpZXcgPSAoV2ViSFRNTFZpZXcgKiloaXRWaWV3OyAgICAKLQorICAgIGF1dG8gdmlldyA9IHJl
dGFpblB0cihkeW5hbWljX29iamNfY2FzdDxXZWJIVE1MVmlldz4oaGl0VmlldykpOwogICAgIGlm
IChsYXN0SGl0VmlldyAhPSB2aWV3ICYmIGxhc3RIaXRWaWV3ICYmIFtsYXN0SGl0VmlldyBfZnJh
bWVdKSB7CiAgICAgICAgIC8vIElmIHdlIGFyZSBtb3Zpbmcgb3V0IG9mIGEgdmlldyAob3IgZnJh
bWUpLCBsZXQncyBwcmV0ZW5kIHRoZSBtb3VzZSBtb3ZlZAogICAgICAgICAvLyBhbGwgdGhlIHdh
eSBvdXQgb2YgdGhhdCB2aWV3LiBCdXQgd2UgaGF2ZSB0byBhY2NvdW50IGZvciBzY3JvbGxpbmcs
IGJlY2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
TmF2aWdhdGlvbkRhdGEubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk5h
dmlnYXRpb25EYXRhLm1tCmluZGV4IDYzOGMzYTVlNGY3OWMyMTI5MDg1ZjMwM2NlZGVmZmQ4ZmNm
NDA2MmUuLjk0ZGNlYzU4MDVlZDdjMjcxZGE2MzQ4N2M2MzhmZDA4MWJlYzlmM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTmF2aWdhdGlvbkRhdGEubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJOYXZpZ2F0aW9uRGF0YS5t
bQpAQCAtNDEsMTEgKzQxLDYgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViTmF2aWdhdGlv
bkRhdGFQcml2YXRlCiAKLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtzdXBlciBkZWFsbG9jXTsK
LX0KLQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViTmF2aWdhdGlvbkRhdGEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9u
Lm1tCmluZGV4IDUyZjMwYTA5NmExMmEyYzA0M2I1NTZmYzk0M2VjOWVlNGZkZGU5NDUuLjQzMjhj
MjY1YjZiZDQwZjJhYjI2ZTc0ZjEwZmY1OWE0ZDVjYzc0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQpAQCAt
MTIxLDEyICsxMjEsMTAgQEAgLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZToo
V2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKICAgICB9CiAKICAgICBXZWJQREZWaWV3ICp2aWV3
ID0gKFdlYlBERlZpZXcgKilbW1tkYXRhU291cmNlIHdlYkZyYW1lXSBmcmFtZVZpZXddIGRvY3Vt
ZW50Vmlld107Ci0gICAgYXV0byBkb2MgPSBhZG9wdE5TKFtbW1tzZWxmIGNsYXNzXSBQREZEb2N1
bWVudENsYXNzXSBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGFdKTsKLSAgICBbdmlldyBzZXRQREZE
b2N1bWVudDpkb2MuZ2V0KCldOwotCi0gICAgTlNBcnJheSAqc2NyaXB0cyA9IGFsbFNjcmlwdHNJ
blBERkRvY3VtZW50KGRvYy5nZXQoKSk7Ci0gICAgZG9jID0gbmlsOworICAgIGF1dG8gZG9jdW1l
bnQgPSBhZG9wdE5TKFtbW1tzZWxmIGNsYXNzXSBQREZEb2N1bWVudENsYXNzXSBhbGxvY10gaW5p
dFdpdGhEYXRhOmRhdGFdKTsKKyAgICBbdmlldyBzZXRQREZEb2N1bWVudDpkb2N1bWVudC5nZXQo
KV07CiAKKyAgICBOU0FycmF5ICpzY3JpcHRzID0gYWxsU2NyaXB0c0luUERGRG9jdW1lbnQoZG9j
dW1lbnQuZ2V0KCkpOwogICAgIGlmICghW3NjcmlwdHMgY291bnRdKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRl
eCA4NTIxMWNhMGY5MjI3ODg2YmFhODllZmMzODgzMGQ3NWJlNTA1YWU0Li5mYjE4NjAzMjgzMjQw
OTc0MDAwYWRmZTYyMWRjN2ZkYjk5MDYzODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCkBAIC0xMTAxLDE5ICsxMTAxLDE5IEBAIC0gKE5TTXV0
YWJsZUFycmF5ICopX21lbnVJdGVtc0Zyb21QREZLaXRGb3JFdmVudDooTlNFdmVudCAqKXRoZUV2
ZW50CiAgICAgTlNNdXRhYmxlQXJyYXkgKmNvcGllZEl0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFy
cmF5XTsKIAogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVjdG9yIikKLSAg
ICBhdXRvIGFjdGlvbnNUb1RhZ3MgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBAKFdlYk1lbnVJdGVtUERGQWN0dWFsU2l6ZSks
IE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0QWN0dWFsU2l6ZTopKSwKLSAgICAg
ICAgQChXZWJNZW51SXRlbVBERlpvb21JbiksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rv
cih6b29tSW46KSksCi0gICAgICAgIEAoV2ViTWVudUl0ZW1QREZab29tT3V0KSwgTlNTdHJpbmdG
cm9tU2VsZWN0b3IoQHNlbGVjdG9yKHpvb21PdXQ6KSksCi0gICAgICAgIEAoV2ViTWVudUl0ZW1Q
REZBdXRvU2l6ZSksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0QXV0b1NpemU6
KSksCi0gICAgICAgIEAoV2ViTWVudUl0ZW1QREZTaW5nbGVQYWdlKSwgTlNTdHJpbmdGcm9tU2Vs
ZWN0b3IoQHNlbGVjdG9yKF9zZXRTaW5nbGVQYWdlOikpLAotICAgICAgICBAKFdlYk1lbnVJdGVt
UERGU2luZ2xlUGFnZVNjcm9sbGluZyksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihf
c2V0U2luZ2xlUGFnZVNjcm9sbGluZzopKSwKLSAgICAgICAgQChXZWJNZW51SXRlbVBERkZhY2lu
Z1BhZ2VzKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXREb3VibGVQYWdlOikp
LAotICAgICAgICBAKFdlYk1lbnVJdGVtUERGRmFjaW5nUGFnZXNTY3JvbGxpbmcpLCBOU1N0cmlu
Z0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldERvdWJsZVBhZ2VTY3JvbGxpbmc6KSksCi0gICAg
ICAgIEAoV2ViTWVudUl0ZW1QREZDb250aW51b3VzKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNl
bGVjdG9yKF90b2dnbGVDb250aW51b3VzOikpLAotICAgICAgICBAKFdlYk1lbnVJdGVtUERGTmV4
dFBhZ2UpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoZ29Ub05leHRQYWdlOikpLAot
ICAgICAgICBAKFdlYk1lbnVJdGVtUERGUHJldmlvdXNQYWdlKSwgTlNTdHJpbmdGcm9tU2VsZWN0
b3IoQHNlbGVjdG9yKGdvVG9QcmV2aW91c1BhZ2U6KSksCi0gICAgICAgIG5pbF0pOworICAgIE5T
RGljdGlvbmFyeSAqYWN0aW9uc1RvVGFncyA9IEB7CisgICAgICAgIE5TU3RyaW5nRnJvbVNlbGVj
dG9yKEBzZWxlY3Rvcihfc2V0QWN0dWFsU2l6ZTopKTogQChXZWJNZW51SXRlbVBERkFjdHVhbFNp
emUpLAorICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3Ioem9vbUluOikpOiBA
KFdlYk1lbnVJdGVtUERGWm9vbUluKSwKKyAgICAgICAgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNl
bGVjdG9yKHpvb21PdXQ6KSk6IEAoV2ViTWVudUl0ZW1QREZab29tT3V0KSwKKyAgICAgICAgTlNT
dHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRBdXRvU2l6ZTopKTogQChXZWJNZW51SXRl
bVBERkF1dG9TaXplKSwKKyAgICAgICAgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9z
ZXRTaW5nbGVQYWdlOikpOiBAKFdlYk1lbnVJdGVtUERGU2luZ2xlUGFnZSksCisgICAgICAgIE5T
U3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0U2luZ2xlUGFnZVNjcm9sbGluZzopKTog
QChXZWJNZW51SXRlbVBERlNpbmdsZVBhZ2VTY3JvbGxpbmcpLAorICAgICAgICBOU1N0cmluZ0Zy
b21TZWxlY3RvcihAc2VsZWN0b3IoX3NldERvdWJsZVBhZ2U6KSk6IEAoV2ViTWVudUl0ZW1QREZG
YWNpbmdQYWdlcyksCisgICAgICAgIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0
RG91YmxlUGFnZVNjcm9sbGluZzopKTogQChXZWJNZW51SXRlbVBERkZhY2luZ1BhZ2VzU2Nyb2xs
aW5nKSwKKyAgICAgICAgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF90b2dnbGVDb250
aW51b3VzOikpOiBAKFdlYk1lbnVJdGVtUERGQ29udGludW91cyksCisgICAgICAgIE5TU3RyaW5n
RnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihnb1RvTmV4dFBhZ2U6KSk6IEAoV2ViTWVudUl0ZW1QREZO
ZXh0UGFnZSksCisgICAgICAgIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihnb1RvUHJl
dmlvdXNQYWdlOikpOiBAKFdlYk1lbnVJdGVtUERGUHJldmlvdXNQYWdlKSwKKyAgICB9OwogSUdO
T1JFX1dBUk5JTkdTX0VORAogCiAgICAgLy8gTGVhdmUgdGhlc2UgbWVudSBpdGVtcyBvdXQsIHNp
bmNlIFdlYktpdCBpbnNlcnRzIGVxdWl2YWxlbnQgb25lcy4gTm90ZSB0aGF0IHdlIGxlYXZlIG91
dCBQREZLaXQncyAiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQb2xpY3lEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUG9saWN5RGVsZWdhdGUubW0KaW5kZXggZTI4YWI4ZjRh
OGQyMGUyYmQwNTVlMTlkN2RkMzk1MjVmNWIxMGZkZS4uOGMwMDQ3ZDIxYjdkNDA0ZWExZmIwM2Y2
NTc1NWJlMTQwYWU5YjFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJQb2xpY3lEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlBvbGljeURlbGVnYXRlLm1tCkBAIC02MywxMSArNjMsNiBAQCAtIChpZClpbml0
V2l0aFRhcmdldDooaWQpdCBhY3Rpb246KFNFTClhCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0g
KHZvaWQpZGVhbGxvYwotewotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KaW5kZXggYjJmNDIy
NzgyMWZlMTdhNDUxNzI2NGM5ZjJlODEzMmY0MjRjNGNlMi4uZDVkYmVmY2MxZGU5YzA5NDQ1MDdi
OWQyMGI5MTcwMWQ5MGZhMWRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCkBAIC05Nyw4ICs5NywxMSBAQCB2b2lkIFdl
YlNjcmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSgogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgTlNTdHJp
bmcqIG5zRXJyb3JNZXNzYWdlID0gbnNTdHJpbmdOaWxJZkVtcHR5KGVycm9yTXNnKTsKLSAgICAg
ICAgYXV0byBpbmZvID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmpl
Y3RzQW5kS2V5czpuc0Vycm9yTWVzc2FnZSwgV2ViU2NyaXB0RXJyb3JEZXNjcmlwdGlvbktleSwg
QChlcnJvckxpbmUpLCBXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXJLZXksIG5pbF0pOwotICAgICAg
ICBhdXRvIGVycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldl
YlNjcmlwdEVycm9yRG9tYWluIGNvZGU6V2ViU2NyaXB0R2VuZXJhbEVycm9yQ29kZSB1c2VySW5m
bzppbmZvLmdldCgpXSk7CisgICAgICAgIE5TRGljdGlvbmFyeSAqaW5mbyA9IEB7CisgICAgICAg
ICAgICBXZWJTY3JpcHRFcnJvckRlc2NyaXB0aW9uS2V5OiBuc0Vycm9yTWVzc2FnZSwKKyAgICAg
ICAgICAgIFdlYlNjcmlwdEVycm9yTGluZU51bWJlcktleTogQChlcnJvckxpbmUpCisgICAgICAg
IH07CisgICAgICAgIGF1dG8gZXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdp
dGhEb21haW46V2ViU2NyaXB0RXJyb3JEb21haW4gY29kZTpXZWJTY3JpcHRHZW5lcmFsRXJyb3JD
b2RlIHVzZXJJbmZvOmluZm9dKTsKIAogICAgICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5mYWls
ZWRUb1BhcnNlU291cmNlRnVuYykKICAgICAgICAgICAgIENhbGxTY3JpcHREZWJ1Z0RlbGVnYXRl
KGltcGxlbWVudGF0aW9ucy0+ZmFpbGVkVG9QYXJzZVNvdXJjZUZ1bmMsIHdlYlZpZXcsIEBzZWxl
Y3Rvcih3ZWJWaWV3OmZhaWxlZFRvUGFyc2VTb3VyY2U6YmFzZUxpbmVOdW1iZXI6ZnJvbVVSTDp3
aXRoRXJyb3I6Zm9yV2ViRnJhbWU6KSwgbnNTb3VyY2UsIGZpcnN0TGluZSwgbnNVUkwsIGVycm9y
LmdldCgpLCB3ZWJGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KaW5kZXggMjNmNGQyY2NmMjlhYzA3NzY1OWVmN2UzYWE4M2U2MDA0OGU1NGMxOS4uYzQ0
MzUzYWQwN2JlMjBmNzk1NWI2ZWVlNzczYjFmYWU0ZDI5MDdiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjU3OCwxMCArMjU3OCw5IEBAIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChXZWJWaWV3ICopX29wZW5OZXdXaW5k
b3dXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIGF1dG8gZmVhdHVy
ZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgV2ViVmlldyAq
bmV3V2luZG93V2ViVmlldyA9IFtbc2VsZiBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzpz
ZWxmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVdl
YlZpZXdXaXRoUmVxdWVzdDpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpbmRvd0ZlYXR1cmVzOmZlYXR1cmVzLmdldCgpXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93RmVhdHVyZXM6QHsg
fV07CiAgICAgaWYgKCFuZXdXaW5kb3dXZWJWaWV3KQogICAgICAgICByZXR1cm4gbmlsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYldpbmRvd0FuaW1h
dGlvbi5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJXaW5kb3dBbmltYXRp
b24uaAppbmRleCA2YjRjNGVkYzcxOTEyZjM3Mzk0MTkxMWNlZWM2M2RkY2VjNGI1MDAyLi41OGU4
NGYzZDBhYmU3NWM1OWNmMGQ3ZDczYTFlNDlhYmYyYTAwODc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYldpbmRvd0FuaW1hdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLmgKQEAgLTI0LDEy
ICsyNCwxMyBAQAogICovCiAKICNpbXBvcnQgPENvY29hL0NvY29hLmg+CisjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAKIEBpbnRlcmZhY2UgV2ViV2luZG93U2NhbGVBbmltYXRpb24gOiBOU0Fu
aW1hdGlvbiB7CiBAcHJpdmF0ZQogICAgIE5TUmVjdCBfaW5pdGlhbEZyYW1lLCBfZmluYWxGcmFt
ZSwgX3JlYWxGcmFtZTsKICAgICBOU1dpbmRvdyAqX3dpbmRvdzsgLy8gKGFzc2lnbikKLSAgICBO
U0FuaW1hdGlvbiAqX3N1YkFuaW1hdGlvbjsgLy8gKHJldGFpbikKKyAgICBSZXRhaW5QdHI8TlNB
bmltYXRpb24+IF9zdWJBbmltYXRpb247CiAgICAgTlNUaW1lSW50ZXJ2YWwgX2hpbnRlZER1cmF0
aW9uOwogfQogLSAoaWQpaW5pdFdpdGhIaW50ZWREdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVy
YXRpb24gd2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyBpbml0YWxGcmFtZTooTlNSZWN0KWluaXRp
YWxGcmFtZSBmaW5hbEZyYW1lOihOU1JlY3QpZmluYWxGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJXaW5kb3dBbmltYXRpb24ubW0KaW5kZXggZTAw
Yzk4OGZiNDUxMWVkNmVlN2NjMWNkNDM0NTU0MzFiNmFhZDhhNy4uNWRkN2UxZGI1NjU1M2NjOTI5
ZTVjOTdhNGEwOGJlZTJkYmNlMDYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJXaW5kb3dBbmltYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJXaW5kb3dBbmltYXRpb24ubW0KQEAgLTg0LDEyICs4NCw2IEBAIC0g
KGlkKWluaXRXaXRoSGludGVkRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uIHdpbmRv
dzooTlNXaW5kb3cgKil3aW5kb3cKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZCkgZGVh
bGxvYwotewotICAgIFtfc3ViQW5pbWF0aW9uIHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9j
XTsKLX0KLQogLSAodm9pZClzZXREdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KIHsK
ICAgICBbc3VwZXIgc2V0RHVyYXRpb246V2ViV2luZG93QW5pbWF0aW9uRHVyYXRpb25Gcm9tRHVy
YXRpb24oZHVyYXRpb24pXTsKQEAgLTE3OSw4ICsxNzMsNyBAQCAtICh2b2lkKXNldEN1cnJlbnRQ
cm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogCiAtICh2b2lkKXNldFN1YkFu
aW1hdGlvbjooTlNBbmltYXRpb24gKilhbmltYXRpb24KIHsKLSAgICBhdXRvIG9sZEFuaW1hdGlv
biA9IGFkb3B0TlMoX3N1YkFuaW1hdGlvbik7Ci0gICAgX3N1YkFuaW1hdGlvbiA9IFthbmltYXRp
b24gcmV0YWluXTsKKyAgICBfc3ViQW5pbWF0aW9uID0gYW5pbWF0aW9uOwogfQogCiAtIChOU1Rp
bWVJbnRlcnZhbClhZGRpdGlvbmFsRHVyYXRpb25OZWVkZWRUb1JlYWNoRmluYWxGcmFtZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGMyOTc5ODA1
ZWNhYjkzMzNlOWMyODg2MmI3NDRkZTZjZmJkNDk1MjMuLjQ2NDViNGVjOWNhMjRkZjI5YjhiMWYw
MTZjMDkzZWQ4ZjdkZTEyZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMi0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2Jq
QyByZWxlYXNlXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMTc4MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQyODIzODk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXBwbHkgcmV2
aWV3IGZlZWRiYWNrIGZyb20gRGFyaW4gQWRsZXIgYW5kIFNhbSBXZWluaWcgYWZ0ZXIgcjI3Mjc4
OS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAg
ICAgICAoVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tOgorICAgICAgICAoV1RSOjpQbGF0
Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQpOgorCiAyMDIxLTAyLTEyICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdl
IG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVz
dFJ1bm5lck1hYy5tbQppbmRleCBkYzA0Yzg3YjU3OThhMWEyM2I2NTQ3NTkyYzJmNDRiOWYwYmVk
YjYxLi5jNThkNTQ2NWZhMDNkYmRiYWUwOTU4ZGE5NTU5YjdiNjYwMmIzYTVjIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtMTA2NSw3ICsxMDY1LDcgQEAg
dm9pZCBUZXN0UnVubmVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKIHsKICNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBhdXRvIHRleHRGaWVsZCA9IGFkb3B0TlMoW1tOU1RleHRGaWVsZCBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMjApXSk7Ci0gICAgW3Rl
eHRGaWVsZCBzZXRUYWc6IDFdOworICAgIFt0ZXh0RmllbGQgc2V0VGFnOjFdOwogICAgIFtbW1tt
YWluRnJhbWUgd2ViVmlld10gd2luZG93XSBjb250ZW50Vmlld10gYWRkU3Vidmlldzp0ZXh0Rmll
bGQuZ2V0KCldOwogICAgIAogICAgIFt0ZXh0RmllbGQgc2V0TmV4dEtleVZpZXc6W21haW5GcmFt
ZSB3ZWJWaWV3XV07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0
Zm9ybVdlYlZpZXdNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdl
YlZpZXdNYWMubW0KaW5kZXggNmFmZjNmMWRkOWE5NjVjNzllMjc4MDNjY2JkMzE0Nzc2OTY4OGE5
Mi4uYWNjYmFlZDZkYjE0ZjUxODRlNDRkYmQ0NGU3ZDliZThlODJjNjVjNCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpkaWRJbml0aWFsaXplQ2xpZW50cygpCiB2
b2lkIFBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCiB7CiAgICAgYXV0byB0
ZXh0RmllbGQgPSBhZG9wdE5TKFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCAxMDAsIDIwKV0pOwotICAgIFt0ZXh0RmllbGQgc2V0VGFnOiAxXTsKKyAg
ICBbdGV4dEZpZWxkIHNldFRhZzoxXTsKICAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3XSBhZGRT
dWJ2aWV3OnRleHRGaWVsZC5nZXQoKV07CiAKICAgICBOU1ZpZXcgKnZpZXcgPSBwbGF0Zm9ybVZp
ZXcoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420180</attachid>
            <date>2021-02-12 14:32:26 -0800</date>
            <delta_ts>2021-02-12 14:59:53 -0800</delta_ts>
            <desc>Follow-up</desc>
            <filename>bug-221780-20210212143226.patch</filename>
            <type>text/plain</type>
            <size>72841</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjMDA2YTJlZGMxYWEx
N2ViNTBjNzg4YWQxZmIwN2EwYjQ3MWI0Ny4uNGU2YmVkNmQ1NjFlYzU5MzI5NDBmOTVmNmU3MDA2
ZmI0MjAwOWE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAyLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVz
YWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
NDI4MjM4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBcHBseSByZXZpZXcgZmVlZGJhY2sgZnJvbSBEYXJpbiBBZGxlciBhbmQgU2FtIFdlaW5pZyBh
ZnRlciByMjcyNzg5LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgorICAgICAg
ICAoaWYpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRMaW5rRm9yRWxlbWVudCk6CisgICAgICAgIChIVE1MQ29u
dmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZE1h
cmtlcnNUb0xpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdl
ci5tbToKKyAgICAgICAgKC1bV2ViQ29yZU1vdGlvbk1hbmFnZXIgaW5pdGlhbGl6ZU9uTWFpblRo
cmVhZF0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL05ldHdvcmtTdGF0ZU5vdGlm
aWVySU9TLm1tOgorCiAyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBkYTI0M2UxYThiZWRmYWQyZGQ0NGE1OGUxYzQ2NjU0YWVlMzg4Mzk5
Li5kNTg2YTc0YmNjYzZmNzc1YTZmMzYxZWY3MjFkNTc2YWZlY2QxMDYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdl
YktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
NzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDI4MjM4OT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAyMjE3ODBfb2JqY19yZWxlYXNlX2ZvbGxv
d191cAorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdo
bGlnaHRWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbToKKyAgICAgICAgKCtb
V0tQb3BvdmVyQ29sb3JXZWxsIF9jb2xvclBvcG92ZXJDcmVhdGVJZk5lY2Vzc2FyeTpdKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLm1tOgorICAgICAgICAoLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZSBz
ZXRSZW1vdGVQYXJlbnQ6XSk6CisKIDIwMjEtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFz
ZV0gaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggNTU5ZWY3ZTM4Y2Nl
MWVhOGExNjVhZWI4N2M2ZTI2NjZkNzc1MDRiOS4uY2Y0M2MyMWQ3ZTMwMDJmNmU0YzBjNzU1MGZj
ODFhMDBiMDRhYjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83NDI4MjM4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBcHBseSByZXZpZXcgZmVlZGJhY2sgZnJvbSBEYXJpbiBB
ZGxlciBhbmQgU2FtIFdlaW5pZyBhZnRlciByMjcyNzg5LgorCisgICAgICAgICogV2ViVmlldy9X
ZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQbGFjZWhvbGRl
ciBfdXBkYXRlVGl0bGVGb3JEb2N1bWVudElmQXZhaWxhYmxlXSk6CisKIDIwMjEtMDItMTIgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgZXhwbGljaXQg
dXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggNDM1MzQ0NTdiMDM4YTk0ZjZiMzI5YzUzNDZiNjllM2M5ZWNmMzE3OS4uZWQzNzYx
NjcyOWE1ZDNhMTQwMWM4OTc1NWYwOTY0MWM1NDA1NzIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJl
bGVhc2VdIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxNzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDI4MjM4OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBseSByZXZpZXcg
ZmVlZGJhY2sgZnJvbSBEYXJpbiBBZGxlciBhbmQgU2FtIFdlaW5pZyBhZnRlciByMjcyNzg5Lgor
CisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NTm9k
ZSBhYnNvbHV0ZVF1YWRzXSk6CisgICAgICAgICgtW0RPTUhUTUxBcmVhRWxlbWVudCBhYnNvbHV0
ZVF1YWRzV2l0aE93bmVyOl0pOgorICAgICAgICAqIERPTS9FeGNlcHRpb25IYW5kbGVycy5tbToK
KyAgICAgICAgKHJhaXNlRE9NRXJyb3JFeGNlcHRpb24pOgorICAgICAgICAqIERlZmF1bHREZWxl
Z2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkRlZmF1bHRVSURl
bGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDpkZWZh
dWx0VGV4dDppbml0aWF0ZWRCeUZyYW1lOl0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9y
eS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgdmlzaXRlZFVSTDp3aXRoVGl0bGU6
XSk6CisgICAgICAgICgtW1dlYkhpc3RvcnkgX3Zpc2l0ZWRVUkw6d2l0aFRpdGxlOm1ldGhvZDp3
YXNGYWlsdXJlOl0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW06CisgICAg
ICAgICgtW1dlYkhpc3RvcnlJdGVtIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOl0p
OgorICAgICAgICAqIE1pc2MvV2ViTlNEYXRhRXh0cmFzLm1tOgorICAgICAgICAoLVtOU0RhdGEg
X3dlYmtpdF9wYXJzZVJGQzgyMkhlYWRlckZpZWxkc10pOgorICAgICAgICAqIE1pc2MvV2ViTlNQ
YXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1Bhc3RlYm9hcmQgX3dlYl9kZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVtZW50OlVSTDp0aXRsZTphcmNoaXZlOnNvdXJjZTpdKToK
KyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpzcGF3blBsdWdpbkhv
c3QpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpwZXJm
b3JtUmVxdWVzdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChhdHRyaWJ1dGVzRm9yQXR0cmlidXRl
ZFN0cmluZ0NvbnZlcnNpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rp
b25hcnkgY29uc3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1l
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAg
ICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgaW5pdFdpdGhJbnNwZWN0ZWRXZWJW
aWV3OmlzVW5kZXJUZXN0Ol0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9s
bGVyIHdpbmRvd10pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAg
ICAgKC1bV2ViRGF0YVNvdXJjZSBfZG9jdW1lbnRGcmFnbWVudFdpdGhBcmNoaXZlOl0pOgorICAg
ICAgICAoLVtXZWJEYXRhU291cmNlIF9tYWtlUmVwcmVzZW50YXRpb25dKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3
IF91cGRhdGVNb3VzZW92ZXJXaXRoRXZlbnQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJOYXZp
Z2F0aW9uRGF0YS5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1t
OgorICAgICAgICAoLVtXZWJQREZSZXByZXNlbnRhdGlvbiBmaW5pc2hlZExvYWRpbmdXaXRoRGF0
YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAgICAgICgt
W1dlYlBERlZpZXcgX21lbnVJdGVtc0Zyb21QREZLaXRGb3JFdmVudDpdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlBvbGljeURlbGVnYXRlLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIubW06CisgICAgICAgIChXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFyc2VkKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX29wZW5O
ZXdXaW5kb3dXaXRoUmVxdWVzdDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYldpbmRvd0FuaW1h
dGlvbi5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbiBzZXRTdWJBbmltYXRpb246XSk6CisKIDIwMjEt
MDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2Ug
ZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IGVkZjQ1NzRkMjEzMDExNmI0ZjIwYWE2NGMz
MTgwOTkzOTg0MjUwODYuLjI3NDIyZjEwYjEyMDhmNmFlMWZlYjYzNTY1NWYwMzdhMDAzYzRiMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMjk0LDgwICsx
Mjk0LDc2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKICAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRh
Y2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXTsKIAotICAgIHN0YXRpYyBO
U0FycmF5KiBhdHRyaWJ1dGVzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBhbmNob3JBdHRy
cyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogd2ViQXJlYUF0dHJzID0gbmlsOwotICAgIHN0
YXRpYyBOU0FycmF5KiB0ZXh0QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGxpc3RB
dHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogbGlzdEJveEF0dHJzID0gbmlsOwotICAg
IHN0YXRpYyBOU0FycmF5KiByYW5nZUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBj
b21tb25NZW51QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIG1lbnVBdHRycyA9IG5p
bDsKLSAgICBzdGF0aWMgTlNBcnJheSogbWVudUJhckF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBO
U0FycmF5KiBtZW51SXRlbUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBtZW51QnV0
dG9uQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGNvbnRyb2xBdHRycyA9IG5pbDsK
LSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJh
eSogdGFibGVSb3dBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVDb2xBdHRy
cyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVDZWxsQXR0cnMgPSBuaWw7Ci0gICAg
c3RhdGljIE5TQXJyYXkqIGdyb3VwQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGlu
cHV0SW1hZ2VBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogcGFzc3dvcmRGaWVsZEF0
dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiB0YWJMaXN0QXR0cnMgPSBuaWw7Ci0gICAg
c3RhdGljIE5TQXJyYXkqIGNvbWJvQm94QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkq
IG91dGxpbmVBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogb3V0bGluZVJvd0F0dHJz
ID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBidXR0b25BdHRycyA9IG5pbDsKLSAgICBzdGF0
aWMgTlNBcnJheSogc2Nyb2xsVmlld0F0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBp
bmNyZW1lbnRvckF0dHJzID0gbmlsOwotICAgIGlmIChhdHRyaWJ1dGVzID09IG5pbCkgewotICAg
ICAgICBhdHRyaWJ1dGVzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNj
ZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTdWJy
b2xlQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9u
QXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUs
Ci0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlIZWxwQXR0cmlidXRlLAotICAgICAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5UG9zaXRpb25BdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0
cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGUsCi0gICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKLSAgICAgICAgICAg
IE5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5Rm9jdXNlZEF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRB
dHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1dGUsCi0g
ICAgICAgICAgICBAIkFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UiLAotICAgICAgICAgICAgQCJB
WFN0YXJ0VGV4dE1hcmtlciIsCi0gICAgICAgICAgICBAIkFYRW5kVGV4dE1hcmtlciIsCi0gICAg
ICAgICAgICBAIkFYVmlzaXRlZCIsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlMaW5rZWRV
SUVsZW1lbnRzQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRB
dHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRy
aWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJp
YnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUxhbmd1YWdlQXR0cmlidXRlLAotICAg
ICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RE9NSWRlbnRpZmllckF0dHJpYnV0ZSwKLSAgICAgICAg
ICAgIE5TQWNjZXNzaWJpbGl0eURPTUNsYXNzTGlzdEF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5T
QWNjZXNzaWJpbGl0eUZvY3VzYWJsZUFuY2VzdG9yQXR0cmlidXRlLAotICAgICAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5RWRpdGFibGVBbmNlc3RvckF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNj
ZXNzaWJpbGl0eUhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yQXR0cmlidXRlLAotICAgICAgICAgICAg
bmlsXTsKLSAgICB9Ci0gICAgaWYgKGNvbW1vbk1lbnVBdHRycyA9PSBuaWwpIHsKLSAgICAgICAg
Y29tbW9uTWVudUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNj
ZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0Fj
Y2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwotICAgIH0KKyAgICBzdGF0aWMgTlNBcnJh
eSAqYW5jaG9yQXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKndlYkFyZWFBdHRyczsKKyAgICBz
dGF0aWMgTlNBcnJheSAqdGV4dEF0dHJzOworICAgIHN0YXRpYyBOU0FycmF5ICpsaXN0QXR0cnM7
CisgICAgc3RhdGljIE5TQXJyYXkgKmxpc3RCb3hBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAq
cmFuZ2VBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqbWVudUF0dHJzOworICAgIHN0YXRpYyBO
U0FycmF5ICptZW51QmFyQXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKm1lbnVJdGVtQXR0cnM7
CisgICAgc3RhdGljIE5TQXJyYXkgKmNvbnRyb2xBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAq
dGFibGVBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqdGFibGVSb3dBdHRyczsKKyAgICBzdGF0
aWMgTlNBcnJheSAqdGFibGVDb2xBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqdGFibGVDZWxs
QXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKmdyb3VwQXR0cnM7CisgICAgc3RhdGljIE5TQXJy
YXkgKmlucHV0SW1hZ2VBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqcGFzc3dvcmRGaWVsZEF0
dHJzOworICAgIHN0YXRpYyBOU0FycmF5ICp0YWJMaXN0QXR0cnM7CisgICAgc3RhdGljIE5TQXJy
YXkgKmNvbWJvQm94QXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKm91dGxpbmVBdHRyczsKKyAg
ICBzdGF0aWMgTlNBcnJheSAqb3V0bGluZVJvd0F0dHJzOworICAgIHN0YXRpYyBOU0FycmF5ICpi
dXR0b25BdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqc2Nyb2xsVmlld0F0dHJzOworICAgIHN0
YXRpYyBOU0FycmF5ICppbmNyZW1lbnRvckF0dHJzOworICAgIHN0YXRpYyBOU0FycmF5ICphdHRy
aWJ1dGVzID0gQFsKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKKyAgICAg
ICAgTlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmls
aXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGls
ZHJlbkF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5SGVscEF0dHJpYnV0ZSwKKyAg
ICAgICAgTlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2li
aWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJp
YnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGUsCisgICAgICAgIE5T
QWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxp
dHlWYWx1ZUF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0
ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwKKyAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlLAorICAgICAgICBAIkFYU2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2UiLAorICAgICAgICBAIkFYU3RhcnRUZXh0TWFya2VyIiwKKyAgICAgICAgQCJBWEVu
ZFRleHRNYXJrZXIiLAorICAgICAgICBAIkFYVmlzaXRlZCIsCisgICAgICAgIE5TQWNjZXNzaWJp
bGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVNl
bGVjdGVkQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxB
dHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVRvcExldmVsVUlFbGVtZW50QXR0cmli
dXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlMYW5ndWFnZUF0dHJpYnV0ZSwKKyAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5RE9NSWRlbnRpZmllckF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5RE9NQ2xhc3NMaXN0QXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlGb2N1
c2FibGVBbmNlc3RvckF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RWRpdGFibGVB
bmNlc3RvckF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5SGlnaGVzdEVkaXRhYmxl
QW5jZXN0b3JBdHRyaWJ1dGUsCisgICAgXTsKKyAgICBzdGF0aWMgTlNBcnJheSAqY29tbW9uTWVu
dUF0dHJzID0gQFsKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKKyAgICAg
ICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAorICAgICAgICBOU0Fj
Y2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UGFy
ZW50QXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmlidXRlLAor
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nl
c3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZSwKKyAgICBdOworCiAgICAgaWYgKGFuY2hvckF0dHJzID09
IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUxpbmtSZWxhdGlvbnNoaXBUeXBl
QXR0cmlidXRlXTsKLSAgICAgICAgYW5jaG9yQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKKyAgICAgICAgYW5jaG9yQXR0cnMgPSB0ZW1wQXJy
YXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAod2ViQXJlYUF0dHJzID09IG5pbCkgewogICAg
ICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CkBAIC0xMzg1LDcgKzEzODEsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGVdOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5Ym9hcmRET01FdmVu
dERpc3BhdGNoQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5V2ViU2Vzc2lvbklEQXR0cmlidXRlXTsKLSAgICAgICAgd2ViQXJlYUF0dHJzID0g
W1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAg
IHdlYkFyZWFBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmICh0ZXh0
QXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKQEAgLTE0MDAsNyAr
MTM5Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1
ZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eVZhbHVlQXV0b2ZpbGxlZEF0dHJpYnV0ZV07Ci0gICAgICAgIHRleHRBdHRycyA9IFtbTlNBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICB0ZXh0QXR0
cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAobGlzdEF0dHJzID09IG5p
bCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CkBAIC0xNDA4LDcgKzE0MDQsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxkcmVuQXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1
dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJ
RWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIGxpc3RBdHRycyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBsaXN0QXR0cnMgPSB0ZW1w
QXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAobGlzdEJveEF0dHJzID09IG5pbCkgewog
ICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTpsaXN0QXR0cnNdKTsKQEAgLTE0MTYsNyArMTQxMiw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlSZXF1aXJlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0g
ICAgICAgIGxpc3RCb3hBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1w
QXJyYXkuZ2V0KCldOworICAgICAgICBsaXN0Qm94QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigp
OwogICAgIH0KICAgICBpZiAocmFuZ2VBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1w
QXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0
cmlidXRlc10pOwpAQCAtMTQyNSw3ICsxNDIxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKLSAg
ICAgICAgcmFuZ2VBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJy
YXkuZ2V0KCldOworICAgICAgICByYW5nZUF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKICAg
ICB9CiAgICAgaWYgKG1lbnVCYXJBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJy
YXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9u
TWVudUF0dHJzXSk7CkBAIC0xNDMzLDcgKzE0MjksNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5VmlzaWJsZUNoaWxkcmVuQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0g
ICAgICAgIG1lbnVCYXJBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1w
QXJyYXkuZ2V0KCldOworICAgICAgICBtZW51QmFyQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigp
OwogICAgIH0KICAgICBpZiAobWVudUF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21t
b25NZW51QXR0cnNdKTsKQEAgLTE0NDEsNyArMTQzNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsK
LSAgICAgICAgbWVudUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBB
cnJheS5nZXQoKV07CisgICAgICAgIG1lbnVBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAg
ICAgfQogICAgIGlmIChtZW51SXRlbUF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21t
b25NZW51QXR0cnNdKTsKQEAgLTE0NTgsMjcgKzE0NTQsMjcgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmlu
Zyopa0FYTWVudUl0ZW1QcmltYXJ5VUlFbGVtZW50QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VydmVzQXNUaXRsZUZvclVJRWxlbWVudHNB
dHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlG
b2N1c2VkQXR0cmlidXRlXTsKLSAgICAgICAgbWVudUl0ZW1BdHRycyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwotICAgIH0KLSAgICBpZiAobWVudUJ1
dHRvbkF0dHJzID09IG5pbCkgewotICAgICAgICBtZW51QnV0dG9uQXR0cnMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0
cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UGFyZW50
QXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9z
aXRpb25BdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxp
dHlTaXplQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5V2luZG93QXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNj
ZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBO
U0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlLCBuaWxdOwotICAgIH0KKyAgICAgICAg
bWVudUl0ZW1BdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CisgICAgfQorICAgIHN0YXRpYyBO
U0FycmF5ICptZW51QnV0dG9uQXR0cnMgPSBAWworICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xl
QXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1
dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwKKyAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVNp
emVBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVdpbmRvd0F0dHJpYnV0ZSwKKyAg
ICAgICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRy
aWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlLAorICAgIF07
CiAgICAgaWYgKGNvbnRyb2xBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRl
c10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJ
RWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07Ci0gICAgICAgIGNvbnRy
b2xBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCld
OworICAgICAgICBjb250cm9sQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAg
ICBpZiAoaW5jcmVtZW50b3JBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRl
c10pOwpAQCAtMTQ4Nyw3ICsxNDgzLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVl
RGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0cmlidXRlXTsKLSAgICAgICAgaW5jcmVtZW50
b3JBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCld
OworICAgICAgICBpbmNyZW1lbnRvckF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKICAgICB9
CiAgICAgaWYgKGJ1dHRvbkF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVz
XSk7CkBAIC0xNDk1LDEzICsxNDkxLDEzIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgICAgICBbdGVtcEFycmF5IHJlbW92ZU9iamVjdDpOU0FjY2Vzc2liaWxpdHlW
YWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKLSAgICAgICAgYnV0dG9uQXR0
cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKKyAg
ICAgICAgYnV0dG9uQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAo
Y29tYm9Cb3hBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29udHJvbEF0dHJzXSk7CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUV4cGFuZGVkQXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICBjb21ib0JveEF0dHJzID0gW1tOU0FycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIGNvbWJvQm94QXR0cnMg
PSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAodGFibGVBdHRycyA9PSBuaWwp
IHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwpAQCAtMTUxNywxMiArMTUxMywxMiBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93Q291bnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBQ29sdW1uQ291bnRBdHRyaWJ1dGVd
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBUm93Q291
bnRBdHRyaWJ1dGVdOwotICAgICAgICB0YWJsZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIHRhYmxlQXR0cnMgPSB0ZW1wQXJy
YXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAodGFibGVSb3dBdHRycyA9PSBuaWwpIHsKICAg
ICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV07Ci0gICAgICAgIHRhYmxlUm93QXR0cnMgPSBb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKKyAgICAgICAg
dGFibGVSb3dBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmICh0YWJs
ZUNvbEF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CkBAIC0xNTMw
LDcgKzE1MjYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SGVhZGVyQXR0cmlidXRlXTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVS
b3dzQXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVDb2xBdHRycyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICB0YWJsZUNvbEF0dHJzID0g
dGVtcEFycmF5LmxlYWtSZWYoKTsKICAgICB9CiAgICAgaWYgKHRhYmxlQ2VsbEF0dHJzID09IG5p
bCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CkBAIC0xNTQwLDE3ICsxNTM2LDE3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQUNvbHVtbklu
ZGV4QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5QVJJQVJvd0luZGV4QXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVDZWxsQXR0cnMgPSBbW05T
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKKyAgICAgICAgdGFi
bGVDZWxsQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAoZ3JvdXBB
dHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07
Ci0gICAgICAgIGdyb3VwQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVt
cEFycmF5LmdldCgpXTsKKyAgICAgICAgZ3JvdXBBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7
CiAgICAgfQogICAgIGlmIChpbnB1dEltYWdlQXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIGF1dG8g
dGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5
OmJ1dHRvbkF0dHJzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVVSTEF0dHJpYnV0ZV07Ci0gICAgICAgIGlucHV0SW1hZ2VBdHRycyA9IFtbTlNBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBpbnB1dEltYWdl
QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAocGFzc3dvcmRGaWVs
ZEF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CkBAIC0xNTU5LDE0
ICsxNTU1LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlXTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJW
YWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVZhbHVlQXV0b2ZpbGxlZEF0dHJpYnV0ZV07Ci0gICAgICAgIHBhc3N3b3JkRmllbGRBdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAg
ICAgICBwYXNzd29yZEZpZWxkQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAg
ICBpZiAodGFiTGlzdEF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRhYnNBdHRyaWJ1
dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDb250ZW50
c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgdGFiTGlzdEF0dHJzID0gW1tOU0FycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIHRhYkxpc3RB
dHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChvdXRsaW5lQXR0cnMg
PT0gbmlsKSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKQEAgLTE1NzQsNyArMTU3MCw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmli
dXRlXTsKLSAgICAgICAgb3V0bGluZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFy
cmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIG91dGxpbmVBdHRycyA9IHRlbXBBcnJheS5s
ZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChvdXRsaW5lUm93QXR0cnMgPT0gbmlsKSB7CiAgICAg
ICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OnRhYmxlUm93QXR0cnNdKTsKQEAgLTE1ODMsMTQgKzE1NzksMTQgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3N1cmVMZXZlbEF0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVd
OwogICAgICAgICBbdGVtcEFycmF5IHJlbW92ZU9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0
dHJpYnV0ZV07Ci0gICAgICAgIG91dGxpbmVSb3dBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBvdXRsaW5lUm93QXR0cnMgPSB0
ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAoc2Nyb2xsVmlld0F0dHJzID09IG5p
bCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SG9yaXpvbnRhbFNjcm9sbEJhckF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZlcnRpY2Fs
U2Nyb2xsQmFyQXR0cmlidXRlXTsKLSAgICAgICAgc2Nyb2xsVmlld0F0dHJzID0gW1tOU0FycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIHNjcm9sbFZp
ZXdBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogCiAgICAgTlNBcnJheSAqb2Jq
ZWN0QXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7CkBAIC0zMDU1LDEwICszMDUxLDEwIEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5p
c0F0dGFjaG1lbnQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHN0YXRpYyBOU0FycmF5
KiBwYXJhbUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiB0ZXh0UGFyYW1BdHRycyA9
IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVQYXJhbUF0dHJzID0gbmlsOwotICAgIHN0
YXRpYyBOU0FycmF5KiB3ZWJBcmVhUGFyYW1BdHRycyA9IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJh
eSAqcGFyYW1BdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqdGV4dFBhcmFtQXR0cnM7CisgICAg
c3RhdGljIE5TQXJyYXkgKnRhYmxlUGFyYW1BdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqd2Vi
QXJlYVBhcmFtQXR0cnM7CiAgICAgaWYgKHBhcmFtQXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIHBh
cmFtQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKICAgICAgICAgICAg
IEAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCA3MmRhMTFhNzUxZThmOWRkM2E0NDJkNTdiZDkx
YzJiMTljNTMxM2NjLi44ZDc1YWEwYWQ0ZDFlNmUxYjIyYmI4NWY5MTdmNGZlZmE5NmQ2M2NiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0y
OTUsNyArMjk1LDcgQEAgcHJpdmF0ZToKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nPiBfYXR0clN0cjsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4g
X2RvY3VtZW50QXR0cnM7Ci0gICAgTlNVUkwgKl9iYXNlVVJMOworICAgIFJldGFpblB0cjxOU1VS
TD4gX2Jhc2VVUkw7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfdGV4dExpc3RzOwog
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX3RleHRCbG9ja3M7CiAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiBfdGV4dFRhYmxlczsKQEAgLTE2MzYsNyArMTYzNiw3IEBAIHZvaWQg
SFRNTENvbnZlcnRlcjo6X2FkZExpbmtGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TUmFu
Z2UgcmFuZ2UpCiAgICAgICAgIGlmICghdXJsKQogICAgICAgICAgICAgdXJsID0gZWxlbWVudC5k
b2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhz
dHJpcHBlZFN0cmluZykpOwogICAgICAgICBpZiAoIXVybCkKLSAgICAgICAgICAgIHVybCA9IFtO
U1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6c3RyaXBwZWRTdHJpbmcgcmVsYXRpdmVUb1VSTDpfYmFz
ZVVSTF07CisgICAgICAgICAgICB1cmwgPSBbTlNVUkwgX3dlYl9VUkxXaXRoU3RyaW5nOnN0cmlw
cGVkU3RyaW5nIHJlbGF0aXZlVG9VUkw6X2Jhc2VVUkwuZ2V0KCldOwogICAgICAgICBbX2F0dHJT
dHIgYWRkQXR0cmlidXRlOk5TTGlua0F0dHJpYnV0ZU5hbWUgdmFsdWU6dXJsID8gKGlkKXVybCA6
IChpZCl1cmxTdHJpbmcgcmFuZ2U6cmFuZ2VdOwogICAgIH0KIH0KQEAgLTE3OTUsNyArMTc5NSw3
IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQs
IE5TSW50ZWdlciBkZXB0aCkKICAgICAgICAgaWYgKHVybFN0cmluZyAmJiBbdXJsU3RyaW5nIGxl
bmd0aF0gPiAwKSB7CiAgICAgICAgICAgICBOU1VSTCAqdXJsID0gZWxlbWVudC5kb2N1bWVudCgp
LmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcp
KTsKICAgICAgICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgICAgIHVybCA9IFtOU1VSTCBf
d2ViX1VSTFdpdGhTdHJpbmc6W3VybFN0cmluZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVyc0lu
U2V0OltOU0NoYXJhY3RlclNldCB3aGl0ZXNwYWNlQW5kTmV3bGluZUNoYXJhY3RlclNldF1dIHJl
bGF0aXZlVG9VUkw6X2Jhc2VVUkxdOworICAgICAgICAgICAgICAgIHVybCA9IFtOU1VSTCBfd2Vi
X1VSTFdpdGhTdHJpbmc6W3VybFN0cmluZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVyc0luU2V0
OltOU0NoYXJhY3RlclNldCB3aGl0ZXNwYWNlQW5kTmV3bGluZUNoYXJhY3RlclNldF1dIHJlbGF0
aXZlVG9VUkw6X2Jhc2VVUkwuZ2V0KCldOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ICAgICAgICBCT09MIHVzZVBsYWNlaG9sZGVySW1hZ2UgPSBOTzsKICNlbHNlCkBAIC0xODE1LDE0
ICsxODE1LDE0IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVsZW1lbnQm
IGVsZW1lbnQsIE5TSW50ZWdlciBkZXB0aCkKICAgICAgICAgICAgIGlmIChiYXNlU3RyaW5nICYm
IFtiYXNlU3RyaW5nIGxlbmd0aF0gPiAwKSB7CiAgICAgICAgICAgICAgICAgYmFzZVVSTCA9IGVs
ZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXMoYmFzZVN0cmluZykpOwogICAgICAgICAgICAgICAgIGlmICghYmFzZVVSTCkKLSAgICAg
ICAgICAgICAgICAgICAgYmFzZVVSTCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6W2Jhc2VT
dHJpbmcgc3RyaW5nQnlUcmltbWluZ0NoYXJhY3RlcnNJblNldDpbTlNDaGFyYWN0ZXJTZXQgd2hp
dGVzcGFjZUFuZE5ld2xpbmVDaGFyYWN0ZXJTZXRdXSByZWxhdGl2ZVRvVVJMOl9iYXNlVVJMXTsK
KyAgICAgICAgICAgICAgICAgICAgYmFzZVVSTCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6
W2Jhc2VTdHJpbmcgc3RyaW5nQnlUcmltbWluZ0NoYXJhY3RlcnNJblNldDpbTlNDaGFyYWN0ZXJT
ZXQgd2hpdGVzcGFjZUFuZE5ld2xpbmVDaGFyYWN0ZXJTZXRdXSByZWxhdGl2ZVRvVVJMOl9iYXNl
VVJMLmdldCgpXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChiYXNlVVJMKQogICAg
ICAgICAgICAgICAgIHVybCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6W3VybFN0cmluZyBz
dHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVyc0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0ZXNwYWNl
QW5kTmV3bGluZUNoYXJhY3RlclNldF1dIHJlbGF0aXZlVG9VUkw6YmFzZVVSTF07CiAgICAgICAg
ICAgICBpZiAoIXVybCkKICAgICAgICAgICAgICAgICB1cmwgPSBlbGVtZW50LmRvY3VtZW50KCku
Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0cmluZykp
OwogICAgICAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICAgICAgdXJsID0gW05TVVJMIF93
ZWJfVVJMV2l0aFN0cmluZzpbdXJsU3RyaW5nIHN0cmluZ0J5VHJpbW1pbmdDaGFyYWN0ZXJzSW5T
ZXQ6W05TQ2hhcmFjdGVyU2V0IHdoaXRlc3BhY2VBbmROZXdsaW5lQ2hhcmFjdGVyU2V0XV0gcmVs
YXRpdmVUb1VSTDpfYmFzZVVSTF07CisgICAgICAgICAgICAgICAgdXJsID0gW05TVVJMIF93ZWJf
VVJMV2l0aFN0cmluZzpbdXJsU3RyaW5nIHN0cmluZ0J5VHJpbW1pbmdDaGFyYWN0ZXJzSW5TZXQ6
W05TQ2hhcmFjdGVyU2V0IHdoaXRlc3BhY2VBbmROZXdsaW5lQ2hhcmFjdGVyU2V0XV0gcmVsYXRp
dmVUb1VSTDpfYmFzZVVSTC5nZXQoKV07CiAgICAgICAgICAgICBpZiAodXJsKQogICAgICAgICAg
ICAgICAgIHJldHZhbCA9ICFfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoZWxlbWVudCwgdXJsLCBp
c0Jsb2NrTGV2ZWwsIE5PKTsKICAgICAgICAgfQpAQCAtMTg5NCw3ICsxODk0LDYgQEAgdm9pZCBI
VE1MQ29udmVydGVyOjpfYWRkTWFya2Vyc1RvTGlzdChOU1RleHRMaXN0ICpsaXN0LCBOU1Jhbmdl
IHJhbmdlKQogICAgIE5TRGljdGlvbmFyeSAqYXR0cnNUb0luc2VydCA9IG5pbDsKICAgICBQbGF0
Zm9ybUZvbnQgKmZvbnQ7CiAgICAgTlNQYXJhZ3JhcGhTdHlsZSAqcGFyYWdyYXBoU3R5bGU7Ci0g
ICAgUmV0YWluUHRyPE5TTXV0YWJsZVBhcmFncmFwaFN0eWxlPiBuZXdTdHlsZTsKICAgICBOU1Rl
eHRUYWIgKnRhYiA9IG5pbDsKICAgICBOU1RleHRUYWIgKnRhYlRvUmVtb3ZlOwogICAgIE5TUmFu
Z2UgcGFyYWdyYXBoUmFuZ2U7CkBAIC0xOTMzLDcgKzE5MzIsNyBAQCB2b2lkIEhUTUxDb252ZXJ0
ZXI6Ol9hZGRNYXJrZXJzVG9MaXN0KE5TVGV4dExpc3QgKmxpc3QsIE5TUmFuZ2UgcmFuZ2UpCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGhSYW5nZS5sb2NhdGlvbiA8IF9kb21SYW5n
ZVN0YXJ0SW5kZXgpCiAgICAgICAgICAgICAgICAgICAgICAgICBfZG9tUmFuZ2VTdGFydEluZGV4
ICs9IGluc2VydExlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIG5ld1N0eWxlID0gYWRvcHROUyhbcGFyYWdyYXBoU3R5bGUgbXV0YWJsZUNvcHldKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBuZXdTdHlsZSA9IGFkb3B0TlMoW3BhcmFncmFwaFN0eWxl
IG11dGFibGVDb3B5XSk7CiAgICAgICAgICAgICAgICAgICAgIGxpc3RMb2NhdGlvbiA9IChsaXN0
SW5kZXggKyAxKSAqIDM2OwogICAgICAgICAgICAgICAgICAgICBtYXJrZXJMb2NhdGlvbiA9IGxp
c3RMb2NhdGlvbiAtIDI1OwogICAgICAgICAgICAgICAgICAgICBbbmV3U3R5bGUgc2V0Rmlyc3RM
aW5lSGVhZEluZGVudDowXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJDb3JlTW90aW9uTWFuYWdlci5tbQppbmRleCA0MzgxNmY3ZmM1NTZiMTQ5MWJhNjlhYjExZjg5
OWUyOGIzYjczMTg2Li4yN2I0MjQ4YzY3OTdiMmM3ZjYyMzVlYmUxZWI0YmU2Y2MzM2Y1MTgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFn
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5h
Z2VyLm1tCkBAIC0xNDUsOSArMTQ1LDkgQEAgLSAodm9pZClpbml0aWFsaXplT25NYWluVGhyZWFk
CiAgICAgbV9neXJvQXZhaWxhYmxlID0gbV9tb3Rpb25NYW5hZ2VyLmdldCgpLmRldmljZU1vdGlv
bkF2YWlsYWJsZTsKIAogICAgIGlmIChtX2d5cm9BdmFpbGFibGUpCi0gICAgICAgIFttX21vdGlv
bk1hbmFnZXIgc2V0RGV2aWNlTW90aW9uVXBkYXRlSW50ZXJ2YWw6IGtNb3Rpb25VcGRhdGVJbnRl
cnZhbF07CisgICAgICAgIFttX21vdGlvbk1hbmFnZXIgc2V0RGV2aWNlTW90aW9uVXBkYXRlSW50
ZXJ2YWw6a01vdGlvblVwZGF0ZUludGVydmFsXTsKICAgICBlbHNlCi0gICAgICAgIFttX21vdGlv
bk1hbmFnZXIgc2V0QWNjZWxlcm9tZXRlclVwZGF0ZUludGVydmFsOiBrTW90aW9uVXBkYXRlSW50
ZXJ2YWxdOworICAgICAgICBbbV9tb3Rpb25NYW5hZ2VyIHNldEFjY2VsZXJvbWV0ZXJVcGRhdGVJ
bnRlcnZhbDprTW90aW9uVXBkYXRlSW50ZXJ2YWxdOwogCiAgICAgbV9sb2NhdGlvbk1hbmFnZXIg
PSBhZG9wdE5TKFthbGxvY0NMTG9jYXRpb25NYW5hZ2VySW5zdGFuY2UoKSBpbml0XSk7CiAgICAg
bV9oZWFkaW5nQXZhaWxhYmxlID0gW2dldENMTG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBoZWFkaW5n
QXZhaWxhYmxlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL05ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0KaW5kZXggYjhlOWIzYzc3Nzk5
Y2Q2MWNmOWM1OWYwOThiNmM2YWM0NWY2MmQwMS4uZTk3M2IwNmQzMDViZDFhMWUxYjg2ZjI0NjQy
M2Y3OWZmYTFlYjU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0KQEAgLTU5LDExICs1
OSw2IEBAIC0gKGlkKWluaXRXaXRoQmxvY2s6KHZvaWQgKF4pKCkpb2JzZXJ2ZXJCbG9jawogICAg
IHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc3VwZXIgZGVhbGxv
Y107Ci19Ci0KIC0gKHZvaWQpbmV0d29ya1N0YXRlQ2hhbmdlZDooTlNOb3RpZmljYXRpb24gKil1
bnVzZWROb3RpZmljYXRpb24KIHsKICAgICBVTlVTRURfUEFSQU0odW51c2VkTm90aWZpY2F0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJ
bnNwZWN0b3JIaWdobGlnaHRWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5oCmluZGV4IDE4NzE5MWZmNjA0NWJkNTBm
M2FmYzQzYjBjYTBiYWMzM2ViZWZkNWEuLjczMDU3ZTRjZWUzZGY1OGQ2MGRmYmY2MDU3ZTQ2ODAy
ZWMzZTA4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9p
b3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaApAQCAtMjksNyArMjks
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JPdmVybGF5Lmg+CiAKIEBpbnRlcmZhY2Ug
V0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3IDogVUlWaWV3IHsKLSAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IF9sYXllcnM7IC8vIENBU2hhcGVMYXllcnMuCisgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PENBU2hhcGVMYXllciAqPj4gX2xheWVyczsKIH0KIC0gKHZvaWQpdXBkYXRlOihj
b25zdCBXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQmKWhpZ2hsaWdodDsKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCmluZGV4IGI4
MmI0NTkzMjRjZDNlMWJhZTBlZDUxNzU2OGE5MjM3OTlhYzY0YzQuLjczNjhiZjY0MTg1NzE3ZmEx
ZDc4YWJiMWFlY2NmZjFjNmUyMGQ3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLU2Nyb2xsVmlldy5tbQpAQCAtMjE3LDExICsyMTcsNiBAQCAtICh2b2lkKV91cGRhdGVEZWxl
Z2F0ZQogICAgIH0KIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3N1cGVyIGRlYWxsb2Nd
OwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgdmFsdWVzQXJlV2l0aGluT25lUGl4ZWwoQ0dGbG9h
dCBhLCBDR0Zsb2F0IGIpCiB7CiAgICAgcmV0dXJuIENHRkFicyhhIC0gYikgPCAxOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tCmluZGV4IDlm
MGUyMzlmNDI1ZWI3Y2U5NTJkZTU0MTc2ZmMwNGYwNDBmZTFmMTQuLjg2YTZmNDY4YzQ2ZmQ4MWI4
ZTAyNzc5NzNlYTJmYmVjNzIyZjFjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW0KQEAgLTE0MCw3ICsxNDAsNyBAQCArIChOU1BvcG92
ZXIgKilfY29sb3JQb3BvdmVyQ3JlYXRlSWZOZWNlc3Nhcnk6KEJPT0wpZm9yY2VDcmVhdGlvbgog
CiAgICAgICAgIGF1dG8gY29udHJvbGxlciA9IGFkb3B0TlMoW1tOU0NsYXNzRnJvbVN0cmluZyhA
Ik5TQ29sb3JQb3BvdmVyQ29udHJvbGxlciIpIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIHBvcG92
ZXIuY29udGVudFZpZXdDb250cm9sbGVyID0gY29udHJvbGxlci5nZXQoKTsKLSAgICAgICAgW2Nv
bnRyb2xsZXIgc2V0UG9wb3ZlcjogcG9wb3Zlcl07CisgICAgICAgIFtjb250cm9sbGVyIHNldFBv
cG92ZXI6cG9wb3Zlcl07CiAKICAgICAgICAgY29sb3JQb3BvdmVyID0gcG9wb3ZlcjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KaW5kZXggYWEz
YmVjMGQwNmM4OGNiNWM3Y2UxOWEzMjM4ZTk3ZGUwZGE0MGM0YS4uYmRmMGI0ODU1ZDQyOTk5NWEx
ODA2MTdlYzY2ZWUxZWE2MjYxODJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0QmFzZS5tbQpAQCAtMTMxLDggKzEzMSw3IEBAIC0gKHZvaWQpc2V0SGFzTWFpbkZy
YW1lUGx1Z2luOihib29sKWhhc1BsdWdpbgogLSAodm9pZClzZXRSZW1vdGVQYXJlbnQ6KGlkKXBh
cmVudAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKHBhcmVudCAhPSBt
X3BhcmVudCkKLSAgICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CisgICAgbV9wYXJlbnQgPSBwYXJl
bnQ7CiB9CiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVy
Lm1tCmluZGV4IDY5NmRmNWI2OTExM2YxNTI4OTk1ZGQyZDNhMjAyN2M1NWIzNGE2M2UuLjcyNTRk
MGM1YWNjNmFhMWE4NzliNjJhZDBhNDg4OTlmM2NlN2RiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCkBA
IC0zMjgsMTYgKzMyOCwxNiBAQCAtICh2b2lkKV91cGRhdGVUaXRsZUZvckRvY3VtZW50SWZBdmFp
bGFibGUKICAgICBpZiAoIV9kb2N1bWVudCB8fCAhQ0dQREZEb2N1bWVudElzVW5sb2NrZWQoX2Rv
Y3VtZW50KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiB0aXRs
ZTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRpdGxlOwogCiAgICAgQ0dQREZEaWN0aW9u
YXJ5UmVmIGluZm8gPSBDR1BERkRvY3VtZW50R2V0SW5mbyhfZG9jdW1lbnQpOwogICAgIENHUERG
U3RyaW5nUmVmIHZhbHVlOwogICAgIGlmIChDR1BERkRpY3Rpb25hcnlHZXRTdHJpbmcoaW5mbywg
IlRpdGxlIiwgJnZhbHVlKSkKLSAgICAgICAgdGl0bGUgPSBhZG9wdE5TKChOU1N0cmluZyAqKUNH
UERGU3RyaW5nQ29weVRleHRTdHJpbmcodmFsdWUpKTsKKyAgICAgICAgdGl0bGUgPSBhZG9wdENG
KENHUERGU3RyaW5nQ29weVRleHRTdHJpbmcodmFsdWUpKTsKIAotICAgIGlmIChbdGl0bGUgbGVu
Z3RoXSkgewotICAgICAgICBbc2VsZiBzZXRUaXRsZTp0aXRsZS5nZXQoKV07Ci0gICAgICAgIFtb
c2VsZiBfZnJhbWVdIF9kaXNwYXRjaERpZFJlY2VpdmVUaXRsZTp0aXRsZS5nZXQoKV07CisgICAg
aWYgKHRpdGxlICYmIENGU3RyaW5nR2V0TGVuZ3RoKHRpdGxlLmdldCgpKSkgeworICAgICAgICBb
c2VsZiBzZXRUaXRsZTooTlNTdHJpbmcgKil0aXRsZS5nZXQoKV07CisgICAgICAgIFtbc2VsZiBf
ZnJhbWVdIF9kaXNwYXRjaERpZFJlY2VpdmVUaXRsZTooTlNTdHJpbmcgKil0aXRsZS5nZXQoKV07
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
VUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbQppbmRleCA4Y2FmNzU4YjhhNjUwZThiZmMzOGU3MTBkZTQ3ZjUyYThjODE1
NGYxLi4wOWRkZWYzYTc3MDIwNDYyM2VkNDBkNjY4NDU3OTA1YjZjYjU1ZDU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTE4
MiwxMCArMTgyLDggQEAgLSAoTlNBcnJheSAqKWFic29sdXRlUXVhZHMKICAgICAgICAgICAgIHF1
YWRzID0gW3NlbGYgbGluZUJveFF1YWRzXTsKICAgICB9CiAKLSAgICBpZiAoIVtxdWFkcyBjb3Vu
dF0pIHsKLSAgICAgICAgYXV0byBxdWFkT2JqZWN0ID0gYWRvcHROUyhbW1dLUXVhZE9iamVjdCBh
bGxvY10gaW5pdFdpdGhRdWFkOltzZWxmIGFic29sdXRlUXVhZF1dKTsKLSAgICAgICAgcXVhZHMg
PSBAW3F1YWRPYmplY3QuZ2V0KCldOwotICAgIH0KKyAgICBpZiAoIVtxdWFkcyBjb3VudF0pCisg
ICAgICAgIHF1YWRzID0gQFthZG9wdE5TKFtbV0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1
YWQ6W3NlbGYgYWJzb2x1dGVRdWFkXV0pLmdldCgpXTsKIAogICAgIHJldHVybiBxdWFkczsKIH0K
QEAgLTM1OSw5ICszNTcsNyBAQCAtIChOU0FycmF5ICopYm91bmRpbmdCb3hlc1dpdGhPd25lcjoo
RE9NTm9kZSAqKW93bmVyCiAKIC0gKE5TQXJyYXkgKilhYnNvbHV0ZVF1YWRzV2l0aE93bmVyOihE
T01Ob2RlICopb3duZXIKIHsKLSAgICBhdXRvIHF1YWRPYmplY3QgPSBhZG9wdE5TKFtbV0tRdWFk
T2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkV2l0aE93bmVyOm93
bmVyXV0pOwotICAgIE5TQXJyYXkgKnF1YWRBcnJheSA9IEBbcXVhZE9iamVjdC5nZXQoKV07Ci0g
ICAgcmV0dXJuIHF1YWRBcnJheTsKKyAgICByZXR1cm4gQFthZG9wdE5TKFtbV0tRdWFkT2JqZWN0
IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkV2l0aE93bmVyOm93bmVyXV0p
LmdldCgpXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0V4
Y2VwdGlvbkhhbmRsZXJzLm1tCmluZGV4IDc5ZDdjMDAzNmYwODA4YzAyMWNiMTFmZTdlNTUzN2Rj
YWUyNGIwZmIuLjljZjdlOWJkNjRiZmY4NjBiMDRiMWRjYmYyMTRjNGRhMDIwODdkYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMubW0KQEAg
LTQ4LDkgKzQ4LDggQEAgc3RhdGljIE5PX1JFVFVSTiB2b2lkIHJhaXNlRE9NRXJyb3JFeGNlcHRp
b24oV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYykKICAgICBlbHNlCiAgICAgICAgIHJlYXNvbiA9
IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIqKiogJUAgJWQiLCBE
T01FeGNlcHRpb24sIGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGVdKTsKIAotICAgIGF1dG8gdXNlcklu
Zm8gPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlz
OkAoZGVzY3JpcHRpb24ubGVnYWN5Q29kZSksIERPTUV4Y2VwdGlvbiwgbmlsXSk7Ci0KLSAgICBO
U0V4Y2VwdGlvbiAqZXhjZXB0aW9uID0gW05TRXhjZXB0aW9uIGV4Y2VwdGlvbldpdGhOYW1lOkRP
TUV4Y2VwdGlvbiByZWFzb246cmVhc29uLmdldCgpIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXTsK
KyAgICBhdXRvIHVzZXJJbmZvID0gQHsgRE9NRXhjZXB0aW9uOiBAKGRlc2NyaXB0aW9uLmxlZ2Fj
eUNvZGUpIH07CisgICAgYXV0byBleGNlcHRpb24gPSBbTlNFeGNlcHRpb24gZXhjZXB0aW9uV2l0
aE5hbWU6RE9NRXhjZXB0aW9uIHJlYXNvbjpyZWFzb24uZ2V0KCkgdXNlckluZm86dXNlckluZm9d
OwogICAgIFtleGNlcHRpb24gcmFpc2VdOwogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0
ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1
bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUuaAppbmRleCBlN2Q3NmRhNTYxODdiNGJl
MWJiZjFhZDE2NjVmZTQ2OWU5ZTc2NGM3Li5iYzcwNzJiZTA2M2YyMjQ4MTcwZTQyYTUxOGZlMGVm
M2QyN2U4MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVs
ZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5oCkBAIC0zMCw3ICszMCw3
IEBACiAKIEBpbnRlcmZhY2UgV2ViRGVmYXVsdFVJRGVsZWdhdGUgOiBOU09iamVjdCA8V2ViVUlE
ZWxlZ2F0ZT4KIHsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMp
CiAgICAgSUJPdXRsZXQgTlNNZW51ICpkZWZhdWx0TWVudTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlE
ZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2Vi
RGVmYXVsdFVJRGVsZWdhdGUubW0KaW5kZXggMGY1ODhkMjAxZmI4NjNkNGM1MzQ2NjNlYTk1NDEx
MmRiNGY3ZWVjZC4uZGJlY2VkNTY0OTY3YmZmMWNlNThlMmQ0ZjkwMGRmNGFhNjQyZTI2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZh
dWx0VUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVs
ZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tCkBAIC0zMyw3ICszMyw3IEBACiAjaW1wb3J0
ICJXZWJWaWV3LmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0ICJXZWJKYXZhU2NyaXB0VGV4
dElucHV0UGFuZWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNoZWNrcy5oPgogI2VuZGlm
CkBAIC00Myw3ICs0Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dLVmlld1ByaXZhdGUuaD4KICNl
bmRpZgogCi0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oTUFDKQogQGlu
dGVyZmFjZSBOU0FwcGxpY2F0aW9uIChEZWNsYXJhdGlvblN0b2xlbkZyb21BcHBLaXQpCiAtICh2
b2lkKV9jeWNsZVdpbmRvd3NSZXZlcnNlZDooQk9PTClyZXZlcnNlZDsKIEBlbmQKQEAgLTg3LDIx
ICs4NywyMSBAQCAtICh2b2lkKXdlYlZpZXdTaG93OiAoV2ViVmlldyAqKXd2CiAKIC0gKHZvaWQp
d2ViVmlld0Nsb3NlOiAoV2ViVmlldyAqKXd2CiB7Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CisjaWYgUExBVEZPUk0oTUFDKQogICAgIFtbd3Ygd2luZG93XSBjbG9zZV07CiAjZW5kaWYKIH0K
IAogLSAodm9pZCl3ZWJWaWV3Rm9jdXM6IChXZWJWaWV3ICopd3YKIHsKLSNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAgICAgW1t3diB3aW5kb3ddIG1ha2VLZXlB
bmRPcmRlckZyb250Ond2XTsKICNlbmRpZgogfQogCiAtICh2b2lkKXdlYlZpZXdVbmZvY3VzOiAo
V2ViVmlldyAqKXd2CiB7Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0o
TUFDKQogICAgIGlmIChbW3d2IHdpbmRvd10gaXNLZXlXaW5kb3ddIHx8IFtbW3d2IHdpbmRvd10g
YXR0YWNoZWRTaGVldF0gaXNLZXlXaW5kb3ddKQogICAgICAgICBbTlNBcHAgX2N5Y2xlV2luZG93
c1JldmVyc2VkOkZBTFNFXTsKICNlbmRpZgpAQCAtMTU5LDcgKzE1OSw3IEBAIC0gKEJPT0wpd2Vi
Vmlld0lzUmVzaXphYmxlOiAoV2ViVmlldyAqKXd2CiAKIC0gKHZvaWQpd2ViVmlldzogKFdlYlZp
ZXcgKil3diBzZXRSZXNpemFibGU6KEJPT0wpcmVzaXphYmxlCiB7Ci0jaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qg
YWN0dWFsbHkgY2hhbmdlIHRoZSByZXNpemFiaWxpdHkgb2YgdGhlIHdpbmRvdywKICAgICAvLyBv
bmx5IHZpc2liaWxpdHkgb2YgdGhlIGluZGljYXRvci4KICAgICBbW3d2IHdpbmRvd10gc2V0U2hv
d3NSZXNpemVJbmRpY2F0b3I6cmVzaXphYmxlXTsKQEAgLTE2OCw3ICsxNjgsNyBAQCAtICh2b2lk
KXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0UmVzaXphYmxlOihCT09MKXJlc2l6YWJsZQogCiAt
ICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0RnJhbWU6KE5TUmVjdClmcmFtZQogewot
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICBbW3d2IHdp
bmRvd10gc2V0RnJhbWU6ZnJhbWUgZGlzcGxheTpZRVNdOwogI2VuZGlmCiB9CkBAIC0xOTIsNyAr
MTkyLDcgQEAgLSAoQk9PTCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRDb25m
aXJtUGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKikKIAogLSAoTlNTdHJpbmcgKil3ZWJWaWV3
OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6KE5T
U3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0OihOU1N0cmluZyAqKWRlZmF1bHRUZXh0IGluaXRp
YXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyNpZiBQTEFURk9STShNQUMpCiAgICAgYXV0byBwYW5lbCA9IGFkb3B0TlMoW1tXZWJKYXZh
U2NyaXB0VGV4dElucHV0UGFuZWwgYWxsb2NdIGluaXRXaXRoUHJvbXB0OnByb21wdCB0ZXh0OmRl
ZmF1bHRUZXh0XSk7CiAgICAgW3BhbmVsIHNob3dXaW5kb3c6bmlsXTsKICAgICBOU1N0cmluZyAq
cmVzdWx0OwpAQCAtMjE2LDcgKzIxNiw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNl
bmRlciBwcmludEZyYW1lVmlldzooV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3CiB7CiB9CiAKLSNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAtIChOU1VJbnRlZ2Vy
KXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JE
cmFnZ2luZ0luZm86KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7CiAgICAgaWYg
KCFsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29yZTo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRHJvcFRvTmF2
aWdhdGVEaXNhbGxvd2VkQnlEZWZhdWx0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hp
c3RvcnkvV2ViSGlzdG9yeS5tbQppbmRleCA5YmYzMDIwYWEzMjZlOTY1OTU5ZDY0YzZmODAwZDE2
NTI1OWEwYmNjLi45YTY2NjgzZjZlMzJjNDQ4NjA5OWNlNWM5NTdiOWMwNzJjOWNmNTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCkBAIC0xMzcs
MTEgKzEzNyw2IEBAIC0gKGlkKWluaXQKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClk
ZWFsbG9jCi17Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCiAvLyBNQVJLOiBNT0RJRllJTkcg
Q09OVEVOVFMKIAogc3RhdGljIHZvaWQgZ2V0RGF5Qm91bmRhcmllcyhOU1RpbWVJbnRlcnZhbCBp
bnRlcnZhbCwgTlNUaW1lSW50ZXJ2YWwmIGJlZ2lubmluZ09mRGF5LCBOU1RpbWVJbnRlcnZhbCYg
YmVnaW5uaW5nT2ZOZXh0RGF5KQpAQCAtMjg2LDcgKzI4MSw3IEBAIC0gKFdlYkhpc3RvcnlJdGVt
ICopdmlzaXRlZFVSTDooTlNVUkwgKil1cmwgd2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlCiAg
ICAgTlNTdHJpbmcgKlVSTFN0cmluZyA9IFt1cmwgX3dlYl9vcmlnaW5hbERhdGFBc1N0cmluZ107
CiAgICAgaWYgKCFVUkxTdHJpbmcpCiAgICAgICAgIFVSTFN0cmluZyA9IEAiIjsKLSAgICBSZXRh
aW5QdHI8V2ViSGlzdG9yeUl0ZW0+IGVudHJ5ID0gW19lbnRyaWVzQnlVUkwgb2JqZWN0Rm9yS2V5
OlVSTFN0cmluZ107CisgICAgYXV0byBlbnRyeSA9IHJldGFpblB0cihbX2VudHJpZXNCeVVSTCBv
YmplY3RGb3JLZXk6VVJMU3RyaW5nXSk7CiAKICAgICBpZiAoZW50cnkpIHsKICAgICAgICAgTE9H
KEhpc3RvcnksICJVcGRhdGluZyBnbG9iYWwgaGlzdG9yeSBlbnRyeSAlQCIsIGVudHJ5LmdldCgp
KTsKQEAgLTMwNCw3ICsyOTksNyBAQCAtIChXZWJIaXN0b3J5SXRlbSAqKXZpc2l0ZWRVUkw6KE5T
VVJMICopdXJsIHdpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZQogICAgIAogICAgIFtzZWxmIGFk
ZEl0ZW1Ub0RhdGVDYWNoZXM6ZW50cnkuZ2V0KCldOwogCi0gICAgcmV0dXJuIGVudHJ5LmdldCgp
OworICAgIHJldHVybiBlbnRyeS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChCT09MKWFkZEl0ZW06
KFdlYkhpc3RvcnlJdGVtICopZW50cnkgZGlzY2FyZER1cGxpY2F0ZTooQk9PTClkaXNjYXJkRHVw
bGljYXRlCkBAIC04NTksOCArODU0LDcgQEAgLSAodm9pZClfdmlzaXRlZFVSTDooTlNVUkwgKil1
cmwgd2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIG1ldGhvZDooTlNTdHJpbmcgKikKIAogICAg
IGVudHJ5LT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IG51bGxwdHI7CiAKLSAgICBhdXRvIGVu
dHJpZXMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOmVudHJ5LCBu
aWxdKTsKLSAgICBbc2VsZiBfc2VuZE5vdGlmaWNhdGlvbjpXZWJIaXN0b3J5SXRlbXNBZGRlZE5v
dGlmaWNhdGlvbiBlbnRyaWVzOmVudHJpZXMuZ2V0KCldOworICAgIFtzZWxmIF9zZW5kTm90aWZp
Y2F0aW9uOldlYkhpc3RvcnlJdGVtc0FkZGVkTm90aWZpY2F0aW9uIGVudHJpZXM6QFtlbnRyeV1d
OwogfQogCiAtICh2b2lkKV9hZGRWaXNpdGVkTGlua3NUb1Zpc2l0ZWRMaW5rU3RvcmU6KFdlYlZp
c2l0ZWRMaW5rU3RvcmUgJil2aXNpdGVkTGlua1N0b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCBjYjE2Y2Q3NTIyZjBiYTk2
YWNhMTUwMWZiNDY5NWU4NDRkNDcxNzZiLi5iNDM2OGUyZWRlMWU4ZWY1YmRlN2Q4ODUwYzFiNzZl
MWZjNDVjZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dl
Ykhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW0KQEAgLTM1MCwxMSArMzUwLDkgQEAgLSAoaWQpaW5pdEZyb21EaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb246KE5TRGljdGlvbmFyeSAqKWRpY3QKICAgICAgICAgX3ByaXZhdGUt
Pl9yZWRpcmVjdFVSTHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PihtYWtlVmVjdG9yPFN0
cmluZz4ocmVkaXJlY3RVUkxzKSk7CiAKICAgICBOU0FycmF5ICpjaGlsZERpY3RzID0gW2RpY3Qg
b2JqZWN0Rm9yS2V5OmNoaWxkcmVuS2V5XTsKLSAgICBpZiAoY2hpbGREaWN0cykgewotICAgICAg
ICBmb3IgKGludCBpID0gW2NoaWxkRGljdHMgY291bnRdIC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAg
ICAgICAgICAgIGF1dG8gY2hpbGQgPSBhZG9wdE5TKFtbV2ViSGlzdG9yeUl0ZW0gYWxsb2NdIGlu
aXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOltjaGlsZERpY3RzIG9iamVjdEF0SW5kZXg6
aV1dKTsKLSAgICAgICAgICAgIGNvcmUoX3ByaXZhdGUpLT5hZGRDaGlsZEl0ZW0oKmNvcmUoY2hp
bGQtPl9wcml2YXRlKSk7Ci0gICAgICAgIH0KKyAgICBmb3IgKGlkIGNoaWxkRGljdCBpbiBbY2hp
bGREaWN0cyByZXZlcnNlT2JqZWN0RW51bWVyYXRvcl0pIHsKKyAgICAgICAgYXV0byBjaGlsZCA9
IGFkb3B0TlMoW1tXZWJIaXN0b3J5SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVz
ZW50YXRpb246Y2hpbGREaWN0XSk7CisgICAgICAgIGNvcmUoX3ByaXZhdGUpLT5hZGRDaGlsZEl0
ZW0oKmNvcmUoY2hpbGQtPl9wcml2YXRlKSk7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNEYXRh
RXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMu
bW0KaW5kZXggMGRkZTI4N2MyZjA0Yzk2MDk2NDE0OGRkZmIyYzMzNDM4MmU1MTc5Ny4uODJhZTFk
YjVlNWY3NGUyNGVlNjk3YjFhOGZjMDVjNWM0NjUxYmM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KQEAgLTMzMiwxMCArMzMyLDggQEAg
LSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV93ZWJraXRfcGFyc2VSRkM4MjJIZWFkZXJGaWVsZHMK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBh
dXRvIHZhbHVlID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmNvbG9u
IGxlbmd0aDplb2wgLSBjb2xvbiBlbmNvZGluZzpOU0lTT0xhdGluMVN0cmluZ0VuY29kaW5nXSk7
Ci0gICAgICAgICAgICBpZiAoTlNTdHJpbmcgKm9sZFZhbHVlID0gW2hlYWRlckZpZWxkcyBvYmpl
Y3RGb3JLZXk6bGFzdEtleV0pIHsKLSAgICAgICAgICAgICAgICBhdXRvIG5ld1ZhbHVlID0gW1tO
U1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIlQCwgJUAiLCBvbGRWYWx1ZSwgdmFsdWUu
Z2V0KCldOwotICAgICAgICAgICAgICAgIHZhbHVlID0gV1RGTW92ZShuZXdWYWx1ZSk7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoTlNTdHJpbmcgKm9sZFZhbHVlID0gW2hlYWRlckZp
ZWxkcyBvYmplY3RGb3JLZXk6bGFzdEtleV0pCisgICAgICAgICAgICAgICAgdmFsdWUgPSBhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiJUAsICVAIiwgb2xkVmFsdWUs
IHZhbHVlLmdldCgpXSk7CiAgICAgICAgICAgICBbaGVhZGVyRmllbGRzIHNldE9iamVjdDp2YWx1
ZS5nZXQoKSBmb3JLZXk6bGFzdEtleV07CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCmluZGV4
IDRhZTBjNzkwZTNiMDJjZmZhYTI0OWFmMzNhNzdhNGRiZmJmNzJmNWIuLmQ5NjBkMThjYzBlZDJl
ZWNkMGY5MGM4NDVhZTA1Y2Q3NGVmYmQ3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCkBAIC0zMTUsOCArMzE1LDcg
QEAgLSAoaWQpX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVtZW50OihET01FbGVt
ZW50ICopZWxlbWVudAogICAgIGlmIChjdXN0b21EYXRhQnVmZmVyKQogICAgICAgICBbc2VsZiBz
ZXREYXRhOmN1c3RvbURhdGFCdWZmZXIuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjb2NvYVR5cGUoKSldOwogCi0gICAgYXV0byBleHRlbnNpb25zID0gYWRvcHROUyhbW05T
QXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpleHRlbnNpb24sIG5pbF0pOwotICAgIFtzZWxm
IHNldFByb3BlcnR5TGlzdDpleHRlbnNpb25zLmdldCgpIGZvclR5cGU6bGVnYWN5RmlsZXNQcm9t
aXNlUGFzdGVib2FyZFR5cGUoKV07CisgICAgW3NlbGYgc2V0UHJvcGVydHlMaXN0OkBbZXh0ZW5z
aW9uXSBmb3JUeXBlOmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldOwogCiAgICAg
cmV0dXJuIHNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCmlu
ZGV4IGJiZWE3ZWE2MjYyYzJmNDBlM2Y0M2Y2ZGRjYjYyNzJlZTBlMzI0ZDQuLmY2MzkzZjg5YmZi
YTRmNjlmZDAzOGYyMTU2NWVmMTdkMDJmYmYzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5I
b3N0TWFuYWdlci5tbQpAQCAtMTcyLDEyICsxNzIsMTEgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkhv
c3RNYW5hZ2VyOjpzcGF3blBsdWdpbkhvc3QoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjcHVf
dHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBu
YW1lLiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWyhOU1N0cmluZyopcGx1Z2lu
UGF0aCBsYXN0UGF0aENvbXBvbmVudF0gc3RyaW5nQnlEZWxldGluZ1BhdGhFeHRlbnNpb25dLCBb
W05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXV07CiAgICAgCi0gICAgYXV0
byBob3N0UHJvcGVydGllcyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRo
T2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNp
YmxlTmFtZSwgQCJ2aXNpYmxlTmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoTlNTdHJpbmcgKilwbHVnaW5QYXRoLCBAImJ1bmRsZVBhdGgiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSk7Ci0gICAgCi0gICAgZGF0YSA9IFtOU1Byb3Bl
cnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6aG9zdFByb3BlcnRpZXMu
Z2V0KCkgZm9ybWF0Ok5TUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVy
cm9yOk5VTExdOworICAgIGF1dG8gaG9zdFByb3BlcnRpZXMgPSBAeworICAgICAgICBAInZpc2li
bGVOYW1lIjogdmlzaWJsZU5hbWUsCisgICAgICAgIEAiYnVuZGxlUGF0aCI6IChOU1N0cmluZyAq
KXBsdWdpblBhdGgsCisgICAgfTsKKyAgICBkYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXph
dGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpob3N0UHJvcGVydGllcyBmb3JtYXQ6TlNQcm9wZXJ0
eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCBvcHRpb25zOjAgZXJyb3I6TlVMTF07CiAgICAgQVNTRVJU
KGRhdGEpOwogCiAgICAgUHJvY2Vzc1NlcmlhbE51bWJlciBwc247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNTFjNTllYzg0OGE3NDAxOWVmZTRkNDA4OGVj
N2VjMjFkZjU4NjUyMy4uNGI2Y2E3MGM0ZDFhNWMyN2E3N2YxYjIyM2JmODgwMWUxYWFmMDBkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNjUxLDEwICs2
NTEsOSBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cGVyZm9ybVJlcXVlc3Qo
UGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzdCkKICAgICAgICAgZnJhbWUgPSBraXQoY29yZShb
bV9wbHVnaW5WaWV3IHdlYkZyYW1lXSktPmxvYWRlcigpLmZpbmRGcmFtZUZvck5hdmlnYXRpb24o
ZnJhbWVOYW1lKSk7CiAgICAgICAgIGlmICghZnJhbWUpIHsKICAgICAgICAgICAgIFdlYlZpZXcg
KmN1cnJlbnRXZWJWaWV3ID0gW21fcGx1Z2luVmlldyB3ZWJWaWV3XTsKLSAgICAgICAgICAgIGF1
dG8gZmVhdHVyZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAg
ICAgICAgICBXZWJWaWV3ICpuZXdXZWJWaWV3ID0gW1tjdXJyZW50V2ViVmlldyBfVUlEZWxlZ2F0
ZUZvcndhcmRlcl0gd2ViVmlldzpjdXJyZW50V2ViVmlldwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVXZWJWaWV3V2l0aFJlcXVl
c3Q6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aW5kb3dGZWF0dXJlczpmZWF0dXJlcy5nZXQoKV07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0Zl
YXR1cmVzOkB7IH1dOwogCiAgICAgICAgICAgICBpZiAoIW5ld1dlYlZpZXcpIHsKICAgICAgICAg
ICAgICAgICBfV0tQSExvYWRVUkxOb3RpZnkobV9wbHVnaW5Ib3N0UHJveHktPnBvcnQoKSwgbV9w
bHVnaW5JRCwgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdElEKCksIE5QRVJSX0dFTkVSSUNfRVJST1Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGQ3OTQwNzEyMzJlMjJlODM0NDFjNWY4YmUzODBiNDhm
OWFlZWY0YmMuLmZmODYzMDg2OWFlZTgzMzBmNzBhODdhODAwZjM1Mjc2Y2Y5Nzc4YTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0KQEAgLTI1MywzNiArMjUzLDI0IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlV2luZG93KEZyYW1lJiBmcmFtZSwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1
cmVzCiAjZW5kaWYKICAgICAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6d2luZG93RmVhdHVyZXM6
KV0pIHsKLSAgICAgICAgYXV0byB4ID0gZmVhdHVyZXMueCA/IGFkb3B0TlMoW1tOU051bWJlciBh
bGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMueF0pIDogbmlsOwotICAgICAgICBhdXRvIHkg
PSBmZWF0dXJlcy55ID8gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEZsb2F0Oipm
ZWF0dXJlcy55XSkgOiBuaWw7Ci0gICAgICAgIGF1dG8gd2lkdGggPSBmZWF0dXJlcy53aWR0aCA/
IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMud2lkdGhd
KSA6IG5pbDsKLSAgICAgICAgYXV0byBoZWlnaHQgPSBmZWF0dXJlcy5oZWlnaHQgPyBhZG9wdE5T
KFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoRmxvYXQ6KmZlYXR1cmVzLmhlaWdodF0pIDogbmls
OwotICAgICAgICBhdXRvIG1lbnVCYXJWaXNpYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9j
XSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMubWVudUJhclZpc2libGVdKTsKLSAgICAgICAgYXV0byBz
dGF0dXNCYXJWaXNpYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6
ZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZV0pOwotICAgICAgICBhdXRvIHRvb2xCYXJWaXNpYmxl
ID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMudG9vbEJh
clZpc2libGVdKTsKLSAgICAgICAgYXV0byBzY3JvbGxiYXJzVmlzaWJsZSA9IGFkb3B0TlMoW1tO
U051bWJlciBhbGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlXSk7
Ci0gICAgICAgIGF1dG8gcmVzaXphYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0
V2l0aEJvb2w6ZmVhdHVyZXMucmVzaXphYmxlXSk7Ci0gICAgICAgIGF1dG8gZnVsbHNjcmVlbiA9
IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLmZ1bGxzY3Jl
ZW5dKTsKLSAgICAgICAgYXV0byBkaWFsb2cgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGlu
aXRXaXRoQm9vbDpmZWF0dXJlcy5kaWFsb2ddKTsKLSAgICAgICAgCiAgICAgICAgIGF1dG8gZGlj
dEZlYXR1cmVzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRo
T2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZW51QmFyVmlzaWJsZS5nZXQoKSwgQCJtZW51QmFyVmlzaWJsZSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNCYXJWaXNpYmxlLmdldCgp
LCBAInN0YXR1c0JhclZpc2libGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdG9vbEJhclZpc2libGUuZ2V0KCksIEAidG9vbEJhclZpc2libGUiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYmFyc1Zpc2li
bGUuZ2V0KCksIEAic2Nyb2xsYmFyc1Zpc2libGUiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzaXphYmxlLmdldCgpLCBAInJlc2l6YWJsZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuLmdldCgp
LCBAImZ1bGxzY3JlZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlhbG9nLmdldCgpLCBAImRpYWxvZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBAKGZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlKSwgQCJtZW51QmFy
VmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBA
KGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpLCBAInN0YXR1c0JhclZpc2libGUiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQChmZWF0dXJlcy50b29sQmFy
VmlzaWJsZSksIEAidG9vbEJhclZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQChmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSksIEAic2Nyb2xs
YmFyc1Zpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQChmZWF0dXJlcy5yZXNpemFibGUpLCBAInJlc2l6YWJsZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAKGZlYXR1cmVzLmZ1bGxzY3JlZW4pLCBAImZ1
bGxzY3JlZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QChmZWF0dXJlcy5kaWFsb2cpLCBAImRpYWxvZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuaWxdKTsKICAgICAgICAgCi0gICAgICAgIGlmICh4KQotICAg
ICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6eC5nZXQoKSBmb3JLZXk6QCJ4Il07Ci0g
ICAgICAgIGlmICh5KQotICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6eS5nZXQo
KSBmb3JLZXk6QCJ5Il07Ci0gICAgICAgIGlmICh3aWR0aCkKLSAgICAgICAgICAgIFtkaWN0RmVh
dHVyZXMgc2V0T2JqZWN0OndpZHRoLmdldCgpIGZvcktleTpAIndpZHRoIl07Ci0gICAgICAgIGlm
IChoZWlnaHQpCi0gICAgICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDpoZWlnaHQuZ2V0
KCkgZm9yS2V5OkAiaGVpZ2h0Il07CisgICAgICAgIGlmIChmZWF0dXJlcy54KQorICAgICAgICAg
ICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6QCgqZmVhdHVyZXMueCkgZm9yS2V5OkAieCJdOwor
ICAgICAgICBpZiAoZmVhdHVyZXMueSkKKyAgICAgICAgICAgIFtkaWN0RmVhdHVyZXMgc2V0T2Jq
ZWN0OkAoKmZlYXR1cmVzLnkpIGZvcktleTpAInkiXTsKKyAgICAgICAgaWYgKGZlYXR1cmVzLndp
ZHRoKQorICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6QCgqZmVhdHVyZXMud2lk
dGgpIGZvcktleTpAIndpZHRoIl07CisgICAgICAgIGlmIChmZWF0dXJlcy5oZWlnaHQpCisgICAg
ICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDpAKCpmZWF0dXJlcy5oZWlnaHQpIGZvcktl
eTpAImhlaWdodCJdOwogICAgICAgICAKICAgICAgICAgbmV3V2ViVmlldyA9IENhbGxVSURlbGVn
YXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0
OndpbmRvd0ZlYXR1cmVzOiksIG5pbCwgZGljdEZlYXR1cmVzLmdldCgpKTsKICAgICB9IGVsc2Ug
aWYgKGZlYXR1cmVzLmRpYWxvZyAmJiBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdNb2RhbERpYWxvZ1dpdGhSZXF1ZXN0OildKSB7CkBA
IC00NTAsMjIgKzQzOCwyMiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6YWRkTWVzc2FnZVRvQ29u
c29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldgogICAgIH0KIAogICAg
IE5TU3RyaW5nICptZXNzYWdlU291cmNlID0gc3RyaW5nRm9yTWVzc2FnZVNvdXJjZShzb3VyY2Up
OwotICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgIChOU1N0cmluZyAqKW1lc3NhZ2UsIEAibWVz
c2FnZSIsCi0gICAgICAgIEAobGluZU51bWJlciksIEAibGluZU51bWJlciIsCi0gICAgICAgIEAo
Y29sdW1uTnVtYmVyKSwgQCJjb2x1bW5OdW1iZXIiLAotICAgICAgICAoTlNTdHJpbmcgKilzb3Vy
Y2VVUkwsIEAic291cmNlVVJMIiwKLSAgICAgICAgbWVzc2FnZVNvdXJjZSwgQCJNZXNzYWdlU291
cmNlIiwKLSAgICAgICAgc3RyaW5nRm9yTWVzc2FnZUxldmVsKGxldmVsKSwgQCJNZXNzYWdlTGV2
ZWwiLAotICAgICAgICBOVUxMXSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gQHsKKyAgICAgICAg
QCJtZXNzYWdlIjogKE5TU3RyaW5nICopbWVzc2FnZSwKKyAgICAgICAgQCJsaW5lTnVtYmVyIjog
QChsaW5lTnVtYmVyKSwKKyAgICAgICAgQCJjb2x1bW5OdW1iZXIiOiBAKGNvbHVtbk51bWJlciks
CisgICAgICAgIEAic291cmNlVVJMIjogKE5TU3RyaW5nICopc291cmNlVVJMLAorICAgICAgICBA
Ik1lc3NhZ2VTb3VyY2UiOiBtZXNzYWdlU291cmNlLAorICAgICAgICBAIk1lc3NhZ2VMZXZlbCI6
IHN0cmluZ0Zvck1lc3NhZ2VMZXZlbChsZXZlbCksCisgICAgfTsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgW1tbbV93ZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSBhc3lu
Y0ZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgYWRkTWVzc2FnZVRvQ29uc29sZTpkaWN0aW9u
YXJ5LmdldCgpIHdpdGhTb3VyY2U6bWVzc2FnZVNvdXJjZV07CisgICAgW1tbbV93ZWJWaWV3IF9V
SUtpdERlbGVnYXRlRm9yd2FyZGVyXSBhc3luY0ZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcg
YWRkTWVzc2FnZVRvQ29uc29sZTpkaWN0aW9uYXJ5IHdpdGhTb3VyY2U6bWVzc2FnZVNvdXJjZV07
CiAjZWxzZQogICAgIGlmIChyZXNwb25kc1RvTmV3U2VsZWN0b3IpCi0gICAgICAgIENhbGxVSURl
bGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIGRpY3Rpb25hcnkuZ2V0KCksIG1lc3NhZ2VTb3Vy
Y2UpOworICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCBkaWN0aW9u
YXJ5LCBtZXNzYWdlU291cmNlKTsKICAgICBlbHNlCi0gICAgICAgIENhbGxVSURlbGVnYXRlKG1f
d2ViVmlldywgc2VsZWN0b3IsIGRpY3Rpb25hcnkuZ2V0KCkpOworICAgICAgICBDYWxsVUlEZWxl
Z2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCBkaWN0aW9uYXJ5KTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KaW5kZXggMGExNjQ5YzBhODIzYTU5MDhhMzMzMDI2M2QyN2VjMDc0ODFkOWNi
Yy4uYWM3ZDE2NDhjYjgyOTRiNzg0NmNhZjA1MmQ1NzQ5MmI0ZTIyYTRhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbQpAQCAtNDU0LDkgKzQ1NCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0
ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpCiAgICAgICAgIFtleGNsdWRlZEVsZW1l
bnRzIGFkZE9iamVjdDpAIm9iamVjdCJdOwogI2VuZGlmCiAKLSAgICBOU0RpY3Rpb25hcnkgKmRp
Y3Rpb25hcnkgPSBAeyBOU0V4Y2x1ZGVkRWxlbWVudHNEb2N1bWVudEF0dHJpYnV0ZTogZXhjbHVk
ZWRFbGVtZW50cy5nZXQoKSB9OwotCi0gICAgcmV0dXJuIGRpY3Rpb25hcnk7CisgICAgcmV0dXJu
IEB7IE5TRXhjbHVkZWRFbGVtZW50c0RvY3VtZW50QXR0cmlidXRlOiBleGNsdWRlZEVsZW1lbnRz
LmdldCgpIH07CiB9CiAKIHZvaWQgX1dlYkNyZWF0ZUZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVu
dCwgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIEZyYWdtZW50QW5kUmVzb3VyY2VzJiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGIzYWNjMTVkNTMyZjQxMzFkOTJm
ODZiZjFmMjVlMGQxMjQyOThhNDcuLmI5OWY5ZjE1NzdiYzE2ZDk5MThjYzQxYjQ3NzVkMjJmYWU5
MzY0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xNTY1LDggKzE1NjUsNyBA
QCBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KGNv
bnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BYwogCiAgICAgaWYgKGF1dG8gbW91c2VFdmVudERhdGEg
PSBhY3Rpb24ubW91c2VFdmVudERhdGEoKSkgewogICAgICAgICBjb25zdGV4cHIgT3B0aW9uU2V0
PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93
VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNv
bnRlbnQgfTsKLSAgICAgICAgYXV0byBlbGVtZW50ID0gYWRvcHROUyhbW1dlYkVsZW1lbnREaWN0
aW9uYXJ5IGFsbG9jXQotICAgICAgICAgICAgaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmUobV93
ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNl
RXZlbnREYXRhLT5hYnNvbHV0ZUxvY2F0aW9uLCBoaXRUeXBlKV0pOworICAgICAgICBhdXRvIGVs
ZW1lbnQgPSBhZG9wdE5TKFtbV2ViRWxlbWVudERpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoSGl0
VGVzdFJlc3VsdDpjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0
UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50RGF0YS0+YWJzb2x1dGVMb2NhdGlvbiwgaGl0VHlwZSld
KTsKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6ZWxlbWVudC5nZXQoKSBmb3JLZXk6V2ViQWN0
aW9uRWxlbWVudEtleV07CiAKICAgICAgICAgaWYgKG1vdXNlRXZlbnREYXRhLT5pc1RydXN0ZWQp
CkBAIC0xNjA5LDEwICsxNjA4LDggQEAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWIKICAgICBBU1NF
UlQobV93ZWJGcmFtZSk7CiAgICAgCiAgICAgYXV0byBjaGlsZFZpZXcgPSBhZG9wdE5TKFtbV2Vi
RnJhbWVWaWV3IGFsbG9jXSBpbml0XSk7Ci0gICAgCi0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1l
PiByZXN1bHQgPSBbV2ViRnJhbWUgX2NyZWF0ZVN1YmZyYW1lV2l0aE93bmVyRWxlbWVudDomb3du
ZXJFbGVtZW50IGZyYW1lTmFtZTpuYW1lIGZyYW1lVmlldzpjaGlsZFZpZXcuZ2V0KCldOwotCi0g
ICAgV2ViRnJhbWUgKm5ld0ZyYW1lID0ga2l0KHJlc3VsdC5nZXQoKSk7CisgICAgYXV0byByZXN1
bHQgPSBbV2ViRnJhbWUgX2NyZWF0ZVN1YmZyYW1lV2l0aE93bmVyRWxlbWVudDomb3duZXJFbGVt
ZW50IGZyYW1lTmFtZTpuYW1lIGZyYW1lVmlldzpjaGlsZFZpZXcuZ2V0KCldOworICAgIGF1dG8g
Km5ld0ZyYW1lID0ga2l0KHJlc3VsdC5wdHIoKSk7CiAKICAgICBpZiAoW25ld0ZyYW1lIF9kYXRh
U291cmNlXSkKICAgICAgICAgW1tuZXdGcmFtZSBfZGF0YVNvdXJjZV0gX2RvY3VtZW50TG9hZGVy
XS0+c2V0T3ZlcnJpZGVFbmNvZGluZyhbW21fd2ViRnJhbWUuZ2V0KCkgX2RhdGFTb3VyY2VdIF9k
b2N1bWVudExvYWRlcl0tPm92ZXJyaWRlRW5jb2RpbmcoKSk7ICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbQppbmRleCBhMmM1NGIzMzJiNTExYTZmZDk1NDRjMmNjYmNmZGE2YTFmN2IxMzllLi5iODk4
NzE4MzU5MzE2MzVlNTVhM2NkYzc0NDg1ZGM5OTYzZmIxYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tCkBAIC01MTIsMTcgKzUxMiwxMiBAQCAtIChpZClpbml0V2l0aEluc3BlY3RlZFdlYlZp
ZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGlzVW5kZXJUZXN0OihCT09MKWlzVW5kZXJUZXN0CiAgICAg
X2luc3BlY3RlZFdlYlZpZXcgPSB3ZWJWaWV3OwogCiAgICAgTlNTdHJpbmcgKnBhZ2VQYXRoID0g
aXNVbmRlclRlc3QgPyBbc2VsZiBpbnNwZWN0b3JUZXN0UGFnZVBhdGhdIDogW3NlbGYgaW5zcGVj
dG9yUGFnZVBhdGhdOwotICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3Qg
YWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6IHBhZ2VQYXRoXV0pOwor
ICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRo
VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGFnZVBhdGhdXSk7CiAgICAgW1tfZnJvbnRlbmRX
ZWJWaWV3IG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CiAKICAgICByZXR1
cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwot
fQotCiAvLyBNQVJLOiAtCiAKIC0gKE5TU3RyaW5nICopaW5zcGVjdG9yUGFnZVBhdGgKQEAgLTU2
Nyw3ICs1NjIsNyBAQCAtIChOU1dpbmRvdyAqKXdpbmRvdwogICAgIFt3aW5kb3cgc2V0TWluRnVs
bFNjcmVlbkNvbnRlbnRTaXplOk5TTWFrZVNpemUobWluaW11bUZ1bGxTY3JlZW5XaWR0aCwgbWlu
aW11bVdpbmRvd0hlaWdodCldOwogICAgIFt3aW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOihb
d2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl0gfCBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvckZ1
bGxTY3JlZW5BbGxvd3NUaWxpbmcpXTsKIAotICAgIFt3aW5kb3cgc2V0VGl0bGViYXJBcHBlYXJz
VHJhbnNwYXJlbnQ6IFlFU107CisgICAgW3dpbmRvdyBzZXRUaXRsZWJhckFwcGVhcnNUcmFuc3Bh
cmVudDpZRVNdOwogCiAgICAgW3NlbGYgc2V0V2luZG93OndpbmRvdy5nZXQoKV07CiAgICAgcmV0
dXJuIHdpbmRvdy5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbQppbmRleCA2NDhhNDQwYmUyNDNhYTk3YjA5ZjcyM2QzNjQ3MGYyYTg4
Y2I5NTViLi5jMTQ2ZjE2MDVmMzgzOGUyODk1YWM5MDMwYzNiZmQ4ZTkxNDhkZmVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0z
MTcsMTIgKzMxNyw5IEBAIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVu
dFdpdGhBcmNoaXZlOihXZWJBcmNoaXZlICopYXJjaGl2ZQogICAgICAgICAgICAgLy8gRklYTUU6
IHNlZW1zIHBvb3IgZm9ybSB0byBkbyB0aGlzIGFzIGEgc2lkZSBlZmZlY3Qgb2YgZ2V0dGluZyBh
IGRvY3VtZW50IGZyYWdtZW50CiAgICAgICAgICAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2Fk
ZXItPmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKlthcmNoaXZlIF9jb3JlTGVnYWN5V2ViQXJjaGl2
ZV0pOwogCi0gICAgICAgICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtbc2Vs
ZiB3ZWJGcmFtZV0gX2RvY3VtZW50RnJhZ21lbnRXaXRoTWFya3VwU3RyaW5nOm1hcmt1cFN0cmlu
Zy5nZXQoKSBiYXNlVVJMU3RyaW5nOltbbWFpblJlc291cmNlIFVSTF0gX3dlYl9vcmlnaW5hbERh
dGFBc1N0cmluZ11dOwotICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwotICAgICAgICB9IGVs
c2UgaWYgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZShNSU1FVHlwZSkpIHsKKyAgICAgICAgICAgIHJldHVybiBbW3NlbGYgd2ViRnJhbWVdIF9kb2N1
bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzptYXJrdXBTdHJpbmcuZ2V0KCkgYmFzZVVSTFN0
cmluZzpbW21haW5SZXNvdXJjZSBVUkxdIF93ZWJfb3JpZ2luYWxEYXRhQXNTdHJpbmddXTsKKyAg
ICAgICAgfSBlbHNlIGlmIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZElt
YWdlTUlNRVR5cGUoTUlNRVR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9kb2N1bWVu
dEZyYWdtZW50V2l0aEltYWdlUmVzb3VyY2U6bWFpblJlc291cmNlXTsKLSAgICAgICAgICAgIAot
ICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBuaWw7CiB9CkBAIC0zODQsNyArMzgxLDcgQEAg
LSAodm9pZClfbWFrZVJlcHJlc2VudGF0aW9uCiAKICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBz
b3VyY2Ugd2FzIGFscmVhZHkgYm91bmQ/CiAgICAgaWYgKCFbW3NlbGYgcmVwcmVzZW50YXRpb25d
IGlzS2luZE9mQ2xhc3M6cmVwQ2xhc3NdKSB7Ci0gICAgICAgIFJldGFpblB0cjxpZD4gbmV3UmVw
ID0gcmVwQ2xhc3MgIT0gbmlsID8gYWRvcHROUyhbKE5TT2JqZWN0ICopW3JlcENsYXNzIGFsbG9j
XSBpbml0XSkgOiBuaWw7CisgICAgICAgIFJldGFpblB0cjxpZD4gbmV3UmVwID0gcmVwQ2xhc3Mg
PyBhZG9wdE5TKFtbcmVwQ2xhc3MgYWxsb2NdIGluaXRdKSA6IG5pbDsKICAgICAgICAgW3NlbGYg
X3NldFJlcHJlc2VudGF0aW9uOihpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pbmV3UmVw
LmdldCgpXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCmluZGV4IDRlMTM0NjI4MzYwZTgyNmFhODg1NzU1NTJiZmExMTA0N2ZhMGMxNzQuLjNj
NGU0YmIzOTYwNjU4MTc0ODQzNzFjMzBlNDNjNzVjNjY1MjY1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTg3LDExICsxODcsNiBAQCBOU1N0
cmluZyAqTlNBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlQXR0cmlidXRlID0gQCJB
WEVuaGFuY2VkVXNlckludGVyZgogCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWVQcml2YXRlCiAK
LS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogLSAodm9pZClz
ZXRXZWJGcmFtZVZpZXc6KFdlYkZyYW1lVmlldyAqKXYKIHsgCiAgICAgd2ViRnJhbWVWaWV3ID0g
djsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0K
aW5kZXggYjYxNmZhN2JmNjRlNGQ5NzlmYmQwNjgxYWJiM2FmMDM5MjYzYTg0OC4uOTRlMGM5MmUx
ZDIzZDc1ZWYxMmU3NzU5YTk5YzM0YzgxZjViY2QwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KQEAgLTExNywxMSArMTE3LDYgQEAgQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWVWaWV3UHJpdmF0ZQogCi0tICh2b2lkKWRlYWxs
b2MKLXsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9u
IFdlYkZyYW1lVmlldyAoV2ViRnJhbWVWaWV3RmlsZUludGVybmFsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNjZmYjgxNjg2N2MxNTE5
OTVkYmY1NWQxNzM1N2IwZTllMjEwMTlhYS4uMTc0ZmQzNGIwMzVjMTllN2M3ZDA0ZDIxMGNmNzlj
ZmI5NTMzOTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCkBAIC0xOTExLDEwICsxOTExLDcgQEAgLSAodm9pZClfdXBkYXRlTW91c2VvdmVy
V2l0aEV2ZW50OihOU0V2ZW50ICopZXZlbnQKICAgICBOU1ZpZXcgKmhpdFZpZXcgPSBbY29udGVu
dFZpZXcgaGl0VGVzdDpsb2NhdGlvbkZvckhpdFRlc3RdOwogICAgIGZvcmNlV2ViSFRNTFZpZXdI
aXRUZXN0ID0gTk87CiAgICAgCi0gICAgUmV0YWluUHRyPFdlYkhUTUxWaWV3PiB2aWV3OwotICAg
IGlmIChbaGl0VmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKQotICAgICAg
ICB2aWV3ID0gKFdlYkhUTUxWaWV3ICopaGl0VmlldzsgICAgCi0KKyAgICBhdXRvIHZpZXcgPSBy
ZXRhaW5QdHIoZHluYW1pY19vYmpjX2Nhc3Q8V2ViSFRNTFZpZXc+KGhpdFZpZXcpKTsKICAgICBp
ZiAobGFzdEhpdFZpZXcgIT0gdmlldyAmJiBsYXN0SGl0VmlldyAmJiBbbGFzdEhpdFZpZXcgX2Zy
YW1lXSkgewogICAgICAgICAvLyBJZiB3ZSBhcmUgbW92aW5nIG91dCBvZiBhIHZpZXcgKG9yIGZy
YW1lKSwgbGV0J3MgcHJldGVuZCB0aGUgbW91c2UgbW92ZWQKICAgICAgICAgLy8gYWxsIHRoZSB3
YXkgb3V0IG9mIHRoYXQgdmlldy4gQnV0IHdlIGhhdmUgdG8gYWNjb3VudCBmb3Igc2Nyb2xsaW5n
LCBiZWNhdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
Yk5hdmlnYXRpb25EYXRhLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJO
YXZpZ2F0aW9uRGF0YS5tbQppbmRleCA2MzhjM2E1ZTRmNzljMjEyOTA4NWYzMDNjZWRlZmZkOGZj
ZjQwNjJlLi45NGRjZWM1ODA1ZWQ3YzI3MWRhNjM0ODdjNjM4ZmQwODFiZWM5ZjNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk5hdmlnYXRpb25EYXRhLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTmF2aWdhdGlvbkRhdGEu
bW0KQEAgLTQxLDExICs0MSw2IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYk5hdmlnYXRp
b25EYXRhUHJpdmF0ZQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc3VwZXIgZGVhbGxvY107
Ci19Ci0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYk5hdmlnYXRpb25EYXRhCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9u
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlv
bi5tbQppbmRleCA1MmYzMGEwOTZhMTJhMmMwNDNiNTU2ZmM5NDNlYzllZTRmZGRlOTQ1Li40MzI4
YzI2NWI2YmQ0MGYyYWIyNmU3NGYxMGZmNTlhNGQ1Y2M3NDhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0KQEAg
LTEyMSwxMiArMTIxLDEwIEBAIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6
KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiAgICAgfQogCiAgICAgV2ViUERGVmlldyAqdmll
dyA9IChXZWJQREZWaWV3ICopW1tbZGF0YVNvdXJjZSB3ZWJGcmFtZV0gZnJhbWVWaWV3XSBkb2N1
bWVudFZpZXddOwotICAgIGF1dG8gZG9jID0gYWRvcHROUyhbW1tbc2VsZiBjbGFzc10gUERGRG9j
dW1lbnRDbGFzc10gYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhXSk7Ci0gICAgW3ZpZXcgc2V0UERG
RG9jdW1lbnQ6ZG9jLmdldCgpXTsKLQotICAgIE5TQXJyYXkgKnNjcmlwdHMgPSBhbGxTY3JpcHRz
SW5QREZEb2N1bWVudChkb2MuZ2V0KCkpOwotICAgIGRvYyA9IG5pbDsKKyAgICBhdXRvIGRvY3Vt
ZW50ID0gYWRvcHROUyhbW1tbc2VsZiBjbGFzc10gUERGRG9jdW1lbnRDbGFzc10gYWxsb2NdIGlu
aXRXaXRoRGF0YTpkYXRhXSk7CisgICAgW3ZpZXcgc2V0UERGRG9jdW1lbnQ6ZG9jdW1lbnQuZ2V0
KCldOwogCisgICAgTlNBcnJheSAqc2NyaXB0cyA9IGFsbFNjcmlwdHNJblBERkRvY3VtZW50KGRv
Y3VtZW50LmdldCgpKTsKICAgICBpZiAoIVtzY3JpcHRzIGNvdW50XSkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KaW5k
ZXggODUyMTFjYTBmOTIyNzg4NmJhYTg5ZWZjMzg4MzBkNzViZTUwNWFlNC4uYjA4NGJkMzAxNWE2
MDUzMjM3ZTZkMTdmMjA3YTYwODdjNTAwNzk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQpAQCAtMTEwMSwxOSArMTEwMSwxOSBAQCAtIChOU011
dGFibGVBcnJheSAqKV9tZW51SXRlbXNGcm9tUERGS2l0Rm9yRXZlbnQ6KE5TRXZlbnQgKil0aGVF
dmVudAogICAgIE5TTXV0YWJsZUFycmF5ICpjb3BpZWRJdGVtcyA9IFtOU011dGFibGVBcnJheSBh
cnJheV07CiAKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5kZWNsYXJlZC1zZWxlY3RvciIpCi0g
ICAgYXV0byBhY3Rpb25zVG9UYWdzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5p
dFdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgQChXZWJNZW51SXRlbVBERkFjdHVhbFNpemUp
LCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldEFjdHVhbFNpemU6KSksCi0gICAg
ICAgIEAoV2ViTWVudUl0ZW1QREZab29tSW4pLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0
b3Ioem9vbUluOikpLAotICAgICAgICBAKFdlYk1lbnVJdGVtUERGWm9vbU91dCksIE5TU3RyaW5n
RnJvbVNlbGVjdG9yKEBzZWxlY3Rvcih6b29tT3V0OikpLAotICAgICAgICBAKFdlYk1lbnVJdGVt
UERGQXV0b1NpemUpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldEF1dG9TaXpl
OikpLAotICAgICAgICBAKFdlYk1lbnVJdGVtUERGU2luZ2xlUGFnZSksIE5TU3RyaW5nRnJvbVNl
bGVjdG9yKEBzZWxlY3Rvcihfc2V0U2luZ2xlUGFnZTopKSwKLSAgICAgICAgQChXZWJNZW51SXRl
bVBERlNpbmdsZVBhZ2VTY3JvbGxpbmcpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3Io
X3NldFNpbmdsZVBhZ2VTY3JvbGxpbmc6KSksCi0gICAgICAgIEAoV2ViTWVudUl0ZW1QREZGYWNp
bmdQYWdlcyksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0RG91YmxlUGFnZTop
KSwKLSAgICAgICAgQChXZWJNZW51SXRlbVBERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nKSwgTlNTdHJp
bmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXREb3VibGVQYWdlU2Nyb2xsaW5nOikpLAotICAg
ICAgICBAKFdlYk1lbnVJdGVtUERGQ29udGludW91cyksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBz
ZWxlY3RvcihfdG9nZ2xlQ29udGludW91czopKSwKLSAgICAgICAgQChXZWJNZW51SXRlbVBERk5l
eHRQYWdlKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKGdvVG9OZXh0UGFnZTopKSwK
LSAgICAgICAgQChXZWJNZW51SXRlbVBERlByZXZpb3VzUGFnZSksIE5TU3RyaW5nRnJvbVNlbGVj
dG9yKEBzZWxlY3Rvcihnb1RvUHJldmlvdXNQYWdlOikpLAotICAgICAgICBuaWxdKTsKKyAgICBh
dXRvIGFjdGlvbnNUb1RhZ3MgPSBAeworICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2Vs
ZWN0b3IoX3NldEFjdHVhbFNpemU6KSk6IEAoV2ViTWVudUl0ZW1QREZBY3R1YWxTaXplKSwKKyAg
ICAgICAgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKHpvb21JbjopKTogQChXZWJNZW51
SXRlbVBERlpvb21JbiksCisgICAgICAgIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcih6
b29tT3V0OikpOiBAKFdlYk1lbnVJdGVtUERGWm9vbU91dCksCisgICAgICAgIE5TU3RyaW5nRnJv
bVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0QXV0b1NpemU6KSk6IEAoV2ViTWVudUl0ZW1QREZBdXRv
U2l6ZSksCisgICAgICAgIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0U2luZ2xl
UGFnZTopKTogQChXZWJNZW51SXRlbVBERlNpbmdsZVBhZ2UpLAorICAgICAgICBOU1N0cmluZ0Zy
b21TZWxlY3RvcihAc2VsZWN0b3IoX3NldFNpbmdsZVBhZ2VTY3JvbGxpbmc6KSk6IEAoV2ViTWVu
dUl0ZW1QREZTaW5nbGVQYWdlU2Nyb2xsaW5nKSwKKyAgICAgICAgTlNTdHJpbmdGcm9tU2VsZWN0
b3IoQHNlbGVjdG9yKF9zZXREb3VibGVQYWdlOikpOiBAKFdlYk1lbnVJdGVtUERGRmFjaW5nUGFn
ZXMpLAorICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldERvdWJsZVBh
Z2VTY3JvbGxpbmc6KSk6IEAoV2ViTWVudUl0ZW1QREZGYWNpbmdQYWdlc1Njcm9sbGluZyksCisg
ICAgICAgIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3RvcihfdG9nZ2xlQ29udGludW91czop
KTogQChXZWJNZW51SXRlbVBERkNvbnRpbnVvdXMpLAorICAgICAgICBOU1N0cmluZ0Zyb21TZWxl
Y3RvcihAc2VsZWN0b3IoZ29Ub05leHRQYWdlOikpOiBAKFdlYk1lbnVJdGVtUERGTmV4dFBhZ2Up
LAorICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoZ29Ub1ByZXZpb3VzUGFn
ZTopKTogQChXZWJNZW51SXRlbVBERlByZXZpb3VzUGFnZSksCisgICAgfTsKIElHTk9SRV9XQVJO
SU5HU19FTkQKIAogICAgIC8vIExlYXZlIHRoZXNlIG1lbnUgaXRlbXMgb3V0LCBzaW5jZSBXZWJL
aXQgaW5zZXJ0cyBlcXVpdmFsZW50IG9uZXMuIE5vdGUgdGhhdCB3ZSBsZWF2ZSBvdXQgUERGS2l0
J3MgIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUG9saWN5RGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlBvbGljeURlbGVnYXRlLm1tCmluZGV4IGUyOGFiOGY0YThkMjBlMmJk
MDU1ZTE5ZDdkZDM5NTI1ZjViMTBmZGUuLjhjMDA0N2QyMWI3ZDQwNGVhMWZiMDNmNjU3NTViZTE0
MGFlOWIxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UG9saWN5RGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQb2xpY3lEZWxlZ2F0ZS5tbQpAQCAtNjMsMTEgKzYzLDYgQEAgLSAoaWQpaW5pdFdpdGhUYXJn
ZXQ6KGlkKXQgYWN0aW9uOihTRUwpYQogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKWRl
YWxsb2MKLXsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIFdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IGIyZjQyMjc4MjFmZTE3
YTQ1MTcyNjRjOWYyZTgxMzJmNDI0YzRjZTIuLmMxMTg4NjgzYmYxNmNjMDM1NmM4NjYyZGEzNGJi
ZmViOWIwMTRiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtOTYsOSArOTYsMTggQEAgdm9pZCBXZWJTY3JpcHRE
ZWJ1Z2dlcjo6c291cmNlUGFyc2VkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEoKICAgICAgICAgICAgICAgICBDYWxsU2NyaXB0RGVidWdEZWxlZ2F0ZShpbXBsZW1l
bnRhdGlvbnMtPmRpZFBhcnNlU291cmNlRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6
ZGlkUGFyc2VTb3VyY2U6ZnJvbVVSTDpzb3VyY2VJZDpmb3JXZWJGcmFtZTopLCBuc1NvdXJjZSwg
W25zVVJMIGFic29sdXRlU3RyaW5nXSwgc291cmNlUHJvdmlkZXItPmFzSUQoKSwgd2ViRnJhbWUp
OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgTlNTdHJpbmcqIG5zRXJyb3JNZXNz
YWdlID0gbnNTdHJpbmdOaWxJZkVtcHR5KGVycm9yTXNnKTsKLSAgICAgICAgYXV0byBpbmZvID0g
YWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpuc0Vy
cm9yTWVzc2FnZSwgV2ViU2NyaXB0RXJyb3JEZXNjcmlwdGlvbktleSwgQChlcnJvckxpbmUpLCBX
ZWJTY3JpcHRFcnJvckxpbmVOdW1iZXJLZXksIG5pbF0pOwotICAgICAgICBhdXRvIGVycm9yID0g
YWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldlYlNjcmlwdEVycm9yRG9t
YWluIGNvZGU6V2ViU2NyaXB0R2VuZXJhbEVycm9yQ29kZSB1c2VySW5mbzppbmZvLmdldCgpXSk7
CisgICAgICAgIE5TRGljdGlvbmFyeSAqaW5mbzsKKyAgICAgICAgaWYgKE5TU3RyaW5nKiBuc0Vy
cm9yTWVzc2FnZSA9IG5zU3RyaW5nTmlsSWZFbXB0eShlcnJvck1zZykpIHsKKyAgICAgICAgICAg
IGluZm8gPSBAeworICAgICAgICAgICAgICAgIFdlYlNjcmlwdEVycm9yRGVzY3JpcHRpb25LZXk6
IG5zRXJyb3JNZXNzYWdlLAorICAgICAgICAgICAgICAgIFdlYlNjcmlwdEVycm9yTGluZU51bWJl
cktleTogQChlcnJvckxpbmUpLAorICAgICAgICAgICAgfTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGluZm8gPSBAeworICAgICAgICAgICAgICAgIFdlYlNjcmlwdEVycm9yTGluZU51
bWJlcktleTogQChlcnJvckxpbmUpLAorICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAg
ICBhdXRvIGVycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldl
YlNjcmlwdEVycm9yRG9tYWluIGNvZGU6V2ViU2NyaXB0R2VuZXJhbEVycm9yQ29kZSB1c2VySW5m
bzppbmZvXSk7CiAKICAgICAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+ZmFpbGVkVG9QYXJzZVNv
dXJjZUZ1bmMpCiAgICAgICAgICAgICBDYWxsU2NyaXB0RGVidWdEZWxlZ2F0ZShpbXBsZW1lbnRh
dGlvbnMtPmZhaWxlZFRvUGFyc2VTb3VyY2VGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmll
dzpmYWlsZWRUb1BhcnNlU291cmNlOmJhc2VMaW5lTnVtYmVyOmZyb21VUkw6d2l0aEVycm9yOmZv
cldlYkZyYW1lOiksIG5zU291cmNlLCBmaXJzdExpbmUsIG5zVVJMLCBlcnJvci5nZXQoKSwgd2Vi
RnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4
IDIzZjRkMmNjZjI5YWMwNzc2NTllZjdlM2FhODNlNjAwNDhlNTRjMTkuLmM0NDM1M2FkMDdiZTIw
Zjc5NTViNmVlZTc3M2IxZmFlNGQyOTA3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI1NzgsMTAgKzI1NzgsOSBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoV2ViVmlldyAqKV9vcGVuTmV3V2luZG93V2l0aFJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICBhdXRvIGZlYXR1cmVzID0gYWRvcHRO
UyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIFdlYlZpZXcgKm5ld1dpbmRvd1dl
YlZpZXcgPSBbW3NlbGYgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6c2VsZgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVXZWJWaWV3V2l0aFJl
cXVlc3Q6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aW5kb3dGZWF0dXJlczpmZWF0dXJlcy5nZXQoKV07CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0ZlYXR1cmVzOkB7IH1dOwogICAgIGlm
ICghbmV3V2luZG93V2ViVmlldykKICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJXaW5kb3dBbmltYXRpb24uaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLmgKaW5kZXgg
NmI0YzRlZGM3MTkxMmYzNzM5NDE5MTFjZWVjNjNkZGNlYzRiNTAwMi4uNThlODRmM2QwYWJlNzVj
NTljZjBkN2Q3M2ExZTQ5YWJmMmEwMDg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJXaW5kb3dBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYldpbmRvd0FuaW1hdGlvbi5oCkBAIC0yNCwxMiArMjQsMTMgQEAK
ICAqLwogCiAjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCiBAaW50ZXJmYWNlIFdlYldpbmRvd1NjYWxlQW5pbWF0aW9uIDogTlNBbmltYXRpb24gewog
QHByaXZhdGUKICAgICBOU1JlY3QgX2luaXRpYWxGcmFtZSwgX2ZpbmFsRnJhbWUsIF9yZWFsRnJh
bWU7CiAgICAgTlNXaW5kb3cgKl93aW5kb3c7IC8vIChhc3NpZ24pCi0gICAgTlNBbmltYXRpb24g
Kl9zdWJBbmltYXRpb247IC8vIChyZXRhaW4pCisgICAgUmV0YWluUHRyPE5TQW5pbWF0aW9uPiBf
c3ViQW5pbWF0aW9uOwogICAgIE5TVGltZUludGVydmFsIF9oaW50ZWREdXJhdGlvbjsKIH0KIC0g
KGlkKWluaXRXaXRoSGludGVkRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uIHdpbmRv
dzooTlNXaW5kb3cgKil3aW5kb3cgaW5pdGFsRnJhbWU6KE5TUmVjdClpbml0aWFsRnJhbWUgZmlu
YWxGcmFtZTooTlNSZWN0KWZpbmFsRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYldpbmRvd0FuaW1hdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tCmluZGV4IGUwMGM5ODhmYjQ1MTFl
ZDZlZTdjYzFjZDQzNDU1NDMxYjZhYWQ4YTcuLjVkZDdlMWRiNTY1NTNjYzkyOWU1Yzk3YTRhMDhi
ZWUyZGJjZTA2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViV2luZG93QW5pbWF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tCkBAIC04NCwxMiArODQsNiBAQCAtIChpZClpbml0V2l0
aEhpbnRlZER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbiB3aW5kb3c6KE5TV2luZG93
ICopd2luZG93CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpIGRlYWxsb2MKLXsKLSAg
ICBbX3N1YkFuaW1hdGlvbiByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0g
KHZvaWQpc2V0RHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiB7CiAgICAgW3N1cGVy
IHNldER1cmF0aW9uOldlYldpbmRvd0FuaW1hdGlvbkR1cmF0aW9uRnJvbUR1cmF0aW9uKGR1cmF0
aW9uKV07CkBAIC0xNzksOCArMTczLDcgQEAgLSAodm9pZClzZXRDdXJyZW50UHJvZ3Jlc3M6KE5T
QW5pbWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jlc3MKIAogLSAodm9pZClzZXRTdWJBbmltYXRpb246KE5T
QW5pbWF0aW9uICopYW5pbWF0aW9uCiB7Ci0gICAgYXV0byBvbGRBbmltYXRpb24gPSBhZG9wdE5T
KF9zdWJBbmltYXRpb24pOwotICAgIF9zdWJBbmltYXRpb24gPSBbYW5pbWF0aW9uIHJldGFpbl07
CisgICAgX3N1YkFuaW1hdGlvbiA9IGFuaW1hdGlvbjsKIH0KIAogLSAoTlNUaW1lSW50ZXJ2YWwp
YWRkaXRpb25hbER1cmF0aW9uTmVlZGVkVG9SZWFjaEZpbmFsRnJhbWUKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMjk3OTgwNWVjYWI5MzMzZTlj
Mjg4NjJiNzQ0ZGU2Y2ZiZDQ5NTIzLi40NjQ1YjRlYzljYTI0ZGYyOWI4YjFmMDE2YzA5M2VkOGY3
ZGUxMmY5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0g
aW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjE3ODAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0MjgyMzg5PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcGx5IHJldmlldyBmZWVkYmFj
ayBmcm9tIERhcmluIEFkbGVyIGFuZCBTYW0gV2VpbmlnIGFmdGVyIHIyNzI3ODkuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RS
dW5uZXI6OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
bWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3
OjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKwogMjAyMS0wMi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBy
ZWxlYXNlXSBpbiBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9U
ZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0KaW5kZXggZGMwNGM4N2I1Nzk4YTFhMjNiNjU0NzU5MmMyZjQ0YjlmMGJlZGI2MS4uYzU4ZDU0
NjVmYTAzZGJkYmFlMDk1OGRhOTU1OWI3YjY2MDJiM2E1YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTEwNjUsNyArMTA2NSw3IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYXV0byB0ZXh0RmllbGQgPSBhZG9wdE5TKFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDIwKV0pOwotICAgIFt0ZXh0RmllbGQgc2V0
VGFnOiAxXTsKKyAgICBbdGV4dEZpZWxkIHNldFRhZzoxXTsKICAgICBbW1tbbWFpbkZyYW1lIHdl
YlZpZXddIHdpbmRvd10gY29udGVudFZpZXddIGFkZFN1YnZpZXc6dGV4dEZpZWxkLmdldCgpXTsK
ICAgICAKICAgICBbdGV4dEZpZWxkIHNldE5leHRLZXlWaWV3OlttYWluRnJhbWUgd2ViVmlld11d
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3
TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1t
CmluZGV4IDZhZmYzZjFkZDlhOTY1Yzc5ZTI3ODAzY2NiZDMxNDc3Njk2ODhhOTIuLmFjY2JhZWQ2
ZGIxNGY1MTg0ZTQ0ZGJkNDRlN2Q5YmU4ZTgyYzY1YzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2
b2lkIFBsYXRmb3JtV2ViVmlldzo6ZGlkSW5pdGlhbGl6ZUNsaWVudHMoKQogdm9pZCBQbGF0Zm9y
bVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQoKQogewogICAgIGF1dG8gdGV4dEZpZWxkID0g
YWRvcHROUyhbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMTAwLCAyMCldKTsKLSAgICBbdGV4dEZpZWxkIHNldFRhZzogMV07CisgICAgW3RleHRGaWVs
ZCBzZXRUYWc6MV07CiAgICAgW1ttX3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp0ZXh0
RmllbGQuZ2V0KCldOwogCiAgICAgTlNWaWV3ICp2aWV3ID0gcGxhdGZvcm1WaWV3KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420183</attachid>
            <date>2021-02-12 14:59:56 -0800</date>
            <delta_ts>2021-02-12 16:52:44 -0800</delta_ts>
            <desc>Follow-up</desc>
            <filename>bug-221780-20210212145955.patch</filename>
            <type>text/plain</type>
            <size>73564</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjMDA2YTJlZGMxYWEx
N2ViNTBjNzg4YWQxZmIwN2EwYjQ3MWI0Ny4uNGU2YmVkNmQ1NjFlYzU5MzI5NDBmOTVmNmU3MDA2
ZmI0MjAwOWE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAyLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVz
YWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
NDI4MjM4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBcHBseSByZXZpZXcgZmVlZGJhY2sgZnJvbSBEYXJpbiBBZGxlciBhbmQgU2FtIFdlaW5pZyBh
ZnRlciByMjcyNzg5LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgorICAgICAg
ICAoaWYpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRMaW5rRm9yRWxlbWVudCk6CisgICAgICAgIChIVE1MQ29u
dmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZE1h
cmtlcnNUb0xpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdl
ci5tbToKKyAgICAgICAgKC1bV2ViQ29yZU1vdGlvbk1hbmFnZXIgaW5pdGlhbGl6ZU9uTWFpblRo
cmVhZF0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL05ldHdvcmtTdGF0ZU5vdGlm
aWVySU9TLm1tOgorCiAyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBkYTI0M2UxYThiZWRmYWQyZGQ0NGE1OGUxYzQ2NjU0YWVlMzg4Mzk5
Li5kNTg2YTc0YmNjYzZmNzc1YTZmMzYxZWY3MjFkNTc2YWZlY2QxMDYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdl
YktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
NzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDI4MjM4OT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAyMjE3ODBfb2JqY19yZWxlYXNlX2ZvbGxv
d191cAorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdo
bGlnaHRWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbToKKyAgICAgICAgKCtb
V0tQb3BvdmVyQ29sb3JXZWxsIF9jb2xvclBvcG92ZXJDcmVhdGVJZk5lY2Vzc2FyeTpdKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLm1tOgorICAgICAgICAoLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZSBz
ZXRSZW1vdGVQYXJlbnQ6XSk6CisKIDIwMjEtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFz
ZV0gaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggNTU5ZWY3ZTM4Y2Nl
MWVhOGExNjVhZWI4N2M2ZTI2NjZkNzc1MDRiOS4uY2Y0M2MyMWQ3ZTMwMDJmNmU0YzBjNzU1MGZj
ODFhMDBiMDRhYjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83NDI4MjM4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBcHBseSByZXZpZXcgZmVlZGJhY2sgZnJvbSBEYXJpbiBB
ZGxlciBhbmQgU2FtIFdlaW5pZyBhZnRlciByMjcyNzg5LgorCisgICAgICAgICogV2ViVmlldy9X
ZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQbGFjZWhvbGRl
ciBfdXBkYXRlVGl0bGVGb3JEb2N1bWVudElmQXZhaWxhYmxlXSk6CisKIDIwMjEtMDItMTIgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgZXhwbGljaXQg
dXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggNDM1MzQ0NTdiMDM4YTk0ZjZiMzI5YzUzNDZiNjllM2M5ZWNmMzE3OS4uZWQzNzYx
NjcyOWE1ZDNhMTQwMWM4OTc1NWYwOTY0MWM1NDA1NzIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJl
bGVhc2VdIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxNzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDI4MjM4OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBseSByZXZpZXcg
ZmVlZGJhY2sgZnJvbSBEYXJpbiBBZGxlciBhbmQgU2FtIFdlaW5pZyBhZnRlciByMjcyNzg5Lgor
CisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NTm9k
ZSBhYnNvbHV0ZVF1YWRzXSk6CisgICAgICAgICgtW0RPTUhUTUxBcmVhRWxlbWVudCBhYnNvbHV0
ZVF1YWRzV2l0aE93bmVyOl0pOgorICAgICAgICAqIERPTS9FeGNlcHRpb25IYW5kbGVycy5tbToK
KyAgICAgICAgKHJhaXNlRE9NRXJyb3JFeGNlcHRpb24pOgorICAgICAgICAqIERlZmF1bHREZWxl
Z2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkRlZmF1bHRVSURl
bGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDpkZWZh
dWx0VGV4dDppbml0aWF0ZWRCeUZyYW1lOl0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9y
eS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgdmlzaXRlZFVSTDp3aXRoVGl0bGU6
XSk6CisgICAgICAgICgtW1dlYkhpc3RvcnkgX3Zpc2l0ZWRVUkw6d2l0aFRpdGxlOm1ldGhvZDp3
YXNGYWlsdXJlOl0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW06CisgICAg
ICAgICgtW1dlYkhpc3RvcnlJdGVtIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOl0p
OgorICAgICAgICAqIE1pc2MvV2ViTlNEYXRhRXh0cmFzLm1tOgorICAgICAgICAoLVtOU0RhdGEg
X3dlYmtpdF9wYXJzZVJGQzgyMkhlYWRlckZpZWxkc10pOgorICAgICAgICAqIE1pc2MvV2ViTlNQ
YXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1Bhc3RlYm9hcmQgX3dlYl9kZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVtZW50OlVSTDp0aXRsZTphcmNoaXZlOnNvdXJjZTpdKToK
KyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpzcGF3blBsdWdpbkhv
c3QpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpwZXJm
b3JtUmVxdWVzdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChhdHRyaWJ1dGVzRm9yQXR0cmlidXRl
ZFN0cmluZ0NvbnZlcnNpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rp
b25hcnkgY29uc3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1l
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAg
ICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgaW5pdFdpdGhJbnNwZWN0ZWRXZWJW
aWV3OmlzVW5kZXJUZXN0Ol0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9s
bGVyIHdpbmRvd10pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAg
ICAgKC1bV2ViRGF0YVNvdXJjZSBfZG9jdW1lbnRGcmFnbWVudFdpdGhBcmNoaXZlOl0pOgorICAg
ICAgICAoLVtXZWJEYXRhU291cmNlIF9tYWtlUmVwcmVzZW50YXRpb25dKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3
IF91cGRhdGVNb3VzZW92ZXJXaXRoRXZlbnQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJOYXZp
Z2F0aW9uRGF0YS5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1t
OgorICAgICAgICAoLVtXZWJQREZSZXByZXNlbnRhdGlvbiBmaW5pc2hlZExvYWRpbmdXaXRoRGF0
YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAgICAgICgt
W1dlYlBERlZpZXcgX21lbnVJdGVtc0Zyb21QREZLaXRGb3JFdmVudDpdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlBvbGljeURlbGVnYXRlLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIubW06CisgICAgICAgIChXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFyc2VkKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX29wZW5O
ZXdXaW5kb3dXaXRoUmVxdWVzdDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYldpbmRvd0FuaW1h
dGlvbi5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbiBzZXRTdWJBbmltYXRpb246XSk6CisKIDIwMjEt
MDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2Ug
ZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IGVkZjQ1NzRkMjEzMDExNmI0ZjIwYWE2NGMz
MTgwOTkzOTg0MjUwODYuLjA1N2IxY2RkNDBhMmM2ZDIzMzViNzA3OWMxMzVkYTEyMmQ4NzMxYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMjk0LDgwICsx
Mjk0LDc2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKICAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRh
Y2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXTsKIAotICAgIHN0YXRpYyBO
U0FycmF5KiBhdHRyaWJ1dGVzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBhbmNob3JBdHRy
cyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogd2ViQXJlYUF0dHJzID0gbmlsOwotICAgIHN0
YXRpYyBOU0FycmF5KiB0ZXh0QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGxpc3RB
dHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogbGlzdEJveEF0dHJzID0gbmlsOwotICAg
IHN0YXRpYyBOU0FycmF5KiByYW5nZUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBj
b21tb25NZW51QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIG1lbnVBdHRycyA9IG5p
bDsKLSAgICBzdGF0aWMgTlNBcnJheSogbWVudUJhckF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBO
U0FycmF5KiBtZW51SXRlbUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBtZW51QnV0
dG9uQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGNvbnRyb2xBdHRycyA9IG5pbDsK
LSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJh
eSogdGFibGVSb3dBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVDb2xBdHRy
cyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVDZWxsQXR0cnMgPSBuaWw7Ci0gICAg
c3RhdGljIE5TQXJyYXkqIGdyb3VwQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGlu
cHV0SW1hZ2VBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogcGFzc3dvcmRGaWVsZEF0
dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiB0YWJMaXN0QXR0cnMgPSBuaWw7Ci0gICAg
c3RhdGljIE5TQXJyYXkqIGNvbWJvQm94QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkq
IG91dGxpbmVBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogb3V0bGluZVJvd0F0dHJz
ID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBidXR0b25BdHRycyA9IG5pbDsKLSAgICBzdGF0
aWMgTlNBcnJheSogc2Nyb2xsVmlld0F0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBp
bmNyZW1lbnRvckF0dHJzID0gbmlsOwotICAgIGlmIChhdHRyaWJ1dGVzID09IG5pbCkgewotICAg
ICAgICBhdHRyaWJ1dGVzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNj
ZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTdWJy
b2xlQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9u
QXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUs
Ci0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlIZWxwQXR0cmlidXRlLAotICAgICAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5UG9zaXRpb25BdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0
cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGUsCi0gICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKLSAgICAgICAgICAg
IE5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5Rm9jdXNlZEF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRB
dHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1dGUsCi0g
ICAgICAgICAgICBAIkFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UiLAotICAgICAgICAgICAgQCJB
WFN0YXJ0VGV4dE1hcmtlciIsCi0gICAgICAgICAgICBAIkFYRW5kVGV4dE1hcmtlciIsCi0gICAg
ICAgICAgICBAIkFYVmlzaXRlZCIsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlMaW5rZWRV
SUVsZW1lbnRzQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRB
dHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRy
aWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJp
YnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUxhbmd1YWdlQXR0cmlidXRlLAotICAg
ICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RE9NSWRlbnRpZmllckF0dHJpYnV0ZSwKLSAgICAgICAg
ICAgIE5TQWNjZXNzaWJpbGl0eURPTUNsYXNzTGlzdEF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5T
QWNjZXNzaWJpbGl0eUZvY3VzYWJsZUFuY2VzdG9yQXR0cmlidXRlLAotICAgICAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5RWRpdGFibGVBbmNlc3RvckF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNj
ZXNzaWJpbGl0eUhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yQXR0cmlidXRlLAotICAgICAgICAgICAg
bmlsXTsKLSAgICB9Ci0gICAgaWYgKGNvbW1vbk1lbnVBdHRycyA9PSBuaWwpIHsKLSAgICAgICAg
Y29tbW9uTWVudUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNj
ZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0Fj
Y2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwotICAgIH0KKyAgICBzdGF0aWMgTlNBcnJh
eSAqYW5jaG9yQXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKndlYkFyZWFBdHRyczsKKyAgICBz
dGF0aWMgTlNBcnJheSAqdGV4dEF0dHJzOworICAgIHN0YXRpYyBOU0FycmF5ICpsaXN0QXR0cnM7
CisgICAgc3RhdGljIE5TQXJyYXkgKmxpc3RCb3hBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAq
cmFuZ2VBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqbWVudUF0dHJzOworICAgIHN0YXRpYyBO
U0FycmF5ICptZW51QmFyQXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKm1lbnVJdGVtQXR0cnM7
CisgICAgc3RhdGljIE5TQXJyYXkgKmNvbnRyb2xBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAq
dGFibGVBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqdGFibGVSb3dBdHRyczsKKyAgICBzdGF0
aWMgTlNBcnJheSAqdGFibGVDb2xBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqdGFibGVDZWxs
QXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKmdyb3VwQXR0cnM7CisgICAgc3RhdGljIE5TQXJy
YXkgKmlucHV0SW1hZ2VBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqcGFzc3dvcmRGaWVsZEF0
dHJzOworICAgIHN0YXRpYyBOU0FycmF5ICp0YWJMaXN0QXR0cnM7CisgICAgc3RhdGljIE5TQXJy
YXkgKmNvbWJvQm94QXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKm91dGxpbmVBdHRyczsKKyAg
ICBzdGF0aWMgTlNBcnJheSAqb3V0bGluZVJvd0F0dHJzOworICAgIHN0YXRpYyBOU0FycmF5ICpi
dXR0b25BdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqc2Nyb2xsVmlld0F0dHJzOworICAgIHN0
YXRpYyBOU0FycmF5ICppbmNyZW1lbnRvckF0dHJzOworICAgIHN0YXRpYyBOU0FycmF5ICphdHRy
aWJ1dGVzID0gcmV0YWluUHRyKEBbCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1
dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGUsCisgICAgICAgIE5T
QWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eUhlbHBBdHRy
aWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwKKyAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0
eVNpemVBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlLAor
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3Vz
ZWRBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGUsCisg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eVdpbmRvd0F0dHJpYnV0ZSwKKyAgICAgICAgQCJBWFNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlIiwKKyAgICAgICAgQCJBWFN0YXJ0VGV4dE1hcmtlciIsCisgICAg
ICAgIEAiQVhFbmRUZXh0TWFya2VyIiwKKyAgICAgICAgQCJBWFZpc2l0ZWQiLAorICAgICAgICBO
U0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vz
c2liaWxpdHlTZWxlY3RlZEF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5QmxvY2tR
dW90ZUxldmVsQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxl
bWVudEF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5TGFuZ3VhZ2VBdHRyaWJ1dGUs
CisgICAgICAgIE5TQWNjZXNzaWJpbGl0eURPTUlkZW50aWZpZXJBdHRyaWJ1dGUsCisgICAgICAg
IE5TQWNjZXNzaWJpbGl0eURPTUNsYXNzTGlzdEF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5Rm9jdXNhYmxlQW5jZXN0b3JBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0
eUVkaXRhYmxlQW5jZXN0b3JBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eUhpZ2hl
c3RFZGl0YWJsZUFuY2VzdG9yQXR0cmlidXRlLAorICAgIF0pLmxlYWtSZWYoKTsKKyAgICBzdGF0
aWMgTlNBcnJheSAqY29tbW9uTWVudUF0dHJzID0gcmV0YWluUHRyKEBbCisgICAgICAgIE5TQWNj
ZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNj
cmlwdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1
dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwKKyAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9z
aXRpb25BdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGUsCisg
ICAgXSkubGVha1JlZigpOworCiAgICAgaWYgKGFuY2hvckF0dHJzID09IG5pbCkgewogICAgICAg
ICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUxpbmtSZWxhdGlvbnNoaXBUeXBlQXR0cmlidXRlXTsKLSAg
ICAgICAgYW5jaG9yQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFy
cmF5LmdldCgpXTsKKyAgICAgICAgYW5jaG9yQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwog
ICAgIH0KICAgICBpZiAod2ViQXJlYUF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzXSk7CkBAIC0xMzg1LDcgKzEzODEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoQXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5V2ViU2Vz
c2lvbklEQXR0cmlidXRlXTsKLSAgICAgICAgd2ViQXJlYUF0dHJzID0gW1tOU0FycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIHdlYkFyZWFBdHRycyA9
IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmICh0ZXh0QXR0cnMgPT0gbmlsKSB7
CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKQEAgLTE0MDAsNyArMTM5Niw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZV07CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXV0b2ZpbGxl
ZEF0dHJpYnV0ZV07Ci0gICAgICAgIHRleHRBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICB0ZXh0QXR0cnMgPSB0ZW1wQXJyYXku
bGVha1JlZigpOwogICAgIH0KICAgICBpZiAobGlzdEF0dHJzID09IG5pbCkgewogICAgICAgICBh
dXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTphdHRyaWJ1dGVzXSk7CkBAIC0xNDA4LDcgKzE0MDQsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5VmlzaWJsZUNoaWxkcmVuQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0
ZV07Ci0gICAgICAgIGxpc3RBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0
ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBsaXN0QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigp
OwogICAgIH0KICAgICBpZiAobGlzdEJveEF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRl
bXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTps
aXN0QXR0cnNdKTsKQEAgLTE0MTYsNyArMTQxMiw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlSZXF1aXJlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0gICAgICAgIGxpc3RCb3hB
dHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwor
ICAgICAgICBsaXN0Qm94QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBp
ZiAocmFuZ2VBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwpAQCAt
MTQyNSw3ICsxNDIxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFs
dWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKLSAgICAgICAgcmFuZ2VBdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAg
ICAgICByYW5nZUF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKICAgICB9CiAgICAgaWYgKG1l
bnVCYXJBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJzXSk7CkBA
IC0xNDMzLDcgKzE0MjksNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxk
cmVuQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0gICAgICAgIG1lbnVCYXJB
dHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwor
ICAgICAgICBtZW51QmFyQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBp
ZiAobWVudUF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0cnNdKTsK
QEAgLTE0NDEsNyArMTQzNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hp
bGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgbWVudUF0
dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07Cisg
ICAgICAgIG1lbnVBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmICht
ZW51SXRlbUF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0cnNdKTsK
QEAgLTE0NTgsMjcgKzE0NTQsMjcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYTWVudUl0ZW1Q
cmltYXJ5VUlFbGVtZW50QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5U2VydmVzQXNUaXRsZUZvclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlGb2N1c2VkQXR0cmlidXRl
XTsKLSAgICAgICAgbWVudUl0ZW1BdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTp0ZW1wQXJyYXkuZ2V0KCldOwotICAgIH0KLSAgICBpZiAobWVudUJ1dHRvbkF0dHJzID09IG5p
bCkgewotICAgICAgICBtZW51QnV0dG9uQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRo
T2JqZWN0czpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmli
dXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0
dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3Vz
ZWRBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlU
aXRsZUF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0
eUNoaWxkcmVuQXR0cmlidXRlLCBuaWxdOwotICAgIH0KKyAgICAgICAgbWVudUl0ZW1BdHRycyA9
IHRlbXBBcnJheS5sZWFrUmVmKCk7CisgICAgfQorICAgIHN0YXRpYyBOU0FycmF5ICptZW51QnV0
dG9uQXR0cnMgPSByZXRhaW5QdHIoQFsKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJp
YnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAor
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNz
aWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0
cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1dGUsCisgICAgICAg
IE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0
eUZvY3VzZWRBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRl
LAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwKKyAgICBdKS5sZWFr
UmVmKCk7CiAgICAgaWYgKGNvbnRyb2xBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1w
QXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0
cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlU
aXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07Ci0gICAgICAg
IGNvbnRyb2xBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXku
Z2V0KCldOworICAgICAgICBjb250cm9sQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAg
IH0KICAgICBpZiAoaW5jcmVtZW50b3JBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1w
QXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0
cmlidXRlc10pOwpAQCAtMTQ4Nyw3ICsxNDgzLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0cmlidXRlXTsKLSAgICAgICAgaW5j
cmVtZW50b3JBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXku
Z2V0KCldOworICAgICAgICBpbmNyZW1lbnRvckF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsK
ICAgICB9CiAgICAgaWYgKGJ1dHRvbkF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzXSk7CkBAIC0xNDk1LDEzICsxNDkxLDEzIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IHJlbW92ZU9iamVjdDpOU0FjY2Vzc2li
aWxpdHlWYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKLSAgICAgICAgYnV0
dG9uQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgp
XTsKKyAgICAgICAgYnV0dG9uQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAg
ICBpZiAoY29tYm9Cb3hBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29udHJvbEF0dHJz
XSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUV4cGFuZGVk
QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICBjb21ib0JveEF0dHJzID0gW1tOU0FycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIGNvbWJvQm94
QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAodGFibGVBdHRycyA9
PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwpAQCAtMTUxNywxMiArMTUxMywx
MiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93Q291bnRBdHRyaWJ1dGVdOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBQ29sdW1uQ291bnRBdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklB
Um93Q291bnRBdHRyaWJ1dGVdOwotICAgICAgICB0YWJsZUF0dHJzID0gW1tOU0FycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIHRhYmxlQXR0cnMgPSB0
ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAodGFibGVSb3dBdHRycyA9PSBuaWwp
IHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV07Ci0gICAgICAgIHRhYmxlUm93QXR0
cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKKyAg
ICAgICAgdGFibGVSb3dBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlm
ICh0YWJsZUNvbEF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CkBA
IC0xNTMwLDcgKzE1MjYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SGVhZGVyQXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93c0F0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZp
c2libGVSb3dzQXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVDb2xBdHRycyA9IFtbTlNBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICB0YWJsZUNvbEF0
dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKICAgICB9CiAgICAgaWYgKHRhYmxlQ2VsbEF0dHJz
ID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CkBAIC0xNTQwLDE3ICsxNTM2
LDE3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQUNv
bHVtbkluZGV4QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5QVJJQVJvd0luZGV4QXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVDZWxsQXR0cnMg
PSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKKyAgICAg
ICAgdGFibGVDZWxsQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAo
Z3JvdXBBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJp
YnV0ZV07Ci0gICAgICAgIGdyb3VwQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6dGVtcEFycmF5LmdldCgpXTsKKyAgICAgICAgZ3JvdXBBdHRycyA9IHRlbXBBcnJheS5sZWFr
UmVmKCk7CiAgICAgfQogICAgIGlmIChpbnB1dEltYWdlQXR0cnMgPT0gbmlsKSB7CiAgICAgICAg
IGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OmJ1dHRvbkF0dHJzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07Ci0gICAgICAgIGlucHV0SW1hZ2VBdHRycyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBpbnB1
dEltYWdlQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAocGFzc3dv
cmRGaWVsZEF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CkBAIC0x
NTU5LDE0ICsxNTU1LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vo
b2xkZXJWYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVZhbHVlQXV0b2ZpbGxlZEF0dHJpYnV0ZV07Ci0gICAgICAgIHBhc3N3b3JkRmll
bGRBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCld
OworICAgICAgICBwYXNzd29yZEZpZWxkQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAg
IH0KICAgICBpZiAodGFiTGlzdEF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJh
eSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1
dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRhYnNB
dHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlD
b250ZW50c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgdGFiTGlzdEF0dHJzID0gW1tO
U0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIHRh
Ykxpc3RBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChvdXRsaW5l
QXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKQEAgLTE1NzQsNyAr
MTU3MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
QXR0cmlidXRlXTsKLSAgICAgICAgb3V0bGluZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIG91dGxpbmVBdHRycyA9IHRlbXBB
cnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChvdXRsaW5lUm93QXR0cnMgPT0gbmlsKSB7
CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OnRhYmxlUm93QXR0cnNdKTsKQEAgLTE1ODMsMTQgKzE1NzksMTQgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3N1cmVMZXZlbEF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IHJlbW92ZU9iamVjdDpOU0FjY2Vzc2liaWxpdHlW
YWx1ZUF0dHJpYnV0ZV07Ci0gICAgICAgIG91dGxpbmVSb3dBdHRycyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBvdXRsaW5lUm93QXR0
cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAoc2Nyb2xsVmlld0F0dHJz
ID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SG9yaXpvbnRhbFNjcm9sbEJhckF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZl
cnRpY2FsU2Nyb2xsQmFyQXR0cmlidXRlXTsKLSAgICAgICAgc2Nyb2xsVmlld0F0dHJzID0gW1tO
U0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIHNj
cm9sbFZpZXdBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogCiAgICAgTlNBcnJh
eSAqb2JqZWN0QXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7CkBAIC0zMDU1LDEwICszMDUxLDEwIEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChiYWNraW5nT2Jq
ZWN0LT5pc0F0dGFjaG1lbnQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHN0YXRpYyBO
U0FycmF5KiBwYXJhbUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiB0ZXh0UGFyYW1B
dHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVQYXJhbUF0dHJzID0gbmlsOwot
ICAgIHN0YXRpYyBOU0FycmF5KiB3ZWJBcmVhUGFyYW1BdHRycyA9IG5pbDsKKyAgICBzdGF0aWMg
TlNBcnJheSAqcGFyYW1BdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqdGV4dFBhcmFtQXR0cnM7
CisgICAgc3RhdGljIE5TQXJyYXkgKnRhYmxlUGFyYW1BdHRyczsKKyAgICBzdGF0aWMgTlNBcnJh
eSAqd2ViQXJlYVBhcmFtQXR0cnM7CiAgICAgaWYgKHBhcmFtQXR0cnMgPT0gbmlsKSB7CiAgICAg
ICAgIHBhcmFtQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKICAgICAg
ICAgICAgIEAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCA3MmRhMTFhNzUxZThmOWRkM2E0NDJk
NTdiZDkxYzJiMTljNTMxM2NjLi42OWZhNjE1MTUyMDNlZWRkYjFiNzc2Y2E4NmNkNTU5ODBmMTYy
Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
CkBAIC0yOTUsNyArMjk1LDcgQEAgcHJpdmF0ZToKIAogICAgIFJldGFpblB0cjxOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nPiBfYXR0clN0cjsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlv
bmFyeT4gX2RvY3VtZW50QXR0cnM7Ci0gICAgTlNVUkwgKl9iYXNlVVJMOworICAgIFJldGFpblB0
cjxOU1VSTD4gX2Jhc2VVUkw7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfdGV4dExp
c3RzOwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX3RleHRCbG9ja3M7CiAgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfdGV4dFRhYmxlczsKQEAgLTE2MzYsNyArMTYzNiw3IEBA
IHZvaWQgSFRNTENvbnZlcnRlcjo6X2FkZExpbmtGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQs
IE5TUmFuZ2UgcmFuZ2UpCiAgICAgICAgIGlmICghdXJsKQogICAgICAgICAgICAgdXJsID0gZWxl
bWVudC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyhzdHJpcHBlZFN0cmluZykpOwogICAgICAgICBpZiAoIXVybCkKLSAgICAgICAgICAgIHVy
bCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6c3RyaXBwZWRTdHJpbmcgcmVsYXRpdmVUb1VS
TDpfYmFzZVVSTF07CisgICAgICAgICAgICB1cmwgPSBbTlNVUkwgX3dlYl9VUkxXaXRoU3RyaW5n
OnN0cmlwcGVkU3RyaW5nIHJlbGF0aXZlVG9VUkw6X2Jhc2VVUkwuZ2V0KCldOwogICAgICAgICBb
X2F0dHJTdHIgYWRkQXR0cmlidXRlOk5TTGlua0F0dHJpYnV0ZU5hbWUgdmFsdWU6dXJsID8gKGlk
KXVybCA6IChpZCl1cmxTdHJpbmcgcmFuZ2U6cmFuZ2VdOwogICAgIH0KIH0KQEAgLTE3OTUsNyAr
MTc5NSw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQsIE5TSW50ZWdlciBkZXB0aCkKICAgICAgICAgaWYgKHVybFN0cmluZyAmJiBbdXJsU3Ry
aW5nIGxlbmd0aF0gPiAwKSB7CiAgICAgICAgICAgICBOU1VSTCAqdXJsID0gZWxlbWVudC5kb2N1
bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxT
dHJpbmcpKTsKICAgICAgICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgICAgIHVybCA9IFtO
U1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6W3VybFN0cmluZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFj
dGVyc0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0ZXNwYWNlQW5kTmV3bGluZUNoYXJhY3RlclNl
dF1dIHJlbGF0aXZlVG9VUkw6X2Jhc2VVUkxdOworICAgICAgICAgICAgICAgIHVybCA9IFtOU1VS
TCBfd2ViX1VSTFdpdGhTdHJpbmc6W3VybFN0cmluZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVy
c0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0ZXNwYWNlQW5kTmV3bGluZUNoYXJhY3RlclNldF1d
IHJlbGF0aXZlVG9VUkw6X2Jhc2VVUkwuZ2V0KCldOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgICAgICBCT09MIHVzZVBsYWNlaG9sZGVySW1hZ2UgPSBOTzsKICNlbHNlCkBAIC0x
ODE1LDE0ICsxODE1LDE0IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIE5TSW50ZWdlciBkZXB0aCkKICAgICAgICAgICAgIGlmIChiYXNlU3Ry
aW5nICYmIFtiYXNlU3RyaW5nIGxlbmd0aF0gPiAwKSB7CiAgICAgICAgICAgICAgICAgYmFzZVVS
TCA9IGVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoYmFzZVN0cmluZykpOwogICAgICAgICAgICAgICAgIGlmICghYmFzZVVSTCkK
LSAgICAgICAgICAgICAgICAgICAgYmFzZVVSTCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6
W2Jhc2VTdHJpbmcgc3RyaW5nQnlUcmltbWluZ0NoYXJhY3RlcnNJblNldDpbTlNDaGFyYWN0ZXJT
ZXQgd2hpdGVzcGFjZUFuZE5ld2xpbmVDaGFyYWN0ZXJTZXRdXSByZWxhdGl2ZVRvVVJMOl9iYXNl
VVJMXTsKKyAgICAgICAgICAgICAgICAgICAgYmFzZVVSTCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhT
dHJpbmc6W2Jhc2VTdHJpbmcgc3RyaW5nQnlUcmltbWluZ0NoYXJhY3RlcnNJblNldDpbTlNDaGFy
YWN0ZXJTZXQgd2hpdGVzcGFjZUFuZE5ld2xpbmVDaGFyYWN0ZXJTZXRdXSByZWxhdGl2ZVRvVVJM
Ol9iYXNlVVJMLmdldCgpXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChiYXNlVVJM
KQogICAgICAgICAgICAgICAgIHVybCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6W3VybFN0
cmluZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVyc0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0
ZXNwYWNlQW5kTmV3bGluZUNoYXJhY3RlclNldF1dIHJlbGF0aXZlVG9VUkw6YmFzZVVSTF07CiAg
ICAgICAgICAgICBpZiAoIXVybCkKICAgICAgICAgICAgICAgICB1cmwgPSBlbGVtZW50LmRvY3Vt
ZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0
cmluZykpOwogICAgICAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICAgICAgdXJsID0gW05T
VVJMIF93ZWJfVVJMV2l0aFN0cmluZzpbdXJsU3RyaW5nIHN0cmluZ0J5VHJpbW1pbmdDaGFyYWN0
ZXJzSW5TZXQ6W05TQ2hhcmFjdGVyU2V0IHdoaXRlc3BhY2VBbmROZXdsaW5lQ2hhcmFjdGVyU2V0
XV0gcmVsYXRpdmVUb1VSTDpfYmFzZVVSTF07CisgICAgICAgICAgICAgICAgdXJsID0gW05TVVJM
IF93ZWJfVVJMV2l0aFN0cmluZzpbdXJsU3RyaW5nIHN0cmluZ0J5VHJpbW1pbmdDaGFyYWN0ZXJz
SW5TZXQ6W05TQ2hhcmFjdGVyU2V0IHdoaXRlc3BhY2VBbmROZXdsaW5lQ2hhcmFjdGVyU2V0XV0g
cmVsYXRpdmVUb1VSTDpfYmFzZVVSTC5nZXQoKV07CiAgICAgICAgICAgICBpZiAodXJsKQogICAg
ICAgICAgICAgICAgIHJldHZhbCA9ICFfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoZWxlbWVudCwg
dXJsLCBpc0Jsb2NrTGV2ZWwsIE5PKTsKICAgICAgICAgfQpAQCAtMTg5NCw3ICsxODk0LDYgQEAg
dm9pZCBIVE1MQ29udmVydGVyOjpfYWRkTWFya2Vyc1RvTGlzdChOU1RleHRMaXN0ICpsaXN0LCBO
U1JhbmdlIHJhbmdlKQogICAgIE5TRGljdGlvbmFyeSAqYXR0cnNUb0luc2VydCA9IG5pbDsKICAg
ICBQbGF0Zm9ybUZvbnQgKmZvbnQ7CiAgICAgTlNQYXJhZ3JhcGhTdHlsZSAqcGFyYWdyYXBoU3R5
bGU7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZVBhcmFncmFwaFN0eWxlPiBuZXdTdHlsZTsKICAg
ICBOU1RleHRUYWIgKnRhYiA9IG5pbDsKICAgICBOU1RleHRUYWIgKnRhYlRvUmVtb3ZlOwogICAg
IE5TUmFuZ2UgcGFyYWdyYXBoUmFuZ2U7CkBAIC0xOTMzLDcgKzE5MzIsNyBAQCB2b2lkIEhUTUxD
b252ZXJ0ZXI6Ol9hZGRNYXJrZXJzVG9MaXN0KE5TVGV4dExpc3QgKmxpc3QsIE5TUmFuZ2UgcmFu
Z2UpCiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGhSYW5nZS5sb2NhdGlvbiA8IF9k
b21SYW5nZVN0YXJ0SW5kZXgpCiAgICAgICAgICAgICAgICAgICAgICAgICBfZG9tUmFuZ2VTdGFy
dEluZGV4ICs9IGluc2VydExlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIG5ld1N0eWxlID0gYWRvcHROUyhbcGFyYWdyYXBoU3R5bGUgbXV0YWJsZUNvcHld
KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdTdHlsZSA9IGFkb3B0TlMoW3BhcmFncmFw
aFN0eWxlIG11dGFibGVDb3B5XSk7CiAgICAgICAgICAgICAgICAgICAgIGxpc3RMb2NhdGlvbiA9
IChsaXN0SW5kZXggKyAxKSAqIDM2OwogICAgICAgICAgICAgICAgICAgICBtYXJrZXJMb2NhdGlv
biA9IGxpc3RMb2NhdGlvbiAtIDI1OwogICAgICAgICAgICAgICAgICAgICBbbmV3U3R5bGUgc2V0
Rmlyc3RMaW5lSGVhZEluZGVudDowXTsKQEAgLTE5NTIsNyArMTk1MSw2IEBAIHZvaWQgSFRNTENv
bnZlcnRlcjo6X2FkZE1hcmtlcnNUb0xpc3QoTlNUZXh0TGlzdCAqbGlzdCwgTlNSYW5nZSByYW5n
ZSkKICAgICAgICAgICAgICAgICAgICAgW25ld1N0eWxlIGFkZFRhYlN0b3A6YWRvcHROUyhbW1Bs
YXRmb3JtTlNUZXh0VGFiIGFsbG9jXSBpbml0V2l0aFR5cGU6TlNMZWZ0VGFiU3RvcFR5cGUgbG9j
YXRpb246bWFya2VyTG9jYXRpb25dKS5nZXQoKV07CiAgICAgICAgICAgICAgICAgICAgIFtuZXdT
dHlsZSBhZGRUYWJTdG9wOmFkb3B0TlMoW1tQbGF0Zm9ybU5TVGV4dFRhYiBhbGxvY10gaW5pdFdp
dGhUZXh0QWxpZ25tZW50Ok5TVGV4dEFsaWdubWVudE5hdHVyYWwgbG9jYXRpb246bGlzdExvY2F0
aW9uIG9wdGlvbnM6QHsgfV0pLmdldCgpXTsKICAgICAgICAgICAgICAgICAgICAgW19hdHRyU3Ry
IGFkZEF0dHJpYnV0ZTpOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZSB2YWx1ZTpuZXdTdHls
ZS5nZXQoKSByYW5nZTpwYXJhZ3JhcGhSYW5nZV07Ci0gICAgICAgICAgICAgICAgICAgIG5ld1N0
eWxlID0gbmlsOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWR4
ID0gTlNNYXhSYW5nZShwYXJhZ3JhcGhSYW5nZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdl
ci5tbQppbmRleCA0MzgxNmY3ZmM1NTZiMTQ5MWJhNjlhYjExZjg5OWUyOGIzYjczMTg2Li4yN2I0
MjQ4YzY3OTdiMmM3ZjYyMzVlYmUxZWI0YmU2Y2MzM2Y1MTgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCkBAIC0xNDUsOSAr
MTQ1LDkgQEAgLSAodm9pZClpbml0aWFsaXplT25NYWluVGhyZWFkCiAgICAgbV9neXJvQXZhaWxh
YmxlID0gbV9tb3Rpb25NYW5hZ2VyLmdldCgpLmRldmljZU1vdGlvbkF2YWlsYWJsZTsKIAogICAg
IGlmIChtX2d5cm9BdmFpbGFibGUpCi0gICAgICAgIFttX21vdGlvbk1hbmFnZXIgc2V0RGV2aWNl
TW90aW9uVXBkYXRlSW50ZXJ2YWw6IGtNb3Rpb25VcGRhdGVJbnRlcnZhbF07CisgICAgICAgIFtt
X21vdGlvbk1hbmFnZXIgc2V0RGV2aWNlTW90aW9uVXBkYXRlSW50ZXJ2YWw6a01vdGlvblVwZGF0
ZUludGVydmFsXTsKICAgICBlbHNlCi0gICAgICAgIFttX21vdGlvbk1hbmFnZXIgc2V0QWNjZWxl
cm9tZXRlclVwZGF0ZUludGVydmFsOiBrTW90aW9uVXBkYXRlSW50ZXJ2YWxdOworICAgICAgICBb
bV9tb3Rpb25NYW5hZ2VyIHNldEFjY2VsZXJvbWV0ZXJVcGRhdGVJbnRlcnZhbDprTW90aW9uVXBk
YXRlSW50ZXJ2YWxdOwogCiAgICAgbV9sb2NhdGlvbk1hbmFnZXIgPSBhZG9wdE5TKFthbGxvY0NM
TG9jYXRpb25NYW5hZ2VySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgbV9oZWFkaW5nQXZhaWxhYmxl
ID0gW2dldENMTG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBoZWFkaW5nQXZhaWxhYmxlXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL05ldHdvcmtTdGF0ZU5v
dGlmaWVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29y
a1N0YXRlTm90aWZpZXJJT1MubW0KaW5kZXggYjhlOWIzYzc3Nzk5Y2Q2MWNmOWM1OWYwOThiNmM2
YWM0NWY2MmQwMS4uZTk3M2IwNmQzMDViZDFhMWUxYjg2ZjI0NjQyM2Y3OWZmYTFlYjU4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRl
Tm90aWZpZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
TmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0KQEAgLTU5LDExICs1OSw2IEBAIC0gKGlkKWluaXRX
aXRoQmxvY2s6KHZvaWQgKF4pKCkpb2JzZXJ2ZXJCbG9jawogICAgIHJldHVybiBzZWxmOwogfQog
Ci0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0gKHZvaWQp
bmV0d29ya1N0YXRlQ2hhbmdlZDooTlNOb3RpZmljYXRpb24gKil1bnVzZWROb3RpZmljYXRpb24K
IHsKICAgICBVTlVTRURfUEFSQU0odW51c2VkTm90aWZpY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9y
SGlnaGxpZ2h0Vmlldy5oCmluZGV4IDE4NzE5MWZmNjA0NWJkNTBmM2FmYzQzYjBjYTBiYWMzM2Vi
ZWZkNWEuLjczMDU3ZTRjZWUzZGY1OGQ2MGRmYmY2MDU3ZTQ2ODAyZWMzZTA4MGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdo
bGlnaHRWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9X
S0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaApAQCAtMjksNyArMjksNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9JbnNwZWN0b3JPdmVybGF5Lmg+CiAKIEBpbnRlcmZhY2UgV0tJbnNwZWN0b3JIaWdobGln
aHRWaWV3IDogVUlWaWV3IHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9sYXllcnM7
IC8vIENBU2hhcGVMYXllcnMuCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PENBU2hhcGVM
YXllciAqPj4gX2xheWVyczsKIH0KIC0gKHZvaWQpdXBkYXRlOihjb25zdCBXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpIaWdobGlnaHQmKWhpZ2hsaWdodDsKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCmluZGV4IGI4MmI0NTkzMjRjZDNlMWJhZTBl
ZDUxNzU2OGE5MjM3OTlhYzY0YzQuLjczNjhiZjY0MTg1NzE3ZmExZDc4YWJiMWFlY2NmZjFjNmUy
MGQ3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQpA
QCAtMjE3LDExICsyMTcsNiBAQCAtICh2b2lkKV91cGRhdGVEZWxlZ2F0ZQogICAgIH0KIH0KIAot
LSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCiBzdGF0aWMgaW5s
aW5lIGJvb2wgdmFsdWVzQXJlV2l0aGluT25lUGl4ZWwoQ0dGbG9hdCBhLCBDR0Zsb2F0IGIpCiB7
CiAgICAgcmV0dXJuIENHRkFicyhhIC0gYikgPCAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tCmluZGV4IDlmMGUyMzlmNDI1ZWI3Y2U5NTJk
ZTU0MTc2ZmMwNGYwNDBmZTFmMTQuLjg2YTZmNDY4YzQ2ZmQ4MWI4ZTAyNzc5NzNlYTJmYmVjNzIy
ZjFjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBp
Y2tlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNr
ZXJNYWMubW0KQEAgLTE0MCw3ICsxNDAsNyBAQCArIChOU1BvcG92ZXIgKilfY29sb3JQb3BvdmVy
Q3JlYXRlSWZOZWNlc3Nhcnk6KEJPT0wpZm9yY2VDcmVhdGlvbgogCiAgICAgICAgIGF1dG8gY29u
dHJvbGxlciA9IGFkb3B0TlMoW1tOU0NsYXNzRnJvbVN0cmluZyhAIk5TQ29sb3JQb3BvdmVyQ29u
dHJvbGxlciIpIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIHBvcG92ZXIuY29udGVudFZpZXdDb250
cm9sbGVyID0gY29udHJvbGxlci5nZXQoKTsKLSAgICAgICAgW2NvbnRyb2xsZXIgc2V0UG9wb3Zl
cjogcG9wb3Zlcl07CisgICAgICAgIFtjb250cm9sbGVyIHNldFBvcG92ZXI6cG9wb3Zlcl07CiAK
ICAgICAgICAgY29sb3JQb3BvdmVyID0gcG9wb3ZlcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KaW5kZXggYWEzYmVjMGQwNmM4OGNiNWM3Y2Ux
OWEzMjM4ZTk3ZGUwZGE0MGM0YS4uYmRmMGI0ODU1ZDQyOTk5NWExODA2MTdlYzY2ZWUxZWE2MjYx
ODJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpA
QCAtMTMxLDggKzEzMSw3IEBAIC0gKHZvaWQpc2V0SGFzTWFpbkZyYW1lUGx1Z2luOihib29sKWhh
c1BsdWdpbgogLSAodm9pZClzZXRSZW1vdGVQYXJlbnQ6KGlkKXBhcmVudAogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKHBhcmVudCAhPSBtX3BhcmVudCkKLSAgICAgICAg
bV9wYXJlbnQgPSBwYXJlbnQ7CisgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CiB9CiAKIC0gKGlkKWFj
Y2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCmluZGV4IDY5NmRmNWI2
OTExM2YxNTI4OTk1ZGQyZDNhMjAyN2M1NWIzNGE2M2UuLjcyNTRkMGM1YWNjNmFhMWE4NzliNjJh
ZDBhNDg4OTlmM2NlN2RiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dl
YlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCkBAIC0zMjgsMTYgKzMyOCwxNiBA
QCAtICh2b2lkKV91cGRhdGVUaXRsZUZvckRvY3VtZW50SWZBdmFpbGFibGUKICAgICBpZiAoIV9k
b2N1bWVudCB8fCAhQ0dQREZEb2N1bWVudElzVW5sb2NrZWQoX2RvY3VtZW50KSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiB0aXRsZTsKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHRpdGxlOwogCiAgICAgQ0dQREZEaWN0aW9uYXJ5UmVmIGluZm8gPSBDR1BE
RkRvY3VtZW50R2V0SW5mbyhfZG9jdW1lbnQpOwogICAgIENHUERGU3RyaW5nUmVmIHZhbHVlOwog
ICAgIGlmIChDR1BERkRpY3Rpb25hcnlHZXRTdHJpbmcoaW5mbywgIlRpdGxlIiwgJnZhbHVlKSkK
LSAgICAgICAgdGl0bGUgPSBhZG9wdE5TKChOU1N0cmluZyAqKUNHUERGU3RyaW5nQ29weVRleHRT
dHJpbmcodmFsdWUpKTsKKyAgICAgICAgdGl0bGUgPSBhZG9wdENGKENHUERGU3RyaW5nQ29weVRl
eHRTdHJpbmcodmFsdWUpKTsKIAotICAgIGlmIChbdGl0bGUgbGVuZ3RoXSkgewotICAgICAgICBb
c2VsZiBzZXRUaXRsZTp0aXRsZS5nZXQoKV07Ci0gICAgICAgIFtbc2VsZiBfZnJhbWVdIF9kaXNw
YXRjaERpZFJlY2VpdmVUaXRsZTp0aXRsZS5nZXQoKV07CisgICAgaWYgKHRpdGxlICYmIENGU3Ry
aW5nR2V0TGVuZ3RoKHRpdGxlLmdldCgpKSkgeworICAgICAgICBbc2VsZiBzZXRUaXRsZTooTlNT
dHJpbmcgKil0aXRsZS5nZXQoKV07CisgICAgICAgIFtbc2VsZiBfZnJhbWVdIF9kaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZTooTlNTdHJpbmcgKil0aXRsZS5nZXQoKV07CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRl
eCA4Y2FmNzU4YjhhNjUwZThiZmMzOGU3MTBkZTQ3ZjUyYThjODE1NGYxLi4wOWRkZWYzYTc3MDIw
NDYyM2VkNDBkNjY4NDU3OTA1YjZjYjU1ZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTE4MiwxMCArMTgyLDggQEAgLSAo
TlNBcnJheSAqKWFic29sdXRlUXVhZHMKICAgICAgICAgICAgIHF1YWRzID0gW3NlbGYgbGluZUJv
eFF1YWRzXTsKICAgICB9CiAKLSAgICBpZiAoIVtxdWFkcyBjb3VudF0pIHsKLSAgICAgICAgYXV0
byBxdWFkT2JqZWN0ID0gYWRvcHROUyhbW1dLUXVhZE9iamVjdCBhbGxvY10gaW5pdFdpdGhRdWFk
OltzZWxmIGFic29sdXRlUXVhZF1dKTsKLSAgICAgICAgcXVhZHMgPSBAW3F1YWRPYmplY3QuZ2V0
KCldOwotICAgIH0KKyAgICBpZiAoIVtxdWFkcyBjb3VudF0pCisgICAgICAgIHF1YWRzID0gQFth
ZG9wdE5TKFtbV0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVR
dWFkXV0pLmdldCgpXTsKIAogICAgIHJldHVybiBxdWFkczsKIH0KQEAgLTM1OSw5ICszNTcsNyBA
QCAtIChOU0FycmF5ICopYm91bmRpbmdCb3hlc1dpdGhPd25lcjooRE9NTm9kZSAqKW93bmVyCiAK
IC0gKE5TQXJyYXkgKilhYnNvbHV0ZVF1YWRzV2l0aE93bmVyOihET01Ob2RlICopb3duZXIKIHsK
LSAgICBhdXRvIHF1YWRPYmplY3QgPSBhZG9wdE5TKFtbV0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0
V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkV2l0aE93bmVyOm93bmVyXV0pOwotICAgIE5TQXJy
YXkgKnF1YWRBcnJheSA9IEBbcXVhZE9iamVjdC5nZXQoKV07Ci0gICAgcmV0dXJuIHF1YWRBcnJh
eTsKKyAgICByZXR1cm4gQFthZG9wdE5TKFtbV0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1
YWQ6W3NlbGYgYWJzb2x1dGVRdWFkV2l0aE93bmVyOm93bmVyXV0pLmdldCgpXTsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRs
ZXJzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1t
CmluZGV4IDc5ZDdjMDAzNmYwODA4YzAyMWNiMTFmZTdlNTUzN2RjYWUyNGIwZmIuLjljZjdlOWJk
NjRiZmY4NjBiMDRiMWRjYmYyMTRjNGRhMDIwODdkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMubW0KQEAgLTQ4LDkgKzQ4LDggQEAgc3Rh
dGljIE5PX1JFVFVSTiB2b2lkIHJhaXNlRE9NRXJyb3JFeGNlcHRpb24oV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYykKICAgICBlbHNlCiAgICAgICAgIHJlYXNvbiA9IGFkb3B0TlMoW1tOU1N0cmlu
ZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIqKiogJUAgJWQiLCBET01FeGNlcHRpb24sIGRlc2Ny
aXB0aW9uLmxlZ2FjeUNvZGVdKTsKIAotICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOkAoZGVzY3JpcHRpb24ubGVn
YWN5Q29kZSksIERPTUV4Y2VwdGlvbiwgbmlsXSk7Ci0KLSAgICBOU0V4Y2VwdGlvbiAqZXhjZXB0
aW9uID0gW05TRXhjZXB0aW9uIGV4Y2VwdGlvbldpdGhOYW1lOkRPTUV4Y2VwdGlvbiByZWFzb246
cmVhc29uLmdldCgpIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXTsKKyAgICBhdXRvIHVzZXJJbmZv
ID0gQHsgRE9NRXhjZXB0aW9uOiBAKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUpIH07CisgICAgYXV0
byBleGNlcHRpb24gPSBbTlNFeGNlcHRpb24gZXhjZXB0aW9uV2l0aE5hbWU6RE9NRXhjZXB0aW9u
IHJlYXNvbjpyZWFzb24uZ2V0KCkgdXNlckluZm86dXNlckluZm9dOwogICAgIFtleGNlcHRpb24g
cmFpc2VdOwogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVm
YXVsdFVJRGVsZWdhdGUuaAppbmRleCBlN2Q3NmRhNTYxODdiNGJlMWJiZjFhZDE2NjVmZTQ2OWU5
ZTc2NGM3Li5iYzcwNzJiZTA2M2YyMjQ4MTcwZTQyYTUxOGZlMGVmM2QyN2U4MGNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRV
SURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRl
cy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIEBpbnRlcmZhY2Ug
V2ViRGVmYXVsdFVJRGVsZWdhdGUgOiBOU09iamVjdCA8V2ViVUlEZWxlZ2F0ZT4KIHsKLSNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAgICAgSUJPdXRsZXQgTlNN
ZW51ICpkZWZhdWx0TWVudTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUu
bW0KaW5kZXggMGY1ODhkMjAxZmI4NjNkNGM1MzQ2NjNlYTk1NDExMmRiNGY3ZWVjZC4uZGJlY2Vk
NTY0OTY3YmZmMWNlNThlMmQ0ZjkwMGRmNGFhNjQyZTI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRV
SURlbGVnYXRlLm1tCkBAIC0zMyw3ICszMyw3IEBACiAjaW1wb3J0ICJXZWJWaWV3LmgiCiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQ
TEFURk9STShNQUMpCiAjaW1wb3J0ICJXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwuaCIKICNp
bXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNoZWNrcy5oPgogI2VuZGlmCkBAIC00Myw3ICs0Myw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1dLVmlld1ByaXZhdGUuaD4KICNlbmRpZgogCi0jaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oTUFDKQogQGludGVyZmFjZSBOU0FwcGxpY2F0
aW9uIChEZWNsYXJhdGlvblN0b2xlbkZyb21BcHBLaXQpCiAtICh2b2lkKV9jeWNsZVdpbmRvd3NS
ZXZlcnNlZDooQk9PTClyZXZlcnNlZDsKIEBlbmQKQEAgLTg3LDIxICs4NywyMSBAQCAtICh2b2lk
KXdlYlZpZXdTaG93OiAoV2ViVmlldyAqKXd2CiAKIC0gKHZvaWQpd2ViVmlld0Nsb3NlOiAoV2Vi
VmlldyAqKXd2CiB7Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oTUFD
KQogICAgIFtbd3Ygd2luZG93XSBjbG9zZV07CiAjZW5kaWYKIH0KIAogLSAodm9pZCl3ZWJWaWV3
Rm9jdXM6IChXZWJWaWV3ICopd3YKIHsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQ
TEFURk9STShNQUMpCiAgICAgW1t3diB3aW5kb3ddIG1ha2VLZXlBbmRPcmRlckZyb250Ond2XTsK
ICNlbmRpZgogfQogCiAtICh2b2lkKXdlYlZpZXdVbmZvY3VzOiAoV2ViVmlldyAqKXd2CiB7Ci0j
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChbW3d2
IHdpbmRvd10gaXNLZXlXaW5kb3ddIHx8IFtbW3d2IHdpbmRvd10gYXR0YWNoZWRTaGVldF0gaXNL
ZXlXaW5kb3ddKQogICAgICAgICBbTlNBcHAgX2N5Y2xlV2luZG93c1JldmVyc2VkOkZBTFNFXTsK
ICNlbmRpZgpAQCAtMTU5LDcgKzE1OSw3IEBAIC0gKEJPT0wpd2ViVmlld0lzUmVzaXphYmxlOiAo
V2ViVmlldyAqKXd2CiAKIC0gKHZvaWQpd2ViVmlldzogKFdlYlZpZXcgKil3diBzZXRSZXNpemFi
bGU6KEJPT0wpcmVzaXphYmxlCiB7Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExB
VEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY2hhbmdlIHRo
ZSByZXNpemFiaWxpdHkgb2YgdGhlIHdpbmRvdywKICAgICAvLyBvbmx5IHZpc2liaWxpdHkgb2Yg
dGhlIGluZGljYXRvci4KICAgICBbW3d2IHdpbmRvd10gc2V0U2hvd3NSZXNpemVJbmRpY2F0b3I6
cmVzaXphYmxlXTsKQEAgLTE2OCw3ICsxNjgsNyBAQCAtICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3
ICopd3Ygc2V0UmVzaXphYmxlOihCT09MKXJlc2l6YWJsZQogCiAtICh2b2lkKXdlYlZpZXc6IChX
ZWJWaWV3ICopd3Ygc2V0RnJhbWU6KE5TUmVjdClmcmFtZQogewotI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICBbW3d2IHdpbmRvd10gc2V0RnJhbWU6ZnJh
bWUgZGlzcGxheTpZRVNdOwogI2VuZGlmCiB9CkBAIC0xOTIsNyArMTkyLDcgQEAgLSAoQk9PTCl3
ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2Fn
ZTooTlNTdHJpbmcgKikKIAogLSAoTlNTdHJpbmcgKil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1
bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6KE5TU3RyaW5nICopcHJvbXB0IGRl
ZmF1bHRUZXh0OihOU1N0cmluZyAqKWRlZmF1bHRUZXh0IGluaXRpYXRlZEJ5RnJhbWU6KFdlYkZy
YW1lICopZnJhbWUKIHsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShN
QUMpCiAgICAgYXV0byBwYW5lbCA9IGFkb3B0TlMoW1tXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFu
ZWwgYWxsb2NdIGluaXRXaXRoUHJvbXB0OnByb21wdCB0ZXh0OmRlZmF1bHRUZXh0XSk7CiAgICAg
W3BhbmVsIHNob3dXaW5kb3c6bmlsXTsKICAgICBOU1N0cmluZyAqcmVzdWx0OwpAQCAtMjE2LDcg
KzIxNiw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBwcmludEZyYW1lVmll
dzooV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3CiB7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAtIChOU1VJbnRlZ2VyKXdlYlZpZXc6KFdlYlZpZXcg
Kil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86KGlkIDxO
U0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7CiAgICAgaWYgKCFsaW5rZWRPbk9yQWZ0ZXIo
V2ViQ29yZTo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRHJvcFRvTmF2aWdhdGVEaXNhbGxvd2VkQnlE
ZWZhdWx0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5t
bQppbmRleCA5YmYzMDIwYWEzMjZlOTY1OTU5ZDY0YzZmODAwZDE2NTI1OWEwYmNjLi45YTY2Njgz
ZjZlMzJjNDQ4NjA5OWNlNWM5NTdiOWMwNzJjOWNmNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCkBAIC0xMzcsMTEgKzEzNyw2IEBAIC0gKGlk
KWluaXQKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3N1
cGVyIGRlYWxsb2NdOwotfQotCiAvLyBNQVJLOiBNT0RJRllJTkcgQ09OVEVOVFMKIAogc3RhdGlj
IHZvaWQgZ2V0RGF5Qm91bmRhcmllcyhOU1RpbWVJbnRlcnZhbCBpbnRlcnZhbCwgTlNUaW1lSW50
ZXJ2YWwmIGJlZ2lubmluZ09mRGF5LCBOU1RpbWVJbnRlcnZhbCYgYmVnaW5uaW5nT2ZOZXh0RGF5
KQpAQCAtMjg2LDcgKzI4MSw3IEBAIC0gKFdlYkhpc3RvcnlJdGVtICopdmlzaXRlZFVSTDooTlNV
UkwgKil1cmwgd2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlCiAgICAgTlNTdHJpbmcgKlVSTFN0
cmluZyA9IFt1cmwgX3dlYl9vcmlnaW5hbERhdGFBc1N0cmluZ107CiAgICAgaWYgKCFVUkxTdHJp
bmcpCiAgICAgICAgIFVSTFN0cmluZyA9IEAiIjsKLSAgICBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0
ZW0+IGVudHJ5ID0gW19lbnRyaWVzQnlVUkwgb2JqZWN0Rm9yS2V5OlVSTFN0cmluZ107CisgICAg
YXV0byBlbnRyeSA9IHJldGFpblB0cihbX2VudHJpZXNCeVVSTCBvYmplY3RGb3JLZXk6VVJMU3Ry
aW5nXSk7CiAKICAgICBpZiAoZW50cnkpIHsKICAgICAgICAgTE9HKEhpc3RvcnksICJVcGRhdGlu
ZyBnbG9iYWwgaGlzdG9yeSBlbnRyeSAlQCIsIGVudHJ5LmdldCgpKTsKQEAgLTMwNCw3ICsyOTks
NyBAQCAtIChXZWJIaXN0b3J5SXRlbSAqKXZpc2l0ZWRVUkw6KE5TVVJMICopdXJsIHdpdGhUaXRs
ZTooTlNTdHJpbmcgKil0aXRsZQogICAgIAogICAgIFtzZWxmIGFkZEl0ZW1Ub0RhdGVDYWNoZXM6
ZW50cnkuZ2V0KCldOwogCi0gICAgcmV0dXJuIGVudHJ5LmdldCgpOworICAgIHJldHVybiBlbnRy
eS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChCT09MKWFkZEl0ZW06KFdlYkhpc3RvcnlJdGVtICop
ZW50cnkgZGlzY2FyZER1cGxpY2F0ZTooQk9PTClkaXNjYXJkRHVwbGljYXRlCkBAIC04NTksOCAr
ODU0LDcgQEAgLSAodm9pZClfdmlzaXRlZFVSTDooTlNVUkwgKil1cmwgd2l0aFRpdGxlOihOU1N0
cmluZyAqKXRpdGxlIG1ldGhvZDooTlNTdHJpbmcgKikKIAogICAgIGVudHJ5LT5fcHJpdmF0ZS0+
X3JlZGlyZWN0VVJMcyA9IG51bGxwdHI7CiAKLSAgICBhdXRvIGVudHJpZXMgPSBhZG9wdE5TKFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOmVudHJ5LCBuaWxdKTsKLSAgICBbc2VsZiBf
c2VuZE5vdGlmaWNhdGlvbjpXZWJIaXN0b3J5SXRlbXNBZGRlZE5vdGlmaWNhdGlvbiBlbnRyaWVz
OmVudHJpZXMuZ2V0KCldOworICAgIFtzZWxmIF9zZW5kTm90aWZpY2F0aW9uOldlYkhpc3RvcnlJ
dGVtc0FkZGVkTm90aWZpY2F0aW9uIGVudHJpZXM6QFtlbnRyeV1dOwogfQogCiAtICh2b2lkKV9h
ZGRWaXNpdGVkTGlua3NUb1Zpc2l0ZWRMaW5rU3RvcmU6KFdlYlZpc2l0ZWRMaW5rU3RvcmUgJil2
aXNpdGVkTGlua1N0b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9X
ZWJIaXN0b3J5SXRlbS5tbQppbmRleCBjYjE2Y2Q3NTIyZjBiYTk2YWNhMTUwMWZiNDY5NWU4NDRk
NDcxNzZiLi5iNDM2OGUyZWRlMWU4ZWY1YmRlN2Q4ODUwYzFiNzZlMWZjNDVjZmVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAg
LTM1MCwxMSArMzUwLDkgQEAgLSAoaWQpaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246
KE5TRGljdGlvbmFyeSAqKWRpY3QKICAgICAgICAgX3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBt
YWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PihtYWtlVmVjdG9yPFN0cmluZz4ocmVkaXJlY3RVUkxz
KSk7CiAKICAgICBOU0FycmF5ICpjaGlsZERpY3RzID0gW2RpY3Qgb2JqZWN0Rm9yS2V5OmNoaWxk
cmVuS2V5XTsKLSAgICBpZiAoY2hpbGREaWN0cykgewotICAgICAgICBmb3IgKGludCBpID0gW2No
aWxkRGljdHMgY291bnRdIC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgICAgIGF1dG8gY2hp
bGQgPSBhZG9wdE5TKFtbV2ViSGlzdG9yeUl0ZW0gYWxsb2NdIGluaXRGcm9tRGljdGlvbmFyeVJl
cHJlc2VudGF0aW9uOltjaGlsZERpY3RzIG9iamVjdEF0SW5kZXg6aV1dKTsKLSAgICAgICAgICAg
IGNvcmUoX3ByaXZhdGUpLT5hZGRDaGlsZEl0ZW0oKmNvcmUoY2hpbGQtPl9wcml2YXRlKSk7Ci0g
ICAgICAgIH0KKyAgICBmb3IgKGlkIGNoaWxkRGljdCBpbiBbY2hpbGREaWN0cyByZXZlcnNlT2Jq
ZWN0RW51bWVyYXRvcl0pIHsKKyAgICAgICAgYXV0byBjaGlsZCA9IGFkb3B0TlMoW1tXZWJIaXN0
b3J5SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246Y2hpbGREaWN0
XSk7CisgICAgICAgIGNvcmUoX3ByaXZhdGUpLT5hZGRDaGlsZEl0ZW0oKmNvcmUoY2hpbGQtPl9w
cml2YXRlKSk7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNEYXRhRXh0cmFzLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KaW5kZXggMGRkZTI4N2My
ZjA0Yzk2MDk2NDE0OGRkZmIyYzMzNDM4MmU1MTc5Ny4uODJhZTFkYjVlNWY3NGUyNGVlNjk3YjFh
OGZjMDVjNWM0NjUxYmM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU0RhdGFFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJOU0RhdGFFeHRyYXMubW0KQEAgLTMzMiwxMCArMzMyLDggQEAgLSAoTlNNdXRhYmxlRGljdGlv
bmFyeSAqKV93ZWJraXRfcGFyc2VSRkM4MjJIZWFkZXJGaWVsZHMKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhdXRvIHZhbHVlID0gYWRvcHRO
UyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmNvbG9uIGxlbmd0aDplb2wgLSBjb2xv
biBlbmNvZGluZzpOU0lTT0xhdGluMVN0cmluZ0VuY29kaW5nXSk7Ci0gICAgICAgICAgICBpZiAo
TlNTdHJpbmcgKm9sZFZhbHVlID0gW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6bGFzdEtleV0p
IHsKLSAgICAgICAgICAgICAgICBhdXRvIG5ld1ZhbHVlID0gW1tOU1N0cmluZyBhbGxvY10gaW5p
dFdpdGhGb3JtYXQ6QCIlQCwgJUAiLCBvbGRWYWx1ZSwgdmFsdWUuZ2V0KCldOwotICAgICAgICAg
ICAgICAgIHZhbHVlID0gV1RGTW92ZShuZXdWYWx1ZSk7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoTlNTdHJpbmcgKm9sZFZhbHVlID0gW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6
bGFzdEtleV0pCisgICAgICAgICAgICAgICAgdmFsdWUgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoRm9ybWF0OkAiJUAsICVAIiwgb2xkVmFsdWUsIHZhbHVlLmdldCgpXSk7CiAg
ICAgICAgICAgICBbaGVhZGVyRmllbGRzIHNldE9iamVjdDp2YWx1ZS5nZXQoKSBmb3JLZXk6bGFz
dEtleV07CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCmluZGV4IDRhZTBjNzkwZTNiMDJjZmZh
YTI0OWFmMzNhNzdhNGRiZmJmNzJmNWIuLmQ5NjBkMThjYzBlZDJlZWNkMGY5MGM4NDVhZTA1Y2Q3
NGVmYmQ3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQ
YXN0ZWJvYXJkRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
TlNQYXN0ZWJvYXJkRXh0cmFzLm1tCkBAIC0zMTUsOCArMzE1LDcgQEAgLSAoaWQpX3dlYl9kZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudAogICAg
IGlmIChjdXN0b21EYXRhQnVmZmVyKQogICAgICAgICBbc2VsZiBzZXREYXRhOmN1c3RvbURhdGFC
dWZmZXIuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSld
OwogCi0gICAgYXV0byBleHRlbnNpb25zID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0czpleHRlbnNpb24sIG5pbF0pOwotICAgIFtzZWxmIHNldFByb3BlcnR5TGlzdDpl
eHRlbnNpb25zLmdldCgpIGZvclR5cGU6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUo
KV07CisgICAgW3NlbGYgc2V0UHJvcGVydHlMaXN0OkBbZXh0ZW5zaW9uXSBmb3JUeXBlOmxlZ2Fj
eUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldOwogCiAgICAgcmV0dXJuIHNvdXJjZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSG9zdE1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCmluZGV4IGJiZWE3ZWE2MjYyYzJm
NDBlM2Y0M2Y2ZGRjYjYyNzJlZTBlMzI0ZDQuLmY2MzkzZjg5YmZiYTRmNjlmZDAzOGYyMTU2NWVm
MTdkMDJmYmYzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpAQCAt
MTcyLDEyICsxNzIsMTEgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpzcGF3blBs
dWdpbkhvc3QoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjcHVfdHkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCB0
aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbWyhOU1N0cmluZyopcGx1Z2luUGF0aCBsYXN0UGF0aENvbXBv
bmVudF0gc3RyaW5nQnlEZWxldGluZ1BhdGhFeHRlbnNpb25dLCBbW05TUHJvY2Vzc0luZm8gcHJv
Y2Vzc0luZm9dIHByb2Nlc3NOYW1lXV07CiAgICAgCi0gICAgYXV0byBob3N0UHJvcGVydGllcyA9
IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlTmFtZSwgQCJ2aXNpYmxl
TmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTlNTdHJpbmcgKilw
bHVnaW5QYXRoLCBAImJ1bmRsZVBhdGgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmlsXSk7Ci0gICAgCi0gICAgZGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRp
b24gZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6aG9zdFByb3BlcnRpZXMuZ2V0KCkgZm9ybWF0Ok5TUHJv
cGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOk5VTExdOworICAgIGF1
dG8gaG9zdFByb3BlcnRpZXMgPSBAeworICAgICAgICBAInZpc2libGVOYW1lIjogdmlzaWJsZU5h
bWUsCisgICAgICAgIEAiYnVuZGxlUGF0aCI6IChOU1N0cmluZyAqKXBsdWdpblBhdGgsCisgICAg
fTsKKyAgICBkYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3Bl
cnR5TGlzdDpob3N0UHJvcGVydGllcyBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRf
djFfMCBvcHRpb25zOjAgZXJyb3I6TlVMTF07CiAgICAgQVNTRVJUKGRhdGEpOwogCiAgICAgUHJv
Y2Vzc1NlcmlhbE51bWJlciBwc247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW0KaW5kZXggNTFjNTllYzg0OGE3NDAxOWVmZTRkNDA4OGVjN2VjMjFkZjU4NjUyMy4uNGI2
Y2E3MGM0ZDFhNWMyN2E3N2YxYjIyM2JmODgwMWUxYWFmMDBkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNjUxLDEwICs2NTEsOSBAQCB2b2lkIE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcGx1
Z2luUmVxdWVzdCkKICAgICAgICAgZnJhbWUgPSBraXQoY29yZShbbV9wbHVnaW5WaWV3IHdlYkZy
YW1lXSktPmxvYWRlcigpLmZpbmRGcmFtZUZvck5hdmlnYXRpb24oZnJhbWVOYW1lKSk7CiAgICAg
ICAgIGlmICghZnJhbWUpIHsKICAgICAgICAgICAgIFdlYlZpZXcgKmN1cnJlbnRXZWJWaWV3ID0g
W21fcGx1Z2luVmlldyB3ZWJWaWV3XTsKLSAgICAgICAgICAgIGF1dG8gZmVhdHVyZXMgPSBhZG9w
dE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBXZWJWaWV3ICpu
ZXdXZWJWaWV3ID0gW1tjdXJyZW50V2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmll
dzpjdXJyZW50V2ViVmlldwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6bmlsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aW5kb3dGZWF0dXJlczpmZWF0dXJlcy5nZXQoKV07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0ZlYXR1cmVzOkB7IH1dOwogCiAg
ICAgICAgICAgICBpZiAoIW5ld1dlYlZpZXcpIHsKICAgICAgICAgICAgICAgICBfV0tQSExvYWRV
UkxOb3RpZnkobV9wbHVnaW5Ib3N0UHJveHktPnBvcnQoKSwgbV9wbHVnaW5JRCwgcGx1Z2luUmVx
dWVzdC0+cmVxdWVzdElEKCksIE5QRVJSX0dFTkVSSUNfRVJST1IpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
CmluZGV4IGQ3OTQwNzEyMzJlMjJlODM0NDFjNWY4YmUzODBiNDhmOWFlZWY0YmMuLmZmODYzMDg2
OWFlZTgzMzBmNzBhODdhODAwZjM1Mjc2Y2Y5Nzc4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAg
LTI1MywzNiArMjUzLDI0IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZy
YW1lJiBmcmFtZSwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzCiAjZW5kaWYKICAgICAK
ICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpj
cmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6d2luZG93RmVhdHVyZXM6KV0pIHsKLSAgICAgICAgYXV0
byB4ID0gZmVhdHVyZXMueCA/IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhGbG9h
dDoqZmVhdHVyZXMueF0pIDogbmlsOwotICAgICAgICBhdXRvIHkgPSBmZWF0dXJlcy55ID8gYWRv
cHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEZsb2F0OipmZWF0dXJlcy55XSkgOiBuaWw7
Ci0gICAgICAgIGF1dG8gd2lkdGggPSBmZWF0dXJlcy53aWR0aCA/IGFkb3B0TlMoW1tOU051bWJl
ciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMud2lkdGhdKSA6IG5pbDsKLSAgICAgICAg
YXV0byBoZWlnaHQgPSBmZWF0dXJlcy5oZWlnaHQgPyBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2Nd
IGluaXRXaXRoRmxvYXQ6KmZlYXR1cmVzLmhlaWdodF0pIDogbmlsOwotICAgICAgICBhdXRvIG1l
bnVCYXJWaXNpYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVh
dHVyZXMubWVudUJhclZpc2libGVdKTsKLSAgICAgICAgYXV0byBzdGF0dXNCYXJWaXNpYmxlID0g
YWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMuc3RhdHVzQmFy
VmlzaWJsZV0pOwotICAgICAgICBhdXRvIHRvb2xCYXJWaXNpYmxlID0gYWRvcHROUyhbW05TTnVt
YmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMudG9vbEJhclZpc2libGVdKTsKLSAgICAg
ICAgYXV0byBzY3JvbGxiYXJzVmlzaWJsZSA9IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5p
dFdpdGhCb29sOmZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlXSk7Ci0gICAgICAgIGF1dG8gcmVz
aXphYmxlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMu
cmVzaXphYmxlXSk7Ci0gICAgICAgIGF1dG8gZnVsbHNjcmVlbiA9IGFkb3B0TlMoW1tOU051bWJl
ciBhbGxvY10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLmZ1bGxzY3JlZW5dKTsKLSAgICAgICAgYXV0
byBkaWFsb2cgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJl
cy5kaWFsb2ddKTsKLSAgICAgICAgCiAgICAgICAgIGF1dG8gZGljdEZlYXR1cmVzID0gYWRvcHRO
UyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51QmFyVmlzaWJs
ZS5nZXQoKSwgQCJtZW51QmFyVmlzaWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0dXNCYXJWaXNpYmxlLmdldCgpLCBAInN0YXR1c0JhclZpc2li
bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbEJh
clZpc2libGUuZ2V0KCksIEAidG9vbEJhclZpc2libGUiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYmFyc1Zpc2libGUuZ2V0KCksIEAic2Nyb2xs
YmFyc1Zpc2libGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzaXphYmxlLmdldCgpLCBAInJlc2l6YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuLmdldCgpLCBAImZ1bGxzY3JlZW4iLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nLmdldCgp
LCBAImRpYWxvZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBAKGZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlKSwgQCJtZW51QmFyVmlzaWJsZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAKGZlYXR1cmVzLnN0YXR1c0Jh
clZpc2libGUpLCBAInN0YXR1c0JhclZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQChmZWF0dXJlcy50b29sQmFyVmlzaWJsZSksIEAidG9vbEJh
clZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QChmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSksIEAic2Nyb2xsYmFyc1Zpc2libGUiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQChmZWF0dXJlcy5yZXNp
emFibGUpLCBAInJlc2l6YWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBAKGZlYXR1cmVzLmZ1bGxzY3JlZW4pLCBAImZ1bGxzY3JlZW4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQChmZWF0dXJlcy5kaWFsb2cp
LCBAImRpYWxvZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuaWxdKTsKICAgICAgICAgCi0gICAgICAgIGlmICh4KQotICAgICAgICAgICAgW2RpY3RGZWF0
dXJlcyBzZXRPYmplY3Q6eC5nZXQoKSBmb3JLZXk6QCJ4Il07Ci0gICAgICAgIGlmICh5KQotICAg
ICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6eS5nZXQoKSBmb3JLZXk6QCJ5Il07Ci0g
ICAgICAgIGlmICh3aWR0aCkKLSAgICAgICAgICAgIFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0Ondp
ZHRoLmdldCgpIGZvcktleTpAIndpZHRoIl07Ci0gICAgICAgIGlmIChoZWlnaHQpCi0gICAgICAg
ICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDpoZWlnaHQuZ2V0KCkgZm9yS2V5OkAiaGVpZ2h0
Il07CisgICAgICAgIGlmIChmZWF0dXJlcy54KQorICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBz
ZXRPYmplY3Q6QCgqZmVhdHVyZXMueCkgZm9yS2V5OkAieCJdOworICAgICAgICBpZiAoZmVhdHVy
ZXMueSkKKyAgICAgICAgICAgIFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0OkAoKmZlYXR1cmVzLnkp
IGZvcktleTpAInkiXTsKKyAgICAgICAgaWYgKGZlYXR1cmVzLndpZHRoKQorICAgICAgICAgICAg
W2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6QCgqZmVhdHVyZXMud2lkdGgpIGZvcktleTpAIndpZHRo
Il07CisgICAgICAgIGlmIChmZWF0dXJlcy5oZWlnaHQpCisgICAgICAgICAgICBbZGljdEZlYXR1
cmVzIHNldE9iamVjdDpAKCpmZWF0dXJlcy5oZWlnaHQpIGZvcktleTpAImhlaWdodCJdOwogICAg
ICAgICAKICAgICAgICAgbmV3V2ViVmlldyA9IENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNl
bGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OndpbmRvd0ZlYXR1cmVzOiks
IG5pbCwgZGljdEZlYXR1cmVzLmdldCgpKTsKICAgICB9IGVsc2UgaWYgKGZlYXR1cmVzLmRpYWxv
ZyAmJiBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0
ZVdlYlZpZXdNb2RhbERpYWxvZ1dpdGhSZXF1ZXN0OildKSB7CkBAIC00NTAsMjIgKzQzOCwyMiBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldgogICAgIH0KIAogICAgIE5TU3RyaW5nICptZXNzYWdl
U291cmNlID0gc3RyaW5nRm9yTWVzc2FnZVNvdXJjZShzb3VyY2UpOwotICAgIGF1dG8gZGljdGlv
bmFyeSA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtl
eXM6Ci0gICAgICAgIChOU1N0cmluZyAqKW1lc3NhZ2UsIEAibWVzc2FnZSIsCi0gICAgICAgIEAo
bGluZU51bWJlciksIEAibGluZU51bWJlciIsCi0gICAgICAgIEAoY29sdW1uTnVtYmVyKSwgQCJj
b2x1bW5OdW1iZXIiLAotICAgICAgICAoTlNTdHJpbmcgKilzb3VyY2VVUkwsIEAic291cmNlVVJM
IiwKLSAgICAgICAgbWVzc2FnZVNvdXJjZSwgQCJNZXNzYWdlU291cmNlIiwKLSAgICAgICAgc3Ry
aW5nRm9yTWVzc2FnZUxldmVsKGxldmVsKSwgQCJNZXNzYWdlTGV2ZWwiLAotICAgICAgICBOVUxM
XSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gQHsKKyAgICAgICAgQCJtZXNzYWdlIjogKE5TU3Ry
aW5nICopbWVzc2FnZSwKKyAgICAgICAgQCJsaW5lTnVtYmVyIjogQChsaW5lTnVtYmVyKSwKKyAg
ICAgICAgQCJjb2x1bW5OdW1iZXIiOiBAKGNvbHVtbk51bWJlciksCisgICAgICAgIEAic291cmNl
VVJMIjogKE5TU3RyaW5nICopc291cmNlVVJMLAorICAgICAgICBAIk1lc3NhZ2VTb3VyY2UiOiBt
ZXNzYWdlU291cmNlLAorICAgICAgICBAIk1lc3NhZ2VMZXZlbCI6IHN0cmluZ0Zvck1lc3NhZ2VM
ZXZlbChsZXZlbCksCisgICAgfTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW1tb
bV93ZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSBhc3luY0ZvcndhcmRlcl0gd2ViVmll
dzptX3dlYlZpZXcgYWRkTWVzc2FnZVRvQ29uc29sZTpkaWN0aW9uYXJ5LmdldCgpIHdpdGhTb3Vy
Y2U6bWVzc2FnZVNvdXJjZV07CisgICAgW1tbbV93ZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2Fy
ZGVyXSBhc3luY0ZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgYWRkTWVzc2FnZVRvQ29uc29s
ZTpkaWN0aW9uYXJ5IHdpdGhTb3VyY2U6bWVzc2FnZVNvdXJjZV07CiAjZWxzZQogICAgIGlmIChy
ZXNwb25kc1RvTmV3U2VsZWN0b3IpCi0gICAgICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywg
c2VsZWN0b3IsIGRpY3Rpb25hcnkuZ2V0KCksIG1lc3NhZ2VTb3VyY2UpOworICAgICAgICBDYWxs
VUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCBkaWN0aW9uYXJ5LCBtZXNzYWdlU291cmNl
KTsKICAgICBlbHNlCi0gICAgICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3Is
IGRpY3Rpb25hcnkuZ2V0KCkpOworICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNl
bGVjdG9yLCBkaWN0aW9uYXJ5KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXgg
MGExNjQ5YzBhODIzYTU5MDhhMzMzMDI2M2QyN2VjMDc0ODFkOWNiYy4uYWM3ZDE2NDhjYjgyOTRi
Nzg0NmNhZjA1MmQ1NzQ5MmI0ZTIyYTRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDU0LDkg
KzQ1NCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXNGb3JBdHRyaWJ1dGVkU3Ry
aW5nQ29udmVyc2lvbigpCiAgICAgICAgIFtleGNsdWRlZEVsZW1lbnRzIGFkZE9iamVjdDpAIm9i
amVjdCJdOwogI2VuZGlmCiAKLSAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBAeyBOU0V4
Y2x1ZGVkRWxlbWVudHNEb2N1bWVudEF0dHJpYnV0ZTogZXhjbHVkZWRFbGVtZW50cy5nZXQoKSB9
OwotCi0gICAgcmV0dXJuIGRpY3Rpb25hcnk7CisgICAgcmV0dXJuIEB7IE5TRXhjbHVkZWRFbGVt
ZW50c0RvY3VtZW50QXR0cmlidXRlOiBleGNsdWRlZEVsZW1lbnRzLmdldCgpIH07CiB9CiAKIHZv
aWQgX1dlYkNyZWF0ZUZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVudCwgTlNBdHRyaWJ1dGVkU3Ry
aW5nICpzdHJpbmcsIEZyYWdtZW50QW5kUmVzb3VyY2VzJiByZXN1bHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCmluZGV4IGIzYWNjMTVkNTMyZjQxMzFkOTJmODZiZjFmMjVlMGQxMjQyOThh
NDcuLmI5OWY5ZjE1NzdiYzE2ZDk5MThjYzQxYjQ3NzVkMjJmYWU5MzY0ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xNTY1LDggKzE1NjUsNyBAQCBOU0RpY3Rpb25hcnkgKldl
YkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BYwogCiAgICAgaWYgKGF1dG8gbW91c2VFdmVudERhdGEgPSBhY3Rpb24ubW91c2VFdmVu
dERhdGEoKSkgewogICAgICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpS
ZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29u
dGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKLSAgICAgICAg
YXV0byBlbGVtZW50ID0gYWRvcHROUyhbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXQotICAg
ICAgICAgICAgaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2
ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnREYXRhLT5hYnNvbHV0
ZUxvY2F0aW9uLCBoaXRUeXBlKV0pOworICAgICAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdE5TKFtb
V2ViRWxlbWVudERpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpjb3JlKG1f
d2ViRnJhbWUuZ2V0KCkpLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3Vz
ZUV2ZW50RGF0YS0+YWJzb2x1dGVMb2NhdGlvbiwgaGl0VHlwZSldKTsKICAgICAgICAgW3Jlc3Vs
dCBzZXRPYmplY3Q6ZWxlbWVudC5nZXQoKSBmb3JLZXk6V2ViQWN0aW9uRWxlbWVudEtleV07CiAK
ICAgICAgICAgaWYgKG1vdXNlRXZlbnREYXRhLT5pc1RydXN0ZWQpCkBAIC0xNjA5LDEwICsxNjA4
LDggQEAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
RnJhbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWIKICAgICBBU1NFUlQobV93ZWJGcmFtZSk7CiAg
ICAgCiAgICAgYXV0byBjaGlsZFZpZXcgPSBhZG9wdE5TKFtbV2ViRnJhbWVWaWV3IGFsbG9jXSBp
bml0XSk7Ci0gICAgCi0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiByZXN1bHQgPSBbV2ViRnJh
bWUgX2NyZWF0ZVN1YmZyYW1lV2l0aE93bmVyRWxlbWVudDomb3duZXJFbGVtZW50IGZyYW1lTmFt
ZTpuYW1lIGZyYW1lVmlldzpjaGlsZFZpZXcuZ2V0KCldOwotCi0gICAgV2ViRnJhbWUgKm5ld0Zy
YW1lID0ga2l0KHJlc3VsdC5nZXQoKSk7CisgICAgYXV0byByZXN1bHQgPSBbV2ViRnJhbWUgX2Ny
ZWF0ZVN1YmZyYW1lV2l0aE93bmVyRWxlbWVudDomb3duZXJFbGVtZW50IGZyYW1lTmFtZTpuYW1l
IGZyYW1lVmlldzpjaGlsZFZpZXcuZ2V0KCldOworICAgIGF1dG8gKm5ld0ZyYW1lID0ga2l0KHJl
c3VsdC5wdHIoKSk7CiAKICAgICBpZiAoW25ld0ZyYW1lIF9kYXRhU291cmNlXSkKICAgICAgICAg
W1tuZXdGcmFtZSBfZGF0YVNvdXJjZV0gX2RvY3VtZW50TG9hZGVyXS0+c2V0T3ZlcnJpZGVFbmNv
ZGluZyhbW21fd2ViRnJhbWUuZ2V0KCkgX2RhdGFTb3VyY2VdIF9kb2N1bWVudExvYWRlcl0tPm92
ZXJyaWRlRW5jb2RpbmcoKSk7ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCBhMmM1NGIz
MzJiNTExYTZmZDk1NDRjMmNjYmNmZGE2YTFmN2IxMzllLi5iODk4NzE4MzU5MzE2MzVlNTVhM2Nk
Yzc0NDg1ZGM5OTYzZmIxYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC01MTIsMTcg
KzUxMiwxMiBAQCAtIChpZClpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6KFdlYlZpZXcgKil3ZWJW
aWV3IGlzVW5kZXJUZXN0OihCT09MKWlzVW5kZXJUZXN0CiAgICAgX2luc3BlY3RlZFdlYlZpZXcg
PSB3ZWJWaWV3OwogCiAgICAgTlNTdHJpbmcgKnBhZ2VQYXRoID0gaXNVbmRlclRlc3QgPyBbc2Vs
ZiBpbnNwZWN0b3JUZXN0UGFnZVBhdGhdIDogW3NlbGYgaW5zcGVjdG9yUGFnZVBhdGhdOwotICAg
IGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJM
OltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6IHBhZ2VQYXRoXV0pOworICAgIGF1dG8gcmVxdWVzdCA9
IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6cGFnZVBhdGhdXSk7CiAgICAgW1tfZnJvbnRlbmRXZWJWaWV3IG1haW5GcmFtZV0g
bG9hZFJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CiAKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAo
dm9pZClkZWFsbG9jCi17Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCiAvLyBNQVJLOiAtCiAK
IC0gKE5TU3RyaW5nICopaW5zcGVjdG9yUGFnZVBhdGgKQEAgLTU2Nyw3ICs1NjIsNyBAQCAtIChO
U1dpbmRvdyAqKXdpbmRvdwogICAgIFt3aW5kb3cgc2V0TWluRnVsbFNjcmVlbkNvbnRlbnRTaXpl
Ok5TTWFrZVNpemUobWluaW11bUZ1bGxTY3JlZW5XaWR0aCwgbWluaW11bVdpbmRvd0hlaWdodCld
OwogICAgIFt3aW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOihbd2luZG93IGNvbGxlY3Rpb25C
ZWhhdmlvcl0gfCBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvckZ1bGxTY3JlZW5BbGxvd3NUaWxp
bmcpXTsKIAotICAgIFt3aW5kb3cgc2V0VGl0bGViYXJBcHBlYXJzVHJhbnNwYXJlbnQ6IFlFU107
CisgICAgW3dpbmRvdyBzZXRUaXRsZWJhckFwcGVhcnNUcmFuc3BhcmVudDpZRVNdOwogCiAgICAg
W3NlbGYgc2V0V2luZG93OndpbmRvdy5nZXQoKV07CiAgICAgcmV0dXJuIHdpbmRvdy5nZXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpp
bmRleCA2NDhhNDQwYmUyNDNhYTk3YjA5ZjcyM2QzNjQ3MGYyYTg4Y2I5NTViLi5jMTQ2ZjE2MDVm
MzgzOGUyODk1YWM5MDMwYzNiZmQ4ZTkxNDhkZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0zMTcsMTIgKzMxNyw5IEBAIC0g
KERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGhBcmNoaXZlOihXZWJB
cmNoaXZlICopYXJjaGl2ZQogICAgICAgICAgICAgLy8gRklYTUU6IHNlZW1zIHBvb3IgZm9ybSB0
byBkbyB0aGlzIGFzIGEgc2lkZSBlZmZlY3Qgb2YgZ2V0dGluZyBhIGRvY3VtZW50IGZyYWdtZW50
CiAgICAgICAgICAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPmFkZEFsbEFyY2hpdmVS
ZXNvdXJjZXMoKlthcmNoaXZlIF9jb3JlTGVnYWN5V2ViQXJjaGl2ZV0pOwogCi0gICAgICAgICAg
ICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtbc2VsZiB3ZWJGcmFtZV0gX2RvY3Vt
ZW50RnJhZ21lbnRXaXRoTWFya3VwU3RyaW5nOm1hcmt1cFN0cmluZy5nZXQoKSBiYXNlVVJMU3Ry
aW5nOltbbWFpblJlc291cmNlIFVSTF0gX3dlYl9vcmlnaW5hbERhdGFBc1N0cmluZ11dOwotICAg
ICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwotICAgICAgICB9IGVsc2UgaWYgKFdlYkNvcmU6Ok1J
TUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShNSU1FVHlwZSkpIHsKKyAg
ICAgICAgICAgIHJldHVybiBbW3NlbGYgd2ViRnJhbWVdIF9kb2N1bWVudEZyYWdtZW50V2l0aE1h
cmt1cFN0cmluZzptYXJrdXBTdHJpbmcuZ2V0KCkgYmFzZVVSTFN0cmluZzpbW21haW5SZXNvdXJj
ZSBVUkxdIF93ZWJfb3JpZ2luYWxEYXRhQXNTdHJpbmddXTsKKyAgICAgICAgfSBlbHNlIGlmIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoTUlNRVR5
cGUpKQogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9kb2N1bWVudEZyYWdtZW50V2l0aEltYWdl
UmVzb3VyY2U6bWFpblJlc291cmNlXTsKLSAgICAgICAgICAgIAotICAgICAgICB9CiAgICAgfQog
ICAgIHJldHVybiBuaWw7CiB9CkBAIC0zODQsNyArMzgxLDcgQEAgLSAodm9pZClfbWFrZVJlcHJl
c2VudGF0aW9uCiAKICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBzb3VyY2Ugd2FzIGFscmVhZHkg
Ym91bmQ/CiAgICAgaWYgKCFbW3NlbGYgcmVwcmVzZW50YXRpb25dIGlzS2luZE9mQ2xhc3M6cmVw
Q2xhc3NdKSB7Ci0gICAgICAgIFJldGFpblB0cjxpZD4gbmV3UmVwID0gcmVwQ2xhc3MgIT0gbmls
ID8gYWRvcHROUyhbKE5TT2JqZWN0ICopW3JlcENsYXNzIGFsbG9jXSBpbml0XSkgOiBuaWw7Cisg
ICAgICAgIFJldGFpblB0cjxpZD4gbmV3UmVwID0gcmVwQ2xhc3MgPyBhZG9wdE5TKFtbcmVwQ2xh
c3MgYWxsb2NdIGluaXRdKSA6IG5pbDsKICAgICAgICAgW3NlbGYgX3NldFJlcHJlc2VudGF0aW9u
OihpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pbmV3UmVwLmdldCgpXTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDRlMTM0
NjI4MzYwZTgyNmFhODg1NzU1NTJiZmExMTA0N2ZhMGMxNzQuLjNjNGU0YmIzOTYwNjU4MTc0ODQz
NzFjMzBlNDNjNzVjNjY1MjY1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQpAQCAtMTg3LDExICsxODcsNiBAQCBOU1N0cmluZyAqTlNBY2Nlc3NpYmls
aXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlQXR0cmlidXRlID0gQCJBWEVuaGFuY2VkVXNlckludGVy
ZgogCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWVQcml2YXRlCiAKLS0gKHZvaWQpZGVhbGxvYwot
ewotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogLSAodm9pZClzZXRXZWJGcmFtZVZpZXc6KFdl
YkZyYW1lVmlldyAqKXYKIHsgCiAgICAgd2ViRnJhbWVWaWV3ID0gdjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KaW5kZXggYjYxNmZhN2JmNjRl
NGQ5NzlmYmQwNjgxYWJiM2FmMDM5MjYzYTg0OC4uOTRlMGM5MmUxZDIzZDc1ZWYxMmU3NzU5YTk5
YzM0YzgxZjViY2QwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZVZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZVZpZXcubW0KQEAgLTExNywxMSArMTE3LDYgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRp
b24gV2ViRnJhbWVWaWV3UHJpdmF0ZQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc3VwZXIg
ZGVhbGxvY107Ci19Ci0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkZyYW1lVmlldyAoV2Vi
RnJhbWVWaWV3RmlsZUludGVybmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNjZmYjgxNjg2N2MxNTE5OTVkYmY1NWQxNzM1N2IwZTll
MjEwMTlhYS4uMTc0ZmQzNGIwMzVjMTllN2M3ZDA0ZDIxMGNmNzljZmI5NTMzOTJmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xOTEx
LDEwICsxOTExLDcgQEAgLSAodm9pZClfdXBkYXRlTW91c2VvdmVyV2l0aEV2ZW50OihOU0V2ZW50
ICopZXZlbnQKICAgICBOU1ZpZXcgKmhpdFZpZXcgPSBbY29udGVudFZpZXcgaGl0VGVzdDpsb2Nh
dGlvbkZvckhpdFRlc3RdOwogICAgIGZvcmNlV2ViSFRNTFZpZXdIaXRUZXN0ID0gTk87CiAgICAg
Ci0gICAgUmV0YWluUHRyPFdlYkhUTUxWaWV3PiB2aWV3OwotICAgIGlmIChbaGl0VmlldyBpc0tp
bmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKQotICAgICAgICB2aWV3ID0gKFdlYkhUTUxW
aWV3ICopaGl0VmlldzsgICAgCi0KKyAgICBhdXRvIHZpZXcgPSByZXRhaW5QdHIoZHluYW1pY19v
YmpjX2Nhc3Q8V2ViSFRNTFZpZXc+KGhpdFZpZXcpKTsKICAgICBpZiAobGFzdEhpdFZpZXcgIT0g
dmlldyAmJiBsYXN0SGl0VmlldyAmJiBbbGFzdEhpdFZpZXcgX2ZyYW1lXSkgewogICAgICAgICAv
LyBJZiB3ZSBhcmUgbW92aW5nIG91dCBvZiBhIHZpZXcgKG9yIGZyYW1lKSwgbGV0J3MgcHJldGVu
ZCB0aGUgbW91c2UgbW92ZWQKICAgICAgICAgLy8gYWxsIHRoZSB3YXkgb3V0IG9mIHRoYXQgdmll
dy4gQnV0IHdlIGhhdmUgdG8gYWNjb3VudCBmb3Igc2Nyb2xsaW5nLCBiZWNhdXNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk5hdmlnYXRpb25EYXRhLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJOYXZpZ2F0aW9uRGF0YS5tbQpp
bmRleCA2MzhjM2E1ZTRmNzljMjEyOTA4NWYzMDNjZWRlZmZkOGZjZjQwNjJlLi45NGRjZWM1ODA1
ZWQ3YzI3MWRhNjM0ODdjNjM4ZmQwODFiZWM5ZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYk5hdmlnYXRpb25EYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTmF2aWdhdGlvbkRhdGEubW0KQEAgLTQxLDExICs0MSw2
IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYk5hdmlnYXRpb25EYXRhUHJpdmF0ZQogCi0t
ICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIEBlbmQKIAogQGlt
cGxlbWVudGF0aW9uIFdlYk5hdmlnYXRpb25EYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQppbmRleCA1MmYzMGEw
OTZhMTJhMmMwNDNiNTU2ZmM5NDNlYzllZTRmZGRlOTQ1Li40MzI4YzI2NWI2YmQ0MGYyYWIyNmU3
NGYxMGZmNTlhNGQ1Y2M3NDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0KQEAgLTEyMSwxMiArMTIxLDEwIEBA
IC0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilk
YXRhU291cmNlCiAgICAgfQogCiAgICAgV2ViUERGVmlldyAqdmlldyA9IChXZWJQREZWaWV3ICop
W1tbZGF0YVNvdXJjZSB3ZWJGcmFtZV0gZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwotICAgIGF1
dG8gZG9jID0gYWRvcHROUyhbW1tbc2VsZiBjbGFzc10gUERGRG9jdW1lbnRDbGFzc10gYWxsb2Nd
IGluaXRXaXRoRGF0YTpkYXRhXSk7Ci0gICAgW3ZpZXcgc2V0UERGRG9jdW1lbnQ6ZG9jLmdldCgp
XTsKLQotICAgIE5TQXJyYXkgKnNjcmlwdHMgPSBhbGxTY3JpcHRzSW5QREZEb2N1bWVudChkb2Mu
Z2V0KCkpOwotICAgIGRvYyA9IG5pbDsKKyAgICBhdXRvIGRvY3VtZW50ID0gYWRvcHROUyhbW1tb
c2VsZiBjbGFzc10gUERGRG9jdW1lbnRDbGFzc10gYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhXSk7
CisgICAgW3ZpZXcgc2V0UERGRG9jdW1lbnQ6ZG9jdW1lbnQuZ2V0KCldOwogCisgICAgTlNBcnJh
eSAqc2NyaXB0cyA9IGFsbFNjcmlwdHNJblBERkRvY3VtZW50KGRvY3VtZW50LmdldCgpKTsKICAg
ICBpZiAoIVtzY3JpcHRzIGNvdW50XSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KaW5kZXggODUyMTFjYTBmOTIyNzg4
NmJhYTg5ZWZjMzg4MzBkNzViZTUwNWFlNC4uYjA4NGJkMzAxNWE2MDUzMjM3ZTZkMTdmMjA3YTYw
ODdjNTAwNzk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERG
Vmlldy5tbQpAQCAtMTEwMSwxOSArMTEwMSwxOSBAQCAtIChOU011dGFibGVBcnJheSAqKV9tZW51
SXRlbXNGcm9tUERGS2l0Rm9yRXZlbnQ6KE5TRXZlbnQgKil0aGVFdmVudAogICAgIE5TTXV0YWJs
ZUFycmF5ICpjb3BpZWRJdGVtcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5kZWNsYXJlZC1zZWxlY3RvciIpCi0gICAgYXV0byBhY3Rpb25zVG9U
YWdzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5
czoKLSAgICAgICAgQChXZWJNZW51SXRlbVBERkFjdHVhbFNpemUpLCBOU1N0cmluZ0Zyb21TZWxl
Y3RvcihAc2VsZWN0b3IoX3NldEFjdHVhbFNpemU6KSksCi0gICAgICAgIEAoV2ViTWVudUl0ZW1Q
REZab29tSW4pLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3Ioem9vbUluOikpLAotICAg
ICAgICBAKFdlYk1lbnVJdGVtUERGWm9vbU91dCksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxl
Y3Rvcih6b29tT3V0OikpLAotICAgICAgICBAKFdlYk1lbnVJdGVtUERGQXV0b1NpemUpLCBOU1N0
cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldEF1dG9TaXplOikpLAotICAgICAgICBAKFdl
Yk1lbnVJdGVtUERGU2luZ2xlUGFnZSksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihf
c2V0U2luZ2xlUGFnZTopKSwKLSAgICAgICAgQChXZWJNZW51SXRlbVBERlNpbmdsZVBhZ2VTY3Jv
bGxpbmcpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldFNpbmdsZVBhZ2VTY3Jv
bGxpbmc6KSksCi0gICAgICAgIEAoV2ViTWVudUl0ZW1QREZGYWNpbmdQYWdlcyksIE5TU3RyaW5n
RnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0RG91YmxlUGFnZTopKSwKLSAgICAgICAgQChXZWJN
ZW51SXRlbVBERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNl
bGVjdG9yKF9zZXREb3VibGVQYWdlU2Nyb2xsaW5nOikpLAotICAgICAgICBAKFdlYk1lbnVJdGVt
UERGQ29udGludW91cyksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3RvcihfdG9nZ2xlQ29u
dGludW91czopKSwKLSAgICAgICAgQChXZWJNZW51SXRlbVBERk5leHRQYWdlKSwgTlNTdHJpbmdG
cm9tU2VsZWN0b3IoQHNlbGVjdG9yKGdvVG9OZXh0UGFnZTopKSwKLSAgICAgICAgQChXZWJNZW51
SXRlbVBERlByZXZpb3VzUGFnZSksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihnb1Rv
UHJldmlvdXNQYWdlOikpLAotICAgICAgICBuaWxdKTsKKyAgICBhdXRvIGFjdGlvbnNUb1RhZ3Mg
PSBAeworICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldEFjdHVhbFNp
emU6KSk6IEAoV2ViTWVudUl0ZW1QREZBY3R1YWxTaXplKSwKKyAgICAgICAgTlNTdHJpbmdGcm9t
U2VsZWN0b3IoQHNlbGVjdG9yKHpvb21JbjopKTogQChXZWJNZW51SXRlbVBERlpvb21JbiksCisg
ICAgICAgIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcih6b29tT3V0OikpOiBAKFdlYk1l
bnVJdGVtUERGWm9vbU91dCksCisgICAgICAgIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rv
cihfc2V0QXV0b1NpemU6KSk6IEAoV2ViTWVudUl0ZW1QREZBdXRvU2l6ZSksCisgICAgICAgIE5T
U3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0U2luZ2xlUGFnZTopKTogQChXZWJNZW51
SXRlbVBERlNpbmdsZVBhZ2UpLAorICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0
b3IoX3NldFNpbmdsZVBhZ2VTY3JvbGxpbmc6KSk6IEAoV2ViTWVudUl0ZW1QREZTaW5nbGVQYWdl
U2Nyb2xsaW5nKSwKKyAgICAgICAgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRE
b3VibGVQYWdlOikpOiBAKFdlYk1lbnVJdGVtUERGRmFjaW5nUGFnZXMpLAorICAgICAgICBOU1N0
cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldERvdWJsZVBhZ2VTY3JvbGxpbmc6KSk6IEAo
V2ViTWVudUl0ZW1QREZGYWNpbmdQYWdlc1Njcm9sbGluZyksCisgICAgICAgIE5TU3RyaW5nRnJv
bVNlbGVjdG9yKEBzZWxlY3RvcihfdG9nZ2xlQ29udGludW91czopKTogQChXZWJNZW51SXRlbVBE
RkNvbnRpbnVvdXMpLAorICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoZ29U
b05leHRQYWdlOikpOiBAKFdlYk1lbnVJdGVtUERGTmV4dFBhZ2UpLAorICAgICAgICBOU1N0cmlu
Z0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoZ29Ub1ByZXZpb3VzUGFnZTopKTogQChXZWJNZW51SXRl
bVBERlByZXZpb3VzUGFnZSksCisgICAgfTsKIElHTk9SRV9XQVJOSU5HU19FTkQKIAogICAgIC8v
IExlYXZlIHRoZXNlIG1lbnUgaXRlbXMgb3V0LCBzaW5jZSBXZWJLaXQgaW5zZXJ0cyBlcXVpdmFs
ZW50IG9uZXMuIE5vdGUgdGhhdCB3ZSBsZWF2ZSBvdXQgUERGS2l0J3MgIkxvb2sgVXAgaW4gRGlj
dGlvbmFyeSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UG9saWN5RGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBv
bGljeURlbGVnYXRlLm1tCmluZGV4IGUyOGFiOGY0YThkMjBlMmJkMDU1ZTE5ZDdkZDM5NTI1ZjVi
MTBmZGUuLjhjMDA0N2QyMWI3ZDQwNGVhMWZiMDNmNjU3NTViZTE0MGFlOWIxZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUG9saWN5RGVsZWdhdGUubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQb2xpY3lEZWxlZ2F0ZS5t
bQpAQCAtNjMsMTEgKzYzLDYgQEAgLSAoaWQpaW5pdFdpdGhUYXJnZXQ6KGlkKXQgYWN0aW9uOihT
RUwpYQogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc3Vw
ZXIgZGVhbGxvY107Ci19Ci0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlBvbGljeURlY2lz
aW9uTGlzdGVuZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IGIyZjQyMjc4MjFmZTE3YTQ1MTcyNjRjOWYyZTgxMzJm
NDI0YzRjZTIuLmMxMTg4NjgzYmYxNmNjMDM1NmM4NjYyZGEzNGJiZmViOWIwMTRiMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dl
ci5tbQpAQCAtOTYsOSArOTYsMTggQEAgdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFy
c2VkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICAgICAg
ICAgICAgICBDYWxsU2NyaXB0RGVidWdEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFBhcnNl
U291cmNlRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUGFyc2VTb3VyY2U6ZnJv
bVVSTDpzb3VyY2VJZDpmb3JXZWJGcmFtZTopLCBuc1NvdXJjZSwgW25zVVJMIGFic29sdXRlU3Ry
aW5nXSwgc291cmNlUHJvdmlkZXItPmFzSUQoKSwgd2ViRnJhbWUpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgTlNTdHJpbmcqIG5zRXJyb3JNZXNzYWdlID0gbnNTdHJpbmdOaWxJ
ZkVtcHR5KGVycm9yTXNnKTsKLSAgICAgICAgYXV0byBpbmZvID0gYWRvcHROUyhbW05TRGljdGlv
bmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpuc0Vycm9yTWVzc2FnZSwgV2ViU2Ny
aXB0RXJyb3JEZXNjcmlwdGlvbktleSwgQChlcnJvckxpbmUpLCBXZWJTY3JpcHRFcnJvckxpbmVO
dW1iZXJLZXksIG5pbF0pOwotICAgICAgICBhdXRvIGVycm9yID0gYWRvcHROUyhbW05TRXJyb3Ig
YWxsb2NdIGluaXRXaXRoRG9tYWluOldlYlNjcmlwdEVycm9yRG9tYWluIGNvZGU6V2ViU2NyaXB0
R2VuZXJhbEVycm9yQ29kZSB1c2VySW5mbzppbmZvLmdldCgpXSk7CisgICAgICAgIE5TRGljdGlv
bmFyeSAqaW5mbzsKKyAgICAgICAgaWYgKE5TU3RyaW5nKiBuc0Vycm9yTWVzc2FnZSA9IG5zU3Ry
aW5nTmlsSWZFbXB0eShlcnJvck1zZykpIHsKKyAgICAgICAgICAgIGluZm8gPSBAeworICAgICAg
ICAgICAgICAgIFdlYlNjcmlwdEVycm9yRGVzY3JpcHRpb25LZXk6IG5zRXJyb3JNZXNzYWdlLAor
ICAgICAgICAgICAgICAgIFdlYlNjcmlwdEVycm9yTGluZU51bWJlcktleTogQChlcnJvckxpbmUp
LAorICAgICAgICAgICAgfTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluZm8gPSBA
eworICAgICAgICAgICAgICAgIFdlYlNjcmlwdEVycm9yTGluZU51bWJlcktleTogQChlcnJvckxp
bmUpLAorICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICBhdXRvIGVycm9yID0gYWRv
cHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldlYlNjcmlwdEVycm9yRG9tYWlu
IGNvZGU6V2ViU2NyaXB0R2VuZXJhbEVycm9yQ29kZSB1c2VySW5mbzppbmZvXSk7CiAKICAgICAg
ICAgaWYgKGltcGxlbWVudGF0aW9ucy0+ZmFpbGVkVG9QYXJzZVNvdXJjZUZ1bmMpCiAgICAgICAg
ICAgICBDYWxsU2NyaXB0RGVidWdEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmZhaWxlZFRvUGFy
c2VTb3VyY2VGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpmYWlsZWRUb1BhcnNlU291
cmNlOmJhc2VMaW5lTnVtYmVyOmZyb21VUkw6d2l0aEVycm9yOmZvcldlYkZyYW1lOiksIG5zU291
cmNlLCBmaXJzdExpbmUsIG5zVVJMLCBlcnJvci5nZXQoKSwgd2ViRnJhbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDIzZjRkMmNjZjI5YWMwNzc2
NTllZjdlM2FhODNlNjAwNDhlNTRjMTkuLmM0NDM1M2FkMDdiZTIwZjc5NTViNmVlZTc3M2IxZmFl
NGQyOTA3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTI1NzgsMTAgKzI1NzgsOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
IAogLSAoV2ViVmlldyAqKV9vcGVuTmV3V2luZG93V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QKIHsKLSAgICBhdXRvIGZlYXR1cmVzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOwogICAgIFdlYlZpZXcgKm5ld1dpbmRvd1dlYlZpZXcgPSBbW3NlbGYgX1VJ
RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6c2VsZgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6bmlsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dGZWF0
dXJlczpmZWF0dXJlcy5nZXQoKV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpbmRvd0ZlYXR1cmVzOkB7IH1dOwogICAgIGlmICghbmV3V2luZG93V2ViVmll
dykKICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJXaW5kb3dBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9uLmgKaW5kZXggNmI0YzRlZGM3MTkxMmYzNzM5
NDE5MTFjZWVjNjNkZGNlYzRiNTAwMi4uNThlODRmM2QwYWJlNzVjNTljZjBkN2Q3M2ExZTQ5YWJm
MmEwMDg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJX
aW5kb3dBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YldpbmRvd0FuaW1hdGlvbi5oCkBAIC0yNCwxMiArMjQsMTMgQEAKICAqLwogCiAjaW1wb3J0IDxD
b2NvYS9Db2NvYS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW50ZXJmYWNlIFdl
YldpbmRvd1NjYWxlQW5pbWF0aW9uIDogTlNBbmltYXRpb24gewogQHByaXZhdGUKICAgICBOU1Jl
Y3QgX2luaXRpYWxGcmFtZSwgX2ZpbmFsRnJhbWUsIF9yZWFsRnJhbWU7CiAgICAgTlNXaW5kb3cg
Kl93aW5kb3c7IC8vIChhc3NpZ24pCi0gICAgTlNBbmltYXRpb24gKl9zdWJBbmltYXRpb247IC8v
IChyZXRhaW4pCisgICAgUmV0YWluUHRyPE5TQW5pbWF0aW9uPiBfc3ViQW5pbWF0aW9uOwogICAg
IE5TVGltZUludGVydmFsIF9oaW50ZWREdXJhdGlvbjsKIH0KIC0gKGlkKWluaXRXaXRoSGludGVk
RHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uIHdpbmRvdzooTlNXaW5kb3cgKil3aW5k
b3cgaW5pdGFsRnJhbWU6KE5TUmVjdClpbml0aWFsRnJhbWUgZmluYWxGcmFtZTooTlNSZWN0KWZp
bmFsRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YldpbmRvd0FuaW1hdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
V2luZG93QW5pbWF0aW9uLm1tCmluZGV4IGUwMGM5ODhmYjQ1MTFlZDZlZTdjYzFjZDQzNDU1NDMx
YjZhYWQ4YTcuLjVkZDdlMWRiNTY1NTNjYzkyOWU1Yzk3YTRhMDhiZWUyZGJjZTA2MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViV2luZG93QW5pbWF0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViV2luZG93QW5pbWF0
aW9uLm1tCkBAIC04NCwxMiArODQsNiBAQCAtIChpZClpbml0V2l0aEhpbnRlZER1cmF0aW9uOihO
U1RpbWVJbnRlcnZhbClkdXJhdGlvbiB3aW5kb3c6KE5TV2luZG93ICopd2luZG93CiAgICAgcmV0
dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpIGRlYWxsb2MKLXsKLSAgICBbX3N1YkFuaW1hdGlvbiBy
ZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0gKHZvaWQpc2V0RHVyYXRpb246
KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiB7CiAgICAgW3N1cGVyIHNldER1cmF0aW9uOldlYldp
bmRvd0FuaW1hdGlvbkR1cmF0aW9uRnJvbUR1cmF0aW9uKGR1cmF0aW9uKV07CkBAIC0xNzksOCAr
MTczLDcgQEAgLSAodm9pZClzZXRDdXJyZW50UHJvZ3Jlc3M6KE5TQW5pbWF0aW9uUHJvZ3Jlc3Mp
cHJvZ3Jlc3MKIAogLSAodm9pZClzZXRTdWJBbmltYXRpb246KE5TQW5pbWF0aW9uICopYW5pbWF0
aW9uCiB7Ci0gICAgYXV0byBvbGRBbmltYXRpb24gPSBhZG9wdE5TKF9zdWJBbmltYXRpb24pOwot
ICAgIF9zdWJBbmltYXRpb24gPSBbYW5pbWF0aW9uIHJldGFpbl07CisgICAgX3N1YkFuaW1hdGlv
biA9IGFuaW1hdGlvbjsKIH0KIAogLSAoTlNUaW1lSW50ZXJ2YWwpYWRkaXRpb25hbER1cmF0aW9u
TmVlZGVkVG9SZWFjaEZpbmFsRnJhbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBjMjk3OTgwNWVjYWI5MzMzZTljMjg4NjJiNzQ0ZGU2Y2ZiZDQ5
NTIzLi40NjQ1YjRlYzljYTI0ZGYyOWI4YjFmMDE2YzA5M2VkOGY3ZGUxMmY5IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMjEtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE3ODAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc0MjgyMzg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFwcGx5IHJldmlldyBmZWVkYmFjayBmcm9tIERhcmluIEFkbGVy
IGFuZCBTYW0gV2VpbmlnIGFmdGVyIHIyNzI3ODkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFkZENocm9tZUlu
cHV0RmllbGQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmll
d01hYy5tbToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZp
ZWxkKToKKwogMjAyMS0wMi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggZGMwNGM4N2I1
Nzk4YTFhMjNiNjU0NzU5MmMyZjQ0YjlmMGJlZGI2MS4uYzU4ZDU0NjVmYTAzZGJkYmFlMDk1OGRh
OTU1OWI3YjY2MDJiM2E1YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rl
c3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJN
YWMubW0KQEAgLTEwNjUsNyArMTA2NSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5w
dXRGaWVsZCgpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byB0ZXh0Rmll
bGQgPSBhZG9wdE5TKFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAxMDAsIDIwKV0pOwotICAgIFt0ZXh0RmllbGQgc2V0VGFnOiAxXTsKKyAgICBbdGV4
dEZpZWxkIHNldFRhZzoxXTsKICAgICBbW1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gY29u
dGVudFZpZXddIGFkZFN1YnZpZXc6dGV4dEZpZWxkLmdldCgpXTsKICAgICAKICAgICBbdGV4dEZp
ZWxkIHNldE5leHRLZXlWaWV3OlttYWluRnJhbWUgd2ViVmlld11dOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCmluZGV4IDZhZmYzZjFkZDlh
OTY1Yzc5ZTI3ODAzY2NiZDMxNDc3Njk2ODhhOTIuLmFjY2JhZWQ2ZGIxNGY1MTg0ZTQ0ZGJkNDRl
N2Q5YmU4ZTgyYzY1YzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Bs
YXRmb3JtV2ViVmlld01hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0
Zm9ybVdlYlZpZXdNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFBsYXRmb3JtV2ViVmll
dzo6ZGlkSW5pdGlhbGl6ZUNsaWVudHMoKQogdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9t
ZUlucHV0RmllbGQoKQogewogICAgIGF1dG8gdGV4dEZpZWxkID0gYWRvcHROUyhbW05TVGV4dEZp
ZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAyMCldKTsKLSAg
ICBbdGV4dEZpZWxkIHNldFRhZzogMV07CisgICAgW3RleHRGaWVsZCBzZXRUYWc6MV07CiAgICAg
W1ttX3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp0ZXh0RmllbGQuZ2V0KCldOwogCiAg
ICAgTlNWaWV3ICp2aWV3ID0gcGxhdGZvcm1WaWV3KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420195</attachid>
            <date>2021-02-12 16:52:48 -0800</date>
            <delta_ts>2021-02-12 18:16:51 -0800</delta_ts>
            <desc>Follow-up</desc>
            <filename>bug-221780-20210212165247.patch</filename>
            <type>text/plain</type>
            <size>73782</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjMDA2YTJlZGMxYWEx
N2ViNTBjNzg4YWQxZmIwN2EwYjQ3MWI0Ny4uNWY4YmNhMGU2MDE2Y2JiOTZhMmZlZjRhYjk5MmJl
OTViZGVkYjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAyLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVz
YWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
NDI4MjM4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBB
cHBseSByZXZpZXcgZmVlZGJhY2sgZnJvbSBEYXJpbiBBZGxlciBhbmQgU2FtIFdlaW5pZyBhZnRl
ciByMjcyNzg5LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgorICAgICAgICAo
aWYpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KEhUTUxDb252ZXJ0ZXI6Ol9hZGRMaW5rRm9yRWxlbWVudCk6CisgICAgICAgIChIVE1MQ29udmVy
dGVyOjpfcHJvY2Vzc0VsZW1lbnQpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZE1hcmtl
cnNUb0xpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5t
bToKKyAgICAgICAgKC1bV2ViQ29yZU1vdGlvbk1hbmFnZXIgaW5pdGlhbGl6ZU9uTWFpblRocmVh
ZF0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL05ldHdvcmtTdGF0ZU5vdGlmaWVy
SU9TLm1tOgorCiAyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBkYTI0M2UxYThiZWRmYWQyZGQ0NGE1OGUxYzQ2NjU0YWVlMzg4Mzk5Li4y
ODQ2NWJkZDg4MjUzMGJjZjI3NzI5YmVmYzk3MDA3MDYwMmIzNTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIwIEBACisyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDI4MjM4OT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBBcHBseSByZXZpZXcgZmVlZGJhY2sgZnJvbSBEYXJp
biBBZGxlciBhbmQgU2FtIFdlaW5pZyBhZnRlciByMjcyNzg5LgorCisgICAgICAgICogVUlQcm9j
ZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
ZWJDb2xvclBpY2tlck1hYy5tbToKKyAgICAgICAgKCtbV0tQb3BvdmVyQ29sb3JXZWxsIF9jb2xv
clBvcG92ZXJDcmVhdGVJZk5lY2Vzc2FyeTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOgorICAgICAgICAoLVtX
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZSBzZXRSZW1vdGVQYXJlbnQ6XSk6CisKIDIw
MjEtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1
Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9DaGFuZ2VMb2cKaW5kZXggNTU5ZWY3ZTM4Y2NlMWVhOGExNjVhZWI4N2M2ZTI2NjZkNzc1
MDRiOS4uZmI3NGUxN2JkZjA3YWNlMTFjMjM5ZGZmNDU1ZTBiYzBhZTYxNDM3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAyLTEyICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdl
IG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDI4
MjM4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBcHBs
eSByZXZpZXcgZmVlZGJhY2sgZnJvbSBEYXJpbiBBZGxlciBhbmQgU2FtIFdlaW5pZyBhZnRlciBy
MjcyNzg5LgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06Cisg
ICAgICAgICgtW1dlYlBERlZpZXdQbGFjZWhvbGRlciBfdXBkYXRlVGl0bGVGb3JEb2N1bWVudElm
QXZhaWxhYmxlXSk6CisKIDIwMjEtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4g
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNDM1MzQ0NTdiMDM4YTk0ZjZi
MzI5YzUzNDZiNjllM2M5ZWNmMzE3OS4uNzdkYzFmODk5ZWM2MDgyYjhjOGFkNDJkNDlhNjE1OTk3
ODQ4MzZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisy
MDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVk
dWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzgwCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NDI4MjM4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBBcHBseSByZXZpZXcgZmVlZGJhY2sgZnJvbSBEYXJpbiBBZGxlciBhbmQg
U2FtIFdlaW5pZyBhZnRlciByMjcyNzg5LgorCisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5z
aW9ucy5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBhYnNvbHV0ZVF1YWRzXSk6CisgICAgICAgICgt
W0RPTUhUTUxBcmVhRWxlbWVudCBhYnNvbHV0ZVF1YWRzV2l0aE93bmVyOl0pOgorICAgICAgICAq
IERPTS9FeGNlcHRpb25IYW5kbGVycy5tbToKKyAgICAgICAgKHJhaXNlRE9NRXJyb3JFeGNlcHRp
b24pOgorICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW06
CisgICAgICAgICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdFRl
eHRJbnB1dFBhbmVsV2l0aFByb21wdDpkZWZhdWx0VGV4dDppbml0aWF0ZWRCeUZyYW1lOl0pOgor
ICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVBy
aXZhdGUgdmlzaXRlZFVSTDp3aXRoVGl0bGU6XSk6CisgICAgICAgICgtW1dlYkhpc3RvcnkgX3Zp
c2l0ZWRVUkw6d2l0aFRpdGxlOm1ldGhvZDp3YXNGYWlsdXJlOl0pOgorICAgICAgICAqIEhpc3Rv
cnkvV2ViSGlzdG9yeUl0ZW0ubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlJdGVtIGluaXRGcm9t
RGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIE1pc2MvV2ViTlNEYXRhRXh0
cmFzLm1tOgorICAgICAgICAoLVtOU0RhdGEgX3dlYmtpdF9wYXJzZVJGQzgyMkhlYWRlckZpZWxk
c10pOgorICAgICAgICAqIE1pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAo
LVtOU1Bhc3RlYm9hcmQgX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVtZW50OlVS
TDp0aXRsZTphcmNoaXZlOnNvdXJjZTpdKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyOjpzcGF3blBsdWdpbkhvc3QpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpwZXJmb3JtUmVxdWVzdCk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjphZGRNZXNzYWdlVG9Db25z
b2xlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAg
ICAgIChhdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24pOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkgY29uc3QpOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0NvbnRy
b2xsZXIgaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OmlzVW5kZXJUZXN0Ol0pOgorICAgICAgICAo
LVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIHdpbmRvd10pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBfZG9jdW1lbnRG
cmFnbWVudFdpdGhBcmNoaXZlOl0pOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIF9tYWtlUmVw
cmVzZW50YXRpb25dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcu
bW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF91cGRhdGVNb3VzZW92ZXJXaXRoRXZlbnQ6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJOYXZpZ2F0aW9uRGF0YS5tbToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJQREZSZXByZXNlbnRh
dGlvbiBmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlBERlZpZXcubW06CisgICAgICAgICgtW1dlYlBERlZpZXcgX21lbnVJdGVtc0Zyb21QREZL
aXRGb3JFdmVudDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBvbGljeURlbGVnYXRlLm1tOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW06CisgICAgICAgIChXZWJTY3Jp
cHREZWJ1Z2dlcjo6c291cmNlUGFyc2VkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06
CisgICAgICAgICgtW1dlYlZpZXcgX29wZW5OZXdXaW5kb3dXaXRoUmVxdWVzdDpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYldpbmRvd0FuaW1hdGlvbi5oOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
V2luZG93QW5pbWF0aW9uLm1tOgorICAgICAgICAoLVtXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbiBz
ZXRTdWJBbmltYXRpb246XSk6CisKIDIwMjEtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFz
ZV0gaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4
IGVkZjQ1NzRkMjEzMDExNmI0ZjIwYWE2NGMzMTgwOTkzOTg0MjUwODYuLjA1N2IxY2RkNDBhMmM2
ZDIzMzViNzA3OWMxMzVkYTEyMmQ4NzMxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCkBAIC0xMjk0LDgwICsxMjk0LDc2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZU5hbWVzXTsKIAotICAgIHN0YXRpYyBOU0FycmF5KiBhdHRyaWJ1dGVzID0gbmlsOwotICAg
IHN0YXRpYyBOU0FycmF5KiBhbmNob3JBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSog
d2ViQXJlYUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiB0ZXh0QXR0cnMgPSBuaWw7
Ci0gICAgc3RhdGljIE5TQXJyYXkqIGxpc3RBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJh
eSogbGlzdEJveEF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiByYW5nZUF0dHJzID0g
bmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBjb21tb25NZW51QXR0cnMgPSBuaWw7Ci0gICAgc3Rh
dGljIE5TQXJyYXkqIG1lbnVBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogbWVudUJh
ckF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBtZW51SXRlbUF0dHJzID0gbmlsOwot
ICAgIHN0YXRpYyBOU0FycmF5KiBtZW51QnV0dG9uQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5T
QXJyYXkqIGNvbnRyb2xBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVBdHRy
cyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVSb3dBdHRycyA9IG5pbDsKLSAgICBz
dGF0aWMgTlNBcnJheSogdGFibGVDb2xBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSog
dGFibGVDZWxsQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGdyb3VwQXR0cnMgPSBu
aWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGlucHV0SW1hZ2VBdHRycyA9IG5pbDsKLSAgICBzdGF0
aWMgTlNBcnJheSogcGFzc3dvcmRGaWVsZEF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5
KiB0YWJMaXN0QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGNvbWJvQm94QXR0cnMg
PSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIG91dGxpbmVBdHRycyA9IG5pbDsKLSAgICBzdGF0
aWMgTlNBcnJheSogb3V0bGluZVJvd0F0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBi
dXR0b25BdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogc2Nyb2xsVmlld0F0dHJzID0g
bmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBpbmNyZW1lbnRvckF0dHJzID0gbmlsOwotICAgIGlm
IChhdHRyaWJ1dGVzID09IG5pbCkgewotICAgICAgICBhdHRyaWJ1dGVzID0gW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCi0gICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlLAotICAgICAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlI
ZWxwQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRl
LAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGUsCi0gICAgICAg
ICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5VGl0bGVBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbkF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRl
LAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSwKLSAgICAgICAg
ICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vz
c2liaWxpdHlXaW5kb3dBdHRyaWJ1dGUsCi0gICAgICAgICAgICBAIkFYU2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2UiLAotICAgICAgICAgICAgQCJBWFN0YXJ0VGV4dE1hcmtlciIsCi0gICAgICAgICAg
ICBAIkFYRW5kVGV4dE1hcmtlciIsCi0gICAgICAgICAgICBAIkFYVmlzaXRlZCIsCi0gICAgICAg
ICAgICBOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlLAotICAgICAgICAg
ICAgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vz
c2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2li
aWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJp
bGl0eUxhbmd1YWdlQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RE9NSWRl
bnRpZmllckF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eURPTUNsYXNzTGlz
dEF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzYWJsZUFuY2VzdG9y
QXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RWRpdGFibGVBbmNlc3RvckF0
dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUhpZ2hlc3RFZGl0YWJsZUFuY2Vz
dG9yQXR0cmlidXRlLAotICAgICAgICAgICAgbmlsXTsKLSAgICB9Ci0gICAgaWYgKGNvbW1vbk1l
bnVBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgY29tbW9uTWVudUF0dHJzID0gW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRy
aWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGlsZHJl
bkF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBh
cmVudEF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0
eUVuYWJsZWRBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2li
aWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNj
ZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxd
OwotICAgIH0KKyAgICBzdGF0aWMgTlNBcnJheSAqYW5jaG9yQXR0cnM7CisgICAgc3RhdGljIE5T
QXJyYXkgKndlYkFyZWFBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqdGV4dEF0dHJzOworICAg
IHN0YXRpYyBOU0FycmF5ICpsaXN0QXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKmxpc3RCb3hB
dHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqcmFuZ2VBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJh
eSAqbWVudUF0dHJzOworICAgIHN0YXRpYyBOU0FycmF5ICptZW51QmFyQXR0cnM7CisgICAgc3Rh
dGljIE5TQXJyYXkgKm1lbnVJdGVtQXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKmNvbnRyb2xB
dHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqdGFibGVBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJh
eSAqdGFibGVSb3dBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqdGFibGVDb2xBdHRyczsKKyAg
ICBzdGF0aWMgTlNBcnJheSAqdGFibGVDZWxsQXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKmdy
b3VwQXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKmlucHV0SW1hZ2VBdHRyczsKKyAgICBzdGF0
aWMgTlNBcnJheSAqcGFzc3dvcmRGaWVsZEF0dHJzOworICAgIHN0YXRpYyBOU0FycmF5ICp0YWJM
aXN0QXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKmNvbWJvQm94QXR0cnM7CisgICAgc3RhdGlj
IE5TQXJyYXkgKm91dGxpbmVBdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqb3V0bGluZVJvd0F0
dHJzOworICAgIHN0YXRpYyBOU0FycmF5ICpidXR0b25BdHRyczsKKyAgICBzdGF0aWMgTlNBcnJh
eSAqc2Nyb2xsVmlld0F0dHJzOworICAgIHN0YXRpYyBOU0FycmF5ICppbmNyZW1lbnRvckF0dHJz
OworICAgIHN0YXRpYyBOU0FycmF5ICphdHRyaWJ1dGVzID0gcmV0YWluUHRyKEBbCisgICAgICAg
IE5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVN1
YnJvbGVBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0
dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUsCisgICAg
ICAgIE5TQWNjZXNzaWJpbGl0eUhlbHBBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0
eVBhcmVudEF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1
dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNj
ZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGUsCisg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNz
aWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVdpbmRvd0F0
dHJpYnV0ZSwKKyAgICAgICAgQCJBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlIiwKKyAgICAgICAg
QCJBWFN0YXJ0VGV4dE1hcmtlciIsCisgICAgICAgIEAiQVhFbmRUZXh0TWFya2VyIiwKKyAgICAg
ICAgQCJBWFZpc2l0ZWQiLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRz
QXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZEF0dHJpYnV0ZSwKKyAg
ICAgICAgTlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90ZUxldmVsQXR0cmlidXRlLAorICAgICAgICBO
U0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nl
c3NpYmlsaXR5TGFuZ3VhZ2VBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eURPTUlk
ZW50aWZpZXJBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eURPTUNsYXNzTGlzdEF0
dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Rm9jdXNhYmxlQW5jZXN0b3JBdHRyaWJ1
dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVkaXRhYmxlQW5jZXN0b3JBdHRyaWJ1dGUsCisg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eUhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yQXR0cmlidXRlLAor
ICAgIF0pLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgTlNBcnJheSAqY29tbW9uTWVudUF0dHJzID0g
cmV0YWluUHRyKEBbCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCisgICAg
ICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBh
cmVudEF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwK
KyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGUsCisgICAgICAgIE5TQWNj
ZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGUsCisgICAgXSkubGVha1JlZigpOworCiAgICAgaWYgKGFu
Y2hvckF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUxpbmtSZWxh
dGlvbnNoaXBUeXBlQXR0cmlidXRlXTsKLSAgICAgICAgYW5jaG9yQXR0cnMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKKyAgICAgICAgYW5jaG9yQXR0
cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAod2ViQXJlYUF0dHJzID09
IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CkBAIC0xMzg1LDcgKzEzODEsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGVd
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5
Ym9hcmRET01FdmVudERpc3BhdGNoQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5V2ViU2Vzc2lvbklEQXR0cmlidXRlXTsKLSAgICAgICAgd2Vi
QXJlYUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQo
KV07CisgICAgICAgIHdlYkFyZWFBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQog
ICAgIGlmICh0ZXh0QXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsK
QEAgLTE0MDAsNyArMTM5Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxh
Y2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVZhbHVlQXV0b2ZpbGxlZEF0dHJpYnV0ZV07Ci0gICAgICAgIHRleHRBdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAg
ICAgICB0ZXh0QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAobGlz
dEF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CkBAIC0xNDA4LDcg
KzE0MDQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxkcmVuQXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIGxpc3RBdHRycyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBsaXN0
QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAobGlzdEJveEF0dHJz
ID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpsaXN0QXR0cnNdKTsKQEAgLTE0MTYsNyArMTQxMiw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSZXF1aXJlZEF0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0
dHJpYnV0ZV07Ci0gICAgICAgIGxpc3RCb3hBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBsaXN0Qm94QXR0cnMgPSB0ZW1wQXJy
YXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAocmFuZ2VBdHRycyA9PSBuaWwpIHsKICAgICAg
ICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6YXR0cmlidXRlc10pOwpAQCAtMTQyNSw3ICsxNDIxLDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0
cmlidXRlXTsKLSAgICAgICAgcmFuZ2VBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICByYW5nZUF0dHJzID0gdGVtcEFycmF5Lmxl
YWtSZWYoKTsKICAgICB9CiAgICAgaWYgKG1lbnVCYXJBdHRycyA9PSBuaWwpIHsKICAgICAgICAg
YXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6Y29tbW9uTWVudUF0dHJzXSk7CkBAIC0xNDMzLDcgKzE0MjksNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxkcmVuQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0
dHJpYnV0ZV07Ci0gICAgICAgIG1lbnVCYXJBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBtZW51QmFyQXR0cnMgPSB0ZW1wQXJy
YXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAobWVudUF0dHJzID09IG5pbCkgewogICAgICAg
ICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTpjb21tb25NZW51QXR0cnNdKTsKQEAgLTE0NDEsNyArMTQzNyw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
QXR0cmlidXRlXTsKLSAgICAgICAgbWVudUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OnRlbXBBcnJheS5nZXQoKV07CisgICAgICAgIG1lbnVBdHRycyA9IHRlbXBBcnJheS5s
ZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChtZW51SXRlbUF0dHJzID09IG5pbCkgewogICAgICAg
ICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTpjb21tb25NZW51QXR0cnNdKTsKQEAgLTE0NTgsMjcgKzE0NTQsMjcgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0OihOU1N0cmluZyopa0FYTWVudUl0ZW1QcmltYXJ5VUlFbGVtZW50QXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VydmVzQXNUaXRsZUZv
clVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlGb2N1c2VkQXR0cmlidXRlXTsKLSAgICAgICAgbWVudUl0ZW1BdHRycyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOwotICAgIH0KLSAg
ICBpZiAobWVudUJ1dHRvbkF0dHJzID09IG5pbCkgewotICAgICAgICBtZW51QnV0dG9uQXR0cnMg
PSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0
cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURl
c2NyaXB0aW9uQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5UGFyZW50QXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nl
c3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBO
U0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlLCBuaWxdOwotICAg
IH0KKyAgICAgICAgbWVudUl0ZW1BdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CisgICAgfQor
ICAgIHN0YXRpYyBOU0FycmF5ICptZW51QnV0dG9uQXR0cnMgPSByZXRhaW5QdHIoQFsKKyAgICAg
ICAgTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5
Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlQYXJlbnRB
dHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlLAorICAg
ICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxp
dHlXaW5kb3dBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1
dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUsCisgICAgICAgIE5T
QWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGls
ZHJlbkF0dHJpYnV0ZSwKKyAgICBdKS5sZWFrUmVmKCk7CiAgICAgaWYgKGNvbnRyb2xBdHRycyA9
PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVk
QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
SW52YWxpZEF0dHJpYnV0ZV07Ci0gICAgICAgIGNvbnRyb2xBdHRycyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBjb250cm9sQXR0cnMg
PSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAoaW5jcmVtZW50b3JBdHRycyA9
PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwpAQCAtMTQ4Nyw3ICsxNDgzLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJp
YnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1heFZh
bHVlQXR0cmlidXRlXTsKLSAgICAgICAgaW5jcmVtZW50b3JBdHRycyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBpbmNyZW1lbnRvckF0
dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKICAgICB9CiAgICAgaWYgKGJ1dHRvbkF0dHJzID09
IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CkBAIC0xNDk1LDEzICsxNDkxLDEz
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFy
cmF5IHJlbW92ZU9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNz
S2V5QXR0cmlidXRlXTsKLSAgICAgICAgYnV0dG9uQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKKyAgICAgICAgYnV0dG9uQXR0cnMgPSB0ZW1w
QXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAoY29tYm9Cb3hBdHRycyA9PSBuaWwpIHsK
ICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6Y29udHJvbEF0dHJzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eUV4cGFuZGVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAgICAg
ICBjb21ib0JveEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJh
eS5nZXQoKV07CisgICAgICAgIGNvbWJvQm94QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwog
ICAgIH0KICAgICBpZiAodGFibGVBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJy
YXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmli
dXRlc10pOwpAQCAtMTUxNywxMiArMTUxMywxMiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
Um93Q291bnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlBUklBQ29sdW1uQ291bnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBUm93Q291bnRBdHRyaWJ1dGVdOwotICAgICAgICB0
YWJsZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQo
KV07CisgICAgICAgIHRhYmxlQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAg
ICBpZiAodGFibGVSb3dBdHRycyA9PSBuaWwpIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10p
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJp
YnV0ZV07Ci0gICAgICAgIHRhYmxlUm93QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6dGVtcEFycmF5LmdldCgpXTsKKyAgICAgICAgdGFibGVSb3dBdHRycyA9IHRlbXBBcnJh
eS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmICh0YWJsZUNvbEF0dHJzID09IG5pbCkgewogICAg
ICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CkBAIC0xNTMwLDcgKzE1MjYsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5SGVhZGVyQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRlXTsKLSAgICAgICAg
dGFibGVDb2xBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXku
Z2V0KCldOworICAgICAgICB0YWJsZUNvbEF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKICAg
ICB9CiAgICAgaWYgKHRhYmxlQ2VsbEF0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzXSk7CkBAIC0xNTQwLDE3ICsxNTM2LDE3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQUNvbHVtbkluZGV4QXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQVJvd0luZGV4QXR0cmlidXRl
XTsKLSAgICAgICAgdGFibGVDZWxsQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6dGVtcEFycmF5LmdldCgpXTsKKyAgICAgICAgdGFibGVDZWxsQXR0cnMgPSB0ZW1wQXJyYXku
bGVha1JlZigpOwogICAgIH0KICAgICBpZiAoZ3JvdXBBdHRycyA9PSBuaWwpIHsKICAgICAgICAg
YXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6YXR0cmlidXRlc10pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIGdyb3VwQXR0cnMgPSBb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5LmdldCgpXTsKKyAgICAgICAg
Z3JvdXBBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChpbnB1dElt
YWdlQXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmJ1dHRvbkF0dHJzXSk7CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07Ci0gICAg
ICAgIGlucHV0SW1hZ2VBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1w
QXJyYXkuZ2V0KCldOworICAgICAgICBpbnB1dEltYWdlQXR0cnMgPSB0ZW1wQXJyYXkubGVha1Jl
ZigpOwogICAgIH0KICAgICBpZiAocGFzc3dvcmRGaWVsZEF0dHJzID09IG5pbCkgewogICAgICAg
ICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTphdHRyaWJ1dGVzXSk7CkBAIC0xNTU5LDE0ICsxNTU1LDE0IEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXV0b2ZpbGxlZEF0dHJp
YnV0ZV07Ci0gICAgICAgIHBhc3N3b3JkRmllbGRBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0KCldOworICAgICAgICBwYXNzd29yZEZpZWxkQXR0cnMg
PSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAgIH0KICAgICBpZiAodGFiTGlzdEF0dHJzID09IG5p
bCkgewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRhYnNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDb250ZW50c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsK
LSAgICAgICAgdGFiTGlzdEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRl
bXBBcnJheS5nZXQoKV07CisgICAgICAgIHRhYkxpc3RBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVm
KCk7CiAgICAgfQogICAgIGlmIChvdXRsaW5lQXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIGF1dG8g
dGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5
OmF0dHJpYnV0ZXNdKTsKQEAgLTE1NzQsNyArMTU3MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgb3V0bGluZUF0
dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheS5nZXQoKV07Cisg
ICAgICAgIG91dGxpbmVBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlm
IChvdXRsaW5lUm93QXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRhYmxlUm93QXR0cnNd
KTsKQEAgLTE1ODMsMTQgKzE1NzksMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Ns
b3N1cmVMZXZlbEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IHJl
bW92ZU9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV07Ci0gICAgICAgIG91dGxp
bmVSb3dBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXkuZ2V0
KCldOworICAgICAgICBvdXRsaW5lUm93QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwogICAg
IH0KICAgICBpZiAoc2Nyb2xsVmlld0F0dHJzID09IG5pbCkgewogICAgICAgICBhdXRvIHRlbXBB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNv
bnRlbnRzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5SG9yaXpvbnRhbFNjcm9sbEJhckF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZlcnRpY2FsU2Nyb2xsQmFyQXR0cmlidXRlXTsKLSAg
ICAgICAgc2Nyb2xsVmlld0F0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRl
bXBBcnJheS5nZXQoKV07CisgICAgICAgIHNjcm9sbFZpZXdBdHRycyA9IHRlbXBBcnJheS5sZWFr
UmVmKCk7CiAgICAgfQogCiAgICAgTlNBcnJheSAqb2JqZWN0QXR0cmlidXRlcyA9IGF0dHJpYnV0
ZXM7CkBAIC0zMDU1LDEwICszMDUxLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgIHN0YXRpYyBOU0FycmF5KiBwYXJhbUF0dHJzID0gbmlsOwotICAg
IHN0YXRpYyBOU0FycmF5KiB0ZXh0UGFyYW1BdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJh
eSogdGFibGVQYXJhbUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiB3ZWJBcmVhUGFy
YW1BdHRycyA9IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJheSAqcGFyYW1BdHRyczsKKyAgICBzdGF0
aWMgTlNBcnJheSAqdGV4dFBhcmFtQXR0cnM7CisgICAgc3RhdGljIE5TQXJyYXkgKnRhYmxlUGFy
YW1BdHRyczsKKyAgICBzdGF0aWMgTlNBcnJheSAqd2ViQXJlYVBhcmFtQXR0cnM7CiAgICAgaWYg
KHBhcmFtQXR0cnMgPT0gbmlsKSB7CiAgICAgICAgIHBhcmFtQXR0cnMgPSBbW05TQXJyYXkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0czoKICAgICAgICAgICAgIEAiQVhVSUVsZW1lbnRGb3JUZXh0TWFy
a2VyIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpp
bmRleCA3MmRhMTFhNzUxZThmOWRkM2E0NDJkNTdiZDkxYzJiMTljNTMxM2NjLi42OWZhNjE1MTUy
MDNlZWRkYjFiNzc2Y2E4NmNkNTU5ODBmMTYyY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yOTUsNyArMjk1LDcgQEAgcHJpdmF0ZToK
IAogICAgIFJldGFpblB0cjxOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nPiBfYXR0clN0cjsKICAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gX2RvY3VtZW50QXR0cnM7Ci0gICAgTlNV
UkwgKl9iYXNlVVJMOworICAgIFJldGFpblB0cjxOU1VSTD4gX2Jhc2VVUkw7CiAgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiBfdGV4dExpc3RzOwogICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gX3RleHRCbG9ja3M7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfdGV4dFRh
YmxlczsKQEAgLTE2MzYsNyArMTYzNiw3IEBAIHZvaWQgSFRNTENvbnZlcnRlcjo6X2FkZExpbmtG
b3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TUmFuZ2UgcmFuZ2UpCiAgICAgICAgIGlmICgh
dXJsKQogICAgICAgICAgICAgdXJsID0gZWxlbWVudC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhzdHJpcHBlZFN0cmluZykpOwogICAgICAg
ICBpZiAoIXVybCkKLSAgICAgICAgICAgIHVybCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6
c3RyaXBwZWRTdHJpbmcgcmVsYXRpdmVUb1VSTDpfYmFzZVVSTF07CisgICAgICAgICAgICB1cmwg
PSBbTlNVUkwgX3dlYl9VUkxXaXRoU3RyaW5nOnN0cmlwcGVkU3RyaW5nIHJlbGF0aXZlVG9VUkw6
X2Jhc2VVUkwuZ2V0KCldOwogICAgICAgICBbX2F0dHJTdHIgYWRkQXR0cmlidXRlOk5TTGlua0F0
dHJpYnV0ZU5hbWUgdmFsdWU6dXJsID8gKGlkKXVybCA6IChpZCl1cmxTdHJpbmcgcmFuZ2U6cmFu
Z2VdOwogICAgIH0KIH0KQEAgLTE3OTUsNyArMTc5NSw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6
X3Byb2Nlc3NFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TSW50ZWdlciBkZXB0aCkKICAgICAg
ICAgaWYgKHVybFN0cmluZyAmJiBbdXJsU3RyaW5nIGxlbmd0aF0gPiAwKSB7CiAgICAgICAgICAg
ICBOU1VSTCAqdXJsID0gZWxlbWVudC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKICAgICAgICAgICAgIGlmICghdXJs
KQotICAgICAgICAgICAgICAgIHVybCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6W3VybFN0
cmluZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVyc0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0
ZXNwYWNlQW5kTmV3bGluZUNoYXJhY3RlclNldF1dIHJlbGF0aXZlVG9VUkw6X2Jhc2VVUkxdOwor
ICAgICAgICAgICAgICAgIHVybCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6W3VybFN0cmlu
ZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVyc0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0ZXNw
YWNlQW5kTmV3bGluZUNoYXJhY3RlclNldF1dIHJlbGF0aXZlVG9VUkw6X2Jhc2VVUkwuZ2V0KCld
OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICBCT09MIHVzZVBsYWNlaG9s
ZGVySW1hZ2UgPSBOTzsKICNlbHNlCkBAIC0xODE1LDE0ICsxODE1LDE0IEBAIEJPT0wgSFRNTENv
bnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TSW50ZWdlciBkZXB0
aCkKICAgICAgICAgICAgIGlmIChiYXNlU3RyaW5nICYmIFtiYXNlU3RyaW5nIGxlbmd0aF0gPiAw
KSB7CiAgICAgICAgICAgICAgICAgYmFzZVVSTCA9IGVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0
ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYmFzZVN0cmluZykpOwogICAg
ICAgICAgICAgICAgIGlmICghYmFzZVVSTCkKLSAgICAgICAgICAgICAgICAgICAgYmFzZVVSTCA9
IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6W2Jhc2VTdHJpbmcgc3RyaW5nQnlUcmltbWluZ0No
YXJhY3RlcnNJblNldDpbTlNDaGFyYWN0ZXJTZXQgd2hpdGVzcGFjZUFuZE5ld2xpbmVDaGFyYWN0
ZXJTZXRdXSByZWxhdGl2ZVRvVVJMOl9iYXNlVVJMXTsKKyAgICAgICAgICAgICAgICAgICAgYmFz
ZVVSTCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhTdHJpbmc6W2Jhc2VTdHJpbmcgc3RyaW5nQnlUcmlt
bWluZ0NoYXJhY3RlcnNJblNldDpbTlNDaGFyYWN0ZXJTZXQgd2hpdGVzcGFjZUFuZE5ld2xpbmVD
aGFyYWN0ZXJTZXRdXSByZWxhdGl2ZVRvVVJMOl9iYXNlVVJMLmdldCgpXTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmIChiYXNlVVJMKQogICAgICAgICAgICAgICAgIHVybCA9IFtOU1VS
TCBfd2ViX1VSTFdpdGhTdHJpbmc6W3VybFN0cmluZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVy
c0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0ZXNwYWNlQW5kTmV3bGluZUNoYXJhY3RlclNldF1d
IHJlbGF0aXZlVG9VUkw6YmFzZVVSTF07CiAgICAgICAgICAgICBpZiAoIXVybCkKICAgICAgICAg
ICAgICAgICB1cmwgPSBlbGVtZW50LmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0cmluZykpOwogICAgICAgICAgICAgaWYgKCF1cmwp
Ci0gICAgICAgICAgICAgICAgdXJsID0gW05TVVJMIF93ZWJfVVJMV2l0aFN0cmluZzpbdXJsU3Ry
aW5nIHN0cmluZ0J5VHJpbW1pbmdDaGFyYWN0ZXJzSW5TZXQ6W05TQ2hhcmFjdGVyU2V0IHdoaXRl
c3BhY2VBbmROZXdsaW5lQ2hhcmFjdGVyU2V0XV0gcmVsYXRpdmVUb1VSTDpfYmFzZVVSTF07Cisg
ICAgICAgICAgICAgICAgdXJsID0gW05TVVJMIF93ZWJfVVJMV2l0aFN0cmluZzpbdXJsU3RyaW5n
IHN0cmluZ0J5VHJpbW1pbmdDaGFyYWN0ZXJzSW5TZXQ6W05TQ2hhcmFjdGVyU2V0IHdoaXRlc3Bh
Y2VBbmROZXdsaW5lQ2hhcmFjdGVyU2V0XV0gcmVsYXRpdmVUb1VSTDpfYmFzZVVSTC5nZXQoKV07
CiAgICAgICAgICAgICBpZiAodXJsKQogICAgICAgICAgICAgICAgIHJldHZhbCA9ICFfYWRkQXR0
YWNobWVudEZvckVsZW1lbnQoZWxlbWVudCwgdXJsLCBpc0Jsb2NrTGV2ZWwsIE5PKTsKICAgICAg
ICAgfQpAQCAtMTg5NCw3ICsxODk0LDYgQEAgdm9pZCBIVE1MQ29udmVydGVyOjpfYWRkTWFya2Vy
c1RvTGlzdChOU1RleHRMaXN0ICpsaXN0LCBOU1JhbmdlIHJhbmdlKQogICAgIE5TRGljdGlvbmFy
eSAqYXR0cnNUb0luc2VydCA9IG5pbDsKICAgICBQbGF0Zm9ybUZvbnQgKmZvbnQ7CiAgICAgTlNQ
YXJhZ3JhcGhTdHlsZSAqcGFyYWdyYXBoU3R5bGU7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZVBh
cmFncmFwaFN0eWxlPiBuZXdTdHlsZTsKICAgICBOU1RleHRUYWIgKnRhYiA9IG5pbDsKICAgICBO
U1RleHRUYWIgKnRhYlRvUmVtb3ZlOwogICAgIE5TUmFuZ2UgcGFyYWdyYXBoUmFuZ2U7CkBAIC0x
OTMzLDcgKzE5MzIsNyBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9hZGRNYXJrZXJzVG9MaXN0KE5T
VGV4dExpc3QgKmxpc3QsIE5TUmFuZ2UgcmFuZ2UpCiAgICAgICAgICAgICAgICAgICAgIGlmIChw
YXJhZ3JhcGhSYW5nZS5sb2NhdGlvbiA8IF9kb21SYW5nZVN0YXJ0SW5kZXgpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBfZG9tUmFuZ2VTdGFydEluZGV4ICs9IGluc2VydExlbmd0aDsKICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG5ld1N0eWxlID0gYWRvcHROUyhb
cGFyYWdyYXBoU3R5bGUgbXV0YWJsZUNvcHldKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBu
ZXdTdHlsZSA9IGFkb3B0TlMoW3BhcmFncmFwaFN0eWxlIG11dGFibGVDb3B5XSk7CiAgICAgICAg
ICAgICAgICAgICAgIGxpc3RMb2NhdGlvbiA9IChsaXN0SW5kZXggKyAxKSAqIDM2OwogICAgICAg
ICAgICAgICAgICAgICBtYXJrZXJMb2NhdGlvbiA9IGxpc3RMb2NhdGlvbiAtIDI1OwogICAgICAg
ICAgICAgICAgICAgICBbbmV3U3R5bGUgc2V0Rmlyc3RMaW5lSGVhZEluZGVudDowXTsKQEAgLTE5
NTIsNyArMTk1MSw2IEBAIHZvaWQgSFRNTENvbnZlcnRlcjo6X2FkZE1hcmtlcnNUb0xpc3QoTlNU
ZXh0TGlzdCAqbGlzdCwgTlNSYW5nZSByYW5nZSkKICAgICAgICAgICAgICAgICAgICAgW25ld1N0
eWxlIGFkZFRhYlN0b3A6YWRvcHROUyhbW1BsYXRmb3JtTlNUZXh0VGFiIGFsbG9jXSBpbml0V2l0
aFR5cGU6TlNMZWZ0VGFiU3RvcFR5cGUgbG9jYXRpb246bWFya2VyTG9jYXRpb25dKS5nZXQoKV07
CiAgICAgICAgICAgICAgICAgICAgIFtuZXdTdHlsZSBhZGRUYWJTdG9wOmFkb3B0TlMoW1tQbGF0
Zm9ybU5TVGV4dFRhYiBhbGxvY10gaW5pdFdpdGhUZXh0QWxpZ25tZW50Ok5TVGV4dEFsaWdubWVu
dE5hdHVyYWwgbG9jYXRpb246bGlzdExvY2F0aW9uIG9wdGlvbnM6QHsgfV0pLmdldCgpXTsKICAg
ICAgICAgICAgICAgICAgICAgW19hdHRyU3RyIGFkZEF0dHJpYnV0ZTpOU1BhcmFncmFwaFN0eWxl
QXR0cmlidXRlTmFtZSB2YWx1ZTpuZXdTdHlsZS5nZXQoKSByYW5nZTpwYXJhZ3JhcGhSYW5nZV07
Ci0gICAgICAgICAgICAgICAgICAgIG5ld1N0eWxlID0gbmlsOwogICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgaWR4ID0gTlNNYXhSYW5nZShwYXJhZ3JhcGhSYW5nZSk7
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQppbmRleCA0MzgxNmY3ZmM1NTZiMTQ5MWJh
NjlhYjExZjg5OWUyOGIzYjczMTg2Li4yN2I0MjQ4YzY3OTdiMmM3ZjYyMzVlYmUxZWI0YmU2Y2Mz
M2Y1MTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1v
dGlvbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVN
b3Rpb25NYW5hZ2VyLm1tCkBAIC0xNDUsOSArMTQ1LDkgQEAgLSAodm9pZClpbml0aWFsaXplT25N
YWluVGhyZWFkCiAgICAgbV9neXJvQXZhaWxhYmxlID0gbV9tb3Rpb25NYW5hZ2VyLmdldCgpLmRl
dmljZU1vdGlvbkF2YWlsYWJsZTsKIAogICAgIGlmIChtX2d5cm9BdmFpbGFibGUpCi0gICAgICAg
IFttX21vdGlvbk1hbmFnZXIgc2V0RGV2aWNlTW90aW9uVXBkYXRlSW50ZXJ2YWw6IGtNb3Rpb25V
cGRhdGVJbnRlcnZhbF07CisgICAgICAgIFttX21vdGlvbk1hbmFnZXIgc2V0RGV2aWNlTW90aW9u
VXBkYXRlSW50ZXJ2YWw6a01vdGlvblVwZGF0ZUludGVydmFsXTsKICAgICBlbHNlCi0gICAgICAg
IFttX21vdGlvbk1hbmFnZXIgc2V0QWNjZWxlcm9tZXRlclVwZGF0ZUludGVydmFsOiBrTW90aW9u
VXBkYXRlSW50ZXJ2YWxdOworICAgICAgICBbbV9tb3Rpb25NYW5hZ2VyIHNldEFjY2VsZXJvbWV0
ZXJVcGRhdGVJbnRlcnZhbDprTW90aW9uVXBkYXRlSW50ZXJ2YWxdOwogCiAgICAgbV9sb2NhdGlv
bk1hbmFnZXIgPSBhZG9wdE5TKFthbGxvY0NMTG9jYXRpb25NYW5hZ2VySW5zdGFuY2UoKSBpbml0
XSk7CiAgICAgbV9oZWFkaW5nQXZhaWxhYmxlID0gW2dldENMTG9jYXRpb25NYW5hZ2VyQ2xhc3Mo
KSBoZWFkaW5nQXZhaWxhYmxlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL05ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0KaW5kZXggYjhl
OWIzYzc3Nzk5Y2Q2MWNmOWM1OWYwOThiNmM2YWM0NWY2MmQwMS4uZTk3M2IwNmQzMDViZDFhMWUx
Yjg2ZjI0NjQyM2Y3OWZmYTFlYjU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0KQEAg
LTU5LDExICs1OSw2IEBAIC0gKGlkKWluaXRXaXRoQmxvY2s6KHZvaWQgKF4pKCkpb2JzZXJ2ZXJC
bG9jawogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc3Vw
ZXIgZGVhbGxvY107Ci19Ci0KIC0gKHZvaWQpbmV0d29ya1N0YXRlQ2hhbmdlZDooTlNOb3RpZmlj
YXRpb24gKil1bnVzZWROb3RpZmljYXRpb24KIHsKICAgICBVTlVTRURfUEFSQU0odW51c2VkTm90
aWZpY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5oCmluZGV4IDE4NzE5MWZm
NjA0NWJkNTBmM2FmYzQzYjBjYTBiYWMzM2ViZWZkNWEuLjczMDU3ZTRjZWUzZGY1OGQ2MGRmYmY2
MDU3ZTQ2ODAyZWMzZTA4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaApAQCAt
MjksNyArMjksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JPdmVybGF5Lmg+CiAKIEBp
bnRlcmZhY2UgV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3IDogVUlWaWV3IHsKLSAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IF9sYXllcnM7IC8vIENBU2hhcGVMYXllcnMuCisgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PENBU2hhcGVMYXllciAqPj4gX2xheWVyczsKIH0KIC0gKHZvaWQp
dXBkYXRlOihjb25zdCBXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQmKWhpZ2hs
aWdodDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Nj
cm9sbFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1t
CmluZGV4IGI4MmI0NTkzMjRjZDNlMWJhZTBlZDUxNzU2OGE5MjM3OTlhYzY0YzQuLjczNjhiZjY0
MTg1NzE3ZmExZDc4YWJiMWFlY2NmZjFjNmUyMGQ3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQpAQCAtMjE3LDExICsyMTcsNiBAQCAtICh2b2lkKV91
cGRhdGVEZWxlZ2F0ZQogICAgIH0KIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3N1cGVy
IGRlYWxsb2NdOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgdmFsdWVzQXJlV2l0aGluT25lUGl4
ZWwoQ0dGbG9hdCBhLCBDR0Zsb2F0IGIpCiB7CiAgICAgcmV0dXJuIENHRkFicyhhIC0gYikgPCAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2Vy
TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1t
CmluZGV4IDlmMGUyMzlmNDI1ZWI3Y2U5NTJkZTU0MTc2ZmMwNGYwNDBmZTFmMTQuLjg2YTZmNDY4
YzQ2ZmQ4MWI4ZTAyNzc5NzNlYTJmYmVjNzIyZjFjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW0KQEAgLTE0MCw3ICsxNDAsNyBAQCAr
IChOU1BvcG92ZXIgKilfY29sb3JQb3BvdmVyQ3JlYXRlSWZOZWNlc3Nhcnk6KEJPT0wpZm9yY2VD
cmVhdGlvbgogCiAgICAgICAgIGF1dG8gY29udHJvbGxlciA9IGFkb3B0TlMoW1tOU0NsYXNzRnJv
bVN0cmluZyhAIk5TQ29sb3JQb3BvdmVyQ29udHJvbGxlciIpIGFsbG9jXSBpbml0XSk7CiAgICAg
ICAgIHBvcG92ZXIuY29udGVudFZpZXdDb250cm9sbGVyID0gY29udHJvbGxlci5nZXQoKTsKLSAg
ICAgICAgW2NvbnRyb2xsZXIgc2V0UG9wb3ZlcjogcG9wb3Zlcl07CisgICAgICAgIFtjb250cm9s
bGVyIHNldFBvcG92ZXI6cG9wb3Zlcl07CiAKICAgICAgICAgY29sb3JQb3BvdmVyID0gcG9wb3Zl
cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0K
aW5kZXggYWEzYmVjMGQwNmM4OGNiNWM3Y2UxOWEzMjM4ZTk3ZGUwZGE0MGM0YS4uYmRmMGI0ODU1
ZDQyOTk5NWExODA2MTdlYzY2ZWUxZWE2MjYxODJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMTMxLDggKzEzMSw3IEBAIC0gKHZvaWQpc2V0
SGFzTWFpbkZyYW1lUGx1Z2luOihib29sKWhhc1BsdWdpbgogLSAodm9pZClzZXRSZW1vdGVQYXJl
bnQ6KGlkKXBhcmVudAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKHBh
cmVudCAhPSBtX3BhcmVudCkKLSAgICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CisgICAgbV9wYXJl
bnQgPSBwYXJlbnQ7CiB9CiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFj
ZWhvbGRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1Bs
YWNlaG9sZGVyLm1tCmluZGV4IDY5NmRmNWI2OTExM2YxNTI4OTk1ZGQyZDNhMjAyN2M1NWIzNGE2
M2UuLjcyNTRkMGM1YWNjNmFhMWE4NzliNjJhZDBhNDg4OTlmM2NlN2RiYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9s
ZGVyLm1tCkBAIC0zMjgsMTYgKzMyOCwxNiBAQCAtICh2b2lkKV91cGRhdGVUaXRsZUZvckRvY3Vt
ZW50SWZBdmFpbGFibGUKICAgICBpZiAoIV9kb2N1bWVudCB8fCAhQ0dQREZEb2N1bWVudElzVW5s
b2NrZWQoX2RvY3VtZW50KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiB0aXRsZTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRpdGxlOwogCiAgICAgQ0dQ
REZEaWN0aW9uYXJ5UmVmIGluZm8gPSBDR1BERkRvY3VtZW50R2V0SW5mbyhfZG9jdW1lbnQpOwog
ICAgIENHUERGU3RyaW5nUmVmIHZhbHVlOwogICAgIGlmIChDR1BERkRpY3Rpb25hcnlHZXRTdHJp
bmcoaW5mbywgIlRpdGxlIiwgJnZhbHVlKSkKLSAgICAgICAgdGl0bGUgPSBhZG9wdE5TKChOU1N0
cmluZyAqKUNHUERGU3RyaW5nQ29weVRleHRTdHJpbmcodmFsdWUpKTsKKyAgICAgICAgdGl0bGUg
PSBhZG9wdENGKENHUERGU3RyaW5nQ29weVRleHRTdHJpbmcodmFsdWUpKTsKIAotICAgIGlmIChb
dGl0bGUgbGVuZ3RoXSkgewotICAgICAgICBbc2VsZiBzZXRUaXRsZTp0aXRsZS5nZXQoKV07Ci0g
ICAgICAgIFtbc2VsZiBfZnJhbWVdIF9kaXNwYXRjaERpZFJlY2VpdmVUaXRsZTp0aXRsZS5nZXQo
KV07CisgICAgaWYgKHRpdGxlICYmIENGU3RyaW5nR2V0TGVuZ3RoKHRpdGxlLmdldCgpKSkgewor
ICAgICAgICBbc2VsZiBzZXRUaXRsZTooTlNTdHJpbmcgKil0aXRsZS5nZXQoKV07CisgICAgICAg
IFtbc2VsZiBfZnJhbWVdIF9kaXNwYXRjaERpZFJlY2VpdmVUaXRsZTooTlNTdHJpbmcgKil0aXRs
ZS5nZXQoKV07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCA4Y2FmNzU4YjhhNjUwZThiZmMzOGU3MTBkZTQ3
ZjUyYThjODE1NGYxLi4wOWRkZWYzYTc3MDIwNDYyM2VkNDBkNjY4NDU3OTA1YjZjYjU1ZDU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25z
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMu
bW0KQEAgLTE4MiwxMCArMTgyLDggQEAgLSAoTlNBcnJheSAqKWFic29sdXRlUXVhZHMKICAgICAg
ICAgICAgIHF1YWRzID0gW3NlbGYgbGluZUJveFF1YWRzXTsKICAgICB9CiAKLSAgICBpZiAoIVtx
dWFkcyBjb3VudF0pIHsKLSAgICAgICAgYXV0byBxdWFkT2JqZWN0ID0gYWRvcHROUyhbW1dLUXVh
ZE9iamVjdCBhbGxvY10gaW5pdFdpdGhRdWFkOltzZWxmIGFic29sdXRlUXVhZF1dKTsKLSAgICAg
ICAgcXVhZHMgPSBAW3F1YWRPYmplY3QuZ2V0KCldOwotICAgIH0KKyAgICBpZiAoIVtxdWFkcyBj
b3VudF0pCisgICAgICAgIHF1YWRzID0gQFthZG9wdE5TKFtbV0tRdWFkT2JqZWN0IGFsbG9jXSBp
bml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkXV0pLmdldCgpXTsKIAogICAgIHJldHVybiBx
dWFkczsKIH0KQEAgLTM1OSw5ICszNTcsNyBAQCAtIChOU0FycmF5ICopYm91bmRpbmdCb3hlc1dp
dGhPd25lcjooRE9NTm9kZSAqKW93bmVyCiAKIC0gKE5TQXJyYXkgKilhYnNvbHV0ZVF1YWRzV2l0
aE93bmVyOihET01Ob2RlICopb3duZXIKIHsKLSAgICBhdXRvIHF1YWRPYmplY3QgPSBhZG9wdE5T
KFtbV0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkV2l0
aE93bmVyOm93bmVyXV0pOwotICAgIE5TQXJyYXkgKnF1YWRBcnJheSA9IEBbcXVhZE9iamVjdC5n
ZXQoKV07Ci0gICAgcmV0dXJuIHF1YWRBcnJheTsKKyAgICByZXR1cm4gQFthZG9wdE5TKFtbV0tR
dWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkV2l0aE93bmVy
Om93bmVyXV0pLmdldCgpXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCmluZGV4IDc5ZDdjMDAzNmYwODA4YzAyMWNiMTFm
ZTdlNTUzN2RjYWUyNGIwZmIuLjljZjdlOWJkNjRiZmY4NjBiMDRiMWRjYmYyMTRjNGRhMDIwODdk
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9FeGNlcHRpb25IYW5k
bGVycy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRXhjZXB0aW9uSGFuZGxl
cnMubW0KQEAgLTQ4LDkgKzQ4LDggQEAgc3RhdGljIE5PX1JFVFVSTiB2b2lkIHJhaXNlRE9NRXJy
b3JFeGNlcHRpb24oV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYykKICAgICBlbHNlCiAgICAgICAg
IHJlYXNvbiA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIqKiog
JUAgJWQiLCBET01FeGNlcHRpb24sIGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGVdKTsKIAotICAgIGF1
dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVj
dHNBbmRLZXlzOkAoZGVzY3JpcHRpb24ubGVnYWN5Q29kZSksIERPTUV4Y2VwdGlvbiwgbmlsXSk7
Ci0KLSAgICBOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uID0gW05TRXhjZXB0aW9uIGV4Y2VwdGlvbldp
dGhOYW1lOkRPTUV4Y2VwdGlvbiByZWFzb246cmVhc29uLmdldCgpIHVzZXJJbmZvOnVzZXJJbmZv
LmdldCgpXTsKKyAgICBhdXRvIHVzZXJJbmZvID0gQHsgRE9NRXhjZXB0aW9uOiBAKGRlc2NyaXB0
aW9uLmxlZ2FjeUNvZGUpIH07CisgICAgYXV0byBleGNlcHRpb24gPSBbTlNFeGNlcHRpb24gZXhj
ZXB0aW9uV2l0aE5hbWU6RE9NRXhjZXB0aW9uIHJlYXNvbjpyZWFzb24uZ2V0KCkgdXNlckluZm86
dXNlckluZm9dOwogICAgIFtleGNlcHRpb24gcmFpc2VdOwogCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1
bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUuaAppbmRleCBlN2Q3NmRh
NTYxODdiNGJlMWJiZjFhZDE2NjVmZTQ2OWU5ZTc2NGM3Li5iYzcwNzJiZTA2M2YyMjQ4MTcwZTQy
YTUxOGZlMGVmM2QyN2U4MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
ZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5oCkBAIC0z
MCw3ICszMCw3IEBACiAKIEBpbnRlcmZhY2UgV2ViRGVmYXVsdFVJRGVsZWdhdGUgOiBOU09iamVj
dCA8V2ViVUlEZWxlZ2F0ZT4KIHsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFU
Rk9STShNQUMpCiAgICAgSUJPdXRsZXQgTlNNZW51ICpkZWZhdWx0TWVudTsKICNlbmRpZgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJE
ZWZhdWx0VUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxl
Z2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0KaW5kZXggMGY1ODhkMjAxZmI4NjNkNGM1MzQ2
NjNlYTk1NDExMmRiNGY3ZWVjZC4uZGJlY2VkNTY0OTY3YmZmMWNlNThlMmQ0ZjkwMGRmNGFhNjQy
ZTI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRl
cy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
ZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tCkBAIC0zMyw3ICszMyw3IEBA
CiAjaW1wb3J0ICJXZWJWaWV3LmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0ICJXZWJKYXZh
U2NyaXB0VGV4dElucHV0UGFuZWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNoZWNrcy5o
PgogI2VuZGlmCkBAIC00Myw3ICs0Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dLVmlld1ByaXZh
dGUuaD4KICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0o
TUFDKQogQGludGVyZmFjZSBOU0FwcGxpY2F0aW9uIChEZWNsYXJhdGlvblN0b2xlbkZyb21BcHBL
aXQpCiAtICh2b2lkKV9jeWNsZVdpbmRvd3NSZXZlcnNlZDooQk9PTClyZXZlcnNlZDsKIEBlbmQK
QEAgLTg3LDIxICs4NywyMSBAQCAtICh2b2lkKXdlYlZpZXdTaG93OiAoV2ViVmlldyAqKXd2CiAK
IC0gKHZvaWQpd2ViVmlld0Nsb3NlOiAoV2ViVmlldyAqKXd2CiB7Ci0jaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisjaWYgUExBVEZPUk0oTUFDKQogICAgIFtbd3Ygd2luZG93XSBjbG9zZV07CiAj
ZW5kaWYKIH0KIAogLSAodm9pZCl3ZWJWaWV3Rm9jdXM6IChXZWJWaWV3ICopd3YKIHsKLSNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAgICAgW1t3diB3aW5kb3dd
IG1ha2VLZXlBbmRPcmRlckZyb250Ond2XTsKICNlbmRpZgogfQogCiAtICh2b2lkKXdlYlZpZXdV
bmZvY3VzOiAoV2ViVmlldyAqKXd2CiB7Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYg
UExBVEZPUk0oTUFDKQogICAgIGlmIChbW3d2IHdpbmRvd10gaXNLZXlXaW5kb3ddIHx8IFtbW3d2
IHdpbmRvd10gYXR0YWNoZWRTaGVldF0gaXNLZXlXaW5kb3ddKQogICAgICAgICBbTlNBcHAgX2N5
Y2xlV2luZG93c1JldmVyc2VkOkZBTFNFXTsKICNlbmRpZgpAQCAtMTU5LDcgKzE1OSw3IEBAIC0g
KEJPT0wpd2ViVmlld0lzUmVzaXphYmxlOiAoV2ViVmlldyAqKXd2CiAKIC0gKHZvaWQpd2ViVmll
dzogKFdlYlZpZXcgKil3diBzZXRSZXNpemFibGU6KEJPT0wpcmVzaXphYmxlCiB7Ci0jaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBUaGlz
IGRvZXNuJ3QgYWN0dWFsbHkgY2hhbmdlIHRoZSByZXNpemFiaWxpdHkgb2YgdGhlIHdpbmRvdywK
ICAgICAvLyBvbmx5IHZpc2liaWxpdHkgb2YgdGhlIGluZGljYXRvci4KICAgICBbW3d2IHdpbmRv
d10gc2V0U2hvd3NSZXNpemVJbmRpY2F0b3I6cmVzaXphYmxlXTsKQEAgLTE2OCw3ICsxNjgsNyBA
QCAtICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0UmVzaXphYmxlOihCT09MKXJlc2l6
YWJsZQogCiAtICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0RnJhbWU6KE5TUmVjdClm
cmFtZQogewotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBbW3d2IHdpbmRvd10gc2V0RnJhbWU6ZnJhbWUgZGlzcGxheTpZRVNdOwogI2VuZGlmCiB9CkBA
IC0xOTIsNyArMTkyLDcgQEAgLSAoQk9PTCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFT
Y3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKikKIAogLSAoTlNTdHJpbmcg
Kil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQ
cm9tcHQ6KE5TU3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0OihOU1N0cmluZyAqKWRlZmF1bHRU
ZXh0IGluaXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKLSNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAgICAgYXV0byBwYW5lbCA9IGFkb3B0TlMo
W1tXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwgYWxsb2NdIGluaXRXaXRoUHJvbXB0OnByb21w
dCB0ZXh0OmRlZmF1bHRUZXh0XSk7CiAgICAgW3BhbmVsIHNob3dXaW5kb3c6bmlsXTsKICAgICBO
U1N0cmluZyAqcmVzdWx0OwpAQCAtMjE2LDcgKzIxNiw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBwcmludEZyYW1lVmlldzooV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3CiB7
CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAtIChO
U1VJbnRlZ2VyKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2tGb3JEcmFnZ2luZ0luZm86KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7
CiAgICAgaWYgKCFsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29yZTo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRo
RHJvcFRvTmF2aWdhdGVEaXNhbGxvd2VkQnlEZWZhdWx0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQppbmRleCA5YmYzMDIwYWEzMjZlOTY1OTU5ZDY0
YzZmODAwZDE2NTI1OWEwYmNjLi45YTY2NjgzZjZlMzJjNDQ4NjA5OWNlNWM5NTdiOWMwNzJjOWNm
NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rv
cnkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1t
CkBAIC0xMzcsMTEgKzEzNyw2IEBAIC0gKGlkKWluaXQKICAgICByZXR1cm4gc2VsZjsKIH0KIAot
LSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCiAvLyBNQVJLOiBN
T0RJRllJTkcgQ09OVEVOVFMKIAogc3RhdGljIHZvaWQgZ2V0RGF5Qm91bmRhcmllcyhOU1RpbWVJ
bnRlcnZhbCBpbnRlcnZhbCwgTlNUaW1lSW50ZXJ2YWwmIGJlZ2lubmluZ09mRGF5LCBOU1RpbWVJ
bnRlcnZhbCYgYmVnaW5uaW5nT2ZOZXh0RGF5KQpAQCAtMjg2LDcgKzI4MSw3IEBAIC0gKFdlYkhp
c3RvcnlJdGVtICopdmlzaXRlZFVSTDooTlNVUkwgKil1cmwgd2l0aFRpdGxlOihOU1N0cmluZyAq
KXRpdGxlCiAgICAgTlNTdHJpbmcgKlVSTFN0cmluZyA9IFt1cmwgX3dlYl9vcmlnaW5hbERhdGFB
c1N0cmluZ107CiAgICAgaWYgKCFVUkxTdHJpbmcpCiAgICAgICAgIFVSTFN0cmluZyA9IEAiIjsK
LSAgICBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+IGVudHJ5ID0gW19lbnRyaWVzQnlVUkwgb2Jq
ZWN0Rm9yS2V5OlVSTFN0cmluZ107CisgICAgYXV0byBlbnRyeSA9IHJldGFpblB0cihbX2VudHJp
ZXNCeVVSTCBvYmplY3RGb3JLZXk6VVJMU3RyaW5nXSk7CiAKICAgICBpZiAoZW50cnkpIHsKICAg
ICAgICAgTE9HKEhpc3RvcnksICJVcGRhdGluZyBnbG9iYWwgaGlzdG9yeSBlbnRyeSAlQCIsIGVu
dHJ5LmdldCgpKTsKQEAgLTMwNCw3ICsyOTksNyBAQCAtIChXZWJIaXN0b3J5SXRlbSAqKXZpc2l0
ZWRVUkw6KE5TVVJMICopdXJsIHdpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZQogICAgIAogICAg
IFtzZWxmIGFkZEl0ZW1Ub0RhdGVDYWNoZXM6ZW50cnkuZ2V0KCldOwogCi0gICAgcmV0dXJuIGVu
dHJ5LmdldCgpOworICAgIHJldHVybiBlbnRyeS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChCT09M
KWFkZEl0ZW06KFdlYkhpc3RvcnlJdGVtICopZW50cnkgZGlzY2FyZER1cGxpY2F0ZTooQk9PTClk
aXNjYXJkRHVwbGljYXRlCkBAIC04NTksOCArODU0LDcgQEAgLSAodm9pZClfdmlzaXRlZFVSTDoo
TlNVUkwgKil1cmwgd2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIG1ldGhvZDooTlNTdHJpbmcg
KikKIAogICAgIGVudHJ5LT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IG51bGxwdHI7CiAKLSAg
ICBhdXRvIGVudHJpZXMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
OmVudHJ5LCBuaWxdKTsKLSAgICBbc2VsZiBfc2VuZE5vdGlmaWNhdGlvbjpXZWJIaXN0b3J5SXRl
bXNBZGRlZE5vdGlmaWNhdGlvbiBlbnRyaWVzOmVudHJpZXMuZ2V0KCldOworICAgIFtzZWxmIF9z
ZW5kTm90aWZpY2F0aW9uOldlYkhpc3RvcnlJdGVtc0FkZGVkTm90aWZpY2F0aW9uIGVudHJpZXM6
QFtlbnRyeV1dOwogfQogCiAtICh2b2lkKV9hZGRWaXNpdGVkTGlua3NUb1Zpc2l0ZWRMaW5rU3Rv
cmU6KFdlYlZpc2l0ZWRMaW5rU3RvcmUgJil2aXNpdGVkTGlua1N0b3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCBjYjE2Y2Q3
NTIyZjBiYTk2YWNhMTUwMWZiNDY5NWU4NDRkNDcxNzZiLi44YTYxOGM2ZDE4MDhjZjdlMzhkNWUw
MDI1ZGYzOGM3Zjc4YmE1ZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9I
aXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hp
c3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTM0OSwxMiArMzQ5LDkgQEAgLSAoaWQpaW5pdEZy
b21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246KE5TRGljdGlvbmFyeSAqKWRpY3QKICAgICBpZiAo
TlNBcnJheSAqcmVkaXJlY3RVUkxzID0gW2RpY3QgX3dlYmtpdF9hcnJheUZvcktleTpyZWRpcmVj
dFVSTHNLZXldKQogICAgICAgICBfcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IG1ha2VVbmlxdWU8
VmVjdG9yPFN0cmluZz4+KG1ha2VWZWN0b3I8U3RyaW5nPihyZWRpcmVjdFVSTHMpKTsKIAotICAg
IE5TQXJyYXkgKmNoaWxkRGljdHMgPSBbZGljdCBvYmplY3RGb3JLZXk6Y2hpbGRyZW5LZXldOwot
ICAgIGlmIChjaGlsZERpY3RzKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSBbY2hpbGREaWN0cyBj
b3VudF0gLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICAgICAgYXV0byBjaGlsZCA9IGFkb3B0
TlMoW1tXZWJIaXN0b3J5SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRp
b246W2NoaWxkRGljdHMgb2JqZWN0QXRJbmRleDppXV0pOwotICAgICAgICAgICAgY29yZShfcHJp
dmF0ZSktPmFkZENoaWxkSXRlbSgqY29yZShjaGlsZC0+X3ByaXZhdGUpKTsKLSAgICAgICAgfQor
ICAgIGZvciAoaWQgY2hpbGREaWN0IGluIFtbZGljdCBvYmplY3RGb3JLZXk6Y2hpbGRyZW5LZXld
IHJldmVyc2VPYmplY3RFbnVtZXJhdG9yXSkgeworICAgICAgICBhdXRvIGNoaWxkID0gYWRvcHRO
UyhbW1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlv
bjpjaGlsZERpY3RdKTsKKyAgICAgICAgY29yZShfcHJpdmF0ZSktPmFkZENoaWxkSXRlbSgqY29y
ZShjaGlsZC0+X3ByaXZhdGUpKTsKICAgICB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQppbmRl
eCAwZGRlMjg3YzJmMDRjOTYwOTY0MTQ4ZGRmYjJjMzM0MzgyZTUxNzk3Li44MmFlMWRiNWU1Zjc0
ZTI0ZWU2OTdiMWE4ZmMwNWM1YzQ2NTFiYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQpAQCAtMzMyLDEwICszMzIsOCBAQCAtIChOU011
dGFibGVEaWN0aW9uYXJ5ICopX3dlYmtpdF9wYXJzZVJGQzgyMkhlYWRlckZpZWxkcwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8gdmFs
dWUgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0ZXM6Y29sb24gbGVuZ3Ro
OmVvbCAtIGNvbG9uIGVuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5nRW5jb2RpbmddKTsKLSAgICAg
ICAgICAgIGlmIChOU1N0cmluZyAqb2xkVmFsdWUgPSBbaGVhZGVyRmllbGRzIG9iamVjdEZvcktl
eTpsYXN0S2V5XSkgewotICAgICAgICAgICAgICAgIGF1dG8gbmV3VmFsdWUgPSBbW05TU3RyaW5n
IGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIiVALCAlQCIsIG9sZFZhbHVlLCB2YWx1ZS5nZXQoKV07
Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBXVEZNb3ZlKG5ld1ZhbHVlKTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChOU1N0cmluZyAqb2xkVmFsdWUgPSBbaGVhZGVyRmllbGRzIG9i
amVjdEZvcktleTpsYXN0S2V5XSkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFkb3B0TlMoW1tO
U1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIlQCwgJUAiLCBvbGRWYWx1ZSwgdmFsdWUu
Z2V0KCldKTsKICAgICAgICAgICAgIFtoZWFkZXJGaWVsZHMgc2V0T2JqZWN0OnZhbHVlLmdldCgp
IGZvcktleTpsYXN0S2V5XTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KaW5kZXggNGFlMGM3
OTBlM2IwMmNmZmFhMjQ5YWYzM2E3N2E0ZGJmYmY3MmY1Yi4uZDk2MGQxOGNjMGVkMmVlY2QwZjkw
Yzg0NWFlMDVjZDc0ZWZiZDcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KQEAgLTMxNSw4ICszMTUsNyBAQCAtIChp
ZClfd2ViX2RlY2xhcmVBbmRXcml0ZURyYWdJbWFnZUZvckVsZW1lbnQ6KERPTUVsZW1lbnQgKill
bGVtZW50CiAgICAgaWYgKGN1c3RvbURhdGFCdWZmZXIpCiAgICAgICAgIFtzZWxmIHNldERhdGE6
Y3VzdG9tRGF0YUJ1ZmZlci5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNv
Y29hVHlwZSgpKV07CiAKLSAgICBhdXRvIGV4dGVuc2lvbnMgPSBhZG9wdE5TKFtbTlNBcnJheSBh
bGxvY10gaW5pdFdpdGhPYmplY3RzOmV4dGVuc2lvbiwgbmlsXSk7Ci0gICAgW3NlbGYgc2V0UHJv
cGVydHlMaXN0OmV4dGVuc2lvbnMuZ2V0KCkgZm9yVHlwZTpsZWdhY3lGaWxlc1Byb21pc2VQYXN0
ZWJvYXJkVHlwZSgpXTsKKyAgICBbc2VsZiBzZXRQcm9wZXJ0eUxpc3Q6QFtleHRlbnNpb25dIGZv
clR5cGU6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKV07CiAKICAgICByZXR1cm4g
c291cmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KaW5kZXggYmJl
YTdlYTYyNjJjMmY0MGUzZjQzZjZkZGNiNjI3MmVlMGUzMjRkNC4uZjYzOTNmODliZmJhNGY2OWZk
MDM4ZjIxNTY1ZWYxN2QwMmZiZjMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5h
Z2VyLm1tCkBAIC0xNzIsMTIgKzE3MiwxMSBAQCBib29sIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFn
ZXI6OnNwYXduUGx1Z2luSG9zdChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNwdV90eQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbKE5TU3RyaW5nKilwbHVnaW5QYXRoIGxh
c3RQYXRoQ29tcG9uZW50XSBzdHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbl0sIFtbTlNQcm9j
ZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdXTsKICAgICAKLSAgICBhdXRvIGhvc3RQ
cm9wZXJ0aWVzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
QW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVOYW1l
LCBAInZpc2libGVOYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChO
U1N0cmluZyAqKXBsdWdpblBhdGgsIEAiYnVuZGxlUGF0aCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuaWxdKTsKLSAgICAKLSAgICBkYXRhID0gW05TUHJvcGVydHlMaXN0
U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpob3N0UHJvcGVydGllcy5nZXQoKSBm
b3JtYXQ6TlNQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCBvcHRpb25zOjAgZXJyb3I6TlVM
TF07CisgICAgYXV0byBob3N0UHJvcGVydGllcyA9IEB7CisgICAgICAgIEAidmlzaWJsZU5hbWUi
OiB2aXNpYmxlTmFtZSwKKyAgICAgICAgQCJidW5kbGVQYXRoIjogKE5TU3RyaW5nICopcGx1Z2lu
UGF0aCwKKyAgICB9OworICAgIGRhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRh
dGFXaXRoUHJvcGVydHlMaXN0Omhvc3RQcm9wZXJ0aWVzIGZvcm1hdDpOU1Byb3BlcnR5TGlzdEJp
bmFyeUZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpOVUxMXTsKICAgICBBU1NFUlQoZGF0YSk7
CiAKICAgICBQcm9jZXNzU2VyaWFsTnVtYmVyIHBzbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQppbmRleCA1MWM1OWVjODQ4YTc0MDE5ZWZlNGQ0MDg4ZWM3ZWMyMWRm
NTg2NTIzLi5kZGJhNDI2NTRkNjJjZjBlYTA1MmI2ZDBmMTViZDBiNzNkMTZlMTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC02NTEsMTAgKzY1MSw3IEBA
IHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5S
ZXF1ZXN0KiBwbHVnaW5SZXF1ZXN0KQogICAgICAgICBmcmFtZSA9IGtpdChjb3JlKFttX3BsdWdp
blZpZXcgd2ViRnJhbWVdKS0+bG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlvbihmcmFtZU5h
bWUpKTsKICAgICAgICAgaWYgKCFmcmFtZSkgewogICAgICAgICAgICAgV2ViVmlldyAqY3VycmVu
dFdlYlZpZXcgPSBbbV9wbHVnaW5WaWV3IHdlYlZpZXddOwotICAgICAgICAgICAgYXV0byBmZWF0
dXJlcyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgICAg
IFdlYlZpZXcgKm5ld1dlYlZpZXcgPSBbW2N1cnJlbnRXZWJWaWV3IF9VSURlbGVnYXRlRm9yd2Fy
ZGVyXSB3ZWJWaWV3OmN1cnJlbnRXZWJWaWV3Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDpuaWwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpbmRvd0ZlYXR1cmVzOmZlYXR1cmVzLmdldCgpXTsKKyAgICAgICAgICAgIFdl
YlZpZXcgKm5ld1dlYlZpZXcgPSBbW2N1cnJlbnRXZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVy
XSB3ZWJWaWV3OmN1cnJlbnRXZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDpuaWwgd2lu
ZG93RmVhdHVyZXM6QHsgfV07CiAKICAgICAgICAgICAgIGlmICghbmV3V2ViVmlldykgewogICAg
ICAgICAgICAgICAgIF9XS1BITG9hZFVSTE5vdGlmeShtX3BsdWdpbkhvc3RQcm94eS0+cG9ydCgp
LCBtX3BsdWdpbklELCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgTlBFUlJfR0VORVJJQ19F
UlJPUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggZDc5NDA3MTIzMmUyMmU4MzQ0MWM1ZjhiZTM4
MGI0OGY5YWVlZjRiYy4uZmY4NjMwODY5YWVlODMzMGY3MGE4N2E4MDBmMzUyNzZjZjk3NzhhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtMjUzLDM2ICsyNTMsMjQgQEAgUGFnZSogV2ViQ2hyb21l
Q2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYg
ZmVhdHVyZXMKICNlbmRpZgogICAgIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDp3aW5kb3dGZWF0
dXJlczopXSkgewotICAgICAgICBhdXRvIHggPSBmZWF0dXJlcy54ID8gYWRvcHROUyhbW05TTnVt
YmVyIGFsbG9jXSBpbml0V2l0aEZsb2F0OipmZWF0dXJlcy54XSkgOiBuaWw7Ci0gICAgICAgIGF1
dG8geSA9IGZlYXR1cmVzLnkgPyBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoRmxv
YXQ6KmZlYXR1cmVzLnldKSA6IG5pbDsKLSAgICAgICAgYXV0byB3aWR0aCA9IGZlYXR1cmVzLndp
ZHRoID8gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEZsb2F0OipmZWF0dXJlcy53
aWR0aF0pIDogbmlsOwotICAgICAgICBhdXRvIGhlaWdodCA9IGZlYXR1cmVzLmhlaWdodCA/IGFk
b3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhGbG9hdDoqZmVhdHVyZXMuaGVpZ2h0XSkg
OiBuaWw7Ci0gICAgICAgIGF1dG8gbWVudUJhclZpc2libGUgPSBhZG9wdE5TKFtbTlNOdW1iZXIg
YWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy5tZW51QmFyVmlzaWJsZV0pOwotICAgICAgICBh
dXRvIHN0YXR1c0JhclZpc2libGUgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRo
Qm9vbDpmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlXSk7Ci0gICAgICAgIGF1dG8gdG9vbEJhclZp
c2libGUgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoQm9vbDpmZWF0dXJlcy50
b29sQmFyVmlzaWJsZV0pOwotICAgICAgICBhdXRvIHNjcm9sbGJhcnNWaXNpYmxlID0gYWRvcHRO
UyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2li
bGVdKTsKLSAgICAgICAgYXV0byByZXNpemFibGUgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2Nd
IGluaXRXaXRoQm9vbDpmZWF0dXJlcy5yZXNpemFibGVdKTsKLSAgICAgICAgYXV0byBmdWxsc2Ny
ZWVuID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEJvb2w6ZmVhdHVyZXMuZnVs
bHNjcmVlbl0pOwotICAgICAgICBhdXRvIGRpYWxvZyA9IGFkb3B0TlMoW1tOU051bWJlciBhbGxv
Y10gaW5pdFdpdGhCb29sOmZlYXR1cmVzLmRpYWxvZ10pOwotICAgICAgICAKICAgICAgICAgYXV0
byBkaWN0RmVhdHVyZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dFdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lbnVCYXJWaXNpYmxlLmdldCgpLCBAIm1lbnVCYXJWaXNpYmxlIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0JhclZpc2libGUu
Z2V0KCksIEAic3RhdHVzQmFyVmlzaWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0b29sQmFyVmlzaWJsZS5nZXQoKSwgQCJ0b29sQmFyVmlzaWJsZSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxiYXJz
VmlzaWJsZS5nZXQoKSwgQCJzY3JvbGxiYXJzVmlzaWJsZSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemFibGUuZ2V0KCksIEAicmVzaXphYmxlIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW4u
Z2V0KCksIEAiZnVsbHNjcmVlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWFsb2cuZ2V0KCksIEAiZGlhbG9nIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEAoZmVhdHVyZXMubWVudUJhclZpc2libGUpLCBAIm1l
bnVCYXJWaXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEAoZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSksIEAic3RhdHVzQmFyVmlzaWJsZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAKGZlYXR1cmVzLnRv
b2xCYXJWaXNpYmxlKSwgQCJ0b29sQmFyVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBAKGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlKSwgQCJz
Y3JvbGxiYXJzVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBAKGZlYXR1cmVzLnJlc2l6YWJsZSksIEAicmVzaXphYmxlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAoZmVhdHVyZXMuZnVsbHNjcmVlbiks
IEAiZnVsbHNjcmVlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBAKGZlYXR1cmVzLmRpYWxvZyksIEAiZGlhbG9nIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF0pOwogICAgICAgICAKLSAgICAgICAgaWYgKHgp
Ci0gICAgICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDp4LmdldCgpIGZvcktleTpAIngi
XTsKLSAgICAgICAgaWYgKHkpCi0gICAgICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDp5
LmdldCgpIGZvcktleTpAInkiXTsKLSAgICAgICAgaWYgKHdpZHRoKQotICAgICAgICAgICAgW2Rp
Y3RGZWF0dXJlcyBzZXRPYmplY3Q6d2lkdGguZ2V0KCkgZm9yS2V5OkAid2lkdGgiXTsKLSAgICAg
ICAgaWYgKGhlaWdodCkKLSAgICAgICAgICAgIFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0OmhlaWdo
dC5nZXQoKSBmb3JLZXk6QCJoZWlnaHQiXTsKKyAgICAgICAgaWYgKGZlYXR1cmVzLngpCisgICAg
ICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDpAKCpmZWF0dXJlcy54KSBmb3JLZXk6QCJ4
Il07CisgICAgICAgIGlmIChmZWF0dXJlcy55KQorICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBz
ZXRPYmplY3Q6QCgqZmVhdHVyZXMueSkgZm9yS2V5OkAieSJdOworICAgICAgICBpZiAoZmVhdHVy
ZXMud2lkdGgpCisgICAgICAgICAgICBbZGljdEZlYXR1cmVzIHNldE9iamVjdDpAKCpmZWF0dXJl
cy53aWR0aCkgZm9yS2V5OkAid2lkdGgiXTsKKyAgICAgICAgaWYgKGZlYXR1cmVzLmhlaWdodCkK
KyAgICAgICAgICAgIFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0OkAoKmZlYXR1cmVzLmhlaWdodCkg
Zm9yS2V5OkAiaGVpZ2h0Il07CiAgICAgICAgIAogICAgICAgICBuZXdXZWJWaWV3ID0gQ2FsbFVJ
RGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJl
cXVlc3Q6d2luZG93RmVhdHVyZXM6KSwgbmlsLCBkaWN0RmVhdHVyZXMuZ2V0KCkpOwogICAgIH0g
ZWxzZSBpZiAoZmVhdHVyZXMuZGlhbG9nICYmIFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld01vZGFsRGlhbG9nV2l0aFJlcXVlc3Q6KV0p
IHsKQEAgLTQ1MCwyMiArNDM4LDIyIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphZGRNZXNzYWdl
VG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2CiAgICAgfQog
CiAgICAgTlNTdHJpbmcgKm1lc3NhZ2VTb3VyY2UgPSBzdHJpbmdGb3JNZXNzYWdlU291cmNlKHNv
dXJjZSk7Ci0gICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgKE5TU3RyaW5nICopbWVzc2FnZSwg
QCJtZXNzYWdlIiwKLSAgICAgICAgQChsaW5lTnVtYmVyKSwgQCJsaW5lTnVtYmVyIiwKLSAgICAg
ICAgQChjb2x1bW5OdW1iZXIpLCBAImNvbHVtbk51bWJlciIsCi0gICAgICAgIChOU1N0cmluZyAq
KXNvdXJjZVVSTCwgQCJzb3VyY2VVUkwiLAotICAgICAgICBtZXNzYWdlU291cmNlLCBAIk1lc3Nh
Z2VTb3VyY2UiLAotICAgICAgICBzdHJpbmdGb3JNZXNzYWdlTGV2ZWwobGV2ZWwpLCBAIk1lc3Nh
Z2VMZXZlbCIsCi0gICAgICAgIE5VTExdKTsKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBAeworICAg
ICAgICBAIm1lc3NhZ2UiOiAoTlNTdHJpbmcgKiltZXNzYWdlLAorICAgICAgICBAImxpbmVOdW1i
ZXIiOiBAKGxpbmVOdW1iZXIpLAorICAgICAgICBAImNvbHVtbk51bWJlciI6IEAoY29sdW1uTnVt
YmVyKSwKKyAgICAgICAgQCJzb3VyY2VVUkwiOiAoTlNTdHJpbmcgKilzb3VyY2VVUkwsCisgICAg
ICAgIEAiTWVzc2FnZVNvdXJjZSI6IG1lc3NhZ2VTb3VyY2UsCisgICAgICAgIEAiTWVzc2FnZUxl
dmVsIjogc3RyaW5nRm9yTWVzc2FnZUxldmVsKGxldmVsKSwKKyAgICB9OwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICBbW1ttX3dlYlZpZXcgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJd
IGFzeW5jRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBhZGRNZXNzYWdlVG9Db25zb2xlOmRp
Y3Rpb25hcnkuZ2V0KCkgd2l0aFNvdXJjZTptZXNzYWdlU291cmNlXTsKKyAgICBbW1ttX3dlYlZp
ZXcgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIGFzeW5jRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2Vi
VmlldyBhZGRNZXNzYWdlVG9Db25zb2xlOmRpY3Rpb25hcnkgd2l0aFNvdXJjZTptZXNzYWdlU291
cmNlXTsKICNlbHNlCiAgICAgaWYgKHJlc3BvbmRzVG9OZXdTZWxlY3RvcikKLSAgICAgICAgQ2Fs
bFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3RvciwgZGljdGlvbmFyeS5nZXQoKSwgbWVzc2Fn
ZVNvdXJjZSk7CisgICAgICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIGRp
Y3Rpb25hcnksIG1lc3NhZ2VTb3VyY2UpOwogICAgIGVsc2UKLSAgICAgICAgQ2FsbFVJRGVsZWdh
dGUobV93ZWJWaWV3LCBzZWxlY3RvciwgZGljdGlvbmFyeS5nZXQoKSk7CisgICAgICAgIENhbGxV
SURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIGRpY3Rpb25hcnkpOwogI2VuZGlmCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQppbmRleCAwYTE2NDljMGE4MjNhNTkwOGEzMzMwMjYzZDI3ZWMwNzQ4
MWQ5Y2JjLi5hYzdkMTY0OGNiODI5NGI3ODQ2Y2FmMDUyZDU3NDkyYjRlMjJhNGFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tCkBAIC00NTQsOSArNDU0LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqYXR0
cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKICAgICAgICAgW2V4Y2x1ZGVk
RWxlbWVudHMgYWRkT2JqZWN0OkAib2JqZWN0Il07CiAjZW5kaWYKIAotICAgIE5TRGljdGlvbmFy
eSAqZGljdGlvbmFyeSA9IEB7IE5TRXhjbHVkZWRFbGVtZW50c0RvY3VtZW50QXR0cmlidXRlOiBl
eGNsdWRlZEVsZW1lbnRzLmdldCgpIH07Ci0KLSAgICByZXR1cm4gZGljdGlvbmFyeTsKKyAgICBy
ZXR1cm4gQHsgTlNFeGNsdWRlZEVsZW1lbnRzRG9jdW1lbnRBdHRyaWJ1dGU6IGV4Y2x1ZGVkRWxl
bWVudHMuZ2V0KCkgfTsKIH0KIAogdm9pZCBfV2ViQ3JlYXRlRnJhZ21lbnQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgRnJhZ21lbnRBbmRSZXNvdXJjZXMm
IHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggYjNhY2MxNWQ1MzJmNDEz
MWQ5MmY4NmJmMWYyNWUwZDEyNDI5OGE0Ny4uODkzODcwYTU0NWI5Yjc1NGY0MWQ0YjZjNTZiOTUx
M2IxNDY4ZDY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTE1NjUsOCArMTU2
NSw3IEBAIE5TRGljdGlvbmFyeSAqV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25h
cnkoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjCiAKICAgICBpZiAoYXV0byBtb3VzZUV2ZW50
RGF0YSA9IGFjdGlvbi5tb3VzZUV2ZW50RGF0YSgpKSB7CiAgICAgICAgIGNvbnN0ZXhwciBPcHRp
b25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6RGlz
YWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZy
YW1lQ29udGVudCB9OwotICAgICAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdE5TKFtbV2ViRWxlbWVu
dERpY3Rpb25hcnkgYWxsb2NdCi0gICAgICAgICAgICBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6Y29y
ZShtX3dlYkZyYW1lLmdldCgpKS0+ZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQo
bW91c2VFdmVudERhdGEtPmFic29sdXRlTG9jYXRpb24sIGhpdFR5cGUpXSk7CisgICAgICAgIGF1
dG8gZWxlbWVudCA9IGFkb3B0TlMoW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxvY10gaW5pdFdp
dGhIaXRUZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFuZGxlcigpLmhp
dFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnREYXRhLT5hYnNvbHV0ZUxvY2F0aW9uLCBoaXRU
eXBlKV0pOwogICAgICAgICBbcmVzdWx0IHNldE9iamVjdDplbGVtZW50LmdldCgpIGZvcktleTpX
ZWJBY3Rpb25FbGVtZW50S2V5XTsKIAogICAgICAgICBpZiAobW91c2VFdmVudERhdGEtPmlzVHJ1
c3RlZCkKQEAgLTE2MDksMTAgKzE2MDgsOCBAQCBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYgogICAg
IEFTU0VSVChtX3dlYkZyYW1lKTsKICAgICAKICAgICBhdXRvIGNoaWxkVmlldyA9IGFkb3B0TlMo
W1tXZWJGcmFtZVZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICAKLSAgICBSZWZQdHI8V2ViQ29yZTo6
RnJhbWU+IHJlc3VsdCA9IFtXZWJGcmFtZSBfY3JlYXRlU3ViZnJhbWVXaXRoT3duZXJFbGVtZW50
OiZvd25lckVsZW1lbnQgZnJhbWVOYW1lOm5hbWUgZnJhbWVWaWV3OmNoaWxkVmlldy5nZXQoKV07
Ci0KLSAgICBXZWJGcmFtZSAqbmV3RnJhbWUgPSBraXQocmVzdWx0LmdldCgpKTsKKyAgICBhdXRv
IHJlc3VsdCA9IFtXZWJGcmFtZSBfY3JlYXRlU3ViZnJhbWVXaXRoT3duZXJFbGVtZW50OiZvd25l
ckVsZW1lbnQgZnJhbWVOYW1lOm5hbWUgZnJhbWVWaWV3OmNoaWxkVmlldy5nZXQoKV07CisgICAg
YXV0byBuZXdGcmFtZSA9IGtpdChyZXN1bHQucHRyKCkpOwogCiAgICAgaWYgKFtuZXdGcmFtZSBf
ZGF0YVNvdXJjZV0pCiAgICAgICAgIFtbbmV3RnJhbWUgX2RhdGFTb3VyY2VdIF9kb2N1bWVudExv
YWRlcl0tPnNldE92ZXJyaWRlRW5jb2RpbmcoW1ttX3dlYkZyYW1lLmdldCgpIF9kYXRhU291cmNl
XSBfZG9jdW1lbnRMb2FkZXJdLT5vdmVycmlkZUVuY29kaW5nKCkpOyAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQubW0KaW5kZXggYTJjNTRiMzMyYjUxMWE2ZmQ5NTQ0YzJjY2JjZmRhNmExZjdiMTM5ZS4u
Yjg5ODcxODM1OTMxNjM1ZTU1YTNjZGM3NDQ4NWRjOTk2M2ZiMWFkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbQpAQCAtNTEyLDE3ICs1MTIsMTIgQEAgLSAoaWQpaW5pdFdpdGhJbnNwZWN0ZWRX
ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBpc1VuZGVyVGVzdDooQk9PTClpc1VuZGVyVGVzdAog
ICAgIF9pbnNwZWN0ZWRXZWJWaWV3ID0gd2ViVmlldzsKIAogICAgIE5TU3RyaW5nICpwYWdlUGF0
aCA9IGlzVW5kZXJUZXN0ID8gW3NlbGYgaW5zcGVjdG9yVGVzdFBhZ2VQYXRoXSA6IFtzZWxmIGlu
c3BlY3RvclBhZ2VQYXRoXTsKLSAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1
ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOiBwYWdlUGF0aF1d
KTsKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0
V2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhZ2VQYXRoXV0pOwogICAgIFtbX2Zyb250
ZW5kV2ViVmlldyBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOwogCiAgICAg
cmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtzdXBlciBkZWFsbG9j
XTsKLX0KLQogLy8gTUFSSzogLQogCiAtIChOU1N0cmluZyAqKWluc3BlY3RvclBhZ2VQYXRoCkBA
IC01NjcsNyArNTYyLDcgQEAgLSAoTlNXaW5kb3cgKil3aW5kb3cKICAgICBbd2luZG93IHNldE1p
bkZ1bGxTY3JlZW5Db250ZW50U2l6ZTpOU01ha2VTaXplKG1pbmltdW1GdWxsU2NyZWVuV2lkdGgs
IG1pbmltdW1XaW5kb3dIZWlnaHQpXTsKICAgICBbd2luZG93IHNldENvbGxlY3Rpb25CZWhhdmlv
cjooW3dpbmRvdyBjb2xsZWN0aW9uQmVoYXZpb3JdIHwgTlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZp
b3JGdWxsU2NyZWVuQWxsb3dzVGlsaW5nKV07CiAKLSAgICBbd2luZG93IHNldFRpdGxlYmFyQXBw
ZWFyc1RyYW5zcGFyZW50OiBZRVNdOworICAgIFt3aW5kb3cgc2V0VGl0bGViYXJBcHBlYXJzVHJh
bnNwYXJlbnQ6WUVTXTsKIAogICAgIFtzZWxmIHNldFdpbmRvdzp3aW5kb3cuZ2V0KCldOwogICAg
IHJldHVybiB3aW5kb3cuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggNjQ4YTQ0MGJlMjQzYWE5N2IwOWY3MjNkMzY0NzBm
MmE4OGNiOTU1Yi4uYzE0NmYxNjA1ZjM4MzhlMjg5NWFjOTAzMGMzYmZkOGU5MTQ4ZGZlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpA
QCAtMzE3LDEyICszMTcsOSBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJh
Z21lbnRXaXRoQXJjaGl2ZTooV2ViQXJjaGl2ZSAqKWFyY2hpdmUKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBzZWVtcyBwb29yIGZvcm0gdG8gZG8gdGhpcyBhcyBhIHNpZGUgZWZmZWN0IG9mIGdldHRp
bmcgYSBkb2N1bWVudCBmcmFnbWVudAogICAgICAgICAgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+
bG9hZGVyLT5hZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCpbYXJjaGl2ZSBfY29yZUxlZ2FjeVdlYkFy
Y2hpdmVdKTsKIAotICAgICAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBb
W3NlbGYgd2ViRnJhbWVdIF9kb2N1bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzptYXJrdXBT
dHJpbmcuZ2V0KCkgYmFzZVVSTFN0cmluZzpbW21haW5SZXNvdXJjZSBVUkxdIF93ZWJfb3JpZ2lu
YWxEYXRhQXNTdHJpbmddXTsKLSAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKLSAgICAgICAg
fSBlbHNlIGlmIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlN
RVR5cGUoTUlNRVR5cGUpKSB7CisgICAgICAgICAgICByZXR1cm4gW1tzZWxmIHdlYkZyYW1lXSBf
ZG9jdW1lbnRGcmFnbWVudFdpdGhNYXJrdXBTdHJpbmc6bWFya3VwU3RyaW5nLmdldCgpIGJhc2VV
UkxTdHJpbmc6W1ttYWluUmVzb3VyY2UgVVJMXSBfd2ViX29yaWdpbmFsRGF0YUFzU3RyaW5nXV07
CisgICAgICAgIH0gZWxzZSBpZiAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlKE1JTUVUeXBlKSkKICAgICAgICAgICAgIHJldHVybiBbc2VsZiBfZG9j
dW1lbnRGcmFnbWVudFdpdGhJbWFnZVJlc291cmNlOm1haW5SZXNvdXJjZV07Ci0gICAgICAgICAg
ICAKLSAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gbmlsOwogfQpAQCAtMzg0LDcgKzM4MSw3
IEBAIC0gKHZvaWQpX21ha2VSZXByZXNlbnRhdGlvbgogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGRh
dGEgc291cmNlIHdhcyBhbHJlYWR5IGJvdW5kPwogICAgIGlmICghW1tzZWxmIHJlcHJlc2VudGF0
aW9uXSBpc0tpbmRPZkNsYXNzOnJlcENsYXNzXSkgewotICAgICAgICBSZXRhaW5QdHI8aWQ+IG5l
d1JlcCA9IHJlcENsYXNzICE9IG5pbCA/IGFkb3B0TlMoWyhOU09iamVjdCAqKVtyZXBDbGFzcyBh
bGxvY10gaW5pdF0pIDogbmlsOworICAgICAgICBSZXRhaW5QdHI8aWQ+IG5ld1JlcCA9IHJlcENs
YXNzID8gYWRvcHROUyhbW3JlcENsYXNzIGFsbG9jXSBpbml0XSkgOiBuaWw7CiAgICAgICAgIFtz
ZWxmIF9zZXRSZXByZXNlbnRhdGlvbjooaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KW5l
d1JlcC5nZXQoKV07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQppbmRleCA0ZTEzNDYyODM2MGU4MjZhYTg4NTc1NTUyYmZhMTEwNDdmYTBjMTc0
Li4zYzRlNGJiMzk2MDY1ODE3NDg0MzcxYzMwZTQzYzc1YzY2NTI2NTM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTE4NywxMSArMTg3LDYgQEAg
TlNTdHJpbmcgKk5TQWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFjZUF0dHJpYnV0ZSA9
IEAiQVhFbmhhbmNlZFVzZXJJbnRlcmYKIAogQGltcGxlbWVudGF0aW9uIFdlYkZyYW1lUHJpdmF0
ZQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0gKHZv
aWQpc2V0V2ViRnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKil2CiB7IAogICAgIHdlYkZyYW1lVmll
dyA9IHY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3
Lm1tCmluZGV4IGI2MTZmYTdiZjY0ZTRkOTc5ZmJkMDY4MWFiYjNhZjAzOTI2M2E4NDguLjk0ZTBj
OTJlMWQyM2Q3NWVmMTJlNzc1OWE5OWMzNGM4MWY1YmNkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCkBAIC0xMTcsMTEgKzExNyw2IEBA
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkZyYW1lVmlld1ByaXZhdGUKIAotLSAodm9pZClk
ZWFsbG9jCi17Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCiBAZW5kCiAKIEBpbXBsZW1lbnRh
dGlvbiBXZWJGcmFtZVZpZXcgKFdlYkZyYW1lVmlld0ZpbGVJbnRlcm5hbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDY2ZmI4MTY4Njdj
MTUxOTk1ZGJmNTVkMTczNTdiMGU5ZTIxMDE5YWEuLjE3NGZkMzRiMDM1YzE5ZTdjN2QwNGQyMTBj
Zjc5Y2ZiOTUzMzkyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQpAQCAtMTkxMSwxMCArMTkxMSw3IEBAIC0gKHZvaWQpX3VwZGF0ZU1vdXNl
b3ZlcldpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50CiAgICAgTlNWaWV3ICpoaXRWaWV3ID0gW2Nv
bnRlbnRWaWV3IGhpdFRlc3Q6bG9jYXRpb25Gb3JIaXRUZXN0XTsKICAgICBmb3JjZVdlYkhUTUxW
aWV3SGl0VGVzdCA9IE5POwogICAgIAotICAgIFJldGFpblB0cjxXZWJIVE1MVmlldz4gdmlldzsK
LSAgICBpZiAoW2hpdFZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkKLSAg
ICAgICAgdmlldyA9IChXZWJIVE1MVmlldyAqKWhpdFZpZXc7ICAgIAotCisgICAgYXV0byB2aWV3
ID0gcmV0YWluUHRyKGR5bmFtaWNfb2JqY19jYXN0PFdlYkhUTUxWaWV3PihoaXRWaWV3KSk7CiAg
ICAgaWYgKGxhc3RIaXRWaWV3ICE9IHZpZXcgJiYgbGFzdEhpdFZpZXcgJiYgW2xhc3RIaXRWaWV3
IF9mcmFtZV0pIHsKICAgICAgICAgLy8gSWYgd2UgYXJlIG1vdmluZyBvdXQgb2YgYSB2aWV3IChv
ciBmcmFtZSksIGxldCdzIHByZXRlbmQgdGhlIG1vdXNlIG1vdmVkCiAgICAgICAgIC8vIGFsbCB0
aGUgd2F5IG91dCBvZiB0aGF0IHZpZXcuIEJ1dCB3ZSBoYXZlIHRvIGFjY291bnQgZm9yIHNjcm9s
bGluZywgYmVjYXVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJOYXZpZ2F0aW9uRGF0YS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViTmF2aWdhdGlvbkRhdGEubW0KaW5kZXggNjM4YzNhNWU0Zjc5YzIxMjkwODVmMzAzY2VkZWZm
ZDhmY2Y0MDYyZS4uOTRkY2VjNTgwNWVkN2MyNzFkYTYzNDg3YzYzOGZkMDgxYmVjOWYzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJOYXZpZ2F0aW9uRGF0
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk5hdmlnYXRpb25E
YXRhLm1tCkBAIC00MSwxMSArNDEsNiBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJOYXZp
Z2F0aW9uRGF0YVByaXZhdGUKIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3N1cGVyIGRlYWxs
b2NdOwotfQotCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJOYXZpZ2F0aW9uRGF0YQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50
YXRpb24ubW0KaW5kZXggNTJmMzBhMDk2YTEyYTJjMDQzYjU1NmZjOTQzZWM5ZWU0ZmRkZTk0NS4u
NDMyOGMyNjViNmJkNDBmMmFiMjZlNzRmMTBmZjU5YTRkNWNjNzQ4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1t
CkBAIC0xMjEsMTIgKzEyMSwxMCBAQCAtICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291
cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogICAgIH0KIAogICAgIFdlYlBERlZpZXcg
KnZpZXcgPSAoV2ViUERGVmlldyAqKVtbW2RhdGFTb3VyY2Ugd2ViRnJhbWVdIGZyYW1lVmlld10g
ZG9jdW1lbnRWaWV3XTsKLSAgICBhdXRvIGRvYyA9IGFkb3B0TlMoW1tbW3NlbGYgY2xhc3NdIFBE
RkRvY3VtZW50Q2xhc3NdIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV0pOwotICAgIFt2aWV3IHNl
dFBERkRvY3VtZW50OmRvYy5nZXQoKV07Ci0KLSAgICBOU0FycmF5ICpzY3JpcHRzID0gYWxsU2Ny
aXB0c0luUERGRG9jdW1lbnQoZG9jLmdldCgpKTsKLSAgICBkb2MgPSBuaWw7CisgICAgYXV0byBk
b2N1bWVudCA9IGFkb3B0TlMoW1tbW3NlbGYgY2xhc3NdIFBERkRvY3VtZW50Q2xhc3NdIGFsbG9j
XSBpbml0V2l0aERhdGE6ZGF0YV0pOworICAgIFt2aWV3IHNldFBERkRvY3VtZW50OmRvY3VtZW50
LmdldCgpXTsKIAorICAgIE5TQXJyYXkgKnNjcmlwdHMgPSBhbGxTY3JpcHRzSW5QREZEb2N1bWVu
dChkb2N1bWVudC5nZXQoKSk7CiAgICAgaWYgKCFbc2NyaXB0cyBjb3VudF0pCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQ
REZWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1t
CmluZGV4IDg1MjExY2EwZjkyMjc4ODZiYWE4OWVmYzM4ODMwZDc1YmU1MDVhZTQuLmIwODRiZDMw
MTVhNjA1MzIzN2U2ZDE3ZjIwN2E2MDg3YzUwMDc5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KQEAgLTExMDEsMTkgKzExMDEsMTkgQEAgLSAo
TlNNdXRhYmxlQXJyYXkgKilfbWVudUl0ZW1zRnJvbVBERktpdEZvckV2ZW50OihOU0V2ZW50ICop
dGhlRXZlbnQKICAgICBOU011dGFibGVBcnJheSAqY29waWVkSXRlbXMgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXldOwogCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVuZGVjbGFyZWQtc2VsZWN0b3Ii
KQotICAgIGF1dG8gYWN0aW9uc1RvVGFncyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgIEAoV2ViTWVudUl0ZW1QREZBY3R1YWxT
aXplKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRBY3R1YWxTaXplOikpLAot
ICAgICAgICBAKFdlYk1lbnVJdGVtUERGWm9vbUluKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNl
bGVjdG9yKHpvb21JbjopKSwKLSAgICAgICAgQChXZWJNZW51SXRlbVBERlpvb21PdXQpLCBOU1N0
cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3Ioem9vbU91dDopKSwKLSAgICAgICAgQChXZWJNZW51
SXRlbVBERkF1dG9TaXplKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRBdXRv
U2l6ZTopKSwKLSAgICAgICAgQChXZWJNZW51SXRlbVBERlNpbmdsZVBhZ2UpLCBOU1N0cmluZ0Zy
b21TZWxlY3RvcihAc2VsZWN0b3IoX3NldFNpbmdsZVBhZ2U6KSksCi0gICAgICAgIEAoV2ViTWVu
dUl0ZW1QREZTaW5nbGVQYWdlU2Nyb2xsaW5nKSwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVj
dG9yKF9zZXRTaW5nbGVQYWdlU2Nyb2xsaW5nOikpLAotICAgICAgICBAKFdlYk1lbnVJdGVtUERG
RmFjaW5nUGFnZXMpLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldERvdWJsZVBh
Z2U6KSksCi0gICAgICAgIEAoV2ViTWVudUl0ZW1QREZGYWNpbmdQYWdlc1Njcm9sbGluZyksIE5T
U3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihfc2V0RG91YmxlUGFnZVNjcm9sbGluZzopKSwK
LSAgICAgICAgQChXZWJNZW51SXRlbVBERkNvbnRpbnVvdXMpLCBOU1N0cmluZ0Zyb21TZWxlY3Rv
cihAc2VsZWN0b3IoX3RvZ2dsZUNvbnRpbnVvdXM6KSksCi0gICAgICAgIEAoV2ViTWVudUl0ZW1Q
REZOZXh0UGFnZSksIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcihnb1RvTmV4dFBhZ2U6
KSksCi0gICAgICAgIEAoV2ViTWVudUl0ZW1QREZQcmV2aW91c1BhZ2UpLCBOU1N0cmluZ0Zyb21T
ZWxlY3RvcihAc2VsZWN0b3IoZ29Ub1ByZXZpb3VzUGFnZTopKSwKLSAgICAgICAgbmlsXSk7Cisg
ICAgYXV0byBhY3Rpb25zVG9UYWdzID0gQHsKKyAgICAgICAgTlNTdHJpbmdGcm9tU2VsZWN0b3Io
QHNlbGVjdG9yKF9zZXRBY3R1YWxTaXplOikpOiBAKFdlYk1lbnVJdGVtUERGQWN0dWFsU2l6ZSks
CisgICAgICAgIE5TU3RyaW5nRnJvbVNlbGVjdG9yKEBzZWxlY3Rvcih6b29tSW46KSk6IEAoV2Vi
TWVudUl0ZW1QREZab29tSW4pLAorICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0
b3Ioem9vbU91dDopKTogQChXZWJNZW51SXRlbVBERlpvb21PdXQpLAorICAgICAgICBOU1N0cmlu
Z0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldEF1dG9TaXplOikpOiBAKFdlYk1lbnVJdGVtUERG
QXV0b1NpemUpLAorICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3NldFNp
bmdsZVBhZ2U6KSk6IEAoV2ViTWVudUl0ZW1QREZTaW5nbGVQYWdlKSwKKyAgICAgICAgTlNTdHJp
bmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXRTaW5nbGVQYWdlU2Nyb2xsaW5nOikpOiBAKFdl
Yk1lbnVJdGVtUERGU2luZ2xlUGFnZVNjcm9sbGluZyksCisgICAgICAgIE5TU3RyaW5nRnJvbVNl
bGVjdG9yKEBzZWxlY3Rvcihfc2V0RG91YmxlUGFnZTopKTogQChXZWJNZW51SXRlbVBERkZhY2lu
Z1BhZ2VzKSwKKyAgICAgICAgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKF9zZXREb3Vi
bGVQYWdlU2Nyb2xsaW5nOikpOiBAKFdlYk1lbnVJdGVtUERGRmFjaW5nUGFnZXNTY3JvbGxpbmcp
LAorICAgICAgICBOU1N0cmluZ0Zyb21TZWxlY3RvcihAc2VsZWN0b3IoX3RvZ2dsZUNvbnRpbnVv
dXM6KSk6IEAoV2ViTWVudUl0ZW1QREZDb250aW51b3VzKSwKKyAgICAgICAgTlNTdHJpbmdGcm9t
U2VsZWN0b3IoQHNlbGVjdG9yKGdvVG9OZXh0UGFnZTopKTogQChXZWJNZW51SXRlbVBERk5leHRQ
YWdlKSwKKyAgICAgICAgTlNTdHJpbmdGcm9tU2VsZWN0b3IoQHNlbGVjdG9yKGdvVG9QcmV2aW91
c1BhZ2U6KSk6IEAoV2ViTWVudUl0ZW1QREZQcmV2aW91c1BhZ2UpLAorICAgIH07CiBJR05PUkVf
V0FSTklOR1NfRU5ECiAKICAgICAvLyBMZWF2ZSB0aGVzZSBtZW51IGl0ZW1zIG91dCwgc2luY2Ug
V2ViS2l0IGluc2VydHMgZXF1aXZhbGVudCBvbmVzLiBOb3RlIHRoYXQgd2UgbGVhdmUgb3V0IFBE
RktpdCdzICJMb29rIFVwIGluIERpY3Rpb25hcnkiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBvbGljeURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQb2xpY3lEZWxlZ2F0ZS5tbQppbmRleCBlMjhhYjhmNGE4ZDIw
ZTJiZDA1NWUxOWQ3ZGQzOTUyNWY1YjEwZmRlLi44YzAwNDdkMjFiN2Q0MDRlYTFmYjAzZjY1NzU1
YmUxNDBhZTliMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlBvbGljeURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUG9saWN5RGVsZWdhdGUubW0KQEAgLTYzLDExICs2Myw2IEBAIC0gKGlkKWluaXRXaXRo
VGFyZ2V0OihpZCl0IGFjdGlvbjooU0VMKWEKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9p
ZClkZWFsbG9jCi17Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQppbmRleCBiMmY0MjI3ODIx
ZmUxN2E0NTE3MjY0YzlmMmU4MTMyZjQyNGM0Y2UyLi40ODliNDhkYzcxYmQwMzk1YjcyNTQ2Nzky
YWU3ODQzNWNkZDM2ZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KQEAgLTk2LDkgKzk2LDE4IEBAIHZvaWQgV2ViU2Ny
aXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKCiAgICAgICAgICAgICAgICAgQ2FsbFNjcmlwdERlYnVnRGVsZWdhdGUoaW1w
bGVtZW50YXRpb25zLT5kaWRQYXJzZVNvdXJjZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJW
aWV3OmRpZFBhcnNlU291cmNlOmZyb21VUkw6c291cmNlSWQ6Zm9yV2ViRnJhbWU6KSwgbnNTb3Vy
Y2UsIFtuc1VSTCBhYnNvbHV0ZVN0cmluZ10sIHNvdXJjZVByb3ZpZGVyLT5hc0lEKCksIHdlYkZy
YW1lKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIE5TU3RyaW5nKiBuc0Vycm9y
TWVzc2FnZSA9IG5zU3RyaW5nTmlsSWZFbXB0eShlcnJvck1zZyk7Ci0gICAgICAgIGF1dG8gaW5m
byA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6
bnNFcnJvck1lc3NhZ2UsIFdlYlNjcmlwdEVycm9yRGVzY3JpcHRpb25LZXksIEAoZXJyb3JMaW5l
KSwgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmVyS2V5LCBuaWxdKTsKLSAgICAgICAgYXV0byBlcnJv
ciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpXZWJTY3JpcHRFcnJv
ckRvbWFpbiBjb2RlOldlYlNjcmlwdEdlbmVyYWxFcnJvckNvZGUgdXNlckluZm86aW5mby5nZXQo
KV0pOworICAgICAgICBOU0RpY3Rpb25hcnkgKmluZm87CisgICAgICAgIGlmIChlcnJvck1zZy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGluZm8gPSBAeworICAgICAgICAgICAgICAgIFdlYlNj
cmlwdEVycm9yTGluZU51bWJlcktleTogQChlcnJvckxpbmUpLAorICAgICAgICAgICAgfTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluZm8gPSBAeworICAgICAgICAgICAgICAgIFdl
YlNjcmlwdEVycm9yRGVzY3JpcHRpb25LZXk6IChOU1N0cmluZyAqKWVycm9yTXNnLAorICAgICAg
ICAgICAgICAgIFdlYlNjcmlwdEVycm9yTGluZU51bWJlcktleTogQChlcnJvckxpbmUpLAorICAg
ICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICBhdXRvIGVycm9yID0gYWRvcHROUyhbW05T
RXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldlYlNjcmlwdEVycm9yRG9tYWluIGNvZGU6V2Vi
U2NyaXB0R2VuZXJhbEVycm9yQ29kZSB1c2VySW5mbzppbmZvXSk7CiAKICAgICAgICAgaWYgKGlt
cGxlbWVudGF0aW9ucy0+ZmFpbGVkVG9QYXJzZVNvdXJjZUZ1bmMpCiAgICAgICAgICAgICBDYWxs
U2NyaXB0RGVidWdEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmZhaWxlZFRvUGFyc2VTb3VyY2VG
dW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpmYWlsZWRUb1BhcnNlU291cmNlOmJhc2VM
aW5lTnVtYmVyOmZyb21VUkw6d2l0aEVycm9yOmZvcldlYkZyYW1lOiksIG5zU291cmNlLCBmaXJz
dExpbmUsIG5zVVJMLCBlcnJvci5nZXQoKSwgd2ViRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDIzZjRkMmNjZjI5YWMwNzc2NTllZjdlM2Fh
ODNlNjAwNDhlNTRjMTkuLjQ4ZTkyMGRlMDk4MTc2MjA1NjY0N2UwMWNmNTU5N2ZlYzAyZmNlZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI1Nzgs
MTAgKzI1NzgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoV2Vi
VmlldyAqKV9vcGVuTmV3V2luZG93V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QK
IHsKLSAgICBhdXRvIGZlYXR1cmVzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOwotICAgIFdlYlZpZXcgKm5ld1dpbmRvd1dlYlZpZXcgPSBbW3NlbGYgX1VJRGVsZWdhdGVG
b3J3YXJkZXJdIHdlYlZpZXc6c2VsZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6bmlsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dGZWF0dXJlczpmZWF0
dXJlcy5nZXQoKV07CisgICAgV2ViVmlldyAqbmV3V2luZG93V2ViVmlldyA9IFtbc2VsZiBfVUlE
ZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzpzZWxmIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDpu
aWwgd2luZG93RmVhdHVyZXM6QHsgfV07CiAgICAgaWYgKCFuZXdXaW5kb3dXZWJWaWV3KQogICAg
ICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYldpbmRvd0FuaW1hdGlvbi5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJXaW5kb3dBbmltYXRpb24uaAppbmRleCA2YjRjNGVkYzcxOTEyZjM3Mzk0MTkxMWNl
ZWM2M2RkY2VjNGI1MDAyLi41OGU4NGYzZDBhYmU3NWM1OWNmMGQ3ZDczYTFlNDlhYmYyYTAwODc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYldpbmRvd0Fu
aW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViV2luZG93
QW5pbWF0aW9uLmgKQEAgLTI0LDEyICsyNCwxMyBAQAogICovCiAKICNpbXBvcnQgPENvY29hL0Nv
Y29hLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbnRlcmZhY2UgV2ViV2luZG93
U2NhbGVBbmltYXRpb24gOiBOU0FuaW1hdGlvbiB7CiBAcHJpdmF0ZQogICAgIE5TUmVjdCBfaW5p
dGlhbEZyYW1lLCBfZmluYWxGcmFtZSwgX3JlYWxGcmFtZTsKICAgICBOU1dpbmRvdyAqX3dpbmRv
dzsgLy8gKGFzc2lnbikKLSAgICBOU0FuaW1hdGlvbiAqX3N1YkFuaW1hdGlvbjsgLy8gKHJldGFp
bikKKyAgICBSZXRhaW5QdHI8TlNBbmltYXRpb24+IF9zdWJBbmltYXRpb247CiAgICAgTlNUaW1l
SW50ZXJ2YWwgX2hpbnRlZER1cmF0aW9uOwogfQogLSAoaWQpaW5pdFdpdGhIaW50ZWREdXJhdGlv
bjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24gd2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyBpbml0
YWxGcmFtZTooTlNSZWN0KWluaXRpYWxGcmFtZSBmaW5hbEZyYW1lOihOU1JlY3QpZmluYWxGcmFt
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViV2luZG93
QW5pbWF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJXaW5kb3dB
bmltYXRpb24ubW0KaW5kZXggZTAwYzk4OGZiNDUxMWVkNmVlN2NjMWNkNDM0NTU0MzFiNmFhZDhh
Ny4uNWRkN2UxZGI1NjU1M2NjOTI5ZTVjOTdhNGEwOGJlZTJkYmNlMDYzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJXaW5kb3dBbmltYXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJXaW5kb3dBbmltYXRpb24ubW0K
QEAgLTg0LDEyICs4NCw2IEBAIC0gKGlkKWluaXRXaXRoSGludGVkRHVyYXRpb246KE5TVGltZUlu
dGVydmFsKWR1cmF0aW9uIHdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIAotLSAodm9pZCkgZGVhbGxvYwotewotICAgIFtfc3ViQW5pbWF0aW9uIHJlbGVhc2Vd
OwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogLSAodm9pZClzZXREdXJhdGlvbjooTlNUaW1l
SW50ZXJ2YWwpZHVyYXRpb24KIHsKICAgICBbc3VwZXIgc2V0RHVyYXRpb246V2ViV2luZG93QW5p
bWF0aW9uRHVyYXRpb25Gcm9tRHVyYXRpb24oZHVyYXRpb24pXTsKQEAgLTE3OSw4ICsxNzMsNyBA
QCAtICh2b2lkKXNldEN1cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVz
cwogCiAtICh2b2lkKXNldFN1YkFuaW1hdGlvbjooTlNBbmltYXRpb24gKilhbmltYXRpb24KIHsK
LSAgICBhdXRvIG9sZEFuaW1hdGlvbiA9IGFkb3B0TlMoX3N1YkFuaW1hdGlvbik7Ci0gICAgX3N1
YkFuaW1hdGlvbiA9IFthbmltYXRpb24gcmV0YWluXTsKKyAgICBfc3ViQW5pbWF0aW9uID0gYW5p
bWF0aW9uOwogfQogCiAtIChOU1RpbWVJbnRlcnZhbClhZGRpdGlvbmFsRHVyYXRpb25OZWVkZWRU
b1JlYWNoRmluYWxGcmFtZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGMyOTc5ODA1ZWNhYjkzMzNlOWMyODg2MmI3NDRkZTZjZmJkNDk1MjMuLmQx
Y2JjODAyYjk3ZGVlNWZhNzZmM2UwMDE3MTIzNWZkNTg3ODQ4MWMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0w
Mi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBl
eHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTc4MAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzQyODIzODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgQXBwbHkgcmV2aWV3IGZlZWRiYWNrIGZyb20gRGFyaW4gQWRsZXIgYW5kIFNhbSBX
ZWluaWcgYWZ0ZXIgcjI3Mjc4OS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0
UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tOgor
ICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQpOgorCiAy
MDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVk
dWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCBkYzA0Yzg3YjU3OThhMWEyM2I2
NTQ3NTkyYzJmNDRiOWYwYmVkYjYxLi5jNThkNTQ2NWZhMDNkYmRiYWUwOTU4ZGE5NTU5YjdiNjYw
MmIzYTVjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1h
Yy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAt
MTA2NSw3ICsxMDY1LDcgQEAgdm9pZCBUZXN0UnVubmVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKCkK
IHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvIHRleHRGaWVsZCA9IGFkb3B0
TlMoW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMjApXSk7Ci0gICAgW3RleHRGaWVsZCBzZXRUYWc6IDFdOworICAgIFt0ZXh0RmllbGQgc2V0
VGFnOjFdOwogICAgIFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBjb250ZW50Vmlld10g
YWRkU3Vidmlldzp0ZXh0RmllbGQuZ2V0KCldOwogICAgIAogICAgIFt0ZXh0RmllbGQgc2V0TmV4
dEtleVZpZXc6W21haW5GcmFtZSB3ZWJWaWV3XV07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KaW5kZXggNmFmZjNmMWRkOWE5NjVjNzllMjc4
MDNjY2JkMzE0Nzc2OTY4OGE5Mi4uYWNjYmFlZDZkYjE0ZjUxODRlNDRkYmQ0NGU3ZDliZThlODJj
NjVjNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJW
aWV3TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmll
d01hYy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpkaWRJbml0
aWFsaXplQ2xpZW50cygpCiB2b2lkIFBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVs
ZCgpCiB7CiAgICAgYXV0byB0ZXh0RmllbGQgPSBhZG9wdE5TKFtbTlNUZXh0RmllbGQgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDIwKV0pOwotICAgIFt0ZXh0Rmll
bGQgc2V0VGFnOiAxXTsKKyAgICBbdGV4dEZpZWxkIHNldFRhZzoxXTsKICAgICBbW21fd2luZG93
IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnRleHRGaWVsZC5nZXQoKV07CiAKICAgICBOU1ZpZXcg
KnZpZXcgPSBwbGF0Zm9ybVZpZXcoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>