<?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>197893</bug_id>
          
          <creation_ts>2019-05-14 13:49:50 -0700</creation_ts>
          <short_desc>[WK2][iOS] UIProcess may get killed because it is taking too long to release its background task after expiration</short_desc>
          <delta_ts>2019-05-21 11:26:19 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1536230</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-14 13:49:50 -0700</bug_when>
    <thetext>UIProcess may get killed because it is taking too long to release its background task after its expiration handler was called. The reason is that the background task&apos;s expiration handler sequentially sends a ProcessWillSuspendImminently synchronous IPC to each of its child processes and only then ends the background task.
By the time we receive the response from all child processes, it may be too late and we get killed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536232</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-14 13:52:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/50234105&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536247</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-14 14:30:14 -0700</bug_when>
    <thetext>Logging with the patch enabled, when our background assertion expires:
2019-05-14 14:26:18.125569-0700 0x3747f    Error       0x95005              9797   0    MobileSafari: (WebKit) [com.apple.WebKit:ProcessSuspension] Background task expired while holding WebKit ProcessAssertion (isMainThread? 1).
2019-05-14 14:26:18.127250-0700 0x3747f    Default     0x95005              9797   0    MobileSafari: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x123a2bb10 - WKProcessAssertionBackgroundTaskManager - _scheduleReleaseTask because the expiration handler has been called
2019-05-14 14:26:18.128797-0700 0x374a5    Default     0x0                  9798   0    com.apple.WebKit.Networking: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x1011f87f8 - NetworkProcess::processWillSuspendImminently() BEGIN
2019-05-14 14:26:18.128898-0700 0x374aa    Default     0x0                  9799   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x145e15a40 - WebProcess::processWillSuspendImminently() BEGIN
2019-05-14 14:26:18.131060-0700 0x374ba    Default     0x0                  9800   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x100e134d0 - WebProcess::processWillSuspendImminently() BEGIN
2019-05-14 14:26:18.153307-0700 0x374a5    Default     0x0                  9798   0    com.apple.WebKit.Networking: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x1011f87f8 - NetworkProcess::processWillSuspendImminently() END
2019-05-14 14:26:18.159562-0700 0x374ba    Default     0x0                  9800   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] WebProcess 9800 is freezing all layer trees
2019-05-14 14:26:18.159613-0700 0x374ba    Default     0x0                  9800   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x100e134d0 - WebProcess::destroyRenderingResources() took 0.00ms
2019-05-14 14:26:18.161355-0700 0x374ba    Default     0x0                  9800   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x100e134d0 - WebProcess::updateFreezerStatus() isFreezable: 0, success
2019-05-14 14:26:18.161811-0700 0x374ba    Default     0x0                  9800   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x100e134d0 - WebProcess::markAllLayersVolatile()
2019-05-14 14:26:18.161868-0700 0x374ba    Default     0x0                  9800   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x100e134d0 - WebProcess::markAllLayersVolatile() Successfuly marked all layers as volatile
2019-05-14 14:26:18.161909-0700 0x374ba    Default     0x0                  9800   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x100e134d0 - WebProcess::processWillSuspendImminently() END
2019-05-14 14:26:18.177892-0700 0x374aa    Default     0x0                  9799   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] WebProcess 9799 is freezing all layer trees
2019-05-14 14:26:18.177937-0700 0x374aa    Default     0x0                  9799   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x146810008 - WebPage (PageID=1) - Adding a reason 4 to freeze layer tree; current reasons are 2
2019-05-14 14:26:18.177986-0700 0x374aa    Default     0x0                  9799   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x145e15a40 - WebProcess::destroyRenderingResources() took 0.01ms
2019-05-14 14:26:18.179802-0700 0x374aa    Default     0x0                  9799   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x145e15a40 - WebProcess::updateFreezerStatus() isFreezable: 1, success
2019-05-14 14:26:18.179952-0700 0x374aa    Default     0x0                  9799   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x145e15a40 - WebProcess::markAllLayersVolatile()
2019-05-14 14:26:18.180721-0700 0x374aa    Default     0x0                  9799   0    com.apple.WebKit.WebContent: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x145e15a40 - WebProcess::processWillSuspendImminently() END
2019-05-14 14:26:20.282348-0700 0x3747f    Default     0x95005              9797   0    MobileSafari: (WebKit) [com.apple.WebKit:ProcessSuspension] 0x123a2bb10 - WKProcessAssertionBackgroundTaskManager - endBackgroundTask

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536250</commentid>
    <comment_count>3</comment_count>
      <attachid>369894</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-14 14:35:29 -0700</bug_when>
    <thetext>Created attachment 369894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536415</commentid>
    <comment_count>4</comment_count>
      <attachid>369894</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-05-15 07:42:03 -0700</bug_when>
    <thetext>Comment on attachment 369894
Patch

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

r=me

&gt; Source/WebKit/ChangeLog:15
&gt; +        1. Send the ProcessWillSuspendImminently asynchronously so that all processes can do their processing in parallel

\o/

&gt; Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm:123
&gt; +    _pendingTaskReleaseTask = dispatch_block_create((dispatch_block_flags_t)0, ^{

Do we need to do any freeing of this block?  I also don&apos;t understand why you used dispatch_block_create instead of just a BlockPtr and a regular block and setting it to null when you would&apos;ve called dispatch_block_cancel below

&gt; Source/WebKit/WebProcess/WebProcess.h:-421
&gt; -    void didReceiveSyncWebProcessMessage(IPC::Connection&amp;, IPC::Decoder&amp;, std::unique_ptr&lt;IPC::Encoder&gt;&amp;);

\o/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536435</commentid>
    <comment_count>5</comment_count>
      <attachid>369894</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-15 08:50:53 -0700</bug_when>
    <thetext>Comment on attachment 369894
Patch

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

&gt;&gt; Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm:123
&gt;&gt; +    _pendingTaskReleaseTask = dispatch_block_create((dispatch_block_flags_t)0, ^{
&gt; 
&gt; Do we need to do any freeing of this block?  I also don&apos;t understand why you used dispatch_block_create instead of just a BlockPtr and a regular block and setting it to null when you would&apos;ve called dispatch_block_cancel below

I followed the documentation for dispatch_block_cancel: https://developer.apple.com/documentation/dispatch/1431058-dispatch_block_cancel
&quot;&quot;&quot;
The result of passing NULL or a block object not returned by the dispatch_block_create or dispatch_block_create_with_qos_class function is undefined.
&quot;&quot;&quot;

So it seems I have to use dispatch_block_create() if I want to use dispatch_block_cancel(). I am not 100% sure if I need to do some cleanup to free the block though, I will confirm before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536471</commentid>
    <comment_count>6</comment_count>
      <attachid>369964</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-15 10:13:55 -0700</bug_when>
    <thetext>Created attachment 369964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536473</commentid>
    <comment_count>7</comment_count>
      <attachid>369964</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-15 10:15:48 -0700</bug_when>
    <thetext>Comment on attachment 369964
Patch

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

&gt; Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm:130
&gt; +    Block_release(_pendingTaskReleaseTask);

Looks like you&apos;re right that I am supposed to release a block constructed by dispatch_block_create() if we&apos;re not using ARC so I added a call to Block_release() here.
Please take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536509</commentid>
    <comment_count>8</comment_count>
      <attachid>369964</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-15 11:29:46 -0700</bug_when>
    <thetext>Comment on attachment 369964
Patch

Clearing flags on attachment: 369964

Committed r245334: &lt;https://trac.webkit.org/changeset/245334&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536510</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-15 11:29:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537910</commentid>
    <comment_count>10</comment_count>
      <attachid>369964</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-05-21 10:15:15 -0700</bug_when>
    <thetext>Comment on attachment 369964
Patch

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

&gt;&gt; Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm:130
&gt;&gt; +    Block_release(_pendingTaskReleaseTask);
&gt; 
&gt; Looks like you&apos;re right that I am supposed to release a block constructed by dispatch_block_create() if we&apos;re not using ARC so I added a call to Block_release() here.
&gt; Please take a look.

Maybe use BlockPtr here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537933</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-21 11:26:19 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #10)
&gt; Comment on attachment 369964 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=369964&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm:130
&gt; &gt;&gt; +    Block_release(_pendingTaskReleaseTask);
&gt; &gt; 
&gt; &gt; Looks like you&apos;re right that I am supposed to release a block constructed by dispatch_block_create() if we&apos;re not using ARC so I added a call to Block_release() here.
&gt; &gt; Please take a look.
&gt; 
&gt; Maybe use BlockPtr here?

I considered it but I need to call dispatch_block_create() and BlockPtr did not seem to have a way to adopt a block. It always refs the blocks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369894</attachid>
            <date>2019-05-14 14:35:29 -0700</date>
            <delta_ts>2019-05-15 10:13:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197893-20190514143529.patch</filename>
            <type>text/plain</type>
            <size>15101</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1Mjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE0MDI3NzQ2ZDA0ZmVjNTc0
NzZmYjRlODU5YmFlYzRhYWJmMzkzZDUuLjA2YTNhMjkwYTdiYTA3NmUxM2M3MDc3ZTA3ZTIwNjE1
MGVjMGYzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTktMDUtMTQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtpT1NdIFVJUHJvY2VzcyBt
YXkgZ2V0IGtpbGxlZCBiZWNhdXNlIGl0IGlzIHRha2luZyB0b28gbG9uZyB0byByZWxlYXNlIGl0
cyBiYWNrZ3JvdW5kIHRhc2sgYWZ0ZXIgZXhwaXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3ODkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81MDIzNDEwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgVUlQcm9jZXNzIG1heSBnZXQga2lsbGVkIGJlY2F1c2UgaXQgaXMgdGFraW5nIHRv
byBsb25nIHRvIHJlbGVhc2UgaXRzIGJhY2tncm91bmQgdGFzayBhZnRlciBpdHMgZXhwaXJhdGlv
biBoYW5kbGVyCisgICAgICAgIHdhcyBjYWxsZWQuIFRoZSByZWFzb24gaXMgdGhhdCB0aGUgYmFj
a2dyb3VuZCB0YXNrJ3MgZXhwaXJhdGlvbiBoYW5kbGVyIHdhcyBzZXF1ZW50aWFsbHkgc2VuZGlu
ZyBhIFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkKKyAgICAgICAgc3luY2hyb25vdXMgSVBD
IHRvIGVhY2ggb2YgaXRzIGNoaWxkIHByb2Nlc3NlcyBhbmQgb25seSB0aGVuIGVuZHMgdGhlIGJh
Y2tncm91bmQgdGFzay4gQnkgdGhlIHRpbWUgd2UgcmVjZWl2ZSB0aGUgcmVzcG9uc2UgZnJvbQor
ICAgICAgICBhbGwgY2hpbGQgcHJvY2Vzc2VzLCBpdCBtYXkgYmUgdG9vIGxhdGUgYW5kIHdlIGdl
dCBraWxsZWQuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUgaXNzdWUsIHdlIG5vdzoKKyAgICAg
ICAgMS4gU2VuZCB0aGUgUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSBhc3luY2hyb25vdXNs
eSBzbyB0aGF0IGFsbCBwcm9jZXNzZXMgY2FuIGRvIHRoZWlyIHByb2Nlc3NpbmcgaW4gcGFyYWxs
ZWwKKyAgICAgICAgMi4gQWZ0ZXIgMiBzZWNvbmRzLCB0aGUgVUlQcm9jZXNzIHJlbGVhc2VzIHRo
ZSBiYWNrZ3JvdW5kIHRhc2sgKFdlIGdldCBraWxsZWQgYWZ0ZXIgfjUgc2Vjb25kcykKKworICAg
ICAgICBBbHNvLCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgVUlQcm9jZXNzIHN1cGVuZHMgcHJvbXB0
bHksIHdlIG5vdyBtYWtlIHN1cmUgd2UgbmV2ZXIgc3RhcnQgYSBuZXcgYmFja2dyb3VuZCB0YXNr
ICphZnRlcioKKyAgICAgICAgdGhlIGFwcCBoYXMgYmVlbiBiYWNrZ3JvdW5kZWQuIFRoZSBpbnRl
bnRpb24gb2Ygb3VyIGJhY2tncm91bmQgdGFzayBpcyB0b28gZmluaXNoIGNyaXRpY2FsIHdvcmsg
KGxpa2UgcmVsZWFzaW5nIGxvY2tlZAorICAgICAgICBmaWxlcykgYWZ0ZXIgdGhlIGFwcCBnZXRz
IGJhY2tncm91bmRlZCwgbm90IHRvIHN0YXJ0IG5ldyB3b3JrIGFuZCBkZWxheSBwcm9jZXNzIHN1
c3BlbnNpb24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1p
bmVudGx5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5l
bnRseSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50
bHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbToKKyAg
ICAgICAgKC1bV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIGluaXRdKToK
KyAgICAgICAgKC1bV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIF9zY2hl
ZHVsZVJlbGVhc2VUYXNrXSk6CisgICAgICAgICgtW1dLUHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91
bmRUYXNrTWFuYWdlciBfY2FuY2VsUGVuZGluZ1JlbGVhc2VUYXNrXSk6CisgICAgICAgICgtW1dL
UHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91bmRUYXNrTWFuYWdlciBfdXBkYXRlQmFja2dyb3VuZFRh
c2tdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisKIDIwMTktMDUtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBUaGUgbmV0d29yayBwcm9jZXNzIHRyaWVzIHRvIHRha2UgYSBwcm9jZXNz
IGFzc2VydGlvbiB3aGVuIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVu
dGx5KCkgaXMgY2FsbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IDljNjQ4NDQ0OWM2YmEyNzUwM2M4YmMwNWM3MDcwOWIzZTQzZjg5
NDMuLmI3NzU4ODkzODExODBjZjczNjRjMDYyYjlkY2U5NDJiNWRhYmU2ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xOTQ5LDE1
ICsxOTQ5LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQo
U2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQKICNlbmRpZgogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNz
Ojpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKIHsKLSAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZElt
bWluZW50bHkoKSIsIHRoaXMpOworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAi
JXAgLSBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpIEJFR0lO
IiwgdGhpcyk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX2lkYlNlcnZlcnMudmFsdWVzKCkpCiAg
ICAgICAgIHNlcnZlci0+dHJ5U3RvcChJREJTZXJ2ZXI6OlNob3VsZEZvcmNlU3RvcDo6WWVzKTsK
ICNlbmRpZgogICAgIGFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVu
UmVhZHlUb1N1c3BlbmQ6Ok5vKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBS
RUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByb2Nl
c3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSBFTkQiLCB0aGlzKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZDg1NjNkMjJhYjRmOWMzMWVkNWNmMTk0M2M1M2Qx
NWJkNDJhYmJlYi4uNDBhMWFjYmJmMjJkNWUxNTc1ODMwYjQ3MzcyYWY1YjNlNmM0M2FkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTgx
LDcgKzE4MSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVz
dEV2YWx1YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RF
dmFsdWF0aW9uOyB9CiAKLSAgICB2b2lkIHByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBwcm9jZXNzV2lsbFN1c3Bl
bmRJbW1pbmVudGx5KCk7CiAgICAgdm9pZCBwcmVwYXJlVG9TdXNwZW5kKCk7CiAgICAgdm9pZCBj
YW5jZWxQcmVwYXJlVG9TdXNwZW5kKCk7CiAgICAgdm9pZCBwcm9jZXNzRGlkUmVzdW1lKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCAzNWJjODJiMjhmMWY3ZThlMjY0MWEzNDIxZjI0NzA2ZGUyMmFjNWY5
Li43NGM1MDI1MzUzOGYwYTJiNjZlMWJiZjk1MjhhMDIxYjQwY2EyYmU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTc3LDcgKzc3LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3JvdW5kKCkKICAgICBQcm9j
ZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpCiAKLSAgICBQcm9jZXNzV2lsbFN1c3BlbmRJ
bW1pbmVudGx5KCkgLT4gKGJvb2wgaGFuZGxlZCkgU3luY2hyb25vdXMKKyAgICBQcm9jZXNzV2ls
bFN1c3BlbmRJbW1pbmVudGx5KCkKICAgICBQcmVwYXJlVG9TdXNwZW5kKCkKICAgICBDYW5jZWxQ
cmVwYXJlVG9TdXNwZW5kKCkKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGFmODU5YWVjMDM2MmU5MWY5MzBiMjg2YjhmNDJmYzIwZmE4ODMwNDMuLmI5YWM2NzZhZGFm
MWE3NTE3MTdkZmQ0YmQ0M2M4YmUwM2ZhNzgxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtOTU3LDEx
ICs5NTcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhSW5V
SVByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOgogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKIHsKLSAgICBpZiAoIWNh
blNlbmRNZXNzYWdlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgaGFuZGxlZCA9IGZh
bHNlOwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc1dpbGxT
dXNwZW5kSW1taW5lbnRseSgpLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NXaWxs
U3VzcGVuZEltbWluZW50bHk6OlJlcGx5KGhhbmRsZWQpLCAwLCAxX3MpOworICAgIGlmIChjYW5T
ZW5kTWVzc2FnZSgpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJv
Y2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpLCAwKTsKIH0KICAgICAKIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6c2VuZFByZXBhcmVUb1N1c3BlbmQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggNzljMmU1YTU2Y2FlNjZiMzIwNzY2ODgyMDRk
NGQyMDU5MzAxY2QyNC4uY2QxNmM4MWRiNjcyYjEwNzE4ZDlkODZjZjExZDdlYWNlMGFjNTRlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xMTM0
LDExICsxMTM0LDggQEAgUmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJQcm9jZXNzUHJveHk6OnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXMoQVBJOjpPYmplY3QqIG9iamUKIAogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKIHsKLSAgICBpZiAoIWNh
blNlbmRNZXNzYWdlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgaGFuZGxlZCA9IGZh
bHNlOwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpQcm9jZXNzV2lsbFN1c3Bl
bmRJbW1pbmVudGx5KCksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpQcm9jZXNzV2lsbFN1c3BlbmRJ
bW1pbmVudGx5OjpSZXBseShoYW5kbGVkKSwgMCwgMV9zKTsKKyAgICBpZiAoY2FuU2VuZE1lc3Nh
Z2UoKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6UHJvY2Vzc1dpbGxTdXNw
ZW5kSW1taW5lbnRseSgpLCAwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRQcmVw
YXJlVG9TdXNwZW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
cm9jZXNzQXNzZXJ0aW9uSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nl
c3NBc3NlcnRpb25JT1MubW0KaW5kZXggZGMzNWFjY2U4ZDczYzQ1NWUwZjRjN2Q3ZDQ3ZjQ4ZTY0
MjFmZmEyMC4uMTFjZmJiNTFiYzEyM2QwMTdiMDc3NWI1ODQzNGFjMzU5ZGQ3NjE4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0K
QEAgLTM3LDYgKzM3LDExIEBACiAKIHVzaW5nIFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9u
OwogCisvLyBUaGlzIGdpdmVzIHNvbWUgdGltZSB0byBvdXIgY2hpbGQgcHJvY2Vzc2VzIHRvIHBy
b2Nlc3MgdGhlIFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkgSVBDIGJ1dCBtYWtlcyBzdXJl
IHdlIHJlbGVhc2UKKy8vIHRoZSBiYWNrZ3JvdW5kIHRhc2sgYmVmb3JlIHRoZSBVSUtpdCB0aW1l
b3V0IChXZSBnZXQga2lsbGVkIGlmIHdlIGRvIG5vdCByZWxlYXNlIHRoZSBiYWNrZ3JvdW5kIHRh
c2sgd2l0aGluIDUgc2Vjb25kcworLy8gb24gdGhlIGV4cGlyYXRpb24gaGFuZGxlciBnZXR0aW5n
IGNhbGxlZCkuCitzdGF0aWMgY29uc3QgU2Vjb25kcyByZWxlYXNlQmFja2dyb3VuZFRhc2tBZnRl
ckV4cGlyYXRpb25EZWxheSB7IDJfcyB9OworCiBAaW50ZXJmYWNlIFdLUHJvY2Vzc0Fzc2VydGlv
bkJhY2tncm91bmRUYXNrTWFuYWdlciA6IE5TT2JqZWN0CiAKICsgKFdLUHJvY2Vzc0Fzc2VydGlv
bkJhY2tncm91bmRUYXNrTWFuYWdlciAqKXNoYXJlZDsKQEAgLTUwLDcgKzU1LDggQEAgQGltcGxl
bWVudGF0aW9uIFdLUHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91bmRUYXNrTWFuYWdlcgogewogICAg
IFVJQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyIF9iYWNrZ3JvdW5kVGFzazsKICAgICBIYXNoU2V0
PFByb2Nlc3NBbmRVSUFzc2VydGlvbio+IF9hc3NlcnRpb25zTmVlZGluZ0JhY2tncm91bmRUYXNr
OwotICAgIEJPT0wgX2Fzc2VydGlvbkhhc0V4cGlyZWRJblRoZUJhY2tncm91bmQ7CisgICAgQk9P
TCBfYXBwbGljYXRpb25Jc0JhY2tncm91bmRlZDsKKyAgICBkaXNwYXRjaF9ibG9ja190IF9wZW5k
aW5nVGFza1JlbGVhc2VUYXNrOwogfQogCiArIChXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5k
VGFza01hbmFnZXIgKilzaGFyZWQKQEAgLTY4LDEwICs3NCwxNSBAQCAtIChpbnN0YW5jZXR5cGUp
aW5pdAogICAgIF9iYWNrZ3JvdW5kVGFzayA9IFVJQmFja2dyb3VuZFRhc2tJbnZhbGlkOwogCiAg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlckZvck5h
bWU6VUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24gb2JqZWN0OltV
SUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBxdWV1ZTpuaWwgdXNpbmdCbG9jazpeKE5T
Tm90aWZpY2F0aW9uICopIHsKLSAgICAgICAgX2Fzc2VydGlvbkhhc0V4cGlyZWRJblRoZUJhY2tn
cm91bmQgPSBOTzsKKyAgICAgICAgX2FwcGxpY2F0aW9uSXNCYWNrZ3JvdW5kZWQgPSBOTzsKKyAg
ICAgICAgW3NlbGYgX2NhbmNlbFBlbmRpbmdSZWxlYXNlVGFza107CiAgICAgICAgIFtzZWxmIF91
cGRhdGVCYWNrZ3JvdW5kVGFza107CiAgICAgfV07CiAKKyAgICBbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpVSUFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBs
aWNhdGlvbl0gcXVldWU6bmlsIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqKSB7CisgICAg
ICAgIF9hcHBsaWNhdGlvbklzQmFja2dyb3VuZGVkID0gWUVTOworICAgIH1dOworCiAgICAgcmV0
dXJuIHNlbGY7CiB9CiAKQEAgLTEwMSwxMiArMTEyLDM2IEBAIC0gKHZvaWQpX25vdGlmeUFzc2Vy
dGlvbnNPZkltbWluZW50U3VzcGVuc2lvbgogICAgICAgICBhc3NlcnRpb24tPnVpQXNzZXJ0aW9u
V2lsbEV4cGlyZUltbWluZW50bHkoKTsKIH0KIAorCistICh2b2lkKV9zY2hlZHVsZVJlbGVhc2VU
YXNrCit7CisgICAgQVNTRVJUKCFfcGVuZGluZ1Rhc2tSZWxlYXNlVGFzayk7CisgICAgaWYgKF9w
ZW5kaW5nVGFza1JlbGVhc2VUYXNrKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRh
c2tNYW5hZ2VyIC0gX3NjaGVkdWxlUmVsZWFzZVRhc2sgYmVjYXVzZSB0aGUgZXhwaXJhdGlvbiBo
YW5kbGVyIGhhcyBiZWVuIGNhbGxlZCIsIHNlbGYpOworICAgIF9wZW5kaW5nVGFza1JlbGVhc2VU
YXNrID0gZGlzcGF0Y2hfYmxvY2tfY3JlYXRlKChkaXNwYXRjaF9ibG9ja19mbGFnc190KTAsIF57
CisgICAgICAgIF9wZW5kaW5nVGFza1JlbGVhc2VUYXNrID0gbmlsOworICAgICAgICBbc2VsZiBf
cmVsZWFzZUJhY2tncm91bmRUYXNrXTsKKyAgICB9KTsKKyAgICBkaXNwYXRjaF9hZnRlcihkaXNw
YXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCByZWxlYXNlQmFja2dyb3VuZFRhc2tBZnRlckV4
cGlyYXRpb25EZWxheS52YWx1ZSgpICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgX3BlbmRpbmdUYXNrUmVsZWFzZVRhc2spOworfQorCistICh2b2lkKV9jYW5jZWxQ
ZW5kaW5nUmVsZWFzZVRhc2sKK3sKKyAgICBpZiAoIV9wZW5kaW5nVGFza1JlbGVhc2VUYXNrKQor
ICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVw
IC0gV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIC0gX2NhbmNlbFBlbmRp
bmdSZWxlYXNlVGFzayBiZWNhdXNlIHRoZSBhcHBsaWNhdGlvbiBpcyBmb3JlZ3JvdW5kIGFnYWlu
Iiwgc2VsZik7CisgICAgZGlzcGF0Y2hfYmxvY2tfY2FuY2VsKF9wZW5kaW5nVGFza1JlbGVhc2VU
YXNrKTsKKyAgICBfcGVuZGluZ1Rhc2tSZWxlYXNlVGFzayA9IG5pbDsKK30KKwogLSAodm9pZClf
dXBkYXRlQmFja2dyb3VuZFRhc2sKIHsKICAgICBpZiAoIV9hc3NlcnRpb25zTmVlZGluZ0JhY2tn
cm91bmRUYXNrLmlzRW1wdHkoKSAmJiBfYmFja2dyb3VuZFRhc2sgPT0gVUlCYWNrZ3JvdW5kVGFz
a0ludmFsaWQpIHsKLSAgICAgICAgaWYgKF9hc3NlcnRpb25IYXNFeHBpcmVkSW5UaGVCYWNrZ3Jv
dW5kKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyOiBJZ25vcmVkIHJl
cXVlc3QgdG8gc3RhcnQgYSBiYWNrZ3JvdW5kIHRhc2sgYmVjYXVzZSB3ZSdyZSBzdGlsbCBpbiB0
aGUgYmFja2dyb3VuZCBhbmQgdGhlIHByZXZpb3VzIHRhc2sgZXhwaXJlZCIsIHNlbGYpOwotICAg
ICAgICAgICAgLy8gT3VyIGludmFsaWRhdGlvbiBoYW5kbGVyIHdvdWxkIG5vdCBnZXQgY2FsbGVk
IGlmIHdlIHRyaWVkIHRvIHJlLXRha2UgYSBuZXcgYmFja2dyb3VuZCBhc3NlcnRpb24gYXQgdGhp
cyBwb2ludCwgYW5kIHRoZSBVSVByb2Nlc3Mgd291bGQgZ2V0IGtpbGxlZCAocmRhcjovL3Byb2Js
ZW0vNTAwMDE1MDUpLgorICAgICAgICBpZiAoX2FwcGxpY2F0aW9uSXNCYWNrZ3JvdW5kZWQpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBX
S1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01hbmFnZXI6IElnbm9yZWQgcmVxdWVzdCB0
byBzdGFydCBhIG5ldyBiYWNrZ3JvdW5kIHRhc2sgYmVjYXVzZSB0aGUgYXBwbGljYXRpb24gaXMg
YWxyZWFkeSBpbiB0aGUgYmFja2dyb3VuZCIsIHNlbGYpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBX
S1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01hbmFnZXIgLSBiZWdpbkJhY2tncm91bmRU
YXNrV2l0aE5hbWUiLCBzZWxmKTsKQEAgLTEyMSw5ICsxNTYsNyBAQCAtICh2b2lkKV91cGRhdGVC
YWNrZ3JvdW5kVGFzawogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAvLyBSZW1lbWJlciB0aGF0IHRoZSBhc3NlcnRpb24gaGFzIGV4cGlyZWQgaW4gdGhl
IGJhY2tncm91bmQgc28gd2UgZG8gbm90IHRyeSB0byByZS10YWtlIGl0IHVudGlsIHRoZSBhcHBs
aWNhdGlvbiBiZWNvbWVzIGZvcmVncm91bmQgYWdhaW4uCi0gICAgICAgICAgICBfYXNzZXJ0aW9u
SGFzRXhwaXJlZEluVGhlQmFja2dyb3VuZCA9IFlFUzsKLSAgICAgICAgICAgIFtzZWxmIF9yZWxl
YXNlQmFja2dyb3VuZFRhc2tdOworICAgICAgICAgICAgW3NlbGYgX3NjaGVkdWxlUmVsZWFzZVRh
c2tdOwogICAgICAgICB9XTsKICAgICB9IGVsc2UgaWYgKF9hc3NlcnRpb25zTmVlZGluZ0JhY2tn
cm91bmRUYXNrLmlzRW1wdHkoKSkKICAgICAgICAgW3NlbGYgX3JlbGVhc2VCYWNrZ3JvdW5kVGFz
a107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMjUyODM4N2Fi
M2I3YTIyNjgyODAzMGJlNzUyNTJkNDFjYTgzOGEwYS4uYjNlMjMzYjk4MzM2ZDI0YmIzZWJkMWM2
ZGRmNmI2YzEzOTAzNmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cApAQCAtNzMxLDggKzczMSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyCiB7CiAgICAgaWYg
KG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2RlciwgcmVwbHlFbmNvZGVyKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgZGlkUmVjZWl2ZVN5
bmNXZWJQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTQ4OSwxOSArMTQ4NywxMSBA
QCB2b2lkIFdlYlByb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVk
Z2VXaGVuUmVhZHlUb1N1c3BlbmQgc2hvdQogICAgIH0pOwogfQogCi12b2lkIFdlYlByb2Nlc3M6
OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNw
ZW5kSW1taW5lbnRseSgpCiB7Ci0gICAgaWYgKHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPmlu
U2VuZFN5bmMoKSkgewotICAgICAgICAvLyBBdm9pZCByZWVudHJlbmN5IGJ1Z3Mgc3VjaCBhcyBy
ZGFyOi8vcHJvYmxlbS8yMTYwNTUwNSBieSBqdXN0IGJhaWxpbmcKLSAgICAgICAgLy8gaWYgd2Ug
Z2V0IGFuIGluY29taW5nIFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkgbWVzc2FnZSB3aGVu
IHdhaXRpbmcgZm9yIGEKLSAgICAgICAgLy8gcmVwbHkgdG8gYSBzeW5jIG1lc3NhZ2UuCi0gICAg
ICAgIC8vIEZJWE1FOiBQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5IHNob3VsZCBub3QgYmUg
YSBzeW5jIG1lc3NhZ2UuCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
Ci0gICAgfQotCi0gICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlBy
b2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSIsIHRoaXMpOworICAgIFJFTEVB
U0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzOjpwcm9jZXNzV2lsbFN1
c3BlbmRJbW1pbmVudGx5KCkgQkVHSU4iLCB0aGlzKTsKICAgICBhY3R1YWxQcmVwYXJlVG9TdXNw
ZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpObyk7Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCAtIFdlYlByb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSBFTkQiLCB0aGlz
KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDMwYmQ1OWE3MTUyOTc0NzBkM2UyOTMyOTU5OTU3
ZTZkNGUyYTYwZDQuLjE3OTUwOTY2MWRjOGRlNWRlMTQwMDk0MDE5MWIxOWQ2MjAxYzNmMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMjE2LDcgKzIxNiw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0luY3JlYXNl
TGltaXQoaW50IG1pbGxpc2Vjb25kcyk7CiAKLSAgICB2b2lkIHByb2Nlc3NXaWxsU3VzcGVuZElt
bWluZW50bHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBwcm9j
ZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCk7CiAgICAgdm9pZCBwcmVwYXJlVG9TdXNwZW5kKCk7
CiAgICAgdm9pZCBjYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCk7CiAgICAgdm9pZCBwcm9jZXNzRGlk
UmVzdW1lKCk7CkBAIC00MTgsNyArNDE4LDYgQEAgcHJpdmF0ZToKIAogICAgIC8vIEltcGxlbWVu
dGVkIGluIGdlbmVyYXRlZCBXZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQg
ZGlkUmVjZWl2ZVdlYlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwog
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgc2V0U2NyZWVuUHJvcGVydGllcyhjb25zdCBX
ZWJDb3JlOjpTY3JlZW5Qcm9wZXJ0aWVzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDM4NDc0MTIxMWNkOTRjMTFiOTNkNzk3YWVm
Y2RiMGU2NTRmODA2ZDAuLmIzOWIzOGMxODNjNjYzMjdkNDJlNmVkZmYxNzZiYmExYzljYWJiMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC05Niw3ICs5Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIEVuc3VyZUF1dG9tYXRpb25TZXNzaW9uUHJveHkoU3RyaW5nIHNlc3Npb25JZGVudGlm
aWVyKQogICAgIERlc3Ryb3lBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkKIAotICAgIFByb2Nlc3NX
aWxsU3VzcGVuZEltbWluZW50bHkoKSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cworICAg
IFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKQogICAgIFByZXBhcmVUb1N1c3BlbmQoKQog
ICAgIENhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQogICAgIFByb2Nlc3NEaWRSZXN1bWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369964</attachid>
            <date>2019-05-15 10:13:55 -0700</date>
            <delta_ts>2019-05-15 11:29:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197893-20190515101355.patch</filename>
            <type>text/plain</type>
            <size>15231</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIyNWE4YjU0OWJkMGIyZGQz
ZmMxYTViYTA5MTRjNjBiZWNiOTE5MmMuLjAxZWY0MzZlZGZkY2RmZGQ5MDNhZmRlOWU2MmQyZjcz
YzhlZmVmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTktMDUtMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtpT1NdIFVJUHJvY2VzcyBt
YXkgZ2V0IGtpbGxlZCBiZWNhdXNlIGl0IGlzIHRha2luZyB0b28gbG9uZyB0byByZWxlYXNlIGl0
cyBiYWNrZ3JvdW5kIHRhc2sgYWZ0ZXIgZXhwaXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3ODkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81MDIzNDEwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisg
ICAgICAgIFRoZSBVSVByb2Nlc3MgbWF5IGdldCBraWxsZWQgYmVjYXVzZSBpdCBpcyB0YWtpbmcg
dG9vIGxvbmcgdG8gcmVsZWFzZSBpdHMgYmFja2dyb3VuZCB0YXNrIGFmdGVyIGl0cyBleHBpcmF0
aW9uIGhhbmRsZXIKKyAgICAgICAgd2FzIGNhbGxlZC4gVGhlIHJlYXNvbiBpcyB0aGF0IHRoZSBi
YWNrZ3JvdW5kIHRhc2sncyBleHBpcmF0aW9uIGhhbmRsZXIgd2FzIHNlcXVlbnRpYWxseSBzZW5k
aW5nIGEgUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseQorICAgICAgICBzeW5jaHJvbm91cyBJ
UEMgdG8gZWFjaCBvZiBpdHMgY2hpbGQgcHJvY2Vzc2VzIGFuZCBvbmx5IHRoZW4gZW5kcyB0aGUg
YmFja2dyb3VuZCB0YXNrLiBCeSB0aGUgdGltZSB3ZSByZWNlaXZlIHRoZSByZXNwb25zZSBmcm9t
CisgICAgICAgIGFsbCBjaGlsZCBwcm9jZXNzZXMsIGl0IG1heSBiZSB0b28gbGF0ZSBhbmQgd2Ug
Z2V0IGtpbGxlZC4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgd2Ugbm93OgorICAg
ICAgICAxLiBTZW5kIHRoZSBQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5IGFzeW5jaHJvbm91
c2x5IHNvIHRoYXQgYWxsIHByb2Nlc3NlcyBjYW4gZG8gdGhlaXIgcHJvY2Vzc2luZyBpbiBwYXJh
bGxlbAorICAgICAgICAyLiBBZnRlciAyIHNlY29uZHMsIHRoZSBVSVByb2Nlc3MgcmVsZWFzZXMg
dGhlIGJhY2tncm91bmQgdGFzayAoV2UgZ2V0IGtpbGxlZCBhZnRlciB+NSBzZWNvbmRzKQorCisg
ICAgICAgIEFsc28sIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBVSVByb2Nlc3Mgc3VwZW5kcyBwcm9t
cHRseSwgd2Ugbm93IG1ha2Ugc3VyZSB3ZSBuZXZlciBzdGFydCBhIG5ldyBiYWNrZ3JvdW5kIHRh
c2sgKmFmdGVyKgorICAgICAgICB0aGUgYXBwIGhhcyBiZWVuIGJhY2tncm91bmRlZC4gVGhlIGlu
dGVudGlvbiBvZiBvdXIgYmFja2dyb3VuZCB0YXNrIGlzIHRvbyBmaW5pc2ggY3JpdGljYWwgd29y
ayAobGlrZSByZWxlYXNpbmcgbG9ja2VkCisgICAgICAgIGZpbGVzKSBhZnRlciB0aGUgYXBwIGdl
dHMgYmFja2dyb3VuZGVkLCBub3QgdG8gc3RhcnQgbmV3IHdvcmsgYW5kIGRlbGF5IHByb2Nlc3Mg
c3VzcGVuc2lvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZElt
bWluZW50bHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1p
bmVudGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5l
bnRseSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tOgor
ICAgICAgICAoLVtXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01hbmFnZXIgaW5pdF0p
OgorICAgICAgICAoLVtXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01hbmFnZXIgX3Nj
aGVkdWxlUmVsZWFzZVRhc2tdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dy
b3VuZFRhc2tNYW5hZ2VyIF9jYW5jZWxQZW5kaW5nUmVsZWFzZVRhc2tdKToKKyAgICAgICAgKC1b
V0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIF91cGRhdGVCYWNrZ3JvdW5k
VGFza10pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbjoKKwogMjAxOS0wNS0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsbG93IE5TRmlsZUNvb3JkaW5hdG9yIHRvIGJl
IGNhbGxlZCBmcm9tIFdlYkNvbnRlbnQgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA5YzY0ODQ0NDljNmJhMjc1MDNjOGJj
MDVjNzA3MDliM2U0M2Y4OTQzLi5iNzc1ODg5MzgxMTgwY2Y3MzY0YzA2MmI5ZGNlOTQyYjVkYWJl
NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcApAQCAtMTk0OSwxNSArMTk0OSwxNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphY3R1YWxQ
cmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kCiAjZW5k
aWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRs
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpCiB7Ci0gICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcm9j
ZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkiLCB0aGlzKTsKKyAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZElt
bWluZW50bHkoKSBCRUdJTiIsIHRoaXMpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9pZGJTZXJ2
ZXJzLnZhbHVlcygpKQogICAgICAgICBzZXJ2ZXItPnRyeVN0b3AoSURCU2VydmVyOjpTaG91bGRG
b3JjZVN0b3A6Olllcyk7CiAjZW5kaWYKICAgICBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3Vs
ZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpObyk7Ci0gICAgY29tcGxldGlvbkhhbmRs
ZXIodHJ1ZSk7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdv
cmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkgRU5EIiwgdGhpcyk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGQ4NTYzZDIyYWI0Zjlj
MzFlZDVjZjE5NDNjNTNkMTViZDQyYWJiZWIuLjQwYTFhY2JiZjIyZDVlMTU3NTgzMGI0NzM3MmFm
NWIzZTZjNDNhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhbkhhbmRs
ZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYW5IYW5kbGVI
VFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsgfQogCi0gICAgdm9pZCBwcm9jZXNzV2lsbFN1c3Bl
bmRJbW1pbmVudGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpOwogICAgIHZvaWQgcHJlcGFyZVRvU3VzcGVu
ZCgpOwogICAgIHZvaWQgY2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpOwogICAgIHZvaWQgcHJvY2Vz
c0RpZFJlc3VtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMzViYzgyYjI4ZjFmN2U4ZTI2NDFhMzQy
MWYyNDcwNmRlMjJhYzVmOS4uNzRjNTAyNTM1MzhmMGEyYjY2ZTFiYmY5NTI4YTAyMWI0MGNhMmJl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC03Nyw3ICs3Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dy
b3VuZCgpCiAgICAgUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKQogCi0gICAgUHJv
Y2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpIC0+IChib29sIGhhbmRsZWQpIFN5bmNocm9ub3Vz
CisgICAgUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpCiAgICAgUHJlcGFyZVRvU3VzcGVu
ZCgpCiAgICAgQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCBhZjg1OWFlYzAzNjJlOTFmOTMwYjI4NmI4ZjQyZmMyMGZhODgz
MDQzLi5iOWFjNjc2YWRhZjFhNzUxNzE3ZGZkNGJkNDNjOGJlMDNmYTc4MTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKQEAgLTk1NywxMSArOTU3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxl
dGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDoKIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgp
CiB7Ci0gICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBi
b29sIGhhbmRsZWQgPSBmYWxzZTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OlByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5OjpSZXBseShoYW5kbGVkKSwgMCwgMV9z
KTsKKyAgICBpZiAoY2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSwgMCk7CiB9CiAgICAg
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ2NDI3ODFjMzVm
MGE2ZWU1N2VlMDRlMjIzYmM1ZWUxMzMzOTg4YzMuLjYyOTM0YzYyNmFiZDIwMmIwNjRmMzE2ZmZj
ZGNiZjliYWVmNWQwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTEzNywxMSArMTEzNyw4IEBAIFJlZlB0cjxBUEk6Ok9iamVjdD4gV2ViUHJv
Y2Vzc1Byb3h5Ojp0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKEFQSTo6T2JqZWN0KiBvYmplCiAK
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgp
CiB7Ci0gICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBi
b29sIGhhbmRsZWQgPSBmYWxzZTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
UHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpLCBNZXNzYWdlczo6V2ViUHJvY2Vzczo6UHJv
Y2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseTo6UmVwbHkoaGFuZGxlZCksIDAsIDFfcyk7CisgICAg
aWYgKGNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OlByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSwgMCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpzZW5kUHJlcGFyZVRvU3VzcGVuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tCmluZGV4IGRjMzVhY2NlOGQ3M2M0NTVl
MGY0YzdkN2Q0N2Y0OGU2NDIxZmZhMjAuLjJhY2E4NjhiYjhiNTcxMzE1OWM5MWQyYWJlNWZlY2E5
NDYxY2M3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9jZXNz
QXNzZXJ0aW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9jZXNz
QXNzZXJ0aW9uSU9TLm1tCkBAIC0zNyw2ICszNywxMSBAQAogCiB1c2luZyBXZWJLaXQ6OlByb2Nl
c3NBbmRVSUFzc2VydGlvbjsKIAorLy8gVGhpcyBnaXZlcyBzb21lIHRpbWUgdG8gb3VyIGNoaWxk
IHByb2Nlc3NlcyB0byBwcm9jZXNzIHRoZSBQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5IElQ
QyBidXQgbWFrZXMgc3VyZSB3ZSByZWxlYXNlCisvLyB0aGUgYmFja2dyb3VuZCB0YXNrIGJlZm9y
ZSB0aGUgVUlLaXQgdGltZW91dCAoV2UgZ2V0IGtpbGxlZCBpZiB3ZSBkbyBub3QgcmVsZWFzZSB0
aGUgYmFja2dyb3VuZCB0YXNrIHdpdGhpbiA1IHNlY29uZHMKKy8vIG9uIHRoZSBleHBpcmF0aW9u
IGhhbmRsZXIgZ2V0dGluZyBjYWxsZWQpLgorc3RhdGljIGNvbnN0IFNlY29uZHMgcmVsZWFzZUJh
Y2tncm91bmRUYXNrQWZ0ZXJFeHBpcmF0aW9uRGVsYXkgeyAyX3MgfTsKKwogQGludGVyZmFjZSBX
S1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01hbmFnZXIgOiBOU09iamVjdAogCiArIChX
S1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01hbmFnZXIgKilzaGFyZWQ7CkBAIC01MCw3
ICs1NSw4IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFz
a01hbmFnZXIKIHsKICAgICBVSUJhY2tncm91bmRUYXNrSWRlbnRpZmllciBfYmFja2dyb3VuZFRh
c2s7CiAgICAgSGFzaFNldDxQcm9jZXNzQW5kVUlBc3NlcnRpb24qPiBfYXNzZXJ0aW9uc05lZWRp
bmdCYWNrZ3JvdW5kVGFzazsKLSAgICBCT09MIF9hc3NlcnRpb25IYXNFeHBpcmVkSW5UaGVCYWNr
Z3JvdW5kOworICAgIEJPT0wgX2FwcGxpY2F0aW9uSXNCYWNrZ3JvdW5kZWQ7CisgICAgZGlzcGF0
Y2hfYmxvY2tfdCBfcGVuZGluZ1Rhc2tSZWxlYXNlVGFzazsKIH0KIAogKyAoV0tQcm9jZXNzQXNz
ZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyICopc2hhcmVkCkBAIC02OCwxMCArNzQsMTUgQEAg
LSAoaW5zdGFuY2V0eXBlKWluaXQKICAgICBfYmFja2dyb3VuZFRhc2sgPSBVSUJhY2tncm91bmRU
YXNrSW52YWxpZDsKIAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0g
YWRkT2JzZXJ2ZXJGb3JOYW1lOlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZp
Y2F0aW9uIG9iamVjdDpbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gcXVldWU6bmls
IHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqKSB7Ci0gICAgICAgIF9hc3NlcnRpb25IYXNF
eHBpcmVkSW5UaGVCYWNrZ3JvdW5kID0gTk87CisgICAgICAgIF9hcHBsaWNhdGlvbklzQmFja2dy
b3VuZGVkID0gTk87CisgICAgICAgIFtzZWxmIF9jYW5jZWxQZW5kaW5nUmVsZWFzZVRhc2tdOwog
ICAgICAgICBbc2VsZiBfdXBkYXRlQmFja2dyb3VuZFRhc2tdOwogICAgIH1dOwogCisgICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6VUlB
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6W1VJQXBwbGlj
YXRpb24gc2hhcmVkQXBwbGljYXRpb25dIHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOl4oTlNOb3RpZmlj
YXRpb24gKikgeworICAgICAgICBfYXBwbGljYXRpb25Jc0JhY2tncm91bmRlZCA9IFlFUzsKKyAg
ICB9XTsKKwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC0xMDEsMTIgKzExMiw0MCBAQCAtICh2
b2lkKV9ub3RpZnlBc3NlcnRpb25zT2ZJbW1pbmVudFN1c3BlbnNpb24KICAgICAgICAgYXNzZXJ0
aW9uLT51aUFzc2VydGlvbldpbGxFeHBpcmVJbW1pbmVudGx5KCk7CiB9CiAKKworLSAodm9pZClf
c2NoZWR1bGVSZWxlYXNlVGFzaworeworICAgIEFTU0VSVCghX3BlbmRpbmdUYXNrUmVsZWFzZVRh
c2spOworICAgIGlmIChfcGVuZGluZ1Rhc2tSZWxlYXNlVGFzaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdLUHJvY2Vzc0Fzc2Vy
dGlvbkJhY2tncm91bmRUYXNrTWFuYWdlciAtIF9zY2hlZHVsZVJlbGVhc2VUYXNrIGJlY2F1c2Ug
dGhlIGV4cGlyYXRpb24gaGFuZGxlciBoYXMgYmVlbiBjYWxsZWQiLCBzZWxmKTsKKyAgICBfcGVu
ZGluZ1Rhc2tSZWxlYXNlVGFzayA9IGRpc3BhdGNoX2Jsb2NrX2NyZWF0ZSgoZGlzcGF0Y2hfYmxv
Y2tfZmxhZ3NfdCkwLCBeeworICAgICAgICBfcGVuZGluZ1Rhc2tSZWxlYXNlVGFzayA9IG5pbDsK
KyAgICAgICAgW3NlbGYgX3JlbGVhc2VCYWNrZ3JvdW5kVGFza107CisgICAgfSk7CisgICAgZGlz
cGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgcmVsZWFzZUJhY2tn
cm91bmRUYXNrQWZ0ZXJFeHBpcmF0aW9uRGVsYXkudmFsdWUoKSAqIE5TRUNfUEVSX1NFQyksIGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF9wZW5kaW5nVGFza1JlbGVhc2VUYXNrKTsKKyNpZiAh
X19oYXNfZmVhdHVyZShvYmpjX2FyYykKKyAgICAvLyBkaXNwYXRjaF9hc3luYygpIGRvZXMgYSBC
bG9ja19jb3B5KCkgLyBCbG9ja19yZWxlYXNlKCkgb24gYmVoYWxmIG9mIHRoZSBjYWxsZXIuCisg
ICAgQmxvY2tfcmVsZWFzZShfcGVuZGluZ1Rhc2tSZWxlYXNlVGFzayk7CisjZW5kaWYKK30KKwor
LSAodm9pZClfY2FuY2VsUGVuZGluZ1JlbGVhc2VUYXNrCit7CisgICAgaWYgKCFfcGVuZGluZ1Rh
c2tSZWxlYXNlVGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIFdLUHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91bmRUYXNrTWFuYWdl
ciAtIF9jYW5jZWxQZW5kaW5nUmVsZWFzZVRhc2sgYmVjYXVzZSB0aGUgYXBwbGljYXRpb24gaXMg
Zm9yZWdyb3VuZCBhZ2FpbiIsIHNlbGYpOworICAgIGRpc3BhdGNoX2Jsb2NrX2NhbmNlbChfcGVu
ZGluZ1Rhc2tSZWxlYXNlVGFzayk7CisgICAgX3BlbmRpbmdUYXNrUmVsZWFzZVRhc2sgPSBuaWw7
Cit9CisKIC0gKHZvaWQpX3VwZGF0ZUJhY2tncm91bmRUYXNrCiB7CiAgICAgaWYgKCFfYXNzZXJ0
aW9uc05lZWRpbmdCYWNrZ3JvdW5kVGFzay5pc0VtcHR5KCkgJiYgX2JhY2tncm91bmRUYXNrID09
IFVJQmFja2dyb3VuZFRhc2tJbnZhbGlkKSB7Ci0gICAgICAgIGlmIChfYXNzZXJ0aW9uSGFzRXhw
aXJlZEluVGhlQmFja2dyb3VuZCkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJv
Y2Vzc1N1c3BlbnNpb24sICIlcCAtIFdLUHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91bmRUYXNrTWFu
YWdlcjogSWdub3JlZCByZXF1ZXN0IHRvIHN0YXJ0IGEgYmFja2dyb3VuZCB0YXNrIGJlY2F1c2Ug
d2UncmUgc3RpbGwgaW4gdGhlIGJhY2tncm91bmQgYW5kIHRoZSBwcmV2aW91cyB0YXNrIGV4cGly
ZWQiLCBzZWxmKTsKLSAgICAgICAgICAgIC8vIE91ciBpbnZhbGlkYXRpb24gaGFuZGxlciB3b3Vs
ZCBub3QgZ2V0IGNhbGxlZCBpZiB3ZSB0cmllZCB0byByZS10YWtlIGEgbmV3IGJhY2tncm91bmQg
YXNzZXJ0aW9uIGF0IHRoaXMgcG9pbnQsIGFuZCB0aGUgVUlQcm9jZXNzIHdvdWxkIGdldCBraWxs
ZWQgKHJkYXI6Ly9wcm9ibGVtLzUwMDAxNTA1KS4KKyAgICAgICAgaWYgKF9hcHBsaWNhdGlvbklz
QmFja2dyb3VuZGVkKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3Vz
cGVuc2lvbiwgIiVwIC0gV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyOiBJ
Z25vcmVkIHJlcXVlc3QgdG8gc3RhcnQgYSBuZXcgYmFja2dyb3VuZCB0YXNrIGJlY2F1c2UgdGhl
IGFwcGxpY2F0aW9uIGlzIGFscmVhZHkgaW4gdGhlIGJhY2tncm91bmQiLCBzZWxmKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3Vz
cGVuc2lvbiwgIiVwIC0gV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIC0g
YmVnaW5CYWNrZ3JvdW5kVGFza1dpdGhOYW1lIiwgc2VsZik7CkBAIC0xMjEsOSArMTYwLDcgQEAg
LSAodm9pZClfdXBkYXRlQmFja2dyb3VuZFRhc2sKICAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhhdCB0aGUgYXNzZXJ0aW9uIGhh
cyBleHBpcmVkIGluIHRoZSBiYWNrZ3JvdW5kIHNvIHdlIGRvIG5vdCB0cnkgdG8gcmUtdGFrZSBp
dCB1bnRpbCB0aGUgYXBwbGljYXRpb24gYmVjb21lcyBmb3JlZ3JvdW5kIGFnYWluLgotICAgICAg
ICAgICAgX2Fzc2VydGlvbkhhc0V4cGlyZWRJblRoZUJhY2tncm91bmQgPSBZRVM7Ci0gICAgICAg
ICAgICBbc2VsZiBfcmVsZWFzZUJhY2tncm91bmRUYXNrXTsKKyAgICAgICAgICAgIFtzZWxmIF9z
Y2hlZHVsZVJlbGVhc2VUYXNrXTsKICAgICAgICAgfV07CiAgICAgfSBlbHNlIGlmIChfYXNzZXJ0
aW9uc05lZWRpbmdCYWNrZ3JvdW5kVGFzay5pc0VtcHR5KCkpCiAgICAgICAgIFtzZWxmIF9yZWxl
YXNlQmFja2dyb3VuZFRhc2tdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDk3YjgzMDU4ODBlZWJmNDQyZWFkNDk0Y2I1YzNlNTAxN2EyZjBlMDQuLmQyMWJiZjY3
ZmQyNzY1NjMwMTFkNjVjZWI1ZDg3NmYyNzY4YzE2MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTczMiw4ICs3MzIsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlcgogewogICAgIGlmIChtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaFN5bmNNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlcikpCiAgICAgICAgIHJldHVybjsKLQot
ICAgIGRpZFJlY2VpdmVTeW5jV2ViUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTE0
OTAsMTkgKzE0ODgsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5k
KFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kIHNob3UKICAgICB9KTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3M6
OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKQogewotICAgIGlmIChwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5pblNlbmRTeW5jKCkpIHsKLSAgICAgICAgLy8gQXZvaWQgcmVlbnRyZW5j
eSBidWdzIHN1Y2ggYXMgcmRhcjovL3Byb2JsZW0vMjE2MDU1MDUgYnkganVzdCBiYWlsaW5nCi0g
ICAgICAgIC8vIGlmIHdlIGdldCBhbiBpbmNvbWluZyBQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVu
dGx5IG1lc3NhZ2Ugd2hlbiB3YWl0aW5nIGZvciBhCi0gICAgICAgIC8vIHJlcGx5IHRvIGEgc3lu
YyBtZXNzYWdlLgotICAgICAgICAvLyBGSVhNRTogUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRs
eSBzaG91bGQgbm90IGJlIGEgc3luYyBtZXNzYWdlLgotICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOwotICAgIH0KLQotICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAiJXAgLSBXZWJQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkiLCB0
aGlzKTsKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vz
czo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpIEJFR0lOIiwgdGhpcyk7CiAgICAgYWN0
dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6
Tm8pOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVu
dGx5KCkgRU5EIiwgdGhpcyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVu
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA0YjZkZGM2OTM0NzY4
MzNkZmIzZGExMDI1YjI1YWZiMDkxMWQzNDFmLi45NmQzY2U5NTNkMzBkNGU0M2Y1NDY3NTU5NDE5
ODhjNjhjMmRiMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTIx
Niw3ICsyMTYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEhpZGRlblBhZ2VET01UaW1lclRo
cm90dGxpbmdJbmNyZWFzZUxpbWl0KGludCBtaWxsaXNlY29uZHMpOwogCi0gICAgdm9pZCBwcm9j
ZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworICAgIHZvaWQgcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpOwogICAgIHZvaWQgcHJl
cGFyZVRvU3VzcGVuZCgpOwogICAgIHZvaWQgY2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpOwogICAg
IHZvaWQgcHJvY2Vzc0RpZFJlc3VtZSgpOwpAQCAtNDIwLDcgKzQyMCw2IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZl
ci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2ViUHJvY2Vzc01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHNldFNjcmVlblBy
b3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAzODQ3NDEyMTFj
ZDk0YzExYjkzZDc5N2FlZmNkYjBlNjU0ZjgwNmQwLi5iMzliMzhjMTgzYzY2MzI3ZDQyZTZlZGZm
MTc2YmJhMWM5Y2FiYjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtOTYsNyArOTYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBFbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KFN0cmlu
ZyBzZXNzaW9uSWRlbnRpZmllcikKICAgICBEZXN0cm95QXV0b21hdGlvblNlc3Npb25Qcm94eSgp
CiAKLSAgICBQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkgLT4gKGJvb2wgaGFuZGxlZCkg
U3luY2hyb25vdXMKKyAgICBQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKICAgICBQcmVw
YXJlVG9TdXNwZW5kKCkKICAgICBDYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkKICAgICBQcm9jZXNz
RGlkUmVzdW1lKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>