<?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>179904</bug_id>
          
          <creation_ts>2017-11-20 16:41:01 -0800</creation_ts>
          <short_desc>[Cocoa] Web Inspector: load inspector resources using a custom scheme handler</short_desc>
          <delta_ts>2021-03-18 19:37:59 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1373869</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-20 16:41:01 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373870</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-20 16:41:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/10887211&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374975</commentid>
    <comment_count>2</comment_count>
      <attachid>327643</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-27 10:03:22 -0800</bug_when>
    <thetext>Created attachment 327643
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374977</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-27 10:04:34 -0800</bug_when>
    <thetext>Attachment 327643 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/WebPage/mac/WebInspectorUIMac.mm:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/UIProcess/mac/WKInspectorViewController.mm:47:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 6 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>1375071</commentid>
    <comment_count>4</comment_count>
      <attachid>327643</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-27 12:57:41 -0800</bug_when>
    <thetext>Comment on attachment 327643
WIP patch

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

&gt; Source/WebKit/UIProcess/mac/WKInspectorViewController.mm:186
&gt; +    [configuration setURLSchemeHandler:[WKInspectorURLSchemeHandler new] forURLScheme:WKInspectorURLSchemeProtocol];

This is a memory leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740146</commentid>
    <comment_count>5</comment_count>
      <attachid>423388</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-16 13:05:08 -0700</bug_when>
    <thetext>Created attachment 423388
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740150</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-16 13:08:44 -0700</bug_when>
    <thetext>In a separate patch, I will remove the &quot;assume access to the base URL&quot; code that is no longer needed after this change. (It requires cross-port changes that are trickier to get right than this Cocoa only change.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740156</commentid>
    <comment_count>7</comment_count>
      <attachid>423388</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-03-16 13:16:39 -0700</bug_when>
    <thetext>Comment on attachment 423388
Patch v1.0

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

r=me

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:89
&gt; +    [[NSOperationQueue mainQueue] addOperation:_fileLoadOperation];

Let&apos;s do this file access off the main thread to keep the app responsive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740159</commentid>
    <comment_count>8</comment_count>
      <attachid>423388</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-16 13:27:39 -0700</bug_when>
    <thetext>Comment on attachment 423388
Patch v1.0

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

r=me as well

I don&apos;t think there&apos;d be any issues but please make sure that this works with the various `Worker` that the frontend creates (e.g. formatter, heap snapshot, etc.)

&gt; Source/WebKit/ChangeLog:15
&gt; +        This also has the effect of resetting Web Inspector settings since
&gt; +        they are no longer associated with the file:/// protocol.

This is scary/unfortunate.  Any way to avoid it?  Maybe check to see if `inspector-resource://` exists and if not duplicate the `file://` data?

&gt; Source/WebKit/ChangeLog:17
&gt; +        Covered by existing inspector tests which exercise this code path.

I don&apos;t think this is accurate actually 😅

IIRC, both `WI.Setting` and `WI.ObjectStore` have checks for `!window.InspectorTest` before they attempt to actually write to `localStorage` and `indexedDB`.

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.h:31
&gt; +
&gt; +

Style: double whitespace

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:41
&gt; +// MARK - WKURLSchemeHandler Protocol

NIT: Is it preferred to use `#pragma mark - ` or `// MARK - `?

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:76
&gt; +        if (!mimeType)
&gt; +            mimeType = @&quot;application/octet-stream&quot;;

o_0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740187</commentid>
    <comment_count>9</comment_count>
      <attachid>423388</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2021-03-16 14:10:24 -0700</bug_when>
    <thetext>Comment on attachment 423388
Patch v1.0

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

&gt;&gt; Source/WebKit/ChangeLog:17
&gt;&gt; +        Covered by existing inspector tests which exercise this code path.
&gt; 
&gt; I don&apos;t think this is accurate actually 😅
&gt; 
&gt; IIRC, both `WI.Setting` and `WI.ObjectStore` have checks for `!window.InspectorTest` before they attempt to actually write to `localStorage` and `indexedDB`.

+1!

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:37
&gt; +    NSOperation *_fileLoadOperation;

It seems like there can be a set of ongoing file load operations at the same time, especially if this is being dispatched to another queue. So it seems like this should probably be a map (URL -&gt; Operation).

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:46
&gt; +        _cachedBundle = [NSBundle bundleWithIdentifier:@&quot;com.apple.WebInspectorUI&quot;];

Is this ARC? If not this should probably be a RetainPtr. It is an implementation detail, that could go away in the future, that NSBundles are never actually released.

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:78
&gt; +        NSHTTPURLResponse *urlResponse = [[NSHTTPURLResponse alloc] initWithURL:urlSchemeTask.request.URL statusCode:200 HTTPVersion:nil headerFields:@{

Is this ARC? If not this should be a RetainPtr or released.

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm:32
&gt; +#import &quot;Logging.h&quot;

Needed?

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm:52
&gt; +#import &lt;WebCore/MimeTypeRegistry.h&gt;
&gt;  #import &lt;WebCore/VersionChecks.h&gt;
&gt; +#import &lt;wtf/Assertions.h&gt;

Seems a few of these imports are stale from earlier development.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740242</commentid>
    <comment_count>10</comment_count>
      <attachid>423388</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-16 15:13:05 -0700</bug_when>
    <thetext>Comment on attachment 423388
Patch v1.0

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

&gt;&gt; Source/WebKit/ChangeLog:15
&gt;&gt; +        they are no longer associated with the file:/// protocol.
&gt; 
&gt; This is scary/unfortunate.  Any way to avoid it?  Maybe check to see if `inspector-resource://` exists and if not duplicate the `file://` data?

I&apos;ve tried every year for the past few years and couldn&apos;t shove it through. I don&apos;t think it&apos;s important enough to block moving forward. There are non-user facing reasons to make this change.

&gt;&gt;&gt; Source/WebKit/ChangeLog:17
&gt;&gt;&gt; +        Covered by existing inspector tests which exercise this code path.
&gt;&gt; 
&gt;&gt; I don&apos;t think this is accurate actually 😅
&gt;&gt; 
&gt;&gt; IIRC, both `WI.Setting` and `WI.ObjectStore` have checks for `!window.InspectorTest` before they attempt to actually write to `localStorage` and `indexedDB`.
&gt; 
&gt; +1!

I meant in the file loading sense. Please explain what extra tests would be meaningful.

&gt;&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:37
&gt;&gt; +    NSOperation *_fileLoadOperation;
&gt; 
&gt; It seems like there can be a set of ongoing file load operations at the same time, especially if this is being dispatched to another queue. So it seems like this should probably be a map (URL -&gt; Operation).

I&apos;m not sure how this could happen given the current architecture of one big page with sync CSS and script tags. (I originally implemented it that way but found it unnecessary.)

&gt;&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:41
&gt;&gt; +// MARK - WKURLSchemeHandler Protocol
&gt; 
&gt; NIT: Is it preferred to use `#pragma mark - ` or `// MARK - `?

MARK is newer and preferred

&gt;&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:46
&gt;&gt; +        _cachedBundle = [NSBundle bundleWithIdentifier:@&quot;com.apple.WebInspectorUI&quot;];
&gt; 
&gt; Is this ARC? If not this should probably be a RetainPtr. It is an implementation detail, that could go away in the future, that NSBundles are never actually released.

OK

&gt;&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:78
&gt;&gt; +        NSHTTPURLResponse *urlResponse = [[NSHTTPURLResponse alloc] initWithURL:urlSchemeTask.request.URL statusCode:200 HTTPVersion:nil headerFields:@{
&gt; 
&gt; Is this ARC? If not this should be a RetainPtr or released.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741407</commentid>
    <comment_count>11</comment_count>
      <attachid>423651</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-18 14:06:54 -0700</bug_when>
    <thetext>Created attachment 423651
Patch v1.1 (for EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741422</commentid>
    <comment_count>12</comment_count>
      <attachid>423656</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-18 14:23:56 -0700</bug_when>
    <thetext>Created attachment 423656
Patch v1.2 (for EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741488</commentid>
    <comment_count>13</comment_count>
      <attachid>423668</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-18 16:21:00 -0700</bug_when>
    <thetext>Created attachment 423668
Patch v1.3 - use concurrent global queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741561</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-18 19:37:57 -0700</bug_when>
    <thetext>Committed r274697: &lt;https://commits.webkit.org/r274697&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 423668.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327643</attachid>
            <date>2017-11-27 10:03:22 -0800</date>
            <delta_ts>2021-03-16 13:05:06 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-179904-20171127100321.patch</filename>
            <type>text/plain</type>
            <size>21152</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJiNDVjMGU3NjEwMmZiYTJm
NTkyMWRiYWYzZmM5NjViYjhiYmU1ZDkuLjU0MjAzOWQ1YTk3ZDFmODgyZjYwZDY5ZWU0MGNlZWU5
MjM4NWM0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMTctMTEtMjcgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBs
b2FkIGluc3BlY3RvciByZXNvdXJjZXMgdXNpbmcgYSBjdXN0b20gc2NoZW1lIGhhbmRsZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTkwNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTA4ODcyMTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW1dJUCBQYXRjaF0KKworICAgICAgICBMb2FkaW5nIFdl
YiBJbnNwZWN0b3IgdmlhIGZpbGU6Ly8vIFVSTCBpcyB1bmRlc2lyYWJsZSBmb3Igc2V2ZXJhbCBy
ZWFzb25zOgorICAgICAgICAtIEl0IHJlcXVpcmVzIGFzc3VtZWQgcmVhZCBhY2Nlc3MgdG8gbG9j
YWwgZmlsZSBkaXJlY3RvcmllcworICAgICAgICAtIEl0cyBzZXR0aW5ncyBhcmUgZ3JvdXBlZCB3
aXRoIG90aGVyIG1haW4gcmVzb3VyY2VzIGxvYWRlZCB2aWEgZmlsZTovLy8uCisgICAgICAgIFRo
aXMgY2F1c2VzIFdlYiBJbnNwZWN0b3Igc2V0dGluZ3MgdG8gYmUgY2xlYXJlZCB3aGVuIGEgdXNl
ciBjbGVhcnMgd2Vic2l0ZSBzZXR0aW5ncyB2aWEgU2FmYXJpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggbW92ZXMgdGhlIG1haW4gcmVzb3VyY2UgYW5kIG90aGVyIGFzc2V0cyB0byBiZSBsb2FkZWQg
dmlhCisgICAgICAgIHRoZSBpbnNwZWN0b3ItYXNzZXQ6Ly8gY3VzdG9tIHNjaGVtZS4gTG9hZHMg
b3ZlciB0aGlzIHNjaGVtZSBhcmUgY29udmVydGVkCisgICAgICAgIGludG8gYnVuZGxlIHJlc291
cmNlIGxvb2t1cHMgaW4gdGhlIFdlYkluc3BlY3RvclVJLmZyYW1ld29yayBidW5kbGUuCisKKyAg
ICAgICAgTWlncmF0aW5nIHBlcnNpc3RlbnQgYXBwIHN0YXRlIGZyb20gZmlsZTovLyBzdG9yYWdl
IHRvIGN1c3RvbSBzdG9yYWdlIGlzIHN0aWxsIFRCRC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3cpOgorICAgICAgICBObyBu
ZWVkIGZvciBhc3N1bWVkIHJlYWQgYWNjZXNzIHRvIHRoZSBiYXNlIFVSTCwgZXZlcnl0aGluZyBs
b2FkcyB2aWEgY3VzdG9tIHNjaGVtZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjcmVhdGVG
cm9udGVuZFBhZ2UpOgorICAgICAgICBObyBuZWVkIGZvciBhc3N1bWVkIHJlYWQgYWNjZXNzIHRv
IHRoZSBiYXNlIFVSTCwgZXZlcnl0aGluZyBsb2FkcyB2aWEgY3VzdG9tIHNjaGVtZS4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aXNNYWluT3JUZXN0SW5zcGVjdG9yUGFn
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0
b3JCYXNlVVJMKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIGluc3BlY3RvckJhc2VVUkwsIGFz
IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIE1vdmUgaXMgTWFpbk9yVGVzdEluc3Bl
Y3RvclBhZ2UgaW50byBhIHN0YXRpYyBmdW5jdGlvbiBpbnNpZGUKKyAgICAgICAgV2ViSW5zcGVj
dG9yUHJveHlHdGsuY3BwIHNpbmNlIHRoYXQgaXMgdGhlIG9ubHkgcmVtYWluaW5nIHVzZSBzaXRl
LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmlzTWFpbk9yVGVzdEluc3BlY3RvclBhZ2UpOiBNb3ZlZCBjb2RlIHRvIGhlcmUuCisKKyAgICAg
ICAgKFdlYktpdDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKTogRGVsZXRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oOgorICAg
ICAgICBBZGQgbmV3IHN0YXRpYyBtZXRob2QgZm9yIGNvbXB1dGluZyBhbiBhc3NldCBVUkwgZ2l2
ZW4gYSBmaWxlbmFtZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyIHdl
YlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtXS0luc3BlY3RvclVSTFNj
aGVtZUhhbmRsZXIgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgQWRkIGEg
Y3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlciB0aGF0IGxvb2tzIGZvciB0aGUgc3BlY2lmaWVkIHJl
c291cmNlIGluIHRoZSBXZWJJbnNwZWN0b3JVSS5mcmFtZXdvcmsKKyAgICAgICAgYnVuZGxlIHJl
c291cmNlcy4KKworICAgICAgICBBc3NldCBVUkxzIGFyZSBvZiB0aGUgZm9ybToKKworICAgICAg
ICAgICAgaW5zcGVjdG9yLWFzc2V0Oi8vYXNzZXQvcGF0aC10by1idW5kbGUvcmVzb3VyY2UuaHRt
bAorCisgICAgICAgIFRoZSAnYXNzZXQnIGNvbXBvbmVudCBhZnRlciB0aGUgc2NoZW1lIGlzIG5v
dCBwYXJzZWQsIGFuZCBleGlzdHMgdG8gc2ltcGxpZnkgVVJMIHBhcnNpbmcuCisgICAgICAgIFdl
IGNvdWxkIGNoYW5nZSB0aGUgVVJMIHRlbXBhbHRlIHRvIGluc3BlY3Rvci1yZXNvdXJjZTovL2Fz
c2V0Ly4uLiB0byBtYWtlIHRoaXMgbGVzcyByZWR1bmRhbnQuCisKKyAgICAgICAgKC1bV0tJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpdKTogTW92ZSB0aGlzIHVwIG5leHQgdG8g
dGhlIC1kZWxlZ2F0ZSBnZXR0ZXIuCisKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlciBjb25maWd1cmF0aW9uXSk6CisgICAgICAgIEhvb2sgdXAgdGhlIHNjaGVtZSBoYW5kbGVy
IGFuZCBubyBsb25nZXIgcmVxdWVzdCB1bml2ZXJzYWwgZmlsZSByZWFkIGFjY2Vzcy4KKworICAg
ICAgICAoK1tXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIFVSTEZvckluc3BlY3RvckFzc2V0Ol0p
OgorICAgICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIHdlYlZpZXc6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgIEFsbG93
IGFueSBsb2FkIHZpYSBvdXIgY3VzdG9tIHNjaGVtZS4gTm8gbmVlZCB0byBjaGVjayB0aGUgYWN0
dWFsIFVSTC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJM
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
clBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9y
VGVzdFBhZ2VVUkwpOgorICAgICAgICBVc2Ugc2hhcmVkIGNvZGUgdG8gY29tcHV0ZSBhbiBhc3Nl
dCBVUkwgZm9yIHRoZSBtYWluL3Rlc3QgcmVzb3VyY2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
d3BlL1dlYkluc3BlY3RvclByb3h5V1BFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwpOiBEZWxldGVkLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
d2ViSW5zcGVjdG9yVUlMb2NhbGl6ZWRTdHJpbmdzVVJMKToKKyAgICAgICAgVXNlIHNoYXJlZCBj
b2RlIHRvIGNvbXB1dGUgYW4gYXNzZXQgVVJMIGZvciBsb2NhbGl6ZWRTdHJpbmdzLmpzLiBVbmRl
ciB0aGUgaG9vZCwKKyAgICAgICAgd2UgZmV0Y2ggbG9jYWxpemVkU3RyaW5ncy5qcyBmcm9tIHRo
ZSBidW5kbGUgaW4gYSBsb2NhbGl6YXRpb24tYXdhcmUgd2F5LgorCiAyMDE3LTExLTI3ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE9uZSB0b28gbWFu
eSB6ZXJvZXMgaW4gbWFjT1MgdmVyc2lvbiBudW1iZXIgaW4gRmVhdHVyZURlZmluZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcApp
bmRleCAyZjFlNzExN2I2Y2I0ZGI0MjY5MDRjMWQxZmU3M2NlZjkxOTJlZWZkLi40NjIyNTRmYTMw
ZGZjYWM0ZjdmNjVjZWVmMGE5NjI5YzE0OTE1NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0xMzEsNyArMTMxLDYg
QEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRQYWdlQW5kV2lu
ZG93KCkKICAgICB0cmFja0luc3BlY3RvclBhZ2UobV9pbnNwZWN0b3JQYWdlKTsKIAogICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlV2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQ
YWdlLT5wYWdlSUQoKSwgKnRoaXMpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFz
c3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VV
UkwoKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQ
YWdlQW5kV2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYklu
c3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmNwcAppbmRleCBhMTU4OTY4ZjEyZTRkOTQ5NjIwNWVjZGM0ZjMxMmVjNDViMWZkZjE5Li42
OWE3YzY3ZTQ3MDgxYmNmYTBmMGZhZTdlNTk0YzQ0NWVlYmYzMTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0zMDcsMjIgKzMwNyw2IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZUVsZW1lbnRTZWxlY3Rpb24oKQogICAgIH0K
IH0KIAotYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNNYWluT3JUZXN0SW5zcGVjdG9yUGFnZShj
b25zdCBVUkwmIHVybCkKLXsKLSAgICAvLyBVc2UgVVJMIHNvIHdlIGNhbiBjb21wYXJlIHRoZSBw
YXRocyBhbmQgcHJvdG9jb2xzLgotICAgIFVSTCBtYWluUGFnZVVSTChVUkwoKSwgV2ViSW5zcGVj
dG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSk7Ci0gICAgaWYgKHVybC5wcm90b2NvbCgpID09
IG1haW5QYWdlVVJMLnByb3RvY29sKCkgJiYgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5w
YXRoKCkpID09IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhtYWluUGFnZVVSTC5wYXRoKCkpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFdlIG1pZ2h0IG5vdCBoYXZlIGEgVGVzdCBV
UkwgaW4gUHJvZHVjdGlvbiBidWlsZHMuCi0gICAgU3RyaW5nIHRlc3RQYWdlVVJMU3RyaW5nID0g
V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclRlc3RQYWdlVVJMKCk7Ci0gICAgaWYgKHRlc3RQ
YWdlVVJMU3RyaW5nLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBVUkwg
dGVzdFBhZ2VVUkwoVVJMKCksIHRlc3RQYWdlVVJMU3RyaW5nKTsKLSAgICByZXR1cm4gdXJsLnBy
b3RvY29sKCkgPT0gdGVzdFBhZ2VVUkwucHJvdG9jb2woKSAmJiBkZWNvZGVVUkxFc2NhcGVTZXF1
ZW5jZXModXJsLnBhdGgoKSkgPT0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHRlc3RQYWdlVVJM
LnBhdGgoKSk7Ci19Ci0KIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFn
ZSgpCiB7CiAgICAgaWYgKG1faW5zcGVjdG9yUGFnZSkKQEAgLTMzNiw3ICszMjAsNiBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2UoKQogICAgIHRyYWNrSW5zcGVj
dG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwogCiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7Ci0gICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChXZWJJ
bnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpKTsKIH0KIAogLy8gQ2FsbGVkIGJ5IFdl
Ykluc3BlY3RvclByb3h5IG1lc3NhZ2VzCkBAIC02MjUsMTIgKzYwOCw2IEBAIFN0cmluZyBXZWJJ
bnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yVGVzdFBhZ2VVUkwoKQogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAotU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVk
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuaAppbmRleCAzMWQ5YWI0MDc2YWY0MGY4NzJhN2ZmMzZmNmY5OWRjNTcx
NDFlODIwLi4zNzc5ZWJkOTNmMDdhMThjYWJlMWQxYWVlYjdmZjRiZmQwNGM3NzM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTE0Miw4ICsxNDIs
NiBAQCBwdWJsaWM6CiAgICAgLy8gUHJvdmlkZWQgYnkgcGxhdGZvcm0gV2ViSW5zcGVjdG9yUHJv
eHkgaW1wbGVtZW50YXRpb25zLgogICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yUGFnZVVSTCgp
OwogICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yVGVzdFBhZ2VVUkwoKTsKLSAgICBzdGF0aWMg
U3RyaW5nIGluc3BlY3RvckJhc2VVUkwoKTsKLSAgICBzdGF0aWMgYm9vbCBpc01haW5PclRlc3RJ
bnNwZWN0b3JQYWdlKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1pbmltdW1XaW5kb3dXaWR0aDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWlu
aW11bVdpbmRvd0hlaWdodDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IDc4YmUwODcyYjNjMzYwYmU0MmMyMzY2M2Nh
ZDQ4NjNhYWJhYzU1MjIuLmU3ZTQzOTczYzdjNmM3ODRlMGEwOWI4ODVmMDM4ZDVhYjBkOTkwYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94
eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclBy
b3h5R3RrLmNwcApAQCAtNjgsNiArNjgsMjIgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dXBk
YXRlSW5zcGVjdG9yV2luZG93VGl0bGUoKSBjb25zdAogICAgIHdlYmtpdEluc3BlY3RvcldpbmRv
d1NldFN1YnRpdGxlKFdFQktJVF9JTlNQRUNUT1JfV0lORE9XKG1faW5zcGVjdG9yV2luZG93KSwg
IW1faW5zcGVjdGVkVVJMU3RyaW5nLmlzRW1wdHkoKSA/IG1faW5zcGVjdGVkVVJMU3RyaW5nLnV0
ZjgoKS5kYXRhKCkgOiBudWxscHRyKTsKIH0KIAorc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5z
cGVjdG9yUGFnZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICAvLyBVc2UgVVJMIHNvIHdlIGNhbiBj
b21wYXJlIHRoZSBwYXRocyBhbmQgcHJvdG9jb2xzLgorICAgIFVSTCBtYWluUGFnZVVSTChVUkwo
KSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSk7CisgICAgaWYgKHVybC5w
cm90b2NvbCgpID09IG1haW5QYWdlVVJMLnByb3RvY29sKCkgJiYgZGVjb2RlVVJMRXNjYXBlU2Vx
dWVuY2VzKHVybC5wYXRoKCkpID09IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhtYWluUGFnZVVS
TC5wYXRoKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFdlIG1pZ2h0IG5vdCBo
YXZlIGEgVGVzdCBVUkwgaW4gUHJvZHVjdGlvbiBidWlsZHMuCisgICAgU3RyaW5nIHRlc3RQYWdl
VVJMU3RyaW5nID0gV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclRlc3RQYWdlVVJMKCk7Cisg
ICAgaWYgKHRlc3RQYWdlVVJMU3RyaW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBVUkwgdGVzdFBhZ2VVUkwoVVJMKCksIHRlc3RQYWdlVVJMU3RyaW5nKTsKKyAgICBy
ZXR1cm4gdXJsLnByb3RvY29sKCkgPT0gdGVzdFBhZ2VVUkwucHJvdG9jb2woKSAmJiBkZWNvZGVV
UkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSkgPT0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
KHRlc3RQYWdlVVJMLnBhdGgoKSk7Cit9CisKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgZXhj
ZWVkZWREYXRhYmFzZVF1b3RhKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTZWN1cml0eU9yaWdp
blJlZiwgV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2ln
bmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1
bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgY29uc3Qgdm9pZCopCiB7CiAgICAgcmV0
dXJuIHN0ZDo6bWF4PHVuc2lnbmVkIGxvbmcgbG9uZz4oZXhwZWN0ZWRVc2FnZSwgY3VycmVudERh
dGFiYXNlVXNhZ2UgKiAxLjI1KTsKQEAgLTk1LDcgKzExMSw3IEBAIHN0YXRpYyB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIFdLTmF2aWdhdGlv
bkFjdGlvCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSB0b0ltcGwobmF2
aWdhdGlvbkFjdGlvblJlZiktPnJlcXVlc3QoKTsKIAogICAgIC8vIEFsbG93IGxvYWRpbmcgb2Yg
dGhlIG1haW4gaW5zcGVjdG9yIGZpbGUuCi0gICAgaWYgKFdlYkluc3BlY3RvclByb3h5Ojppc01h
aW5PclRlc3RJbnNwZWN0b3JQYWdlKHJlcXVlc3QudXJsKCkpKSB7CisgICAgaWYgKGlzTWFpbk9y
VGVzdEluc3BlY3RvclBhZ2UocmVxdWVzdC51cmwoKSkpIHsKICAgICAgICAgdG9JbXBsKGxpc3Rl
bmVyUmVmKS0+dXNlKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNDYsMTEgKzM2
Miw2IEBAIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yVGVzdFBhZ2VVUkwoKQog
ICAgIHJldHVybiBTdHJpbmcoInJlc291cmNlOi8vL29yZy93ZWJraXRndGsvaW5zcGVjdG9yL1Vz
ZXJJbnRlcmZhY2UvVGVzdC5odG1sIik7CiB9CiAKLVN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6
aW5zcGVjdG9yQmFzZVVSTCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZygicmVzb3VyY2U6Ly8vb3Jn
L3dlYmtpdGd0ay9pbnNwZWN0b3IvVXNlckludGVyZmFjZS8iKTsKLX0KLQogdW5zaWduZWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KCkKIHsKICAgICBy
ZXR1cm4gZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGVkX2hlaWdodChpbnNwZWN0ZWRQYWdlKCktPnZp
ZXdXaWRnZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaAppbmRleCAzNzdiMzczOWQ3MDlhNTFkZjVkYzI1MzVi
YjNmYThhNDJjMWRmZjYzLi4zNmE0MDIzNGEzMGJhODlmNzZiYzlmMWU5NWNhZjY4ZTBjMTM0NWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0luc3BlY3Rv
clZpZXdDb250cm9sbGVyLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEluc3BlY3RlZFBhZ2U6KFdlYktpdDo6V2ViUGFn
ZVByb3h5KiBfTnVsbGFibGUpaW5zcGVjdGVkUGFnZTsKIAogKyAoQk9PTCl2aWV3SXNJbnNwZWN0
b3JXZWJWaWV3OihOU1ZpZXcgKil2aWV3OworKyAoTlNVUkwgKilVUkxGb3JJbnNwZWN0b3JBc3Nl
dDooTlNTdHJpbmcgKilhc3NldFBhdGg7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCBm
ZTEyYjFhZTZmNTVmMzc4YmFkMjJmMjMyNjcwNDFlMGFlM2VjYzA0Li4yYjNlYzEyYjBiYjU2M2Jh
MjcwMTc5MzNjYTQxOWE2ZWQ0YzEyMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0ICJX
S0Vycm9yLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mby5oIgogI2ltcG9ydCAiV0tOYXZpZ2F0aW9u
QWN0aW9uLmgiCiAjaW1wb3J0ICJXS05hdmlnYXRpb25EZWxlZ2F0ZS5oIgpAQCAtMzUsMTYgKzM2
LDI0IEBACiAjaW1wb3J0ICJXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tQcm9j
ZXNzUG9vbEludGVybmFsLmgiCiAjaW1wb3J0ICJXS1VJRGVsZWdhdGVQcml2YXRlLmgiCisjaW1w
b3J0ICJXS1VSTFNjaGVtZUhhbmRsZXIuaCIKKyNpbXBvcnQgIldLVVJMU2NoZW1lVGFzay5oIgog
I2ltcG9ydCAiV0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uUHJp
dmF0ZS5oIgogI2ltcG9ydCAiV2Vha09iakNQdHIuaCIKICNpbXBvcnQgIldlYkluc3BlY3RvclBy
b3h5LmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYlBh
Z2VQcm94eS5oIgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDxGb3VuZGF0
aW9uL05TUGF0aFV0aWxpdGllcy5oPgorCitTT0ZUX0xJTktfU1RBR0VEX0ZSQU1FV09SSyhXZWJJ
bnNwZWN0b3JVSSwgUHJpdmF0ZUZyYW1ld29ya3MsIEEpCiAKIC8vIEZJWE1FOiB0aGlzIHNob3Vs
ZCBiZSBkZWNsYXJlZCBpbiB0aGUgT2JqQyBBUEk7IGN1cnJlbnRseSBpdCdzIGluIHRoZSBDIFNQ
SS4KIGNvbnN0IE5TSW50ZWdlciBXS0luc3BlY3RvclZpZXdUYWcgPSAxMDAwOwogCitzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCBXS0luc3BlY3RvclVSTFNjaGVtZVByb3RvY29sID0gQCJpbnNwZWN0
b3ItYXNzZXQiOworCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAvLyBDbGllbnRzIG5lZWQg
dG8gYmUgYWJsZSB0byB0ZWxsIHdoZXRoZXIgYSBzdWJ2aWV3IGlzIGEgZG9ja2VkIGluc3BlY3Rv
ciB2aWV3LCBzbyBvdmVycmlkZSB0aGUgdGFnLgpAQCAtNTgsNiArNjcsNTcgQEAgLSAoTlNJbnRl
Z2VyKXRhZwogfQogQGVuZAogCitAaW50ZXJmYWNlIFdLSW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxl
ciA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXS0luc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sK
K3sKKyAgICBBU1NFUlQoW3dlYlZpZXcgaXNLaW5kT2ZDbGFzczpbV0tJbnNwZWN0b3JXS1dlYlZp
ZXcgY2xhc3NdXSk7CisKKyAgICAvLyBDYWxsIHRoZSBzb2Z0IGxpbmsgZnJhbWV3b3JrIGZ1bmN0
aW9uIHRvIGRsb3BlbiBpdCwgdGhlbiBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6XSB3
aWxsIHdvcmsuCisgICAgV2ViSW5zcGVjdG9yVUlMaWJyYXJ5KCk7CisKKyAgICBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QgPSB0YXNrLnJlcXVlc3Q7CisgICAgTlNVUkwgKnJlcXVlc3RlZFVSTCA9IHJl
cXVlc3QuVVJMOworCisgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gcmVxdWVzdGVkVVJMLmxhc3RQ
YXRoQ29tcG9uZW50OworICAgIE5TVVJMICpyZXNvdXJjZVVSTCA9IFtbTlNCdW5kbGUgYnVuZGxl
V2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViSW5zcGVjdG9yVUkiXSBVUkxGb3JSZXNvdXJj
ZTpmaWxlbmFtZS5zdHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbiB3aXRoRXh0ZW5zaW9uOmZp
bGVuYW1lLnBhdGhFeHRlbnNpb24gc3ViZGlyZWN0b3J5OnJlcXVlc3RlZFVSTC5wYXRoLnN0cmlu
Z0J5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF0uVVJMQnlTdGFuZGFyZGl6aW5nUGF0aDsKKyAg
ICBBU1NFUlQocmVzb3VyY2VVUkwpOworICAgIE5TU3RyaW5nICp1dGkgPSBDRkJyaWRnaW5nUmVs
ZWFzZShVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzRmls
ZW5hbWVFeHRlbnNpb24sIChfX2JyaWRnZSBDRlN0cmluZ1JlZilmaWxlbmFtZS5wYXRoRXh0ZW5z
aW9uLCBOVUxMKSk7CisgICAgQVNTRVJUKHV0aSk7CisgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0g
Q0ZCcmlkZ2luZ1JlbGVhc2UoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcygoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpdXRpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7CisgICAgQVNTRVJUKG1p
bWVUeXBlKTsKKworICAgIGlmICghcmVzb3VyY2VVUkwgfHwgIXV0aSB8fCAhbWltZVR5cGUpIHsK
KyAgICAgICAgLy8gV2UgY2FuJ3QgZmlndXJlIG91dCBhIFVSTCBhbmQvb3IgTUlNRSB0eXBlIGZv
ciB0aGUgTlNVUkxSZXNwb25zZSwganVzdCBnaXZlIHVwLgorICAgICAgICBbdGFzayBkaWRGYWls
V2l0aEVycm9yOltbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46V0tFcnJvckRvbWFpbiBj
b2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF1dOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgTlNFcnJvciAqcmVzb3VyY2VMb2FkRXJyb3IgPSBuaWw7CisgICAgTlNEYXRhICpy
ZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpyZXNvdXJjZVVSTCBv
cHRpb25zOjAgZXJyb3I6JnJlc291cmNlTG9hZEVycm9yXTsKKyAgICBpZiAocmVzb3VyY2VMb2Fk
RXJyb3IpIHsKKyAgICAgICAgW3Rhc2sgZGlkRmFpbFdpdGhFcnJvcjpyZXNvdXJjZUxvYWRFcnJv
cl07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSA9IFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6cmVxdWVzdGVkVVJMIE1JTUVU
eXBlOm1pbWVUeXBlIGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNvdXJjZURhdGEubGVuZ3RoIHRl
eHRFbmNvZGluZ05hbWU6bmlsXTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9u
c2VdOworICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOnJlc291cmNlRGF0YV07CisgICAgW3Rhc2sg
ZGlkRmluaXNoXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0
b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cmxTY2hlbWVUYXNrCit7Cisg
ICAgQVNTRVJUKFt3ZWJWaWV3IGlzS2luZE9mQ2xhc3M6W1dLSW5zcGVjdG9yV0tXZWJWaWV3IGNs
YXNzXV0pOworCisgICAgLy8gQWxsIGluc3BlY3RvciBhc3NldCBsb2FkcyBhcmUgc3luY2hyb25v
dXMgZnJvbSB0aGUgYnVuZGxlLCBzbyB3ZSBzaG91bGQgbmV2ZXIgZ2V0IHRoaXMgY2FsbGJhY2sK
KyAgICAvLyBwcmlvciB0byB0aGUgVVJMU2NoZW1lVGFzayBiZWNvbWluZyBjb21wbGV0ZWQuCit9
CisKK0BlbmQKKwogQGludGVyZmFjZSBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyICgpIDxXS1VJ
RGVsZWdhdGUsIFdLTmF2aWdhdGlvbkRlbGVnYXRlPgogQGVuZAogCkBAIC05NCw2ICsxNTQsMTEg
QEAgLSAoaWQgPFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKICAg
ICByZXR1cm4gX2RlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpOwogfQogCistICh2b2lkKXNldERl
bGVnYXRlOihpZCA8V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQor
eworICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworfQorCiAtIChXS1dlYlZpZXcgKil3ZWJWaWV3
CiB7CiAgICAgLy8gQ29uc3RydWN0IGxhemlseSBzbyB0aGUgY2xpZW50IGNhbiBzZXQgdGhlIGRl
bGVnYXRlIGJlZm9yZSB0aGUgV2ViVmlldyBpcyBjcmVhdGVkLgpAQCAtMTA5LDIxICsxNzQsMTcg
QEAgLSAoV0tXZWJWaWV3ICopd2ViVmlldwogICAgIHJldHVybiBfd2ViVmlldy5nZXQoKTsKIH0K
IAotLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZT4pZGVsZWdhdGUKLXsKLSAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLX0KLQogLSAoV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsKICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwog
CiAgICAgV0tQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBjb25maWd1cmF0aW9uLmdldCgpLnBy
ZWZlcmVuY2VzOwotICAgIHByZWZlcmVuY2VzLl9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMg
PSBZRVM7Ci0gICAgW2NvbmZpZ3VyYXRpb24gX3NldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZp
bGVVUkxzOllFU107CiAgICAgcHJlZmVyZW5jZXMuX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9IF9X
S1N0b3JhZ2VCbG9ja2luZ1BvbGljeUFsbG93QWxsOwogICAgIHByZWZlcmVuY2VzLl9qYXZhU2Ny
aXB0UnVudGltZUZsYWdzID0gMDsKIAorICAgIEFTU0VSVCghW1dLSW5zcGVjdG9yV0tXZWJWaWV3
IGhhbmRsZXNVUkxTY2hlbWU6V0tJbnNwZWN0b3JVUkxTY2hlbWVQcm90b2NvbF0pOworICAgIFtj
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6W1dLSW5zcGVjdG9yVVJMU2NoZW1lSGFu
ZGxlciBuZXddIGZvclVSTFNjaGVtZTpXS0luc3BlY3RvclVSTFNjaGVtZVByb3RvY29sXTsKKwog
I2lmbmRlZiBOREVCVUcKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdl
YiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAg
ICAgcHJlZmVyZW5jZXMuX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgPSBZRVM7CkBAIC0xNDMsNiAr
MjA0LDExIEBAIC0gKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiAgICAg
cmV0dXJuIGNvbmZpZ3VyYXRpb24uYXV0b3JlbGVhc2UoKTsKIH0KIAorKyAoTlNVUkwgKilVUkxG
b3JJbnNwZWN0b3JBc3NldDooTlNTdHJpbmcgKilhc3NldFBhdGgKK3sKKyAgICByZXR1cm4gW05T
VVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDovL2Fzc2V0
LyVAIiwgV0tJbnNwZWN0b3JVUkxTY2hlbWVQcm90b2NvbCwgYXNzZXRQYXRoXV0uVVJMQnlTdGFu
ZGFyZGl6aW5nUGF0aDsKK30KKwogKyAoQk9PTCl2aWV3SXNJbnNwZWN0b3JXZWJWaWV3OihOU1Zp
ZXcgKil2aWV3CiB7CiAgICAgcmV0dXJuIFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dLSW5zcGVjdG9y
V0tXZWJWaWV3IGNsYXNzXV07CkBAIC0yMDUsOCArMjcxLDggQEAgLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2
aWdhdGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEFsbG93IGxvYWRpbmcgb2Yg
dGhlIG1haW4gaW5zcGVjdG9yIGZpbGUuCi0gICAgaWYgKFdlYkluc3BlY3RvclByb3h5Ojppc01h
aW5PclRlc3RJbnNwZWN0b3JQYWdlKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpKSB7Cisg
ICAgLy8gQWxsb3cgbG9hZGluZyBhbnl0aGluZyB3aXRoIG91ciBhc3NldCBzY2hlbWUuIElmIHRo
ZSBmaWxlIGRvZXNuJ3QgZXhpc3QgdGhlbiB0aGUgbG9hZCB3aWxsIGZhaWwgbGF0ZXIuCisgICAg
aWYgKFtuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6
V0tJbnNwZWN0b3JVUkxTY2hlbWVQcm90b2NvbF0pIHsKICAgICAgICAgZGVjaXNpb25IYW5kbGVy
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbQppbmRleCBlNDZhNzg3ZTE3ZWNmOTdjODFmM2IyNjIyZmUzZGQ1OTNkZDlmNmFkLi5jNWRl
NzFlZmI1ZmEwYzExNDJmODc1NjQ5MDQ4NmUzNTg1OGY1ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0zNywxMiAr
MzcsOCBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3Ry
aW5ncy5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9C
YXNlNjQuaD4KIAotCi1TT0ZUX0xJTktfU1RBR0VEX0ZSQU1FV09SSyhXZWJJbnNwZWN0b3JVSSwg
UHJpdmF0ZUZyYW1ld29ya3MsIEEpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIApAQCAtNjQyLDM4ICs2MzgsMTIgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKQogCiBTdHJpbmcgV2ViSW5zcGVjdG9y
UHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKQogewotICAgIC8vIENhbGwgdGhlIHNvZnQgbGluayBm
cmFtZXdvcmsgZnVuY3Rpb24gdG8gZGxvcGVuIGl0LCB0aGVuIFtOU0J1bmRsZSBidW5kbGVXaXRo
SWRlbnRpZmllcjpdIHdpbGwgd29yay4KLSAgICBXZWJJbnNwZWN0b3JVSUxpYnJhcnkoKTsKLQot
ICAgIE5TU3RyaW5nICpwYXRoID0gW1tOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNv
bS5hcHBsZS5XZWJJbnNwZWN0b3JVSSJdIHBhdGhGb3JSZXNvdXJjZTpAIk1haW4iIG9mVHlwZTpA
Imh0bWwiXTsKLSAgICBBU1NFUlQoW3BhdGggbGVuZ3RoXSk7Ci0KLSAgICByZXR1cm4gW1tOU1VS
TCBmaWxlVVJMV2l0aFBhdGg6cGF0aF0gYWJzb2x1dGVTdHJpbmddOworICAgIHJldHVybiBbV0tJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlciBVUkxGb3JJbnNwZWN0b3JBc3NldDpAIk1haW4uaHRtbCJd
LmFic29sdXRlU3RyaW5nOwogfQogCiBTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
clRlc3RQYWdlVVJMKCkKIHsKLSAgICAvLyBDYWxsIHRoZSBzb2Z0IGxpbmsgZnJhbWV3b3JrIGZ1
bmN0aW9uIHRvIGRsb3BlbiBpdCwgdGhlbiBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6
XSB3aWxsIHdvcmsuCi0gICAgV2ViSW5zcGVjdG9yVUlMaWJyYXJ5KCk7Ci0KLSAgICBOU1N0cmlu
ZyAqcGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2Vi
SW5zcGVjdG9yVUkiXSBwYXRoRm9yUmVzb3VyY2U6QCJUZXN0IiBvZlR5cGU6QCJodG1sIl07Ci0K
LSAgICAvLyBXZSBtaWdodCBub3QgaGF2ZSBhIFRlc3QuaHRtbCBpbiBQcm9kdWN0aW9uIGJ1aWxk
cy4KLSAgICBpZiAoIXBhdGgpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVy
biBbW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoXSBhYnNvbHV0ZVN0cmluZ107Ci19Ci0KLVN0
cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpCi17Ci0gICAgLy8gQ2Fs
bCB0aGUgc29mdCBsaW5rIGZyYW1ld29yayBmdW5jdGlvbiB0byBkbG9wZW4gaXQsIHRoZW4gW05T
QnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOl0gd2lsbCB3b3JrLgotICAgIFdlYkluc3BlY3Rv
clVJTGlicmFyeSgpOwotCi0gICAgTlNTdHJpbmcgKnBhdGggPSBbW05TQnVuZGxlIGJ1bmRsZVdp
dGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkluc3BlY3RvclVJIl0gcmVzb3VyY2VQYXRoXTsK
LSAgICBBU1NFUlQoW3BhdGggbGVuZ3RoXSk7Ci0KLSAgICByZXR1cm4gW1tOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6cGF0aF0gYWJzb2x1dGVTdHJpbmddOworICAgIHJldHVybiBbV0tJbnNwZWN0b3JW
aWV3Q29udHJvbGxlciBVUkxGb3JJbnNwZWN0b3JBc3NldDpAIlRlc3QuaHRtbCJdLmFic29sdXRl
U3RyaW5nOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJJbnNwZWN0b3JQcm94eVdQRS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93cGUvV2ViSW5zcGVjdG9yUHJveHlXUEUuY3BwCmluZGV4IGY2YjI3NmE2
YmM0MjE3Yjc3YTRkYmE2YjQ1NGU2ZmU2MmE3Mzk5Y2QuLmNlNjhlNzVlNTRkNGQwOTljYTMwNjk4
YjE0YzBkNDg4ZWEwMzZiZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dw
ZS9XZWJJbnNwZWN0b3JQcm94eVdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d3BlL1dlYkluc3BlY3RvclByb3h5V1BFLmNwcApAQCAtOTEsMTEgKzkxLDYgQEAgU3RyaW5nIFdl
Ykluc3BlY3RvclByb3h5OjppbnNwZWN0b3JUZXN0UGFnZVVSTCgpCiAgICAgcmV0dXJuIFN0cmlu
ZygicmVzb3VyY2U6Ly8vb3JnL3dwZS9pbnNwZWN0b3IvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwi
KTsKIH0KIAotU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkKLXsK
LSAgICByZXR1cm4gU3RyaW5nKCJyZXNvdXJjZTovLy9vcmcvd3BlL2luc3BlY3Rvci9Vc2VySW50
ZXJmYWNlLyIpOwotfQotCiB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNw
ZWN0ZWRXaW5kb3dIZWlnaHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlN
YWMubW0KaW5kZXggNzNkN2IxYmY5NDM5NjIzNzY0NWIxODUzNTMzMjljMWE5MGFmMDE5NS4uMjJi
N2U1ZWIxMjA1YzdlZTZhNTgyYzhlYTVjODgyYjlkNGQzOGE3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5t
bQpAQCAtMjUsMTEgKzI1LDEwIEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yVUkuaCIKLSNpbXBvcnQgIlJlbW90ZVdlYkluc3BlY3RvclVJLmgiCi0KLSNpbXBv
cnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi1TT0ZUX0xJTktfU1RBR0VEX0ZSQU1FV09SSyhXZWJJ
bnNwZWN0b3JVSSwgUHJpdmF0ZUZyYW1ld29ya3MsIEEpCisjaW1wb3J0ICJSZW1vdGVXZWJJbnNw
ZWN0b3JVSS5oIgorI2ltcG9ydCAiV2ViSW5zcGVjdG9yUHJveHkuaCIKKyNpbXBvcnQgIldLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQwLDE0
ICszOSw3IEBAIGJvb2wgV2ViSW5zcGVjdG9yVUk6OmNhblNhdmUoKQogCiBzdGF0aWMgU3RyaW5n
IHdlYkluc3BlY3RvclVJTG9jYWxpemVkU3RyaW5nc1VSTCgpCiB7Ci0gICAgLy8gQ2FsbCB0aGUg
c29mdCBsaW5rIGZyYW1ld29yayBmdW5jdGlvbiB0byBkbG9wZW4gaXQsIHRoZW4gW05TQnVuZGxl
IGJ1bmRsZVdpdGhJZGVudGlmaWVyOl0gd2lsbCB3b3JrLgotICAgIFdlYkluc3BlY3RvclVJTGli
cmFyeSgpOwotCi0gICAgTlNTdHJpbmcgKnBhdGggPSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVu
dGlmaWVyOkAiY29tLmFwcGxlLldlYkluc3BlY3RvclVJIl0gcGF0aEZvclJlc291cmNlOkAibG9j
YWxpemVkU3RyaW5ncyIgb2ZUeXBlOkAianMiXTsKLSAgICBpZiAocGF0aC5sZW5ndGgpCi0gICAg
ICAgIHJldHVybiBbW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoXSBhYnNvbHV0ZVN0cmluZ107
Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFtXS0luc3BlY3RvclZpZXdDb250
cm9sbGVyIFVSTEZvckluc3BlY3RvckFzc2V0OkAibG9jYWxpemVkU3RyaW5ncy5qcyJdLmFic29s
dXRlU3RyaW5nOwogfQogCiBTdHJpbmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NV
UkwoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423388</attachid>
            <date>2021-03-16 13:05:08 -0700</date>
            <delta_ts>2021-03-18 14:06:52 -0700</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-179904-20210316130507.patch</filename>
            <type>text/plain</type>
            <size>21783</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM3MmIxMmI0MzIxNGZhYmFl
ZDdiMDE1MDFmMTIxODk3OGVlYjgxNTAuLmMxNGVjYTEyZjMyZDMzZGVkNGNkZmI0YzFiOTQ2YTY5
MGJjNWI3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjEtMDMtMTYgIEJKIEJ1cmcg
IDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBsb2Fk
IGluc3BlY3RvciByZXNvdXJjZXMgdXNpbmcgYSBjdXN0b20gc2NoZW1lIGhhbmRsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTkwNAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA4ODcyMTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTG9hZCBXZWJJbnNwZWN0b3JVSSByZXNvdXJjZXMgdmlhIHRo
ZSBpbnNwZWN0b3ItcmVzb3VyY2U6Ly8gc2NoZW1lLgorICAgICAgICBNb3Zpbmcgb2ZmIG9mIGZp
bGU6Ly8gVVJMcyB3aWxsIGFsbG93IGZvciBhIHRpZ2h0ZXIgc2FuZGJveCBhbmQKKyAgICAgICAg
d2lsbCBmaXggdGhlIGxvbmdzdGFuZGluZyBpc3N1ZSB0aGF0IFdlYiBJbnNwZWN0b3IncyBzZXR0
aW5ncyBhcmUKKyAgICAgICAgcGFydCBvZiB0aGUgZmlsZTovLyBzY2hlbWUgYW5kIGNsZWFyZWQg
d2hlbiBTYWZhcmkgY2xlYXJzIHdlYnNpdGUgZGF0YS4KKworICAgICAgICBUaGlzIGFsc28gaGFz
IHRoZSBlZmZlY3Qgb2YgcmVzZXR0aW5nIFdlYiBJbnNwZWN0b3Igc2V0dGluZ3Mgc2luY2UKKyAg
ICAgICAgdGhleSBhcmUgbm8gbG9uZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZTovLy8gcHJv
dG9jb2wuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBpbnNwZWN0b3IgdGVzdHMgd2hp
Y2ggZXhlcmNpc2UgdGhpcyBjb2RlIHBhdGguCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0
OiBBZGRlZCBuZXcgZmlsZS4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291
cmNlVVJMU2NoZW1lSGFuZGxlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5tbTog
QWRkZWQuCisgICAgICAgICgtW1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyIHdl
YlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtXS0luc3BlY3RvclJlc291
cmNlVVJMU2NoZW1lSGFuZGxlciB3ZWJWaWV3OnN0b3BVUkxTY2hlbWVUYXNrOl0pOgorICAgICAg
ICBUcmFuc2xhdGUgdGhlIHJlcXVlc3QgVVJMIHRvIGEgYnVuZGxlIHJlc291cmNlIFVSTCwgcmVh
ZCB0aGUgZGF0YSwgYW5kIHNlbmQgYSByZXNwb25zZQorICAgICAgICB3aXRoIHRoZSBmaWxlIGRh
dGEuIFJldHVybiBhbiBlcnJvciBpZiB0aGUgZmlsZSBjb3VsZCBub3QgYmUgZm91bmQgb3IgcmVh
ZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3Rv
clZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9sbGVy
IHdlYlZpZXdDb25maWd1cmF0aW9uXSk6CisgICAgICAgICgrW1dLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIgVVJMRm9ySW5zcGVjdG9yUmVzb3VyY2U6XSk6CisgICAgICAgICgtW1dLSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRl
Y2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgQWxsb3cgbmF2aWdhdGlvbnMgdG8gVVJJcyB3aXRo
IHRoZSBpbnNwZWN0b3ItcmVzb3VyY2U6Ly8gc2NoZW1lLgorCisgICAgICAgICogVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJMKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclRlc3RQYWdlVVJMKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwpOgorICAgICAgICBVcGRhdGVk
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJJbnNwZWN0b3JVSUxvY2FsaXplZFN0cmluZ3NVUkwp
OgorICAgICAgICBVcGRhdGVkLgorCiAyMDIxLTAzLTE1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5v
cm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMzM4NDUpOiBFTUUgS2V5
c3lzdGVtIHBlcm1pc3Npb24gd2hlbiBNZWRpYVN0cmVhbSBpcyBkaXNhYmxlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IGFmZWZjMzJiMTYwNGViNjJjMmIyMGNiMWE4MmZiNDBhNTA3YzQyZjku
Ljg1Yzk0ODJkNjBmODdlNGE2MTUwMDcyYzc5Y2JlMTBjZDEwMmQ1MGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTQzMCw2ICs0MzAsNyBAQCBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0lu
c3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbQogCiBVSVByb2Nlc3MvSW5zcGVj
dG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQogVUlQcm9jZXNzL0luc3BlY3Rv
ci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KK1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dL
SW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tCiBVSVByb2Nlc3MvSW5zcGVjdG9y
L21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvSW5zcGVjdG9yL21h
Yy9XS0luc3BlY3RvcldLV2ViVmlldy5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVz
b3VyY2VVUkxTY2hlbWVIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ4YzBiNGZmYWZhYmJhZTNlYmRl
YmZjMDQ4MDliNjliN2Y5YWU0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIu
aApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFBMQVRGT1JNKE1BQykKKworI2lt
cG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1l
SGFuZGxlci5oPgorCisKK0Bwcm90b2NvbCBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyRGVsZWdh
dGU7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgV0tJbnNwZWN0b3JS
ZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPgor
QGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNw
ZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg3MjNlNzgyMDgwODBlZjg3ZGY0MTZjYWY4ODY5N2FiMmExZGJmYjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5z
cGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tCkBAIC0wLDAgKzEsMTAwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0luc3BlY3RvclJlc291cmNl
VVJMU2NoZW1lSGFuZGxlci5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0ICJMb2dn
aW5nLmgiCisjaW1wb3J0ICJXS1VSTFNjaGVtZVRhc2suaCIKKyNpbXBvcnQgPFdlYkNvcmUvTWlt
ZVR5cGVSZWdpc3RyeS5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKworQGltcGxlbWVu
dGF0aW9uIFdLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyIHsKKyAgICBOU09wZXJh
dGlvbiAqX2ZpbGVMb2FkT3BlcmF0aW9uOworICAgIE5TQnVuZGxlICpfY2FjaGVkQnVuZGxlOwor
fQorCisvLyBNQVJLIC0gV0tVUkxTY2hlbWVIYW5kbGVyIFByb3RvY29sCisKKy0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNj
aGVtZVRhc2s+KXVybFNjaGVtZVRhc2sKK3sKKyAgICBpZiAoIV9jYWNoZWRCdW5kbGUpIHsKKyAg
ICAgICAgX2NhY2hlZEJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNv
bS5hcHBsZS5XZWJJbnNwZWN0b3JVSSJdOworCisgICAgICAgIC8vIEl0IGlzIGFuIGVycm9yIGlm
IFdlYkluc3BlY3RvclVJIGhhcyBub3QgYWxyZWFkeSBiZWVuIHNvZnQtbGlua2VkIGJ5IHRoZSB0
aW1lCisgICAgICAgIC8vIHdlIGxvYWQgcmVzb3VyY2VzIGZyb20gaXQuIEFuZCBpZiBzb2Z0LWxp
bmtpbmcgZmFpbHMsIHdlIHNob3VsZG4ndCBzdGFydCBsb2Fkcy4KKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoX2NhY2hlZEJ1bmRsZSk7CisgICAgfQorCisgICAgX2ZpbGVMb2FkT3BlcmF0aW9uID0g
W05TQmxvY2tPcGVyYXRpb24gYmxvY2tPcGVyYXRpb25XaXRoQmxvY2s6XnsKKyAgICAgICAgX2Zp
bGVMb2FkT3BlcmF0aW9uID0gbmlsOworCisgICAgICAgIE5TVVJMICpyZXF1ZXN0VVJMID0gdXJs
U2NoZW1lVGFzay5yZXF1ZXN0LlVSTDsKKyAgICAgICAgTlNVUkwgKmZpbGVVUkxGb3JSZXF1ZXN0
ID0gW19jYWNoZWRCdW5kbGUgVVJMRm9yUmVzb3VyY2U6cmVxdWVzdFVSTC5yZWxhdGl2ZVBhdGgg
d2l0aEV4dGVuc2lvbjpAIiJdOworICAgICAgICBpZiAoIWZpbGVVUkxGb3JSZXF1ZXN0KSB7Cisg
ICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBmaW5kIFdlYiBJbnNwZWN0b3IgcmVzb3Vy
Y2U6ICVAIiwgcmVxdWVzdFVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBbdXJsU2No
ZW1lVGFzayBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU0NvY29h
RXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yRmlsZURvZXNOb3RFeGlzdCB1c2VySW5mbzpuaWxd
XTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIE5TRXJyb3IgKnJl
YWRFcnJvcjsKKyAgICAgICAgTlNEYXRhICpmaWxlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250
ZW50c09mVVJMOmZpbGVVUkxGb3JSZXF1ZXN0IG9wdGlvbnM6MCBlcnJvcjomcmVhZEVycm9yXTsK
KyAgICAgICAgaWYgKCFmaWxlRGF0YSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gcmVhZCBkYXRhIGZvciBXZWIgSW5zcGVjdG9yIHJlc291cmNlOiAlQCIsIHJlcXVlc3RVUkwu
YWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgW3VybFNjaGVtZVRhc2sgZGlkRmFpbFdpdGhF
cnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNDb2NvYUVycm9yRG9tYWluIGNvZGU6TlNV
UkxFcnJvclJlc291cmNlVW5hdmFpbGFibGUgdXNlckluZm86QHsKKyAgICAgICAgICAgICAgICBO
U1VuZGVybHlpbmdFcnJvcktleTogcmVhZEVycm9yLAorICAgICAgICAgICAgfV1dOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0g
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24oZmlsZVVSTEZv
clJlcXVlc3QucGF0aEV4dGVuc2lvbik7CisgICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAg
ICAgICBtaW1lVHlwZSA9IEAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIjsKKworICAgICAgICBO
U0hUVFBVUkxSZXNwb25zZSAqdXJsUmVzcG9uc2UgPSBbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9j
XSBpbml0V2l0aFVSTDp1cmxTY2hlbWVUYXNrLnJlcXVlc3QuVVJMIHN0YXR1c0NvZGU6MjAwIEhU
VFBWZXJzaW9uOm5pbCBoZWFkZXJGaWVsZHM6QHsKKyAgICAgICAgICAgIEAiQWNjZXNzLUNvbnRy
b2wtQWxsb3ctT3JpZ2luIjogQCIqIiwKKyAgICAgICAgICAgIEAiQ29udGVudC1MZW5ndGgiOiBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiV6dSIsIChzaXplX3QpZmlsZURhdGEubGVuZ3Ro
XSwKKyAgICAgICAgICAgIEAiQ29udGVudC1UeXBlIjogbWltZVR5cGUsCisgICAgICAgIH1dOwor
CisgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVSZXNwb25zZTp1cmxSZXNwb25zZV07
CisgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVEYXRhOmZpbGVEYXRhXTsKKyAgICAg
ICAgW3VybFNjaGVtZVRhc2sgZGlkRmluaXNoXTsKKyAgICB9XTsKKworICAgIFtbTlNPcGVyYXRp
b25RdWV1ZSBtYWluUXVldWVdIGFkZE9wZXJhdGlvbjpfZmlsZUxvYWRPcGVyYXRpb25dOworfQor
CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcFVSTFNjaGVtZVRhc2s6
KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRhc2sKK3sKKyAgICBbX2ZpbGVMb2FkT3Bl
cmF0aW9uIGNhbmNlbF07CisgICAgX2ZpbGVMb2FkT3BlcmF0aW9uID0gbmlsOworfQorCitAZW5k
CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5oCmluZGV4IDNhMzQ2ZDQyMWY4YTQyZDE3ZWU0NDRjZTE2NDQ0MDU1YzRjYWY1ZWMuLjhhMTNi
OTY5Mjk4ZDMwODRiNzhmMzFkM2NhNjNjMjhlNDIyNWEyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5oCkBAIC00Nyw2ICs0Nyw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tJbnNwZWN0b3JDb25m
aWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBpbnNwZWN0ZWRQYWdlOihOYWtlZFB0cjxXZWJLaXQ6
OldlYlBhZ2VQcm94eT4paW5zcGVjdGVkUGFnZTsKIAogKyAoQk9PTCl2aWV3SXNJbnNwZWN0b3JX
ZWJWaWV3OihOU1ZpZXcgKil2aWV3OworKyAoTlNVUkwgKiBfTnVsbGFibGUpVVJMRm9ySW5zcGVj
dG9yUmVzb3VyY2U6KE5TU3RyaW5nICopcmVzb3VyY2U7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250
cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3Bl
Y3RvclZpZXdDb250cm9sbGVyLm1tCmluZGV4IGU2NjU1OGNhOTUwNjNmODgxNzZhYzZmYjEzOTM4
NzhjNWZkMzlmNzkuLmQxM2JhMDBmM2U0MTQ3MzU2YjMzZTE5N2U4ZTRmYTg2NTg2MDI0ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw3ICsyOSw5IEBACiAj
aWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJBUElOYXZpZ2F0aW9uLmgiCisjaW1wb3J0ICJM
b2dnaW5nLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mby5oIgorI2ltcG9ydCAiV0tJbnNwZWN0b3JS
ZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbXBvcnQgIldLSW5zcGVjdG9yV0tXZWJWaWV3
LmgiCiAjaW1wb3J0ICJXS05hdmlnYXRpb25BY3Rpb24uaCIKICNpbXBvcnQgIldLTmF2aWdhdGlv
bkRlbGVnYXRlLmgiCkBAIC0zNywxNSArMzksMjEgQEAKICNpbXBvcnQgIldLUHJlZmVyZW5jZXNQ
cml2YXRlLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
VUlEZWxlZ2F0ZVByaXZhdGUuaCIKKyNpbXBvcnQgIldLVVJMU2NoZW1lSGFuZGxlci5oIgorI2lt
cG9ydCAiV0tVUkxTY2hlbWVUYXNrLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9u
UHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViSW5z
cGVjdG9yUHJveHkuaCIKICNpbXBvcnQgIldlYkluc3BlY3RvclV0aWxpdGllcy5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50
ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTWltZVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9WZXJzaW9uQ2hlY2tzLmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lt
cG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdLSW5z
cGVjdG9yUmVzb3VyY2VTY2hlbWUgPSBAImluc3BlY3Rvci1yZXNvdXJjZSI7CisKIEBpbnRlcmZh
Y2UgV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciAoKSA8V0tVSURlbGVnYXRlLCBXS05hdmlnYXRp
b25EZWxlZ2F0ZSwgV0tJbnNwZWN0b3JXS1dlYlZpZXdEZWxlZ2F0ZT4KIEBlbmQKIApAQCAtMTEw
LDcgKzExOCw5IEBAIC0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxXS0luc3BlY3RvclZpZXdDb250
cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiAKIC0gKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKil3
ZWJWaWV3Q29uZmlndXJhdGlvbgogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxXS0luc3BlY3RvclJl
c291cmNlVVJMU2NoZW1lSGFuZGxlcj4gaW5zcGVjdG9yU2NoZW1lSGFuZGxlciA9IGFkb3B0TlMo
W1tXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAg
IFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aW5zcGVjdG9yU2NoZW1lSGFuZGxl
ci5hdXRvcmVsZWFzZSgpIGZvclVSTFNjaGVtZTpXS0luc3BlY3RvclJlc291cmNlU2NoZW1lXTsK
IAogICAgIFdLUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gY29uZmlndXJhdGlvbi5nZXQoKS5w
cmVmZXJlbmNlczsKICAgICBwcmVmZXJlbmNlcy5fYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxz
ID0gWUVTOwpAQCAtMTYwLDYgKzE3MCwxMSBAQCArIChCT09MKXZpZXdJc0luc3BlY3RvcldlYlZp
ZXc6KE5TVmlldyAqKXZpZXcKICAgICByZXR1cm4gW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV0tJbnNw
ZWN0b3JXS1dlYlZpZXcgY2xhc3NdXTsKIH0KIAorKyAoTlNVUkwgKilVUkxGb3JJbnNwZWN0b3JS
ZXNvdXJjZTooTlNTdHJpbmcgKilyZXNvdXJjZQoreworICAgIHJldHVybiBbTlNVUkwgVVJMV2l0
aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAOi8vLyVAIiwgV0tJbnNwZWN0
b3JSZXNvdXJjZVNjaGVtZSwgcmVzb3VyY2VdXS5VUkxCeVN0YW5kYXJkaXppbmdQYXRoOworfQor
CiAvLyBNQVJLOiBXS1VJRGVsZWdhdGUgbWV0aG9kcwogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGdldFdpbmRvd0ZyYW1lV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShDR1JlY3QpKWNvbXBsZXRpb25IYW5kbGVyCkBAIC0yMzksNyArMjU0LDcgQEAgLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb246KFdLTmF2aWdhdGkKICAgICB9CiAKICAgICAvLyBBbGxvdyBsb2FkaW5nIG9mIHRoZSBt
YWluIGluc3BlY3RvciBmaWxlLgotICAgIGlmIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpp
c01haW5PclRlc3RJbnNwZWN0b3JQYWdlKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpKSB7
CisgICAgaWYgKFtuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9T
dHJpbmc6V0tJbnNwZWN0b3JSZXNvdXJjZVNjaGVtZV0pIHsKICAgICAgICAgZGVjaXNpb25IYW5k
bGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2Vi
SW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
bWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDg2MmEzOWFiZDFhNWYxZjJlY2U2Mjkz
M2MxZTBkNzMzMjFhZmM4YzYuLmJhYmEyZTgyNzM3Mzc2NzI5M2IzNDNkMzI3YmE1OTEwNjZlYjAw
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2Vi
SW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtNzc5LDQyICs3NzksMTcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKQogCiBTdHJpbmcg
V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKQogewotICAgIE5TQnVuZGxlICpi
dW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViSW5z
cGVjdG9yVUkiXTsKLSAgICBpZiAoIWJ1bmRsZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
Ci0gICAgTlNTdHJpbmcgKnBhdGggPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIk1haW4iIG9m
VHlwZTpAImh0bWwiXTsKLSAgICBBU1NFUlQocGF0aCAmJiBwYXRoLmxlbmd0aCk7Ci0gICAgaWYg
KCFwYXRoKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gW05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpwYXRoIGlzRGlyZWN0b3J5Ok5PXS5hYnNvbHV0ZVN0cmluZzsKKyAgICBy
ZXR1cm4gW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgVVJMRm9ySW5zcGVjdG9yUmVzb3VyY2U6
QCJNYWluLmh0bWwiXS5hYnNvbHV0ZVN0cmluZzsKIH0KIAogU3RyaW5nIFdlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JUZXN0UGFnZVVSTCgpCiB7Ci0gICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtO
U0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJJbnNwZWN0b3JVSSJd
OwotICAgIGlmICghYnVuZGxlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICAvLyBX
ZSBtaWdodCBub3QgaGF2ZSBhIFRlc3QuaHRtbCBpbiBQcm9kdWN0aW9uIGJ1aWxkcy4KLSAgICBO
U1N0cmluZyAqcGF0aCA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiVGVzdCIgb2ZUeXBlOkAi
aHRtbCJdOwotICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAg
cmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aCBpc0RpcmVjdG9yeTpOT10uYWJzb2x1
dGVTdHJpbmc7CisgICAgcmV0dXJuIFtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIFVSTEZvcklu
c3BlY3RvclJlc291cmNlOkAiVGVzdC5odG1sIl0uYWJzb2x1dGVTdHJpbmc7CiB9CiAKIFN0cmlu
ZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpCiB7Ci0gICAgTlNCdW5kbGUg
KmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJJ
bnNwZWN0b3JVSSJdOwotICAgIGlmICghYnVuZGxlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0KLSAgICBOU1N0cmluZyAqcGF0aCA9IGJ1bmRsZS5yZXNvdXJjZVBhdGg7Ci0gICAgQVNTRVJU
KHBhdGggJiYgcGF0aC5sZW5ndGgpOwotCi0gICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6cGF0aCBpc0RpcmVjdG9yeTpZRVNdLmFic29sdXRlU3RyaW5nOworICAgIHJldHVybiBbV0tJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlciBVUkxGb3JJbnNwZWN0b3JSZXNvdXJjZTpAIiJdLmFic29s
dXRlU3RyaW5nOwogfQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpzeXN0ZW1WZXJzaW9uUGxpc3Qo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZDM1YzQyZWIzMWQ4MzQ1Y2U5YWUwMTU1MDc4Y2RiZjMxYmNlNDAwZi4uYzI2ZmFjNjdmNWEy
Y2MyZWZjZDM2ZGQzMjQyY2ZhZjY5NjgxYjllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTI1LDYgKzE1MjUsNyBAQAogCQk5OTc5
NjVBMzI1MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1QTIyNTMxMjhD
NzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTc5Q0E1ODIzN0Y0OUYxMDAzOUVD
MDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1IC8qIF9XS0luc3BlY3Rv
clByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5OTk5NkE5RjI1MDA0QkNDMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRl
c3RpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
OTk2QTlEMjUwMDRCQ0IwMDRGNzU1OSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5QTdB
Q0U1MjYwMTI5MjIwMDZENTdGRCAvKiBXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlBN0FD
RTMyNjAxMjkxOTAwNkQ1N0ZEIC8qIFdLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVy
LmggKi87IH07CiAJCTk5QjE2NzU3MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRl
bnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OUIxNjc1ODI1MkJC
N0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjE2NzU1MjUyQkI3RTEwMDcz
MTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oICovOyB9OwogCQk5OUIxNjc1
QjI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjE2
NzVBMjUyQkJBREQwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5oICovOyB9OwpAQCAtNDkwMSw2ICs0OTAyLDggQEAKIAkJOTk5OTZBOUUyNTAwNEJDQjAw
NEY3NTU5IC8qIF9XS0luc3BlY3RvclRlc3RpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JUZXN0aW5nLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OTlCN0VEODI1NTBFNEE4MDBGNDUwQTQgLyogSW5zcGVjdG9yRXh0ZW5z
aW9uVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTlCN0Y0RjI1NTRCQTNGMDBGNDUw
QTQgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFQSUluc3BlY3RvckV4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk5QTdBQ0UzMjYwMTI5MTkwMDZENTdGRCAvKiBXS0luc3BlY3RvclJlc291
cmNlVVJMU2NoZW1lSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0luc3BlY3RvclJlc291cmNl
VVJMU2NoZW1lSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUE3QUNF
NDI2MDEyOTFBMDA2RDU3RkQgLyogV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFu
ZGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlCMTY3NTQyNTJCQjdFMDAw
NzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lv
bkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3Rv
ckV4dGVuc2lvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QjE2
NzU2MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjcwLDYgKzkyNzMsOCBAQAogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJQTVEMzUwNEQxRDc4RjBEMjAwNTEyNEE5IC8qIFJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5TWFjLm1tICovLAogCQkJCTFDQThCOTM1MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJ
bnNwZWN0b3JQcm94eU1hYy5tbSAqLywKKwkJCQk5OUE3QUNFMzI2MDEyOTE5MDA2RDU3RkQgLyog
V0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuaCAqLywKKwkJCQk5OUE3QUNFNDI2
MDEyOTFBMDA2RDU3RkQgLyogV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW0g
Ki8sCiAJCQkJOTk0QkFERjExRjdENzdFQTAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIuaCAqLywKIAkJCQk5OTRCQURGMjFGN0Q3N0VCMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5tbSAqLywKIAkJCQlBNTE4QjVEMDFGRTFENTVCMDBGOUZBMjggLyogV0tJ
bnNwZWN0b3JXS1dlYlZpZXcuaCAqLywKQEAgLTEyNjAyLDYgKzEyNjA3LDcgQEAKIAkJCQkwRjND
NzI1QjE5NkY2MDRFMDBBRUREMEMgLyogV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTQyOTNBNDE5NUE0M0RBMDAyNzgyQzcgLyogV0tJbnNwZWN0b3JOb2Rl
U2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFRTg0OUM4MTM2
OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTk5QTdBQ0U1MjYwMTI5MjIwMDZENTdGRCAvKiBXS0luc3BlY3RvclJlc291cmNlVVJMU2No
ZW1lSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk0QkFERjQxRjdENzgxNDAwQjU3MUU3
IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MThC
NUQyMUZFMUQ1NUIwMEY5RkEyOCAvKiBXS0luc3BlY3RvcldLV2ViVmlldy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkRENUUxMjkyMTBBREM3QjAwREI2MDEyIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCmluZGV4IDllNTVm
M2Q1OGExYTI4ZWU3N2Q1MGMwZGExY2E4ZjYwNTA2ZWJjYTYuLjA0YmUwYzlhZWNiM2RiNzc2YWYy
NzQzMGQwYmQ0ODFhZGMyYWRhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSS5oIgog
I2ltcG9ydCAiUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCIKKyNpbXBvcnQgIldLSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKIApAQCAtMzgsMTUgKzM5LDcgQEAg
Ym9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCiAKIHN0YXRpYyBTdHJpbmcgd2ViSW5zcGVj
dG9yVUlMb2NhbGl6ZWRTdHJpbmdzVVJMKCkKIHsKLSAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05T
QnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkluc3BlY3RvclVJIl07
Ci0gICAgaWYgKCFidW5kbGUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIE5TU3Ry
aW5nICpwYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJsb2NhbGl6ZWRTdHJpbmdzIiBv
ZlR5cGU6QCJqcyJdOwotICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
ICAgIAotICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGggaXNEaXJlY3Rvcnk6
Tk9dLmFic29sdXRlU3RyaW5nOworICAgIHJldHVybiBbV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ciBVUkxGb3JJbnNwZWN0b3JSZXNvdXJjZTpAImxvY2FsaXplZFN0cmluZ3MuanMiXS5hYnNvbHV0
ZVN0cmluZzsKIH0KIAogU3RyaW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdzVVJM
KCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423651</attachid>
            <date>2021-03-18 14:06:54 -0700</date>
            <delta_ts>2021-03-18 14:50:48 -0700</delta_ts>
            <desc>Patch v1.1 (for EWS)</desc>
            <filename>bug-179904-20210318140653.patch</filename>
            <type>text/plain</type>
            <size>22272</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5NzZkM2RhNjNiYjMyNWVh
NDgxYzBkY2Y3OWMwNmVkNGFlYmFjOTcuLjAzNDBmZGI1Y2QxOTYxZWM1OWYyNGNlMDA0MzUxNzI1
NjkzYmUyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjEtMDMtMTYgIEJKIEJ1cmcg
IDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBsb2Fk
IGluc3BlY3RvciByZXNvdXJjZXMgdXNpbmcgYSBjdXN0b20gc2NoZW1lIGhhbmRsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTkwNAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA4ODcyMTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYg
R2FyZW4uCisKKyAgICAgICAgTG9hZCBXZWJJbnNwZWN0b3JVSSByZXNvdXJjZXMgdmlhIHRoZSBp
bnNwZWN0b3ItcmVzb3VyY2U6Ly8gc2NoZW1lLgorICAgICAgICBNb3Zpbmcgb2ZmIG9mIGZpbGU6
Ly8gVVJMcyB3aWxsIGFsbG93IGZvciBhIHRpZ2h0ZXIgc2FuZGJveCBhbmQKKyAgICAgICAgd2ls
bCBmaXggdGhlIGxvbmdzdGFuZGluZyBpc3N1ZSB0aGF0IFdlYiBJbnNwZWN0b3IncyBzZXR0aW5n
cyBhcmUKKyAgICAgICAgcGFydCBvZiB0aGUgZmlsZTovLyBzY2hlbWUgYW5kIGNsZWFyZWQgd2hl
biBTYWZhcmkgY2xlYXJzIHdlYnNpdGUgZGF0YS4KKworICAgICAgICBUaGlzIGFsc28gaGFzIHRo
ZSBlZmZlY3Qgb2YgcmVzZXR0aW5nIFdlYiBJbnNwZWN0b3Igc2V0dGluZ3Mgc2luY2UKKyAgICAg
ICAgdGhleSBhcmUgbm8gbG9uZ2VyIGFzc29jaWF0ZWQgd2l0aCBmaWxlOi8vLy4KKworICAgICAg
ICBMb2FkaW5nIHZpYSB0aGlzIHNjaGVtZSBpcyBleGVyY2lzZWQgYnkgZXhpc3RpbmcgaW5zcGVj
dG9yIHRlc3RzLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDogQWRkZWQgbmV3IGZpbGUu
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRs
ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V2ViSW5zcGVjdG9yVUlNYWMubW0uCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW06IEFkZGVkLgorICAgICAgICAo
LVtXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlciB3ZWJWaWV3OnN0YXJ0VVJMU2No
ZW1lVGFzazpdKToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRs
ZXIgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgVHJhbnNsYXRlIHRoZSBy
ZXF1ZXN0IFVSTCB0byBhIGJ1bmRsZSByZXNvdXJjZSBVUkwsIHJlYWQgdGhlIGRhdGEsIGFuZCBz
ZW5kIGEgcmVzcG9uc2UKKyAgICAgICAgd2l0aCB0aGUgZmlsZSBkYXRhLiBSZXR1cm4gYW4gZXJy
b3IgaWYgdGhlIGZpbGUgY291bGQgbm90IGJlIGZvdW5kIG9yIHJlYWQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5t
bToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciB3ZWJWaWV3Q29uZmlndXJh
dGlvbl0pOgorICAgICAgICAoK1tXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIFVSTEZvckluc3Bl
Y3RvclJlc291cmNlOl0pOgorICAgICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIHdl
YlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6
CisgICAgICAgIEFsbG93IG5hdmlnYXRpb25zIHRvIFVSSXMgd2l0aCB0aGUgaW5zcGVjdG9yLXJl
c291cmNlOi8vIHNjaGVtZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6aW5zcGVjdG9yUGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjppbnNwZWN0b3JUZXN0UGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JCYXNlVVJMKToKKyAgICAgICAgVXBkYXRlZC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6d2ViSW5zcGVjdG9yVUlMb2NhbGl6ZWRTdHJpbmdzVVJMKToKKyAgICAgICAgVXBkYXRl
ZC4KKwogMjAyMS0wMy0xOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBlZGl0aW5nL3NlbGVjdGlvbi9jaGFyYWN0ZXItZ3JhbnVsYXJpdHkt
cmVjdC5odG1sIGZhaWxzIG9uIGNlcnRhaW4gaW50ZXJuYWwgY29uZmlndXJhdGlvbnMgYWZ0ZXIg
cjI3NDYxMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGQ0ZDJkMzNlNWU3MDM0NmViNGQzZmM2
YjNhMmM1MTczMTkxZWJhNTcuLjIwMzkwYTdlY2Q5YWIzNzBkZjI5MDMwZjhjYmFhZTBjOTRjYmEw
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQyOSw2ICs0MjksNyBAQCBVSVByb2Nlc3Mv
SW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbQog
CiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQog
VUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KK1VJUHJvY2Vz
cy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tCiBV
SVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCiBVSVBy
b2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvcldLV2ViVmlldy5tbQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3Vy
Y2VVUkxTY2hlbWVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
bWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE1
MDZlOTJiZjI3MTFjZDdhNGE4OTY4ZTQyMGE1NDJhODlmOGFjYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJj
ZVVSTFNjaGVtZUhhbmRsZXIuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFBM
QVRGT1JNKE1BQykKKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLVVJMU2NoZW1lSGFuZGxlci5oPgorCitAcHJvdG9jb2wgV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlckRlbGVnYXRlOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJm
YWNlIFdLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyIDogTlNPYmplY3QgPFdLVVJM
U2NoZW1lSGFuZGxlcj4KK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAv
LyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2No
ZW1lSGFuZGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjY0MzAxNDNkZDc0ZTgxOWJkYTdlNDM4NTA0YWJk
MDRhYzQ0MjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5tbQpAQCAtMCww
ICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tJ
bnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuaCIKKworI2lmIFBMQVRGT1JNKE1BQykK
KworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVUYXNrLmgiCisjaW1w
b3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisKK0BpbXBsZW1lbnRhdGlvbiBXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxl
ciB7CisgICAgUmV0YWluUHRyPE5TTWFwVGFibGU8aWQgPFdLVVJMU2NoZW1lVGFzaz4sIE5TT3Bl
cmF0aW9uICo+PiBfZmlsZUxvYWRPcGVyYXRpb25zOworICAgIFJldGFpblB0cjxOU0J1bmRsZT4g
X2NhY2hlZEJ1bmRsZTsKK30KKworLy8gTUFSSyAtIFdLVVJMU2NoZW1lSGFuZGxlciBQcm90b2Nv
bAorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVU
YXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cmxTY2hlbWVUYXNrCit7CisgICAgaWYgKCFfY2Fj
aGVkQnVuZGxlKSB7CisgICAgICAgIF9jYWNoZWRCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0
aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViSW5zcGVjdG9yVUkiXTsKKworICAgICAgICAvLyBJ
dCBpcyBhbiBlcnJvciBpZiBXZWJJbnNwZWN0b3JVSSBoYXMgbm90IGFscmVhZHkgYmVlbiBzb2Z0
LWxpbmtlZCBieSB0aGUgdGltZQorICAgICAgICAvLyB3ZSBsb2FkIHJlc291cmNlcyBmcm9tIGl0
LiBBbmQgaWYgc29mdC1saW5raW5nIGZhaWxzLCB3ZSBzaG91bGRuJ3Qgc3RhcnQgbG9hZHMuCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKF9jYWNoZWRCdW5kbGUpOworICAgIH0KKworICAgIGlmICgh
X2ZpbGVMb2FkT3BlcmF0aW9ucykKKyAgICAgICAgX2ZpbGVMb2FkT3BlcmF0aW9ucyA9IFtbTlNN
YXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlPcHRpb25zOk5TUG9pbnRlckZ1bmN0aW9uc1N0cm9u
Z01lbW9yeSB2YWx1ZU9wdGlvbnM6TlNQb2ludGVyRnVuY3Rpb25zU3Ryb25nTWVtb3J5IGNhcGFj
aXR5OjVdOworCisgICAgTlNCbG9ja09wZXJhdGlvbiAqb3BlcmF0aW9uID0gW05TQmxvY2tPcGVy
YXRpb24gYmxvY2tPcGVyYXRpb25XaXRoQmxvY2s6XnsKKyAgICAgICAgW19maWxlTG9hZE9wZXJh
dGlvbnMgcmVtb3ZlT2JqZWN0Rm9yS2V5OnVybFNjaGVtZVRhc2tdOworCisgICAgICAgIE5TVVJM
ICpyZXF1ZXN0VVJMID0gdXJsU2NoZW1lVGFzay5yZXF1ZXN0LlVSTDsKKyAgICAgICAgTlNVUkwg
KmZpbGVVUkxGb3JSZXF1ZXN0ID0gW19jYWNoZWRCdW5kbGUgVVJMRm9yUmVzb3VyY2U6cmVxdWVz
dFVSTC5yZWxhdGl2ZVBhdGggd2l0aEV4dGVuc2lvbjpAIiJdOworICAgICAgICBpZiAoIWZpbGVV
UkxGb3JSZXF1ZXN0KSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBmaW5kIFdl
YiBJbnNwZWN0b3IgcmVzb3VyY2U6ICVAIiwgcmVxdWVzdFVSTC5hYnNvbHV0ZVN0cmluZyk7Cisg
ICAgICAgICAgICBbdXJsU2NoZW1lVGFzayBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9y
V2l0aERvbWFpbjpOU0NvY29hRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yRmlsZURvZXNOb3RF
eGlzdCB1c2VySW5mbzpuaWxdXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIE5TRXJyb3IgKnJlYWRFcnJvcjsKKyAgICAgICAgTlNEYXRhICpmaWxlRGF0YSA9IFtO
U0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmZpbGVVUkxGb3JSZXF1ZXN0IG9wdGlvbnM6MCBl
cnJvcjomcmVhZEVycm9yXTsKKyAgICAgICAgaWYgKCFmaWxlRGF0YSkgeworICAgICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gcmVhZCBkYXRhIGZvciBXZWIgSW5zcGVjdG9yIHJlc291cmNl
OiAlQCIsIHJlcXVlc3RVUkwuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgW3VybFNjaGVt
ZVRhc2sgZGlkRmFpbFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNDb2NvYUVy
cm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvclJlc291cmNlVW5hdmFpbGFibGUgdXNlckluZm86QHsK
KyAgICAgICAgICAgICAgICBOU1VuZGVybHlpbmdFcnJvcktleTogcmVhZEVycm9yLAorICAgICAg
ICAgICAgfV1dOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTlNT
dHJpbmcgKm1pbWVUeXBlID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JF
eHRlbnNpb24oZmlsZVVSTEZvclJlcXVlc3QucGF0aEV4dGVuc2lvbik7CisgICAgICAgIGlmICgh
bWltZVR5cGUpCisgICAgICAgICAgICBtaW1lVHlwZSA9IEAiYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtIjsKKworICAgICAgICBOU0hUVFBVUkxSZXNwb25zZSAqdXJsUmVzcG9uc2UgPSBbW05TSFRU
UFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmxTY2hlbWVUYXNrLnJlcXVlc3QuVVJM
IHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOm5pbCBoZWFkZXJGaWVsZHM6QHsKKyAgICAgICAg
ICAgIEAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIjogQCIqIiwKKyAgICAgICAgICAgIEAi
Q29udGVudC1MZW5ndGgiOiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiV6dSIsIChzaXpl
X3QpZmlsZURhdGEubGVuZ3RoXSwKKyAgICAgICAgICAgIEAiQ29udGVudC1UeXBlIjogbWltZVR5
cGUsCisgICAgICAgIH1dOworCisgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVSZXNw
b25zZTp1cmxSZXNwb25zZV07CisgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVEYXRh
OmZpbGVEYXRhXTsKKyAgICAgICAgW3VybFNjaGVtZVRhc2sgZGlkRmluaXNoXTsKKyAgICB9XTsK
KyAgICAKKyAgICBbX2ZpbGVMb2FkT3BlcmF0aW9ucyBzZXRPYmplY3Q6b3BlcmF0aW9uIGZvcktl
eTp1cmxTY2hlbWVUYXNrXTsKKyAgICBbW05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXSBhZGRP
cGVyYXRpb246b3BlcmF0aW9uXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cmxTY2hlbWVU
YXNrCit7CisgICAgaWYgKE5TT3BlcmF0aW9uICpvcGVyYXRpb24gPSBbX2ZpbGVMb2FkT3BlcmF0
aW9ucyBvYmplY3RGb3JLZXk6dXJsU2NoZW1lVGFza10pIHsKKyAgICAgICAgW29wZXJhdGlvbiBj
YW5jZWxdOworICAgICAgICBbX2ZpbGVMb2FkT3BlcmF0aW9ucyByZW1vdmVPYmplY3RGb3JLZXk6
dXJsU2NoZW1lVGFza107CisgICAgfQorfQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dL
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCmluZGV4IDNhMzQ2ZDQyMWY4YTQy
ZDE3ZWU0NDRjZTE2NDQ0MDU1YzRjYWY1ZWMuLjhhMTNiOTY5Mjk4ZDMwODRiNzhmMzFkM2NhNjNj
MjhlNDIyNWEyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCkBAIC00Nyw2
ICs0Nyw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDb25maWd1cmF0aW9uOihfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlv
biBpbnNwZWN0ZWRQYWdlOihOYWtlZFB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4paW5zcGVjdGVk
UGFnZTsKIAogKyAoQk9PTCl2aWV3SXNJbnNwZWN0b3JXZWJWaWV3OihOU1ZpZXcgKil2aWV3Owor
KyAoTlNVUkwgKiBfTnVsbGFibGUpVVJMRm9ySW5zcGVjdG9yUmVzb3VyY2U6KE5TU3RyaW5nICop
cmVzb3VyY2U7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCmlu
ZGV4IGU2NjU1OGNhOTUwNjNmODgxNzZhYzZmYjEzOTM4NzhjNWZkMzlmNzkuLmQxM2JhMDBmM2U0
MTQ3MzU2YjMzZTE5N2U4ZTRmYTg2NTg2MDI0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOSw3ICsyOSw5IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1w
b3J0ICJBUElOYXZpZ2F0aW9uLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJXS0Zy
YW1lSW5mby5oIgorI2ltcG9ydCAiV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIu
aCIKICNpbXBvcnQgIldLSW5zcGVjdG9yV0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS05hdmlnYXRp
b25BY3Rpb24uaCIKICNpbXBvcnQgIldLTmF2aWdhdGlvbkRlbGVnYXRlLmgiCkBAIC0zNywxNSAr
MzksMjEgQEAKICNpbXBvcnQgIldLUHJlZmVyZW5jZXNQcml2YXRlLmgiCiAjaW1wb3J0ICJXS1By
b2Nlc3NQb29sSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVUlEZWxlZ2F0ZVByaXZhdGUuaCIKKyNp
bXBvcnQgIldLVVJMU2NoZW1lSGFuZGxlci5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVUYXNrLmgi
CiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tX
ZWJWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNpbXBvcnQg
IldlYkluc3BlY3RvclV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1w
b3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNv
cmUvTWltZVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9WZXJzaW9uQ2hlY2tzLmg+
CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+
CiAKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdLSW5zcGVjdG9yUmVzb3VyY2VTY2hlbWUgPSBA
Imluc3BlY3Rvci1yZXNvdXJjZSI7CisKIEBpbnRlcmZhY2UgV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlciAoKSA8V0tVSURlbGVnYXRlLCBXS05hdmlnYXRpb25EZWxlZ2F0ZSwgV0tJbnNwZWN0b3JX
S1dlYlZpZXdEZWxlZ2F0ZT4KIEBlbmQKIApAQCAtMTEwLDcgKzExOCw5IEBAIC0gKHZvaWQpc2V0
RGVsZWdhdGU6KGlkIDxXS0luc3BlY3RvclZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRl
CiAKIC0gKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKil3ZWJWaWV3Q29uZmlndXJhdGlvbgogewot
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIFJldGFpblB0cjxXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlcj4g
aW5zcGVjdG9yU2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tXS0luc3BlY3RvclJlc291cmNlVVJM
U2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNj
aGVtZUhhbmRsZXI6aW5zcGVjdG9yU2NoZW1lSGFuZGxlci5hdXRvcmVsZWFzZSgpIGZvclVSTFNj
aGVtZTpXS0luc3BlY3RvclJlc291cmNlU2NoZW1lXTsKIAogICAgIFdLUHJlZmVyZW5jZXMgKnBy
ZWZlcmVuY2VzID0gY29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlczsKICAgICBwcmVmZXJl
bmNlcy5fYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzID0gWUVTOwpAQCAtMTYwLDYgKzE3MCwx
MSBAQCArIChCT09MKXZpZXdJc0luc3BlY3RvcldlYlZpZXc6KE5TVmlldyAqKXZpZXcKICAgICBy
ZXR1cm4gW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV0tJbnNwZWN0b3JXS1dlYlZpZXcgY2xhc3NdXTsK
IH0KIAorKyAoTlNVUkwgKilVUkxGb3JJbnNwZWN0b3JSZXNvdXJjZTooTlNTdHJpbmcgKilyZXNv
dXJjZQoreworICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIiVAOi8vLyVAIiwgV0tJbnNwZWN0b3JSZXNvdXJjZVNjaGVtZSwgcmVzb3Vy
Y2VdXS5VUkxCeVN0YW5kYXJkaXppbmdQYXRoOworfQorCiAvLyBNQVJLOiBXS1VJRGVsZWdhdGUg
bWV0aG9kcwogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGdldFdpbmRv
d0ZyYW1lV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShDR1JlY3QpKWNvbXBsZXRpb25I
YW5kbGVyCkBAIC0yMzksNyArMjU0LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGkKICAgICB9
CiAKICAgICAvLyBBbGxvdyBsb2FkaW5nIG9mIHRoZSBtYWluIGluc3BlY3RvciBmaWxlLgotICAg
IGlmIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojppc01haW5PclRlc3RJbnNwZWN0b3JQYWdl
KG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpKSB7CisgICAgaWYgKFtuYXZpZ2F0aW9uQWN0
aW9uLnJlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6V0tJbnNwZWN0b3JSZXNvdXJj
ZVNjaGVtZV0pIHsKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5TWFj
Lm1tCmluZGV4IDg2MmEzOWFiZDFhNWYxZjJlY2U2MjkzM2MxZTBkNzMzMjFhZmM4YzYuLmJhYmEy
ZTgyNzM3Mzc2NzI5M2IzNDNkMzI3YmE1OTEwNjZlYjAwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94
eU1hYy5tbQpAQCAtNzc5LDQyICs3NzksMTcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1TdGFydFdpbmRvd0RyYWcoKQogCiBTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3Bl
Y3RvclBhZ2VVUkwoKQogewotICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxl
V2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViSW5zcGVjdG9yVUkiXTsKLSAgICBpZiAoIWJ1
bmRsZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgTlNTdHJpbmcgKnBhdGggPSBb
YnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIk1haW4iIG9mVHlwZTpAImh0bWwiXTsKLSAgICBBU1NF
UlQocGF0aCAmJiBwYXRoLmxlbmd0aCk7Ci0gICAgaWYgKCFwYXRoKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoIGlzRGly
ZWN0b3J5Ok5PXS5hYnNvbHV0ZVN0cmluZzsKKyAgICByZXR1cm4gW1dLSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIgVVJMRm9ySW5zcGVjdG9yUmVzb3VyY2U6QCJNYWluLmh0bWwiXS5hYnNvbHV0ZVN0
cmluZzsKIH0KIAogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JUZXN0UGFnZVVS
TCgpCiB7Ci0gICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRp
ZmllcjpAImNvbS5hcHBsZS5XZWJJbnNwZWN0b3JVSSJdOwotICAgIGlmICghYnVuZGxlKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICAvLyBXZSBtaWdodCBub3QgaGF2ZSBhIFRlc3Qu
aHRtbCBpbiBQcm9kdWN0aW9uIGJ1aWxkcy4KLSAgICBOU1N0cmluZyAqcGF0aCA9IFtidW5kbGUg
cGF0aEZvclJlc291cmNlOkAiVGVzdCIgb2ZUeXBlOkAiaHRtbCJdOwotICAgIGlmICghcGF0aCkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6cGF0aCBpc0RpcmVjdG9yeTpOT10uYWJzb2x1dGVTdHJpbmc7CisgICAgcmV0dXJuIFtX
S0luc3BlY3RvclZpZXdDb250cm9sbGVyIFVSTEZvckluc3BlY3RvclJlc291cmNlOkAiVGVzdC5o
dG1sIl0uYWJzb2x1dGVTdHJpbmc7CiB9CiAKIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5z
cGVjdG9yQmFzZVVSTCgpCiB7Ci0gICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5k
bGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJJbnNwZWN0b3JVSSJdOwotICAgIGlmICgh
YnVuZGxlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBOU1N0cmluZyAqcGF0aCA9
IGJ1bmRsZS5yZXNvdXJjZVBhdGg7Ci0gICAgQVNTRVJUKHBhdGggJiYgcGF0aC5sZW5ndGgpOwot
Ci0gICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aCBpc0RpcmVjdG9yeTpZRVNd
LmFic29sdXRlU3RyaW5nOworICAgIHJldHVybiBbV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBV
UkxGb3JJbnNwZWN0b3JSZXNvdXJjZTpAIiJdLmFic29sdXRlU3RyaW5nOwogfQogCiBzdGF0aWMg
TlNEaWN0aW9uYXJ5ICpzeXN0ZW1WZXJzaW9uUGxpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjA0M2IwNmI1YWM2ZGUzNzQzYTVj
NzdhMjgyYTE0NTJlNWMzZTI0MC4uNzNiYWJkMDE0ZWJkYjZmYWQ1MjBkNTJmMzBkZmM4NDcwY2Fk
NWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNTIyLDYgKzE1MjIsNyBAQAogCQk5OTc5NjVBMzI1MzEyOEM3MDBCMzFBRTMgLyog
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1QTIyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbkhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5OTc5Q0E1ODIzN0Y0OUYxMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OUNB
NTcyMzdGNDlGMDAwMzlFQzA1IC8qIF9XS0luc3BlY3RvclByaXZhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTk5NkE5RjI1MDA0QkNDMDA0
Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5OTk2QTlEMjUwMDRCQ0IwMDRGNzU1OSAv
KiBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5QTdBQ0U1MjYwMTI5MjIwMDZENTdGRCAvKiBX
S0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlBN0FDRTMyNjAxMjkxOTAwNkQ1N0ZEIC8qIFdL
SW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmggKi87IH07CiAJCTk5QjE2NzU3MjUy
QkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAv
KiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5OUIxNjc1ODI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5QjE2NzU1MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRl
bnNpb25JbnRlcm5hbC5oICovOyB9OwogCQk5OUIxNjc1QjI1MkJCQUREMDA3MzE0MEUgLyogV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjE2NzVBMjUyQkJBREQwMDczMTQwRSAvKiBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oICovOyB9OwpAQCAtNDg5NCw2
ICs0ODk1LDggQEAKIAkJOTk5OTZBOUUyNTAwNEJDQjAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclRl
c3RpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNw
ZWN0b3JUZXN0aW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTlCN0VEODI1
NTBFNEE4MDBGNDUwQTQgLyogSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OTlCN0Y0RjI1NTRCQTNGMDBGNDUwQTQgLyogQVBJSW5zcGVjdG9yRXh0ZW5z
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUluc3BlY3Rv
ckV4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QTdBQ0UzMjYw
MTI5MTkwMDZENTdGRCAvKiBXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUE3QUNFNDI2MDEyOTFBMDA2RDU3RkQgLyogV0tJ
bnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTlCMTY3NTQyNTJCQjdFMDAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JF
eHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlCMTY3NTUyNTJCQjdF
MTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QjE2NzU2MjUyQkI3RTEwMDczMTQwRSAvKiBf
V0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC05MjU5LDYgKzkyNjIsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTVEMzUwNEQx
RDc4RjBEMjAwNTEyNEE5IC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tICovLAogCQkJ
CTFDQThCOTM1MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSAqLywK
KwkJCQk5OUE3QUNFMzI2MDEyOTE5MDA2RDU3RkQgLyogV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNj
aGVtZUhhbmRsZXIuaCAqLywKKwkJCQk5OUE3QUNFNDI2MDEyOTFBMDA2RDU3RkQgLyogV0tJbnNw
ZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW0gKi8sCiAJCQkJOTk0QkFERjExRjdENzdF
QTAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCAqLywKIAkJCQk5OTRCQURG
MjFGN0Q3N0VCMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSAqLywKIAkJ
CQlBNTE4QjVEMDFGRTFENTVCMDBGOUZBMjggLyogV0tJbnNwZWN0b3JXS1dlYlZpZXcuaCAqLywK
QEAgLTEyNTkwLDYgKzEyNTk1LDcgQEAKIAkJCQkwRjNDNzI1QjE5NkY2MDRFMDBBRUREMEMgLyog
V0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTQyOTNBNDE5
NUE0M0RBMDAyNzgyQzcgLyogV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTZFRTg0OUM4MTM2OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3Bl
Y3RvclByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QTdBQ0U1MjYwMTI5MjIwMDZE
NTdGRCAvKiBXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTk0QkFERjQxRjdENzgxNDAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MThCNUQyMUZFMUQ1NUIwMEY5RkEyOCAvKiBX
S0luc3BlY3RvcldLV2ViVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRENUUxMjkyMTBBREM3
QjAwREI2MDEyIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJ
bnNwZWN0b3JVSU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvbWFj
L1dlYkluc3BlY3RvclVJTWFjLm1tCmluZGV4IDllNTVmM2Q1OGExYTI4ZWU3N2Q1MGMwZGExY2E4
ZjYwNTA2ZWJjYTYuLjA0YmUwYzlhZWNiM2RiNzc2YWYyNzQzMGQwYmQ0ODFhZGMyYWRhZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3Bl
Y3RvclVJTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvbWFj
L1dlYkluc3BlY3RvclVJTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSS5oIgogI2ltcG9ydCAiUmVtb3RlV2ViSW5zcGVj
dG9yVUkuaCIKKyNpbXBvcnQgIldLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCIKIAogI2lmIFBM
QVRGT1JNKE1BQykKIApAQCAtMzgsMTUgKzM5LDcgQEAgYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2Fu
U2F2ZSgpCiAKIHN0YXRpYyBTdHJpbmcgd2ViSW5zcGVjdG9yVUlMb2NhbGl6ZWRTdHJpbmdzVVJM
KCkKIHsKLSAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlm
aWVyOkAiY29tLmFwcGxlLldlYkluc3BlY3RvclVJIl07Ci0gICAgaWYgKCFidW5kbGUpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIE5TU3RyaW5nICpwYXRoID0gW2J1bmRsZSBwYXRo
Rm9yUmVzb3VyY2U6QCJsb2NhbGl6ZWRTdHJpbmdzIiBvZlR5cGU6QCJqcyJdOwotICAgIGlmICgh
cGF0aCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIAotICAgIHJldHVybiBbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOnBhdGggaXNEaXJlY3Rvcnk6Tk9dLmFic29sdXRlU3RyaW5nOworICAg
IHJldHVybiBbV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBVUkxGb3JJbnNwZWN0b3JSZXNvdXJj
ZTpAImxvY2FsaXplZFN0cmluZ3MuanMiXS5hYnNvbHV0ZVN0cmluZzsKIH0KIAogU3RyaW5nIFdl
Ykluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3QK
</data>
<flag name="commit-queue"
          id="443107"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423656</attachid>
            <date>2021-03-18 14:23:56 -0700</date>
            <delta_ts>2021-03-18 16:20:59 -0700</delta_ts>
            <desc>Patch v1.2 (for EWS)</desc>
            <filename>bug-179904-20210318142355.patch</filename>
            <type>text/plain</type>
            <size>21789</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5NzZkM2RhNjNiYjMyNWVh
NDgxYzBkY2Y3OWMwNmVkNGFlYmFjOTcuLjAzNDBmZGI1Y2QxOTYxZWM1OWYyNGNlMDA0MzUxNzI1
NjkzYmUyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjEtMDMtMTYgIEJKIEJ1cmcg
IDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBsb2Fk
IGluc3BlY3RvciByZXNvdXJjZXMgdXNpbmcgYSBjdXN0b20gc2NoZW1lIGhhbmRsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTkwNAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA4ODcyMTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYg
R2FyZW4uCisKKyAgICAgICAgTG9hZCBXZWJJbnNwZWN0b3JVSSByZXNvdXJjZXMgdmlhIHRoZSBp
bnNwZWN0b3ItcmVzb3VyY2U6Ly8gc2NoZW1lLgorICAgICAgICBNb3Zpbmcgb2ZmIG9mIGZpbGU6
Ly8gVVJMcyB3aWxsIGFsbG93IGZvciBhIHRpZ2h0ZXIgc2FuZGJveCBhbmQKKyAgICAgICAgd2ls
bCBmaXggdGhlIGxvbmdzdGFuZGluZyBpc3N1ZSB0aGF0IFdlYiBJbnNwZWN0b3IncyBzZXR0aW5n
cyBhcmUKKyAgICAgICAgcGFydCBvZiB0aGUgZmlsZTovLyBzY2hlbWUgYW5kIGNsZWFyZWQgd2hl
biBTYWZhcmkgY2xlYXJzIHdlYnNpdGUgZGF0YS4KKworICAgICAgICBUaGlzIGFsc28gaGFzIHRo
ZSBlZmZlY3Qgb2YgcmVzZXR0aW5nIFdlYiBJbnNwZWN0b3Igc2V0dGluZ3Mgc2luY2UKKyAgICAg
ICAgdGhleSBhcmUgbm8gbG9uZ2VyIGFzc29jaWF0ZWQgd2l0aCBmaWxlOi8vLy4KKworICAgICAg
ICBMb2FkaW5nIHZpYSB0aGlzIHNjaGVtZSBpcyBleGVyY2lzZWQgYnkgZXhpc3RpbmcgaW5zcGVj
dG9yIHRlc3RzLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDogQWRkZWQgbmV3IGZpbGUu
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRs
ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V2ViSW5zcGVjdG9yVUlNYWMubW0uCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW06IEFkZGVkLgorICAgICAgICAo
LVtXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlciB3ZWJWaWV3OnN0YXJ0VVJMU2No
ZW1lVGFzazpdKToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRs
ZXIgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgVHJhbnNsYXRlIHRoZSBy
ZXF1ZXN0IFVSTCB0byBhIGJ1bmRsZSByZXNvdXJjZSBVUkwsIHJlYWQgdGhlIGRhdGEsIGFuZCBz
ZW5kIGEgcmVzcG9uc2UKKyAgICAgICAgd2l0aCB0aGUgZmlsZSBkYXRhLiBSZXR1cm4gYW4gZXJy
b3IgaWYgdGhlIGZpbGUgY291bGQgbm90IGJlIGZvdW5kIG9yIHJlYWQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5t
bToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciB3ZWJWaWV3Q29uZmlndXJh
dGlvbl0pOgorICAgICAgICAoK1tXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIFVSTEZvckluc3Bl
Y3RvclJlc291cmNlOl0pOgorICAgICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIHdl
YlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6
CisgICAgICAgIEFsbG93IG5hdmlnYXRpb25zIHRvIFVSSXMgd2l0aCB0aGUgaW5zcGVjdG9yLXJl
c291cmNlOi8vIHNjaGVtZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6aW5zcGVjdG9yUGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjppbnNwZWN0b3JUZXN0UGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JCYXNlVVJMKToKKyAgICAgICAgVXBkYXRlZC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6d2ViSW5zcGVjdG9yVUlMb2NhbGl6ZWRTdHJpbmdzVVJMKToKKyAgICAgICAgVXBkYXRl
ZC4KKwogMjAyMS0wMy0xOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBlZGl0aW5nL3NlbGVjdGlvbi9jaGFyYWN0ZXItZ3JhbnVsYXJpdHkt
cmVjdC5odG1sIGZhaWxzIG9uIGNlcnRhaW4gaW50ZXJuYWwgY29uZmlndXJhdGlvbnMgYWZ0ZXIg
cjI3NDYxMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGQ0ZDJkMzNlNWU3MDM0NmViNGQzZmM2
YjNhMmM1MTczMTkxZWJhNTcuLjIwMzkwYTdlY2Q5YWIzNzBkZjI5MDMwZjhjYmFhZTBjOTRjYmEw
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQyOSw2ICs0MjksNyBAQCBVSVByb2Nlc3Mv
SW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbQog
CiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQog
VUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KK1VJUHJvY2Vz
cy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tCiBV
SVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCiBVSVBy
b2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvcldLV2ViVmlldy5tbQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3Vy
Y2VVUkxTY2hlbWVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
bWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE1
MDZlOTJiZjI3MTFjZDdhNGE4OTY4ZTQyMGE1NDJhODlmOGFjYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJj
ZVVSTFNjaGVtZUhhbmRsZXIuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFBM
QVRGT1JNKE1BQykKKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLVVJMU2NoZW1lSGFuZGxlci5oPgorCitAcHJvdG9jb2wgV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlckRlbGVnYXRlOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJm
YWNlIFdLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyIDogTlNPYmplY3QgPFdLVVJM
U2NoZW1lSGFuZGxlcj4KK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAv
LyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2No
ZW1lSGFuZGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjY0MzAxNDNkZDc0ZTgxOWJkYTdlNDM4NTA0YWJk
MDRhYzQ0MjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5tbQpAQCAtMCww
ICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tJ
bnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuaCIKKworI2lmIFBMQVRGT1JNKE1BQykK
KworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVUYXNrLmgiCisjaW1w
b3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisKK0BpbXBsZW1lbnRhdGlvbiBXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxl
ciB7CisgICAgUmV0YWluUHRyPE5TTWFwVGFibGU8aWQgPFdLVVJMU2NoZW1lVGFzaz4sIE5TT3Bl
cmF0aW9uICo+PiBfZmlsZUxvYWRPcGVyYXRpb25zOworICAgIFJldGFpblB0cjxOU0J1bmRsZT4g
X2NhY2hlZEJ1bmRsZTsKK30KKworLy8gTUFSSyAtIFdLVVJMU2NoZW1lSGFuZGxlciBQcm90b2Nv
bAorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVU
YXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cmxTY2hlbWVUYXNrCit7CisgICAgaWYgKCFfY2Fj
aGVkQnVuZGxlKSB7CisgICAgICAgIF9jYWNoZWRCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0
aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViSW5zcGVjdG9yVUkiXTsKKworICAgICAgICAvLyBJ
dCBpcyBhbiBlcnJvciBpZiBXZWJJbnNwZWN0b3JVSSBoYXMgbm90IGFscmVhZHkgYmVlbiBzb2Z0
LWxpbmtlZCBieSB0aGUgdGltZQorICAgICAgICAvLyB3ZSBsb2FkIHJlc291cmNlcyBmcm9tIGl0
LiBBbmQgaWYgc29mdC1saW5raW5nIGZhaWxzLCB3ZSBzaG91bGRuJ3Qgc3RhcnQgbG9hZHMuCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKF9jYWNoZWRCdW5kbGUpOworICAgIH0KKworICAgIGlmICgh
X2ZpbGVMb2FkT3BlcmF0aW9ucykKKyAgICAgICAgX2ZpbGVMb2FkT3BlcmF0aW9ucyA9IFtbTlNN
YXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlPcHRpb25zOk5TUG9pbnRlckZ1bmN0aW9uc1N0cm9u
Z01lbW9yeSB2YWx1ZU9wdGlvbnM6TlNQb2ludGVyRnVuY3Rpb25zU3Ryb25nTWVtb3J5IGNhcGFj
aXR5OjVdOworCisgICAgTlNCbG9ja09wZXJhdGlvbiAqb3BlcmF0aW9uID0gW05TQmxvY2tPcGVy
YXRpb24gYmxvY2tPcGVyYXRpb25XaXRoQmxvY2s6XnsKKyAgICAgICAgW19maWxlTG9hZE9wZXJh
dGlvbnMgcmVtb3ZlT2JqZWN0Rm9yS2V5OnVybFNjaGVtZVRhc2tdOworCisgICAgICAgIE5TVVJM
ICpyZXF1ZXN0VVJMID0gdXJsU2NoZW1lVGFzay5yZXF1ZXN0LlVSTDsKKyAgICAgICAgTlNVUkwg
KmZpbGVVUkxGb3JSZXF1ZXN0ID0gW19jYWNoZWRCdW5kbGUgVVJMRm9yUmVzb3VyY2U6cmVxdWVz
dFVSTC5yZWxhdGl2ZVBhdGggd2l0aEV4dGVuc2lvbjpAIiJdOworICAgICAgICBpZiAoIWZpbGVV
UkxGb3JSZXF1ZXN0KSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBmaW5kIFdl
YiBJbnNwZWN0b3IgcmVzb3VyY2U6ICVAIiwgcmVxdWVzdFVSTC5hYnNvbHV0ZVN0cmluZyk7Cisg
ICAgICAgICAgICBbdXJsU2NoZW1lVGFzayBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9y
V2l0aERvbWFpbjpOU0NvY29hRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yRmlsZURvZXNOb3RF
eGlzdCB1c2VySW5mbzpuaWxdXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIE5TRXJyb3IgKnJlYWRFcnJvcjsKKyAgICAgICAgTlNEYXRhICpmaWxlRGF0YSA9IFtO
U0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmZpbGVVUkxGb3JSZXF1ZXN0IG9wdGlvbnM6MCBl
cnJvcjomcmVhZEVycm9yXTsKKyAgICAgICAgaWYgKCFmaWxlRGF0YSkgeworICAgICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gcmVhZCBkYXRhIGZvciBXZWIgSW5zcGVjdG9yIHJlc291cmNl
OiAlQCIsIHJlcXVlc3RVUkwuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgW3VybFNjaGVt
ZVRhc2sgZGlkRmFpbFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNDb2NvYUVy
cm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvclJlc291cmNlVW5hdmFpbGFibGUgdXNlckluZm86QHsK
KyAgICAgICAgICAgICAgICBOU1VuZGVybHlpbmdFcnJvcktleTogcmVhZEVycm9yLAorICAgICAg
ICAgICAgfV1dOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTlNT
dHJpbmcgKm1pbWVUeXBlID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JF
eHRlbnNpb24oZmlsZVVSTEZvclJlcXVlc3QucGF0aEV4dGVuc2lvbik7CisgICAgICAgIGlmICgh
bWltZVR5cGUpCisgICAgICAgICAgICBtaW1lVHlwZSA9IEAiYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtIjsKKworICAgICAgICBOU0hUVFBVUkxSZXNwb25zZSAqdXJsUmVzcG9uc2UgPSBbW05TSFRU
UFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmxTY2hlbWVUYXNrLnJlcXVlc3QuVVJM
IHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOm5pbCBoZWFkZXJGaWVsZHM6QHsKKyAgICAgICAg
ICAgIEAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIjogQCIqIiwKKyAgICAgICAgICAgIEAi
Q29udGVudC1MZW5ndGgiOiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiV6dSIsIChzaXpl
X3QpZmlsZURhdGEubGVuZ3RoXSwKKyAgICAgICAgICAgIEAiQ29udGVudC1UeXBlIjogbWltZVR5
cGUsCisgICAgICAgIH1dOworCisgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVSZXNw
b25zZTp1cmxSZXNwb25zZV07CisgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVEYXRh
OmZpbGVEYXRhXTsKKyAgICAgICAgW3VybFNjaGVtZVRhc2sgZGlkRmluaXNoXTsKKyAgICB9XTsK
KyAgICAKKyAgICBbX2ZpbGVMb2FkT3BlcmF0aW9ucyBzZXRPYmplY3Q6b3BlcmF0aW9uIGZvcktl
eTp1cmxTY2hlbWVUYXNrXTsKKyAgICBbW05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXSBhZGRP
cGVyYXRpb246b3BlcmF0aW9uXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cmxTY2hlbWVU
YXNrCit7CisgICAgaWYgKE5TT3BlcmF0aW9uICpvcGVyYXRpb24gPSBbX2ZpbGVMb2FkT3BlcmF0
aW9ucyBvYmplY3RGb3JLZXk6dXJsU2NoZW1lVGFza10pIHsKKyAgICAgICAgW29wZXJhdGlvbiBj
YW5jZWxdOworICAgICAgICBbX2ZpbGVMb2FkT3BlcmF0aW9ucyByZW1vdmVPYmplY3RGb3JLZXk6
dXJsU2NoZW1lVGFza107CisgICAgfQorfQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dL
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCmluZGV4IDNhMzQ2ZDQyMWY4YTQy
ZDE3ZWU0NDRjZTE2NDQ0MDU1YzRjYWY1ZWMuLjhhMTNiOTY5Mjk4ZDMwODRiNzhmMzFkM2NhNjNj
MjhlNDIyNWEyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCkBAIC00Nyw2
ICs0Nyw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDb25maWd1cmF0aW9uOihfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlv
biBpbnNwZWN0ZWRQYWdlOihOYWtlZFB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4paW5zcGVjdGVk
UGFnZTsKIAogKyAoQk9PTCl2aWV3SXNJbnNwZWN0b3JXZWJWaWV3OihOU1ZpZXcgKil2aWV3Owor
KyAoTlNVUkwgKiBfTnVsbGFibGUpVVJMRm9ySW5zcGVjdG9yUmVzb3VyY2U6KE5TU3RyaW5nICop
cmVzb3VyY2U7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCmlu
ZGV4IGU2NjU1OGNhOTUwNjNmODgxNzZhYzZmYjEzOTM4NzhjNWZkMzlmNzkuLmY4MWY2OTZmYTEy
Zjk2ZDA1NjZkMTQ5ODQ2YWM5NmJmNTA3ZDg4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkFQSU5hdmlnYXRpb24u
aCIKICNpbXBvcnQgIldLRnJhbWVJbmZvLmgiCisjaW1wb3J0ICJXS0luc3BlY3RvclJlc291cmNl
VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9ydCAiV0tJbnNwZWN0b3JXS1dlYlZpZXcuaCIKICNp
bXBvcnQgIldLTmF2aWdhdGlvbkFjdGlvbi5oIgogI2ltcG9ydCAiV0tOYXZpZ2F0aW9uRGVsZWdh
dGUuaCIKQEAgLTQ2LDYgKzQ3LDggQEAKICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNoZWNrcy5o
PgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IFdLSW5zcGVjdG9yUmVzb3VyY2VTY2hlbWUgPSBAImluc3BlY3Rvci1yZXNvdXJjZSI7CisKIEBp
bnRlcmZhY2UgV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciAoKSA8V0tVSURlbGVnYXRlLCBXS05h
dmlnYXRpb25EZWxlZ2F0ZSwgV0tJbnNwZWN0b3JXS1dlYlZpZXdEZWxlZ2F0ZT4KIEBlbmQKIApA
QCAtMTEwLDcgKzExMyw5IEBAIC0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxXS0luc3BlY3RvclZp
ZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiAKIC0gKFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKil3ZWJWaWV3Q29uZmlndXJhdGlvbgogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxXS0luc3Bl
Y3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlcj4gaW5zcGVjdG9yU2NoZW1lSGFuZGxlciA9IGFk
b3B0TlMoW1tXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0p
OworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aW5zcGVjdG9yU2NoZW1l
SGFuZGxlci5hdXRvcmVsZWFzZSgpIGZvclVSTFNjaGVtZTpXS0luc3BlY3RvclJlc291cmNlU2No
ZW1lXTsKIAogICAgIFdLUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gY29uZmlndXJhdGlvbi5n
ZXQoKS5wcmVmZXJlbmNlczsKICAgICBwcmVmZXJlbmNlcy5fYWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzID0gWUVTOwpAQCAtMTYwLDYgKzE2NSwxMSBAQCArIChCT09MKXZpZXdJc0luc3BlY3Rv
cldlYlZpZXc6KE5TVmlldyAqKXZpZXcKICAgICByZXR1cm4gW3ZpZXcgaXNLaW5kT2ZDbGFzczpb
V0tJbnNwZWN0b3JXS1dlYlZpZXcgY2xhc3NdXTsKIH0KIAorKyAoTlNVUkwgKilVUkxGb3JJbnNw
ZWN0b3JSZXNvdXJjZTooTlNTdHJpbmcgKilyZXNvdXJjZQoreworICAgIHJldHVybiBbTlNVUkwg
VVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAOi8vLyVAIiwgV0tJ
bnNwZWN0b3JSZXNvdXJjZVNjaGVtZSwgcmVzb3VyY2VdXS5VUkxCeVN0YW5kYXJkaXppbmdQYXRo
OworfQorCiAvLyBNQVJLOiBXS1VJRGVsZWdhdGUgbWV0aG9kcwogCiAtICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGdldFdpbmRvd0ZyYW1lV2l0aENvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShDR1JlY3QpKWNvbXBsZXRpb25IYW5kbGVyCkBAIC0yMzksNyArMjQ5LDcgQEAg
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb246KFdLTmF2aWdhdGkKICAgICB9CiAKICAgICAvLyBBbGxvdyBsb2FkaW5nIG9m
IHRoZSBtYWluIGluc3BlY3RvciBmaWxlLgotICAgIGlmIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5Ojppc01haW5PclRlc3RJbnNwZWN0b3JQYWdlKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5V
UkwpKSB7CisgICAgaWYgKFtuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMLnNjaGVtZSBpc0Vx
dWFsVG9TdHJpbmc6V0tJbnNwZWN0b3JSZXNvdXJjZVNjaGVtZV0pIHsKICAgICAgICAgZGVjaXNp
b25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDg2MmEzOWFiZDFhNWYxZjJl
Y2U2MjkzM2MxZTBkNzMzMjFhZmM4YzYuLmJhYmEyZTgyNzM3Mzc2NzI5M2IzNDNkMzI3YmE1OTEw
NjZlYjAwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtNzc5LDQyICs3NzksMTcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TdGFydFdpbmRvd0RyYWcoKQogCiBT
dHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKQogewotICAgIE5TQnVu
ZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUu
V2ViSW5zcGVjdG9yVUkiXTsKLSAgICBpZiAoIWJ1bmRsZSkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotCi0gICAgTlNTdHJpbmcgKnBhdGggPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIk1h
aW4iIG9mVHlwZTpAImh0bWwiXTsKLSAgICBBU1NFUlQocGF0aCAmJiBwYXRoLmxlbmd0aCk7Ci0g
ICAgaWYgKCFwYXRoKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gW05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoIGlzRGlyZWN0b3J5Ok5PXS5hYnNvbHV0ZVN0cmluZzsK
KyAgICByZXR1cm4gW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgVVJMRm9ySW5zcGVjdG9yUmVz
b3VyY2U6QCJNYWluLmh0bWwiXS5hYnNvbHV0ZVN0cmluZzsKIH0KIAogU3RyaW5nIFdlYkluc3Bl
Y3RvclByb3h5OjppbnNwZWN0b3JUZXN0UGFnZVVSTCgpCiB7Ci0gICAgTlNCdW5kbGUgKmJ1bmRs
ZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJJbnNwZWN0
b3JVSSJdOwotICAgIGlmICghYnVuZGxlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAg
ICAvLyBXZSBtaWdodCBub3QgaGF2ZSBhIFRlc3QuaHRtbCBpbiBQcm9kdWN0aW9uIGJ1aWxkcy4K
LSAgICBOU1N0cmluZyAqcGF0aCA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiVGVzdCIgb2ZU
eXBlOkAiaHRtbCJdOwotICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
Ci0gICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aCBpc0RpcmVjdG9yeTpOT10u
YWJzb2x1dGVTdHJpbmc7CisgICAgcmV0dXJuIFtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIFVS
TEZvckluc3BlY3RvclJlc291cmNlOkAiVGVzdC5odG1sIl0uYWJzb2x1dGVTdHJpbmc7CiB9CiAK
IFN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpCiB7Ci0gICAgTlNC
dW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBs
ZS5XZWJJbnNwZWN0b3JVSSJdOwotICAgIGlmICghYnVuZGxlKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0KLSAgICBOU1N0cmluZyAqcGF0aCA9IGJ1bmRsZS5yZXNvdXJjZVBhdGg7Ci0gICAg
QVNTRVJUKHBhdGggJiYgcGF0aC5sZW5ndGgpOwotCi0gICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6cGF0aCBpc0RpcmVjdG9yeTpZRVNdLmFic29sdXRlU3RyaW5nOworICAgIHJldHVy
biBbV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBVUkxGb3JJbnNwZWN0b3JSZXNvdXJjZTpAIiJd
LmFic29sdXRlU3RyaW5nOwogfQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpzeXN0ZW1WZXJzaW9u
UGxpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMjA0M2IwNmI1YWM2ZGUzNzQzYTVjNzdhMjgyYTE0NTJlNWMzZTI0MC4uNzNiYWJk
MDE0ZWJkYjZmYWQ1MjBkNTJmMzBkZmM4NDcwY2FkNWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTIyLDYgKzE1MjIsNyBAQAog
CQk5OTc5NjVBMzI1MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1QTIy
NTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTc5Q0E1ODIzN0Y0OUYx
MDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1IC8qIF9XS0lu
c3BlY3RvclByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5OTk5NkE5RjI1MDA0QkNDMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0
ZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5OTk2QTlEMjUwMDRCQ0IwMDRGNzU1OSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVz
dGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTk5QTdBQ0U1MjYwMTI5MjIwMDZENTdGRCAvKiBXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1l
SGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTlBN0FDRTMyNjAxMjkxOTAwNkQ1N0ZEIC8qIFdLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVI
YW5kbGVyLmggKi87IH07CiAJCTk5QjE2NzU3MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0
b3JFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OUIxNjc1
ODI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjE2NzU1MjUyQkI3
RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oICovOyB9OwogCQk5
OUIxNjc1QjI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5QjE2NzVBMjUyQkJBREQwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5oICovOyB9OwpAQCAtNDg5NCw2ICs0ODk1LDggQEAKIAkJOTk5OTZBOUUyNTAw
NEJDQjAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclRlc3RpbmcubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JUZXN0aW5nLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5OTlCN0VEODI1NTBFNEE4MDBGNDUwQTQgLyogSW5zcGVjdG9y
RXh0ZW5zaW9uVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRXh0ZW5zaW9u
VHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTlCN0Y0RjI1NTRCQTNG
MDBGNDUwQTQgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUluc3BlY3RvckV4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk5QTdBQ0UzMjYwMTI5MTkwMDZENTdGRCAvKiBXS0luc3BlY3Rv
clJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0luc3BlY3RvclJl
c291cmNlVVJMU2NoZW1lSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OUE3QUNFNDI2MDEyOTFBMDA2RDU3RkQgLyogV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhh
bmRsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0luc3BlY3RvclJlc291cmNlVVJMU2No
ZW1lSGFuZGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlCMTY3NTQyNTJC
QjdFMDAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0lu
c3BlY3RvckV4dGVuc2lvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk5QjE2NzU2MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjU5LDYgKzkyNjIsOCBAQAog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJQTVEMzUwNEQxRDc4RjBEMjAwNTEyNEE5IC8qIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5TWFjLm1tICovLAogCQkJCTFDQThCOTM1MTI3Qzc3NEUwMDU3NkMyQiAv
KiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSAqLywKKwkJCQk5OUE3QUNFMzI2MDEyOTE5MDA2RDU3
RkQgLyogV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuaCAqLywKKwkJCQk5OUE3
QUNFNDI2MDEyOTFBMDA2RDU3RkQgLyogV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRs
ZXIubW0gKi8sCiAJCQkJOTk0QkFERjExRjdENzdFQTAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIuaCAqLywKIAkJCQk5OTRCQURGMjFGN0Q3N0VCMDBCNTcxRTcgLyogV0tJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlci5tbSAqLywKIAkJCQlBNTE4QjVEMDFGRTFENTVCMDBGOUZBMjgg
LyogV0tJbnNwZWN0b3JXS1dlYlZpZXcuaCAqLywKQEAgLTEyNTkwLDYgKzEyNTk1LDcgQEAKIAkJ
CQkwRjNDNzI1QjE5NkY2MDRFMDBBRUREMEMgLyogV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTQyOTNBNDE5NUE0M0RBMDAyNzgyQzcgLyogV0tJbnNwZWN0
b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFRTg0
OUM4MTM2OEQ5MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk5QTdBQ0U1MjYwMTI5MjIwMDZENTdGRCAvKiBXS0luc3BlY3RvclJlc291cmNl
VVJMU2NoZW1lSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk0QkFERjQxRjdENzgxNDAw
QjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1MThCNUQyMUZFMUQ1NUIwMEY5RkEyOCAvKiBXS0luc3BlY3RvcldLV2ViVmlldy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkRENUUxMjkyMTBBREM3QjAwREI2MDEyIC8qIFdLS2V5Ym9hcmRTY3Jv
bGxpbmdBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCmluZGV4
IDllNTVmM2Q1OGExYTI4ZWU3N2Q1MGMwZGExY2E4ZjYwNTA2ZWJjYTYuLjA0YmUwYzlhZWNiM2Ri
Nzc2YWYyNzQzMGQwYmQ0ODFhZGMyYWRhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JV
SS5oIgogI2ltcG9ydCAiUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCIKKyNpbXBvcnQgIldLSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKIApAQCAtMzgsMTUgKzM5
LDcgQEAgYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCiAKIHN0YXRpYyBTdHJpbmcgd2Vi
SW5zcGVjdG9yVUlMb2NhbGl6ZWRTdHJpbmdzVVJMKCkKIHsKLSAgICBOU0J1bmRsZSAqYnVuZGxl
ID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkluc3BlY3Rv
clVJIl07Ci0gICAgaWYgKCFidW5kbGUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAg
IE5TU3RyaW5nICpwYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJsb2NhbGl6ZWRTdHJp
bmdzIiBvZlR5cGU6QCJqcyJdOwotICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotICAgIAotICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGggaXNEaXJl
Y3Rvcnk6Tk9dLmFic29sdXRlU3RyaW5nOworICAgIHJldHVybiBbV0tJbnNwZWN0b3JWaWV3Q29u
dHJvbGxlciBVUkxGb3JJbnNwZWN0b3JSZXNvdXJjZTpAImxvY2FsaXplZFN0cmluZ3MuanMiXS5h
YnNvbHV0ZVN0cmluZzsKIH0KIAogU3RyaW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJp
bmdzVVJMKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423668</attachid>
            <date>2021-03-18 16:21:00 -0700</date>
            <delta_ts>2021-03-18 19:37:58 -0700</delta_ts>
            <desc>Patch v1.3 - use concurrent global queue</desc>
            <filename>bug-179904-20210318162100.patch</filename>
            <type>text/plain</type>
            <size>22214</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0Njc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVmMzBhMzNiOGNjZDRhZWI0
ZWRmZWJkYjQzOTQzOTI0M2ZlMWU4MjguLjBhZTQzNWFiYTlhMzM0MzBmMDY0MzFhOTZmYTY2MmUy
OWQ1YzE0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjEtMDMtMTggIEJKIEJ1cmcg
IDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBsb2Fk
IGluc3BlY3RvciByZXNvdXJjZXMgdXNpbmcgYSBjdXN0b20gc2NoZW1lIGhhbmRsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTkwNAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA4ODcyMTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYg
R2FyZW4uCisKKyAgICAgICAgTG9hZCBXZWJJbnNwZWN0b3JVSSByZXNvdXJjZXMgdmlhIHRoZSBp
bnNwZWN0b3ItcmVzb3VyY2U6Ly8gc2NoZW1lLgorICAgICAgICBNb3Zpbmcgb2ZmIG9mIGZpbGU6
Ly8gVVJMcyB3aWxsIGFsbG93IGZvciBhIHRpZ2h0ZXIgc2FuZGJveCBhbmQKKyAgICAgICAgd2ls
bCBmaXggdGhlIGxvbmdzdGFuZGluZyBpc3N1ZSB0aGF0IFdlYiBJbnNwZWN0b3IncyBzZXR0aW5n
cyBhcmUKKyAgICAgICAgcGFydCBvZiB0aGUgZmlsZTovLyBzY2hlbWUgYW5kIGNsZWFyZWQgd2hl
biBTYWZhcmkgY2xlYXJzIHdlYnNpdGUgZGF0YS4KKworICAgICAgICBUaGlzIGFsc28gaGFzIHRo
ZSBlZmZlY3Qgb2YgcmVzZXR0aW5nIFdlYiBJbnNwZWN0b3Igc2V0dGluZ3Mgc2luY2UKKyAgICAg
ICAgdGhleSBhcmUgbm8gbG9uZ2VyIGFzc29jaWF0ZWQgd2l0aCBmaWxlOi8vLy4KKworICAgICAg
ICBMb2FkaW5nIHZpYSB0aGlzIHNjaGVtZSBpcyBleGVyY2lzZWQgYnkgZXhpc3RpbmcgaW5zcGVj
dG9yIHRlc3RzLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDogQWRkZWQgbmV3IGZpbGUu
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRs
ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V2ViSW5zcGVjdG9yVUlNYWMubW0uCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW06IEFkZGVkLgorICAgICAgICAo
LVtXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlciB3ZWJWaWV3OnN0YXJ0VVJMU2No
ZW1lVGFzazpdKToKKyAgICAgICAgVXNlIGEgZ2xvYmFsIGNvbmN1cnJlbnQgcXVldWUgYW5kIE5T
T3BlcmF0aW9uIC8gTlNPcGVyYXRpb25RdWV1ZSB0byBzdXBwb3J0CisgICAgICAgIHJlYWRpbmcg
ZmlsZXMgb2ZmIHRoZSBtYWluIHF1ZXVlLgorCisgICAgICAgICgtW1dLSW5zcGVjdG9yUmVzb3Vy
Y2VVUkxTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RvcFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAg
IFRyYW5zbGF0ZSB0aGUgcmVxdWVzdCBVUkwgdG8gYSBidW5kbGUgcmVzb3VyY2UgVVJMLCByZWFk
IHRoZSBkYXRhLCBhbmQgc2VuZCBhIHJlc3BvbnNlCisgICAgICAgIHdpdGggdGhlIGZpbGUgZGF0
YS4gUmV0dXJuIGFuIGVycm9yIGlmIHRoZSBmaWxlIGNvdWxkIG5vdCBiZSBmb3VuZCBvciByZWFk
LgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29u
dHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIg
d2ViVmlld0NvbmZpZ3VyYXRpb25dKToKKyAgICAgICAgKCtbV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlciBVUkxGb3JJbnNwZWN0b3JSZXNvdXJjZTpdKToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JW
aWV3Q29udHJvbGxlciB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVj
aXNpb25IYW5kbGVyOl0pOgorICAgICAgICBBbGxvdyBuYXZpZ2F0aW9ucyB0byBVUklzIHdpdGgg
dGhlIGluc3BlY3Rvci1yZXNvdXJjZTovLyBzY2hlbWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
SW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yVGVzdFBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCk6CisgICAgICAgIFVwZGF0ZWQu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yVUlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OndlYkluc3BlY3RvclVJTG9jYWxpemVkU3RyaW5nc1VSTCk6
CisgICAgICAgIFVwZGF0ZWQuCisKIDIwMjEtMDMtMTggIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW1dQRV1bR1RLXSBSZW1vdmUgcGx1Z2luIHBy
b2Nlc3MgbGVmdG92ZXIgYXJnIGZyb20gUHJvY2Vzc0xhdW5jaGVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKaW5kZXggZDRkMmQzM2U1ZTcwMzQ2ZWI0ZDNmYzZiM2EyYzUxNzMxOTFlYmE1Ny4uMjAzOTBh
N2VjZDlhYjM3MGRmMjkwMzBmOGNiYWFlMGM5NGNiYTA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dApAQCAtNDI5LDYgKzQyOSw3IEBAIFVJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9y
Tm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCiAKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFj
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tCiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9X
ZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0
b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dL
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5z
cGVjdG9yV0tXZWJWaWV3Lm1tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVS
TFNjaGVtZUhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTUwNmU5MmJmMjcxMWNkN2E0YTg5NjhlNDIw
YTU0MmE4OWY4YWNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5oCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0IDxX
ZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVIYW5kbGVy
Lmg+CisKK0Bwcm90b2NvbCBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyRGVsZWdhdGU7CisKK05T
X0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgV0tJbnNwZWN0b3JSZXNvdXJjZVVS
TFNjaGVtZUhhbmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPgorQGVuZAorCitO
U19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNv
dXJjZVVSTFNjaGVtZUhhbmRsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY3MTQ3NDQxOTlhYzhhNDIxMmYwYzM1Mjg3N2M0ZjYzZmU2ZTE3YTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVz
b3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1l
SGFuZGxlci5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisj
aW1wb3J0ICJXS1VSTFNjaGVtZVRhc2suaCIKKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdp
c3RyeS5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKworQGltcGxlbWVudGF0aW9uIFdL
SW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyIHsKKyAgICBSZXRhaW5QdHI8TlNNYXBU
YWJsZTxpZCA8V0tVUkxTY2hlbWVUYXNrPiwgTlNPcGVyYXRpb24gKj4+IF9maWxlTG9hZE9wZXJh
dGlvbnM7CisgICAgUmV0YWluUHRyPE5TQnVuZGxlPiBfY2FjaGVkQnVuZGxlOworICAgIFJldGFp
blB0cjxOU09wZXJhdGlvblF1ZXVlPiBfb3BlcmF0aW9uUXVldWU7Cit9CisKKy8vIE1BUksgLSBX
S1VSTFNjaGVtZUhhbmRsZXIgUHJvdG9jb2wKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdXJsU2No
ZW1lVGFzaworeworICAgIGlmICghX2NhY2hlZEJ1bmRsZSkgeworICAgICAgICBfY2FjaGVkQnVu
ZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkluc3Bl
Y3RvclVJIl07CisKKyAgICAgICAgLy8gSXQgaXMgYW4gZXJyb3IgaWYgV2ViSW5zcGVjdG9yVUkg
aGFzIG5vdCBhbHJlYWR5IGJlZW4gc29mdC1saW5rZWQgYnkgdGhlIHRpbWUKKyAgICAgICAgLy8g
d2UgbG9hZCByZXNvdXJjZXMgZnJvbSBpdC4gQW5kIGlmIHNvZnQtbGlua2luZyBmYWlscywgd2Ug
c2hvdWxkbid0IHN0YXJ0IGxvYWRzLgorICAgICAgICBSRUxFQVNFX0FTU0VSVChfY2FjaGVkQnVu
ZGxlKTsKKyAgICB9CisKKyAgICBpZiAoIV9maWxlTG9hZE9wZXJhdGlvbnMpCisgICAgICAgIF9m
aWxlTG9hZE9wZXJhdGlvbnMgPSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9u
czpOU1BvaW50ZXJGdW5jdGlvbnNTdHJvbmdNZW1vcnkgdmFsdWVPcHRpb25zOk5TUG9pbnRlckZ1
bmN0aW9uc1N0cm9uZ01lbW9yeSBjYXBhY2l0eTo1XTsKKworICAgIGlmICghX29wZXJhdGlvblF1
ZXVlKSB7CisgICAgICAgIF9vcGVyYXRpb25RdWV1ZSA9IFtbTlNPcGVyYXRpb25RdWV1ZSBhbGxv
Y10gaW5pdF07CisgICAgICAgIF9vcGVyYXRpb25RdWV1ZS5nZXQoKS51bmRlcmx5aW5nUXVldWUg
PSBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKFFPU19DTEFTU19VU0VSX0lOVEVSQUNUSVZFLCAw
KTsKKyAgICAgICAgX29wZXJhdGlvblF1ZXVlLmdldCgpLnF1YWxpdHlPZlNlcnZpY2UgPSBOU09w
ZXJhdGlvblF1YWxpdHlPZlNlcnZpY2VVc2VySW50ZXJhY3RpdmU7CisgICAgfQorCisgICAgTlNC
bG9ja09wZXJhdGlvbiAqb3BlcmF0aW9uID0gW05TQmxvY2tPcGVyYXRpb24gYmxvY2tPcGVyYXRp
b25XaXRoQmxvY2s6XnsKKyAgICAgICAgW19maWxlTG9hZE9wZXJhdGlvbnMgcmVtb3ZlT2JqZWN0
Rm9yS2V5OnVybFNjaGVtZVRhc2tdOworCisgICAgICAgIE5TVVJMICpyZXF1ZXN0VVJMID0gdXJs
U2NoZW1lVGFzay5yZXF1ZXN0LlVSTDsKKyAgICAgICAgTlNVUkwgKmZpbGVVUkxGb3JSZXF1ZXN0
ID0gW19jYWNoZWRCdW5kbGUgVVJMRm9yUmVzb3VyY2U6cmVxdWVzdFVSTC5yZWxhdGl2ZVBhdGgg
d2l0aEV4dGVuc2lvbjpAIiJdOworICAgICAgICBpZiAoIWZpbGVVUkxGb3JSZXF1ZXN0KSB7Cisg
ICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBmaW5kIFdlYiBJbnNwZWN0b3IgcmVzb3Vy
Y2U6ICVAIiwgcmVxdWVzdFVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBbdXJsU2No
ZW1lVGFzayBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU0NvY29h
RXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yRmlsZURvZXNOb3RFeGlzdCB1c2VySW5mbzpuaWxd
XTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIE5TRXJyb3IgKnJl
YWRFcnJvcjsKKyAgICAgICAgTlNEYXRhICpmaWxlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250
ZW50c09mVVJMOmZpbGVVUkxGb3JSZXF1ZXN0IG9wdGlvbnM6MCBlcnJvcjomcmVhZEVycm9yXTsK
KyAgICAgICAgaWYgKCFmaWxlRGF0YSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gcmVhZCBkYXRhIGZvciBXZWIgSW5zcGVjdG9yIHJlc291cmNlOiAlQCIsIHJlcXVlc3RVUkwu
YWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgW3VybFNjaGVtZVRhc2sgZGlkRmFpbFdpdGhF
cnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNDb2NvYUVycm9yRG9tYWluIGNvZGU6TlNV
UkxFcnJvclJlc291cmNlVW5hdmFpbGFibGUgdXNlckluZm86QHsKKyAgICAgICAgICAgICAgICBO
U1VuZGVybHlpbmdFcnJvcktleTogcmVhZEVycm9yLAorICAgICAgICAgICAgfV1dOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0g
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24oZmlsZVVSTEZv
clJlcXVlc3QucGF0aEV4dGVuc2lvbik7CisgICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAg
ICAgICBtaW1lVHlwZSA9IEAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIjsKKworICAgICAgICBO
U0hUVFBVUkxSZXNwb25zZSAqdXJsUmVzcG9uc2UgPSBbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9j
XSBpbml0V2l0aFVSTDp1cmxTY2hlbWVUYXNrLnJlcXVlc3QuVVJMIHN0YXR1c0NvZGU6MjAwIEhU
VFBWZXJzaW9uOm5pbCBoZWFkZXJGaWVsZHM6QHsKKyAgICAgICAgICAgIEAiQWNjZXNzLUNvbnRy
b2wtQWxsb3ctT3JpZ2luIjogQCIqIiwKKyAgICAgICAgICAgIEAiQ29udGVudC1MZW5ndGgiOiBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiV6dSIsIChzaXplX3QpZmlsZURhdGEubGVuZ3Ro
XSwKKyAgICAgICAgICAgIEAiQ29udGVudC1UeXBlIjogbWltZVR5cGUsCisgICAgICAgIH1dOwor
CisgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVSZXNwb25zZTp1cmxSZXNwb25zZV07
CisgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVEYXRhOmZpbGVEYXRhXTsKKyAgICAg
ICAgW3VybFNjaGVtZVRhc2sgZGlkRmluaXNoXTsKKyAgICB9XTsKKyAgICAKKyAgICBbX2ZpbGVM
b2FkT3BlcmF0aW9ucyBzZXRPYmplY3Q6b3BlcmF0aW9uIGZvcktleTp1cmxTY2hlbWVUYXNrXTsK
KyAgICBbX29wZXJhdGlvblF1ZXVlIGFkZE9wZXJhdGlvbjpvcGVyYXRpb25dOworfQorCistICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcFVSTFNjaGVtZVRhc2s6KGlkIDxX
S1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRhc2sKK3sKKyAgICBpZiAoTlNPcGVyYXRpb24gKm9w
ZXJhdGlvbiA9IFtfZmlsZUxvYWRPcGVyYXRpb25zIG9iamVjdEZvcktleTp1cmxTY2hlbWVUYXNr
XSkgeworICAgICAgICBbb3BlcmF0aW9uIGNhbmNlbF07CisgICAgICAgIFtfZmlsZUxvYWRPcGVy
YXRpb25zIHJlbW92ZU9iamVjdEZvcktleTp1cmxTY2hlbWVUYXNrXTsKKyAgICB9Cit9CisKK0Bl
bmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9s
bGVyLmgKaW5kZXggM2EzNDZkNDIxZjhhNDJkMTdlZTQ0NGNlMTY0NDQwNTVjNGNhZjVlYy4uOGEx
M2I5NjkyOThkMzA4NGI3OGYzMWQzY2E2M2MyOGU0MjI1YTJiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3Rv
clZpZXdDb250cm9sbGVyLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS0luc3BlY3RvckNv
bmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGluc3BlY3RlZFBhZ2U6KE5ha2VkUHRyPFdlYktp
dDo6V2ViUGFnZVByb3h5PilpbnNwZWN0ZWRQYWdlOwogCiArIChCT09MKXZpZXdJc0luc3BlY3Rv
cldlYlZpZXc6KE5TVmlldyAqKXZpZXc7CisrIChOU1VSTCAqIF9OdWxsYWJsZSlVUkxGb3JJbnNw
ZWN0b3JSZXNvdXJjZTooTlNTdHJpbmcgKilyZXNvdXJjZTsKIAogQGVuZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggZTY2NTU4Y2E5NTA2M2Y4ODE3NmFjNmZiMTM5
Mzg3OGM1ZmQzOWY3OS4uZjgxZjY5NmZhMTJmOTZkMDU2NmQxNDk4NDZhYzk2YmY1MDdkODhjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3Bl
Y3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2ltcG9ydCAiQVBJTmF2aWdhdGlvbi5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm8uaCIKKyNp
bXBvcnQgIldLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJX
S0luc3BlY3RvcldLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tOYXZpZ2F0aW9uQWN0aW9uLmgiCiAj
aW1wb3J0ICJXS05hdmlnYXRpb25EZWxlZ2F0ZS5oIgpAQCAtNDYsNiArNDcsOCBAQAogI2ltcG9y
dCA8V2ViQ29yZS9WZXJzaW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4K
IAorc3RhdGljIE5TU3RyaW5nICogY29uc3QgV0tJbnNwZWN0b3JSZXNvdXJjZVNjaGVtZSA9IEAi
aW5zcGVjdG9yLXJlc291cmNlIjsKKwogQGludGVyZmFjZSBXS0luc3BlY3RvclZpZXdDb250cm9s
bGVyICgpIDxXS1VJRGVsZWdhdGUsIFdLTmF2aWdhdGlvbkRlbGVnYXRlLCBXS0luc3BlY3RvcldL
V2ViVmlld0RlbGVnYXRlPgogQGVuZAogCkBAIC0xMTAsNyArMTEzLDkgQEAgLSAodm9pZClzZXRE
ZWxlZ2F0ZTooaWQgPFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUK
IAogLSAoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKXdlYlZpZXdDb25maWd1cmF0aW9uCiB7Ci0g
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgUmV0YWluUHRyPFdLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyPiBp
bnNwZWN0b3JTY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxT
Y2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2No
ZW1lSGFuZGxlcjppbnNwZWN0b3JTY2hlbWVIYW5kbGVyLmF1dG9yZWxlYXNlKCkgZm9yVVJMU2No
ZW1lOldLSW5zcGVjdG9yUmVzb3VyY2VTY2hlbWVdOwogCiAgICAgV0tQcmVmZXJlbmNlcyAqcHJl
ZmVyZW5jZXMgPSBjb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzOwogICAgIHByZWZlcmVu
Y2VzLl9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgPSBZRVM7CkBAIC0xNjAsNiArMTY1LDEx
IEBAICsgKEJPT0wpdmlld0lzSW5zcGVjdG9yV2ViVmlldzooTlNWaWV3ICopdmlldwogICAgIHJl
dHVybiBbdmlldyBpc0tpbmRPZkNsYXNzOltXS0luc3BlY3RvcldLV2ViVmlldyBjbGFzc11dOwog
fQogCisrIChOU1VSTCAqKVVSTEZvckluc3BlY3RvclJlc291cmNlOihOU1N0cmluZyAqKXJlc291
cmNlCit7CisgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUA6Ly8vJUAiLCBXS0luc3BlY3RvclJlc291cmNlU2NoZW1lLCByZXNvdXJj
ZV1dLlVSTEJ5U3RhbmRhcmRpemluZ1BhdGg7Cit9CisKIC8vIE1BUks6IFdLVUlEZWxlZ2F0ZSBt
ZXRob2RzCiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZ2V0V2luZG93
RnJhbWVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKENHUmVjdCkpY29tcGxldGlvbkhh
bmRsZXIKQEAgLTIzOSw3ICsyNDksNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aQogICAgIH0K
IAogICAgIC8vIEFsbG93IGxvYWRpbmcgb2YgdGhlIG1haW4gaW5zcGVjdG9yIGZpbGUuCi0gICAg
aWYgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmlzTWFpbk9yVGVzdEluc3BlY3RvclBhZ2Uo
bmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCkpIHsKKyAgICBpZiAoW25hdmlnYXRpb25BY3Rp
b24ucmVxdWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpXS0luc3BlY3RvclJlc291cmNl
U2NoZW1lXSkgewogICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5QWxsb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0KaW5kZXggODYyYTM5YWJkMWE1ZjFmMmVjZTYyOTMzYzFlMGQ3MzMyMWFmYzhjNi4uYmFiYTJl
ODI3MzczNzY3MjkzYjM0M2QzMjdiYTU5MTA2NmViMDA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5
TWFjLm1tCkBAIC03NzksNDIgKzc3OSwxNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybVN0YXJ0V2luZG93RHJhZygpCiAKIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVj
dG9yUGFnZVVSTCgpCiB7Ci0gICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVX
aXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJJbnNwZWN0b3JVSSJdOwotICAgIGlmICghYnVu
ZGxlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBOU1N0cmluZyAqcGF0aCA9IFti
dW5kbGUgcGF0aEZvclJlc291cmNlOkAiTWFpbiIgb2ZUeXBlOkAiaHRtbCJdOwotICAgIEFTU0VS
VChwYXRoICYmIHBhdGgubGVuZ3RoKTsKLSAgICBpZiAoIXBhdGgpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLQotICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGggaXNEaXJl
Y3Rvcnk6Tk9dLmFic29sdXRlU3RyaW5nOworICAgIHJldHVybiBbV0tJbnNwZWN0b3JWaWV3Q29u
dHJvbGxlciBVUkxGb3JJbnNwZWN0b3JSZXNvdXJjZTpAIk1haW4uaHRtbCJdLmFic29sdXRlU3Ry
aW5nOwogfQogCiBTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclRlc3RQYWdlVVJM
KCkKIHsKLSAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlm
aWVyOkAiY29tLmFwcGxlLldlYkluc3BlY3RvclVJIl07Ci0gICAgaWYgKCFidW5kbGUpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIC8vIFdlIG1pZ2h0IG5vdCBoYXZlIGEgVGVzdC5o
dG1sIGluIFByb2R1Y3Rpb24gYnVpbGRzLgotICAgIE5TU3RyaW5nICpwYXRoID0gW2J1bmRsZSBw
YXRoRm9yUmVzb3VyY2U6QCJUZXN0IiBvZlR5cGU6QCJodG1sIl07Ci0gICAgaWYgKCFwYXRoKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpwYXRoIGlzRGlyZWN0b3J5Ok5PXS5hYnNvbHV0ZVN0cmluZzsKKyAgICByZXR1cm4gW1dL
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgVVJMRm9ySW5zcGVjdG9yUmVzb3VyY2U6QCJUZXN0Lmh0
bWwiXS5hYnNvbHV0ZVN0cmluZzsKIH0KIAogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNw
ZWN0b3JCYXNlVVJMKCkKIHsKLSAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRs
ZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkluc3BlY3RvclVJIl07Ci0gICAgaWYgKCFi
dW5kbGUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIE5TU3RyaW5nICpwYXRoID0g
YnVuZGxlLnJlc291cmNlUGF0aDsKLSAgICBBU1NFUlQocGF0aCAmJiBwYXRoLmxlbmd0aCk7Ci0K
LSAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoIGlzRGlyZWN0b3J5OllFU10u
YWJzb2x1dGVTdHJpbmc7CisgICAgcmV0dXJuIFtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIFVS
TEZvckluc3BlY3RvclJlc291cmNlOkAiIl0uYWJzb2x1dGVTdHJpbmc7CiB9CiAKIHN0YXRpYyBO
U0RpY3Rpb25hcnkgKnN5c3RlbVZlcnNpb25QbGlzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMDQzYjA2YjVhYzZkZTM3NDNhNWM3
N2EyODJhMTQ1MmU1YzNlMjQwLi43M2JhYmQwMTRlYmRiNmZhZDUyMGQ1MmYzMGRmYzg0NzBjYWQ1
YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE1MjIsNiArMTUyMiw3IEBACiAJCTk5Nzk2NUEzMjUzMTI4QzcwMEIzMUFFMyAvKiBf
V0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OTc5NjVBMjI1MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTk5NzlDQTU4MjM3RjQ5RjEwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTc5Q0E1
NzIzN0Y0OUYwMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5OTk2QTlGMjUwMDRCQ0MwMDRG
NzU1OSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk5OTZBOUQyNTAwNEJDQjAwNEY3NTU5IC8q
IF9XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlBN0FDRTUyNjAxMjkyMjAwNkQ1N0ZEIC8qIFdL
SW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUE3QUNFMzI2MDEyOTE5MDA2RDU3RkQgLyogV0tJ
bnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuaCAqLzsgfTsKIAkJOTlCMTY3NTcyNTJC
QjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3NTQyNTJCQjdFMDAwNzMxNDBFIC8q
IF9XS0luc3BlY3RvckV4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk5QjE2NzU4MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0
b3JFeHRlbnNpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVu
c2lvbkludGVybmFsLmggKi87IH07CiAJCTk5QjE2NzVCMjUyQkJBREQwMDczMTQwRSAvKiBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3NUEyNTJCQkFERDAwNzMxNDBFIC8qIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggKi87IH07CkBAIC00ODk0LDYg
KzQ4OTUsOCBAQAogCQk5OTk5NkE5RTI1MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yVGVz
dGluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0luc3Bl
Y3RvclRlc3RpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5OUI3RUQ4MjU1
MEU0QTgwMEY0NTBBNCAvKiBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5OUI3RjRGMjU1NEJBM0YwMEY0NTBBNCAvKiBBUElJbnNwZWN0b3JFeHRlbnNp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJSW5zcGVjdG9y
RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlBN0FDRTMyNjAx
MjkxOTAwNkQ1N0ZEIC8qIFdLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QTdBQ0U0MjYwMTI5MUEwMDZENTdGRCAvKiBXS0lu
c3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OUIxNjc1NDI1MkJCN0UwMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckV4
dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUIxNjc1NTI1MkJCN0Ux
MDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlCMTY3NTYyNTJCQjdFMTAwNzMxNDBFIC8qIF9X
S0luc3BlY3RvckV4dGVuc2lvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IF9XS0luc3BlY3RvckV4dGVuc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTkyNTksNiArOTI2Miw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBNUQzNTA0RDFE
NzhGMEQyMDA1MTI0QTkgLyogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gKi8sCiAJCQkJ
MUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tICovLAor
CQkJCTk5QTdBQ0UzMjYwMTI5MTkwMDZENTdGRCAvKiBXS0luc3BlY3RvclJlc291cmNlVVJMU2No
ZW1lSGFuZGxlci5oICovLAorCQkJCTk5QTdBQ0U0MjYwMTI5MUEwMDZENTdGRCAvKiBXS0luc3Bl
Y3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5tbSAqLywKIAkJCQk5OTRCQURGMTFGN0Q3N0VB
MDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oICovLAogCQkJCTk5NEJBREYy
MUY3RDc3RUIwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tICovLAogCQkJ
CUE1MThCNUQwMUZFMUQ1NUIwMEY5RkEyOCAvKiBXS0luc3BlY3RvcldLV2ViVmlldy5oICovLApA
QCAtMTI1OTAsNiArMTI1OTUsNyBAQAogCQkJCTBGM0M3MjVCMTk2RjYwNEUwMEFFREQwQyAvKiBX
S0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NDI5M0E0MTk1
QTQzREEwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNkVFODQ5QzgxMzY4RDkzOTAwMzhENDgxIC8qIFdLSW5zcGVj
dG9yUHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlBN0FDRTUyNjAxMjkyMjAwNkQ1
N0ZEIC8qIFdLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5OTRCQURGNDFGN0Q3ODE0MDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxOEI1RDIxRkUxRDU1QjAwRjlGQTI4IC8qIFdL
SW5zcGVjdG9yV0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREQ1RTEyOTIxMEFEQzdC
MDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYklu
c3BlY3RvclVJTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V2ViSW5zcGVjdG9yVUlNYWMubW0KaW5kZXggOWU1NWYzZDU4YTFhMjhlZTc3ZDUwYzBkYTFjYThm
NjA1MDZlYmNhNi4uMDRiZTBjOWFlY2IzZGI3NzZhZjI3NDMwZDBiZDQ4MWFkYzJhZGFlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVj
dG9yVUlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V2ViSW5zcGVjdG9yVUlNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIldlYkluc3BlY3RvclVJLmgiCiAjaW1wb3J0ICJSZW1vdGVXZWJJbnNwZWN0
b3JVSS5oIgorI2ltcG9ydCAiV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIgogCiAjaWYgUExB
VEZPUk0oTUFDKQogCkBAIC0zOCwxNSArMzksNyBAQCBib29sIFdlYkluc3BlY3RvclVJOjpjYW5T
YXZlKCkKIAogc3RhdGljIFN0cmluZyB3ZWJJbnNwZWN0b3JVSUxvY2FsaXplZFN0cmluZ3NVUkwo
KQogewotICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZp
ZXI6QCJjb20uYXBwbGUuV2ViSW5zcGVjdG9yVUkiXTsKLSAgICBpZiAoIWJ1bmRsZSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgTlNTdHJpbmcgKnBhdGggPSBbYnVuZGxlIHBhdGhG
b3JSZXNvdXJjZTpAImxvY2FsaXplZFN0cmluZ3MiIG9mVHlwZTpAImpzIl07Ci0gICAgaWYgKCFw
YXRoKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgCi0gICAgcmV0dXJuIFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6cGF0aCBpc0RpcmVjdG9yeTpOT10uYWJzb2x1dGVTdHJpbmc7CisgICAg
cmV0dXJuIFtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIFVSTEZvckluc3BlY3RvclJlc291cmNl
OkAibG9jYWxpemVkU3RyaW5ncy5qcyJdLmFic29sdXRlU3RyaW5nOwogfQogCiBTdHJpbmcgV2Vi
SW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>