<?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>138032</bug_id>
          
          <creation_ts>2014-10-23 17:35:56 -0700</creation_ts>
          <short_desc>WebKit1 should support action menus</short_desc>
          <delta_ts>2014-10-24 16:06:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>conrad_shultz</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1043892</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-10-23 17:35:56 -0700</bug_when>
    <thetext>WebKit1 should support action menus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043894</commentid>
    <comment_count>1</comment_count>
      <attachid>240381</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-10-23 17:42:01 -0700</bug_when>
    <thetext>Created attachment 240381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043896</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-23 17:43:59 -0700</bug_when>
    <thetext>Attachment 240381 did not pass style-queue:


ERROR: Source/WebKit/mac/WebView/WebActionMenuHelper.h:31:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebView/WebActionMenuHelper.mm:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043939</commentid>
    <comment_count>3</comment_count>
      <attachid>240381</attachid>
    <who name="">mitz</who>
    <bug_when>2014-10-23 22:23:12 -0700</bug_when>
    <thetext>Comment on attachment 240381
Patch

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

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.h:26
&gt; +#import &lt;Foundation/Foundation.h&gt;

This shouldn’t be necessary thanks to the prefix header.

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.h:31
&gt; +@interface WebActionMenuHelper : NSObject
&gt; +{

More often than not, we put the curly brace on the same line as @interface. You should also add a @private line before the ivar declaration.

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:32
&gt; +

No need for this newline

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:62
&gt; +    _webView = webView;

Like I asked Tim in the other patch: what keeps us from using this ivar after the WebView is deallocated?

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:69
&gt; +    if (menu != [_webView actionMenu])

_webView.actionMenu

Maybe we should keep it in a local variable here so that we don’t call -actionMenu three times.

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:86
&gt; +    if (url == nil)

if (!url)

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:88
&gt; +

Perhaps we should assert that url is really an NSURL.

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:95
&gt; +    if (url == nil)

Ditto

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:104
&gt; +    if (domElement == nil)

!domElement

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:121
&gt; +    NSDictionary *hitTestResult = [sender representedObject];

Perhaps we should assert that this is really an NSDictionary (or nil).

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:123
&gt; +    if (url == nil)

!url

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:127
&gt; +    if (domElement == nil)

!domElement

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:134
&gt; +    QuickLookUILibrary();
&gt; +    RetainPtr&lt;QLPreviewBubble&gt; bubble = adoptNS([[NSClassFromString(@&quot;QLPreviewBubble&quot;) alloc] init]);

Instead of NSClassFromString(…), you should use getQLPreviewBubbleClass(), which takes care of loading the library, and remove the explicit QuickLookUILibrary.

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:149
&gt; +    SEL selector = nil;

SEL is not an id, so this should be nullptr, not nil.

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:191
&gt; +    return [[NSBundle bundleForClass:[WebView class]] imageForResource:name];

If you changed this to [WKView class], then it would look in the WebKit.framework bundle (rather than the WebKitLegacy.framework bundle) and you wouldn’t need to add the image to this project at all!

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:197
&gt; +    if (url == nil)

!url

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:207
&gt; +    return @[openLinkItem.get(), previewLinkItem.get(), [NSMenuItem separatorItem], readingListItem.get()];

Please add spaces after @[ and before ].

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:213
&gt; +    if (url != nil)

!url

&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:216
&gt; +    return @[];

@[       ]

&gt; Source/WebKit/mac/WebView/WebView.mm:1070
&gt; +        [self setActionMenu:actionMenu.get()];

self.actionMenu = …

&gt; Source/WebKit/mac/WebView/WebView.mm:1071
&gt; +        _private-&gt;actionMenuHelper = [[[WebActionMenuHelper alloc] initWithWebView:self] retain];

This is an over-retain, because +alloc already gives you ownership of the object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044018</commentid>
    <comment_count>4</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-10-24 12:14:48 -0700</bug_when>
    <thetext>Thank you for your comments, Dan!

(In reply to comment #3)
&gt; Comment on attachment 240381 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240381&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.h:26
&gt; &gt; +#import &lt;Foundation/Foundation.h&gt;
&gt; 
&gt; This shouldn’t be necessary thanks to the prefix header.
&gt; 

Good to know! Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.h:31
&gt; &gt; +@interface WebActionMenuHelper : NSObject
&gt; &gt; +{
&gt; 
&gt; More often than not, we put the curly brace on the same line as @interface.
&gt; You should also add a @private line before the ivar declaration.
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:32
&gt; &gt; +
&gt; 
&gt; No need for this newline
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:62
&gt; &gt; +    _webView = webView;
&gt; 
&gt; Like I asked Tim in the other patch: what keeps us from using this ivar
&gt; after the WebView is deallocated?
&gt; 

Hopefully this whole class will be deallocated while the WebView is being deallocated. WebViewData has the reference to the WebActionMenuHelper, and the WebView releases the WebViewData in its dealloc, and the WebViewData releases the WebActionMenuHelper in its dealloc. So I think we&apos;re okay, but please correct me if I am wrong.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:69
&gt; &gt; +    if (menu != [_webView actionMenu])
&gt; 
&gt; _webView.actionMenu
&gt; 
&gt; Maybe we should keep it in a local variable here so that we don’t call
&gt; -actionMenu three times.
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:86
&gt; &gt; +    if (url == nil)
&gt; 
&gt; if (!url)
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:88
&gt; &gt; +
&gt; 
&gt; Perhaps we should assert that url is really an NSURL.
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:95
&gt; &gt; +    if (url == nil)
&gt; 
&gt; Ditto
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:104
&gt; &gt; +    if (domElement == nil)
&gt; 
&gt; !domElement
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:121
&gt; &gt; +    NSDictionary *hitTestResult = [sender representedObject];
&gt; 
&gt; Perhaps we should assert that this is really an NSDictionary (or nil).
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:123
&gt; &gt; +    if (url == nil)
&gt; 
&gt; !url
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:127
&gt; &gt; +    if (domElement == nil)
&gt; 
&gt; !domElement
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:134
&gt; &gt; +    QuickLookUILibrary();
&gt; &gt; +    RetainPtr&lt;QLPreviewBubble&gt; bubble = adoptNS([[NSClassFromString(@&quot;QLPreviewBubble&quot;) alloc] init]);
&gt; 
&gt; Instead of NSClassFromString(…), you should use getQLPreviewBubbleClass(),
&gt; which takes care of loading the library, and remove the explicit
&gt; QuickLookUILibrary.
&gt; 

Oh, yay! Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:149
&gt; &gt; +    SEL selector = nil;
&gt; 
&gt; SEL is not an id, so this should be nullptr, not nil.
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:191
&gt; &gt; +    return [[NSBundle bundleForClass:[WebView class]] imageForResource:name];
&gt; 
&gt; If you changed this to [WKView class], then it would look in the
&gt; WebKit.framework bundle (rather than the WebKitLegacy.framework bundle) and
&gt; you wouldn’t need to add the image to this project at all!
&gt; 

WebKit did not want to build with this because it didn&apos;t know what a WKView does. Should I do something to forward declare it? Is that okay?

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:197
&gt; &gt; +    if (url == nil)
&gt; 
&gt; !url
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:207
&gt; &gt; +    return @[openLinkItem.get(), previewLinkItem.get(), [NSMenuItem separatorItem], readingListItem.get()];
&gt; 
&gt; Please add spaces after @[ and before ].
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:213
&gt; &gt; +    if (url != nil)
&gt; 
&gt; !url
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:216
&gt; &gt; +    return @[];
&gt; 
&gt; @[       ]
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:1070
&gt; &gt; +        [self setActionMenu:actionMenu.get()];
&gt; 
&gt; self.actionMenu = …
&gt; 

Fixed.

&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:1071
&gt; &gt; +        _private-&gt;actionMenuHelper = [[[WebActionMenuHelper alloc] initWithWebView:self] retain];
&gt; 
&gt; This is an over-retain, because +alloc already gives you ownership of the
&gt; object.

Fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044019</commentid>
    <comment_count>5</comment_count>
      <attachid>240423</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-10-24 12:17:43 -0700</bug_when>
    <thetext>Created attachment 240423
Patch that addresses Dan&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044023</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-24 12:19:48 -0700</bug_when>
    <thetext>Attachment 240423 did not pass style-queue:


ERROR: Source/WebKit/mac/WebView/WebActionMenuController.mm:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044039</commentid>
    <comment_count>7</comment_count>
      <attachid>240381</attachid>
    <who name="">mitz</who>
    <bug_when>2014-10-24 13:10:05 -0700</bug_when>
    <thetext>Comment on attachment 240381
Patch

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

&gt;&gt;&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:62
&gt;&gt;&gt; +    _webView = webView;
&gt;&gt; 
&gt;&gt; Like I asked Tim in the other patch: what keeps us from using this ivar after the WebView is deallocated?
&gt; 
&gt; Hopefully this whole class will be deallocated while the WebView is being deallocated. WebViewData has the reference to the WebActionMenuHelper, and the WebView releases the WebViewData in its dealloc, and the WebViewData releases the WebActionMenuHelper in its dealloc. So I think we&apos;re okay, but please correct me if I am wrong.

My point is more that there are no hard guarantees about object lifetimes in Objective-C. Even if the WebViewData is released, and even if that release causes it to be deallocated, and that causes the helper to be released, it’s still possible that the helper won’t be deallocated immediately, because some other object got a strong reference to it, or it found its way into an autorelease pool. In practice, perhaps this won’t matter because at least we know that once the WebView is gone, nothing can message the helper and cause it to do anything that references the WebView. If we weren’t (or aren’t) sure of that, we could do something safer and have an explicit way for the WebView’s -dealloc (or -close) to tell the helper that it’s going away.

&gt;&gt;&gt; Source/WebKit/mac/WebView/WebActionMenuHelper.mm:191
&gt;&gt;&gt; +    return [[NSBundle bundleForClass:[WebView class]] imageForResource:name];
&gt;&gt; 
&gt;&gt; If you changed this to [WKView class], then it would look in the WebKit.framework bundle (rather than the WebKitLegacy.framework bundle) and you wouldn’t need to add the image to this project at all!
&gt; 
&gt; WebKit did not want to build with this because it didn&apos;t know what a WKView does. Should I do something to forward declare it? Is that okay?

No need to forward declare, just NSClassFromString() it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044056</commentid>
    <comment_count>8</comment_count>
      <attachid>240435</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-10-24 14:01:49 -0700</bug_when>
    <thetext>Created attachment 240435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044057</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-24 14:04:13 -0700</bug_when>
    <thetext>Attachment 240435 did not pass style-queue:


ERROR: Source/WebKit/mac/WebView/WebActionMenuController.mm:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044071</commentid>
    <comment_count>10</comment_count>
      <attachid>240435</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-24 14:38:53 -0700</bug_when>
    <thetext>Comment on attachment 240435
Patch

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

&gt; Source/WebKit/mac/WebView/WebActionMenuController.mm:82
&gt; +    NSDictionary *hitTestResult = [_webView elementAtPoint:[_webView convertPoint:[event locationInWindow] fromView:nil]];

event.locationInWindow

&gt; Source/WebKit/mac/WebView/WebActionMenuController.mm:96
&gt; +    NSURL *url = [sender representedObject];

dots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044080</commentid>
    <comment_count>11</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2014-10-24 15:02:04 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/175182</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240381</attachid>
            <date>2014-10-23 17:42:01 -0700</date>
            <delta_ts>2014-10-24 12:17:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>39898</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTc1MTQyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU2LDkgKzE1NiwxMiBAQAogCQk5MzA0
QjMwMDBCMDIzNDE1MDBGNzg1MEQgLyogV2ViSWNvbkRhdGFiYXNlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDRCMkZGMEIwMjM0MTUw
MEY3ODUwRCAvKiBXZWJJY29uRGF0YWJhc2VJbnRlcm5hbC5oICovOyB9OwogCQk5MzE2MzNFQjBB
RURGRjkzMDA2MkI5MkQgLyogV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTYzM0VBMEFFREZGOTMwMDYyQjkyRCAv
KiBXZWJGcmFtZUxvYWRlckNsaWVudC5oICovOyB9OwogCQk5MzE2MzNFRjBBRURGRkFFMDA2MkI5
MkQgLyogV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE2MzNFRTBBRURGRkFFMDA2MkI5MkQgLyogV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0gKi87IH07CisJCTkzMUExMTJGMTlGNkU3NUEwMDA1MDZEOSAvKiBPcGVu
SW5OZXdXaW5kb3dUZW1wbGF0ZS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzMUExMTJFMTlGNkU3NUEwMDA1MDZEOSAvKiBPcGVuSW5OZXdXaW5k
b3dUZW1wbGF0ZS5wZGYgKi87IH07CiAJCTkzNEMxMTY3MEQ4NzEwQkIwMEMzMkFCRCAvKiBXZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0QzExNjYwRDg3MTBCQjAwQzMyQUJEIC8qIFdlYkR5bmFt
aWNTY3JvbGxCYXJzVmlld0ludGVybmFsLmggKi87IH07CiAJCTkzNEM0QTkxMEYwMTQwNkMwMDkz
NzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEM0QTkwMEYwMTQwNkMwMDkzNzJDMCAvKiBXZWJOU09iamVj
dEV4dHJhcy5tbSAqLzsgfTsKIAkJOTM0QzRBQTAwRjAxNDFGNzAwOTM3MkMwIC8qIFdlYlJlc291
cmNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzNEM0QTlGMEYwMTQxRjcwMDkzNzJDMCAvKiBXZWJSZXNvdXJjZUludGVybmFsLmggKi87
IH07CisJCTkzNUQ0NEU0MTlGOUFGRjAwMEZCNTMwNiAvKiBXZWJBY3Rpb25NZW51SGVscGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVENDRFMjE5
RjlBRkYwMDBGQjUzMDYgLyogV2ViQWN0aW9uTWVudUhlbHBlci5oICovOyB9OworCQk5MzVENDRF
NTE5RjlBRkYwMDBGQjUzMDYgLyogV2ViQWN0aW9uTWVudUhlbHBlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUQ0NEUzMTlGOUFGRjAwMEZCNTMw
NiAvKiBXZWJBY3Rpb25NZW51SGVscGVyLm1tICovOyB9OwogCQk5MzZBMkRFODBGRDJEMDgwMDBE
MzEyREIgLyogV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2QTJERTcwRkQyRDA4MDAwRDMxMkRCIC8q
IFdlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJOTM2QTJERUEwRkQyRDA4
NDAwRDMxMkRCIC8qIFdlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2QTJERTkwRkQyRDA4NDAwRDMxMkRC
IC8qIFdlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oICovOyB9OwogCQk5MzkxRjI3NTEyMUIz
OEJEMDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MUYyNzMxMjFCMzhCRDAwRUJGN0U4
IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLzsgfTsKQEAgLTY4MCw2ICs2ODMsNyBA
QAogCQk5MzE2MzNFQTBBRURGRjkzMDA2MkI5MkQgLyogV2ViRnJhbWVMb2FkZXJDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRnJhbWVMb2FkZXJDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxNjMzRUUwQUVERkZBRTAwNjJCOTJEIC8q
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViRnJhbWVMb2FkZXJDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzMTg1REI1MDY2NzlGNDIwMDVENUU3RSAvKiBXZWJIVE1MVmlld0ludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSFRN
TFZpZXdJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKKwkJOTMxQTExMkUxOUY2RTc1QTAwMDUwNkQ5IC8qIE9wZW5Jbk5ld1dp
bmRvd1RlbXBsYXRlLnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGltYWdlLnBkZjsgcGF0aCA9IE9wZW5Jbk5ld1dpbmRvd1RlbXBsYXRlLnBkZjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzRDY1OTkwMzQxM0ZGMjAwODYzNUNFIC8q
IFdlYkNsaXBWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ2xpcFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTkzM0Q2NTlBMDM0MTNGRjIwMDg2MzVDRSAvKiBXZWJD
bGlwVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9
IDQ7IHBhdGggPSBXZWJDbGlwVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTkzNDVEMTdDMDM2NUJGMzUwMDg2MzVDRSAvKiBF
bmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLm5pYjsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBQYW5l
bHMvRW5nbGlzaC5scHJvai9XZWJBdXRoZW50aWNhdGlvblBhbmVsLm5pYjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC02OTIsNiArNjk2
LDggQEAKIAkJOTM0QzExNjYwRDg3MTBCQjAwQzMyQUJEIC8qIFdlYkR5bmFtaWNTY3JvbGxCYXJz
Vmlld0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkR5bmFt
aWNTY3JvbGxCYXJzVmlld0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzNEM0QTkwMEYwMTQwNkMwMDkzNzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5TT2JqZWN0RXh0cmFzLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRDNEE5RjBGMDE0MUY3MDA5MzcyQzAgLyog
V2ViUmVzb3VyY2VJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJSZXNvdXJjZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNUQ0
NEUyMTlGOUFGRjAwMEZCNTMwNiAvKiBXZWJBY3Rpb25NZW51SGVscGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFjdGlvbk1lbnVIZWxwZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTM1RDQ0RTMxOUY5QUZGMDAwRkI1MzA2IC8qIFdlYkFjdGlvbk1l
bnVIZWxwZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJB
Y3Rpb25NZW51SGVscGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzZBMkRF
NzBGRDJEMDgwMDBEMzEyREIgLyogV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVGV4dENvbXBsZXRpb25Db250
cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzZBMkRFOTBGRDJEMDg0
MDBEMzEyREIgLyogV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkxRjI3MzEyMUIzOEJEMDBFQkY3RTggLyogV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05NzMsNiArOTc5LDcgQEAKIAkJCQkxQzlGNUVGQjE2NTFDREY3MDBDNDgwRjggLyogRG9jay5w
ZGYgKi8sCiAJCQkJMUM4QUU3NjMxOTkyRjk2NTAwQUJGNkVDIC8qIERvY2tMZWdhY3kucGRmICov
LAogCQkJCTkzOTgxMTMyMDgyNEJGMDEwMDhERjAzOCAvKiBJbmZvLnBsaXN0ICovLAorCQkJCTkz
MUExMTJFMTlGNkU3NUEwMDA1MDZEOSAvKiBPcGVuSW5OZXdXaW5kb3dUZW1wbGF0ZS5wZGYgKi8s
CiAJCQkJRjVCNjcxMzAwMjNFREY4OTAxQzFBNTI1IC8qIHVybF9pY29uLnRpZmYgKi8sCiAJCQkJ
NURFODNBNzQwRDBGN0Y5NDAwQ0FEMTJBIC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5u
aWIgKi8sCiAJCQkpOwpAQCAtMTI3OCw2ICsxMjg1LDggQEAKIAkJCQlGNTJDQTZCRDAyREY5RDBG
MDE4NjM1Q0EgLyogSFRNTCAqLywKIAkJCQk1MUU5NEMwNzA2QzAyQ0EzMDBBOUIwOUUgLyogUERG
ICovLAogCQkJCUExMEMxRDc5MTgyMDMwMTkwMDM2ODgzQSAvKiBpb3MgKi8sCisJCQkJOTM1RDQ0
RTIxOUY5QUZGMDAwRkI1MzA2IC8qIFdlYkFjdGlvbk1lbnVIZWxwZXIuaCAqLywKKwkJCQk5MzVE
NDRFMzE5RjlBRkYwMDBGQjUzMDYgLyogV2ViQWN0aW9uTWVudUhlbHBlci5tbSAqLywKIAkJCQk4
MzczNDM1QTA2MjRFRTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5oICovLAogCQkJCTgzNzM0MzVC
MDYyNEVFMEQwMEYzQjI4OSAvKiBXZWJBcmNoaXZlLm1tICovLAogCQkJCTQ0QkI4QjEzMTI0MUEw
MjIwMDFFM0EyMiAvKiBXZWJBcmNoaXZlSW50ZXJuYWwuaCAqLywKQEAgLTE3MDksNiArMTcxOCw3
IEBACiAJCQkJOTM5ODEwNEIwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRhdGFTb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1OEE0MDk2MEExNDg1M0IwMDVFNjk4NyAvKiBXZWJEYXRhU291cmNl
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDRDMDgyNEJGMDEwMDhERjAzOCAv
KiBXZWJEYXRhU291cmNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTM1RDQ0RTQxOUY5
QUZGMDAwRkI1MzA2IC8qIFdlYkFjdGlvbk1lbnVIZWxwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzOTgxMDRFMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJEZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwOEQwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRl
ZmF1bHRFZGl0aW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDRGMDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLApA
QCAtMTk4MCw2ICsxOTkwLDcgQEAKIAkJCQkyOUFFRjk2MDEzNEM3NkZCMDBGRTUwOTYgLyogT3V0
bG9va1F1aXJrc1VzZXJTY3JpcHQuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCTkzOTgxMEI3MDgy
NEJGMDEwMDhERjAzOCAvKiB1cmxfaWNvbi50aWZmIGluIFJlc291cmNlcyAqLywKIAkJCQk5Mzk4
MTBCNTA4MjRCRjAxMDA4REYwMzggLyogV2ViQXV0aGVudGljYXRpb25QYW5lbC5uaWIgaW4gUmVz
b3VyY2VzICovLAorCQkJCTkzMUExMTJGMTlGNkU3NUEwMDA1MDZEOSAvKiBPcGVuSW5OZXdXaW5k
b3dUZW1wbGF0ZS5wZGYgaW4gUmVzb3VyY2VzICovLAogCQkJCTFDOEFFNzY0MTk5MkY5NjUwMEFC
RjZFQyAvKiBEb2NrTGVnYWN5LnBkZiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNURFODNBN0EwRDBG
N0Y5NDAwQ0FEMTJBIC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5uaWIgaW4gUmVzb3Vy
Y2VzICovLAogCQkJKTsKQEAgLTIyMjMsNiArMjIzNCw3IEBACiAJCQkJQTU2ODdCREIxMzVCNzkx
QTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFD
NjhGNjcyMDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUExMEMxRDYxMTgyMDMwMEUwMDM2ODgzQSAvKiBTZWFyY2hQb3B1cE1lbnVJ
T1MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTM1RDQ0RTUxOUY5QUZGMDAwRkI1MzA2IC8qIFdl
YkFjdGlvbk1lbnVIZWxwZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTBDMUQ2QzE4MjAzMDBF
MDAzNjg4M0EgLyogV2ViRnJhbWVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTJFMkZFNjE0
RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzFDMTFBNkYxNDc2NTUyRTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTc1MTUyKQorKysgU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAK
KzIwMTQtMTAtMjMgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFdl
YktpdDEgc2hvdWxkIHN1cHBvcnQgYWN0aW9uIG1lbnVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgwMzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBm
b3IgYWN0aW9uIG1lbnVzIGFuZCBhZGRzIGFjdGlvbnMgZm9yIGxpbmtzLgorCisgICAgICAgIE9w
ZW4gaW4gd2luZG93IGltYWdlLgorICAgICAgICAqIFJlc291cmNlcy9PcGVuSW5OZXdXaW5kb3dU
ZW1wbGF0ZS5wZGY6IEFkZGVkLgorCisgICAgICAgIEhlbHBlciBjbGFzcyB0YWtlcyBjYXJlIG9m
IGFsbCBvZiB0aGUgYWN0aW9uIG1lbnUgd29yay4gV2ViVmlldyB3aWxsIGZvcndhcmQgdGhlIAor
ICAgICAgICBwcmVwYXJlRm9yTWVudTogbWVzc2FnZSwgYW5kIHRoZW4gdGhlIGhlbHBlciBjbGFz
cyB0YWtlcyBpdCBmcm9tIHRoZXJlLgorICAgICAgICAqIFdlYlZpZXcvV2ViQWN0aW9uTWVudUhl
bHBlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkFjdGlvbk1lbnVIZWxwZXIubW06
IEFkZGVkLgorICAgICAgICAoLVtXZWJBY3Rpb25NZW51SGVscGVyIHByZXBhcmVGb3JNZW51Ondp
dGhFdmVudDpdKToKKworICAgICAgICBTZWxlY3RvcnMgZm9yIGxpbmsgYWN0aW9ucy4KKyAgICAg
ICAgKC1bV2ViQWN0aW9uTWVudUhlbHBlciBfb3BlblVSTEZyb21BY3Rpb25NZW51Ol0pOgorICAg
ICAgICAoLVtXZWJBY3Rpb25NZW51SGVscGVyIF9hZGRUb1JlYWRpbmdMaXN0RnJvbUFjdGlvbk1l
bnU6XSk6CisgICAgICAgICgtW1dlYkFjdGlvbk1lbnVIZWxwZXIgX2VsZW1lbnRCb3VuZGluZ0Jv
eEZyb21ET01FbGVtZW50Ol0pOgorICAgICAgICAoLVtXZWJBY3Rpb25NZW51SGVscGVyIF9xdWlj
a0xvb2tVUkxGcm9tQWN0aW9uTWVudTpdKToKKyAgICAgICAgKC1bV2ViQWN0aW9uTWVudUhlbHBl
ciBfY3JlYXRlQWN0aW9uTWVudUl0ZW1Gb3JUYWc6d2l0aEhpdFRlc3RSZXN1bHQ6XSk6CisgICAg
ICAgICh3ZWJLaXRCdW5kbGVJbWFnZU5hbWVkKToKKyAgICAgICAgKC1bV2ViQWN0aW9uTWVudUhl
bHBlciBfZGVmYXVsdE1lbnVJdGVtc0ZvckhpdFRlc3RSZXN1bHQ6XSk6CisKKyAgICAgICAgVGFn
cyBmb3IgdGhlIGFjdGlvbiBtZW51IGl0ZW1zLgorICAgICAgICAqIFdlYlZpZXcvV2ViVUlEZWxl
Z2F0ZVByaXZhdGUuaDoKKworICAgICAgICBTZXQgdGhlIGFjdGlvbiBtZW51IGlmIHBvc3NpYmxl
IGFuZCBjcmVhdGUgdGhlIGhlbHBlci4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dlYlZpZXcgX2luaXRXaXRoRnJhbWU6ZnJhbWVOYW1lOmdyb3VwTmFtZTpdKToK
KyAgICAgICAgKC1bV2ViVmlldyBwcmVwYXJlRm9yTWVudTp3aXRoRXZlbnQ6XSk6CisKKyAgICAg
ICAgV2ViVmlld0RhdGEgc3RvcmVzIHRoZSBXZWJBY3Rpb25NZW51SGVscGVyCisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3RGF0YS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06
CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGRlYWxsb2NdKToKKwogMjAxNC0xMC0yMyAgSm9z
ZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFByb3ZpZGUgYSB3YXkgdG8gaGF2ZSBhbHRlcm5hdGUgaW5zcGVjdG9yIGFnZW50cwpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBY3Rpb25NZW51SGVscGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBY3Rpb25NZW51SGVscGVyLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFjdGlvbk1lbnVI
ZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK0BjbGFzcyBXZWJWaWV3OworCitAaW50
ZXJmYWNlIFdlYkFjdGlvbk1lbnVIZWxwZXIgOiBOU09iamVjdAoreworICAgIFdlYlZpZXcgKl93
ZWJWaWV3OworfQorCistIChpZClpbml0V2l0aFdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3Owor
LSAodm9pZClwcmVwYXJlRm9yTWVudTooTlNNZW51ICopbWVudSB3aXRoRXZlbnQ6KE5TRXZlbnQg
KilldmVudDsKKworQGVuZApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBY3Rp
b25NZW51SGVscGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViQWN0aW9uTWVudUhlbHBlci5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViQWN0aW9uTWVudUhlbHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIxOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYkFjdGlvbk1lbnVIZWxwZXIuaCIKKwor
I2ltcG9ydCAiRE9NRWxlbWVudEludGVybmFsLmgiCisjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwu
aCIKKyNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCisjaW1wb3J0ICJXZWJWaWV3SW50
ZXJuYWwuaCIKKworI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lLmg+CisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9OU1ZpZXdTUEkuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQg
PG9iamMvb2JqYy1jbGFzcy5oPgorI2ltcG9ydCA8b2JqYy9vYmpjLmg+CisKK1NPRlRfTElOS19G
UkFNRVdPUktfSU5fVU1CUkVMTEEoUXVhcnR6LCBRdWlja0xvb2tVSSkKK1NPRlRfTElOS19DTEFT
UyhRdWlja0xvb2tVSSwgUUxQcmV2aWV3QnViYmxlKQorCitAY2xhc3MgUUxQcmV2aWV3QnViYmxl
OworQGludGVyZmFjZSBOU09iamVjdCAoV0tRTFByZXZpZXdCdWJibGVEZXRhaWxzKQorQHByb3Bl
cnR5IChjb3B5KSBOU0FycmF5ICogY29udHJvbHM7CitAcHJvcGVydHkgTlNTaXplIG1heGltdW1T
aXplOworQHByb3BlcnR5IE5TUmVjdEVkZ2UgcHJlZmVycmVkRWRnZTsKK0Bwcm9wZXJ0eSAocmV0
YWluKSBJQk91dGxldCBOU1dpbmRvdyogcGFyZW50V2luZG93OworLSAodm9pZClzaG93UHJldmll
d0l0ZW06KGlkKXByZXZpZXdJdGVtIGl0ZW1GcmFtZTooTlNSZWN0KWZyYW1lOworLSAodm9pZClz
ZXRBdXRvbWF0aWNhbGx5Q2xvc2VXaXRoTWFzazooTlNFdmVudE1hc2spYXV0b2Nsb3NlTWFzayBm
aWx0ZXJNYXNrOihOU0V2ZW50TWFzaylmaWx0ZXJNYXNrIGJsb2NrOih2b2lkICheKSh2b2lkKSli
bG9jazsKK0BlbmQKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlv
biBXZWJBY3Rpb25NZW51SGVscGVyCisKKy0gKGlkKWluaXRXaXRoV2ViVmlldzooV2ViVmlldyAq
KXdlYlZpZXcKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICBfd2ViVmlldyA9IHdlYlZpZXc7CisKKyAgICByZXR1cm4gc2VsZjsKK30K
KworLSAodm9pZClwcmVwYXJlRm9yTWVudTooTlNNZW51ICopbWVudSB3aXRoRXZlbnQ6KE5TRXZl
bnQgKilldmVudAoreworICAgIGlmIChtZW51ICE9IFtfd2ViVmlldyBhY3Rpb25NZW51XSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW1tfd2ViVmlldyBhY3Rpb25NZW51XSByZW1vdmVBbGxJdGVt
c107CisKKyAgICBOU0RpY3Rpb25hcnkgKmhpdFRlc3RSZXN1bHQgPSBbX3dlYlZpZXcgZWxlbWVu
dEF0UG9pbnQ6W193ZWJWaWV3IGNvbnZlcnRQb2ludDpbZXZlbnQgbG9jYXRpb25JbldpbmRvd10g
ZnJvbVZpZXc6bmlsXV07CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgQVBJIGZv
ciBjbGllbnRzIHRvIGN1c3RvbWl6ZSB0aGUgbWVudSBpdGVtcy4KKyAgICBOU0FycmF5ICptZW51
SXRlbXMgPSBbc2VsZiBfZGVmYXVsdE1lbnVJdGVtc0ZvckhpdFRlc3RSZXN1bHQ6aGl0VGVzdFJl
c3VsdF07CisKKyAgICBmb3IgKE5TTWVudUl0ZW0gKml0ZW0gaW4gbWVudUl0ZW1zKQorICAgICAg
ICBbW193ZWJWaWV3IGFjdGlvbk1lbnVdIGFkZEl0ZW06aXRlbV07Cit9CisKKy0gKHZvaWQpX29w
ZW5VUkxGcm9tQWN0aW9uTWVudTooaWQpc2VuZGVyCit7CisgICAgTlNVUkwgKnVybCA9IFtzZW5k
ZXIgcmVwcmVzZW50ZWRPYmplY3RdOworICAgIGlmICh1cmwgPT0gbmlsKQorICAgICAgICByZXR1
cm47CisKKyAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlblVSTDp1cmxdOwor
fQorCistICh2b2lkKV9hZGRUb1JlYWRpbmdMaXN0RnJvbUFjdGlvbk1lbnU6KGlkKXNlbmRlcgor
eworICAgIE5TVVJMICp1cmwgPSBbc2VuZGVyIHJlcHJlc2VudGVkT2JqZWN0XTsKKyAgICBpZiAo
dXJsID09IG5pbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTaGFyaW5nU2VydmljZSAqc2Vy
dmljZSA9IFtOU1NoYXJpbmdTZXJ2aWNlIHNoYXJpbmdTZXJ2aWNlTmFtZWQ6TlNTaGFyaW5nU2Vy
dmljZU5hbWVBZGRUb1NhZmFyaVJlYWRpbmdMaXN0XTsKKyAgICBbc2VydmljZSBwZXJmb3JtV2l0
aEl0ZW1zOkBbIHVybCBdXTsKK30KKworLSAoTlNSZWN0KV9lbGVtZW50Qm91bmRpbmdCb3hGcm9t
RE9NRWxlbWVudDooRE9NRWxlbWVudCAqKWRvbUVsZW1lbnQKK3sKKyAgICBpZiAoZG9tRWxlbWVu
dCA9PSBuaWwpCisgICAgICAgIHJldHVybiBOU1plcm9SZWN0OworCisgICAgTm9kZSogbm9kZSA9
IGNvcmUoZG9tRWxlbWVudCk7CisgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5m
cmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBOU1plcm9SZWN0OworCisg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAg
ICAgIHJldHVybiBOU1plcm9SZWN0OworCisgICAgcmV0dXJuIHZpZXctPmNvbnRlbnRzVG9XaW5k
b3cobm9kZS0+cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3goKSk7Cit9CisKKy0gKHZvaWQpX3F1aWNr
TG9va1VSTEZyb21BY3Rpb25NZW51OihpZClzZW5kZXIKK3sKKyAgICBOU0RpY3Rpb25hcnkgKmhp
dFRlc3RSZXN1bHQgPSBbc2VuZGVyIHJlcHJlc2VudGVkT2JqZWN0XTsKKyAgICBOU1VSTCAqdXJs
ID0gW2hpdFRlc3RSZXN1bHQgb2JqZWN0Rm9yS2V5OldlYkVsZW1lbnRMaW5rVVJMS2V5XTsKKyAg
ICBpZiAodXJsID09IG5pbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE9NRWxlbWVudCAqZG9t
RWxlbWVudCA9IFtoaXRUZXN0UmVzdWx0IG9iamVjdEZvcktleTpXZWJFbGVtZW50RE9NTm9kZUtl
eV07CisgICAgaWYgKGRvbUVsZW1lbnQgPT0gbmlsKQorICAgICAgICByZXR1cm47CisKKyAgICBO
U1JlY3QgaXRlbUZyYW1lID0gW193ZWJWaWV3IGNvbnZlcnRSZWN0OltzZWxmIF9lbGVtZW50Qm91
bmRpbmdCb3hGcm9tRE9NRWxlbWVudDpkb21FbGVtZW50XSB0b1ZpZXc6bmlsXTsKKyAgICBOU1Np
emUgbWF4aW11bVByZXZpZXdTaXplID0gTlNNYWtlU2l6ZShfd2ViVmlldy5ib3VuZHMuc2l6ZS53
aWR0aCAqIDAuNzUsIF93ZWJWaWV3LmJvdW5kcy5zaXplLmhlaWdodCAqIDAuNzUpOworCisgICAg
UXVpY2tMb29rVUlMaWJyYXJ5KCk7CisgICAgUmV0YWluUHRyPFFMUHJldmlld0J1YmJsZT4gYnVi
YmxlID0gYWRvcHROUyhbW05TQ2xhc3NGcm9tU3RyaW5nKEAiUUxQcmV2aWV3QnViYmxlIikgYWxs
b2NdIGluaXRdKTsKKyAgICBbYnViYmxlIHNldFBhcmVudFdpbmRvdzpfd2ViVmlldy53aW5kb3dd
OworICAgIFtidWJibGUgc2V0TWF4aW11bVNpemU6bWF4aW11bVByZXZpZXdTaXplXTsKKyAgICBb
YnViYmxlIHNldFByZWZlcnJlZEVkZ2U6TlNNYXhZRWRnZV07CisgICAgW2J1YmJsZSBzZXRDb250
cm9sczpAWyBdXTsKKyAgICBOU0V2ZW50TWFzayBmaWx0ZXJNYXNrID0gTlNBbnlFdmVudE1hc2sg
JiB+KE5TQXBwS2l0RGVmaW5lZE1hc2sgfCBOU1N5c3RlbURlZmluZWRNYXNrIHwgTlNBcHBsaWNh
dGlvbkRlZmluZWRNYXNrIHwgTlNNb3VzZUVudGVyZWRNYXNrIHwgTlNNb3VzZUV4aXRlZE1hc2sp
OworICAgIE5TRXZlbnRNYXNrIGF1dG9jbG9zZU1hc2sgPSBOU0xlZnRNb3VzZURvd25NYXNrIHwg
TlNSaWdodE1vdXNlRG93bk1hc2sgfCBOU0tleURvd25NYXNrOworICAgIFtidWJibGUgc2V0QXV0
b21hdGljYWxseUNsb3NlV2l0aE1hc2s6YXV0b2Nsb3NlTWFzayBmaWx0ZXJNYXNrOmZpbHRlck1h
c2sgYmxvY2s6W2J1YmJsZV0geworICAgICAgICBbYnViYmxlIGNsb3NlXTsKKyAgICB9XTsKKyAg
ICBbYnViYmxlIHNob3dQcmV2aWV3SXRlbTp1cmwgaXRlbUZyYW1lOml0ZW1GcmFtZV07Cit9CisK
Ky0gKFJldGFpblB0cjxOU01lbnVJdGVtPilfY3JlYXRlQWN0aW9uTWVudUl0ZW1Gb3JUYWc6KHVp
bnQzMl90KXRhZyB3aXRoSGl0VGVzdFJlc3VsdDooTlNEaWN0aW9uYXJ5ICopaGl0VGVzdFJlc3Vs
dAoreworICAgIFNFTCBzZWxlY3RvciA9IG5pbDsKKyAgICBOU1N0cmluZyAqdGl0bGUgPSBuaWw7
CisgICAgTlNJbWFnZSAqaW1hZ2UgPSBuaWw7CisgICAgaWQgcmVwcmVzZW50ZWRPYmplY3QgPSBu
aWw7CisKKyAgICBzd2l0Y2ggKHRhZykgeworICAgIGNhc2UgV2ViQWN0aW9uTWVudUl0ZW1UYWdP
cGVuTGlua0luRGVmYXVsdEJyb3dzZXI6CisgICAgICAgIHNlbGVjdG9yID0gQHNlbGVjdG9yKF9v
cGVuVVJMRnJvbUFjdGlvbk1lbnU6KTsKKyAgICAgICAgdGl0bGUgPSBAIk9wZW4iOworICAgICAg
ICBpbWFnZSA9IHdlYktpdEJ1bmRsZUltYWdlTmFtZWQoQCJPcGVuSW5OZXdXaW5kb3dUZW1wbGF0
ZSIpOworICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IFtoaXRUZXN0UmVzdWx0IG9iamVjdEZv
cktleTpXZWJFbGVtZW50TGlua1VSTEtleV07CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBX
ZWJBY3Rpb25NZW51SXRlbVRhZ1ByZXZpZXdMaW5rOgorICAgICAgICBzZWxlY3RvciA9IEBzZWxl
Y3RvcihfcXVpY2tMb29rVVJMRnJvbUFjdGlvbk1lbnU6KTsKKyAgICAgICAgdGl0bGUgPSBAIlBy
ZXZpZXciOworICAgICAgICBpbWFnZSA9IFtOU0ltYWdlIGltYWdlTmFtZWQ6TlNJbWFnZU5hbWVR
dWlja0xvb2tUZW1wbGF0ZV07CisgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gaGl0VGVzdFJl
c3VsdDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFdlYkFjdGlvbk1lbnVJdGVtVGFnQWRk
TGlua1RvU2FmYXJpUmVhZGluZ0xpc3Q6CisgICAgICAgIHNlbGVjdG9yID0gQHNlbGVjdG9yKF9h
ZGRUb1JlYWRpbmdMaXN0RnJvbUFjdGlvbk1lbnU6KTsKKyAgICAgICAgdGl0bGUgPSBAIkFkZCB0
byBTYWZhcmkgUmVhZGluZyBMaXN0IjsKKyAgICAgICAgaW1hZ2UgPSBbTlNJbWFnZSBpbWFnZU5h
bWVkOk5TSW1hZ2VOYW1lQm9va21hcmtzVGVtcGxhdGVdOworICAgICAgICByZXByZXNlbnRlZE9i
amVjdCA9IFtoaXRUZXN0UmVzdWx0IG9iamVjdEZvcktleTpXZWJFbGVtZW50TGlua1VSTEtleV07
CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgUmV0YWluUHRyPE5TTWVu
dUl0ZW0+IGl0ZW0gPSBhZG9wdE5TKFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTp0
aXRsZSBhY3Rpb246c2VsZWN0b3Iga2V5RXF1aXZhbGVudDpAIiJdKTsKKyAgICBbaXRlbSBzZXRJ
bWFnZTppbWFnZV07CisgICAgW2l0ZW0gc2V0VGFyZ2V0OnNlbGZdOworICAgIFtpdGVtIHNldFRh
Zzp0YWddOworICAgIFtpdGVtIHNldFJlcHJlc2VudGVkT2JqZWN0OnJlcHJlc2VudGVkT2JqZWN0
XTsKKyAgICByZXR1cm4gaXRlbTsKK30KKworc3RhdGljIE5TSW1hZ2UgKndlYktpdEJ1bmRsZUlt
YWdlTmFtZWQoTlNTdHJpbmcgKm5hbWUpCit7CisgICAgcmV0dXJuIFtbTlNCdW5kbGUgYnVuZGxl
Rm9yQ2xhc3M6W1dlYlZpZXcgY2xhc3NdXSBpbWFnZUZvclJlc291cmNlOm5hbWVdOworfQorCist
IChOU0FycmF5ICopX2RlZmF1bHRNZW51SXRlbXNGb3JMaW5rOihOU0RpY3Rpb25hcnkgKiloaXRU
ZXN0UmVzdWx0Cit7CisgICAgTlNVUkwgKnVybCA9IFtoaXRUZXN0UmVzdWx0IG9iamVjdEZvcktl
eTpXZWJFbGVtZW50TGlua1VSTEtleV07CisgICAgaWYgKHVybCA9PSBuaWwpCisgICAgICAgIHJl
dHVybiBAWyBdOworCisgICAgaWYgKCFXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KFt1
cmwgYWJzb2x1dGVTdHJpbmddKSkKKyAgICAgICAgcmV0dXJuIEBbIF07CisKKyAgICBSZXRhaW5Q
dHI8TlNNZW51SXRlbT4gb3BlbkxpbmtJdGVtID0gW3NlbGYgX2NyZWF0ZUFjdGlvbk1lbnVJdGVt
Rm9yVGFnOldlYkFjdGlvbk1lbnVJdGVtVGFnT3BlbkxpbmtJbkRlZmF1bHRCcm93c2VyIHdpdGhI
aXRUZXN0UmVzdWx0OmhpdFRlc3RSZXN1bHRdOworICAgIFJldGFpblB0cjxOU01lbnVJdGVtPiBw
cmV2aWV3TGlua0l0ZW0gPSBbc2VsZiBfY3JlYXRlQWN0aW9uTWVudUl0ZW1Gb3JUYWc6V2ViQWN0
aW9uTWVudUl0ZW1UYWdQcmV2aWV3TGluayB3aXRoSGl0VGVzdFJlc3VsdDpoaXRUZXN0UmVzdWx0
XTsKKyAgICBSZXRhaW5QdHI8TlNNZW51SXRlbT4gcmVhZGluZ0xpc3RJdGVtID0gW3NlbGYgX2Ny
ZWF0ZUFjdGlvbk1lbnVJdGVtRm9yVGFnOldlYkFjdGlvbk1lbnVJdGVtVGFnQWRkTGlua1RvU2Fm
YXJpUmVhZGluZ0xpc3Qgd2l0aEhpdFRlc3RSZXN1bHQ6aGl0VGVzdFJlc3VsdF07CisKKyAgICBy
ZXR1cm4gQFtvcGVuTGlua0l0ZW0uZ2V0KCksIHByZXZpZXdMaW5rSXRlbS5nZXQoKSwgW05TTWVu
dUl0ZW0gc2VwYXJhdG9ySXRlbV0sIHJlYWRpbmdMaXN0SXRlbS5nZXQoKV07Cit9CisKKy0gKE5T
QXJyYXkgKilfZGVmYXVsdE1lbnVJdGVtc0ZvckhpdFRlc3RSZXN1bHQ6KE5TRGljdGlvbmFyeSAq
KWhpdFRlc3RSZXN1bHQKK3sKKyAgICBOU1VSTCAqdXJsID0gW2hpdFRlc3RSZXN1bHQgb2JqZWN0
Rm9yS2V5OldlYkVsZW1lbnRMaW5rVVJMS2V5XTsKKyAgICBpZiAodXJsICE9IG5pbCkKKyAgICAg
ICAgcmV0dXJuIFtzZWxmIF9kZWZhdWx0TWVudUl0ZW1zRm9yTGluazpoaXRUZXN0UmVzdWx0XTsK
KworICAgIHJldHVybiBAW107Cit9CisKK0BlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJKHJldmlzaW9uIDE3NTE0MikKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjY5LDQgKzI2OSwxMSBAQCBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJVSURl
bGVnYXRlUHJpdmF0CiAKIC0gKE5TRGF0YSAqKXdlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXc6
KFdlYlZpZXcgKilzZW5kZXI7CiAKK2VudW0geworICAgIFdlYkFjdGlvbk1lbnVJdGVtVGFnTm9B
Y3Rpb24gPSAwLAorICAgIFdlYkFjdGlvbk1lbnVJdGVtVGFnT3BlbkxpbmtJbkRlZmF1bHRCcm93
c2VyLAorICAgIFdlYkFjdGlvbk1lbnVJdGVtVGFnUHJldmlld0xpbmssCisgICAgV2ViQWN0aW9u
TWVudUl0ZW1UYWdBZGRMaW5rVG9TYWZhcmlSZWFkaW5nTGlzdAorfTsKKwogQGVuZApJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTc1MTQyKQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAs
NiArMjAwLDcgQEAKICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmICFQTEFURk9S
TShJT1MpCisjaW1wb3J0ICJXZWJBY3Rpb25NZW51SGVscGVyLmgiCiAjaW1wb3J0ICJXZWJDb250
ZXh0TWVudUNsaWVudC5oIgogI2ltcG9ydCAiV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaCIKICNp
bXBvcnQgIldlYk5TRXZlbnRFeHRyYXMuaCIKQEAgLTIwNyw2ICsyMDgsNyBAQAogI2ltcG9ydCAi
V2ViTlNQYXN0ZWJvYXJkRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU1ByaW50T3BlcmF0aW9uRXh0
cmFzLmgiCiAjaW1wb3J0ICJXZWJQREZWaWV3LmgiCisjaW1wb3J0IDxXZWJDb3JlL05TVmlld1NQ
SS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmg+CiAj
ZWxzZQogI2ltcG9ydCAiTWVtb3J5TWVhc3VyZS5oIgpAQCAtMTA2Miw2ICsxMDY0LDE0IEBAIC0g
KGlkKV9pbml0V2l0aEZyYW1lOihOU1JlY3QpZiBmcmFtZU5hbWUKICNpZiAhUExBVEZPUk0oSU9T
KQogICAgIF9wcml2YXRlLT5wYWdlLT5zZXREZXZpY2VTY2FsZUZhY3Rvcihbc2VsZiBfZGV2aWNl
U2NhbGVGYWN0b3JdKTsKICNlbmRpZgorCisgICAgaWYgKFtzZWxmIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc2V0QWN0aW9uTWVudTopXSkgeworICAgICAgICBSZXRhaW5QdHI8TlNNZW51
PiBhY3Rpb25NZW51ID0gYWRvcHROUyhbW05TTWVudSBhbGxvY10gaW5pdF0pOworICAgICAgICBb
c2VsZiBzZXRBY3Rpb25NZW51OmFjdGlvbk1lbnUuZ2V0KCldOworICAgICAgICBfcHJpdmF0ZS0+
YWN0aW9uTWVudUhlbHBlciA9IFtbW1dlYkFjdGlvbk1lbnVIZWxwZXIgYWxsb2NdIGluaXRXaXRo
V2ViVmlldzpzZWxmXSByZXRhaW5dOworCisgICAgfQorCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAK
QEAgLTg1MTYsNiArODUyNiwxNCBAQCAtIChOU1JlY3QpX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3
OihOU1JlCiAgICAgcmV0dXJuIE5TTWFrZVJlY3QocmVjdC5vcmlnaW4ueCwgW3NlbGYgYm91bmRz
XS5zaXplLmhlaWdodCAtIHJlY3Qub3JpZ2luLnkgLSByZWN0LnNpemUuaGVpZ2h0LCByZWN0LnNp
emUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOwogfQogCistICh2b2lkKXByZXBhcmVGb3JNZW51
OihOU01lbnUgKiltZW51IHdpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50Cit7CisgICAgaWYgKG1l
bnUgIT0gc2VsZi5hY3Rpb25NZW51KQorICAgICAgICByZXR1cm47CisKKyAgICBbX3ByaXZhdGUt
PmFjdGlvbk1lbnVIZWxwZXIgcHJlcGFyZUZvck1lbnU6bWVudSB3aXRoRXZlbnQ6ZXZlbnRdOwor
fQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3RGV2aWNlT3JpZW50
YXRpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCShyZXZp
c2lvbiAxNzUxNDIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFz
cyBQYWdlOwogfQogCitAY2xhc3MgV2ViQWN0aW9uTWVudUhlbHBlcjsKIEBjbGFzcyBXZWJJbnNw
ZWN0b3I7CiBAY2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsKIEBjbGFzcyBXZWJQbHVnaW5EYXRhYmFz
ZTsKQEAgLTE0NSw2ICsxNDYsOCBAQCBAaW50ZXJmYWNlIFdlYlZpZXdQcml2YXRlIDogTlNPYmpl
Y3QgewogICAgIFdlYkluc3BlY3RvciAqaW5zcGVjdG9yOwogICAgIFdlYk5vZGVIaWdobGlnaHQg
KmN1cnJlbnROb2RlSGlnaGxpZ2h0OwogCisgICAgV2ViQWN0aW9uTWVudUhlbHBlciAqYWN0aW9u
TWVudUhlbHBlcjsKKwogICAgIEJPT0wgYWxsb3dzVW5kbzsKICAgICAgICAgCiAgICAgZmxvYXQg
em9vbU11bHRpcGxpZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdE
YXRhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0Rh
dGEubW0JKHJldmlzaW9uIDE3NTE0MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld0RhdGEubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBAQCAtICh2b2lkKWRl
YWxsb2MKICNlbmRpZgogICAgIFtpbnNwZWN0b3IgcmVsZWFzZV07CiAgICAgW2N1cnJlbnROb2Rl
SGlnaGxpZ2h0IHJlbGVhc2VdOworICAgIFthY3Rpb25NZW51SGVscGVyIHJlbGVhc2VdOwogICAg
IFtob3N0V2luZG93IHJlbGVhc2VdOwogICAgIFtwb2xpY3lEZWxlZ2F0ZUZvcndhcmRlciByZWxl
YXNlXTsKICAgICBbVUlEZWxlZ2F0ZUZvcndhcmRlciByZWxlYXNlXTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1Jlc291cmNlcy9PcGVuSW5OZXdXaW5kb3dUZW1wbGF0ZS5wZGYKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUt
dHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
UmVzb3VyY2VzL09wZW5Jbk5ld1dpbmRvd1RlbXBsYXRlLnBkZgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9SZXNvdXJjZXMvT3BlbkluTmV3V2luZG93VGVtcGxhdGUucGRmCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdC9tYWMvUmVzb3VyY2VzL09wZW5Jbk5ld1dpbmRvd1Rl
bXBsYXRlLnBkZgkod29ya2luZyBjb3B5KQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dl
YktpdC9tYWMvUmVzb3VyY2VzL09wZW5Jbk5ld1dpbmRvd1RlbXBsYXRlLnBkZgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK2FwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CgpKVkJFUmkweExqTUtKY1RsOHVY
cnAvT2cwTVRHQ2pVZ01DQnZZbW9LUER3Z0wweGxibWQwYUNBMklEQWdVaUF2Um1sc2RHVnlJQzlH
CmJHRjBaVVJsWTI5a1pTQStQZ3B6ZEhKbFlXMEtlQUZ0VVVsdXd6QU12UHNWL0lCVlVaWnM2d1U5
OUJUMGtBY1lRWE53QXJqNVA5QVoKTXE2ZEJUREVmVGhETDNLUVJhSm9rWXZvU0R2VFJwaG83MW1P
Y2pYZnk3OG5TM3g4M2xSK2JsYkF1SHcxeUNSbUZrUWNWWUNGSWttbQppOFY4MjRnTWtWc05zU1RH
T1krTUNoNjNVOU5xZG5lR3lhR3cwVHZZNVlNZ2FtQVRNa1dxd2RMVGVLL2JYSU9RTTVuNUltenVZ
QzJZCjVkdkUvN085OTZ4c0UyaSs5QXlZQmtMenBHa3ZCVHY0Y1JkbEFHTVRBZGQ1bTZTQ0RWUkxR
dGJtekt6bXNwVlFJTzl3dEVEem04SEgKamFFSzdYU0F0UDZ3UjEyZGFLTDJWUmZXdlJIRzgyeS9D
bERqcS9ndTVINGNwTitqdFNuVXZ1SW1PZllrVjBMdGhqY0xVa2hRQnlMYgo2U0FrYWJYZVBmUERI
eGtCZ1k0S1pXNWtjM1J5WldGdENtVnVaRzlpYWdvMklEQWdiMkpxQ2pJM09BcGxibVJ2WW1vS015
QXdJRzlpCmFnbzhQQ0F2Vkhsd1pTQXZVR0ZuWlNBdlVHRnlaVzUwSURRZ01DQlNJQzlTWlhOdmRY
SmpaWE1nTnlBd0lGSWdMME52Ym5SbGJuUnoKSURVZ01DQlNJQzlOWldScFlVSnZlQ0JiTUNBd0lE
RTRJREUxWFFvK1BncGxibVJ2WW1vS055QXdJRzlpYWdvOFBDQXZVSEp2WTFObApkQ0JiSUM5UVJF
WWdYU0F2UlhoMFIxTjBZWFJsSUR3OElDOUhjeklnT0NBd0lGSWdMMGR6TVNBNUlEQWdVaUErUGlB
K1BncGxibVJ2Clltb0tPQ0F3SUc5aWFnbzhQQ0F2Vkhsd1pTQXZSWGgwUjFOMFlYUmxJQzlQVUUw
Z01TQStQZ3BsYm1Sdlltb0tPU0F3SUc5aWFnbzgKUENBdlZIbHdaU0F2UlhoMFIxTjBZWFJsSUM5
VFFTQjBjblZsSUQ0K0NtVnVaRzlpYWdvMElEQWdiMkpxQ2p3OElDOVVlWEJsSUM5UQpZV2RsY3lB
dlRXVmthV0ZDYjNnZ1d6QWdNQ0EyTVRJZ056a3lYU0F2UTI5MWJuUWdNU0F2UzJsa2N5QmJJRE1n
TUNCU0lGMGdQajRLClpXNWtiMkpxQ2pFd0lEQWdiMkpxQ2p3OElDOVVlWEJsSUM5RFlYUmhiRzlu
SUM5TlpYUmhaR0YwWVNBeUlEQWdVaUF2VUdGblpYTWcKTkNBd0lGSWdQajRLWlc1a2IySnFDakln
TUNCdlltb0tQRHdnTDB4bGJtZDBhQ0F4TVNBd0lGSWdMMVI1Y0dVZ0wwMWxkR0ZrWVhSaApJQzlU
ZFdKMGVYQmxJQzlZVFV3Z0wwWnBiSFJsY2lBdlJteGhkR1ZFWldOdlpHVWdQajRLYzNSeVpXRnRD
bmdCN1gxcms1ck10Ky83Ci9TbFMrVmVkT3Flb1BBMGlDbk9lcEFwRnZPQUZSZkh5RHVVaXlrMUFG
RDc5WGpSemNaaVpKT1BrSkh2bVpDcXhGTHBYOTFyOTYzWHIKYnZqM2ZITjJBOWVJdFU5bjEvR2lt
L1BYejVydXI0MGIrSjVmUnA4LzRTTHgvdXZueFVEKzFQUkQ0eFB6VC9VZjh2TzMvL3IwNmRPLwpv
VzdlVEFUeHRqcjgrdnA1RzhmQkRVS24wK21mRS8yUEgxcUk0amdPa1JWVXFYeUJFbCtpMUl1MTh4
Y3YrazlCNUk2T1lFU2IwQTVpCjIvYys1WFMxdFgrTXYzNytuRGQwLzNmYlR6ZTRiOGlML3NGOS9t
Zmp1K2lzQllqNmgwUXZWR3AzWGV2N0ZTMWt1OVpMMVFlRDcxZDIKM1dkclJ2SEVlQkRNcy8yTnBt
bGdvSWtSK2Nkd1kwRHgvenpIUVJTM0VwRElyWVIvZ2xBck1iejRXVkl3N2xQNUI3S0lVZkNpS05y
Zgo3OGJ6OWFKWXNOM3ZWeXdFQWNVTUx3SWdBRWFlR1g1OWMwOGtPSVlPQnBtK1FZWmpRTFU0QWdS
UXp3NkU3VGpIS0E2MTJBL3ZDVHlTCjRrV0JGMkVVWElEOFVXVzRBWlZvZEk5cUFPMi9JT2ViZ2Ev
YlppcG9zZkd0UWxMVkx4VDVoYXBQS2VxbUN2OXFYOGo2RFVuK2kwb2wKSDlqR05KcWhBZldmbzBI
ZU1PUWxqWXVTSlJyVDdkRmRlNXJ0UkhqeTNzOHBQSXQ1SjM1OE5lOTlQZzBkRzgvR1FBc2pJMGZw
MTg5MwpNTDFrOUlFWThKRlBzeHZiMVN6akcrSjJxTXJ6WTJXLzZrMHN2c0ZiTFY3aEcxMmVGMUI5
ekVlejlqYlIyMXltdGJsVFZ4Z2NCenhmCkhlK2RJVStRUFA1cjhGQSsvMnZ4LytzL1ovNy84dU84
TXZ5TitRWWlxcnl3Ri9mclNzL2gyMU44bVRmUm11L0NUV3ZjYXZDelZzT2EKaVExcjMyNk1sNzNt
eVdvM0xLc3Y4TDdVUFBrU0ppZzArSUhBbi9ML1k0R3Z5aTJlSFFtTndWUnNqS2V0ODJuZFBrZWJ6
cGsxNy8rZgpXcDNHYVRNVWVISUpMU3piMjlsRW5QajRQaVo0WC9DeTBrOStSeXd3T3JiNENyRExu
MXFUZ21XK08rSEhnd213MXVJMXpIMkh6N2tiClE2SDd2N0hJbjdwdEVFdW55ZStCUGJobmRZVnl1
WUxnbUc4Q3R5Q1hUYmM1OXZ0UXRBa05DTHcxYnNJMWtBZ1E4Z1l3V0lNSnlGL3MKVHJybnNkcHF0
eW90ZTdOc3pRWkJlOXM0ejg5alcyNWdnck80c3gyY1Z6YmJuS1JXMG5MRzJXUzZQMGpwa3BhYnc5
blkyOWRHMlhDcgp6MWFkcVVBZXU5MmVQK2cxdDlacTJ3UFJIUlJTalllcTFBalRLcEpibUNBMW1w
S3J4VngwdERsMTFoY09OMTlWdG9IbXh0RjZ6aVJMCmVrTHBubDQxRmtIZDdGQ0VTWTlhMjZYV3Ni
dXVaRmZUNGM0bm1udEdVWjNBV0xvclRQQ3c5bm9WdzJPa1hTRE4zYUJtQjRmRE1RcTEKV3VKUGVM
NEw3SGVGeGhqZ01sNjJtZ0NJZFM3YmJVdG9ORnZLWU5ZU1o1UGh0bXV0enRhcWxXS0MvcnB6RWdl
ZFNWVVpOa1cxWjIrUwpWdFlUSm9LMTFaUlpPcmVYOVg2elFjdkswT2kxckxNKzI1OHN6SEp2dHhM
YnRyN1h4Um5OSGtiWktiVUNUSkFrNUd6YlUvYnhZRHBqCjVJbWpMK2Rxc0Y2SWxMR2dKczdLMVgx
dEhvVHJOblZjVjM3RVBpWklDRTV2UG5jWWUrVUd4NDIzcXBuN3cyZ2ZhSnAza056RG9aYkcKNFlG
SWtBWkFBNWp3elZZT01ZSGx1Vm4xVUJjWHkvekRSa3lHVHNJSUV4eFREaU43ZTdLVG9rN0haSGxY
bkNpTXM2R3N1RG1KMmp4Qgo5OUNlOGtkb2E3dGUxbUIyYUNCbkNiUDNqUFU4MW81aDRzMmozbDRh
MjhscU9jTUVxK2VRYTFhRFlIZVVqbWUxY3NYSGdZcDFXZzJsClhvZ0p6bGZWM29UYzIwdi9SRGlL
WUlja1NnV1U3VmNNWXFQcGVWemI2c093c3VjdFpSN1hHRzJsb3VyaEtLaVV2RTJaZm4zcEI5eWEK
VU5ESXRZaU5qZ2sydGxReTZlMzZXdXJ0ZW0ycTBSY2x2a25PRHBabnB4U3loOUdzVjdmRFNOWHRV
SkF6azYwUG1RRnIxWnh3ME9NVApvaHR6Y3NNM3VhNHJpOElZRStRTS9zREphM0Z4V3N1eXZKbW1p
eGE3VTdKc1FPNmpjQjlsby9NaEcweVBpcktaSzEzU20zQXFaU09iClJFcW96SWxrdFZOR3REVk9S
MmFMWEVTWTRJaXBMdy9aek53THhKcmhaYUxOeEtnOXB6dG9rSWxySGFWK2g2VmhCQTh3YlloSm5D
QisKcUE3VW1FWjhFOThoZ3JXTG1IWUZJWFVxWW9LdnJmUzk4cGpnY3kxOXI5TDN5bU9DUDh2T3p6
U0NDVjdLNEdjcWZhODhKdmdqUWIrbQprWUpsR0ozWFZNcEg4Nlh5bU9CTEVGZ3I5VVdTMm1nUWpv
ZXlPUnVxWkpPeEl0K2F1OTVpS3gya1VTalhwdko1UWEvWDRucHAyaUcxClFKZ2czenRuTEpvU2Mx
bm13b0FsZy9aZVk5TzVTclduckpRTnREbWJaR3AyRHBGMFBvOFhsY0RlNHZsZUZWSG1ObVJKbHVi
YmNjUHUKQm4yT0xxYmU2THpxenB0ZWpXZk9TaWYxYklkYkliYTZKeGJjeUdJZG1qaUdiZUdnMWcx
NW5VNWJhN3N0dGlSZlh1K1pKVEdpdDdhVgo2TkZzZEtkVWNBOWZwMTdpd1NFS1ZLc1ppRTNoMkFS
VlV1MmdZWDJzeTZUQXBqRW1hSkxoZE45U2Q0ME42M2NuMGFFdjJTa3JvbFJsCnlFNXNwNEs0QnZV
WXJ3L3QybmJZVzNibTh3RWhkTWNuMUZvZWtDS0w5aW5MWW1LTjlwMTBlY1lFdDVRM2M0akVVdHRl
cFRxZ3prZkoKUHZRang2QUhPM0hoUmdpTmxoMm5xMFRkWVROaHVwWnA2ZlIyWXN2Nk9MTk1FNVN1
U3pNVjA1c0VKbVBYTUVGeE9aNlB2R21sUjlacQp6SkhNZkxwUExTdmdZaEVkUVJ5em03UENwVWdT
V0RUc3NKWXhwVWlGSlEvVlpMVmEyL042aSt6N2grM0M5OXE3TllXS1FhbjZnVXVqCmNYWGhlSWlY
SElJRDNYRmVodE9FMko2U3ZveDRzYy9WVVRxMHozUFA1SVN0TVRlSndFeE1ZaExOSmJJT2RUcE5O
a0tjZ293Q051eHUKR2FrQnFLUFdTR1JXcVBhVTVDeWhFNVovU3BMbDkydlJqa2VvaGttZWhNS21R
R25RYlpjZFlQbkRvazZqUjZWWlBpZUx1cFcrcU9tSQpmTkkyeS91YmZtSG9NMFJkOE1UeUJmTlBT
V0tlVHNKVGtpZXdqcGg1ZjRNSHBaOW1vSVZ6Q2JEOG85S241cVdvOGc2QTdXM2dncmRTCmV0STJK
b2hPelVMNmx6eWRHaytsWDVERTdQQ0RweVQ1WHJ2QTRjT0Fzand1ZmVKeGFaWXczUWx6aUpPaDU2
MVZlVENNZVM1dUhBUy8KTmxaYUlsVTk5enBIdFlLV1o2VTlYQjZJazBsc3RyaUhTZVo1ckZlWm1R
NGFyL2pFYmFOZFA2VzcvbFFiZDVhREJrck9IQ0ZiUXlTSQp2Tm1kc1N4M2xudnlSaGtPWmVsc3pP
Y1RPNHV5ZHJCeWg0b3l4UVJ0WjNwV1cyZkVibW9tMmcwRmRPSW56bGtWbG9jd2x4bTFCdmVrClBV
Q3Mxem1yNHpzdDhJSUN3QVIvNkgxRW9CUGxyQ016ZTdaZW84SVpLTHRRcDdyTDZUenV6dVNtT0VH
SDg4RS96M3BUSHhNazlqUVIKYWFHbXFRRTdjWk4xVGUzMmpZRk83K1dXS2krTkhsaHRJa0I5eE11
WlBXWDZGbGtiNm5wU1R6bXFaYlZYOVJWcGJXZkExVUdhNlFkTQowR0JHeUJyTTVpeUJaTENBVWov
MW1DWXBUSHRjVTJQNk5FZk9QQ0pLKzExcGNvN1VLcWxLcGphU3R0VTFLTTRtMnB1RTB0a24yWm5w
CnRDT3RnZ2xTbGY1eFZITmpod2pUc08wRndYbXpGdHQwMk4zTTVMRU1NMER0czZISmNCTlVVMXFv
RmxSOWNCdkdod1V6UjFsdGg4aDkKRDFIVDg1dzJ1V2Jod1pyT0d2RUMzRG8xZWswWUFGWE9iUkFK
YWtKTldNSkhIRnpsWm14dWVnb3lKeDZ1c3J3eUJtVWkzcEhLcWNnRgp5ekxLYnowaXc4c0gwREl0
YVB2VXVDVDFwRWZsemhTai9JWWVsVHRURUFUVmRHMlBIdkVGZ3NBRVh5T2pjbzlBeW84Nmd3bGVp
UHVICk1pcjNxTndaVEJCQStlS29QZlRJSE5ETXdaanJRell5VEc1SlF1RFhoVkI2djFQNE5Pb1l1
MG1YWVFaRlJCL3JGWENJOSswZURqdDgKbWVHdDNHZnQ2NU1GeDBubU1XWUdhci91bjVlSlYwZmVv
SStjdHRrSDJHVHRGTEZ1Tk51eVlUVXdsd2thU1l1aWgvdHdBVHF4c3R1WQo3SGgzWGpyMTNxMlBq
aDMxVjMxZ2dwRnFOb0dnQ1VhRVJnTUFhOE8xNGJkdnlPSys0MkUvcGxVekR5TmZXeHNUK3VndFpy
Rm5qUGN1CitPSzBKcW5OOFZnSi9mR3BNaHp1YkV6d0FMby9IT2FrRHV2aEN0VnRrVUxVN0t6MjR5
VmJNVFI5YmU5c3lwdXY2N09xUCsrZko3U1QKRFRmU3JqWHJ6WlRCcVJGVWx3ZG5MaVVoeUtPSWx3
TlhabGEwMWVzMWEvRkliTlFGc2l2RVhBODhyZGlRT2ppVWUvNWpUMFRFUnU3UAo3Wm9YSEoxYWNH
aXB1SWVocVIwWk8rcjJoSEU2OEVQV2FReEYwUWk2UEgxV1I0TTgzbmxlakNBb0JzSGNMd1RWMXZy
bzBNRUVkK2RWCmcrSHlhbXA5bENiOUNxTlFrZC9ydTR6VGEyMWEwckRYUGZNSFF6bzBwOUZBblM0
UW4zZ21PaXppS2FxTjZ6dkU5L3p6bk93Y0ZrNjkKR0dXdXYxT21NMjV3ckxkSFkzWkpINWU5cnJx
eUpMS2hxNGVOcWlCeFFYRW9zNVdnQTZJSnV0MEdwVzEyZE1jZkMyTERvS3FRbEx2bgpBZmZ3NFdm
K2Jaa1J5NFdISm5JWE9lbDZycytNUUp4RjlZblM2RzJtTFhVK2xLbklPSUUwMkFFSWNEUS9HbXQ1
b0o5RDRwQ0pZZUU1CnJCSmFPU2l0N1c2MkQ4U1dYRkduTWNmUW8zNlBrMDIyeWlGUFMxd2oyOEVN
V2ZaTzhrQTlPSDJGMmRUcHZTSWNGWjNaODBTZldLNkoKa2RUc0ZBNW41YVdoSk1DTEptQXlJR1lQ
dUJ5UUN6U1RPK0NCWmppTzV4cW8yNEZwNjhLOU9aaU8zYkNQS015eWtDNFBDM3BpbjAyWgpCdWR5
Z2FRQnNZQ3A1UTRkeEF5WGdjQXN6Z3B4QmpzK1MxQnZub0RTamR0VlZOMTI3SE8vTXIxTkVoVEl3
Z1R2RXdjQVVOTTFzNkZQCk85NmtIODdqcFNjbXk0ck5la3VrTFJGRUZFalRkNUVQOGh1YTdwWll6
VUZQSklOMXpUUDI1L2xzdU9TR21HREVhMEdqTlNYNnlWaXMKMUwwS0R6RGFFdEtCQTYvWTJSbGpJ
RC9nRXIxU3Q1V21NWEFXRTJvNFR2ZDZjNkNhbXNkMFRVL1VERE51RStFaTdCVXNNMjdVNmxBMQpX
aFJiaDZZbG5sc0pHL1Q0cFJuRjlkWXlXZ1RQcHlHU0xZQmFCdGQyamR3cGVCd2lpS0tJNkZtajM1
VmxQQnRJOEtKTjFFdUlPY2d3Cmx6SS9ITE91NUhBa0VNNEFqQzVFQnp2WlFTZ1g4S2s1blV0alFt
Vm5TYlJBbnRoSEJXelVFSEV2U3ZsT3dEUDUwUGJCdDU4UE9HUm0KQVFBMDJqckh2ajNMczVFaXVF
a1FzUGhvaEZsT1dMcWVaU2hjMnJIQ2RwejB2RUUrUVdrSGQzTGNlczQ4NkF4MmRabjFLK3htWnNu
RAp6UXpuWWdLSDJiQm5MV0UyMUlHaVBLV1hyUmVjVzhVRURXbXNDOVhEQ1ducU5qckpNM0JsR0Rr
TndmZ1BTUzlEekhvNlc4LzNiWDg4CjIxR2pVNmo2cTJsVnJmbWM1SnQremFwR2tLYTU0Nk9ZeXcr
NjZaUkFOZzhtK3hCbFBVaUoyNmkycmJMenNXSGlJcmx4QUFDRGN1bWIKcUswdFFMbnN6N1BrdUJO
dHdnVHJsMXNIM0VPK04vSEFPdkRzT1FMZ2htTFhsQWhwVWVuRExBQmJBZW9KTEFRL3doYUNiM1ha
ZWMrQQptWENYOUxyL052ZjAxc1REQkhYcklEWG5TOWZpMjB5dkI2aTFFTXMwVEc5SnV5bGhwb3pm
T25lY1kyWnlhTFR0RXNkcDE0elhIYU0zCjVTdzlZeGZiaWNLejZsbEpzN3hUbUtCRGg2UFFtTVZy
dGpJSUxISXg4YzhFc1RScHRqNDZOS1U4a2pMTTNxNVMwOEdBMjRZVUJUQzcKSFJSMlhIcktyVjF5
YTg0aGIyN3Rqc2xoV1NqWTgzUWkycEUxUmYzRjB0SUpiKzVLbGZQR3NzalJ1UU1qbFBaVGdhbFRT
VHBsZGhhVgpLQXVpSjF2SDlXcEgxTDF0ajVCNnlLdkl5M3IxUU5Ua1lxWjB2T25FSEMyY1NvWEts
TlZvMXFvRy9TYk5NWUxFandBcHlKMGhrMnBECkJGV0EvOUllRkZhQW1KcHNhcklyUHlFd3k1ZjJz
aVlRWXprM3B6Q1FZRTd6MmVBYlUxRWhhb041bnlFZzdRaUdKQi9EazRESGtHOXEKZVJvZ0FXOFdU
Tzl0UWxKYW9Id2c2OXJ3ak01TmlLZ1hrZnVNazgvbVFoOU5hSWEyTjNSbjc2WFV4anlxdlIxMVJQ
YTZQbW40YTIxWQp4Q21WampMbVVFUU0xYTdBbk01S0JwaVN3QldXRXRYTWVQWmtVell6MW1RTlRN
c2M4WlhkbUdzcHlYeFNhL1dydWxHUjlza0JQQmV1ClJTYmpwSmpMZlpDMExsbnpTdFFma2JadGJS
ZVI3KzNvM29qSi85RTljR3BzY0NJSVFCUHZDVG53RlRtRGpHWGpCTEhMMUxaOEdubmQKT3J0dk5O
Y0ZEaUdodXJhUVBwajJRMmZibHFPOUd5NW15ODV5anhKKzVGV1NqamhlWktidGVBdEdNVjN2a0RB
bXNaem81MDI0VXlDYwpkdzl6VVd0T0dxUXVjY1VvdDBKMVN1Y282NXFiMFZaakF1TlltMEphUEpq
VjZPSFc2UGE2UGFkdWNYYWVCSW5HeHZhODlFdnpCSXpQCmlVY3d6Ukk4eXNSS0puSUx4SXZDdVJw
WkxKR0hYOG5ZVEJ2WVFLMnhnUUs1VXM4YkgySlpnYnE5d3ZoZ2dvOHRVSVZjNzVEZE12cXQKWlBY
RUR6RkVtTnVqU1llaGhaVFRVbUtXOUNORU1EVm11anVJVkZ1dlk0SktqeUxTb0tPc3FCSE4rblJ0
dnd4NHM3ZnQ5UTU2YWdRdwpTK1cwd2JTb0pJdGhxcEJUWmU5RHdONmcxZlFVZGhyTkpzK0czTWpS
dC9RSStNSUVqenVZVmNCenFqTjZIQXVrTFcvWHAyWVVCUVE5CmxNdzRUVHZIckZNL1dwVjJYOXds
REplck1OOEU3Ni9kaERtQU9xQ3IxZk5LOW1Ya0NaZ2dqWnd1aEp1Z1VBRUlKNkZIVnYxK3pWbXAK
dWhMeWc3QzVrL1RUMlBCaFVZWVlKOFRHZ2trdE95TnVuWFg4Vms5MmpuVlFRMnUvT1ZsbEk3UElF
dGQxeUVGWHBoWDVSSWdRaUo2bgpZcDlhczNhU3VVZXpld3hOdno2anRVV2FtUEtjMmRITENydjE1
YkMxRktlazJKbnBrL3BPYkFoMU9RNWQrbGhrMmcySmlRUFJqUmx5CnJyVFZabHNsbDZycWRHdldU
bXdHbDU1VUZVWlR1UE5OcXRrRUJxanNtMkNXTzdscGRTQjMwODBVWUhrbTkrekExRUZnTExpVERG
aGYKUDJOTXhPeFd1ZmFtN0wzc21HSy9MaUxJRGlMVzBSQmFUNDR5MFoxVUk0WERCUGVQdy82Z3o1
RHJiSnc0NW16S3pKVWVaM0l0KzlSaQpta0VteitwV21EYXA2alkra0dGc2g1QVBXKzZvdWF5dTQr
RmlyZzZMekZJclJBdjF5SjljYnVhR0xOaDQ2ZGp2TGRpanNkQVg3TGxHCmFiVmgwR29jMTBUZDNJ
cnRvVFZpUUxtbWg5M0dBNGZXM0hqTTNIUzhRTjRMYWRYRlBYUXJjUzhrdEwwYjBKelUxbVpDdlBC
dFRnVE4KUE9xTDdseUtlQ1FuS0ozSjRISHczZE1rUndJaHc5SkJhS2ZtR1BTbXNLM0QxQVAvZGx0
WVBjYXFtc1EwQUsrZkd0cmJNU1ZNNi8zWgp1bTJjRTc5MVhJK1lpUi9helhGanI3ZkZac2lEcXBm
a0xFSTlnb1VsQzdwRytSMlBqZWtNUXBtTlc0eHllM2dNTEVjR0JScDVuTC9tCk5ISm1KY1BCTEFs
emgveThYR1NFNTJncVNLdEtxQms3dDRlamVZdWJEeGRjVHhsVzIrR3NCZHFVZ3RDaFlSU2V3NlhY
L1Z5bzhCQWwKR0JiYUMyQ2p3WWJFaUYwRkp2SElQcHlhUlRMdEJKb0V4NE1uNFVrOHlBdDJibGVV
R0NDRGJjU0pmeWtjekdTMkt1TkJTU2ZrTk9PMApObXRKbFk0TDJuTE9FUTEyNEhlVVVaVVg1d3RD
UFI1UUh4Wnd6TDFEVE9PQWdXWGdqUGFhVlRhbDAxMk4wL3ZIU0Z1MzV1d0VPWmhnClE1ekw5UWxu
RFZURHpUMkxPVzk2TkdLa1R1N2dXQ0RIMFpRMXBHUzcrSTRaU0E1clVZaFVCUk5Nc2lHamtXYlc5
eDNLUDBialpqVmEKeDgzd29HMGN1ZDczcHd1STVmUnBaU1FsTFJuOC9wSEVPWUhwYWd3bFpQSm1V
bk1DSnhpaW94UTVqV0NBQ2ZwK3FpemthVUFPbHBWZQpEVUZEdzhTWFJzTXVPUjhOeDNhWFAzUjlu
MjlFUEQrWURSODhOL0Q2bm9ZZG1PQ1BZby9uTmYvellRY20rS1BZNDVIcmRpbmdFNy9zCmdtbTkx
TEVGd2R6WVloMExlWVE3WTNzcjVZdTQ4RjZSZlErcm1HQ2svaGl3UDR0VlRQQUhnSDN3dGlDQldB
Y1dlMk5zZUZzUWYxem8KQ09BT2RBUW15QSt3b25pc0kxNFI3RnpHT1pqZ1c0T2R5emdIRTN3U1Vq
NHpyUHhJMmVaT0pRd3JjVGx2SUFZM2lkbU9CYitKSDNTRQpPNVp6SCtxSHc1cjdxWHh1alhHMm9x
eUNJRXpMVlJEdTRWTTlkTytuSW41UWpqVXlVRCtNUkVHUFloOFdaRXR4QmliNEtJSXUyQVdICmww
QUlEeWNFa1kwT0VQYXFMR1Nnd05wQUpBLytUU2RmNGRpYmJnZTV3aFl4STA5c21MTktzWnZsaFZ4
UE1WUEJmaVIzN2xuWkNOL1oKM3p4c2hkQTJEMXR4RDNIc2FrRXZCTGU1ODlMWUZ5eVRqN2x1SUIr
WHlvVHdxNUFrZ01pR09FTFB2Rll5cTQ5TUZySTdwOTIrUXgwegpxamtKcXNlcW9nMkY5bTE0dTda
UHhCSnlHdHp4UEM1NWtnOC9zUkJnMVFmYnZsd0lxYm1Eb0V1cVJoN1pRVG1tMDF3QXVJZFlDakJL
CmQzYnZCVXhiRUZvTmxRaVdhWWFMcktOWE5wWVRaN3F4ait5OXFDeVhsTDIwZGtYYWVhUjBJQjBw
bms3cE5KdWN6djNVY1paZG01T2kKczk5SWJNanZMSEFjaW1IVEIrakFua1FJVSsreWxMblZsc0Vo
WXhMVTl3clBvZDhrcDlSd0VqZGpiam14MUw1eTRxbmNFWktNb1RjMgpHR0NzMzJxMXQ1VnViU2Z1
dlk0enpiYk1qajFvL3ZHZ05ZeGt0VmgyR3BWWnc5RWxxaGpsMFk0L3BQVTh5Mkc0UFpRNU9xRkpC
MzVHClVtbmplSTdwZytrcE0wRVUrN0FzRjhuWkdORlU0TUdTWTU0MFZ6ZjVjdHU0MG1GOHMxNGpz
OXVaSWswWW1UZ2Npelc2OWduQmtncmYKdWF0RnFjVnkzaEl5TlNnSnB6S3hOOEFsa1E1VnZQTDN1
SWtpcy9Sc2pVT0kxK3NLOHViY0JSSGtuU3JJdzhyYVE2ZUN6aDdWN3NqagpVZjRSRy93OUI0N3No
aEExd1VJUVAxb2hXTHZ6UjhHa3drZXdQV0xQYkxmNnFwQ2hkTnBzNW9NZHZ3NnJzTjZWMXNWK1Aw
bFpOS0N6CkR0Tk0rbW1kSEs3MVlGMkJTQ1FKcFdGM0pBM1RUa3RLSVZRS1BJZ0p5ZUdXMERvRUVR
OVFzZGg2SzBFSmxqd2VicDJhdWFnS3htR1oKRG92cTFPQzBGU0ozcWNrOUdZMmM4Vk96d0NFZURY
OHRzS1RNZmIvR3ZhanVwY1MzSHNqenJkdnc5cjYvRDROZElnK0xOZ3RSVTd3cwp6eGN5WGVUdVF0
ZExLOEppMy9aTzA4UE0xYzR3RVNaTzE4ZURNcW50QnZVOGxkSlVCbXJBNkxaVEcwSklzbmVyTEFr
NXJ1QTBXSzJuCnNiU2ZJNnFSY1h0SUgwZ0FyUE4rejgrOTdlSUVqcW9IU2Z0aU5tR0N1U1orT3FV
Z0ljV3l5RnVqYkxlVEQxUjlRNnlTM3FIYnIyemMKT1NLTmd4L3RQRDNvdG9laU1LUldVMnBVSGNM
cVB5Wm9KYTZwRG52VVZGbWY2MzIxUDlMT3h5cUtLOXk1RGI1czNWeHRlQzZhK1k5VAptWS9zVHJF
Ukt2ZmNNTUdIbjQrK1pZdTBROHhrYjVlRm13bnkwNVBSbWJyTDVrTHRXKzFSWlRLRmxVSkVienVX
TTdYakpBckJvSno0Ckl5YW9OOWt0c1NCaEw0SElLYXVhc3VCcTFhQW45eFd2bHpRbXBHcWN1Tm8r
RkZsK0dYbmZ5WDloM1lrSmJrT2tjQU9xM1oxb1cyMU0KNzhmRFNXY3pDV0IzUkxxQnJRZjdIWVFo
eEVJWXpOZHA0RE5MTitpUkJOWHJ5YUMyeEhudVRzOFhUTDUrT2d0cVJRNFd0TWFKb1BJVgp3RU1k
RlhjNXhZUFV4RWFPVFFKeTlrZkVxQTR4cDFGZUJkRkNIUkFoUFY4YTl4QlhPVFhWbGVtQUhCcVlG
dC9KcXgwOE8weUk0Z1lsCkdUdVRlN2xsV05lSDBwamdTMVg0WHRFdlhzeHBzZngzT256Zk1pWUkv
WHBvSHVianN6emlLby9sOVp5b01NRnI1ZldjcUREQmErV1YKN3BEWDI2VXJSaWJCcmFHT1hKZnNZ
NEpUYm5SRUlkczA1MzJGdEt4OWRSQTVLblAydzlsdzVFS2VlaGJOa2dEMFhtNnVBa0tGeEdVQwo2
ODdoYURjZkJlbUozbWdUWmVIRXdtWmd1NFdDRFpydVpONFZ6WHk1aGEyWSszNDZYRUorWlFYeDhp
QmVTUlpiWFV2MGJqZ2hhYlZSCnJmcFR2T0YzQmx0ZjIza09qOUJsZHpGaFloR1MwRjZ4dnR4S25W
Ni9DU3ZXdHJCQSt0UVo2d1FzR1EzbVNnS2I3cklGWkFReU5YQ1QKU3EycFRLY0I1UXdtdzVGbXJp
RFZkVlJhOWxGSzRuQnNaajdxQy9QYkxVWjJza3dHNm03Rm5wcGNiTUlLZEpRT2pFTzBEL3NrcXg1
awpVN1RCeVpJeU02MmdtcHRORXFLNjFjRFBnYzFWQ3pOZndPdkRncmVVMzdoTjZoNjdzRVpTM09Y
TDFUallkd2Y3OFNLYWpSTWlpTWcxCnlrdERIbXgyVnVsbkdzR0Q4bHhMMXphQ0NUN1gwcldORkFS
L2twMmZhUVFUdkJUMWEyVldiZ1FUekVmbldwbVZ4WVVKdmdTQkh6VmkKeXJrYnZmZUlqYkUxVnFG
R3NTR0JDUzVXc010RmpVZDkySTlMb2lPOVY1WEQ1TnhDV2hOMjBLMERNb0IwRjJ5Vno3TXVYbXVu
OU9xTApWSVRsbjlRNkhIMjZibGdDS1kwbkI2OXIxZ2RGdWsvMndiUWVSN2ZMaGRrd04rWmo1QXgx
dEdpelhHM0lyNVlyVWRVMzI1Mm83Q0MrClh3d2JSS3J5S21wYThvYUVGWFc2R3R5RndiaUhEK0ht
cTc1MXpXNnlOeGZ5eUhQYk5MbFF1amE1THpMdHdrSThqYzJwdFQzd1pMU0YKWFhPdHVtQ0tDenBr
bHV5eFpqS2dYU3J0cmJaSjJobEppRXRRSEdGckhkVm5zR3Bvejlld2lDb08yR0lWV3R2akh1NlVT
WHUzbjQxMgoxcUUya0N5cjNtcDF4TVVXNVhzR1JETk5RdjNjTjRsNTNhK0pldHJaYzhHSlU4aCtK
enpQV2tOeFVlbDFySWJ0MHU0QWttd1pKbWl2CmlKV3RSSkZPQlJ0eUtaL1NwcUZxTzJiWUJLODdC
dmROQW51U3U4TjA3ZzdidVRzY0xNTTFlTnhUbEh2Yzlkempub0J6cThBV0dVd1EKOXNsNDZMTEd3
YkhqSTZxSm9GVHZhc0RPRmdYMnlFUjRlMlpMTW5PUERiTDlzQU9uQis3NVhLclVrVDhERFlRSmdp
dGxIbDJUNjdYeQovVE41TzVkTnNIelFCU2NhZHdvMjgwQXRFaHE2cjZEMmk4MDV0MXhnZ2ovRHlt
VVRtTzhYdUxobCtjZXMvQ3dYbU9BYTV2S1BXUGxaCkxqREJYelVnT1JlWTRNOE1pR1lhK1RxODEr
b3NWcXU5bVhWQ05kRXExZUZpQzJra2JiWTdNV20vZGZBSzJQZ1ZxUUxyUTcwRjdCT04KbVQ2WmNC
MnRzYkxwU2ExZDlkWlZobkU3OVZtMHBkZGhOTExxL05KZkNROXBLNFJXK0dUUnhZbWNoME5CVDgv
c25HdzkzbjZyTUxXSApTc1dsNzFYYUdyQ3VGWCtyVUJlMWJxOTlyNXJwaDY0V2YrdkpyZlpEYTdj
WHkvWCtoYjEyK1Vta3h5ZVVpcXVQRHk0VjU2aWVQZWxVCm5NV0NVNDI2Rm12UG5hUjZjaHJyc3V4
RGx4N09ZL25oMVBlZGIzeCtaUEpUOStGdzJhZG04MU4rMHV2VC94NW9HOXVML1dqN2Y0cU8KNGNO
WnQ5VWVVeHdNYmdRanRCTkRGMFBmL2NralYvL2lvNFUzb2VIcGRuNXVzdWxvVWZRdENIM2Z2SUhq
YVAraVorOC9OSnlmOFNxSwo2UDdtbUIrZTZ3cmY0QURYUDdxdDMxUTBVcStRSnZORloydnNseXE3
WWI2c2RUakRxZWxWaXF2QXhzQTZVN2xyNGFMNmM5UnRMNG8xCmIyUGNVcmRmU2YyaStuUFVZVlhE
c2ozTkVSNTRPQjZoQ1Vhb2tDeFhxWEowUXhRYUZNVlJWWjVsT0ZLZ0tZWmttK3hkNTUrcC85QU0K
SHJmSGczT0J3aHdMY0xQN3dCOXV1V2F5YTdLNk1iOXd6SWIrVXRPcW15L2c3V3BmdURwZHJWVkpo
aVE1L1k3d1JkMkxWZ3U2SFR1QwpzNHJwUllOM3AvSVU0L0Q0NnQyTjF4N1h3MmRLYnlMZmpFOWFh
UEFXWU9CbkFmMWMxUWNXSHJSTFVXNnoxVHpMMEwraFhPeHdqdlhtCjdzTExWVTVidzNzNE1sbWJW
dWliU3ZXbVdyazc3bGpRd2FWZUpuSUJuaHpaT2ZaMDJQNjFOcm5xRjYyMnFYNnBrcFhxRnhZMnlI
OWgKZFpiZGJPaTFYdVBXZDcyOHFQNXlHOW9tbjMzZklnMm03MTNGMjJ2bFNzK3JzbzgvZXNXQjE4
dkRxdGVPSHMzVXpZcFdvNytBR2FWaAo5QXp6eTVxRWNXU3FyRUhwRzY1UzUraTdRZmc5bzFlTTZl
TXBlVGU5bjA3aFc1MXhvYTN1Tk83UGNWYW9ob3ZxRHhDN0pUMTUwUjRVCmRVdjNuOVFmWGExUUMv
clAxSC9jQmh3OXZ4bktjRDQ0K2taaFFWMWNlRnBTT1dueFp0c08vV1B3M01ubHgzSXYxTTdWSjVk
dnJMeVoKb2VZYTN3UUQ5c0E2OGFlaStVKzRmZHpaOWtXaGg5NCs2RHNRd20yUi9MejB0K0pzOStX
VkZ5czFmY2NQTlRqQy9rUzNYN0QxSEw4UApqVjl4WlB1aE11NTVhamlPZi9wRy9rUGl2MXVXYjY4
KzAvVlNkZGZYalcvTndWSzZyWWgvLzdqYTJ0RTIrM0tqeGNVZlY0NHdRdkNvCnpiZDJiTncyZlhI
NXh6UTJxZWFWMjhmWGZsdzFQK2tPejdRbzE3NjcvR01DY1k0VGVUS0N3OGJLYmQveHBSZHJ2bWhG
SGdiamZRT0IKSWt2NHV3SUtqUnhTZjZGdzFXTWNIbkIwcVJPZWpNcDcwUXE1UHZvMHlaMHp6TTd2
Vmd4UDVQWkJWTU1UdnQ0VkhwYlkwUDBoU0pUVQoyMTlBL0ZtM0FTdUlkbWdZM3RWNGVESVovbm9Q
NzllTnhIaG9na3Y0Rnc3Z0Nsd1RUajN2UVpUVTNydXlGdzNuZUgxazhWYnQ4S1QrCkI3RVk3eGtR
Z3lMdXUxcEZsSGgvcGIzNHFJamdTbUw1UFRxQ0tyVjZSYnpaL0VveG53WmZZVncrTGI5eTVDY0p2
bDZORFlwNW5ILzUKQ3c2Y2xXSkxZdms5NFBnVjJDQUJHZ0NLNVZlV0FXUmNENHhTWDE2SmkvTGsr
aUJXaEh2WHNHQ3h3dmlUc0dCTHFQb2dzSGhpSXQrWAp1bUJ5WE9UbTVNL3BDK1pqQXVOOW14R2Er
ZE5taEM3cDJ3K2lMOHJXOGYyb2k5enh2SGM3cjNjdVNzUDZTdWZpWStxS2QyeEVLcm5UCitTdU1T
S1UwdEgrQkFhbk5kd3dNOEN4K0RUREsvc0ZmWUx4dllOVHZETWxiM2M3NlgxT0NNK0Q1bHF6Mnph
MGo4WWMweGkvSmJVSGEKSXM5dDNVY2tiOGh0bGIzdlZ5cU5NanNmeGZrc3paamY0M3pTSmN0K1Zk
NFQ4bHFEcnpUMlAvTXNCbjI5QTFyMndGOEpqVEkzSHdRYQpaV1g2ZTZEeEs1QnhiMC9neTF1eUdH
VUp2QklYSlZZK0NDeXFmMFJqbEdSNWxjS0FqT2V0TWFtK0RSZmx4T1VyY2ZGQlRVbHBpTjZSCnVz
QzR5Tk5iYjB0NjFrc1NlQzBzU2hQcmcraUxrbERlRHl5dzc0bXo0VytEeFJzZHozS3crMEZnVVFM
Nys0RkZIcVBDb21xdUx0NW0KUlo3RVphL1VGK1hseHc4Q2pNb2ZRVWE1MWFzY2pBSWErZWZ5YXlV
SFI0VzVmaXRHK1N6Q0s5SHhCRjBmQkI3djFwemdvS1RBeHR2cwp5UnVqa3IvQXVOc2tXbVRKL3ZE
UnNlWlhuQmIvRmNBb2V3cC9OUWJldlZWZU52NDlya1k1eUx2S29NQ2ErOTNXUHZqNnBxMTlaU244
CkJRY0dSM25PL0I1d2xJellWZGlBclBnZE5rQ0R2Q1hOVllicVgyaGdhSlNYbjk4UE5PNERGRmlL
Zndzd1NqQjlKUzQrYUh4U0xVbmwKL2NBQ1FwSkJIcGNzdjFiZmhvdHlzUFJLWUpTcmY1REk1TStZ
a2xLMGZKVXBBVGdNdmtKT0hESWFPVEN1RDFyTGMrT1Z3Q2d2TFh3UQpZTlQraU1Zb3o3S3JrSUZq
RS9oWWZxM2x5SGhEUHFNOE8xNEpqWEwxandLTjB2VDlQY2FrUEUydmcwWnVUUUFWQUkwOE5LbGV2
L3pPCmxJVHdTbWlVcDlkZmFQelJaK0UwY3hjRHpNazlNcTRIUmxtRnZSSVlaWmgvRUdDVTgzKy9S
MmVVZzhTcmRBYnMxaG5rUHNieUs5NloKOFliZFhPVTlONitFeGdjMUorV05DYjhIR3VWcGVoMDA3
czBKYk5ONGs2Znh4a3pYQnpVbjVUMXV2d2NhNWJHNENobzRQQUVuNC9aOApNLzNINHBOYXlWSDVJ
QWJseVlyUTc4RkdXUWRmajQxNmJsSHlGUlNJWGEvM05zcnV3aXROU25uM3p3Y0J4NTh4S1dWaFhv
VU5ITHhpCmJHQ1RVcjhlR21Xb3ZsdG9QUGZRMkx2bDBFKzNleFZlZmg3b2l3K0F2T1pSUGNYcTY4
T1RUOXVobGthM1hYaTQrc3pES0M4cTRrZWQKRmc5ei9mdW8wL3R4TEgwcDVGWE1vQ2VxL3FxSmxY
dnh1Y3JORlM1UXZIcVBTeWt2OXNwWlZhcjlRZlJ0aWF2Zlk0cFo3aCtPNDZyMwpRL2xtVkhCL1Fm
SHVIMkJXejBIQnNyOE9GT3hmVUx4N1VOU3dwcWovT2xDOHdTc3JxY3EvNXVOUFBmbVN3YUI0OEFU
ZWJENXFmelhGCnU5Y1U1WmpwemFCNFEyai9WMVBnbUtDSUJHNWR5cEpNZm8ralNmOXFSL01OeTQ0
bEFmdzFIMy9LZkZSK3RhUDVocVBnZjBIeFAwUlQKVUwvYTBhejg5U25ldlUveHEvM01OeXhBLzFV
VS8wTVVSZlVYWnltdVgxMzhJSkQ0SDd4RzBJQjN4RzNqLzU5V0NaNGs3SCtQbjE2Qwo4dFd4RzNU
L2ZtbjJUOW5mSnlMOElDc0ZUL2g2WDlDQUhXQjNpL1ovQ2hubG5YUWZCQmpsZ3pmdkN4ZjRhVy93
ZUlVL2QzQ3B2Tlh4Cmc4RGlIZXVMOG1NQXIxY1liM3dZeXdlRlJzbmN2eCtGa2ZzWHQyKzR5RGNq
WEkrTEo1UGpsZW5BOHZiS0Q2SXpjbURRSUp2YkxSNi8KRHhnWGpWN2xmTUxCbEYrQ2kvSnU0SGNM
aS84WFVkMXpOREZTOGpkckYyK3d4aSt3dm55emRMNEdrZC91YUpGcVIvYmFNYWJ3OHVrbwowRUxE
MjZUZlJNMkppdmVkZmFmUXc2YXdPMnF5bzhWRy9pcm15NllnUVlFM3BqMzM3dXJiSFd2ZkdzWHJl
b3YzRmo5K0FmWjN1WHUyCndidmVETFJ6L3A1eHhjNk1UemxsWUM0eThyMXFYejlQak1nL2hodmpj
Nm10S0Jaczl3WWU3ODNldjRIcDd0SUR0emxEeGRYdHQ0dFgKTmQxZGVxN2cwYlBqYjdKdncrdTk4
OWZUNTQzZ1N3OWw3d2Zzb3RjWG5idmo2V0c4Um9rUkJpRlFmSEd3SGtwY05LTnZia3cvZExYNApt
eFlFanIzUll0djNVS0NiLzZLSFc0L0x4M2JzR0JkOXVSdFEzb2tmWDcyNzRkaWZ6cTV6NDJpZTlm
WHorWXRldkV6OTh6YzU3MjR4Cm5vNzl1R3B4OVRGRjNLTnk0Ly9ham5PTTRsQ0wvZkJHaWJVd1Bn
Wnk2SnMyZFBHVy9uZEtYREFHTE45QVJmMjRNY0p2dk82dmpVK3kKSUg1eTdIV29oZW1uM01XQUxZ
MlBTdDNXTHZvcUdORW10SU5jZkppVjR1cEVFTC85RjR6bERjd3YxNEQzZ3YvWGZ3T29laWRlQ21W
dQpaSE4wY21WaGJRcGxibVJ2WW1vS01URWdNQ0J2WW1vS01UQXdOREFLWlc1a2IySnFDakV5SURB
Z2IySnFDaWhRY21sdWRDa0taVzVrCmIySnFDakV6SURBZ2IySnFDaWhOWVdNZ1QxTWdXQ0F4TUM0
eE1DNHlJRkYxWVhKMGVpQlFSRVpEYjI1MFpYaDBLUXBsYm1Sdlltb0sKTVRRZ01DQnZZbW9LS0VG
a2IySmxJRWxzYkhWemRISmhkRzl5SUVORElESXdNVFFnWENoTllXTnBiblJ2YzJoY0tTa0taVzVr
YjJKcQpDakUxSURBZ2IySnFDaWhFT2pJd01UUXhNREUzTVRnME1qQTFXakF3SnpBd0p5a0taVzVr
YjJKcUNqRWdNQ0J2WW1vS1BEd2dMMVJwCmRHeGxJREV5SURBZ1VpQXZVSEp2WkhWalpYSWdNVE1n
TUNCU0lDOURjbVZoZEc5eUlERTBJREFnVWlBdlEzSmxZWFJwYjI1RVlYUmwKSURFMUlEQWdVaUF2
VFc5a1JHRjBaUW94TlNBd0lGSWdQajRLWlc1a2IySnFDbmh5WldZS01DQXhOZ293TURBd01EQXdN
REF3SURZMQpOVE0xSUdZZ0NqQXdNREF3TVRFeE5UZ2dNREF3TURBZ2JpQUtNREF3TURBd01EZ3hO
Q0F3TURBd01DQnVJQW93TURBd01EQXdNemt6CklEQXdNREF3SUc0Z0NqQXdNREF3TURBMk5qVWdN
REF3TURBZ2JpQUtNREF3TURBd01EQXlNaUF3TURBd01DQnVJQW93TURBd01EQXcKTXpjMElEQXdN
REF3SUc0Z0NqQXdNREF3TURBME9UVWdNREF3TURBZ2JpQUtNREF3TURBd01EVTNNeUF3TURBd01D
QnVJQW93TURBdwpNREF3TmpFNElEQXdNREF3SUc0Z0NqQXdNREF3TURBM05EZ2dNREF3TURBZ2Jp
QUtNREF3TURBeE1EazFPU0F3TURBd01DQnVJQW93Ck1EQXdNREV3T1RneElEQXdNREF3SUc0Z0Nq
QXdNREF3TVRFd01EVWdNREF3TURBZ2JpQUtNREF3TURBeE1UQTFPQ0F3TURBd01DQnUKSUFvd01E
QXdNREV4TVRFMklEQXdNREF3SUc0Z0NuUnlZV2xzWlhJS1BEd2dMMU5wZW1VZ01UWWdMMUp2YjNR
Z01UQWdNQ0JTSUM5SgpibVp2SURFZ01DQlNJQzlKUkNCYklEdzNZbVE1WTJSak9HSTVZMkV3Wm1W
bU1XTTNNekV4TVRWaFlUZzVPV1ptWmo0S1BEZGlaRGxqClpHTTRZamxqWVRCbVpXWXhZemN6TVRF
eE5XRmhPRGs1Wm1abVBpQmRJRDQrQ25OMFlYSjBlSEpsWmdveE1USTJNd29sSlVWUFJnbz0KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240423</attachid>
            <date>2014-10-24 12:17:43 -0700</date>
            <delta_ts>2014-10-24 14:01:49 -0700</delta_ts>
            <desc>Patch that addresses Dan&apos;s comments</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>40152</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTc1MTQyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU2LDkgKzE1NiwxMiBAQAogCQk5MzA0
QjMwMDBCMDIzNDE1MDBGNzg1MEQgLyogV2ViSWNvbkRhdGFiYXNlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDRCMkZGMEIwMjM0MTUw
MEY3ODUwRCAvKiBXZWJJY29uRGF0YWJhc2VJbnRlcm5hbC5oICovOyB9OwogCQk5MzE2MzNFQjBB
RURGRjkzMDA2MkI5MkQgLyogV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTYzM0VBMEFFREZGOTMwMDYyQjkyRCAv
KiBXZWJGcmFtZUxvYWRlckNsaWVudC5oICovOyB9OwogCQk5MzE2MzNFRjBBRURGRkFFMDA2MkI5
MkQgLyogV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE2MzNFRTBBRURGRkFFMDA2MkI5MkQgLyogV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0gKi87IH07CisJCTkzMUExMTJGMTlGNkU3NUEwMDA1MDZEOSAvKiBPcGVu
SW5OZXdXaW5kb3dUZW1wbGF0ZS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzMUExMTJFMTlGNkU3NUEwMDA1MDZEOSAvKiBPcGVuSW5OZXdXaW5k
b3dUZW1wbGF0ZS5wZGYgKi87IH07CiAJCTkzNEMxMTY3MEQ4NzEwQkIwMEMzMkFCRCAvKiBXZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0QzExNjYwRDg3MTBCQjAwQzMyQUJEIC8qIFdlYkR5bmFt
aWNTY3JvbGxCYXJzVmlld0ludGVybmFsLmggKi87IH07CiAJCTkzNEM0QTkxMEYwMTQwNkMwMDkz
NzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEM0QTkwMEYwMTQwNkMwMDkzNzJDMCAvKiBXZWJOU09iamVj
dEV4dHJhcy5tbSAqLzsgfTsKIAkJOTM0QzRBQTAwRjAxNDFGNzAwOTM3MkMwIC8qIFdlYlJlc291
cmNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzNEM0QTlGMEYwMTQxRjcwMDkzNzJDMCAvKiBXZWJSZXNvdXJjZUludGVybmFsLmggKi87
IH07CisJCTkzNUQ0NEU0MTlGOUFGRjAwMEZCNTMwNiAvKiBXZWJBY3Rpb25NZW51Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RDQ0
RTIxOUY5QUZGMDAwRkI1MzA2IC8qIFdlYkFjdGlvbk1lbnVDb250cm9sbGVyLmggKi87IH07CisJ
CTkzNUQ0NEU1MTlGOUFGRjAwMEZCNTMwNiAvKiBXZWJBY3Rpb25NZW51Q29udHJvbGxlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUQ0NEUzMTlG
OUFGRjAwMEZCNTMwNiAvKiBXZWJBY3Rpb25NZW51Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJOTM2
QTJERTgwRkQyRDA4MDAwRDMxMkRCIC8qIFdlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNkEyREU3MEZE
MkQwODAwMEQzMTJEQiAvKiBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0gKi87IH07CiAJ
CTkzNkEyREVBMEZEMkQwODQwMEQzMTJEQiAvKiBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNkEyREU5
MEZEMkQwODQwMEQzMTJEQiAvKiBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsK
IAkJOTM5MUYyNzUxMjFCMzhCRDAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTFGMjcz
MTIxQjM4QkQwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi87IH07CkBA
IC02ODAsNiArNjgzLDcgQEAKIAkJOTMxNjMzRUEwQUVERkY5MzAwNjJCOTJEIC8qIFdlYkZyYW1l
TG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZyYW1l
TG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMTYzM0VFMEFF
REZGQUUwMDYyQjkyRCAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE4NURCNTA2Njc5RjQyMDA1RDVFN0UgLyogV2ViSFRN
TFZpZXdJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkhUTUxWaWV3SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTkzMUExMTJFMTlGNkU3NUEwMDA1MDZE
OSAvKiBPcGVuSW5OZXdXaW5kb3dUZW1wbGF0ZS5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IHBhdGggPSBPcGVuSW5OZXdXaW5k
b3dUZW1wbGF0ZS5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0Q2NTk5MDM0
MTNGRjIwMDg2MzVDRSAvKiBXZWJDbGlwVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNsaXBWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk5MzNENjU5QTAzNDEzRkYy
MDA4NjM1Q0UgLyogV2ViQ2xpcFZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0g
NDsgaW5kZW50V2lkdGggPSA0OyBwYXRoID0gV2ViQ2xpcFZpZXcubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk5MzQ1RDE3QzAzNjVC
RjM1MDA4NjM1Q0UgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5uaWI7IG5hbWUgPSBFbmds
aXNoOyBwYXRoID0gUGFuZWxzL0VuZ2xpc2gubHByb2ovV2ViQXV0aGVudGljYXRpb25QYW5lbC5u
aWI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwpAQCAtNjkyLDYgKzY5Niw4IEBACiAJCTkzNEMxMTY2MEQ4NzEwQkIwMEMzMkFCRCAvKiBXZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXdJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MzRDNEE5MDBGMDE0MDZDMDA5MzcyQzAgLyogV2ViTlNPYmplY3RF
eHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJOU09i
amVjdEV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0QzRBOUYwRjAx
NDFGNzAwOTM3MkMwIC8qIFdlYlJlc291cmNlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5MzVENDRFMjE5RjlBRkYwMDBGQjUzMDYgLyogV2ViQWN0aW9uTWVudUNvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQWN0aW9uTWVudUNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM1RDQ0RTMxOUY5QUZG
MDAwRkI1MzA2IC8qIFdlYkFjdGlvbk1lbnVDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQWN0aW9uTWVudUNvbnRyb2xsZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNkEyREU3MEZEMkQwODAwMEQzMTJEQiAvKiBXZWJU
ZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzNkEyREU5MEZEMkQwODQwMEQzMTJEQiAvKiBXZWJUZXh0Q29tcGxl
dGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVGV4
dENvbXBsZXRpb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
OTFGMjczMTIxQjM4QkQwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk3Myw2ICs5NzksNyBAQAogCQkJCTFD
OUY1RUZCMTY1MUNERjcwMEM0ODBGOCAvKiBEb2NrLnBkZiAqLywKIAkJCQkxQzhBRTc2MzE5OTJG
OTY1MDBBQkY2RUMgLyogRG9ja0xlZ2FjeS5wZGYgKi8sCiAJCQkJOTM5ODExMzIwODI0QkYwMTAw
OERGMDM4IC8qIEluZm8ucGxpc3QgKi8sCisJCQkJOTMxQTExMkUxOUY2RTc1QTAwMDUwNkQ5IC8q
IE9wZW5Jbk5ld1dpbmRvd1RlbXBsYXRlLnBkZiAqLywKIAkJCQlGNUI2NzEzMDAyM0VERjg5MDFD
MUE1MjUgLyogdXJsX2ljb24udGlmZiAqLywKIAkJCQk1REU4M0E3NDBEMEY3Rjk0MDBDQUQxMkEg
LyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5pYiAqLywKIAkJCSk7CkBAIC0xMjc4LDYg
KzEyODUsOCBAQAogCQkJCUY1MkNBNkJEMDJERjlEMEYwMTg2MzVDQSAvKiBIVE1MICovLAogCQkJ
CTUxRTk0QzA3MDZDMDJDQTMwMEE5QjA5RSAvKiBQREYgKi8sCiAJCQkJQTEwQzFENzkxODIwMzAx
OTAwMzY4ODNBIC8qIGlvcyAqLywKKwkJCQk5MzVENDRFMjE5RjlBRkYwMDBGQjUzMDYgLyogV2Vi
QWN0aW9uTWVudUNvbnRyb2xsZXIuaCAqLywKKwkJCQk5MzVENDRFMzE5RjlBRkYwMDBGQjUzMDYg
LyogV2ViQWN0aW9uTWVudUNvbnRyb2xsZXIubW0gKi8sCiAJCQkJODM3MzQzNUEwNjI0RUUwRDAw
RjNCMjg5IC8qIFdlYkFyY2hpdmUuaCAqLywKIAkJCQk4MzczNDM1QjA2MjRFRTBEMDBGM0IyODkg
LyogV2ViQXJjaGl2ZS5tbSAqLywKIAkJCQk0NEJCOEIxMzEyNDFBMDIyMDAxRTNBMjIgLyogV2Vi
QXJjaGl2ZUludGVybmFsLmggKi8sCkBAIC0xNzA5LDYgKzE3MTgsNyBAQAogCQkJCTkzOTgxMDRC
MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJEYXRhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NThBNDA5NjBBMTQ4NTNCMDA1RTY5ODcgLyogV2ViRGF0YVNvdXJjZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5Mzk4MTA0QzA4MjRCRjAxMDA4REYwMzggLyogV2ViRGF0YVNvdXJjZVBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNUQ0NEU0MTlGOUFGRjAwMEZCNTMwNiAvKiBX
ZWJBY3Rpb25NZW51Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwNEUwODI0
QkYwMTAwOERGMDM4IC8qIFdlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5Mzk4MTA4RDA4MjRCRjAxMDA4REYwMzggLyogV2ViRGVmYXVsdEVkaXRpbmdE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwNEYwODI0QkYwMTAwOERGMDM4IC8q
IFdlYkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xOTgwLDYgKzE5
OTAsNyBAQAogCQkJCTI5QUVGOTYwMTM0Qzc2RkIwMEZFNTA5NiAvKiBPdXRsb29rUXVpcmtzVXNl
clNjcmlwdC5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwQjcwODI0QkYwMTAwOERGMDM4
IC8qIHVybF9pY29uLnRpZmYgaW4gUmVzb3VyY2VzICovLAogCQkJCTkzOTgxMEI1MDgyNEJGMDEw
MDhERjAzOCAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsLm5pYiBpbiBSZXNvdXJjZXMgKi8sCisJ
CQkJOTMxQTExMkYxOUY2RTc1QTAwMDUwNkQ5IC8qIE9wZW5Jbk5ld1dpbmRvd1RlbXBsYXRlLnBk
ZiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUM4QUU3NjQxOTkyRjk2NTAwQUJGNkVDIC8qIERvY2tM
ZWdhY3kucGRmIGluIFJlc291cmNlcyAqLywKIAkJCQk1REU4M0E3QTBEMEY3Rjk0MDBDQUQxMkEg
LyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5pYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkp
OwpAQCAtMjIyMyw2ICsyMjM0LDcgQEAKIAkJCQlBNTY4N0JEQjEzNUI3OTFBMDA3NENCQ0IgLyog
V2ViTm9kZUhpZ2hsaWdodGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM2OEY2NzIwOTVCNUZD
MTAwQzI5ODRFIC8qIFdlYk5vZGVIaWdobGlnaHRWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTEwQzFENjExODIwMzAwRTAwMzY4ODNBIC8qIFNlYXJjaFBvcHVwTWVudUlPUy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk5MzVENDRFNTE5RjlBRkYwMDBGQjUzMDYgLyogV2ViQWN0aW9uTWVudUNv
bnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTBDMUQ2QzE4MjAzMDBFMDAzNjg4M0Eg
LyogV2ViRnJhbWVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTJFMkZFNjE0RTQ4MTgyMDA3
Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMTFBNkYx
NDc2NTUyRTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSBpbiBTb3VyY2VzICov
LApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTc1MTcxKQorKysgU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTQtMTAt
MjQgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdDEgc2hv
dWxkIHN1cHBvcnQgYWN0aW9uIG1lbnVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzgwMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgYWN0aW9u
IG1lbnVzIGFuZCBhZGRzIGFjdGlvbnMgZm9yIGxpbmtzLgorCisgICAgICAgIE9wZW4gaW4gd2lu
ZG93IGltYWdlLgorICAgICAgICAqIFJlc291cmNlcy9PcGVuSW5OZXdXaW5kb3dUZW1wbGF0ZS5w
ZGY6IEFkZGVkLgorCisgICAgICAgIEhlbHBlciBjbGFzcyB0YWtlcyBjYXJlIG9mIGFsbCBvZiB0
aGUgYWN0aW9uIG1lbnUgd29yay4gV2ViVmlldyB3aWxsIGZvcndhcmQgdGhlIAorICAgICAgICBw
cmVwYXJlRm9yTWVudTogbWVzc2FnZSwgYW5kIHRoZW4gdGhlIGhlbHBlciBjbGFzcyB0YWtlcyBp
dCBmcm9tIHRoZXJlLgorICAgICAgICAqIFdlYlZpZXcvV2ViQWN0aW9uTWVudUhlbHBlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkFjdGlvbk1lbnVIZWxwZXIubW06IEFkZGVkLgor
ICAgICAgICAoLVtXZWJBY3Rpb25NZW51SGVscGVyIHByZXBhcmVGb3JNZW51OndpdGhFdmVudDpd
KToKKworICAgICAgICBTZWxlY3RvcnMgZm9yIGxpbmsgYWN0aW9ucy4KKyAgICAgICAgKC1bV2Vi
QWN0aW9uTWVudUhlbHBlciBfb3BlblVSTEZyb21BY3Rpb25NZW51Ol0pOgorICAgICAgICAoLVtX
ZWJBY3Rpb25NZW51SGVscGVyIF9hZGRUb1JlYWRpbmdMaXN0RnJvbUFjdGlvbk1lbnU6XSk6Cisg
ICAgICAgICgtW1dlYkFjdGlvbk1lbnVIZWxwZXIgX2VsZW1lbnRCb3VuZGluZ0JveEZyb21ET01F
bGVtZW50Ol0pOgorICAgICAgICAoLVtXZWJBY3Rpb25NZW51SGVscGVyIF9xdWlja0xvb2tVUkxG
cm9tQWN0aW9uTWVudTpdKToKKyAgICAgICAgKC1bV2ViQWN0aW9uTWVudUhlbHBlciBfY3JlYXRl
QWN0aW9uTWVudUl0ZW1Gb3JUYWc6d2l0aEhpdFRlc3RSZXN1bHQ6XSk6CisgICAgICAgICh3ZWJL
aXRCdW5kbGVJbWFnZU5hbWVkKToKKyAgICAgICAgKC1bV2ViQWN0aW9uTWVudUhlbHBlciBfZGVm
YXVsdE1lbnVJdGVtc0ZvckhpdFRlc3RSZXN1bHQ6XSk6CisKKyAgICAgICAgVGFncyBmb3IgdGhl
IGFjdGlvbiBtZW51IGl0ZW1zLgorICAgICAgICAqIFdlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZh
dGUuaDoKKworICAgICAgICBTZXQgdGhlIGFjdGlvbiBtZW51IGlmIHBvc3NpYmxlIGFuZCBjcmVh
dGUgdGhlIGhlbHBlci4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlZpZXcgX2luaXRXaXRoRnJhbWU6ZnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAg
KC1bV2ViVmlldyBwcmVwYXJlRm9yTWVudTp3aXRoRXZlbnQ6XSk6CisKKyAgICAgICAgV2ViVmll
d0RhdGEgc3RvcmVzIHRoZSBXZWJBY3Rpb25NZW51SGVscGVyCisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3RGF0YS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAgICAg
ICgtW1dlYlZpZXdQcml2YXRlIGRlYWxsb2NdKToKKwogMjAxNC0xMC0yMyAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFByb3Zp
ZGUgYSB3YXkgdG8gaGF2ZSBhbHRlcm5hdGUgaW5zcGVjdG9yIGFnZW50cwpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJBY3Rpb25NZW51Q29udHJvbGxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQWN0aW9uTWVudUNvbnRyb2xsZXIuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQWN0aW9uTWVudUNv
bnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
QGNsYXNzIFdlYlZpZXc7CisKK0BpbnRlcmZhY2UgV2ViQWN0aW9uTWVudUNvbnRyb2xsZXIgOiBO
U09iamVjdCB7CitAcHJpdmF0ZQorICAgIFdlYlZpZXcgKl93ZWJWaWV3OworfQorCistIChpZClp
bml0V2l0aFdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3OworLSAodm9pZClwcmVwYXJlRm9yTWVu
dTooTlNNZW51ICopbWVudSB3aXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudDsKKworQGVuZApJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBY3Rpb25NZW51Q29udHJvbGxlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFjdGlvbk1lbnVDb250
cm9sbGVyLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJB
Y3Rpb25NZW51Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgIldlYkFjdGlvbk1lbnVDb250cm9sbGVyLmgiCisKKyNpbXBv
cnQgIkRPTUVsZW1lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisj
aW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgorI2ltcG9ydCAiV2ViVmlld0ludGVybmFs
LmgiCisjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWUu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05TVmll
d1NQSS5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8b2JqYy9v
YmpjLWNsYXNzLmg+CisjaW1wb3J0IDxvYmpjL29iamMuaD4KKworU09GVF9MSU5LX0ZSQU1FV09S
S19JTl9VTUJSRUxMQShRdWFydHosIFF1aWNrTG9va1VJKQorU09GVF9MSU5LX0NMQVNTKFF1aWNr
TG9va1VJLCBRTFByZXZpZXdCdWJibGUpCisKK0BjbGFzcyBRTFByZXZpZXdCdWJibGU7CitAaW50
ZXJmYWNlIE5TT2JqZWN0IChXS1FMUHJldmlld0J1YmJsZURldGFpbHMpCitAcHJvcGVydHkgKGNv
cHkpIE5TQXJyYXkgKiBjb250cm9sczsKK0Bwcm9wZXJ0eSBOU1NpemUgbWF4aW11bVNpemU7CitA
cHJvcGVydHkgTlNSZWN0RWRnZSBwcmVmZXJyZWRFZGdlOworQHByb3BlcnR5IChyZXRhaW4pIElC
T3V0bGV0IE5TV2luZG93KiBwYXJlbnRXaW5kb3c7CistICh2b2lkKXNob3dQcmV2aWV3SXRlbToo
aWQpcHJldmlld0l0ZW0gaXRlbUZyYW1lOihOU1JlY3QpZnJhbWU7CistICh2b2lkKXNldEF1dG9t
YXRpY2FsbHlDbG9zZVdpdGhNYXNrOihOU0V2ZW50TWFzaylhdXRvY2xvc2VNYXNrIGZpbHRlck1h
c2s6KE5TRXZlbnRNYXNrKWZpbHRlck1hc2sgYmxvY2s6KHZvaWQgKF4pKHZvaWQpKWJsb2NrOwor
QGVuZAorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGltcGxlbWVudGF0aW9uIFdlYkFj
dGlvbk1lbnVDb250cm9sbGVyCisKKy0gKGlkKWluaXRXaXRoV2ViVmlldzooV2ViVmlldyAqKXdl
YlZpZXcKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICBfd2ViVmlldyA9IHdlYlZpZXc7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAodm9pZClwcmVwYXJlRm9yTWVudTooTlNNZW51ICopbWVudSB3aXRoRXZlbnQ6KE5TRXZlbnQg
KilldmVudAoreworICAgIE5TTWVudSAqYWN0aW9uTWVudSA9IF93ZWJWaWV3LmFjdGlvbk1lbnU7
CisgICAgaWYgKG1lbnUgIT0gYWN0aW9uTWVudSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2Fj
dGlvbk1lbnUgcmVtb3ZlQWxsSXRlbXNdOworCisgICAgTlNEaWN0aW9uYXJ5ICpoaXRUZXN0UmVz
dWx0ID0gW193ZWJWaWV3IGVsZW1lbnRBdFBvaW50Oltfd2ViVmlldyBjb252ZXJ0UG9pbnQ6W2V2
ZW50IGxvY2F0aW9uSW5XaW5kb3ddIGZyb21WaWV3Om5pbF1dOworCisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBzdXBwb3J0IEFQSSBmb3IgY2xpZW50cyB0byBjdXN0b21pemUgdGhlIG1lbnUgaXRl
bXMuCisgICAgTlNBcnJheSAqbWVudUl0ZW1zID0gW3NlbGYgX2RlZmF1bHRNZW51SXRlbXNGb3JI
aXRUZXN0UmVzdWx0OmhpdFRlc3RSZXN1bHRdOworCisgICAgZm9yIChOU01lbnVJdGVtICppdGVt
IGluIG1lbnVJdGVtcykKKyAgICAgICAgW2FjdGlvbk1lbnUgYWRkSXRlbTppdGVtXTsKK30KKwor
LSAodm9pZClfb3BlblVSTEZyb21BY3Rpb25NZW51OihpZClzZW5kZXIKK3sKKyAgICBOU1VSTCAq
dXJsID0gW3NlbmRlciByZXByZXNlbnRlZE9iamVjdF07CisgICAgaWYgKCF1cmwpCisgICAgICAg
IHJldHVybjsKKworICAgIEFTU0VSVChbdXJsIGlzS2luZE9mQ2xhc3M6W05TVVJMIGNsYXNzXV0p
OworCisgICAgW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2VdIG9wZW5VUkw6dXJsXTsKK30K
KworLSAodm9pZClfYWRkVG9SZWFkaW5nTGlzdEZyb21BY3Rpb25NZW51OihpZClzZW5kZXIKK3sK
KyAgICBOU1VSTCAqdXJsID0gW3NlbmRlciByZXByZXNlbnRlZE9iamVjdF07CisgICAgaWYgKCF1
cmwpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChbdXJsIGlzS2luZE9mQ2xhc3M6W05T
VVJMIGNsYXNzXV0pOworCisgICAgTlNTaGFyaW5nU2VydmljZSAqc2VydmljZSA9IFtOU1NoYXJp
bmdTZXJ2aWNlIHNoYXJpbmdTZXJ2aWNlTmFtZWQ6TlNTaGFyaW5nU2VydmljZU5hbWVBZGRUb1Nh
ZmFyaVJlYWRpbmdMaXN0XTsKKyAgICBbc2VydmljZSBwZXJmb3JtV2l0aEl0ZW1zOkBbIHVybCBd
XTsKK30KKworLSAoTlNSZWN0KV9lbGVtZW50Qm91bmRpbmdCb3hGcm9tRE9NRWxlbWVudDooRE9N
RWxlbWVudCAqKWRvbUVsZW1lbnQKK3sKKyAgICBpZiAoIWRvbUVsZW1lbnQpCisgICAgICAgIHJl
dHVybiBOU1plcm9SZWN0OworCisgICAgTm9kZSogbm9kZSA9IGNvcmUoZG9tRWxlbWVudCk7Cisg
ICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGlmICghZnJh
bWUpCisgICAgICAgIHJldHVybiBOU1plcm9SZWN0OworCisgICAgRnJhbWVWaWV3KiB2aWV3ID0g
ZnJhbWUtPnZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBOU1plcm9SZWN0
OworCisgICAgcmV0dXJuIHZpZXctPmNvbnRlbnRzVG9XaW5kb3cobm9kZS0+cGl4ZWxTbmFwcGVk
Qm91bmRpbmdCb3goKSk7Cit9CisKKy0gKHZvaWQpX3F1aWNrTG9va1VSTEZyb21BY3Rpb25NZW51
OihpZClzZW5kZXIKK3sKKyAgICBOU0RpY3Rpb25hcnkgKmhpdFRlc3RSZXN1bHQgPSBbc2VuZGVy
IHJlcHJlc2VudGVkT2JqZWN0XTsKKyAgICBpZiAoIWhpdFRlc3RSZXN1bHQpCisgICAgICAgIHJl
dHVybjsKKworICAgIEFTU0VSVChbaGl0VGVzdFJlc3VsdCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rp
b25hcnkgY2xhc3NdXSk7CisKKyAgICBOU1VSTCAqdXJsID0gW2hpdFRlc3RSZXN1bHQgb2JqZWN0
Rm9yS2V5OldlYkVsZW1lbnRMaW5rVVJMS2V5XTsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRE9NRWxlbWVudCAqZG9tRWxlbWVudCA9IFtoaXRUZXN0UmVzdWx0IG9iamVj
dEZvcktleTpXZWJFbGVtZW50RE9NTm9kZUtleV07CisgICAgaWYgKCFkb21FbGVtZW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBOU1JlY3QgaXRlbUZyYW1lID0gW193ZWJWaWV3IGNvbnZlcnRS
ZWN0OltzZWxmIF9lbGVtZW50Qm91bmRpbmdCb3hGcm9tRE9NRWxlbWVudDpkb21FbGVtZW50XSB0
b1ZpZXc6bmlsXTsKKyAgICBOU1NpemUgbWF4aW11bVByZXZpZXdTaXplID0gTlNNYWtlU2l6ZShf
d2ViVmlldy5ib3VuZHMuc2l6ZS53aWR0aCAqIDAuNzUsIF93ZWJWaWV3LmJvdW5kcy5zaXplLmhl
aWdodCAqIDAuNzUpOworCisgICAgUmV0YWluUHRyPFFMUHJldmlld0J1YmJsZT4gYnViYmxlID0g
YWRvcHROUyhbW2dldFFMUHJldmlld0J1YmJsZUNsYXNzKCkgYWxsb2NdIGluaXRdKTsKKyAgICBb
YnViYmxlIHNldFBhcmVudFdpbmRvdzpfd2ViVmlldy53aW5kb3ddOworICAgIFtidWJibGUgc2V0
TWF4aW11bVNpemU6bWF4aW11bVByZXZpZXdTaXplXTsKKyAgICBbYnViYmxlIHNldFByZWZlcnJl
ZEVkZ2U6TlNNYXhZRWRnZV07CisgICAgW2J1YmJsZSBzZXRDb250cm9sczpAWyBdXTsKKyAgICBO
U0V2ZW50TWFzayBmaWx0ZXJNYXNrID0gTlNBbnlFdmVudE1hc2sgJiB+KE5TQXBwS2l0RGVmaW5l
ZE1hc2sgfCBOU1N5c3RlbURlZmluZWRNYXNrIHwgTlNBcHBsaWNhdGlvbkRlZmluZWRNYXNrIHwg
TlNNb3VzZUVudGVyZWRNYXNrIHwgTlNNb3VzZUV4aXRlZE1hc2spOworICAgIE5TRXZlbnRNYXNr
IGF1dG9jbG9zZU1hc2sgPSBOU0xlZnRNb3VzZURvd25NYXNrIHwgTlNSaWdodE1vdXNlRG93bk1h
c2sgfCBOU0tleURvd25NYXNrOworICAgIFtidWJibGUgc2V0QXV0b21hdGljYWxseUNsb3NlV2l0
aE1hc2s6YXV0b2Nsb3NlTWFzayBmaWx0ZXJNYXNrOmZpbHRlck1hc2sgYmxvY2s6W2J1YmJsZV0g
eworICAgICAgICBbYnViYmxlIGNsb3NlXTsKKyAgICB9XTsKKyAgICBbYnViYmxlIHNob3dQcmV2
aWV3SXRlbTp1cmwgaXRlbUZyYW1lOml0ZW1GcmFtZV07Cit9CisKKy0gKFJldGFpblB0cjxOU01l
bnVJdGVtPilfY3JlYXRlQWN0aW9uTWVudUl0ZW1Gb3JUYWc6KHVpbnQzMl90KXRhZyB3aXRoSGl0
VGVzdFJlc3VsdDooTlNEaWN0aW9uYXJ5ICopaGl0VGVzdFJlc3VsdAoreworICAgIFNFTCBzZWxl
Y3RvciA9IG51bGxwdHI7CisgICAgTlNTdHJpbmcgKnRpdGxlID0gbmlsOworICAgIE5TSW1hZ2Ug
KmltYWdlID0gbmlsOworICAgIGlkIHJlcHJlc2VudGVkT2JqZWN0ID0gbmlsOworCisgICAgc3dp
dGNoICh0YWcpIHsKKyAgICBjYXNlIFdlYkFjdGlvbk1lbnVJdGVtVGFnT3BlbkxpbmtJbkRlZmF1
bHRCcm93c2VyOgorICAgICAgICBzZWxlY3RvciA9IEBzZWxlY3Rvcihfb3BlblVSTEZyb21BY3Rp
b25NZW51Oik7CisgICAgICAgIHRpdGxlID0gQCJPcGVuIjsKKyAgICAgICAgaW1hZ2UgPSB3ZWJL
aXRCdW5kbGVJbWFnZU5hbWVkKEAiT3BlbkluTmV3V2luZG93VGVtcGxhdGUiKTsKKyAgICAgICAg
cmVwcmVzZW50ZWRPYmplY3QgPSBbaGl0VGVzdFJlc3VsdCBvYmplY3RGb3JLZXk6V2ViRWxlbWVu
dExpbmtVUkxLZXldOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgV2ViQWN0aW9uTWVudUl0
ZW1UYWdQcmV2aWV3TGluazoKKyAgICAgICAgc2VsZWN0b3IgPSBAc2VsZWN0b3IoX3F1aWNrTG9v
a1VSTEZyb21BY3Rpb25NZW51Oik7CisgICAgICAgIHRpdGxlID0gQCJQcmV2aWV3IjsKKyAgICAg
ICAgaW1hZ2UgPSBbTlNJbWFnZSBpbWFnZU5hbWVkOk5TSW1hZ2VOYW1lUXVpY2tMb29rVGVtcGxh
dGVdOworICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IGhpdFRlc3RSZXN1bHQ7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBXZWJBY3Rpb25NZW51SXRlbVRhZ0FkZExpbmtUb1NhZmFyaVJl
YWRpbmdMaXN0OgorICAgICAgICBzZWxlY3RvciA9IEBzZWxlY3RvcihfYWRkVG9SZWFkaW5nTGlz
dEZyb21BY3Rpb25NZW51Oik7CisgICAgICAgIHRpdGxlID0gQCJBZGQgdG8gU2FmYXJpIFJlYWRp
bmcgTGlzdCI7CisgICAgICAgIGltYWdlID0gW05TSW1hZ2UgaW1hZ2VOYW1lZDpOU0ltYWdlTmFt
ZUJvb2ttYXJrc1RlbXBsYXRlXTsKKyAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgPSBbaGl0VGVz
dFJlc3VsdCBvYmplY3RGb3JLZXk6V2ViRWxlbWVudExpbmtVUkxLZXldOworICAgICAgICBicmVh
azsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gbmlsOworICAgIH0KKworICAgIFJldGFpblB0cjxOU01lbnVJdGVtPiBpdGVtID0g
YWRvcHROUyhbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6dGl0bGUgYWN0aW9uOnNl
bGVjdG9yIGtleUVxdWl2YWxlbnQ6QCIiXSk7CisgICAgW2l0ZW0gc2V0SW1hZ2U6aW1hZ2VdOwor
ICAgIFtpdGVtIHNldFRhcmdldDpzZWxmXTsKKyAgICBbaXRlbSBzZXRUYWc6dGFnXTsKKyAgICBb
aXRlbSBzZXRSZXByZXNlbnRlZE9iamVjdDpyZXByZXNlbnRlZE9iamVjdF07CisgICAgcmV0dXJu
IGl0ZW07Cit9CisKK3N0YXRpYyBOU0ltYWdlICp3ZWJLaXRCdW5kbGVJbWFnZU5hbWVkKE5TU3Ry
aW5nICpuYW1lKQoreworICAgIHJldHVybiBbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJW
aWV3IGNsYXNzXV0gaW1hZ2VGb3JSZXNvdXJjZTpuYW1lXTsKK30KKworLSAoTlNBcnJheSAqKV9k
ZWZhdWx0TWVudUl0ZW1zRm9yTGluazooTlNEaWN0aW9uYXJ5ICopaGl0VGVzdFJlc3VsdAorewor
ICAgIE5TVVJMICp1cmwgPSBbaGl0VGVzdFJlc3VsdCBvYmplY3RGb3JLZXk6V2ViRWxlbWVudExp
bmtVUkxLZXldOworICAgIGlmICghdXJsKQorICAgICAgICByZXR1cm4gQFsgXTsKKworICAgIGlm
ICghV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShbdXJsIGFic29sdXRlU3RyaW5nXSkp
CisgICAgICAgIHJldHVybiBAWyBdOworCisgICAgUmV0YWluUHRyPE5TTWVudUl0ZW0+IG9wZW5M
aW5rSXRlbSA9IFtzZWxmIF9jcmVhdGVBY3Rpb25NZW51SXRlbUZvclRhZzpXZWJBY3Rpb25NZW51
SXRlbVRhZ09wZW5MaW5rSW5EZWZhdWx0QnJvd3NlciB3aXRoSGl0VGVzdFJlc3VsdDpoaXRUZXN0
UmVzdWx0XTsKKyAgICBSZXRhaW5QdHI8TlNNZW51SXRlbT4gcHJldmlld0xpbmtJdGVtID0gW3Nl
bGYgX2NyZWF0ZUFjdGlvbk1lbnVJdGVtRm9yVGFnOldlYkFjdGlvbk1lbnVJdGVtVGFnUHJldmll
d0xpbmsgd2l0aEhpdFRlc3RSZXN1bHQ6aGl0VGVzdFJlc3VsdF07CisgICAgUmV0YWluUHRyPE5T
TWVudUl0ZW0+IHJlYWRpbmdMaXN0SXRlbSA9IFtzZWxmIF9jcmVhdGVBY3Rpb25NZW51SXRlbUZv
clRhZzpXZWJBY3Rpb25NZW51SXRlbVRhZ0FkZExpbmtUb1NhZmFyaVJlYWRpbmdMaXN0IHdpdGhI
aXRUZXN0UmVzdWx0OmhpdFRlc3RSZXN1bHRdOworCisgICAgcmV0dXJuIEBbIG9wZW5MaW5rSXRl
bS5nZXQoKSwgcHJldmlld0xpbmtJdGVtLmdldCgpLCBbTlNNZW51SXRlbSBzZXBhcmF0b3JJdGVt
XSwgcmVhZGluZ0xpc3RJdGVtLmdldCgpIF07Cit9CisKKy0gKE5TQXJyYXkgKilfZGVmYXVsdE1l
bnVJdGVtc0ZvckhpdFRlc3RSZXN1bHQ6KE5TRGljdGlvbmFyeSAqKWhpdFRlc3RSZXN1bHQKK3sK
KyAgICBOU1VSTCAqdXJsID0gW2hpdFRlc3RSZXN1bHQgb2JqZWN0Rm9yS2V5OldlYkVsZW1lbnRM
aW5rVVJMS2V5XTsKKyAgICBpZiAodXJsKQorICAgICAgICByZXR1cm4gW3NlbGYgX2RlZmF1bHRN
ZW51SXRlbXNGb3JMaW5rOmhpdFRlc3RSZXN1bHRdOworCisgICAgcmV0dXJuIEBbIF07Cit9CisK
K0BlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdh
dGVQcml2YXRlLmgJKHJldmlzaW9uIDE3NTE0MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjY5LDQgKzI2OSwx
MSBAQCBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJVSURlbGVnYXRlUHJpdmF0CiAKIC0gKE5TRGF0
YSAqKXdlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXI7CiAKK2Vu
dW0geworICAgIFdlYkFjdGlvbk1lbnVJdGVtVGFnTm9BY3Rpb24gPSAwLAorICAgIFdlYkFjdGlv
bk1lbnVJdGVtVGFnT3BlbkxpbmtJbkRlZmF1bHRCcm93c2VyLAorICAgIFdlYkFjdGlvbk1lbnVJ
dGVtVGFnUHJldmlld0xpbmssCisgICAgV2ViQWN0aW9uTWVudUl0ZW1UYWdBZGRMaW5rVG9TYWZh
cmlSZWFkaW5nTGlzdAorfTsKKwogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkocmV2aXNpb24gMTc1MTQyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNiArMjAwLDcgQEAKICNpbXBvcnQgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmICFQTEFURk9STShJT1MpCisjaW1wb3J0ICJXZWJBY3Rp
b25NZW51Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVDbGllbnQuaCIKICNp
bXBvcnQgIldlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmgiCiAjaW1wb3J0ICJXZWJOU0V2ZW50RXh0
cmFzLmgiCkBAIC0yMDcsNiArMjA4LDcgQEAKICNpbXBvcnQgIldlYk5TUGFzdGVib2FyZEV4dHJh
cy5oIgogI2ltcG9ydCAiV2ViTlNQcmludE9wZXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCAiV2Vi
UERGVmlldy5oIgorI2ltcG9ydCA8V2ViQ29yZS9OU1ZpZXdTUEkuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oPgogI2Vsc2UKICNpbXBvcnQgIk1lbW9y
eU1lYXN1cmUuaCIKQEAgLTEwNjEsNyArMTA2MywxNSBAQCAtIChpZClfaW5pdFdpdGhGcmFtZToo
TlNSZWN0KWYgZnJhbWVOYW1lCiAgICAgW3NlbGYgc2V0TWFpbnRhaW5zQmFja0ZvcndhcmRMaXN0
OiBZRVNdOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldERldmlj
ZVNjYWxlRmFjdG9yKFtzZWxmIF9kZXZpY2VTY2FsZUZhY3Rvcl0pOworCisgICAgaWYgKFtzZWxm
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0QWN0aW9uTWVudTopXSkgeworICAgICAg
ICBSZXRhaW5QdHI8TlNNZW51PiBhY3Rpb25NZW51ID0gYWRvcHROUyhbW05TTWVudSBhbGxvY10g
aW5pdF0pOworICAgICAgICBzZWxmLmFjdGlvbk1lbnUgPSBhY3Rpb25NZW51LmdldCgpOworICAg
ICAgICBfcHJpdmF0ZS0+YWN0aW9uTWVudUhlbHBlciA9IFtbV2ViQWN0aW9uTWVudUNvbnRyb2xs
ZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzpzZWxmXTsKKworICAgIH0KICNlbmRpZgorCiAgICAg
cmV0dXJuIHNlbGY7CiB9CiAKQEAgLTg1MTYsNiArODUyNiwxNCBAQCAtIChOU1JlY3QpX2NvbnZl
cnRSZWN0RnJvbVJvb3RWaWV3OihOU1JlCiAgICAgcmV0dXJuIE5TTWFrZVJlY3QocmVjdC5vcmln
aW4ueCwgW3NlbGYgYm91bmRzXS5zaXplLmhlaWdodCAtIHJlY3Qub3JpZ2luLnkgLSByZWN0LnNp
emUuaGVpZ2h0LCByZWN0LnNpemUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOwogfQogCistICh2
b2lkKXByZXBhcmVGb3JNZW51OihOU01lbnUgKiltZW51IHdpdGhFdmVudDooTlNFdmVudCAqKWV2
ZW50Cit7CisgICAgaWYgKG1lbnUgIT0gc2VsZi5hY3Rpb25NZW51KQorICAgICAgICByZXR1cm47
CisKKyAgICBbX3ByaXZhdGUtPmFjdGlvbk1lbnVIZWxwZXIgcHJlcGFyZUZvck1lbnU6bWVudSB3
aXRoRXZlbnQ6ZXZlbnRdOworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChX
ZWJWaWV3RGV2aWNlT3JpZW50YXRpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3RGF0YS5oCShyZXZpc2lvbiAxNzUxNDIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3Mg
SGlzdG9yeUl0ZW07CiBjbGFzcyBQYWdlOwogfQogCitAY2xhc3MgV2ViQWN0aW9uTWVudUNvbnRy
b2xsZXI7CiBAY2xhc3MgV2ViSW5zcGVjdG9yOwogQGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7CiBA
Y2xhc3MgV2ViUGx1Z2luRGF0YWJhc2U7CkBAIC0xNDUsNiArMTQ2LDggQEAgQGludGVyZmFjZSBX
ZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBXZWJJbnNwZWN0b3IgKmluc3BlY3RvcjsK
ICAgICBXZWJOb2RlSGlnaGxpZ2h0ICpjdXJyZW50Tm9kZUhpZ2hsaWdodDsKIAorICAgIFdlYkFj
dGlvbk1lbnVDb250cm9sbGVyICphY3Rpb25NZW51SGVscGVyOworCiAgICAgQk9PTCBhbGxvd3NV
bmRvOwogICAgICAgICAKICAgICBmbG9hdCB6b29tTXVsdGlwbGllcjsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQkocmV2aXNpb24gMTc1MTQyKQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTQ0LDYgKzE0NCw3IEBAIC0gKHZvaWQpZGVhbGxvYwogI2VuZGlmCiAgICAgW2luc3BlY3RvciBy
ZWxlYXNlXTsKICAgICBbY3VycmVudE5vZGVIaWdobGlnaHQgcmVsZWFzZV07CisgICAgW2FjdGlv
bk1lbnVIZWxwZXIgcmVsZWFzZV07CiAgICAgW2hvc3RXaW5kb3cgcmVsZWFzZV07CiAgICAgW3Bv
bGljeURlbGVnYXRlRm9yd2FyZGVyIHJlbGVhc2VdOwogICAgIFtVSURlbGVnYXRlRm9yd2FyZGVy
IHJlbGVhc2VdOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUmVzb3VyY2VzL09wZW5Jbk5ld1dp
bmRvd1RlbXBsYXRlLnBkZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBh
cyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9SZXNvdXJjZXMvT3BlbkluTmV3V2luZG93VGVtcGxh
dGUucGRmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1Jlc291cmNlcy9PcGVuSW5O
ZXdXaW5kb3dUZW1wbGF0ZS5wZGYJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9S
ZXNvdXJjZXMvT3BlbkluTmV3V2luZG93VGVtcGxhdGUucGRmCSh3b3JraW5nIGNvcHkpCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L21hYy9SZXNvdXJjZXMvT3BlbkluTmV3V2lu
ZG93VGVtcGxhdGUucGRmCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCAr
MSAjIworYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKCkpWQkVSaTB4TGpNS0pjVGw4dVhycC9PZzBNVEdDalVnTUNCdlltb0tQRHdnTDB4bGJt
ZDBhQ0EySURBZ1VpQXZSbWxzZEdWeUlDOUcKYkdGMFpVUmxZMjlrWlNBK1BncHpkSEpsWVcwS2VB
RnRVVWx1d3pBTXZQc1YvSUJWVVpaczZ3VTk5QlQwa0FjWVFYTndBcmo1UDlBWgpNcTZkQlRERWZU
aERMM0tRUmFKb2tZdm9TRHZUUnBobzcxbU9jalhmeTc4blMzeDgzbFIrYmxiQXVIdzF5Q1JtRmtR
Y1ZZQ0ZJa21tCmk4VjgyNGdNa1ZzTnNTVEdPWStNQ2g2M1U5TnFkbmVHeWFHdzBUdlk1WU1nYW1B
VE1rV3F3ZExUZUsvYlhJT1FNNW41SW16dVlDMlkKNWR2RS83Tzk5NnhzRTJpKzlBeVlCa0x6cEdr
dkJUdjRjUmRsQUdNVEFkZDVtNlNDRFZSTFF0Ym16S3ptc3BWUUlPOXd0RUR6bThISApqYUVLN1hT
QXRQNndSMTJkYUtMMlZSZld2UkhHODJ5L0NsRGpxL2d1NUg0Y3BOK2p0U25VdnVJbU9mWWtWMEx0
aGpjTFVraFFCeUxiCjZTQWthYlhlUGZQREh4a0JnWTRLWlc1a2MzUnlaV0Z0Q21WdVpHOWlhZ28y
SURBZ2IySnFDakkzT0FwbGJtUnZZbW9LTXlBd0lHOWkKYWdvOFBDQXZWSGx3WlNBdlVHRm5aU0F2
VUdGeVpXNTBJRFFnTUNCU0lDOVNaWE52ZFhKalpYTWdOeUF3SUZJZ0wwTnZiblJsYm5SegpJRFVn
TUNCU0lDOU5aV1JwWVVKdmVDQmJNQ0F3SURFNElERTFYUW8rUGdwbGJtUnZZbW9LTnlBd0lHOWlh
Z284UENBdlVISnZZMU5sCmRDQmJJQzlRUkVZZ1hTQXZSWGgwUjFOMFlYUmxJRHc4SUM5SGN6SWdP
Q0F3SUZJZ0wwZHpNU0E1SURBZ1VpQStQaUErUGdwbGJtUnYKWW1vS09DQXdJRzlpYWdvOFBDQXZW
SGx3WlNBdlJYaDBSMU4wWVhSbElDOVBVRTBnTVNBK1BncGxibVJ2WW1vS09TQXdJRzlpYWdvOApQ
Q0F2Vkhsd1pTQXZSWGgwUjFOMFlYUmxJQzlUUVNCMGNuVmxJRDQrQ21WdVpHOWlhZ28wSURBZ2Iy
SnFDanc4SUM5VWVYQmxJQzlRCllXZGxjeUF2VFdWa2FXRkNiM2dnV3pBZ01DQTJNVElnTnpreVhT
QXZRMjkxYm5RZ01TQXZTMmxrY3lCYklETWdNQ0JTSUYwZ1BqNEsKWlc1a2IySnFDakV3SURBZ2Iy
SnFDanc4SUM5VWVYQmxJQzlEWVhSaGJHOW5JQzlOWlhSaFpHRjBZU0F5SURBZ1VpQXZVR0ZuWlhN
ZwpOQ0F3SUZJZ1BqNEtaVzVrYjJKcUNqSWdNQ0J2WW1vS1BEd2dMMHhsYm1kMGFDQXhNU0F3SUZJ
Z0wxUjVjR1VnTDAxbGRHRmtZWFJoCklDOVRkV0owZVhCbElDOVlUVXdnTDBacGJIUmxjaUF2Um14
aGRHVkVaV052WkdVZ1BqNEtjM1J5WldGdENuZ0I3WDFyazVyTXQrLzcKL1NsUytWZWRPcWVvUEEw
aUNuT2VwQXBGdk9BRlJmSHlEdVVpeWsxQUZENzlYalJ6Y1ppWkpPUGtKSHZtWkNxeEZMcFg5MXI5
NjNYcgpidmozZkhOMkE5ZUl0VTluMS9HaW0vUFh6NXJ1cjQwYitKNWZScDgvNFNMeC91dm54VUQr
MVBSRDR4UHpUL1VmOHZPMy8vcjA2ZE8vCm9XN2VUQVR4dGpyOCt2cDVHOGZCRFVLbjArbWZFLzJQ
SDFxSTRqZ09rUlZVcVh5QkVsK2kxSXUxOHhjditrOUI1STZPWUVTYjBBNWkKMi9jKzVYUzF0WCtN
djM3K25EZDAvM2ZiVHplNGI4aUwvc0Y5L21manUraXNCWWo2aDBRdlZHcDNYZXY3RlMxa3U5Wkwx
UWVENzFkMgozV2RyUnZIRWVCRE1zLzJOcG1sZ29Ja1IrY2R3WTBEeC96ekhRUlMzRXBESXJZUi9n
bEFyTWJ6NFdWSXc3bFA1QjdLSVVmQ2lLTnJmCjc4Yno5YUpZc04zdlZ5d0VBY1VNTHdJZ0FFYWVH
WDU5YzA4a09JWU9CcG0rUVlaalFMVTRBZ1JRenc2RTdUakhLQTYxMkEvdkNUeVMKNGtXQkYyRVVY
SUQ4VVdXNEFaVm9kSTlxQU8yL0lPZWJnYS9iWmlwb3NmR3RRbExWTHhUNWhhcFBLZXFtQ3Y5cVg4
ajZEVW4raTBvbApIOWpHTkpxaEFmV2ZvMEhlTU9RbGpZdVNKUnJUN2RGZGU1cnRSSGp5M3M4cFBJ
dDVKMzU4TmU5OVBnMGRHOC9HUUFzakkwZnAxODkzCk1MMWs5SUVZOEpGUHN4dmIxU3pqRytKMnFN
cnpZMlcvNmswc3ZzRmJMVjdoRzEyZUYxQjl6RWV6OWpiUjIxeW10YmxUVnhnY0J6eGYKSGUrZElV
K1FQUDVyOEZBKy8ydngvK3MvWi83Lzh1TzhNdnlOK1FZaXFyeXdGL2ZyU3MvaDIxTjhtVGZSbXUv
Q1RXdmNhdkN6VnNPYQppUTFyMzI2TWw3M215V28zTEtzdjhMN1VQUGtTSmlnMCtJSEFuL0wvWTRH
dnlpMmVIUW1Od1ZSc2pLZXQ4Mm5kUGtlYnpwazE3LytmCldwM0dhVE1VZUhJSkxTemIyOWxFblBq
NFBpWjRYL0N5MGs5K1J5d3dPcmI0Q3JETG4xcVRnbVcrTytISGd3bXcxdUkxekgySHo3a2IKUTZI
N3Y3SEluN3B0RUV1bnllK0JQYmhuZFlWeXVZTGdtRzhDdHlDWFRiYzU5dnRRdEFrTkNMdzFic0kx
a0FnUThnWXdXSU1KeUYvcwpUcnJuc2RwcXR5b3RlN05zelFaQmU5czR6ODlqVzI1Z2dyTzRzeDJj
VnpiYm5LUlcwbkxHMldTNlAwanBrcGFidzluWTI5ZEcyWENyCnoxYWRxVUFldTkyZVArZzF0OVpx
MndQUkhSUlNqWWVxMUFqVEtwSmJtQ0ExbXBLcnhWeDB0RGwxMWhjT04xOVZ0b0hteHRGNnppUkwK
ZWtMcG5sNDFGa0hkN0ZDRVNZOWEyNlhXc2J1dVpGZlQ0YzRubW50R1VaM0FXTG9yVFBDdzlub1Z3
Mk9rWFNETjNhQm1CNGZETVFxMQpXdUpQZUw0TDdIZUZ4aGpnTWw2Mm1nQ0lkUzdiYlV0b05GdktZ
TllTWjVQaHRtdXR6dGFxbFdLQy9ycHpFZ2VkU1ZVWk5rVzFaMitTClZ0WVRKb0sxMVpSWk9yZVg5
WDZ6UWN2SzBPaTFyTE0rMjU4c3pISnZ0eExidHI3WHhSbk5Ia2JaS2JVQ1RKQWs1R3piVS9ieFlE
cGoKNUltakwrZHFzRjZJbExHZ0pzN0sxWDF0SG9Uck5uVmNWMzdFUGlaSUNFNXZQbmNZZStVR3g0
MjNxcG43dzJnZmFKcDNrTnpEb1piRwo0WUZJa0FaQUE1and6VllPTVlIbHVWbjFVQmNYeS96RFJr
eUdUc0lJRXh4VERpTjdlN0tUb2s3SFpIbFhuQ2lNczZHc3VEbUoyanhCCjk5Q2U4a2RvYTd0ZTFt
QjJhQ0JuQ2JQM2pQVTgxbzVoNHMyajNsNGEyOGxxT2NNRXErZVFhMWFEWUhlVWptZTFjc1hIZ1lw
MVdnMmwKWG9nSnpsZlYzb1RjMjB2L1JEaUtZSWNrU2dXVTdWY01ZcVBwZVZ6YjZzT3dzdWN0WlI3
WEdHMmxvdXJoS0tpVXZFMlpmbjNwQjl5YQpVTkRJdFlpTmpnazJ0bFF5NmUzNld1cnRlbTJxMFJj
bHZrbk9EcFpucHhTeWg5R3NWN2ZEU05YdFVKQXprNjBQbVFGcjFaeHcwT01UCm9odHpjc00zdWE0
cmk4SVlFK1FNL3NESmEzRnhXc3V5dkptbWl4YTdVN0pzUU82amNCOWxvL01oRzB5UGlyS1pLMTNT
bTNBcVpTT2IKUkVxb3pJbGt0Vk5HdERWT1IyYUxYRVNZNElpcEx3L1p6TndMeEpyaFphTE54S2c5
cHp0b2tJbHJIYVYraDZWaEJBOHdiWWhKbkNCKwpxQTdVbUVaOEU5OGhncldMbUhZRklYVXFZb0t2
cmZTOThwamdjeTE5cjlMM3ltT0NQOHZPenpTQ0NWN0s0R2NxZmE4OEp2Z2pRYittCmtZSmxHSjNY
Vk1wSDg2WHltT0JMRUZncjlVV1MybWdRam9leU9SdXFaSk94SXQrYXU5NWlLeDJrVVNqWHB2SjVR
YS9YNG5wcDJpRzEKUUpnZzN6dG5MSm9TYzFubXdvQWxnL1plWTlPNVNyV25ySlFOdERtYlpHcDJE
cEYwUG84WGxjRGU0dmxlRlZIbU5tUkpsdWJiY2NQdQpCbjJPTHFiZTZMenF6cHRlaldmT1NpZjFi
SWRiSWJhNkp4YmN5R0lkbWppR2JlR2cxZzE1blU1YmE3c3R0aVJmWHUrWkpUR2l0N2FWCjZORnNk
S2RVY0E5ZnAxN2l3U0VLVktzWmlFM2gyQVJWVXUyZ1lYMnN5NlRBcGpFbWFKTGhkTjlTZDQwTjYz
Y24wYUV2MlNrcm9sUmwKeUU1c3A0SzRCdlVZcncvdDJuYllXM2JtOHdFaGRNY24xRm9la0NLTDlp
bkxZbUtOOXAxMGVjWUV0NVEzYzRqRVV0dGVwVHFnemtmSgpQdlFqeDZBSE8zSGhSZ2lObGgybnEw
VGRZVE5odXBacDZmUjJZc3Y2T0xOTUU1U3VTek1WMDVzRUptUFhNRUZ4T1o2UHZHbWxSOVpxCnpK
SE1mTHBQTFN2Z1loRWRRUnl6bTdQQ3BVZ1NXRFRzc0pZeHBVaUZKUS9WWkxWYTIvTjZpK3o3aCsz
Qzk5cTdOWVdLUWFuNmdVdWoKY1hYaGVJaVhISUlEM1hGZWh0T0UySjZTdm94NHNjL1ZVVHEwejNQ
UDVJU3RNVGVKd0V4TVloTE5KYklPZFRwTk5rS2Nnb3dDTnV4dQpHYWtCcUtQV1NHUldxUGFVNUN5
aEU1Wi9TcExsOTJ2UmprZW9oa21laE1LbVFHblFiWmNkWVBuRG9rNmpSNlZaUGllTHVwVytxT21J
CmZOSTJ5L3ViZm1Ib00wUmQ4TVR5QmZOUFNXS2VUc0pUa2lld2pwaDVmNE1IcFo5bW9JVnpDYkQ4
bzlLbjVxV284ZzZBN1czZ2dyZFMKZXRJMkpvaE96VUw2bHp5ZEdrK2xYNURFN1BDRHB5VDVYcnZB
NGNPQXNqd3VmZUp4YVpZdzNRbHppSk9oNTYxVmVUQ01lUzV1SEFTLwpObFphSWxVOTl6cEh0WUtX
WjZVOVhCNklrMGxzdHJpSFNlWjVyRmVabVE0YXIvakViYU5kUDZXNy9sUWJkNWFEQmtyT0hDRmJR
eVNJCnZObWRzU3gzbG52eVJoa09aZWxzek9jVE80dXlkckJ5aDRveXhRUnRaM3BXVzJmRWJtb20y
ZzBGZE9Jbnpsa1Zsb2N3bHhtMUJ2ZWsKUFVDczF6bXI0enN0OElJQ3dBUi82SDFFb0JQbHJDTXpl
N1plbzhJWktMdFFwN3JMNlR6dXp1U21PRUdIODhFL3ozcFRIeE1rOWpRUgphYUdtcVFFN2NaTjFU
ZTMyallGTzcrV1dLaStOSGxodElrQjl4TXVaUFdYNkZsa2I2bnBTVHptcVpiVlg5UlZwYldmQTFV
R2E2UWRNCjBHQkd5QnJNNWl5QlpMQ0FVai8xbUNZcFRIdGNVMlA2TkVmT1BDSksrMTFwY283VUtx
bEtwamFTdHRVMUtNNG0ycHVFMHRrbjJabnAKdENPdGdnbFNsZjV4VkhOamh3alRzTzBGd1htekZ0
dDAyTjNNNUxFTU0wRHRzNkhKY0JOVVUxcW9GbFI5Y0J2R2h3VXpSMWx0aDhoOQpEMUhUODV3MnVX
Ymh3WnJPR3ZFQzNEbzFlazBZQUZYT2JSQUpha0pOV01KSEhGemxabXh1ZWdveUp4NnVzcnd5Qm1V
aTNwSEtxY2dGCnl6TEtiejBpdzhzSDBESXRhUHZVdUNUMXBFZmx6aFNqL0lZZWxUdFRFQVRWZEcy
UEh2RUZnc0FFWHlPamNvOUF5bzg2Z3dsZWlQdUgKTWlyM3FOd1pUQkJBK2VLb1BmVElITkRNd1pq
clF6WXlURzVKUXVEWGhWQjZ2MVA0Tk9vWXUwbVhZUVpGUkIvckZYQ0k5KzBlRGp0OAptZUd0M0dm
dDY1TUZ4MG5tTVdZR2FyL3VuNWVKVjBmZW9JK2N0dGtIMkdUdEZMRnVOTnV5WVRVd2x3a2FTWXVp
aC90d0FUcXhzdHVZCjdIaDNYanIxM3EyUGpoMzFWMzFnZ3BGcU5vR2dDVWFFUmdNQWE4TzE0YmR2
eU9LKzQyRS9wbFV6RHlOZld4c1QrdWd0WnJGbmpQY3UKK09LMEpxbk44VmdKL2ZHcE1oenViRXp3
QUxvL0hPYWtEdXZoQ3RWdGtVTFU3S3oyNHlWYk1UUjliZTlzeXB1djY3T3FQKytmSjdTVApEVGZT
cmpYcnpaVEJxUkZVbHdkbkxpVWh5S09JbHdOWFpsYTAxZXMxYS9GSWJOUUZzaXZFWEE4OHJkaVFP
amlVZS81alQwVEVSdTdQCjdab1hISjFhY0dpcHVJZWhxUjBaTytyMmhIRTY4RVBXYVF4RjBRaTZQ
SDFXUjRNODNubGVqQ0FvQnNIY0x3VFYxdnJvME1FRWQrZFYKZytIeWFtcDlsQ2I5Q3FOUWtkL3J1
NHpUYTIxYTByRFhQZk1IUXpvMHA5RkFuUzRRbjNnbU9pemlLYXFONnp2RTkvenpuT3djRms2OQpH
R1d1djFPbU0yNXdyTGRIWTNaSkg1ZTlycnF5SkxLaHE0ZU5xaUJ4UVhFb3M1V2dBNklKdXQwR3BX
MTJkTWNmQzJMRG9LcVFsTHZuCkFmZnc0V2YrYlprUnk0V0hKbklYT2VsNnJzK01RSnhGOVluUzZH
Mm1MWFUrbEtuSU9JRTAyQUVJY0RRL0dtdDVvSjlENHBDSlllRTUKckJKYU9TaXQ3VzYyRDhTV1hG
R25NY2ZRbzM2UGswMjJ5aUZQUzF3ajI4RU1XZlpPOGtBOU9IMkYyZFRwdlNJY0ZaM1o4MFNmV0s2
SgprZFRzRkE1bjVhV2hKTUNMSm1BeUlHWVB1QnlRQ3pTVE8rQ0JaamlPNXhxbzI0RnA2OEs5T1pp
TzNiQ1BLTXl5a0M0UEMzcGluMDJaCkJ1ZHlnYVFCc1lDcDVRNGR4QXlYZ2NBc3pncHhCanMrUzFC
dm5vRFNqZHRWVk4xMjdITy9NcjFORWhUSXdnVHZFd2NBVU5NMXM2RlAKTzk2a0g4N2pwU2NteTRy
TmVrdWtMUkZFRkVqVGQ1RVA4aHVhN3BaWXpVRlBKSU4xelRQMjUvbHN1T1NHbUdERWEwR2pOU1g2
eVZpcwoxTDBLRHpEYUV0S0JBNi9ZMlJsaklEL2dFcjFTdDVXbU1YQVdFMm80VHZkNmM2Q2Ftc2Qw
VFUvVURETnVFK0VpN0JVc00yN1U2bEExCldoUmJoNllsbmxzSkcvVDRwUm5GOWRZeVdnVFBweUdT
TFlCYUJ0ZDJqZHdwZUJ3aWlLS0k2Rm1qMzVWbFBCdEk4S0pOMUV1SU9jZ3cKbHpJL0hMT3U1SEFr
RU00QWpDNUVCenZaUVNnWDhLazVuVXRqUW1WblNiUkFudGhIQld6VUVIRXZTdmxPd0RQNTBQYkJ0
NThQT0dSbQpBUUEwMmpySHZqM0xzNUVpdUVrUXNQaG9oRmxPV0xxZVpTaGMyckhDZHB6MHZFRStR
V2tIZDNMY2VzNDg2QXgyZFpuMUsreG1ac25ECnpRem5ZZ0tIMmJCbkxXRTIxSUdpUEtXWHJSZWNX
OFVFRFdtc0M5WERDV25xTmpySk0zQmxHRGtOd2ZnUFNTOUR6SG82VzgvM2JYODgKMjFHalU2ajZx
MmxWcmZtYzVKdCt6YXBHa0thNTQ2T1l5dys2NlpSQU5nOG0reEJsUFVpSjI2aTJyYkx6c1dIaUly
bHhBQUNEY3VtYgpxSzB0UUxuc3o3UGt1Qk50d2dUcmwxc0gzRU8rTi9IQU92RHNPUUxnaG1MWGxB
aHBVZW5ETEFCYkFlb0pMQVEvd2hhQ2IzWFplYytBCm1YQ1g5THIvTnZmMDFzVERCSFhySURYblM5
ZmkyMHl2QjZpMUVNczBURzlKdXlsaHBvemZPbmVjWTJaeWFMVHRFc2RwMTR6WEhhTTMKNVN3OVl4
ZmJpY0t6NmxsSnM3eFRtS0JEaDZQUW1NVnJ0aklJTEhJeDhjOEVzVFJwdGo0Nk5LVThrakxNM3E1
UzA4R0EyNFlVQlRDNwpIUlIyWEhyS3JWMXlhODRoYjI3dGpzbGhXU2pZODNRaTJwRTFSZjNGMHRJ
SmIrNUtsZlBHc3NqUnVRTWpsUFpUZ2FsVFNUcGxkaGFWCktBdWlKMXZIOVdwSDFMMXRqNUI2eUt2
SXkzcjFRTlRrWXFaMHZPbkVIQzJjU29YS2xOVm8xcW9HL1NiTk1ZTEVqd0FweUowaGsycEQKQkZX
QS85SWVGRmFBbUpwc2FySXJQeUV3eTVmMnNpWVFZemszcHpDUVlFN3oyZUFiVTFFaGFvTjVueUVn
N1FpR0pCL0RrNERIa0c5cQplUm9nQVc4V1RPOXRRbEphb0h3ZzY5cndqTTVOaUtnWGtmdU1rOC9t
UWg5TmFJYTJOM1JuNzZYVXhqeXF2UjExUlBhNlBtbjRhMjFZCnhDbVZqakxtVUVRTTFhN0FuTTVL
QnBpU3dCV1dFdFhNZVBaa1V6WXoxbVFOVE1zYzhaWGRtR3NweVh4U2EvV3J1bEdSOXNrQlBCZXUK
UlNianBKakxmWkMwTGxuelN0UWZrYlp0YlJlUjcrM28zb2pKLzlFOWNHcHNjQ0lJUUJQdkNUbndG
VG1EakdYakJMSEwxTFo4R25uZApPcnR2Tk5jRkRpR2h1cmFRUHBqMlEyZmJscU85R3k1bXk4NXlq
eEorNUZXU2pqaGVaS2J0ZUF0R01WM3ZrREFtc1p6bzUwMjRVeUNjCmR3OXpVV3RPR3FRdWNjVW90
MEoxU3VjbzY1cWIwVlpqQXVOWW0wSmFQSmpWNk9IVzZQYTZQYWR1Y1hhZUJJbkd4dmE4OUV2ekJJ
elAKaVVjd3pSSTh5c1JLSm5JTHhJdkN1UnBaTEpHSFg4bllUQnZZUUsyeGdRSzVVczhiSDJKWmdi
cTl3dmhnZ284dFVJVmM3NURkTXZxdApaUFhFRHpGRW1OdWpTWWVoaFpUVFVtS1c5Q05FTURWbXVq
dUlWRnV2WTRKS2p5TFNvS09zcUJITituUnR2d3g0czdmdDlRNTZhZ1F3ClMrVzB3YlNvSkl0aHFw
QlRaZTlEd042ZzFmUVVkaHJOSnMrRzNNalJ0L1FJK01JRWp6dVlWY0J6cWpONkhBdWtMVy9YcDJZ
VUJRUTkKbE13NFRUdkhyRk0vV3BWMlg5d2xESmVyTU44RTc2L2RoRG1BT3FDcjFmTks5bVhrQ1pn
Z2pad3VoSnVnVUFFSUo2RkhWdjErelZtcAp1aEx5ZzdDNWsvVFQyUEJoVVlZWUo4VEdna2t0T3lO
dW5YWDhWazkyam5WUVEydS9PVmxsSTdQSUV0ZDF5RUZYcGhYNVJJZ1FpSjZuCllwOWFzM2FTdVVl
emV3eE52ejZqdFVXYW1QS2MyZEhMQ3J2MTViQzFGS2VrMkpucGsvcE9iQWgxT1E1ZCtsaGsyZzJK
aVFQUmpSbHkKcnJUVlpsc2xsNnJxZEd2V1Rtd0dsNTVVRlVaVHVQTk5xdGtFQnFqc20yQ1dPN2xw
ZFNCMzA4MFVZSGttOSt6QTFFRmdMTGlUREZoZgpQMk5NeE94V3VmYW03TDNzbUdLL0xpTElEaUxX
MFJCYVQ0NHkwWjFVSTRYREJQZVB3LzZnejVEcmJKdzQ1bXpLekpVZVozSXQrOVJpCm1rRW16K3BX
bURhcDZqWStrR0ZzaDVBUFcrNm91YXl1NCtGaXJnNkx6RklyUkF2MXlKOWNidWFHTE5oNDZkanZM
ZGlqc2RBWDdMbEcKYWJWaDBHb2MxMFRkM0lydG9UVmlRTG1taDkzR0E0ZlczSGpNM0hTOFFONExh
ZFhGUFhRcmNTOGt0TDBiMEp6VTFtWkN2UEJ0VGdUTgpQT3FMN2x5S2VDUW5LSjNKNEhIdzNkTWtS
d0lodzlKQmFLZm1HUFNtc0szRDFBUC9kbHRZUGNhcW1zUTBBSytmR3RyYk1TVk02LzNaCnVtMmNF
NzkxWEkrWWlSL2F6WEZqcjdmRlpzaURxcGZrTEVJOWdvVWxDN3BHK1IyUGpla01RcG1OVzR4eWUz
Z01MRWNHQlJwNW5ML20KTkhKbUpjUEJMQWx6aC95OFhHU0U1MmdxU0t0S3FCazd0NGVqZVl1YkR4
ZGNUeGxXMitHc0JkcVVndENoWVJTZXc2WFgvVnlvOEJBbApHQmJhQzJDandZYkVpRjBGSnZISVBw
eWFSVEx0QkpvRXg0TW40VWs4eUF0MmJsZVVHQ0NEYmNTSmZ5a2N6R1MyS3VOQlNTZmtOT08wCk5t
dEpsWTRMMm5MT0VRMTI0SGVVVVpVWDV3dENQUjVRSHhad3pMMURUT09BZ1dYZ2pQYWFWVGFsMDEy
TjAvdkhTRnUzNXV3RU9aaGcKUTV6TDlRbG5EVlREelQyTE9XOTZOR0trVHU3Z1dDREgwWlExcEdT
NytJNFpTQTVyVVloVUJSTk1zaUdqa1diVzl4M0tQMGJqWmpWYQp4ODN3b0cwY3VkNzNwd3VJNWZS
cFpTUWxMUm44L3BIRU9ZSHBhZ3dsWlBKbVVuTUNKeGlpb3hRNWpXQ0FDZnArcWl6a2FVQU9scFZl
CkRVRkR3OFNYUnNNdU9SOE54M2FYUDNSOW4yOUVQRCtZRFI4OE4vRDZub1lkbU9DUFlvL25OZi96
WVFjbStLUFk0NUhyZGluZ0U3L3MKZ21tOTFMRUZ3ZHpZWWgwTGVZUTdZM3NyNVl1NDhGNlJmUSty
bUdDay9oaXdQNHRWVFBBSGdIM3d0aUNCV0FjV2UyTnNlRnNRZjF6bwpDT0FPZEFRbXlBK3dvbmlz
STE0UjdGekdPWmpnVzRPZHl6Z0hFM3dTVWo0enJQeEkyZVpPSlF3cmNUbHZJQVkzaWRtT0JiK0pI
M1NFCk81WnpIK3FIdzVyN3FYeHVqWEcyb3F5Q0lFekxWUkR1NFZNOWRPK25JbjVRampVeVVEK01S
RUdQWWg4V1pFdHhCaWI0S0lJdTJBV0gKbDBBSUR5Y0VrWTBPRVBhcUxHU2d3TnBBSkEvK1RTZGY0
ZGliYmdlNXdoWXhJMDlzbUxOS3NadmxoVnhQTVZQQmZpUjM3bG5aQ04vWgozenhzaGRBMkQxdHhE
M0hzYWtFdkJMZTU4OUxZRnl5VGo3bHVJQitYeW9Ud3E1QWtnTWlHT0VMUHZGWXlxNDlNRnJJN3A5
MitReDB6CnFqa0pxc2Vxb2cyRjltMTR1N1pQeEJKeUd0enhQQzU1a2c4L3NSQmcxUWZidmx3SXFi
bURvRXVxUmg3WlFUbW0wMXdBdUlkWUNqQksKZDNidkJVeGJFRm9ObFFpV2FZYUxyS05YTnBZVFo3
cXhqK3k5cUN5WGxMMjBka1hhZWFSMElCMHBuazdwTkp1Y3p2M1VjWlpkbTVPaQpzOTlJYk1qdkxI
QWNpbUhUQitqQW5rUUlVKyt5bExuVmxzRWhZeExVOXdyUG9kOGtwOVJ3RWpkamJqbXgxTDV5NHFu
Y0VaS01vVGMyCkdHQ3MzMnExdDVWdWJTZnV2WTR6emJiTWpqMW8vdkdnTll4a3RWaDJHcFZadzlF
bHFoamwwWTQvcFBVOHkyRzRQWlE1T3FGSkIzNUcKVW1uamVJN3BnK2twTTBFVSs3QXNGOG5aR05G
VTRNR1NZNTQwVnpmNWN0dTQwbUY4czE0anM5dVpJazBZbVRnY2l6VzY5Z25Ca2dyZgp1YXRGcWNW
eTNoSXlOU2dKcHpLeE44QWxrUTVWdlBMM3VJa2lzL1JzalVPSTErc0s4dWJjQlJIa25Tckl3OHJh
UTZlQ3poN1Y3c2pqClVmNFJHL3c5QjQ3c2hoQTF3VUlRUDFvaFdMdnpSOEdrd2tld1BXTFBiTGY2
cXBDaGROcHM1b01kdnc2cnNONlYxc1YrUDBsWk5LQ3oKRHROTSttbWRISzcxWUYyQlNDUUpwV0Yz
SkEzVFRrdEtJVlFLUElnSnllR1cwRG9FRVE5UXNkaDZLMEVKbGp3ZWJwMmF1YWdLeG1HWgpEb3Zx
MU9DMEZTSjNxY2s5R1kyYzhWT3p3Q0VlRFg4dHNLVE1mYi9HdmFqdXBjUzNIc2p6cmR2dzlyNi9E
NE5kSWcrTE5ndFJVN3dzCnp4Y3lYZVR1UXRkTEs4SmkzL1pPMDhQTTFjNHdFU1pPMThlRE1xbnRC
dlU4bGRKVUJtckE2TFpURzBKSXNuZXJMQWs1cnVBMFdLMm4Kc2JTZkk2cVJjWHRJSDBnQXJQTit6
OCs5N2VJRWpxb0hTZnRpTm1HQ3VTWitPcVVnSWNXeXlGdWpiTGVURDFSOVE2eVMzcUhicjJ6YwpP
U0tOZ3gvdFBEM290b2VpTUtSV1UycFVIY0xxUHlab0phNnBEbnZVVkZtZjYzMjFQOUxPeHlxS0s5
eTVEYjVzM1Z4dGVDNmErWTlUCm1ZL3NUckVSS3ZmY01NR0huNCsrWll1MFE4eGtiNWVGbXdueTA1
UFJtYnJMNWtMdFcrMVJaVEtGbFVKRWJ6dVdNN1hqSkFyQm9KejQKSXlhb045a3RzU0JoTDRISUth
dWFzdUJxMWFBbjl4V3ZselFtcEdxY3VObytGRmwrR1huZnlYOWgzWWtKYmtPa2NBT3EzWjFvVzIx
TQo3OGZEU1djekNXQjNSTHFCclFmN0hZUWh4RUlZek5kcDRETkxOK2lSQk5YcnlhQzJ4SG51VHM4
WFRMNStPZ3RxUlE0V3RNYUpvUElWCndFTWRGWGM1eFlQVXhFYU9UUUp5OWtmRXFBNHhwMUZlQmRG
Q0hSQWhQVjhhOXhCWE9UWFZsZW1BSEJxWUZ0L0pxeDA4TzB5STRnWWwKR1R1VGU3bGxXTmVIMHBq
Z1MxWDRYdEV2WHN4cHNmeDNPbnpmTWlZSS9YcG9IdWJqc3p6aUtvL2w5WnlvTU1GcjVmV2NxRERC
YStXVgo3cERYMjZVclJpYkJyYUdPWEpmc1k0SlRiblJFSWRzMDUzMkZ0S3g5ZFJBNUtuUDJ3OWx3
NUVLZWVoYk5rZ0QwWG02dUFrS0Z4R1VDCjY4N2hhRGNmQmVtSjNtZ1RaZUhFd21aZ3U0V0NEWnJ1
Wk40VnpYeTVoYTJZKzM0NlhFSitaUVh4OGlCZVNSWmJYVXYwYmpnaGFiVlIKcmZwVHZPRjNCbHRm
MjNrT2o5QmxkekZoWWhHUzBGNnh2dHhLblY2L0NTdld0ckJBK3RRWjZ3UXNHUTNtU2dLYjdySUZa
QVF5TlhDVApTcTJwVEtjQjVRd213NUZtcmlEVmRWUmE5bEZLNG5Cc1pqN3FDL1BiTFVaMnNrd0c2
bTdGbnBwY2JNSUtkSlFPakVPMEQvc2txeDVrClU3VEJ5Wkl5TTYyZ21wdE5FcUs2MWNEUGdjMVZD
ek5md092RGdyZVUzN2hONmg2N3NFWlMzT1hMMVRqWWR3Zjc4U0thalJNaWlNZzEKeWt0REhteDJW
dWxuR3NHRDhseEwxemFDQ1Q3WDByV05GQVIva3AyZmFRUVR2QlQxYTJWV2JnUVR6RWZuV3BtVnhZ
VUp2Z1NCSHpWaQp5cmtidmZlSWpiRTFWcUZHc1NHQkNTNVdzTXRGalVkOTJJOUxvaU85VjVYRDVO
eENXaE4yMEswRE1vQjBGMnlWejdNdVhtdW45T3FMClZJVGxuOVE2SEgyNmJsZ0NLWTBuQjY5cjFn
ZEZ1ay8yd2JRZVI3ZkxoZGt3TitaajVBeDF0R2l6WEczSXI1WXJVZFUzMjUybzdDQysKWHd3YlJL
cnlLbXBhOG9hRUZYVzZHdHlGd2JpSEQrSG1xNzUxelc2eU54Znl5SFBiTkxsUXVqYTVMekx0d2tJ
OGpjMnB0VDN3WkxTRgpYWE90dW1DS0N6cGtsdXl4WmpLZ1hTcnRyYlpKMmhsSmlFdFFIR0ZySGRW
bnNHcG96OWV3aUNvTzJHSVZXdHZqSHU2VVNYdTNuNDEyCjFxRTJrQ3lyM21wMXhNVVc1WHNHUkRO
TlF2M2NONGw1M2ErSmV0clpjOEdKVThoK0p6elBXa054VWVsMXJJYnQwdTRBa213WkptaXYKaUpX
dFJKRk9CUnR5S1ovU3BxRnFPMmJZQks4N0J2ZE5BbnVTdThOMDdnN2J1VHNjTE1NMWVOeFRsSHZj
OWR6am5vQnpxOEFXR1V3UQo5c2w0NkxMR3diSGpJNnFKb0ZUdmFzRE9GZ1gyeUVSNGUyWkxNbk9Q
RGJMOXNBT25CKzc1WEtyVWtUOEREWVFKZ2l0bEhsMlQ2N1h5Ci9UTjVPNWROc0h6UUJTY2Fkd28y
ODBBdEVocTZyNkQyaTgwNXQxeGdnai9EeW1VVG1POFh1TGhsK2Nlcy9Dd1htT0FhNXZLUFdQbFoK
TGpEQlh6VWdPUmVZNE04TWlHWWErVHE4MStvc1ZxdTltWFZDTmRFcTFlRmlDMmtrYmJZN01XbS9k
ZkFLMlBnVnFRTHJRNzBGN0JPTgptVDZaY0IydHNiTHBTYTFkOWRaVmhuRTc5Vm0wcGRkaE5MTHEv
TkpmQ1E5cEs0UlcrR1RSeFltY2gwTkJUOC9zbkd3OTNuNnJNTFdIClNzV2w3MVhhR3JDdUZYK3JV
QmUxYnE5OXI1cnBoNjRXZit2SnJmWkRhN2NYeS9YK2hiMTIrVW1reHllVWlxdVBEeTRWNTZpZVBl
bFUKbk1XQ1U0MjZGbXZQbmFSNmNocnJzdXhEbHg3T1kvbmgxUGVkYjN4K1pQSlQ5K0Z3MmFkbTgx
TiswdXZUL3g1b0c5dUwvV2o3ZjRxTwo0Y05adDlVZVV4d01iZ1FqdEJOREYwUGYvY2tqVi8vaW80
VTNvZUhwZG41dXN1bG9VZlF0Q0gzZnZJSGphUCtpWis4L05KeWY4U3FLCjZQN21tQitlNndyZjRB
RFhQN3F0MzFRMFVxK1FKdk5GWjJ2c2x5cTdZYjZzZFRqRHFlbFZpcXZBeHNBNlU3bHI0YUw2YzlS
dEw0bzEKYjJQY1VyZGZTZjJpK25QVVlWWERzajNORVI1NE9CNmhDVWFva0N4WHFYSjBReFFhRk1W
UlZaNWxPRktnS1laa20reGQ1NStwLzlBTQpIcmZIZzNPQndod0xjTFA3d0I5dXVXYXlhN0s2TWI5
d3pJYitVdE9xbXkvZzdXcGZ1RHBkclZWSmhpUTUvWTd3UmQyTFZndTZIVHVDCnM0cnBSWU4zcC9J
VTQvRDQ2dDJOMXg3WHcyZEtieUxmakU5YWFQQVdZT0JuQWYxYzFRY1dIclJMVVc2ejFUekwwTCto
WE94d2p2WG0KN3NMTFZVNWJ3M3M0TWxtYlZ1aWJTdldtV3JrNzdsalF3YVZlSm5JQm5oelpPZlow
MlA2MU5ybnFGNjIycVg2cGtwWHFGeFkyeUg5aApkWmJkYk9pMVh1UFdkNzI4cVA1eUc5b21uMzNm
SWcybTcxM0YyMnZsU3MrcnNvOC9lc1dCMTh2RHF0ZU9IczNVellwV283K0FHYVZoCjlBenp5NXFF
Y1dTcXJFSHBHNjVTNStpN1FmZzlvMWVNNmVNcGVUZTluMDdoVzUxeG9hM3VOTzdQY1Zhb2hvdnFE
eEM3SlQxNTBSNFUKZFV2M245UWZYYTFRQy9yUDFIL2NCaHc5dnhuS2NENDQra1poUVYxY2VGcFNP
V254WnRzTy9XUHczTW5seDNJdjFNN1ZKNWR2ckx5WgpvZVlhM3dRRDlzQTY4YWVpK1UrNGZkelo5
a1doaDk0KzZEc1F3bTJSL0x6MHQrSnM5K1dWRnlzMWZjY1BOVGpDL2tTM1g3RDFITDhQCmpWOXha
UHVoTXU1NWFqaU9mL3BHL2tQaXYxdVdiNjgrMC9WU2RkZlhqVy9Od1ZLNnJZaC8vN2phMnRFMisz
S2p4Y1VmVjQ0d1F2Q28KemJkMmJOdzJmWEg1eHpRMnFlYVYyOGZYZmx3MVAra096N1FvMTc2Ny9H
TUNjWTRUZVRLQ3c4YktiZC94cFJkcnZtaEZIZ2JqZlFPQgpJa3Y0dXdJS2pSeFNmNkZ3MVdNY0hu
QjBxUk9lak1wNzBRcTVQdm8weVowenpNN3ZWZ3hQNVBaQlZNTVR2dDRWSHBiWTBQMGhTSlRVCjIx
OUEvRm0zQVN1SWRtZ1kzdFY0ZURJWi9ub1A3OWVOeEhob2drdjRGdzdnQ2x3VFRqM3ZRWlRVM3J1
eUZ3M25lSDFrOFZidDhLVCsKQjdFWTd4a1FneUx1dTFwRmxIaC9wYjM0cUlqZ1NtTDVQVHFDS3JW
NlJielovRW94bndaZllWdytMYjl5NUNjSnZsNk5EWXA1bkgvNQpDdzZjbFdKTFl2azk0UGdWMkNB
QkdnQ0s1VmVXQVdSY0Q0eFNYMTZKaS9MaytpQldoSHZYc0dDeHd2aVRzR0JMcVBvZ3NIaGlJdCtY
CnVtQnlYT1RtNU0vcEMrWmpBdU45bXhHYStkTm1oQzdwMncraUw4clc4ZjJvaTl6eHZIYzdyM2N1
U3NQNlN1ZmlZK3FLZDJ4RUtyblQKK1N1TVNLVTB0SCtCQWFuTmR3d004Q3grRFRESy9zRmZZTHh2
WU5UdkRNbGIzYzc2WDFPQ00rRDVscXoyemEwajhZYzB4aS9KYlVIYQpJczl0M1Vja2I4aHRsYjN2
VnlxTk1qc2Z4ZmtzelpqZjQzelNKY3QrVmQ0VDhscURyelQyUC9Nc0JuMjlBMXIyd0Y4SmpUSTNI
d1FhClpXWDZlNkR4SzVCeGIwL2d5MXV5R0dVSnZCSVhKVlkrQ0N5cWYwUmpsR1I1bGNLQWpPZXRN
YW0rRFJmbHhPVXJjZkZCVFVscGlONlIKdXNDNHlOTmJiMHQ2MWtzU2VDMHNTaFByZytpTGtsRGVE
eXl3NzRtejRXK0R4UnNkejNLdyswRmdVUUw3KzRGRkhxUENvbXF1THQ1bQpSWjdFWmEvVUYrWGx4
dzhDak1vZlFVYTUxYXNjakFJYStlZnlheVVIUjRXNWZpdEcrU3pDSzlIeEJGMGZCQjd2MXB6Z29L
VEF4dHZzCnlSdWprci9BdU5za1dtVEovdkRSc2VaWG5CYi9GY0FvZXdwL05RYmV2VlZlTnY0OXJr
WTV5THZLb01DYSs5M1dQdmo2cHExOVpTbjgKQlFjR1Izbk8vQjV3bEl6WVZkaUFyUGdkTmtDRHZD
WE5WWWJxWDJoZ2FKU1huOThQTk80REZGaUtmd3N3U2pCOUpTNCthSHhTTFVubAovY0FDUXBKQkhw
Y3N2MWJmaG90eXNQUktZSlNyZjVESTVNK1lrbEswZkpVcEFUZ012a0pPSERJYU9UQ3VEMXJMYytP
VndDZ3ZMWHdRCllOVCtpTVlvejdLcmtJRmpFL2hZZnEzbHlIaERQcU04TzE0SmpYTDFqd0tOMHZU
OVBjYWtQRTJ2ZzBadVRRQVZBSTA4TktsZXYvek8KbElUd1NtaVVwOWRmYVB6UlorRTBjeGNEek1r
OU1xNEhSbG1GdlJJWVpaaC9FR0NVODMrL1IyZVVnOFNyZEFiczFobmtQc2J5Szk2Wgo4WWJkWE9V
OU42K0V4Z2MxSitXTkNiOEhHdVZwZWgwMDdzMEpiTk40azZmeHhrelhCelVuNVQxdXZ3Y2E1Ykc0
Q2hvNFBBRW40L1o4Ck0vM0g0cE5heVZINUlBYmx5WXJRNzhGR1dRZGZqNDE2YmxIeUZSU0lYYS8z
TnNydXdpdE5Tbm4zendjQng1OHhLV1ZoWG9VTkhMeGkKYkdDVFVyOGVHbVdvdmx0b1BQZlEyTHZs
MEUrM2V4VmVmaDdvaXcrQXZPWlJQY1hxNjhPVFQ5dWhsa2EzWFhpNCtzekRLQzhxNGtlZApGZzl6
L2Z1bzAvdHhMSDBwNUZYTW9DZXEvcXFKbFh2eHVjck5GUzVRdkhxUFN5a3Y5c3BaVmFyOVFmUnRp
YXZmWTRwWjdoK080NnIzClEvbG1WSEIvUWZIdUgyQld6MEhCc3I4T0ZPeGZVTHg3VU5Td3Bxai9P
bEM4d1NzcnFjcS81dU5QUGZtU3dhQjQ4QVRlYkQ1cWZ6WEYKdTljVTVaanB6YUI0UTJqL1YxUGdt
S0NJQkc1ZHlwSk1mbytqU2Y5cVIvTU55NDRsQWZ3MUgzL0tmRlIrdGFQNWhxUGdmMEh4UDBSVApV
TC9hMGF6ODlTbmV2VS94cS8zTU55eEEvMVVVLzBNVVJmVVhaeW11WDEzOElKRDRIN3hHMElCM3hH
M2ovNTlXQ1o0azdIK1BuMTZDCjh0V3hHM1QvZm1uMlQ5bmZKeUw4SUNzRlQvaDZYOUNBSFdCM2kv
Wi9DaG5sblhRZkJCamxnemZ2Q3hmNGFXL3dlSVUvZDNDcHZOWHgKZzhEaUhldUw4bU1BcjFjWWIz
d1l5d2VGUnNuY3Z4K0ZrZnNYdDIrNHlEY2pYSStMSjVQamxlbkE4dmJLRDZJemNtRFFJSnZiTFI2
LwpEeGdYalY3bGZNTEJsRitDaS9KdTRIY0xpLzhYVWQxek5ERlM4amRyRjIrd3hpK3d2bnl6ZEw0
R2tkL3VhSkZxUi9iYU1hYnc4dWtvCjBFTEQyNlRmUk0ySml2ZWRmYWZRdzZhd08ycXlvOFZHL2ly
bXk2WWdRWUUzcGozMzd1cmJIV3ZmR3NYcmVvdjNGajkrQWZaM3VYdTIKd2J2ZURMUnovcDV4eGM2
TVR6bGxZQzR5OHIxcVh6OVBqTWcvaGh2amM2bXRLQlpzOXdZZTc4M2V2NEhwN3RJRHR6bER4ZFh0
dDR0WApOZDFkZXE3ZzBiUGpiN0p2dyt1OTg5ZlQ1NDNnU3c5bDd3ZnNvdGNYbmJ2ajZXRzhSb2tS
QmlGUWZIR3dIa3BjTktOdmJrdy9kTFg0Cm14WUVqcjNSWXR2M1VLQ2IvNktIVzQvTHgzYnNHQmQ5
dVJ0UTNva2ZYNzI3NGRpZnpxNXo0MmllOWZYeitZdGV2RXo5OHpjNTcyNHgKbm83OXVHcHg5VEZG
M0tOeTQvL2Fqbk9NNGxDTC9mQkdpYlV3UGdaeTZKczJkUEdXL25kS1hEQUdMTjlBUmYyNE1jSnZ2
TzZ2alUreQpJSDV5N0hXb2hlbW4zTVdBTFkyUFN0M1dMdm9xR05FbXRJTmNmSmlWNHVwRUVMLzlG
NHpsRGN3djE0RDNndi9YZndPb2VpZGVDbVZ1ClpITjBjbVZoYlFwbGJtUnZZbW9LTVRFZ01DQnZZ
bW9LTVRBd05EQUtaVzVrYjJKcUNqRXlJREFnYjJKcUNpaFFjbWx1ZENrS1pXNWsKYjJKcUNqRXpJ
REFnYjJKcUNpaE5ZV01nVDFNZ1dDQXhNQzR4TUM0eUlGRjFZWEowZWlCUVJFWkRiMjUwWlhoMEtR
cGxibVJ2WW1vSwpNVFFnTUNCdlltb0tLRUZrYjJKbElFbHNiSFZ6ZEhKaGRHOXlJRU5ESURJd01U
UWdYQ2hOWVdOcGJuUnZjMmhjS1NrS1pXNWtiMkpxCkNqRTFJREFnYjJKcUNpaEVPakl3TVRReE1E
RTNNVGcwTWpBMVdqQXdKekF3SnlrS1pXNWtiMkpxQ2pFZ01DQnZZbW9LUER3Z0wxUnAKZEd4bElE
RXlJREFnVWlBdlVISnZaSFZqWlhJZ01UTWdNQ0JTSUM5RGNtVmhkRzl5SURFMElEQWdVaUF2UTNK
bFlYUnBiMjVFWVhSbApJREUxSURBZ1VpQXZUVzlrUkdGMFpRb3hOU0F3SUZJZ1BqNEtaVzVrYjJK
cUNuaHlaV1lLTUNBeE5nb3dNREF3TURBd01EQXdJRFkxCk5UTTFJR1lnQ2pBd01EQXdNVEV4TlRn
Z01EQXdNREFnYmlBS01EQXdNREF3TURneE5DQXdNREF3TUNCdUlBb3dNREF3TURBd016a3oKSURB
d01EQXdJRzRnQ2pBd01EQXdNREEyTmpVZ01EQXdNREFnYmlBS01EQXdNREF3TURBeU1pQXdNREF3
TUNCdUlBb3dNREF3TURBdwpNemMwSURBd01EQXdJRzRnQ2pBd01EQXdNREEwT1RVZ01EQXdNREFn
YmlBS01EQXdNREF3TURVM015QXdNREF3TUNCdUlBb3dNREF3Ck1EQXdOakU0SURBd01EQXdJRzRn
Q2pBd01EQXdNREEzTkRnZ01EQXdNREFnYmlBS01EQXdNREF4TURrMU9TQXdNREF3TUNCdUlBb3cK
TURBd01ERXdPVGd4SURBd01EQXdJRzRnQ2pBd01EQXdNVEV3TURVZ01EQXdNREFnYmlBS01EQXdN
REF4TVRBMU9DQXdNREF3TUNCdQpJQW93TURBd01ERXhNVEUySURBd01EQXdJRzRnQ25SeVlXbHNa
WElLUER3Z0wxTnBlbVVnTVRZZ0wxSnZiM1FnTVRBZ01DQlNJQzlKCmJtWnZJREVnTUNCU0lDOUpS
Q0JiSUR3M1ltUTVZMlJqT0dJNVkyRXdabVZtTVdNM016RXhNVFZoWVRnNU9XWm1aajRLUERkaVpE
bGoKWkdNNFlqbGpZVEJtWldZeFl6Y3pNVEV4TldGaE9EazVabVptUGlCZElENCtDbk4wWVhKMGVI
SmxaZ294TVRJMk13b2xKVVZQUmdvPQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240435</attachid>
            <date>2014-10-24 14:01:49 -0700</date>
            <delta_ts>2014-10-24 14:38:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>21070</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTc1MTczKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw4IEBACiAJCTkzNEMx
MTY3MEQ4NzEwQkIwMEMzMkFCRCAvKiBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0QzExNjYw
RDg3MTBCQjAwQzMyQUJEIC8qIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld0ludGVybmFsLmggKi87
IH07CiAJCTkzNEM0QTkxMEYwMTQwNkMwMDkzNzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEM0QTkwMEYw
MTQwNkMwMDkzNzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSAqLzsgfTsKIAkJOTM0QzRBQTAw
RjAxNDFGNzAwOTM3MkMwIC8qIFdlYlJlc291cmNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEM0QTlGMEYwMTQxRjcwMDkzNzJDMCAv
KiBXZWJSZXNvdXJjZUludGVybmFsLmggKi87IH07CisJCTkzNUQ0NEU0MTlGOUFGRjAwMEZCNTMw
NiAvKiBXZWJBY3Rpb25NZW51Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RDQ0RTIxOUY5QUZGMDAwRkI1MzA2IC8qIFdlYkFjdGlv
bk1lbnVDb250cm9sbGVyLmggKi87IH07CisJCTkzNUQ0NEU1MTlGOUFGRjAwMEZCNTMwNiAvKiBX
ZWJBY3Rpb25NZW51Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNUQ0NEUzMTlGOUFGRjAwMEZCNTMwNiAvKiBXZWJBY3Rpb25NZW51
Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJOTM2QTJERTgwRkQyRDA4MDAwRDMxMkRCIC8qIFdlYlRl
eHRDb21wbGV0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNkEyREU3MEZEMkQwODAwMEQzMTJEQiAvKiBXZWJUZXh0Q29tcGxl
dGlvbkNvbnRyb2xsZXIubW0gKi87IH07CiAJCTkzNkEyREVBMEZEMkQwODQwMEQzMTJEQiAvKiBX
ZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzNkEyREU5MEZEMkQwODQwMEQzMTJEQiAvKiBXZWJUZXh0Q29t
cGxldGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJOTM5MUYyNzUxMjFCMzhCRDAwRUJGN0U4IC8q
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTFGMjczMTIxQjM4QkQwMEVCRjdFOCAvKiBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmggKi87IH07CkBAIC02OTIsNiArNjk0LDggQEAKIAkJOTM0QzExNjYw
RDg3MTBCQjAwQzMyQUJEIC8qIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld0ludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld0lu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEM0QTkwMEYwMTQwNkMw
MDkzNzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYk5TT2JqZWN0RXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzRDNEE5RjBGMDE0MUY3MDA5MzcyQzAgLyogV2ViUmVzb3VyY2VJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNUQ0NEUyMTlGOUFGRjAwMEZCNTMw
NiAvKiBXZWJBY3Rpb25NZW51Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJBY3Rpb25NZW51Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5MzVENDRFMzE5RjlBRkYwMDBGQjUzMDYgLyogV2ViQWN0aW9uTWVudUNvbnRyb2xs
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBY3Rpb25N
ZW51Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM2QTJERTcw
RkQyRDA4MDAwRDMxMkRCIC8qIFdlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlRleHRDb21wbGV0aW9uQ29udHJv
bGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM2QTJERTkwRkQyRDA4NDAw
RDMxMkRCIC8qIFdlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MUYyNzMxMjFCMzhCRDAwRUJGN0U4IC8qIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTI3OCw2ICsxMjgyLDggQEAKIAkJCQlGNTJDQTZCRDAyREY5RDBGMDE4NjM1Q0EgLyogSFRNTCAq
LywKIAkJCQk1MUU5NEMwNzA2QzAyQ0EzMDBBOUIwOUUgLyogUERGICovLAogCQkJCUExMEMxRDc5
MTgyMDMwMTkwMDM2ODgzQSAvKiBpb3MgKi8sCisJCQkJOTM1RDQ0RTIxOUY5QUZGMDAwRkI1MzA2
IC8qIFdlYkFjdGlvbk1lbnVDb250cm9sbGVyLmggKi8sCisJCQkJOTM1RDQ0RTMxOUY5QUZGMDAw
RkI1MzA2IC8qIFdlYkFjdGlvbk1lbnVDb250cm9sbGVyLm1tICovLAogCQkJCTgzNzM0MzVBMDYy
NEVFMEQwMEYzQjI4OSAvKiBXZWJBcmNoaXZlLmggKi8sCiAJCQkJODM3MzQzNUIwNjI0RUUwRDAw
RjNCMjg5IC8qIFdlYkFyY2hpdmUubW0gKi8sCiAJCQkJNDRCQjhCMTMxMjQxQTAyMjAwMUUzQTIy
IC8qIFdlYkFyY2hpdmVJbnRlcm5hbC5oICovLApAQCAtMTcwOSw2ICsxNzE1LDcgQEAKIAkJCQk5
Mzk4MTA0QjA4MjRCRjAxMDA4REYwMzggLyogV2ViRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjU4QTQwOTYwQTE0ODUzQjAwNUU2OTg3IC8qIFdlYkRhdGFTb3VyY2VJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwNEMwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRhdGFT
b3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzVENDRFNDE5RjlBRkYwMDBGQjUz
MDYgLyogV2ViQWN0aW9uTWVudUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgx
MDRFMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJEZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwOEQwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRlZmF1bHRF
ZGl0aW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDRGMDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjIy
Myw2ICsyMjMwLDcgQEAKIAkJCQlBNTY4N0JEQjEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhp
Z2hsaWdodGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM2OEY2NzIwOTVCNUZDMTAwQzI5ODRF
IC8qIFdlYk5vZGVIaWdobGlnaHRWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwQzFENjEx
ODIwMzAwRTAwMzY4ODNBIC8qIFNlYXJjaFBvcHVwTWVudUlPUy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5MzVENDRFNTE5RjlBRkYwMDBGQjUzMDYgLyogV2ViQWN0aW9uTWVudUNvbnRyb2xsZXIu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTBDMUQ2QzE4MjAzMDBFMDAzNjg4M0EgLyogV2ViRnJh
bWVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTJFMkZFNjE0RTQ4MTgyMDA3Q0NBMTggLyog
V2ViTm90aWZpY2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMTFBNkYxNDc2NTUyRTAw
NDlBNENDIC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTc1MTc2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTQtMTAtMjQgIEJldGgg
RGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdDEgc2hvdWxkIHN1cHBv
cnQgYWN0aW9uIG1lbnVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzgwMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgYWN0aW9uIG1lbnVzIGFu
ZCBhZGRzIGFjdGlvbnMgZm9yIGxpbmtzLgorCisgICAgICAgIEhlbHBlciBjbGFzcyB0YWtlcyBj
YXJlIG9mIGFsbCBvZiB0aGUgYWN0aW9uIG1lbnUgd29yay4gV2ViVmlldyB3aWxsIGZvcndhcmQg
dGhlIAorICAgICAgICBwcmVwYXJlRm9yTWVudTogbWVzc2FnZSwgYW5kIHRoZW4gdGhlIGhlbHBl
ciBjbGFzcyB0YWtlcyBpdCBmcm9tIHRoZXJlLgorICAgICAgICAqIFdlYlZpZXcvV2ViQWN0aW9u
TWVudUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJBY3Rpb25NZW51
Q29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkFjdGlvbk1lbnVDb250cm9sbGVy
IHdlYlZpZXdDbG9zZWRdKToKKyAgICAgICAgKC1bV2ViQWN0aW9uTWVudUNvbnRyb2xsZXIgcHJl
cGFyZUZvck1lbnU6d2l0aEV2ZW50Ol0pOgorCisgICAgICAgIFNlbGVjdG9ycyBmb3IgbGluayBh
Y3Rpb25zLgorICAgICAgICAoLVtXZWJBY3Rpb25NZW51Q29udHJvbGxlciBfb3BlblVSTEZyb21B
Y3Rpb25NZW51Ol0pOgorICAgICAgICAoLVtXZWJBY3Rpb25NZW51Q29udHJvbGxlciBfYWRkVG9S
ZWFkaW5nTGlzdEZyb21BY3Rpb25NZW51Ol0pOgorICAgICAgICAoLVtXZWJBY3Rpb25NZW51Q29u
dHJvbGxlciBfZWxlbWVudEJvdW5kaW5nQm94RnJvbURPTUVsZW1lbnQ6XSk6CisgICAgICAgICgt
W1dlYkFjdGlvbk1lbnVDb250cm9sbGVyIF9xdWlja0xvb2tVUkxGcm9tQWN0aW9uTWVudTpdKToK
KyAgICAgICAgKC1bV2ViQWN0aW9uTWVudUNvbnRyb2xsZXIgX2NyZWF0ZUFjdGlvbk1lbnVJdGVt
Rm9yVGFnOndpdGhIaXRUZXN0UmVzdWx0Ol0pOgorICAgICAgICAod2ViS2l0QnVuZGxlSW1hZ2VO
YW1lZCk6CisgICAgICAgICgtW1dlYkFjdGlvbk1lbnVDb250cm9sbGVyIF9kZWZhdWx0TWVudUl0
ZW1zRm9yTGluazpdKToKKyAgICAgICAgKC1bV2ViQWN0aW9uTWVudUNvbnRyb2xsZXIgX2RlZmF1
bHRNZW51SXRlbXNGb3JIaXRUZXN0UmVzdWx0Ol0pOgorCisgICAgICAgIFRhZ3MgZm9yIHRoZSBh
Y3Rpb24gbWVudSBpdGVtcy4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRl
Lmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorCisgICAgICAgIFNldCB0aGUgYWN0
aW9uIG1lbnUgaWYgcG9zc2libGUgYW5kIGNyZWF0ZSB0aGUgY29udHJvbGxlci4KKyAgICAgICAg
KC1bV2ViVmlldyBfaW5pdFdpdGhGcmFtZTpmcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IF9jbG9zZV0pOgorICAgICAgICAoLVtXZWJWaWV3IHByZXBhcmVGb3JNZW51
OndpdGhFdmVudDpdKToKKworICAgICAgICBXZWJWaWV3RGF0YSBzdG9yZXMgdGhlIFdlYkFjdGlv
bk1lbnVIZWxwZXIKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgZGVhbGxv
Y10pOgorCiAyMDE0LTEwLTIzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIHdheSB0byBoYXZlIGFsdGVybmF0
ZSBpbnNwZWN0b3IgYWdlbnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFj
dGlvbk1lbnVDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJBY3Rpb25NZW51Q29udHJvbGxlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJBY3Rpb25NZW51Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAY2xhc3MgV2ViVmlldzsKKworQGludGVy
ZmFjZSBXZWJBY3Rpb25NZW51Q29udHJvbGxlciA6IE5TT2JqZWN0IHsKK0Bwcml2YXRlCisgICAg
V2ViVmlldyAqX3dlYlZpZXc7Cit9CisKKy0gKGlkKWluaXRXaXRoV2ViVmlldzooV2ViVmlldyAq
KXdlYlZpZXc7CistICh2b2lkKXdlYlZpZXdDbG9zZWQ7CistICh2b2lkKXByZXBhcmVGb3JNZW51
OihOU01lbnUgKiltZW51IHdpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50OworCitAZW5kCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFjdGlvbk1lbnVDb250cm9sbGVyLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQWN0aW9uTWVudUNvbnRy
b2xsZXIubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFj
dGlvbk1lbnVDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQ0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiV2ViQWN0aW9uTWVudUNvbnRyb2xsZXIuaCIKKworI2ltcG9y
dCAiRE9NRWxlbWVudEludGVybmFsLmgiCisjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCisjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwu
aCIKKyNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5o
PgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTlNWaWV3
U1BJLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDxvYmpjL29i
amMtY2xhc3MuaD4KKyNpbXBvcnQgPG9iamMvb2JqYy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JL
X0lOX1VNQlJFTExBKFF1YXJ0eiwgUXVpY2tMb29rVUkpCitTT0ZUX0xJTktfQ0xBU1MoUXVpY2tM
b29rVUksIFFMUHJldmlld0J1YmJsZSkKKworQGNsYXNzIFFMUHJldmlld0J1YmJsZTsKK0BpbnRl
cmZhY2UgTlNPYmplY3QgKFdLUUxQcmV2aWV3QnViYmxlRGV0YWlscykKK0Bwcm9wZXJ0eSAoY29w
eSkgTlNBcnJheSAqIGNvbnRyb2xzOworQHByb3BlcnR5IE5TU2l6ZSBtYXhpbXVtU2l6ZTsKK0Bw
cm9wZXJ0eSBOU1JlY3RFZGdlIHByZWZlcnJlZEVkZ2U7CitAcHJvcGVydHkgKHJldGFpbikgSUJP
dXRsZXQgTlNXaW5kb3cqIHBhcmVudFdpbmRvdzsKKy0gKHZvaWQpc2hvd1ByZXZpZXdJdGVtOihp
ZClwcmV2aWV3SXRlbSBpdGVtRnJhbWU6KE5TUmVjdClmcmFtZTsKKy0gKHZvaWQpc2V0QXV0b21h
dGljYWxseUNsb3NlV2l0aE1hc2s6KE5TRXZlbnRNYXNrKWF1dG9jbG9zZU1hc2sgZmlsdGVyTWFz
azooTlNFdmVudE1hc2spZmlsdGVyTWFzayBibG9jazoodm9pZCAoXikodm9pZCkpYmxvY2s7CitA
ZW5kCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW1wbGVtZW50YXRpb24gV2ViQWN0
aW9uTWVudUNvbnRyb2xsZXIKKworLSAoaWQpaW5pdFdpdGhXZWJWaWV3OihXZWJWaWV3ICopd2Vi
VmlldworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKKworICAgIHJldHVybiBzZWxmOworfQorCist
ICh2b2lkKXdlYlZpZXdDbG9zZWQKK3sKKyAgICBfd2ViVmlldyA9IG5pbDsKK30KKworLSAodm9p
ZClwcmVwYXJlRm9yTWVudTooTlNNZW51ICopbWVudSB3aXRoRXZlbnQ6KE5TRXZlbnQgKilldmVu
dAoreworICAgIGlmICghX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIE5TTWVudSAq
YWN0aW9uTWVudSA9IF93ZWJWaWV3LmFjdGlvbk1lbnU7CisgICAgaWYgKG1lbnUgIT0gYWN0aW9u
TWVudSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2FjdGlvbk1lbnUgcmVtb3ZlQWxsSXRlbXNd
OworCisgICAgTlNEaWN0aW9uYXJ5ICpoaXRUZXN0UmVzdWx0ID0gW193ZWJWaWV3IGVsZW1lbnRB
dFBvaW50Oltfd2ViVmlldyBjb252ZXJ0UG9pbnQ6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddIGZy
b21WaWV3Om5pbF1dOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IEFQSSBmb3Ig
Y2xpZW50cyB0byBjdXN0b21pemUgdGhlIG1lbnUgaXRlbXMuCisgICAgTlNBcnJheSAqbWVudUl0
ZW1zID0gW3NlbGYgX2RlZmF1bHRNZW51SXRlbXNGb3JIaXRUZXN0UmVzdWx0OmhpdFRlc3RSZXN1
bHRdOworCisgICAgZm9yIChOU01lbnVJdGVtICppdGVtIGluIG1lbnVJdGVtcykKKyAgICAgICAg
W2FjdGlvbk1lbnUgYWRkSXRlbTppdGVtXTsKK30KKworLSAodm9pZClfb3BlblVSTEZyb21BY3Rp
b25NZW51OihpZClzZW5kZXIKK3sKKyAgICBpZiAoIV93ZWJWaWV3KQorICAgICAgICByZXR1cm47
CisKKyAgICBOU1VSTCAqdXJsID0gW3NlbmRlciByZXByZXNlbnRlZE9iamVjdF07CisgICAgaWYg
KCF1cmwpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChbdXJsIGlzS2luZE9mQ2xhc3M6
W05TVVJMIGNsYXNzXV0pOworCisgICAgW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2VdIG9w
ZW5VUkw6dXJsXTsKK30KKworLSAodm9pZClfYWRkVG9SZWFkaW5nTGlzdEZyb21BY3Rpb25NZW51
OihpZClzZW5kZXIKK3sKKyAgICBpZiAoIV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAg
ICBOU1VSTCAqdXJsID0gW3NlbmRlciByZXByZXNlbnRlZE9iamVjdF07CisgICAgaWYgKCF1cmwp
CisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChbdXJsIGlzS2luZE9mQ2xhc3M6W05TVVJM
IGNsYXNzXV0pOworCisgICAgTlNTaGFyaW5nU2VydmljZSAqc2VydmljZSA9IFtOU1NoYXJpbmdT
ZXJ2aWNlIHNoYXJpbmdTZXJ2aWNlTmFtZWQ6TlNTaGFyaW5nU2VydmljZU5hbWVBZGRUb1NhZmFy
aVJlYWRpbmdMaXN0XTsKKyAgICBbc2VydmljZSBwZXJmb3JtV2l0aEl0ZW1zOkBbIHVybCBdXTsK
K30KKworLSAoTlNSZWN0KV9lbGVtZW50Qm91bmRpbmdCb3hGcm9tRE9NRWxlbWVudDooRE9NRWxl
bWVudCAqKWRvbUVsZW1lbnQKK3sKKyAgICBpZiAoIWRvbUVsZW1lbnQpCisgICAgICAgIHJldHVy
biBOU1plcm9SZWN0OworCisgICAgTm9kZSogbm9kZSA9IGNvcmUoZG9tRWxlbWVudCk7CisgICAg
RnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGlmICghZnJhbWUp
CisgICAgICAgIHJldHVybiBOU1plcm9SZWN0OworCisgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJh
bWUtPnZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBOU1plcm9SZWN0Owor
CisgICAgcmV0dXJuIHZpZXctPmNvbnRlbnRzVG9XaW5kb3cobm9kZS0+cGl4ZWxTbmFwcGVkQm91
bmRpbmdCb3goKSk7Cit9CisKKy0gKHZvaWQpX3F1aWNrTG9va1VSTEZyb21BY3Rpb25NZW51Oihp
ZClzZW5kZXIKK3sKKyAgICBpZiAoIV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBO
U0RpY3Rpb25hcnkgKmhpdFRlc3RSZXN1bHQgPSBbc2VuZGVyIHJlcHJlc2VudGVkT2JqZWN0XTsK
KyAgICBpZiAoIWhpdFRlc3RSZXN1bHQpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChb
aGl0VGVzdFJlc3VsdCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSk7CisKKyAg
ICBOU1VSTCAqdXJsID0gW2hpdFRlc3RSZXN1bHQgb2JqZWN0Rm9yS2V5OldlYkVsZW1lbnRMaW5r
VVJMS2V5XTsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE9NRWxlbWVu
dCAqZG9tRWxlbWVudCA9IFtoaXRUZXN0UmVzdWx0IG9iamVjdEZvcktleTpXZWJFbGVtZW50RE9N
Tm9kZUtleV07CisgICAgaWYgKCFkb21FbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBO
U1JlY3QgaXRlbUZyYW1lID0gW193ZWJWaWV3IGNvbnZlcnRSZWN0OltzZWxmIF9lbGVtZW50Qm91
bmRpbmdCb3hGcm9tRE9NRWxlbWVudDpkb21FbGVtZW50XSB0b1ZpZXc6bmlsXTsKKyAgICBOU1Np
emUgbWF4aW11bVByZXZpZXdTaXplID0gTlNNYWtlU2l6ZShfd2ViVmlldy5ib3VuZHMuc2l6ZS53
aWR0aCAqIDAuNzUsIF93ZWJWaWV3LmJvdW5kcy5zaXplLmhlaWdodCAqIDAuNzUpOworCisgICAg
UmV0YWluUHRyPFFMUHJldmlld0J1YmJsZT4gYnViYmxlID0gYWRvcHROUyhbW2dldFFMUHJldmll
d0J1YmJsZUNsYXNzKCkgYWxsb2NdIGluaXRdKTsKKyAgICBbYnViYmxlIHNldFBhcmVudFdpbmRv
dzpfd2ViVmlldy53aW5kb3ddOworICAgIFtidWJibGUgc2V0TWF4aW11bVNpemU6bWF4aW11bVBy
ZXZpZXdTaXplXTsKKyAgICBbYnViYmxlIHNldFByZWZlcnJlZEVkZ2U6TlNNYXhZRWRnZV07Cisg
ICAgW2J1YmJsZSBzZXRDb250cm9sczpAWyBdXTsKKyAgICBOU0V2ZW50TWFzayBmaWx0ZXJNYXNr
ID0gTlNBbnlFdmVudE1hc2sgJiB+KE5TQXBwS2l0RGVmaW5lZE1hc2sgfCBOU1N5c3RlbURlZmlu
ZWRNYXNrIHwgTlNBcHBsaWNhdGlvbkRlZmluZWRNYXNrIHwgTlNNb3VzZUVudGVyZWRNYXNrIHwg
TlNNb3VzZUV4aXRlZE1hc2spOworICAgIE5TRXZlbnRNYXNrIGF1dG9jbG9zZU1hc2sgPSBOU0xl
ZnRNb3VzZURvd25NYXNrIHwgTlNSaWdodE1vdXNlRG93bk1hc2sgfCBOU0tleURvd25NYXNrOwor
ICAgIFtidWJibGUgc2V0QXV0b21hdGljYWxseUNsb3NlV2l0aE1hc2s6YXV0b2Nsb3NlTWFzayBm
aWx0ZXJNYXNrOmZpbHRlck1hc2sgYmxvY2s6W2J1YmJsZV0geworICAgICAgICBbYnViYmxlIGNs
b3NlXTsKKyAgICB9XTsKKyAgICBbYnViYmxlIHNob3dQcmV2aWV3SXRlbTp1cmwgaXRlbUZyYW1l
Oml0ZW1GcmFtZV07Cit9CisKKy0gKFJldGFpblB0cjxOU01lbnVJdGVtPilfY3JlYXRlQWN0aW9u
TWVudUl0ZW1Gb3JUYWc6KHVpbnQzMl90KXRhZyB3aXRoSGl0VGVzdFJlc3VsdDooTlNEaWN0aW9u
YXJ5ICopaGl0VGVzdFJlc3VsdAoreworICAgIFNFTCBzZWxlY3RvciA9IG51bGxwdHI7CisgICAg
TlNTdHJpbmcgKnRpdGxlID0gbmlsOworICAgIE5TSW1hZ2UgKmltYWdlID0gbmlsOworICAgIGlk
IHJlcHJlc2VudGVkT2JqZWN0ID0gbmlsOworCisgICAgc3dpdGNoICh0YWcpIHsKKyAgICBjYXNl
IFdlYkFjdGlvbk1lbnVJdGVtVGFnT3BlbkxpbmtJbkRlZmF1bHRCcm93c2VyOgorICAgICAgICBz
ZWxlY3RvciA9IEBzZWxlY3Rvcihfb3BlblVSTEZyb21BY3Rpb25NZW51Oik7CisgICAgICAgIHRp
dGxlID0gQCJPcGVuIjsKKyAgICAgICAgaW1hZ2UgPSB3ZWJLaXRCdW5kbGVJbWFnZU5hbWVkKEAi
T3BlbkluTmV3V2luZG93VGVtcGxhdGUiKTsKKyAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgPSBb
aGl0VGVzdFJlc3VsdCBvYmplY3RGb3JLZXk6V2ViRWxlbWVudExpbmtVUkxLZXldOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgV2ViQWN0aW9uTWVudUl0ZW1UYWdQcmV2aWV3TGluazoKKyAg
ICAgICAgc2VsZWN0b3IgPSBAc2VsZWN0b3IoX3F1aWNrTG9va1VSTEZyb21BY3Rpb25NZW51Oik7
CisgICAgICAgIHRpdGxlID0gQCJQcmV2aWV3IjsKKyAgICAgICAgaW1hZ2UgPSBbTlNJbWFnZSBp
bWFnZU5hbWVkOk5TSW1hZ2VOYW1lUXVpY2tMb29rVGVtcGxhdGVdOworICAgICAgICByZXByZXNl
bnRlZE9iamVjdCA9IGhpdFRlc3RSZXN1bHQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBX
ZWJBY3Rpb25NZW51SXRlbVRhZ0FkZExpbmtUb1NhZmFyaVJlYWRpbmdMaXN0OgorICAgICAgICBz
ZWxlY3RvciA9IEBzZWxlY3RvcihfYWRkVG9SZWFkaW5nTGlzdEZyb21BY3Rpb25NZW51Oik7Cisg
ICAgICAgIHRpdGxlID0gQCJBZGQgdG8gU2FmYXJpIFJlYWRpbmcgTGlzdCI7CisgICAgICAgIGlt
YWdlID0gW05TSW1hZ2UgaW1hZ2VOYW1lZDpOU0ltYWdlTmFtZUJvb2ttYXJrc1RlbXBsYXRlXTsK
KyAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgPSBbaGl0VGVzdFJlc3VsdCBvYmplY3RGb3JLZXk6
V2ViRWxlbWVudExpbmtVUkxLZXldOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0K
KworICAgIFJldGFpblB0cjxOU01lbnVJdGVtPiBpdGVtID0gYWRvcHROUyhbW05TTWVudUl0ZW0g
YWxsb2NdIGluaXRXaXRoVGl0bGU6dGl0bGUgYWN0aW9uOnNlbGVjdG9yIGtleUVxdWl2YWxlbnQ6
QCIiXSk7CisgICAgW2l0ZW0gc2V0SW1hZ2U6aW1hZ2VdOworICAgIFtpdGVtIHNldFRhcmdldDpz
ZWxmXTsKKyAgICBbaXRlbSBzZXRUYWc6dGFnXTsKKyAgICBbaXRlbSBzZXRSZXByZXNlbnRlZE9i
amVjdDpyZXByZXNlbnRlZE9iamVjdF07CisgICAgcmV0dXJuIGl0ZW07Cit9CisKK3N0YXRpYyBO
U0ltYWdlICp3ZWJLaXRCdW5kbGVJbWFnZU5hbWVkKE5TU3RyaW5nICpuYW1lKQoreworICAgIHJl
dHVybiBbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiV0tWaWV3
IildIGltYWdlRm9yUmVzb3VyY2U6bmFtZV07Cit9CisKKy0gKE5TQXJyYXkgKilfZGVmYXVsdE1l
bnVJdGVtc0Zvckxpbms6KE5TRGljdGlvbmFyeSAqKWhpdFRlc3RSZXN1bHQKK3sKKyAgICBOU1VS
TCAqdXJsID0gW2hpdFRlc3RSZXN1bHQgb2JqZWN0Rm9yS2V5OldlYkVsZW1lbnRMaW5rVVJMS2V5
XTsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIEBbIF07CisKKyAgICBpZiAoIVdlYkNv
cmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoW3VybCBhYnNvbHV0ZVN0cmluZ10pKQorICAgICAg
ICByZXR1cm4gQFsgXTsKKworICAgIFJldGFpblB0cjxOU01lbnVJdGVtPiBvcGVuTGlua0l0ZW0g
PSBbc2VsZiBfY3JlYXRlQWN0aW9uTWVudUl0ZW1Gb3JUYWc6V2ViQWN0aW9uTWVudUl0ZW1UYWdP
cGVuTGlua0luRGVmYXVsdEJyb3dzZXIgd2l0aEhpdFRlc3RSZXN1bHQ6aGl0VGVzdFJlc3VsdF07
CisgICAgUmV0YWluUHRyPE5TTWVudUl0ZW0+IHByZXZpZXdMaW5rSXRlbSA9IFtzZWxmIF9jcmVh
dGVBY3Rpb25NZW51SXRlbUZvclRhZzpXZWJBY3Rpb25NZW51SXRlbVRhZ1ByZXZpZXdMaW5rIHdp
dGhIaXRUZXN0UmVzdWx0OmhpdFRlc3RSZXN1bHRdOworICAgIFJldGFpblB0cjxOU01lbnVJdGVt
PiByZWFkaW5nTGlzdEl0ZW0gPSBbc2VsZiBfY3JlYXRlQWN0aW9uTWVudUl0ZW1Gb3JUYWc6V2Vi
QWN0aW9uTWVudUl0ZW1UYWdBZGRMaW5rVG9TYWZhcmlSZWFkaW5nTGlzdCB3aXRoSGl0VGVzdFJl
c3VsdDpoaXRUZXN0UmVzdWx0XTsKKworICAgIHJldHVybiBAWyBvcGVuTGlua0l0ZW0uZ2V0KCks
IHByZXZpZXdMaW5rSXRlbS5nZXQoKSwgW05TTWVudUl0ZW0gc2VwYXJhdG9ySXRlbV0sIHJlYWRp
bmdMaXN0SXRlbS5nZXQoKSBdOworfQorCistIChOU0FycmF5ICopX2RlZmF1bHRNZW51SXRlbXNG
b3JIaXRUZXN0UmVzdWx0OihOU0RpY3Rpb25hcnkgKiloaXRUZXN0UmVzdWx0Cit7CisgICAgTlNV
UkwgKnVybCA9IFtoaXRUZXN0UmVzdWx0IG9iamVjdEZvcktleTpXZWJFbGVtZW50TGlua1VSTEtl
eV07CisgICAgaWYgKHVybCkKKyAgICAgICAgcmV0dXJuIFtzZWxmIF9kZWZhdWx0TWVudUl0ZW1z
Rm9yTGluazpoaXRUZXN0UmVzdWx0XTsKKworICAgIHJldHVybiBAWyBdOworfQorCitAZW5kCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0
ZS5oCShyZXZpc2lvbiAxNzUxNzMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJ
RGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw0ICsyNjksMTEgQEAgQGlu
dGVyZmFjZSBOU09iamVjdCAoV2ViVUlEZWxlZ2F0ZVByaXZhdAogCiAtIChOU0RhdGEgKil3ZWJD
cnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyOwogCitlbnVtIHsKKyAg
ICBXZWJBY3Rpb25NZW51SXRlbVRhZ05vQWN0aW9uID0gMCwKKyAgICBXZWJBY3Rpb25NZW51SXRl
bVRhZ09wZW5MaW5rSW5EZWZhdWx0QnJvd3NlciwKKyAgICBXZWJBY3Rpb25NZW51SXRlbVRhZ1By
ZXZpZXdMaW5rLAorICAgIFdlYkFjdGlvbk1lbnVJdGVtVGFnQWRkTGlua1RvU2FmYXJpUmVhZGlu
Z0xpc3QKK307CisKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0J
KHJldmlzaW9uIDE3NTE3MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjAwLDYgKzIwMCw3IEBACiAjaW1wb3J0IDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKICNpZiAhUExBVEZPUk0oSU9TKQorI2ltcG9ydCAiV2ViQWN0aW9uTWVudUNv
bnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW1wb3J0ICJX
ZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViTlNFdmVudEV4dHJhcy5oIgpA
QCAtMjA3LDYgKzIwOCw3IEBACiAjaW1wb3J0ICJXZWJOU1Bhc3RlYm9hcmRFeHRyYXMuaCIKICNp
bXBvcnQgIldlYk5TUHJpbnRPcGVyYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgIldlYlBERlZpZXcu
aCIKKyNpbXBvcnQgPFdlYkNvcmUvTlNWaWV3U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaD4KICNlbHNlCiAjaW1wb3J0ICJNZW1vcnlNZWFzdXJl
LmgiCkBAIC0xMDYxLDYgKzEwNjMsMTIgQEAgLSAoaWQpX2luaXRXaXRoRnJhbWU6KE5TUmVjdClm
IGZyYW1lTmFtZQogICAgIFtzZWxmIHNldE1haW50YWluc0JhY2tGb3J3YXJkTGlzdDogWUVTXTsK
ICNpZiAhUExBVEZPUk0oSU9TKQogICAgIF9wcml2YXRlLT5wYWdlLT5zZXREZXZpY2VTY2FsZUZh
Y3Rvcihbc2VsZiBfZGV2aWNlU2NhbGVGYWN0b3JdKTsKKworICAgIGlmIChbc2VsZiByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldEFjdGlvbk1lbnU6KV0pIHsKKyAgICAgICAgUmV0YWlu
UHRyPE5TTWVudT4gYWN0aW9uTWVudSA9IGFkb3B0TlMoW1tOU01lbnUgYWxsb2NdIGluaXRdKTsK
KyAgICAgICAgc2VsZi5hY3Rpb25NZW51ID0gYWN0aW9uTWVudS5nZXQoKTsKKyAgICAgICAgX3By
aXZhdGUtPmFjdGlvbk1lbnVDb250cm9sbGVyID0gW1tXZWJBY3Rpb25NZW51Q29udHJvbGxlciBh
bGxvY10gaW5pdFdpdGhXZWJWaWV3OnNlbGZdOworICAgIH0KICNlbmRpZgogICAgIHJldHVybiBz
ZWxmOwogfQpAQCAtMTcwMiw2ICsxNzEwLDcgQEAgLSAodm9pZClfY2xvc2UKICAgICBbc2VsZiBz
ZXRVSURlbGVnYXRlOm5pbF07CiAKICAgICBbX3ByaXZhdGUtPmluc3BlY3RvciB3ZWJWaWV3Q2xv
c2VkXTsKKyAgICBbX3ByaXZhdGUtPmFjdGlvbk1lbnVDb250cm9sbGVyIHdlYlZpZXdDbG9zZWRd
OwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TKQpAQCAtODUxNiw2ICs4NTI1LDE0IEBAIC0g
KE5TUmVjdClfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6KE5TUmUKICAgICByZXR1cm4gTlNNYWtl
UmVjdChyZWN0Lm9yaWdpbi54LCBbc2VsZiBib3VuZHNdLnNpemUuaGVpZ2h0IC0gcmVjdC5vcmln
aW4ueSAtIHJlY3Quc2l6ZS5oZWlnaHQsIHJlY3Quc2l6ZS53aWR0aCwgcmVjdC5zaXplLmhlaWdo
dCk7CiB9CiAKKy0gKHZvaWQpcHJlcGFyZUZvck1lbnU6KE5TTWVudSAqKW1lbnUgd2l0aEV2ZW50
OihOU0V2ZW50ICopZXZlbnQKK3sKKyAgICBpZiAobWVudSAhPSBzZWxmLmFjdGlvbk1lbnUpCisg
ICAgICAgIHJldHVybjsKKworICAgIFtfcHJpdmF0ZS0+YWN0aW9uTWVudUNvbnRyb2xsZXIgcHJl
cGFyZUZvck1lbnU6bWVudSB3aXRoRXZlbnQ6ZXZlbnRdOworfQorCiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3RGV2aWNlT3JpZW50YXRpb24pCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCShyZXZpc2lvbiAxNzUxNzMpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDYgKzQ5LDcgQEAgY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBQYWdlOwogfQogCitAY2xhc3Mg
V2ViQWN0aW9uTWVudUNvbnRyb2xsZXI7CiBAY2xhc3MgV2ViSW5zcGVjdG9yOwogQGNsYXNzIFdl
Yk5vZGVIaWdobGlnaHQ7CiBAY2xhc3MgV2ViUGx1Z2luRGF0YWJhc2U7CkBAIC0xNDUsNiArMTQ2
LDggQEAgQGludGVyZmFjZSBXZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBXZWJJbnNw
ZWN0b3IgKmluc3BlY3RvcjsKICAgICBXZWJOb2RlSGlnaGxpZ2h0ICpjdXJyZW50Tm9kZUhpZ2hs
aWdodDsKIAorICAgIFdlYkFjdGlvbk1lbnVDb250cm9sbGVyICphY3Rpb25NZW51Q29udHJvbGxl
cjsKKwogICAgIEJPT0wgYWxsb3dzVW5kbzsKICAgICAgICAgCiAgICAgZmxvYXQgem9vbU11bHRp
cGxpZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0JKHJl
dmlzaW9uIDE3NTE3MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBAQCAtICh2b2lkKWRlYWxsb2MKICNl
bmRpZgogICAgIFtpbnNwZWN0b3IgcmVsZWFzZV07CiAgICAgW2N1cnJlbnROb2RlSGlnaGxpZ2h0
IHJlbGVhc2VdOworICAgIFthY3Rpb25NZW51Q29udHJvbGxlciByZWxlYXNlXTsKICAgICBbaG9z
dFdpbmRvdyByZWxlYXNlXTsKICAgICBbcG9saWN5RGVsZWdhdGVGb3J3YXJkZXIgcmVsZWFzZV07
CiAgICAgW1VJRGVsZWdhdGVGb3J3YXJkZXIgcmVsZWFzZV07Cg==
</data>
<flag name="review"
          id="265218"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>