<?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>235646</bug_id>
          
          <creation_ts>2022-01-26 09:08:40 -0800</creation_ts>
          <short_desc>AX ITM: Defer to the tree when determining AX object loading progress</short_desc>
          <delta_ts>2022-01-27 12:47:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</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="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1834115</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-26 09:08:40 -0800</bug_when>
    <thetext>Currently, we set AXPropertyName::IsLoaded and AXPropertyName::EstimatedLoadingProgress once in AXIsolatedObject::initializeAttributeData and never update it.

This means that if an object is created while the page is at some non-100% load percentage, AX clients will always think the object isn&apos;t loaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834116</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-26 09:08:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/88078376&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834137</commentid>
    <comment_count>2</comment_count>
      <attachid>450031</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-26 09:58:11 -0800</bug_when>
    <thetext>Created attachment 450031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834150</commentid>
    <comment_count>3</comment_count>
      <attachid>450034</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-26 10:13:33 -0800</bug_when>
    <thetext>Created attachment 450034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834174</commentid>
    <comment_count>4</comment_count>
      <attachid>450038</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-26 11:06:38 -0800</bug_when>
    <thetext>Created attachment 450038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834187</commentid>
    <comment_count>5</comment_count>
      <attachid>450042</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-26 11:23:41 -0800</bug_when>
    <thetext>Created attachment 450042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834189</commentid>
    <comment_count>6</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-01-26 11:24:53 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #3)
&gt; Created attachment 450034 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AXObjectCache.cpp
+++ a/Source/WebCore/accessibility/AXObjectCache.cpp

+        m_estimatedLoadingProgress = newProgressValue;

Why estimated? This is the best we are going to know, right? So for us is the truth.

--- a/Source/WebCore/accessibility/AXObjectCache.h
+++ a/Source/WebCore/accessibility/AXObjectCache.h

+    void updateEstimatedLoadingProgress(double);
+    void loadingProgressFinished() { updateEstimatedLoadingProgress(1); }
+    double estimatedLoadingProgress() const { return m_estimatedLoadingProgress; }

consider updateLoadingProgress, loadingFinished and loadingProgress instead.

--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
+++ a/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h

-    double estimatedLoadingProgress() const override { return doubleAttributeValue(AXPropertyName::EstimatedLoadingProgress); }
+    double estimatedLoadingProgress() const override { return tree()-&gt;estimatedLoadingProgress(); }

Would get rid of &quot;estimated&quot;. We are not estimating anything.

--- a/Source/WebCore/page/Page.cpp
+++ a/Source/WebCore/page/Page.cpp

+void Page::progressEstimateChanged(Frame&amp; frameWithProgressUpdate) const
+{
+    if (auto* document = frameWithProgressUpdate.document()) {
+        if (auto* axObjectCache = document-&gt;axObjectCache())
+            axObjectCache-&gt;updateEstimatedLoadingProgress(progress().estimatedProgress());
+    }
+}
+
+void Page::progressFinished(Frame&amp; frameWithCompletedProgress) const
+{
+    if (auto* document = frameWithCompletedProgress.document()) {
+        if (auto* axObjectCache = document-&gt;axObjectCache())
+            axObjectCache-&gt;loadingProgressFinished();
+    }
+}
+
Perhaps we want to do document-&gt;axObjectCacheIfExist() instead? Because I think document-&gt;axObjectCache() creates it if it doesn&apos;t exist, but I&apos;m going by memory here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834214</commentid>
    <comment_count>7</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-26 11:46:20 -0800</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #6)
&gt; (In reply to Tyler Wilcock from comment #3)
&gt; &gt; Created attachment 450034 [details]
&gt; &gt; Patch
&gt; 
&gt; --- a/Source/WebCore/accessibility/AXObjectCache.cpp
&gt; +++ a/Source/WebCore/accessibility/AXObjectCache.cpp
&gt; 
&gt; +        m_estimatedLoadingProgress = newProgressValue;
&gt; 
&gt; Why estimated? This is the best we are going to know, right? So for us is
&gt; the truth.
&gt; 
&gt; --- a/Source/WebCore/accessibility/AXObjectCache.h
&gt; +++ a/Source/WebCore/accessibility/AXObjectCache.h
&gt; 
&gt; +    void updateEstimatedLoadingProgress(double);
&gt; +    void loadingProgressFinished() { updateEstimatedLoadingProgress(1); }
&gt; +    double estimatedLoadingProgress() const { return
&gt; m_estimatedLoadingProgress; }
&gt; 
&gt; consider updateLoadingProgress, loadingFinished and loadingProgress instead.
&gt; 
&gt; --- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
&gt; +++ a/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
&gt; 
&gt; -    double estimatedLoadingProgress() const override { return
&gt; doubleAttributeValue(AXPropertyName::EstimatedLoadingProgress); }
&gt; +    double estimatedLoadingProgress() const override { return
&gt; tree()-&gt;estimatedLoadingProgress(); }
&gt; 
&gt; Would get rid of &quot;estimated&quot;. We are not estimating anything.
&gt; 
&gt; --- a/Source/WebCore/page/Page.cpp
&gt; +++ a/Source/WebCore/page/Page.cpp
&gt; 
&gt; +void Page::progressEstimateChanged(Frame&amp; frameWithProgressUpdate) const
&gt; +{
&gt; +    if (auto* document = frameWithProgressUpdate.document()) {
&gt; +        if (auto* axObjectCache = document-&gt;axObjectCache())
&gt; +           
&gt; axObjectCache-&gt;updateEstimatedLoadingProgress(progress().
&gt; estimatedProgress());
&gt; +    }
&gt; +}
&gt; +
&gt; +void Page::progressFinished(Frame&amp; frameWithCompletedProgress) const
&gt; +{
&gt; +    if (auto* document = frameWithCompletedProgress.document()) {
&gt; +        if (auto* axObjectCache = document-&gt;axObjectCache())
&gt; +            axObjectCache-&gt;loadingProgressFinished();
&gt; +    }
&gt; +}
&gt; +
&gt; Perhaps we want to do document-&gt;axObjectCacheIfExist() instead? Because I
&gt; think document-&gt;axObjectCache() creates it if it doesn&apos;t exist, but I&apos;m
&gt; going by memory here.
Ah, axObjectCacheIfExists() is definitely what we want. Thanks!

I chose to name things like &quot;estimatedLoadingProgress&quot; instead of &quot;loadingProgress&quot; to be consistent with that naming in ProgressTracker, and in the AXCoreObject interface, which has a method called estimatedLoadingProgress.

I do agree that &quot;loading progress&quot; is better naming than &quot;estimated loading progress&quot;, so I&apos;m going to fix this by renaming the AXCoreObject interface method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834231</commentid>
    <comment_count>8</comment_count>
      <attachid>450054</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-26 12:16:32 -0800</bug_when>
    <thetext>Created attachment 450054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834300</commentid>
    <comment_count>9</comment_count>
      <attachid>450071</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-26 14:35:23 -0800</bug_when>
    <thetext>Created attachment 450071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834314</commentid>
    <comment_count>10</comment_count>
      <attachid>450076</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-26 15:17:13 -0800</bug_when>
    <thetext>Created attachment 450076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834338</commentid>
    <comment_count>11</comment_count>
      <attachid>450076</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-01-26 15:58:06 -0800</bug_when>
    <thetext>Comment on attachment 450076
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.h:529
&gt; +    double m_loadingProgress { 0.25 };

how come default is .25

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:363
&gt; +    void updateLoadingProgress(double newProgress);

not necessary to name newProgress here

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:416
&gt; +    double m_loadingProgress { 0.25 };

defaults .25?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834359</commentid>
    <comment_count>12</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-26 16:58:08 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #11)
&gt; Comment on attachment 450076 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450076&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.h:529
&gt; &gt; +    double m_loadingProgress { 0.25 };
&gt; 
&gt; how come default is .25
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:363
&gt; &gt; +    void updateLoadingProgress(double newProgress);
&gt; 
&gt; not necessary to name newProgress here
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:416
&gt; &gt; +    double m_loadingProgress { 0.25 };
&gt; 
&gt; defaults .25?
The default is mostly arbitrary so long as it&apos;s not 100% since it will be overwritten as the page loads / reloads. I figured that by the time the cache / tree is created, we can guess the page will be at least 25% loaded, but no science there. In my testing this default is never actually used, but we should default initialize the value to something if not this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834361</commentid>
    <comment_count>13</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-01-26 16:59:20 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #12)
&gt; (In reply to chris fleizach from comment #11)
&gt; &gt; Comment on attachment 450076 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=450076&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AXObjectCache.h:529
&gt; &gt; &gt; +    double m_loadingProgress { 0.25 };
&gt; &gt; 
&gt; &gt; how come default is .25
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:363
&gt; &gt; &gt; +    void updateLoadingProgress(double newProgress);
&gt; &gt; 
&gt; &gt; not necessary to name newProgress here
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:416
&gt; &gt; &gt; +    double m_loadingProgress { 0.25 };
&gt; &gt; 
&gt; &gt; defaults .25?
&gt; The default is mostly arbitrary so long as it&apos;s not 100% since it will be
&gt; overwritten as the page loads / reloads. I figured that by the time the
&gt; cache / tree is created, we can guess the page will be at least 25% loaded,
&gt; but no science there. In my testing this default is never actually used, but
&gt; we should default initialize the value to something if not this.

Ok if it doesn&apos;t matter, might be less confusing to just leave as zero (for other programmers looking at this)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834362</commentid>
    <comment_count>14</comment_count>
      <attachid>450085</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-26 17:00:14 -0800</bug_when>
    <thetext>Created attachment 450085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834365</commentid>
    <comment_count>15</comment_count>
      <attachid>450086</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-26 17:04:03 -0800</bug_when>
    <thetext>Created attachment 450086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834366</commentid>
    <comment_count>16</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-26 17:04:39 -0800</bug_when>
    <thetext>&gt; Ok if it doesn&apos;t matter, might be less confusing to just leave as zero (for
&gt; other programmers looking at this)
OK, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834544</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-27 08:52:41 -0800</bug_when>
    <thetext>Committed r288674 (246480@main): &lt;https://commits.webkit.org/246480@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450086.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834650</commentid>
    <comment_count>18</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-27 12:38:58 -0800</bug_when>
    <thetext>This broke !ENABLE(ACCESSIBILITY) builds because updateLoadingProgress wasn&apos;t added to in the block of inlined methods below.

Following up in with a patch in https://bugs.webkit.org/show_bug.cgi?id=235727</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834653</commentid>
    <comment_count>19</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-27 12:46:20 -0800</bug_when>
    <thetext>Sorry about that. Thanks for fixing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834655</commentid>
    <comment_count>20</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-27 12:47:48 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #19)
&gt; Sorry about that. Thanks for fixing it.

No worries it happens since none of the EWS bots are !ENABLE(ACCESSIBILITY).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450031</attachid>
            <date>2022-01-26 09:58:11 -0800</date>
            <delta_ts>2022-01-26 10:17:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235646-20220126115810.patch</filename>
            <type>text/plain</type>
            <size>25729</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVkNDQ2YjQ0OGI5ZjIz
YmExZmNmMDI2MzVkYTcyYmUwMTVjMTlkZi4uZDMxMzJiMGI3MDA2Zjg5M2Q1MGRmZmUyZGYyNWZk
OWMwMmY4YWEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIyLTAxLTI2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSVRNOiBEZWZlciB0
byB0aGUgdHJlZSB3aGVuIGRldGVybWluaW5nIEFYIG9iamVjdCBsb2FkaW5nIHByb2dyZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2NDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHks
IHdlIHNldCBBWFByb3BlcnR5TmFtZTo6SXNMb2FkZWQgYW5kIEFYUHJvcGVydHlOYW1lOjpFc3Rp
bWF0ZWRMb2FkaW5nUHJvZ3Jlc3MKKyAgICAgICAgb25jZSBpbiBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YSBhbmQgbmV2ZXIgdXBkYXRlIGl0LiBUaGlzIG1lYW5zIHRo
YXQKKyAgICAgICAgaWYgYW4gb2JqZWN0IGlzIGNyZWF0ZWQgd2hpbGUgdGhlIHBhZ2UgaXMgYXQg
c29tZSBub24tMTAwJSBsb2FkIHBlcmNlbnRhZ2UsIEFYIGNsaWVudHMKKyAgICAgICAgdGhhdCBy
ZXF1ZXN0IHRoZXNlIGF0dHJpYnV0ZXMgd2lsbCBhbHdheXMgdGhpbmsgdGhlIG9iamVjdCBpc24n
dCBsb2FkZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZXNlIHR3byBwcm9wZXJ0
aWVzIGFuZCBpbnN0ZWFkIGRlZmVycyB0byB0aGUgaXNvbGF0ZWQgdHJlZSBhc3NvY2lhdGVkCisg
ICAgICAgIHdpdGggZWFjaCBvYmplY3Qgd2hlbiBkZXRlcm1pbmluZyB0aGUgbG9hZCBwZXJjZW50
YWdlLiBCb3RoIG9mIHRoZXNlIHByb3BlcnRpZXMgd2VyZSBiYXNlZAorICAgICAgICBvbiB0aGUg
ZW50aXJlIHBhZ2UgLyBkb2N1bWVudCBsb2FkIHByb2dyZXNzIGFueXdheXMsIHNvIGl0IGRvZXNu
J3QgbWFrZSBzZW5zZSB0byBzZXQgdGhlCisgICAgICAgIHNhbWUgdmFsdWUgZm9yIGFsbCBvZiB0
aGVtLgorCisgICAgICAgIFdlIHRyYWNrIGxvYWRpbmcgcHJvZ3Jlc3MgYnkgY2hhbmdpbmcgUHJv
Z3Jlc3NUcmFja2VyIHRvIGFsc28gbm90aWZ5CisgICAgICAgIHRoZSBwYWdlIHdoZW4gcHJvZ3Jl
c3MgY2hhbmdlcywgd2hpY2ggaW4gdHVybiB1cGRhdGVzIHRoZSBhc3NvY2lhdGVkCisgICAgICAg
IEFYT2JqZWN0Q2FjaGUgd2l0aCB0aGUgbmV3IHByb2dyZXNzIHZhbHVlLgorCisgICAgICAgIENv
dmVyZWQgYnkgYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIHdoaWNo
IHZlcmlmaWVzIHRoZSBBWExvYWQgYW5kCisgICAgICAgIEFYTG9hZGluZ1Byb2dyZXNzIGF0dHJp
YnV0ZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dXBkYXRlRXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzKToKKyAgICAgICAgQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpsb2FkaW5nUHJvZ3Jlc3NG
aW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplc3RpbWF0ZWRMb2Fk
aW5nUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkVHJlZTo6dXBkYXRlRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKToKKyAgICAgICAgQXBw
bHkgbV9wZW5kaW5nRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKToKKyAgICAgICAgQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6V1RGX0dVQVJERURfQllfTE9DSyk6
CisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQcm9ncmVzc1RyYWNrZXI6OlByb2dyZXNzVHJhY2tlcik6CisgICAgICAgIFN0b3JlIGEgcmVm
ZXJlbmNlIHRvIHRoZSBhc3NvY2lhdGVkIHBhZ2UgaW4gbmV3IG1fcGFnZSBtZW1iZXIuCisgICAg
ICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKToK
KyAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmZpbmFs
UHJvZ3Jlc3NDb21wbGV0ZSk6CisgICAgICAgIE5vdGlmeSB0aGUgUGFnZSB3aGVuIHByb2dyZXNz
IGlzIGNvbXBsZXRlLgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1l
bnRQcm9ncmVzcyk6CisgICAgICAgIE5vdGlmeSB0aGUgUGFnZSB3aGVuIHByb2dyZXNzIGNoYW5n
ZXMuCisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnByb2dyZXNzRmluaXNoZWQgY29uc3QpOgorICAgICAgICBBZGRlZC4gTm90aWZ5
IHRoZSBBWE9iamVjdENhY2hlIHdoZW4gbG9hZGluZyBwcm9ncmVzcyBjaGFuZ2VzLgorICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorCiAyMDIyLTAxLTI1ICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWth
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViSURMXSBSZW1vdmUgdGhlIG5vdy11bnVzZWQgW0N1
c3RvbUVuYWJsZWRdIGV4dGVuZGVkIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggMTI0Y2Q5ZTkxOTVjNDFmZTRkYTQxMzJj
Y2JmNTBjNTAwNjA2MjYzYS4uZDlkNGYwNWFkNDhjOWU1ZTQ3YzFhOTY4ZjJkMDFjOGVmMDAxNjky
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CkBAIC05NzEsNiArOTcxLDIwIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlQ2FjaGVBZnRl
ck5vZGVJc0F0dGFjaGVkKE5vZGUqIG5vZGUpCiAgICAgZ2V0KG5vZGUpOwogfQogCit2b2lkIEFY
T2JqZWN0Q2FjaGU6OnVwZGF0ZUVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyhkb3VibGUgbmV3UHJv
Z3Jlc3NWYWx1ZSkKK3sKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobmV3UHJvZ3Jlc3NWYWx1ZSA+PSAwICYmIG5ld1Byb2dy
ZXNzVmFsdWUgPD0gMSwgInVuZXhwZWN0ZWQgbG9hZGluZyBwcm9ncmVzcyB2YWx1ZTogJWYiLCBu
ZXdQcm9ncmVzc1ZhbHVlKTsKKyAgICBpZiAobV9wYWdlSUQpIHsKKyAgICAgICAgLy8gU29tZXRp
bWVzIHRoZSBpc29sYXRlZCB0cmVlIGhhc24ndCBiZWVuIGNyZWF0ZWQgYnkgdGhlIHRpbWUgd2Ug
Z2V0IGxvYWRpbmcgcHJvZ3Jlc3MgdXBkYXRlcywKKyAgICAgICAgLy8gc28gY2FjaGUgdGhpcyB2
YWx1ZSBpbiB0aGUgQVhPYmplY3RDYWNoZSB0b28gc28gd2UgY2FuIGdpdmUgaXQgdG8gdGhlIHRy
ZWUgdXBvbiBjcmVhdGlvbi4KKyAgICAgICAgbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MgPSBu
ZXdQcm9ncmVzc1ZhbHVlOworICAgICAgICBpZiAoYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6
OnRyZWVGb3JQYWdlSUQoKm1fcGFnZUlEKSkKKyAgICAgICAgICAgIHRyZWUtPnVwZGF0ZUVzdGlt
YXRlZExvYWRpbmdQcm9ncmVzcyhuZXdQcm9ncmVzc1ZhbHVlKTsKKyAgICB9CisjZW5kaWYKK30K
Kwogdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVDaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0
eU9iamVjdCYgb2JqZWN0KQogewogICAgIC8vIEhhbmRsZSBNZW51TGlzdHMgYW5kIE1lbnVMaXN0
UG9wdXBzIGFzIHNwZWNpYWwgY2FzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5oCmluZGV4IDI5ODBhMWZiOGFhYTkxYjU3ZDcxYzYyYzZmMmNkZGRjMjQ1
OTYwOWYuLjA0Y2MzOWJiODBlMTIyMDM4OTlkMzBkYTY1ZThkMWZmYTllOWU5MmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0xODcsNiArMTg3
LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKik7CiAgICAg
Ly8gQ2FsbGVkIHdoZW4gYSBub2RlIGhhcyBqdXN0IGJlZW4gYXR0YWNoZWQsIHNvIHdlIGNhbiBt
YWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgc3ViY2xhc3Mgb2YgQWNjZXNzaWJpbGl0eU9iamVj
dC4KICAgICB2b2lkIHVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKik7CisgICAg
dm9pZCB1cGRhdGVFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoZG91YmxlKTsKKyAgICB2b2lkIGxv
YWRpbmdQcm9ncmVzc0ZpbmlzaGVkKCkgeyB1cGRhdGVFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3Mo
MSk7IH0KKyAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgeyByZXR1
cm4gbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3M7IH0KIAogICAgIHZvaWQgZGVmZXJGb2N1c2Vk
VUlFbGVtZW50Q2hhbmdlSWZOZWVkZWQoTm9kZSogb2xkRm9jdXNlZE5vZGUsIE5vZGUqIG5ld0Zv
Y3VzZWROb2RlKTsKICAgICB2b2lkIGRlZmVyTW9kYWxDaGFuZ2UoRWxlbWVudCopOwpAQCAtNTIz
LDYgKzUyNiw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxOb2RlKiwgTm9kZSo+
PiBtX2RlZmVycmVkRm9jdXNlZE5vZGVDaGFuZ2U7CiAgICAgYm9vbCBtX2lzU3luY2hyb25pemlu
Z1NlbGVjdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BlcmZvcm1pbmdEZWZlcnJlZENhY2hl
VXBkYXRlIHsgZmFsc2UgfTsKKyAgICBkb3VibGUgbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3Mg
eyAwLjI1IH07CiAKICNpZiBVU0UoQVRLKQogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxBY2Nlc3Np
YmlsaXR5T2JqZWN0Pj4gbV9kZWZlcnJlZEF0dGFjaGVkV3JhcHBlck9iamVjdExpc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IGVjZjgxOGIxYTZiMTYyNzI3MDM4MGJjZTg4NmY5
YTYwNGNmYTc3YWYuLjgyYzdjMWRjZjdkMmZiMjM4MmZjMDVjNjY4YzI4Njg4NDhiYTMyNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0xMTAsNyArMTEwLDYgQEAgdm9pZCBBWElz
b2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIGNvcmVP
YmplY3QsIGJvb2wgaXMKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNMaW5rLCBv
YmplY3QuaXNMaW5rKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0xpbmtl
ZCwgb2JqZWN0LmlzTGlua2VkKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJ
c0xpc3QsIG9iamVjdC5pc0xpc3QoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OklzTG9hZGVkLCBvYmplY3QuaXNMb2FkZWQoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OklzTWVkaWFUaW1lbGluZSwgb2JqZWN0LmlzTWVkaWFUaW1lbGluZSgpKTsKICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51LCBvYmplY3QuaXNNZW51KCkpOwogICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVCYXIsIG9iamVjdC5pc01lbnVCYXIo
KSk7CkBAIC0xNzEsNyArMTcwLDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXpl
QXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIGNvcmVPYmplY3QsIGJvb2wgaXMKICAgICBzZXRP
YmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRSYWRpb0J1dHRvbiwgb2JqZWN0
LnNlbGVjdGVkUmFkaW9CdXR0b24oKSk7CiAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSwgb2JqZWN0LnNlbGVjdGVkVGFiSXRlbSgpKTsKICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGF5b3V0Q291bnQsIG9iamVjdC5sYXlvdXRDb3Vu
dCgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RXN0aW1hdGVkTG9hZGluZ1By
b2dyZXNzLCBvYmplY3QuZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkpOwogICAgIHNldFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zLCBvYmplY3Quc3VwcG9ydHNBUklB
T3ducygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFzUG9wdXAsIG9iamVj
dC5oYXNQb3B1cCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UG9wdXBWYWx1
ZSwgb2JqZWN0LnBvcHVwVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmgKaW5kZXggYzhlZmIyZjhjMTRhZDQ1ZDFkYmIzODM5ZWI5NWMwNDZmMGVmN2Q5Ni4uOTIx
ZmI4ZTcxMThhMmJmYjA4NjhjNDNlZmM3OWY2ZGRjYWUwNTEwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuaApAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAgQVhDb3JlT2JqZWN0KiBz
ZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkUmFkaW9CdXR0b24pOyB9CiAgICAgQVhDb3JlT2Jq
ZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRUYWJJdGVtKTsgfQogICAgIGludCBsYXlvdXRD
b3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpMYXlvdXRDb3VudCk7IH0KLSAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZG91YmxlQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OkVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyk7IH0KKyAgICBkb3VibGUgZXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5lc3Rp
bWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKTsgfQogICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
U3VwcG9ydHNBUklBT3ducyk7IH0KICAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNl
ZENvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKTsgfQog
ICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiBjaGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6QVJJQUNvbnRyb2xzRWxlbWVudHMsIGNoaWxkcmVuKTsgfQpAQCAt
NTEzLDcgKzUxMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIGlzSG92ZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgaXNJbmRldGVybWluYXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0xvYWRlZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNMb2FkZWQpOyB9CisgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpID49IDE7IH0KICAgICBib29sIGlzT25TY3Jl
ZW4oKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcAppbmRleCA2NTQ5ZGJiOWJlNWZhODUwMTI5MmY2NTY4MmM3MDBlN2RhNzJhMGRiLi44
MjZiOGQwZGRmNDQ2ODU1N2NhZjFmOTZkZGU0MmJhMThlZGQ2MmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6Y3JlYXRlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCiAgICAgQVNTRVJU
KCF0cmVlUGFnZUNhY2hlKCkuY29udGFpbnMoKnBhZ2VJRCkpOwogICAgIHRyZWVQYWdlQ2FjaGUo
KS5zZXQoKnBhZ2VJRCwgdHJlZS5jb3B5UmVmKCkpOwogICAgIHRyZWVJRENhY2hlKCkuc2V0KHRy
ZWUtPnRyZWVJRCgpLCB0cmVlLmNvcHlSZWYoKSk7CisgICAgdHJlZS0+dXBkYXRlRXN0aW1hdGVk
TG9hZGluZ1Byb2dyZXNzKGF4T2JqZWN0Q2FjaGUtPmVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygp
KTsKIAogICAgIHJldHVybiB0cmVlOwogfQpAQCAtNDM5LDYgKzQ0MCwxNiBAQCB2b2lkIEFYSXNv
bGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlEKEFYSUQgYXhJRCkKICAgICBtX3BlbmRpbmdQcm9w
ZXJ0eUNoYW5nZXMuYXBwZW5kKHsgYXhJRCwgcHJvcGVydHlNYXAgfSk7CiB9CiAKK3ZvaWQgQVhJ
c29sYXRlZFRyZWU6OnVwZGF0ZUVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyhkb3VibGUgbmV3UHJv
Z3Jlc3NWYWx1ZSkKK3sKKyAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6dXBkYXRlRXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzIik7CisgICAgQVhMT0cobWFrZVN0cmluZygiUXVldWVpbmcgbG9h
ZGluZyBwcm9ncmVzcyB1cGRhdGUgdG8gIiwgbmV3UHJvZ3Jlc3NWYWx1ZSwgIiBmb3IgdHJlZUlE
ICIsIHRyZWVJRCgpKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBtX3BlbmRpbmdFc3RpbWF0ZWRMb2Fk
aW5nUHJvZ3Jlc3MgPSBuZXdQcm9ncmVzc1ZhbHVlOworfQorCiB2b2lkIEFYSXNvbGF0ZWRUcmVl
OjpyZW1vdmVOb2RlKEFYSUQgYXhJRCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6
cmVtb3ZlTm9kZSIpOwpAQCAtNDg0LDYgKzQ5NSw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFw
cGx5UGVuZGluZ0NoYW5nZXMoKQogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9j
ayB9OwogCisgICAgbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MgPSBtX3BlbmRpbmdFc3RpbWF0
ZWRMb2FkaW5nUHJvZ3Jlc3M7CisKICAgICBpZiAobV9wZW5kaW5nRm9jdXNlZE5vZGVJRCAhPSBt
X2ZvY3VzZWROb2RlSUQpIHsKICAgICAgICAgQVhMT0cobWFrZVN0cmluZygiZm9jdXNlZE5vZGVJ
RCAiLCBtX2ZvY3VzZWROb2RlSUQubG9nZ2luZ1N0cmluZygpLCAiIHBlbmRpbmdGb2N1c2VkTm9k
ZUlEICIsIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQubG9nZ2luZ1N0cmluZygpKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5oCmluZGV4IDIwYTRkMWM4NzM2YzA1MDQ4ZWFjMzM2YTNmMjNmODE3MzhjN2Vi
YjQuLjQ1Mzk4NWFmZmU4MWI4YzQzYjcyZmYzNzU5MzNiMmUyMzZiZmYwZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuaApAQCAtMTExLDcgKzExMSw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUg
OiB1aW50MTZfdCB7CiAgICAgRWRpdGFibGVBbmNlc3RvciwKICAgICBFbGVtZW50UmVjdCwKICAg
ICBFbWJlZGRlZEltYWdlRGVzY3JpcHRpb24sCi0gICAgRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNz
LAogICAgIEV4cGFuZGVkVGV4dFZhbHVlLAogICAgIEZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFs
dWVJblRpdGxlLAogICAgIEZvY3VzYWJsZUFuY2VzdG9yLApAQCAtMTY4LDcgKzE2Nyw2IEBAIGVu
dW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgSXNMaW5rZWQsCiAgICAg
SXNMaXN0LAogICAgIElzTGlzdEJveCwKLSAgICBJc0xvYWRlZCwKICAgICBJc01hdGhFbGVtZW50
LAogICAgIElzTWF0aEZyYWN0aW9uLAogICAgIElzTWF0aEZlbmNlZCwKQEAgLTM2MSw2ICszNTks
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYpOwogICAg
IHZvaWQgdXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0Jik7CiAKKyAgICBkb3VibGUgZXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzKCkgeyByZXR1cm4gbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3M7
IH0KKyAgICB2b2lkIHVwZGF0ZUVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyhkb3VibGUgbmV3UHJv
Z3Jlc3MpOworCiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBsZWF2aW5nIGFsbCBkZXNj
ZW5kYW50cyBhbG9uZS4KICAgICB2b2lkIHJlbW92ZU5vZGUoQVhJRCk7CiAgICAgLy8gUmVtb3Zl
cyB0aGUgZ2l2ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cy4KQEAgLTQxMSw2ICs0MTIs
OCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgVmVjdG9yPEFYSUQ+Pj4g
bV9wZW5kaW5nQ2hpbGRyZW5VcGRhdGVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dM
b2NrKTsKICAgICBBWElEIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQgV1RGX0dVQVJERURfQllfTE9D
SyhtX2NoYW5nZUxvZ0xvY2spOwogICAgIEFYSUQgbV9mb2N1c2VkTm9kZUlEOworICAgIGRvdWJs
ZSBtX3BlbmRpbmdFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MgV1RGX0dVQVJERURfQllfTE9DSyht
X2NoYW5nZUxvZ0xvY2spIHsgMC4yNSB9OworICAgIGRvdWJsZSBtX2VzdGltYXRlZExvYWRpbmdQ
cm9ncmVzcyB7IDAuMjUgfTsKICAgICBMb2NrIG1fY2hhbmdlTG9nTG9jazsKIAogICAgIGJvb2wg
bV9jcmVhdGluZ1N1YnRyZWUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jl
c3NUcmFja2VyLmNwcAppbmRleCBmYTg0YzM2NmM2MzE3NWY5ZmI0NzMwZWI4NWM0Njc3ZmMzZDYz
NjhmLi5hYjQzYTYyMzVhYTkyMDQwZjMxODAyYmVkNWYzZWM5NzMxYTEzMDFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcApAQCAtNzUsOCArNzUsOSBAQCBwdWJs
aWM6CiAgICAgbG9uZyBsb25nIGVzdGltYXRlZExlbmd0aDsKIH07CiAKLVByb2dyZXNzVHJhY2tl
cjo6UHJvZ3Jlc3NUcmFja2VyKFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgY2xp
ZW50KQotICAgIDogbV9jbGllbnQoV1RGTW92ZShjbGllbnQpKQorUHJvZ3Jlc3NUcmFja2VyOjpQ
cm9ncmVzc1RyYWNrZXIoUGFnZSYgcGFnZSwgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVu
dD4mJiBjbGllbnQpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fY2xpZW50KFdURk1vdmUo
Y2xpZW50KSkKICAgICAsIG1fcHJvZ3Jlc3NIZWFydGJlYXRUaW1lcigqdGhpcywgJlByb2dyZXNz
VHJhY2tlcjo6cHJvZ3Jlc3NIZWFydGJlYXRUaW1lckZpcmVkKQogewogfQpAQCAtMTM4LDYgKzEz
OSwxMiBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NTdGFydGVkKEZyYW1lJiBmcmFt
ZSkKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lU3RhcnRlZExvYWRpbmcoZnJh
bWUpOwogfQogCit2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQo
RnJhbWUmIGZyYW1lKQoreworICAgIG1fY2xpZW50LT5wcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChm
cmFtZSk7CisgICAgbV9wYWdlLnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKGZyYW1lKTsKK30KKwog
dm9pZCBQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzQ29tcGxldGVkKEZyYW1lJiBmcmFtZSkKIHsK
ICAgICBMT0coUHJvZ3Jlc3MsICJQcm9ncmVzcyBjb21wbGV0ZWQgKCVwKSAtIGZyYW1lICVwKFwi
JXNcIiksIHZhbHVlICVmLCB0cmFja2VkIGZyYW1lcyAlZCwgb3JpZ2luYXRpbmcgZnJhbWUgJXAi
LCB0aGlzLCAmZnJhbWUsIGZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgbV9wcm9ncmVzc1ZhbHVlLCBtX251bVByb2dyZXNzVHJhY2tlZEZyYW1lcywgbV9v
cmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUuZ2V0KCkpOwpAQCAtMTY2LDcgKzE3Myw3IEBAIHZvaWQg
UHJvZ3Jlc3NUcmFja2VyOjpmaW5hbFByb2dyZXNzQ29tcGxldGUoKQogICAgIC8vIHdpdGggZmlu
YWwgcHJvZ3Jlc3MgdmFsdWUuCiAgICAgaWYgKCFtX2ZpbmFsUHJvZ3Jlc3NDaGFuZ2VkU2VudCkg
ewogICAgICAgICBtX3Byb2dyZXNzVmFsdWUgPSAxOwotICAgICAgICBtX2NsaWVudC0+cHJvZ3Jl
c3NFc3RpbWF0ZUNoYW5nZWQoKmZyYW1lKTsKKyAgICAgICAgcHJvZ3Jlc3NFc3RpbWF0ZUNoYW5n
ZWQoKmZyYW1lKTsKICAgICB9CiAKICAgICByZXNldCgpOwpAQCAtMTc2LDYgKzE4Myw3IEBAIHZv
aWQgUHJvZ3Jlc3NUcmFja2VyOjpmaW5hbFByb2dyZXNzQ29tcGxldGUoKQogCiAgICAgZnJhbWUt
PmxvYWRlcigpLmNsaWVudCgpLnNldE1haW5GcmFtZURvY3VtZW50UmVhZHkodHJ1ZSk7CiAgICAg
bV9jbGllbnQtPnByb2dyZXNzRmluaXNoZWQoKmZyYW1lKTsKKyAgICBtX3BhZ2UucHJvZ3Jlc3NG
aW5pc2hlZCgqZnJhbWUpOwogICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkUHJvZ3Jlc3NpbmdTdGF0
dXNDaGFuZ2VkKCk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lU3RvcHBl
ZExvYWRpbmcoKmZyYW1lKTsKQEAgLTI1NCw3ICsyNjIsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tl
cjo6aW5jcmVtZW50UHJvZ3Jlc3MoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHVucwogICAgICAgICAgICAgaWYgKG1fcHJvZ3Jlc3NWYWx1ZSA9PSAxKQogICAgICAgICAgICAg
ICAgIG1fZmluYWxQcm9ncmVzc0NoYW5nZWRTZW50ID0gdHJ1ZTsKIAotICAgICAgICAgICAgbV9j
bGllbnQtPnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKCpmcmFtZSk7CisgICAgICAgICAgICBwcm9n
cmVzc0VzdGltYXRlQ2hhbmdlZCgqZnJhbWUpOwogCiAgICAgICAgICAgICBtX2xhc3ROb3RpZmll
ZFByb2dyZXNzVmFsdWUgPSBtX3Byb2dyZXNzVmFsdWU7CiAgICAgICAgICAgICBtX2xhc3ROb3Rp
ZmllZFByb2dyZXNzVGltZSA9IG5vdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcm9ncmVzc1RyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNr
ZXIuaAppbmRleCBjMGQyMWU2ZTYzN2U4MzE1MTc1NjU5ZDc0YTJiNTNlZGY3ODFhOTdkLi5iM2Fh
YjJhOTg3ZjEyMDU1Y2JkZTVjNzFlNWVjM2FkYTJlYzVjNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Byb2dyZXNzVHJhY2tlci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFByb2dyZXNzVHJh
Y2tlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJvZ3Jlc3NUcmFja2VyKTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBQcm9ncmVzc1Ry
YWNrZXIoVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJik7CisgICAgZXhwbGljaXQg
UHJvZ3Jlc3NUcmFja2VyKFBhZ2UmLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYm
KTsKICAgICB+UHJvZ3Jlc3NUcmFja2VyKCk7CiAKICAgICBQcm9ncmVzc1RyYWNrZXJDbGllbnQm
IGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CkBAIC02Niw5ICs2NiwxMSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgcmVzZXQoKTsKICAgICB2b2lkIGZpbmFsUHJvZ3Jl
c3NDb21wbGV0ZSgpOworICAgIHZvaWQgcHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoRnJhbWUmKTsK
IAogICAgIHZvaWQgcHJvZ3Jlc3NIZWFydGJlYXRUaW1lckZpcmVkKCk7CiAKKyAgICBQYWdlJiBt
X3BhZ2U7CiAgICAgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4gbV9jbGllbnQ7CiAg
ICAgUmVmUHRyPEZyYW1lPiBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZTsKICAgICBIYXNoTWFw
PFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFByb2dyZXNzSXRlbT4+
IG1fcHJvZ3Jlc3NJdGVtczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGM4ODFiMjZiYTI4ZGQ1ODdl
MTdmOGViMzg5ZDQyNTBiNDA4OTFmZjcuLjFhMDdlYTg3MTA3MmU3YTI0YzNmZTEwMGMzMWJiOGFm
MzFkMjk2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjc0LDcgKzI3NCw3IEBAIFBhZ2U6OlBh
Z2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fcG9pbnRl
ckxvY2tDb250cm9sbGVyKG1ha2VVbmlxdWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhpcykp
CiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKLSAgICAs
IG1fcHJvZ3Jlc3MobWFrZVVuaXF1ZTxQcm9ncmVzc1RyYWNrZXI+KFdURk1vdmUocGFnZUNvbmZp
Z3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkpCisgICAgLCBtX3Byb2dyZXNzKG1ha2VV
bmlxdWU8UHJvZ3Jlc3NUcmFja2VyPigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5w
cm9ncmVzc1RyYWNrZXJDbGllbnQpKSkKICAgICAsIG1fYmFja0ZvcndhcmRDb250cm9sbGVyKG1h
a2VVbmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVyPigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQogICAgICwgbV9tYWluRnJhbWUoRnJhbWU6OmNy
ZWF0ZSh0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVu
dEZvck1haW5GcmFtZSkpKQogICAgICwgbV9lZGl0b3JDbGllbnQoV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi5lZGl0b3JDbGllbnQpKQpAQCAtNTgzLDYgKzU4MywyOCBAQCB2b2lkIFBhZ2U6OnNl
dHRpbmdzRGlkQ2hhbmdlKCkKICNlbmRpZgogfQogCit2b2lkIFBhZ2U6OnByb2dyZXNzRXN0aW1h
dGVDaGFuZ2VkKEZyYW1lJiBmcmFtZVdpdGhQcm9ncmVzc1VwZGF0ZSkgY29uc3QKK3sKKyAgICAv
LyBOb3RpZnkgdGhlIEFYIGNhY2hlIHRoYXQgbG9hZGluZyBwcm9ncmVzcyBoYXMgY2hhbmdlZC4K
KyAgICAvLyBDdXJyZW50bHkgb25seSBuZWNlc3NhcnkgdG8gdXBkYXRlIHRoZSBzdGF0ZSBvZiB0
aGUgaXNvbGF0ZWQgdHJlZS4KKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVF
KQorICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lV2l0aFByb2dyZXNzVXBkYXRlLmRvY3Vt
ZW50KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGF4T2JqZWN0Q2FjaGUgPSBkb2N1bWVudC0+YXhP
YmplY3RDYWNoZSgpKQorICAgICAgICAgICAgYXhPYmplY3RDYWNoZS0+dXBkYXRlRXN0aW1hdGVk
TG9hZGluZ1Byb2dyZXNzKHByb2dyZXNzKCkuZXN0aW1hdGVkUHJvZ3Jlc3MoKSk7CisgICAgfQor
I2VuZGlmCit9CisKK3ZvaWQgUGFnZTo6cHJvZ3Jlc3NGaW5pc2hlZChGcmFtZSYgZnJhbWVXaXRo
Q29tcGxldGVkUHJvZ3Jlc3MpIGNvbnN0Cit7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNP
TEFURURfVFJFRSkKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZVdpdGhDb21wbGV0ZWRQ
cm9ncmVzcy5kb2N1bWVudCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBheE9iamVjdENhY2hlID0g
ZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUtPmxv
YWRpbmdQcm9ncmVzc0ZpbmlzaGVkKCk7CisgICAgfQorI2VuZGlmCit9CisKIGJvb2wgUGFnZTo6
b3BlbmVkQnlET00oKSBjb25zdAogewogICAgIHJldHVybiBtX29wZW5lZEJ5RE9NOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAppbmRleCBiZTdmODEzOTA0ODJhYjkxODViMjAxNjg5Y2QyNDkxNjVlNTUxZmRmLi45ODIw
OWMxZTAwZGFjZDI4ODExZTU4ODFlYTM2MThmMDFhOTc4MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAt
MzYxLDYgKzM2MSw4IEBAIHB1YmxpYzoKIAogICAgIFNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0
IHsgcmV0dXJuICptX3NldHRpbmdzOyB9CiAgICAgUHJvZ3Jlc3NUcmFja2VyJiBwcm9ncmVzcygp
IGNvbnN0IHsgcmV0dXJuICptX3Byb2dyZXNzOyB9CisgICAgdm9pZCBwcm9ncmVzc0VzdGltYXRl
Q2hhbmdlZChGcmFtZSYpIGNvbnN0OworICAgIHZvaWQgcHJvZ3Jlc3NGaW5pc2hlZChGcmFtZSYp
IGNvbnN0OwogICAgIEJhY2tGb3J3YXJkQ29udHJvbGxlciYgYmFja0ZvcndhcmQoKSBjb25zdCB7
IHJldHVybiAqbV9iYWNrRm9yd2FyZENvbnRyb2xsZXI7IH0KIAogICAgIFNlY29uZHMgZG9tVGlt
ZXJBbGlnbm1lbnRJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9tVGltZXJBbGlnbm1lbnRJ
bnRlcnZhbDsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDQyMWQzYWJhZTUyMDEzMWE1Y2M5MTRmNWQwYjcyYWY1ODRiOTYz
NGUuLjA0NzVkMmQ2OGJmY2FjNGZlMjQwYTExNTI4ZTdiYzUzNmExZDlmMjggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAyMi0wMS0yNiAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBwbGUuY29t
PgorCisgICAgICAgIEFYIElUTTogRGVmZXIgdG8gdGhlIHRyZWUgd2hlbiBkZXRlcm1pbmluZyBB
WCBvYmplY3QgbG9hZGluZyBwcm9ncmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgQXNzb2NpYXRlZCB0ZXN0IG5vdyB1c2VzIGpzLXRlc3Qu
anMsIHNvIG1vZGlmeSBleHBlY3RhdGlvbnMgdG8gaW5jbHVkZQorICAgICAgICBqcy10ZXN0IG91
dHB1dCAoZS5nLiB0ZXN0IGRlc2NyaXB0aW9uKCkpLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbDoKKyAgICAgICAgV2FpdCBhc3luY2hyb25vdXNs
eSBmb3IgbG9hZGluZyB0byBjb21wbGV0ZSAoIkFYTG9hZGVkOiAxIikuCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWw6CisgICAgICAgIERvbid0IG91dHB1dCBhbGwg
YXR0cmlidXRlcywgc2luY2UgaXQncyBub3QgbmVjZXNzYXJ5IGZvciB0aGUgcHVycG9zZQorICAg
ICAgICBvZiB0aGUgdGVzdCAod2hpY2ggaXMgdG8gZW5zdXJlIGNhbGxpbmcgYWxsQXR0cmlidXRl
cygpIGluIHRoaXMKKyAgICAgICAgc2NlbmFyaW8gZG9lc24ndCBjYXVzZSBhIGNyYXNoKS4gUHJl
dmlvdXNseSwgdGhlIHRlc3Qgb3V0cHV0IGNvbnRhaW5lZAorICAgICAgICBsb2FkaW5nIEFYIGF0
dHJpYnV0ZXMsIHNvIHJhdGhlciB0aGFuIG1ha2luZyB0aGlzIHRlc3Qgd2FpdCBmb3IKKyAgICAg
ICAgbG9hZGluZyB0byBjb21wbGV0ZSBJIGRlY2lkZWQgdG8gcmVtb3ZlIHRoZSBvdXRwdXQgYWxs
IHRvZ2V0aGVyLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1k
ZWxldGUtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTI1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVy
dGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIGlucHV0LXNlY3VyaXR5IENTUyBwcm9w
ZXJ0eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQt
YXR0cmlidXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9k
b2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRleCA5MTIzYjMwOGNlY2I0ZjE3YzEw
Zjk3ZDExZTg4MTZjOWM3NjI5ZGYyLi41ZTljZDY5MDNjYmFhM2RiZDk2M2Y0ZTFhNzJjNDY3Mjgx
ODA5MzAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVu
dC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDE0IEBACitU
aGlzIHRlc3QgcHJvdmlkZXMgYSBiYXNlIHNuYXBzaG90IG9mIHRoZSByb290IHdlYiBhcmVhJ3Mg
YXR0cmlidXRlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKIEFYSGFzRG9jdW1l
bnRSb2xlQW5jZXN0b3I6IDAKIEFYSGFzV2ViQXBwbGljYXRpb25BbmNlc3RvcjogMAogQVhSb2xl
OiBBWFdlYkFyZWEKIEFYUm9sZURlc2NyaXB0aW9uOiBIVE1MIGNvbnRlbnQKLUFYQ2hpbGRyZW46
IDxhcnJheSBvZiBzaXplIDA+Ci1BWENoaWxkcmVuSW5OYXZpZ2F0aW9uT3JkZXI6IDxhcnJheSBv
ZiBzaXplIDA+CitBWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAyPgorQVhDaGlsZHJlbkluTmF2
aWdhdGlvbk9yZGVyOiA8YXJyYXkgb2Ygc2l6ZSAyPgogQVhIZWxwOgogQVhQYXJlbnQ6IDxBWFdl
YkFyZWE+CiBBWFNpemU6IE5TU2l6ZTogezgwMCwgNjAwfQpAQCAtMzQsNCArMzksNyBAQCBBWFBy
ZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2g6IDAKIEFYV2ViU2Vzc2lvbklEOiAyCiBBWEVs
ZW1lbnRCdXN5OiAwCiAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1
bWVudC1hdHRyaWJ1dGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1
bWVudC1hdHRyaWJ1dGVzLmh0bWwKaW5kZXggNmIyMjk5MTRmYzIyNmU4ZmNjMmIwOWU3OWNmNzg3
OThkNzgxYWI2Mi4uZjYwZDhmMmNlNDEzODcxN2I2NzVkYWFhYjczNTk1MDYxYTI2YjBhYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRl
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJp
YnV0ZXMuaHRtbApAQCAtMSwyNCArMSwzMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBwcm92aWRlcyBhIGJh
c2Ugc25hcHNob3Qgb2YgdGhlIHJvb3Qgd2ViIGFyZWEncyBhdHRyaWJ1dGVzLiIpOwogCi0gICAg
dmFyIGxvZyA9IGZ1bmN0aW9uKG1zZykKLSAgICB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNn
ICsgIlxuIikpOwotICAgIH0KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotICAgIG9ubG9hZCA9
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpCi0gICAgICAgICAgICBsb2coYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQuYWxsQXR0cmlidXRlcygpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9nKCJU
aGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUgdG8gcnVuLiIpCisgICAgICAgIHNldFRp
bWVvdXQoYXN5bmMgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBsZXQgYWxsQXR0cmlidXRlczsK
KyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4geworICAgICAgICAgICAgICAgIGlmICgh
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBhbGxBdHRyaWJ1dGVzID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuYWxsQXR0cmlidXRlcygpOworICAgICAg
ICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSBwYWdlIHRvIGJlIGZ1bGx5IGxvYWRlZC4KKyAgICAg
ICAgICAgICAgICByZXR1cm4gYWxsQXR0cmlidXRlcy5pbmNsdWRlcygiQVhMb2FkZWQ6IDEiKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZGVidWdFc2NhcGVkKGFsbEF0dHJpYnV0ZXMp
OworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0sIDApOwogICAgIH0KIDwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50
LWRlbGV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0
bWwKaW5kZXggNGQ3YzVlMjgxNDBlNDM3YjA3NDhjNGE3MGNmYjViZDE2NmVjOWZlNy4uYjlkNTgw
NjE5ZDkwNjdlMTkxOGYyOGUyMmNhNmM1YWE5NWFkNDYzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwKQEAgLTEsMjcgKzEsMjIgQEAKIDwhRE9DVFlQ
RSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCiBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgIHZhciBh
Y2Nlc3NpYmlsaXR5RWxlbWVudDsKLSAgICB7Ci0gICAgICAgIHZhciBvdXRlciA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJvdXRlciIpOwotICAgICAgICB2YXIgaW5uZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiaW5uZXIiKTsKLSAgICAgICAgdmFyIGVkaXRhYmxlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImVkaXRhYmxlIik7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7Ci0gICAgICAgIGVkaXRhYmxlLmZvY3VzKCk7Ci0g
ICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAg
IHZhciBhY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50OwotICAgICAgICB9Ci0gICAgICAgIGlubmVyLnJlbW92ZUNoaWxkKGVkaXRhYmxl
KTsKLSAgICAgICAgb3V0ZXIucmVtb3ZlQ2hpbGQoaW5uZXIpOwotICAgIH0KLSAgICBpZiAod2lu
ZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgIHJlc3VsdC5pbm5lclRleHQg
PSBhY2Nlc3NpYmlsaXR5RWxlbWVudC5hbGxBdHRyaWJ1dGVzKCk7Ci0gICAgfQorICAgIGNvbnN0
IG91dGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dGVyIik7CisgICAgY29uc3QgaW5u
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5uZXIiKTsKKyAgICBjb25zdCBlZGl0YWJs
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0YWJsZSIpOworICAgIGNvbnN0IHJlc3Vs
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICBlZGl0YWJsZS5mb2N1
cygpOworICAgIGxldCBhY2Nlc3NpYmlsaXR5RWxlbWVudDsKKyAgICBpZiAod2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICBhY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIGlubmVyLnJlbW92ZUNoaWxk
KGVkaXRhYmxlKTsKKyAgICBvdXRlci5yZW1vdmVDaGlsZChpbm5lcik7CisgICAgLy8gVGhpcyBz
aG91bGQgbm90IGNhdXNlIGEgY3Jhc2guCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikKKyAgICAgICAgYWNjZXNzaWJpbGl0eUVsZW1lbnQuYWxsQXR0cmlidXRlcygpOwog
fQogPC9zY3JpcHQ+CiA8L2hlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDhmYzhhMjliNjU3ZGY2NGQ5ZmZhOWQ2YjcyMGQzOGM1ZTAzNTA3ZDUuLmIwYjkzNDIyNzQz
NTc2MDM2NmYxYTBiMTYyOTI3ODU4YmI1ZDU1MmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhw
ZWN0ZWQudHh0CkBAIC0xLDM3ICsxLDUgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQogVGhpcyB0ZXN0IHBhc3NlcyBpZiB0aGVyZSBpcyBubyBjcmFz
aC4KLUFYSGFzRG9jdW1lbnRSb2xlQW5jZXN0b3I6IDAKLUFYSGFzV2ViQXBwbGljYXRpb25BbmNl
c3RvcjogMAotQVhSb2xlOiBBWFdlYkFyZWEKLUFYUm9sZURlc2NyaXB0aW9uOiBIVE1MIGNvbnRl
bnQKLUFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDE+Ci1BWENoaWxkcmVuSW5OYXZpZ2F0aW9u
T3JkZXI6IDxhcnJheSBvZiBzaXplIDE+Ci1BWEhlbHA6Ci1BWFBhcmVudDogPEFYV2ViQXJlYT4K
LUFYU2l6ZTogTlNTaXplOiB7ODAwLCA2MDB9Ci1BWFRpdGxlOgotQVhEZXNjcmlwdGlvbjoKLUFY
VmFsdWU6Ci1BWEZvY3VzZWQ6IDAKLUFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWFdlYkFyZWE+
Ci1BWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiA8
QVhXZWJBcmVhPgotQVhFbmRUZXh0TWFya2VyOiA8QVhXZWJBcmVhPgotQVhWaXNpdGVkOiAwCi1B
WExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+Ci1BWFNlbGVjdGVkOiAwCi1BWEJs
b2NrUXVvdGVMZXZlbDogMAotQVhUb3BMZXZlbFVJRWxlbWVudDogPEFYV2ViQXJlYT4KLUFYTGFu
Z3VhZ2U6Ci1BWERPTUlkZW50aWZpZXI6Ci1BWERPTUNsYXNzTGlzdDogPGFycmF5IG9mIHNpemUg
MD4KLUFYTGlua1VJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+Ci1BWExvYWRlZDogMQotQVhM
YXlvdXRDb3VudDogMgotQVhMb2FkaW5nUHJvZ3Jlc3M6IDEKLUFYVVJMOiBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUuaHRtbAotQVhDYXJldEJyb3dzaW5nRW5hYmxlZDog
MAotQVhQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoOiAwCi1BWFdlYlNlc3Npb25JRDog
MgotQVhFbGVtZW50QnVzeTogMAogCg==
</data>
<flag name="commit-queue"
          id="476308"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450034</attachid>
            <date>2022-01-26 10:13:33 -0800</date>
            <delta_ts>2022-01-26 11:06:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235646-20220126121332.patch</filename>
            <type>text/plain</type>
            <size>25537</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVkNDQ2YjQ0OGI5ZjIz
YmExZmNmMDI2MzVkYTcyYmUwMTVjMTlkZi4uZDMxMzJiMGI3MDA2Zjg5M2Q1MGRmZmUyZGYyNWZk
OWMwMmY4YWEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIyLTAxLTI2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSVRNOiBEZWZlciB0
byB0aGUgdHJlZSB3aGVuIGRldGVybWluaW5nIEFYIG9iamVjdCBsb2FkaW5nIHByb2dyZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2NDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHks
IHdlIHNldCBBWFByb3BlcnR5TmFtZTo6SXNMb2FkZWQgYW5kIEFYUHJvcGVydHlOYW1lOjpFc3Rp
bWF0ZWRMb2FkaW5nUHJvZ3Jlc3MKKyAgICAgICAgb25jZSBpbiBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YSBhbmQgbmV2ZXIgdXBkYXRlIGl0LiBUaGlzIG1lYW5zIHRo
YXQKKyAgICAgICAgaWYgYW4gb2JqZWN0IGlzIGNyZWF0ZWQgd2hpbGUgdGhlIHBhZ2UgaXMgYXQg
c29tZSBub24tMTAwJSBsb2FkIHBlcmNlbnRhZ2UsIEFYIGNsaWVudHMKKyAgICAgICAgdGhhdCBy
ZXF1ZXN0IHRoZXNlIGF0dHJpYnV0ZXMgd2lsbCBhbHdheXMgdGhpbmsgdGhlIG9iamVjdCBpc24n
dCBsb2FkZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZXNlIHR3byBwcm9wZXJ0
aWVzIGFuZCBpbnN0ZWFkIGRlZmVycyB0byB0aGUgaXNvbGF0ZWQgdHJlZSBhc3NvY2lhdGVkCisg
ICAgICAgIHdpdGggZWFjaCBvYmplY3Qgd2hlbiBkZXRlcm1pbmluZyB0aGUgbG9hZCBwZXJjZW50
YWdlLiBCb3RoIG9mIHRoZXNlIHByb3BlcnRpZXMgd2VyZSBiYXNlZAorICAgICAgICBvbiB0aGUg
ZW50aXJlIHBhZ2UgLyBkb2N1bWVudCBsb2FkIHByb2dyZXNzIGFueXdheXMsIHNvIGl0IGRvZXNu
J3QgbWFrZSBzZW5zZSB0byBzZXQgdGhlCisgICAgICAgIHNhbWUgdmFsdWUgZm9yIGFsbCBvZiB0
aGVtLgorCisgICAgICAgIFdlIHRyYWNrIGxvYWRpbmcgcHJvZ3Jlc3MgYnkgY2hhbmdpbmcgUHJv
Z3Jlc3NUcmFja2VyIHRvIGFsc28gbm90aWZ5CisgICAgICAgIHRoZSBwYWdlIHdoZW4gcHJvZ3Jl
c3MgY2hhbmdlcywgd2hpY2ggaW4gdHVybiB1cGRhdGVzIHRoZSBhc3NvY2lhdGVkCisgICAgICAg
IEFYT2JqZWN0Q2FjaGUgd2l0aCB0aGUgbmV3IHByb2dyZXNzIHZhbHVlLgorCisgICAgICAgIENv
dmVyZWQgYnkgYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIHdoaWNo
IHZlcmlmaWVzIHRoZSBBWExvYWQgYW5kCisgICAgICAgIEFYTG9hZGluZ1Byb2dyZXNzIGF0dHJp
YnV0ZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dXBkYXRlRXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzKToKKyAgICAgICAgQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpsb2FkaW5nUHJvZ3Jlc3NG
aW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplc3RpbWF0ZWRMb2Fk
aW5nUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkVHJlZTo6dXBkYXRlRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKToKKyAgICAgICAgQXBw
bHkgbV9wZW5kaW5nRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKToKKyAgICAgICAgQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6V1RGX0dVQVJERURfQllfTE9DSyk6
CisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQcm9ncmVzc1RyYWNrZXI6OlByb2dyZXNzVHJhY2tlcik6CisgICAgICAgIFN0b3JlIGEgcmVm
ZXJlbmNlIHRvIHRoZSBhc3NvY2lhdGVkIHBhZ2UgaW4gbmV3IG1fcGFnZSBtZW1iZXIuCisgICAg
ICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKToK
KyAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmZpbmFs
UHJvZ3Jlc3NDb21wbGV0ZSk6CisgICAgICAgIE5vdGlmeSB0aGUgUGFnZSB3aGVuIHByb2dyZXNz
IGlzIGNvbXBsZXRlLgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1l
bnRQcm9ncmVzcyk6CisgICAgICAgIE5vdGlmeSB0aGUgUGFnZSB3aGVuIHByb2dyZXNzIGNoYW5n
ZXMuCisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnByb2dyZXNzRmluaXNoZWQgY29uc3QpOgorICAgICAgICBBZGRlZC4gTm90aWZ5
IHRoZSBBWE9iamVjdENhY2hlIHdoZW4gbG9hZGluZyBwcm9ncmVzcyBjaGFuZ2VzLgorICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorCiAyMDIyLTAxLTI1ICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWth
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViSURMXSBSZW1vdmUgdGhlIG5vdy11bnVzZWQgW0N1
c3RvbUVuYWJsZWRdIGV4dGVuZGVkIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggMTI0Y2Q5ZTkxOTVjNDFmZTRkYTQxMzJj
Y2JmNTBjNTAwNjA2MjYzYS4uMTc4MDcyYmIwOGQyNGYzOGQ3NzliZWQzOWQzNTY2ZTY2OWQxZWI1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CkBAIC05NzEsNiArOTcxLDIyIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlQ2FjaGVBZnRl
ck5vZGVJc0F0dGFjaGVkKE5vZGUqIG5vZGUpCiAgICAgZ2V0KG5vZGUpOwogfQogCit2b2lkIEFY
T2JqZWN0Q2FjaGU6OnVwZGF0ZUVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyhkb3VibGUgbmV3UHJv
Z3Jlc3NWYWx1ZSkKK3sKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobmV3UHJvZ3Jlc3NWYWx1ZSA+PSAwICYmIG5ld1Byb2dy
ZXNzVmFsdWUgPD0gMSwgInVuZXhwZWN0ZWQgbG9hZGluZyBwcm9ncmVzcyB2YWx1ZTogJWYiLCBu
ZXdQcm9ncmVzc1ZhbHVlKTsKKyAgICBpZiAobV9wYWdlSUQpIHsKKyAgICAgICAgLy8gU29tZXRp
bWVzIHRoZSBpc29sYXRlZCB0cmVlIGhhc24ndCBiZWVuIGNyZWF0ZWQgYnkgdGhlIHRpbWUgd2Ug
Z2V0IGxvYWRpbmcgcHJvZ3Jlc3MgdXBkYXRlcywKKyAgICAgICAgLy8gc28gY2FjaGUgdGhpcyB2
YWx1ZSBpbiB0aGUgQVhPYmplY3RDYWNoZSB0b28gc28gd2UgY2FuIGdpdmUgaXQgdG8gdGhlIHRy
ZWUgdXBvbiBjcmVhdGlvbi4KKyAgICAgICAgbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MgPSBu
ZXdQcm9ncmVzc1ZhbHVlOworICAgICAgICBpZiAoYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6
OnRyZWVGb3JQYWdlSUQoKm1fcGFnZUlEKSkKKyAgICAgICAgICAgIHRyZWUtPnVwZGF0ZUVzdGlt
YXRlZExvYWRpbmdQcm9ncmVzcyhuZXdQcm9ncmVzc1ZhbHVlKTsKKyAgICB9CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShuZXdQcm9ncmVzc1ZhbHVlKTsKKyNlbmRpZgorfQorCiB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmhhbmRsZUNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmpl
Y3QpCiB7CiAgICAgLy8gSGFuZGxlIE1lbnVMaXN0cyBhbmQgTWVudUxpc3RQb3B1cHMgYXMgc3Bl
Y2lhbCBjYXNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmgKaW5kZXggMjk4MGExZmI4YWFhOTFiNTdkNzFjNjJjNmYyY2RkZGMyNDU5NjA5Zi4uMDRjYzM5
YmI4MGUxMjIwMzg5OWQzMGRhNjVlOGQxZmZhOWU5ZTkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTE4Nyw2ICsxODcsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjaGVja2VkU3RhdGVDaGFuZ2VkKE5vZGUqKTsKICAgICAvLyBDYWxsZWQgd2hl
biBhIG5vZGUgaGFzIGp1c3QgYmVlbiBhdHRhY2hlZCwgc28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSBo
YXZlIHRoZSByaWdodCBzdWJjbGFzcyBvZiBBY2Nlc3NpYmlsaXR5T2JqZWN0LgogICAgIHZvaWQg
dXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVkKE5vZGUqKTsKKyAgICB2b2lkIHVwZGF0ZUVz
dGltYXRlZExvYWRpbmdQcm9ncmVzcyhkb3VibGUpOworICAgIHZvaWQgbG9hZGluZ1Byb2dyZXNz
RmluaXNoZWQoKSB7IHVwZGF0ZUVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygxKTsgfQorICAgIGRv
dWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX2VzdGltYXRl
ZExvYWRpbmdQcm9ncmVzczsgfQogCiAgICAgdm9pZCBkZWZlckZvY3VzZWRVSUVsZW1lbnRDaGFu
Z2VJZk5lZWRlZChOb2RlKiBvbGRGb2N1c2VkTm9kZSwgTm9kZSogbmV3Rm9jdXNlZE5vZGUpOwog
ICAgIHZvaWQgZGVmZXJNb2RhbENoYW5nZShFbGVtZW50Kik7CkBAIC01MjMsNiArNTI2LDcgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPE5vZGUqLCBOb2RlKj4+IG1fZGVmZXJyZWRG
b2N1c2VkTm9kZUNoYW5nZTsKICAgICBib29sIG1faXNTeW5jaHJvbml6aW5nU2VsZWN0aW9uIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fcGVyZm9ybWluZ0RlZmVycmVkQ2FjaGVVcGRhdGUgeyBmYWxz
ZSB9OworICAgIGRvdWJsZSBtX2VzdGltYXRlZExvYWRpbmdQcm9ncmVzcyB7IDAuMjUgfTsKIAog
I2lmIFVTRShBVEspCiAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+
PiBtX2RlZmVycmVkQXR0YWNoZWRXcmFwcGVyT2JqZWN0TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5jcHAKaW5kZXggZWNmODE4YjFhNmIxNjI3MjcwMzgwYmNlODg2ZjlhNjA0Y2ZhNzdhZi4u
ODJjN2MxZGNmN2QyZmIyMzgyZmMwNWM2NjhjMjg2ODg0OGJhMzI2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5jcHAKQEAgLTExMCw3ICsxMTAsNiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6
OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYgY29yZU9iamVjdCwgYm9vbCBp
cwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0xpbmssIG9iamVjdC5pc0xpbmso
KSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTGlua2VkLCBvYmplY3QuaXNM
aW5rZWQoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTGlzdCwgb2JqZWN0
LmlzTGlzdCgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNMb2FkZWQsIG9i
amVjdC5pc0xvYWRlZCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZWRp
YVRpbWVsaW5lLCBvYmplY3QuaXNNZWRpYVRpbWVsaW5lKCkpOwogICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpJc01lbnUsIG9iamVjdC5pc01lbnUoKSk7CiAgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OklzTWVudUJhciwgb2JqZWN0LmlzTWVudUJhcigpKTsKQEAgLTE3MSw3
ICsxNzAsNiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRh
KEFYQ29yZU9iamVjdCYgY29yZU9iamVjdCwgYm9vbCBpcwogICAgIHNldE9iamVjdFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpTZWxlY3RlZFJhZGlvQnV0dG9uLCBvYmplY3Quc2VsZWN0ZWRSYWRp
b0J1dHRvbigpKTsKICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2VsZWN0
ZWRUYWJJdGVtLCBvYmplY3Quc2VsZWN0ZWRUYWJJdGVtKCkpOwogICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpMYXlvdXRDb3VudCwgb2JqZWN0LmxheW91dENvdW50KCkpOwotICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MsIG9iamVj
dC5lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OlN1cHBvcnRzQVJJQU93bnMsIG9iamVjdC5zdXBwb3J0c0FSSUFPd25zKCkpOwogICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpIYXNQb3B1cCwgb2JqZWN0Lmhhc1BvcHVwKCkp
OwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpQb3B1cFZhbHVlLCBvYmplY3QucG9w
dXBWYWx1ZSgpLmlzb2xhdGVkQ29weSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCBj
OGVmYjJmOGMxNGFkNDVkMWRiYjM4MzllYjk1YzA0NmYwZWY3ZDk2Li45MjFmYjhlNzExOGEyYmZi
MDg2OGM0M2VmYzc5ZjZkZGNhZTA1MTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC0y
MjEsNyArMjIxLDcgQEAgcHJpdmF0ZToKICAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVkUmFkaW9C
dXR0b24oKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6U2VsZWN0ZWRSYWRpb0J1dHRvbik7IH0KICAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVk
VGFiSXRlbSgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpTZWxlY3RlZFRhYkl0ZW0pOyB9CiAgICAgaW50IGxheW91dENvdW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gaW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkxheW91
dENvdW50KTsgfQotICAgIGRvdWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBkb3VibGVBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6RXN0
aW1hdGVkTG9hZGluZ1Byb2dyZXNzKTsgfQorICAgIGRvdWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJv
Z3Jlc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cmVlKCktPmVzdGltYXRlZExvYWRpbmdQ
cm9ncmVzcygpOyB9CiAgICAgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFP
d25zKTsgfQogICAgIGJvb2wgaXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIpOyB9CiAgICAgdm9pZCBhcmlh
Q29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBj
b25zdCBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpBUklBQ29udHJvbHNFbGVtZW50cywgY2hpbGRyZW4pOyB9CkBAIC01MTMsNyArNTEzLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzRmlndXJlRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGJvb2wgaXNIb3ZlcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0luZGV0ZXJt
aW5hdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzTG9hZGVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0xvYWRlZCk7
IH0KKyAgICBib29sIGlzTG9hZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZXN0aW1hdGVk
TG9hZGluZ1Byb2dyZXNzKCkgPj0gMTsgfQogICAgIGJvb2wgaXNPblNjcmVlbigpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCBvdmVycmlkZTsKICAgICBib29s
IGlzUHJlc3NlZCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4
IDY1NDlkYmI5YmU1ZmE4NTAxMjkyZjY1NjgyYzcwMGU3ZGE3MmEwZGIuLjgyNmI4ZDBkZGY0NDY4
NTU3Y2FmMWY5NmRkZTQyYmExOGVkZDYyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAg
LTExOCw2ICsxMTgsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVh
dGUoQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSkKICAgICBBU1NFUlQoIXRyZWVQYWdlQ2Fj
aGUoKS5jb250YWlucygqcGFnZUlEKSk7CiAgICAgdHJlZVBhZ2VDYWNoZSgpLnNldCgqcGFnZUlE
LCB0cmVlLmNvcHlSZWYoKSk7CiAgICAgdHJlZUlEQ2FjaGUoKS5zZXQodHJlZS0+dHJlZUlEKCks
IHRyZWUuY29weVJlZigpKTsKKyAgICB0cmVlLT51cGRhdGVFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jl
c3MoYXhPYmplY3RDYWNoZS0+ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkpOwogCiAgICAgcmV0
dXJuIHRyZWU7CiB9CkBAIC00MzksNiArNDQwLDE2IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnNl
dEZvY3VzZWROb2RlSUQoQVhJRCBheElEKQogICAgIG1fcGVuZGluZ1Byb3BlcnR5Q2hhbmdlcy5h
cHBlbmQoeyBheElELCBwcm9wZXJ0eU1hcCB9KTsKIH0KIAordm9pZCBBWElzb2xhdGVkVHJlZTo6
dXBkYXRlRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKGRvdWJsZSBuZXdQcm9ncmVzc1ZhbHVlKQor
eworICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVFc3RpbWF0ZWRMb2FkaW5nUHJv
Z3Jlc3MiKTsKKyAgICBBWExPRyhtYWtlU3RyaW5nKCJRdWV1ZWluZyBsb2FkaW5nIHByb2dyZXNz
IHVwZGF0ZSB0byAiLCBuZXdQcm9ncmVzc1ZhbHVlLCAiIGZvciB0cmVlSUQgIiwgdHJlZUlEKCkp
KTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgTG9ja2VyIGxvY2tlciB7IG1f
Y2hhbmdlTG9nTG9jayB9OworICAgIG1fcGVuZGluZ0VzdGltYXRlZExvYWRpbmdQcm9ncmVzcyA9
IG5ld1Byb2dyZXNzVmFsdWU7Cit9CisKIHZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZU5vZGUo
QVhJRCBheElEKQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVOb2RlIik7
CkBAIC00ODQsNiArNDk1LDggQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hh
bmdlcygpCiAKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAKKyAgICBt
X2VzdGltYXRlZExvYWRpbmdQcm9ncmVzcyA9IG1fcGVuZGluZ0VzdGltYXRlZExvYWRpbmdQcm9n
cmVzczsKKwogICAgIGlmIChtX3BlbmRpbmdGb2N1c2VkTm9kZUlEICE9IG1fZm9jdXNlZE5vZGVJ
RCkgewogICAgICAgICBBWExPRyhtYWtlU3RyaW5nKCJmb2N1c2VkTm9kZUlEICIsIG1fZm9jdXNl
ZE5vZGVJRC5sb2dnaW5nU3RyaW5nKCksICIgcGVuZGluZ0ZvY3VzZWROb2RlSUQgIiwgbV9wZW5k
aW5nRm9jdXNlZE5vZGVJRC5sb2dnaW5nU3RyaW5nKCkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgK
aW5kZXggMjBhNGQxYzg3MzZjMDUwNDhlYWMzMzZhM2YyM2Y4MTczOGM3ZWJiNC4uNDUzOTg1YWZm
ZTgxYjhjNDNiNzJmZjM3NTkzM2IyZTIzNmJmZjBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBA
IC0xMTEsNyArMTExLDYgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsK
ICAgICBFZGl0YWJsZUFuY2VzdG9yLAogICAgIEVsZW1lbnRSZWN0LAogICAgIEVtYmVkZGVkSW1h
Z2VEZXNjcmlwdGlvbiwKLSAgICBFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MsCiAgICAgRXhwYW5k
ZWRUZXh0VmFsdWUsCiAgICAgRmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUluVGl0bGUsCiAg
ICAgRm9jdXNhYmxlQW5jZXN0b3IsCkBAIC0xNjgsNyArMTY3LDYgQEAgZW51bSBjbGFzcyBBWFBy
b3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBJc0xpbmtlZCwKICAgICBJc0xpc3QsCiAgICAg
SXNMaXN0Qm94LAotICAgIElzTG9hZGVkLAogICAgIElzTWF0aEVsZW1lbnQsCiAgICAgSXNNYXRo
RnJhY3Rpb24sCiAgICAgSXNNYXRoRmVuY2VkLApAQCAtMzYxLDYgKzM1OSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0Jik7CiAgICAgdm9pZCB1cGRhdGVD
aGlsZHJlbihBWENvcmVPYmplY3QmKTsKIAorICAgIGRvdWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJv
Z3Jlc3MoKSB7IHJldHVybiBtX2VzdGltYXRlZExvYWRpbmdQcm9ncmVzczsgfQorICAgIHZvaWQg
dXBkYXRlRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKGRvdWJsZSBuZXdQcm9ncmVzcyk7CisKICAg
ICAvLyBSZW1vdmVzIHRoZSBnaXZlbiBub2RlIGxlYXZpbmcgYWxsIGRlc2NlbmRhbnRzIGFsb25l
LgogICAgIHZvaWQgcmVtb3ZlTm9kZShBWElEKTsKICAgICAvLyBSZW1vdmVzIHRoZSBnaXZlbiBu
b2RlIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzLgpAQCAtNDExLDYgKzQxMiw4IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxBWElELCBWZWN0b3I8QVhJRD4+PiBtX3BlbmRpbmdDaGls
ZHJlblVwZGF0ZXMgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOwogICAgIEFY
SUQgbV9wZW5kaW5nRm9jdXNlZE5vZGVJRCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9n
TG9jayk7CiAgICAgQVhJRCBtX2ZvY3VzZWROb2RlSUQ7CisgICAgZG91YmxlIG1fcGVuZGluZ0Vz
dGltYXRlZExvYWRpbmdQcm9ncmVzcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9j
aykgeyAwLjI1IH07CisgICAgZG91YmxlIG1fZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzIHsgMC4y
NSB9OwogICAgIExvY2sgbV9jaGFuZ2VMb2dMb2NrOwogCiAgICAgYm9vbCBtX2NyZWF0aW5nU3Vi
dHJlZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jl
c3NUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3Bw
CmluZGV4IGZhODRjMzY2YzYzMTc1ZjlmYjQ3MzBlYjg1YzQ2NzdmYzNkNjM2OGYuLmFiNDNhNjIz
NWFhOTIwNDBmMzE4MDJiZWQ1ZjNlYzk3MzFhMTMwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC03NSw4ICs3NSw5IEBAIHB1YmxpYzoKICAgICBsb25n
IGxvbmcgZXN0aW1hdGVkTGVuZ3RoOwogfTsKIAotUHJvZ3Jlc3NUcmFja2VyOjpQcm9ncmVzc1Ry
YWNrZXIoVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJiBjbGllbnQpCi0gICAgOiBt
X2NsaWVudChXVEZNb3ZlKGNsaWVudCkpCitQcm9ncmVzc1RyYWNrZXI6OlByb2dyZXNzVHJhY2tl
cihQYWdlJiBwYWdlLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYmIGNsaWVudCkK
KyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9jbGllbnQoV1RGTW92ZShjbGllbnQpKQogICAg
ICwgbV9wcm9ncmVzc0hlYXJ0YmVhdFRpbWVyKCp0aGlzLCAmUHJvZ3Jlc3NUcmFja2VyOjpwcm9n
cmVzc0hlYXJ0YmVhdFRpbWVyRmlyZWQpCiB7CiB9CkBAIC0xMzgsNiArMTM5LDEyIEBAIHZvaWQg
UHJvZ3Jlc3NUcmFja2VyOjpwcm9ncmVzc1N0YXJ0ZWQoRnJhbWUmIGZyYW1lKQogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVTdGFydGVkTG9hZGluZyhmcmFtZSk7CiB9CiAKK3Zv
aWQgUHJvZ3Jlc3NUcmFja2VyOjpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChGcmFtZSYgZnJhbWUp
Cit7CisgICAgbV9jbGllbnQtPnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKGZyYW1lKTsKKyAgICBt
X3BhZ2UucHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoZnJhbWUpOworfQorCiB2b2lkIFByb2dyZXNz
VHJhY2tlcjo6cHJvZ3Jlc3NDb21wbGV0ZWQoRnJhbWUmIGZyYW1lKQogewogICAgIExPRyhQcm9n
cmVzcywgIlByb2dyZXNzIGNvbXBsZXRlZCAoJXApIC0gZnJhbWUgJXAoXCIlc1wiKSwgdmFsdWUg
JWYsIHRyYWNrZWQgZnJhbWVzICVkLCBvcmlnaW5hdGluZyBmcmFtZSAlcCIsIHRoaXMsICZmcmFt
ZSwgZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3By
b2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5nUHJv
Z3Jlc3NGcmFtZS5nZXQoKSk7CkBAIC0xNjYsNyArMTczLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNr
ZXI6OmZpbmFsUHJvZ3Jlc3NDb21wbGV0ZSgpCiAgICAgLy8gd2l0aCBmaW5hbCBwcm9ncmVzcyB2
YWx1ZS4KICAgICBpZiAoIW1fZmluYWxQcm9ncmVzc0NoYW5nZWRTZW50KSB7CiAgICAgICAgIG1f
cHJvZ3Jlc3NWYWx1ZSA9IDE7Ci0gICAgICAgIG1fY2xpZW50LT5wcm9ncmVzc0VzdGltYXRlQ2hh
bmdlZCgqZnJhbWUpOworICAgICAgICBwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCgqZnJhbWUpOwog
ICAgIH0KIAogICAgIHJlc2V0KCk7CkBAIC0xNzYsNiArMTgzLDcgQEAgdm9pZCBQcm9ncmVzc1Ry
YWNrZXI6OmZpbmFsUHJvZ3Jlc3NDb21wbGV0ZSgpCiAKICAgICBmcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkuc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeSh0cnVlKTsKICAgICBtX2NsaWVudC0+cHJv
Z3Jlc3NGaW5pc2hlZCgqZnJhbWUpOworICAgIG1fcGFnZS5wcm9ncmVzc0ZpbmlzaGVkKCpmcmFt
ZSk7CiAgICAgZnJhbWUtPmxvYWRlcigpLmxvYWRQcm9ncmVzc2luZ1N0YXR1c0NoYW5nZWQoKTsK
IAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVTdG9wcGVkTG9hZGluZygqZnJh
bWUpOwpAQCAtMjU0LDcgKzI2Miw3IEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQ
cm9ncmVzcyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zCiAgICAgICAg
ICAgICBpZiAobV9wcm9ncmVzc1ZhbHVlID09IDEpCiAgICAgICAgICAgICAgICAgbV9maW5hbFBy
b2dyZXNzQ2hhbmdlZFNlbnQgPSB0cnVlOwogCi0gICAgICAgICAgICBtX2NsaWVudC0+cHJvZ3Jl
c3NFc3RpbWF0ZUNoYW5nZWQoKmZyYW1lKTsKKyAgICAgICAgICAgIHByb2dyZXNzRXN0aW1hdGVD
aGFuZ2VkKCpmcmFtZSk7CiAKICAgICAgICAgICAgIG1fbGFzdE5vdGlmaWVkUHJvZ3Jlc3NWYWx1
ZSA9IG1fcHJvZ3Jlc3NWYWx1ZTsKICAgICAgICAgICAgIG1fbGFzdE5vdGlmaWVkUHJvZ3Jlc3NU
aW1lID0gbm93OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJh
Y2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5oCmluZGV4IGMw
ZDIxZTZlNjM3ZTgzMTUxNzU2NTlkNzRhMmI1M2VkZjc4MWE5N2QuLmIzYWFiMmE5ODdmMTIwNTVj
YmRlNWM3MWU1ZWMzYWRhMmVjNWM1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcm9ncmVzc1RyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NU
cmFja2VyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUHJvZ3Jlc3NUcmFja2VyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShQcm9ncmVzc1RyYWNrZXIpOwogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFByb2dyZXNzVHJhY2tlcihVbmlxdWVS
ZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYmKTsKKyAgICBleHBsaWNpdCBQcm9ncmVzc1RyYWNr
ZXIoUGFnZSYsIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYpOwogICAgIH5Qcm9n
cmVzc1RyYWNrZXIoKTsKIAogICAgIFByb2dyZXNzVHJhY2tlckNsaWVudCYgY2xpZW50KCkgeyBy
ZXR1cm4gbV9jbGllbnQuZ2V0KCk7IH0KQEAgLTY2LDkgKzY2LDExIEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgZmluYWxQcm9ncmVzc0NvbXBsZXRlKCk7
CisgICAgdm9pZCBwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChGcmFtZSYpOwogCiAgICAgdm9pZCBw
cm9ncmVzc0hlYXJ0YmVhdFRpbWVyRmlyZWQoKTsKIAorICAgIFBhZ2UmIG1fcGFnZTsKICAgICBV
bmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiBtX2NsaWVudDsKICAgICBSZWZQdHI8RnJh
bWU+IG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lOwogICAgIEhhc2hNYXA8UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3Jlc3NJdGVtPj4gbV9wcm9ncmVzc0l0
ZW1zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYzg4MWIyNmJhMjhkZDU4N2UxN2Y4ZWIzODlkNDI1
MGI0MDg5MWZmNy4uYjk3MTBlMThiN2QyZDVjZmQzNWU3MzI1Y2M2YWUwYmM5Yjg0OTFhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC0yNzQsNyArMjc0LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmln
dXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxQb2ludGVyTG9ja0NvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgogICAg
ICwgbV9zZXR0aW5ncyhTZXR0aW5nczo6Y3JlYXRlKHRoaXMpKQotICAgICwgbV9wcm9ncmVzcyht
YWtlVW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5wcm9n
cmVzc1RyYWNrZXJDbGllbnQpKSkKKyAgICAsIG1fcHJvZ3Jlc3MobWFrZVVuaXF1ZTxQcm9ncmVz
c1RyYWNrZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tl
ckNsaWVudCkpKQogICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIobWFrZVVuaXF1ZTxCYWNr
Rm9yd2FyZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmJhY2tG
b3J3YXJkQ2xpZW50KSkpCiAgICAgLCBtX21haW5GcmFtZShGcmFtZTo6Y3JlYXRlKHRoaXMsIG51
bGxwdHIsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1l
KSkpCiAgICAgLCBtX2VkaXRvckNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmVkaXRv
ckNsaWVudCkpCkBAIC01ODMsNiArNTgzLDIyIEBAIHZvaWQgUGFnZTo6c2V0dGluZ3NEaWRDaGFu
Z2UoKQogI2VuZGlmCiB9CiAKK3ZvaWQgUGFnZTo6cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoRnJh
bWUmIGZyYW1lV2l0aFByb2dyZXNzVXBkYXRlKSBjb25zdAoreworICAgIGlmIChhdXRvKiBkb2N1
bWVudCA9IGZyYW1lV2l0aFByb2dyZXNzVXBkYXRlLmRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYg
KGF1dG8qIGF4T2JqZWN0Q2FjaGUgPSBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpKQorICAgICAg
ICAgICAgYXhPYmplY3RDYWNoZS0+dXBkYXRlRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKHByb2dy
ZXNzKCkuZXN0aW1hdGVkUHJvZ3Jlc3MoKSk7CisgICAgfQorfQorCit2b2lkIFBhZ2U6OnByb2dy
ZXNzRmluaXNoZWQoRnJhbWUmIGZyYW1lV2l0aENvbXBsZXRlZFByb2dyZXNzKSBjb25zdAorewor
ICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lV2l0aENvbXBsZXRlZFByb2dyZXNzLmRvY3Vt
ZW50KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGF4T2JqZWN0Q2FjaGUgPSBkb2N1bWVudC0+YXhP
YmplY3RDYWNoZSgpKQorICAgICAgICAgICAgYXhPYmplY3RDYWNoZS0+bG9hZGluZ1Byb2dyZXNz
RmluaXNoZWQoKTsKKyAgICB9Cit9CisKIGJvb2wgUGFnZTo6b3BlbmVkQnlET00oKSBjb25zdAog
ewogICAgIHJldHVybiBtX29wZW5lZEJ5RE9NOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBiZTdmODEzOTA0
ODJhYjkxODViMjAxNjg5Y2QyNDkxNjVlNTUxZmRmLi45ODIwOWMxZTAwZGFjZDI4ODExZTU4ODFl
YTM2MThmMDFhOTc4MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzYxLDYgKzM2MSw4IEBAIHB1Ymxp
YzoKIAogICAgIFNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuICptX3NldHRpbmdz
OyB9CiAgICAgUHJvZ3Jlc3NUcmFja2VyJiBwcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuICptX3By
b2dyZXNzOyB9CisgICAgdm9pZCBwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChGcmFtZSYpIGNvbnN0
OworICAgIHZvaWQgcHJvZ3Jlc3NGaW5pc2hlZChGcmFtZSYpIGNvbnN0OwogICAgIEJhY2tGb3J3
YXJkQ29udHJvbGxlciYgYmFja0ZvcndhcmQoKSBjb25zdCB7IHJldHVybiAqbV9iYWNrRm9yd2Fy
ZENvbnRyb2xsZXI7IH0KIAogICAgIFNlY29uZHMgZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbCgp
IGNvbnN0IHsgcmV0dXJuIG1fZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbDsgfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQy
MWQzYWJhZTUyMDEzMWE1Y2M5MTRmNWQwYjcyYWY1ODRiOTYzNGUuLjA0NzVkMmQ2OGJmY2FjNGZl
MjQwYTExNTI4ZTdiYzUzNmExZDlmMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMS0y
NiAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBwbGUuY29tPgorCisgICAgICAgIEFYIElUTTog
RGVmZXIgdG8gdGhlIHRyZWUgd2hlbiBkZXRlcm1pbmluZyBBWCBvYmplY3QgbG9hZGluZyBwcm9n
cmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1
NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgQXNzb2NpYXRlZCB0ZXN0IG5vdyB1c2VzIGpzLXRlc3QuanMsIHNvIG1vZGlmeSBleHBlY3Rh
dGlvbnMgdG8gaW5jbHVkZQorICAgICAgICBqcy10ZXN0IG91dHB1dCAoZS5nLiB0ZXN0IGRlc2Ny
aXB0aW9uKCkpLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0
ZXMuaHRtbDoKKyAgICAgICAgV2FpdCBhc3luY2hyb25vdXNseSBmb3IgbG9hZGluZyB0byBjb21w
bGV0ZSAoIkFYTG9hZGVkOiAxIikuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVs
ZXRlLmh0bWw6CisgICAgICAgIERvbid0IG91dHB1dCBhbGwgYXR0cmlidXRlcywgc2luY2UgaXQn
cyBub3QgbmVjZXNzYXJ5IGZvciB0aGUgcHVycG9zZQorICAgICAgICBvZiB0aGUgdGVzdCAod2hp
Y2ggaXMgdG8gZW5zdXJlIGNhbGxpbmcgYWxsQXR0cmlidXRlcygpIGluIHRoaXMKKyAgICAgICAg
c2NlbmFyaW8gZG9lc24ndCBjYXVzZSBhIGNyYXNoKS4gUHJldmlvdXNseSwgdGhlIHRlc3Qgb3V0
cHV0IGNvbnRhaW5lZAorICAgICAgICBsb2FkaW5nIEFYIGF0dHJpYnV0ZXMsIHNvIHJhdGhlciB0
aGFuIG1ha2luZyB0aGlzIHRlc3Qgd2FpdCBmb3IKKyAgICAgICAgbG9hZGluZyB0byBjb21wbGV0
ZSBJIGRlY2lkZWQgdG8gcmVtb3ZlIHRoZSBvdXRwdXQgYWxsIHRvZ2V0aGVyLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0Ogor
CiAyMDIyLTAxLTI1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBEaXNhYmxlIGlucHV0LXNlY3VyaXR5IENTUyBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4
cGVjdGVkLnR4dAppbmRleCA5MTIzYjMwOGNlY2I0ZjE3YzEwZjk3ZDExZTg4MTZjOWM3NjI5ZGYy
Li41ZTljZDY5MDNjYmFhM2RiZDk2M2Y0ZTFhNzJjNDY3MjgxODA5MzAxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1
dGVzLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDE0IEBACitUaGlzIHRlc3QgcHJvdmlkZXMgYSBi
YXNlIHNuYXBzaG90IG9mIHRoZSByb290IHdlYiBhcmVhJ3MgYXR0cmlidXRlcy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKIEFYSGFzRG9jdW1lbnRSb2xlQW5jZXN0b3I6IDAKIEFY
SGFzV2ViQXBwbGljYXRpb25BbmNlc3RvcjogMAogQVhSb2xlOiBBWFdlYkFyZWEKIEFYUm9sZURl
c2NyaXB0aW9uOiBIVE1MIGNvbnRlbnQKLUFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDA+Ci1B
WENoaWxkcmVuSW5OYXZpZ2F0aW9uT3JkZXI6IDxhcnJheSBvZiBzaXplIDA+CitBWENoaWxkcmVu
OiA8YXJyYXkgb2Ygc2l6ZSAyPgorQVhDaGlsZHJlbkluTmF2aWdhdGlvbk9yZGVyOiA8YXJyYXkg
b2Ygc2l6ZSAyPgogQVhIZWxwOgogQVhQYXJlbnQ6IDxBWFdlYkFyZWE+CiBBWFNpemU6IE5TU2l6
ZTogezgwMCwgNjAwfQpAQCAtMzQsNCArMzksNyBAQCBBWFByZXZlbnRLZXlib2FyZERPTUV2ZW50
RGlzcGF0Y2g6IDAKIEFYV2ViU2Vzc2lvbklEOiAyCiBBWEVsZW1lbnRCdXN5OiAwCiAKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLmh0bWwK
aW5kZXggNmIyMjk5MTRmYzIyNmU4ZmNjMmIwOWU3OWNmNzg3OThkNzgxYWI2Mi4uZjYwZDhmMmNl
NDEzODcxN2I2NzVkYWFhYjczNTk1MDYxYTI2YjBhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbApAQCAtMSwyNCAr
MSwzMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgog
PGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCiA8c2NyaXB0PgotICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBwcm92aWRlcyBhIGJhc2Ugc25hcHNob3Qgb2YgdGhlIHJv
b3Qgd2ViIGFyZWEncyBhdHRyaWJ1dGVzLiIpOwogCi0gICAgdmFyIGxvZyA9IGZ1bmN0aW9uKG1z
ZykKLSAgICB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnICsgIlxuIikpOwotICAgIH0KKyAg
ICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCi0gICAgICAgICAgICBs
b2coYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuYWxsQXR0cmlidXRlcygp
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9nKCJUaGlzIHRlc3QgcmVxdWlyZXMgRHVt
cFJlbmRlclRyZWUgdG8gcnVuLiIpCisgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBsZXQgYWxsQXR0cmlidXRlczsKKyAgICAgICAgICAgIGF3YWl0IHdh
aXRGb3IoKCkgPT4geworICAgICAgICAgICAgICAgIGlmICghYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBhbGxBdHRyaWJ1dGVzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuYWxsQXR0cmlidXRlcygpOworICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9y
IHRoZSBwYWdlIHRvIGJlIGZ1bGx5IGxvYWRlZC4KKyAgICAgICAgICAgICAgICByZXR1cm4gYWxs
QXR0cmlidXRlcy5pbmNsdWRlcygiQVhMb2FkZWQ6IDEiKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgZGVidWdFc2NhcGVkKGFsbEF0dHJpYnV0ZXMpOworICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0sIDApOwogICAgIH0KIDwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwKaW5kZXggNGQ3YzVlMjgxNDBl
NDM3YjA3NDhjNGE3MGNmYjViZDE2NmVjOWZlNy4uYjlkNTgwNjE5ZDkwNjdlMTkxOGYyOGUyMmNh
NmM1YWE5NWFkNDYzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJl
bnQtZGVsZXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVs
ZXRlLmh0bWwKQEAgLTEsMjcgKzEsMjIgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwotCiBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgIHZhciBhY2Nlc3NpYmlsaXR5RWxlbWVudDsK
LSAgICB7Ci0gICAgICAgIHZhciBvdXRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRl
ciIpOwotICAgICAgICB2YXIgaW5uZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5uZXIi
KTsKLSAgICAgICAgdmFyIGVkaXRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRh
YmxlIik7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0Iik7Ci0gICAgICAgIGVkaXRhYmxlLmZvY3VzKCk7Ci0gICAgICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIHZhciBhY2Nlc3NpYmlsaXR5RWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwotICAgICAgICB9
Ci0gICAgICAgIGlubmVyLnJlbW92ZUNoaWxkKGVkaXRhYmxlKTsKLSAgICAgICAgb3V0ZXIucmVt
b3ZlQ2hpbGQoaW5uZXIpOwotICAgIH0KLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKSB7Ci0gICAgICAgIHJlc3VsdC5pbm5lclRleHQgPSBhY2Nlc3NpYmlsaXR5RWxlbWVu
dC5hbGxBdHRyaWJ1dGVzKCk7Ci0gICAgfQorICAgIGNvbnN0IG91dGVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoIm91dGVyIik7CisgICAgY29uc3QgaW5uZXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiaW5uZXIiKTsKKyAgICBjb25zdCBlZGl0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJlZGl0YWJsZSIpOworICAgIGNvbnN0IHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKTsKKyAgICBlZGl0YWJsZS5mb2N1cygpOworICAgIGxldCBhY2Nlc3Np
YmlsaXR5RWxlbWVudDsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQor
ICAgICAgICBhY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50OworICAgIGlubmVyLnJlbW92ZUNoaWxkKGVkaXRhYmxlKTsKKyAgICBvdXRl
ci5yZW1vdmVDaGlsZChpbm5lcik7CisgICAgLy8gVGhpcyBzaG91bGQgbm90IGNhdXNlIGEgY3Jh
c2guCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgYWNj
ZXNzaWJpbGl0eUVsZW1lbnQuYWxsQXR0cmlidXRlcygpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJl
bnQtZGVsZXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0CmluZGV4IDhmYzhhMjliNjU3ZGY2NGQ5
ZmZhOWQ2YjcyMGQzOGM1ZTAzNTA3ZDUuLmIwYjkzNDIyNzQzNTc2MDM2NmYxYTBiMTYyOTI3ODU4
YmI1ZDU1MmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0CkBAIC0xLDM3ICsx
LDUgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQog
VGhpcyB0ZXN0IHBhc3NlcyBpZiB0aGVyZSBpcyBubyBjcmFzaC4KLUFYSGFzRG9jdW1lbnRSb2xl
QW5jZXN0b3I6IDAKLUFYSGFzV2ViQXBwbGljYXRpb25BbmNlc3RvcjogMAotQVhSb2xlOiBBWFdl
YkFyZWEKLUFYUm9sZURlc2NyaXB0aW9uOiBIVE1MIGNvbnRlbnQKLUFYQ2hpbGRyZW46IDxhcnJh
eSBvZiBzaXplIDE+Ci1BWENoaWxkcmVuSW5OYXZpZ2F0aW9uT3JkZXI6IDxhcnJheSBvZiBzaXpl
IDE+Ci1BWEhlbHA6Ci1BWFBhcmVudDogPEFYV2ViQXJlYT4KLUFYU2l6ZTogTlNTaXplOiB7ODAw
LCA2MDB9Ci1BWFRpdGxlOgotQVhEZXNjcmlwdGlvbjoKLUFYVmFsdWU6Ci1BWEZvY3VzZWQ6IDAK
LUFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWFdlYkFyZWE+Ci1BWFNlbGVjdGVkVGV4dE1hcmtl
clJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiA8QVhXZWJBcmVhPgotQVhFbmRUZXh0
TWFya2VyOiA8QVhXZWJBcmVhPgotQVhWaXNpdGVkOiAwCi1BWExpbmtlZFVJRWxlbWVudHM6IDxh
cnJheSBvZiBzaXplIDA+Ci1BWFNlbGVjdGVkOiAwCi1BWEJsb2NrUXVvdGVMZXZlbDogMAotQVhU
b3BMZXZlbFVJRWxlbWVudDogPEFYV2ViQXJlYT4KLUFYTGFuZ3VhZ2U6Ci1BWERPTUlkZW50aWZp
ZXI6Ci1BWERPTUNsYXNzTGlzdDogPGFycmF5IG9mIHNpemUgMD4KLUFYTGlua1VJRWxlbWVudHM6
IDxhcnJheSBvZiBzaXplIDA+Ci1BWExvYWRlZDogMQotQVhMYXlvdXRDb3VudDogMgotQVhMb2Fk
aW5nUHJvZ3Jlc3M6IDEKLUFYVVJMOiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1k
ZWxldGUuaHRtbAotQVhDYXJldEJyb3dzaW5nRW5hYmxlZDogMAotQVhQcmV2ZW50S2V5Ym9hcmRE
T01FdmVudERpc3BhdGNoOiAwCi1BWFdlYlNlc3Npb25JRDogMgotQVhFbGVtZW50QnVzeTogMAog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450038</attachid>
            <date>2022-01-26 11:06:38 -0800</date>
            <delta_ts>2022-01-26 11:23:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235646-20220126130637.patch</filename>
            <type>text/plain</type>
            <size>26941</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVkNDQ2YjQ0OGI5ZjIz
YmExZmNmMDI2MzVkYTcyYmUwMTVjMTlkZi4uZDMxMzJiMGI3MDA2Zjg5M2Q1MGRmZmUyZGYyNWZk
OWMwMmY4YWEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIyLTAxLTI2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSVRNOiBEZWZlciB0
byB0aGUgdHJlZSB3aGVuIGRldGVybWluaW5nIEFYIG9iamVjdCBsb2FkaW5nIHByb2dyZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2NDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHks
IHdlIHNldCBBWFByb3BlcnR5TmFtZTo6SXNMb2FkZWQgYW5kIEFYUHJvcGVydHlOYW1lOjpFc3Rp
bWF0ZWRMb2FkaW5nUHJvZ3Jlc3MKKyAgICAgICAgb25jZSBpbiBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YSBhbmQgbmV2ZXIgdXBkYXRlIGl0LiBUaGlzIG1lYW5zIHRo
YXQKKyAgICAgICAgaWYgYW4gb2JqZWN0IGlzIGNyZWF0ZWQgd2hpbGUgdGhlIHBhZ2UgaXMgYXQg
c29tZSBub24tMTAwJSBsb2FkIHBlcmNlbnRhZ2UsIEFYIGNsaWVudHMKKyAgICAgICAgdGhhdCBy
ZXF1ZXN0IHRoZXNlIGF0dHJpYnV0ZXMgd2lsbCBhbHdheXMgdGhpbmsgdGhlIG9iamVjdCBpc24n
dCBsb2FkZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZXNlIHR3byBwcm9wZXJ0
aWVzIGFuZCBpbnN0ZWFkIGRlZmVycyB0byB0aGUgaXNvbGF0ZWQgdHJlZSBhc3NvY2lhdGVkCisg
ICAgICAgIHdpdGggZWFjaCBvYmplY3Qgd2hlbiBkZXRlcm1pbmluZyB0aGUgbG9hZCBwZXJjZW50
YWdlLiBCb3RoIG9mIHRoZXNlIHByb3BlcnRpZXMgd2VyZSBiYXNlZAorICAgICAgICBvbiB0aGUg
ZW50aXJlIHBhZ2UgLyBkb2N1bWVudCBsb2FkIHByb2dyZXNzIGFueXdheXMsIHNvIGl0IGRvZXNu
J3QgbWFrZSBzZW5zZSB0byBzZXQgdGhlCisgICAgICAgIHNhbWUgdmFsdWUgZm9yIGFsbCBvZiB0
aGVtLgorCisgICAgICAgIFdlIHRyYWNrIGxvYWRpbmcgcHJvZ3Jlc3MgYnkgY2hhbmdpbmcgUHJv
Z3Jlc3NUcmFja2VyIHRvIGFsc28gbm90aWZ5CisgICAgICAgIHRoZSBwYWdlIHdoZW4gcHJvZ3Jl
c3MgY2hhbmdlcywgd2hpY2ggaW4gdHVybiB1cGRhdGVzIHRoZSBhc3NvY2lhdGVkCisgICAgICAg
IEFYT2JqZWN0Q2FjaGUgd2l0aCB0aGUgbmV3IHByb2dyZXNzIHZhbHVlLgorCisgICAgICAgIENv
dmVyZWQgYnkgYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIHdoaWNo
IHZlcmlmaWVzIHRoZSBBWExvYWQgYW5kCisgICAgICAgIEFYTG9hZGluZ1Byb2dyZXNzIGF0dHJp
YnV0ZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dXBkYXRlRXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzKToKKyAgICAgICAgQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpsb2FkaW5nUHJvZ3Jlc3NG
aW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplc3RpbWF0ZWRMb2Fk
aW5nUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkVHJlZTo6dXBkYXRlRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKToKKyAgICAgICAgQXBw
bHkgbV9wZW5kaW5nRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKToKKyAgICAgICAgQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6V1RGX0dVQVJERURfQllfTE9DSyk6
CisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQcm9ncmVzc1RyYWNrZXI6OlByb2dyZXNzVHJhY2tlcik6CisgICAgICAgIFN0b3JlIGEgcmVm
ZXJlbmNlIHRvIHRoZSBhc3NvY2lhdGVkIHBhZ2UgaW4gbmV3IG1fcGFnZSBtZW1iZXIuCisgICAg
ICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKToK
KyAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmZpbmFs
UHJvZ3Jlc3NDb21wbGV0ZSk6CisgICAgICAgIE5vdGlmeSB0aGUgUGFnZSB3aGVuIHByb2dyZXNz
IGlzIGNvbXBsZXRlLgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1l
bnRQcm9ncmVzcyk6CisgICAgICAgIE5vdGlmeSB0aGUgUGFnZSB3aGVuIHByb2dyZXNzIGNoYW5n
ZXMuCisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnByb2dyZXNzRmluaXNoZWQgY29uc3QpOgorICAgICAgICBBZGRlZC4gTm90aWZ5
IHRoZSBBWE9iamVjdENhY2hlIHdoZW4gbG9hZGluZyBwcm9ncmVzcyBjaGFuZ2VzLgorICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorCiAyMDIyLTAxLTI1ICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWth
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViSURMXSBSZW1vdmUgdGhlIG5vdy11bnVzZWQgW0N1
c3RvbUVuYWJsZWRdIGV4dGVuZGVkIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggMTI0Y2Q5ZTkxOTVjNDFmZTRkYTQxMzJj
Y2JmNTBjNTAwNjA2MjYzYS4uMDgzNDg2NGMxMzJjMzA0ZjMzZDU0ZTVkNTAwY2JmZDkyNWIwZjk0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5j
bHVkZSAiTWF0aE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckF0dGFj
aG1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgpAQCAtMjI0LDYgKzIyNSwxMyBAQCBB
WE9iamVjdENhY2hlOjpBWE9iamVjdENhY2hlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAsIG1f
cGVyZm9ybUNhY2hlVXBkYXRlVGltZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpwZXJmb3JtQ2Fj
aGVVcGRhdGVUaW1lckZpcmVkKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICAvLyBJZiBsb2FkaW5nIGNvbXBsZXRlZCBiZWZvcmUgdGhlIGNhY2hlIHdhcyBjcmVhdGVkLCBs
b2FkaW5nIHByb2dyZXNzIHdpbGwgaGF2ZSBiZWVuIHJlc2V0IHRvIHplcm8uCisgICAgLy8gQ29u
c2lkZXIgbG9hZGluZyBwcm9ncmVzcyB0byBiZSAxMDAlIGluIHRoaXMgY2FzZS4KKyAgICBkb3Vi
bGUgbG9hZGluZ1Byb2dyZXNzID0gZG9jdW1lbnQucGFnZSgpID8gZG9jdW1lbnQucGFnZSgpLT5w
cm9ncmVzcygpLmVzdGltYXRlZFByb2dyZXNzKCkgOiAxOworICAgIGlmIChsb2FkaW5nUHJvZ3Jl
c3MgPD0gMCkKKyAgICAgICAgbG9hZGluZ1Byb2dyZXNzID0gMTsKKyAgICBtX2VzdGltYXRlZExv
YWRpbmdQcm9ncmVzcyA9IGxvYWRpbmdQcm9ncmVzczsKIH0KIAogQVhPYmplY3RDYWNoZTo6fkFY
T2JqZWN0Q2FjaGUoKQpAQCAtOTcxLDYgKzk3OSwyMiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVw
ZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKiBub2RlKQogICAgIGdldChub2RlKTsK
IH0KIAordm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3Mo
ZG91YmxlIG5ld1Byb2dyZXNzVmFsdWUpCit7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNP
TEFURURfVFJFRSkKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG5ld1Byb2dyZXNzVmFsdWUgPj0g
MCAmJiBuZXdQcm9ncmVzc1ZhbHVlIDw9IDEsICJ1bmV4cGVjdGVkIGxvYWRpbmcgcHJvZ3Jlc3Mg
dmFsdWU6ICVmIiwgbmV3UHJvZ3Jlc3NWYWx1ZSk7CisgICAgaWYgKG1fcGFnZUlEKSB7CisgICAg
ICAgIC8vIFNvbWV0aW1lcyB0aGUgaXNvbGF0ZWQgdHJlZSBoYXNuJ3QgYmVlbiBjcmVhdGVkIGJ5
IHRoZSB0aW1lIHdlIGdldCBsb2FkaW5nIHByb2dyZXNzIHVwZGF0ZXMsCisgICAgICAgIC8vIHNv
IGNhY2hlIHRoaXMgdmFsdWUgaW4gdGhlIEFYT2JqZWN0Q2FjaGUgdG9vIHNvIHdlIGNhbiBnaXZl
IGl0IHRvIHRoZSB0cmVlIHVwb24gY3JlYXRpb24uCisgICAgICAgIG1fZXN0aW1hdGVkTG9hZGlu
Z1Byb2dyZXNzID0gbmV3UHJvZ3Jlc3NWYWx1ZTsKKyAgICAgICAgaWYgKGF1dG8gdHJlZSA9IEFY
SXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKCptX3BhZ2VJRCkpCisgICAgICAgICAgICB0cmVl
LT51cGRhdGVFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MobmV3UHJvZ3Jlc3NWYWx1ZSk7CisgICAg
fQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obmV3UHJvZ3Jlc3NWYWx1ZSk7CisjZW5kaWYKK30K
Kwogdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVDaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0
eU9iamVjdCYgb2JqZWN0KQogewogICAgIC8vIEhhbmRsZSBNZW51TGlzdHMgYW5kIE1lbnVMaXN0
UG9wdXBzIGFzIHNwZWNpYWwgY2FzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5oCmluZGV4IDI5ODBhMWZiOGFhYTkxYjU3ZDcxYzYyYzZmMmNkZGRjMjQ1
OTYwOWYuLjA0Y2MzOWJiODBlMTIyMDM4OTlkMzBkYTY1ZThkMWZmYTllOWU5MmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0xODcsNiArMTg3
LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKik7CiAgICAg
Ly8gQ2FsbGVkIHdoZW4gYSBub2RlIGhhcyBqdXN0IGJlZW4gYXR0YWNoZWQsIHNvIHdlIGNhbiBt
YWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgc3ViY2xhc3Mgb2YgQWNjZXNzaWJpbGl0eU9iamVj
dC4KICAgICB2b2lkIHVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKik7CisgICAg
dm9pZCB1cGRhdGVFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoZG91YmxlKTsKKyAgICB2b2lkIGxv
YWRpbmdQcm9ncmVzc0ZpbmlzaGVkKCkgeyB1cGRhdGVFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3Mo
MSk7IH0KKyAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgeyByZXR1
cm4gbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3M7IH0KIAogICAgIHZvaWQgZGVmZXJGb2N1c2Vk
VUlFbGVtZW50Q2hhbmdlSWZOZWVkZWQoTm9kZSogb2xkRm9jdXNlZE5vZGUsIE5vZGUqIG5ld0Zv
Y3VzZWROb2RlKTsKICAgICB2b2lkIGRlZmVyTW9kYWxDaGFuZ2UoRWxlbWVudCopOwpAQCAtNTIz
LDYgKzUyNiw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxOb2RlKiwgTm9kZSo+
PiBtX2RlZmVycmVkRm9jdXNlZE5vZGVDaGFuZ2U7CiAgICAgYm9vbCBtX2lzU3luY2hyb25pemlu
Z1NlbGVjdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BlcmZvcm1pbmdEZWZlcnJlZENhY2hl
VXBkYXRlIHsgZmFsc2UgfTsKKyAgICBkb3VibGUgbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3Mg
eyAwLjI1IH07CiAKICNpZiBVU0UoQVRLKQogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxBY2Nlc3Np
YmlsaXR5T2JqZWN0Pj4gbV9kZWZlcnJlZEF0dGFjaGVkV3JhcHBlck9iamVjdExpc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IGVjZjgxOGIxYTZiMTYyNzI3MDM4MGJjZTg4NmY5
YTYwNGNmYTc3YWYuLjgyYzdjMWRjZjdkMmZiMjM4MmZjMDVjNjY4YzI4Njg4NDhiYTMyNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0xMTAsNyArMTEwLDYgQEAgdm9pZCBBWElz
b2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIGNvcmVP
YmplY3QsIGJvb2wgaXMKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNMaW5rLCBv
YmplY3QuaXNMaW5rKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0xpbmtl
ZCwgb2JqZWN0LmlzTGlua2VkKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJ
c0xpc3QsIG9iamVjdC5pc0xpc3QoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OklzTG9hZGVkLCBvYmplY3QuaXNMb2FkZWQoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OklzTWVkaWFUaW1lbGluZSwgb2JqZWN0LmlzTWVkaWFUaW1lbGluZSgpKTsKICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51LCBvYmplY3QuaXNNZW51KCkpOwogICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVCYXIsIG9iamVjdC5pc01lbnVCYXIo
KSk7CkBAIC0xNzEsNyArMTcwLDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXpl
QXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIGNvcmVPYmplY3QsIGJvb2wgaXMKICAgICBzZXRP
YmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRSYWRpb0J1dHRvbiwgb2JqZWN0
LnNlbGVjdGVkUmFkaW9CdXR0b24oKSk7CiAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSwgb2JqZWN0LnNlbGVjdGVkVGFiSXRlbSgpKTsKICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGF5b3V0Q291bnQsIG9iamVjdC5sYXlvdXRDb3Vu
dCgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RXN0aW1hdGVkTG9hZGluZ1By
b2dyZXNzLCBvYmplY3QuZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkpOwogICAgIHNldFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zLCBvYmplY3Quc3VwcG9ydHNBUklB
T3ducygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFzUG9wdXAsIG9iamVj
dC5oYXNQb3B1cCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UG9wdXBWYWx1
ZSwgb2JqZWN0LnBvcHVwVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmgKaW5kZXggYzhlZmIyZjhjMTRhZDQ1ZDFkYmIzODM5ZWI5NWMwNDZmMGVmN2Q5Ni4uOTIx
ZmI4ZTcxMThhMmJmYjA4NjhjNDNlZmM3OWY2ZGRjYWUwNTEwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuaApAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAgQVhDb3JlT2JqZWN0KiBz
ZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkUmFkaW9CdXR0b24pOyB9CiAgICAgQVhDb3JlT2Jq
ZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRUYWJJdGVtKTsgfQogICAgIGludCBsYXlvdXRD
b3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpMYXlvdXRDb3VudCk7IH0KLSAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZG91YmxlQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OkVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyk7IH0KKyAgICBkb3VibGUgZXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5lc3Rp
bWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKTsgfQogICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
U3VwcG9ydHNBUklBT3ducyk7IH0KICAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNl
ZENvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKTsgfQog
ICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiBjaGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6QVJJQUNvbnRyb2xzRWxlbWVudHMsIGNoaWxkcmVuKTsgfQpAQCAt
NTEzLDcgKzUxMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIGlzSG92ZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgaXNJbmRldGVybWluYXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0xvYWRlZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNMb2FkZWQpOyB9CisgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpID49IDE7IH0KICAgICBib29sIGlzT25TY3Jl
ZW4oKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcAppbmRleCA2NTQ5ZGJiOWJlNWZhODUwMTI5MmY2NTY4MmM3MDBlN2RhNzJhMGRiLi44
MjZiOGQwZGRmNDQ2ODU1N2NhZjFmOTZkZGU0MmJhMThlZGQ2MmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6Y3JlYXRlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCiAgICAgQVNTRVJU
KCF0cmVlUGFnZUNhY2hlKCkuY29udGFpbnMoKnBhZ2VJRCkpOwogICAgIHRyZWVQYWdlQ2FjaGUo
KS5zZXQoKnBhZ2VJRCwgdHJlZS5jb3B5UmVmKCkpOwogICAgIHRyZWVJRENhY2hlKCkuc2V0KHRy
ZWUtPnRyZWVJRCgpLCB0cmVlLmNvcHlSZWYoKSk7CisgICAgdHJlZS0+dXBkYXRlRXN0aW1hdGVk
TG9hZGluZ1Byb2dyZXNzKGF4T2JqZWN0Q2FjaGUtPmVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygp
KTsKIAogICAgIHJldHVybiB0cmVlOwogfQpAQCAtNDM5LDYgKzQ0MCwxNiBAQCB2b2lkIEFYSXNv
bGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlEKEFYSUQgYXhJRCkKICAgICBtX3BlbmRpbmdQcm9w
ZXJ0eUNoYW5nZXMuYXBwZW5kKHsgYXhJRCwgcHJvcGVydHlNYXAgfSk7CiB9CiAKK3ZvaWQgQVhJ
c29sYXRlZFRyZWU6OnVwZGF0ZUVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyhkb3VibGUgbmV3UHJv
Z3Jlc3NWYWx1ZSkKK3sKKyAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6dXBkYXRlRXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzIik7CisgICAgQVhMT0cobWFrZVN0cmluZygiUXVldWVpbmcgbG9h
ZGluZyBwcm9ncmVzcyB1cGRhdGUgdG8gIiwgbmV3UHJvZ3Jlc3NWYWx1ZSwgIiBmb3IgdHJlZUlE
ICIsIHRyZWVJRCgpKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBtX3BlbmRpbmdFc3RpbWF0ZWRMb2Fk
aW5nUHJvZ3Jlc3MgPSBuZXdQcm9ncmVzc1ZhbHVlOworfQorCiB2b2lkIEFYSXNvbGF0ZWRUcmVl
OjpyZW1vdmVOb2RlKEFYSUQgYXhJRCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6
cmVtb3ZlTm9kZSIpOwpAQCAtNDg0LDYgKzQ5NSw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFw
cGx5UGVuZGluZ0NoYW5nZXMoKQogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9j
ayB9OwogCisgICAgbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MgPSBtX3BlbmRpbmdFc3RpbWF0
ZWRMb2FkaW5nUHJvZ3Jlc3M7CisKICAgICBpZiAobV9wZW5kaW5nRm9jdXNlZE5vZGVJRCAhPSBt
X2ZvY3VzZWROb2RlSUQpIHsKICAgICAgICAgQVhMT0cobWFrZVN0cmluZygiZm9jdXNlZE5vZGVJ
RCAiLCBtX2ZvY3VzZWROb2RlSUQubG9nZ2luZ1N0cmluZygpLCAiIHBlbmRpbmdGb2N1c2VkTm9k
ZUlEICIsIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQubG9nZ2luZ1N0cmluZygpKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5oCmluZGV4IDIwYTRkMWM4NzM2YzA1MDQ4ZWFjMzM2YTNmMjNmODE3MzhjN2Vi
YjQuLjQ1Mzk4NWFmZmU4MWI4YzQzYjcyZmYzNzU5MzNiMmUyMzZiZmYwZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuaApAQCAtMTExLDcgKzExMSw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUg
OiB1aW50MTZfdCB7CiAgICAgRWRpdGFibGVBbmNlc3RvciwKICAgICBFbGVtZW50UmVjdCwKICAg
ICBFbWJlZGRlZEltYWdlRGVzY3JpcHRpb24sCi0gICAgRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNz
LAogICAgIEV4cGFuZGVkVGV4dFZhbHVlLAogICAgIEZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFs
dWVJblRpdGxlLAogICAgIEZvY3VzYWJsZUFuY2VzdG9yLApAQCAtMTY4LDcgKzE2Nyw2IEBAIGVu
dW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgSXNMaW5rZWQsCiAgICAg
SXNMaXN0LAogICAgIElzTGlzdEJveCwKLSAgICBJc0xvYWRlZCwKICAgICBJc01hdGhFbGVtZW50
LAogICAgIElzTWF0aEZyYWN0aW9uLAogICAgIElzTWF0aEZlbmNlZCwKQEAgLTM2MSw2ICszNTks
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYpOwogICAg
IHZvaWQgdXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0Jik7CiAKKyAgICBkb3VibGUgZXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzKCkgeyByZXR1cm4gbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3M7
IH0KKyAgICB2b2lkIHVwZGF0ZUVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyhkb3VibGUgbmV3UHJv
Z3Jlc3MpOworCiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBsZWF2aW5nIGFsbCBkZXNj
ZW5kYW50cyBhbG9uZS4KICAgICB2b2lkIHJlbW92ZU5vZGUoQVhJRCk7CiAgICAgLy8gUmVtb3Zl
cyB0aGUgZ2l2ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cy4KQEAgLTQxMSw2ICs0MTIs
OCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgVmVjdG9yPEFYSUQ+Pj4g
bV9wZW5kaW5nQ2hpbGRyZW5VcGRhdGVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dM
b2NrKTsKICAgICBBWElEIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQgV1RGX0dVQVJERURfQllfTE9D
SyhtX2NoYW5nZUxvZ0xvY2spOwogICAgIEFYSUQgbV9mb2N1c2VkTm9kZUlEOworICAgIGRvdWJs
ZSBtX3BlbmRpbmdFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MgV1RGX0dVQVJERURfQllfTE9DSyht
X2NoYW5nZUxvZ0xvY2spIHsgMC4yNSB9OworICAgIGRvdWJsZSBtX2VzdGltYXRlZExvYWRpbmdQ
cm9ncmVzcyB7IDAuMjUgfTsKICAgICBMb2NrIG1fY2hhbmdlTG9nTG9jazsKIAogICAgIGJvb2wg
bV9jcmVhdGluZ1N1YnRyZWUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggYTQzYTk3MjVmNGYwN2Q0
OWQyOGJjYWNhNGNlZjBmZDZkZGQyNGU1Zi4uZDU3MTkzMDVhNTE3MjQwYzZjNDUxZTQ3ODRkMjE1
NGZjZjg5MTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
QVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC02MzUsNyArNjM1LDcgQEAgYm9vbCBBWE9iamVjdENh
Y2hlOjpjbGllbnRTdXBwb3J0c0lzb2xhdGVkVHJlZSgpCiAKIGJvb2wgQVhPYmplY3RDYWNoZTo6
aXNJc29sYXRlZFRyZWVFbmFibGVkKCkKIHsKLSAgICBzdGF0aWMgc3RkOjphdG9taWM8Ym9vbD4g
ZW5hYmxlZCB7IGZhbHNlIH07CisgICAgc3RhdGljIHN0ZDo6YXRvbWljPGJvb2w+IGVuYWJsZWQg
eyB0cnVlIH07CiAgICAgaWYgKGVuYWJsZWQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCmluZGV4IGZhODRjMzY2YzYzMTc1
ZjlmYjQ3MzBlYjg1YzQ2NzdmYzNkNjM2OGYuLmFiNDNhNjIzNWFhOTIwNDBmMzE4MDJiZWQ1ZjNl
Yzk3MzFhMTMwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1Ry
YWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3Bw
CkBAIC03NSw4ICs3NSw5IEBAIHB1YmxpYzoKICAgICBsb25nIGxvbmcgZXN0aW1hdGVkTGVuZ3Ro
OwogfTsKIAotUHJvZ3Jlc3NUcmFja2VyOjpQcm9ncmVzc1RyYWNrZXIoVW5pcXVlUmVmPFByb2dy
ZXNzVHJhY2tlckNsaWVudD4mJiBjbGllbnQpCi0gICAgOiBtX2NsaWVudChXVEZNb3ZlKGNsaWVu
dCkpCitQcm9ncmVzc1RyYWNrZXI6OlByb2dyZXNzVHJhY2tlcihQYWdlJiBwYWdlLCBVbmlxdWVS
ZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYmIGNsaWVudCkKKyAgICA6IG1fcGFnZShwYWdlKQor
ICAgICwgbV9jbGllbnQoV1RGTW92ZShjbGllbnQpKQogICAgICwgbV9wcm9ncmVzc0hlYXJ0YmVh
dFRpbWVyKCp0aGlzLCAmUHJvZ3Jlc3NUcmFja2VyOjpwcm9ncmVzc0hlYXJ0YmVhdFRpbWVyRmly
ZWQpCiB7CiB9CkBAIC0xMzgsNiArMTM5LDEyIEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjpwcm9n
cmVzc1N0YXJ0ZWQoRnJhbWUmIGZyYW1lKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZnJhbWVTdGFydGVkTG9hZGluZyhmcmFtZSk7CiB9CiAKK3ZvaWQgUHJvZ3Jlc3NUcmFja2VyOjpw
cm9ncmVzc0VzdGltYXRlQ2hhbmdlZChGcmFtZSYgZnJhbWUpCit7CisgICAgbV9jbGllbnQtPnBy
b2dyZXNzRXN0aW1hdGVDaGFuZ2VkKGZyYW1lKTsKKyAgICBtX3BhZ2UucHJvZ3Jlc3NFc3RpbWF0
ZUNoYW5nZWQoZnJhbWUpOworfQorCiB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NDb21w
bGV0ZWQoRnJhbWUmIGZyYW1lKQogewogICAgIExPRyhQcm9ncmVzcywgIlByb2dyZXNzIGNvbXBs
ZXRlZCAoJXApIC0gZnJhbWUgJXAoXCIlc1wiKSwgdmFsdWUgJWYsIHRyYWNrZWQgZnJhbWVzICVk
LCBvcmlnaW5hdGluZyBmcmFtZSAlcCIsIHRoaXMsICZmcmFtZSwgZnJhbWUudHJlZSgpLnVuaXF1
ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJv
Z3Jlc3NUcmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSk7CkBA
IC0xNjYsNyArMTczLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmZpbmFsUHJvZ3Jlc3NDb21w
bGV0ZSgpCiAgICAgLy8gd2l0aCBmaW5hbCBwcm9ncmVzcyB2YWx1ZS4KICAgICBpZiAoIW1fZmlu
YWxQcm9ncmVzc0NoYW5nZWRTZW50KSB7CiAgICAgICAgIG1fcHJvZ3Jlc3NWYWx1ZSA9IDE7Ci0g
ICAgICAgIG1fY2xpZW50LT5wcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCgqZnJhbWUpOworICAgICAg
ICBwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCgqZnJhbWUpOwogICAgIH0KIAogICAgIHJlc2V0KCk7
CkBAIC0xNzYsNiArMTgzLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmZpbmFsUHJvZ3Jlc3ND
b21wbGV0ZSgpCiAKICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2V0TWFpbkZyYW1lRG9j
dW1lbnRSZWFkeSh0cnVlKTsKICAgICBtX2NsaWVudC0+cHJvZ3Jlc3NGaW5pc2hlZCgqZnJhbWUp
OworICAgIG1fcGFnZS5wcm9ncmVzc0ZpbmlzaGVkKCpmcmFtZSk7CiAgICAgZnJhbWUtPmxvYWRl
cigpLmxvYWRQcm9ncmVzc2luZ1N0YXR1c0NoYW5nZWQoKTsKIAogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZnJhbWVTdG9wcGVkTG9hZGluZygqZnJhbWUpOwpAQCAtMjU0LDcgKzI2Miw3
IEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyhSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zCiAgICAgICAgICAgICBpZiAobV9wcm9ncmVzc1Zh
bHVlID09IDEpCiAgICAgICAgICAgICAgICAgbV9maW5hbFByb2dyZXNzQ2hhbmdlZFNlbnQgPSB0
cnVlOwogCi0gICAgICAgICAgICBtX2NsaWVudC0+cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoKmZy
YW1lKTsKKyAgICAgICAgICAgIHByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKCpmcmFtZSk7CiAKICAg
ICAgICAgICAgIG1fbGFzdE5vdGlmaWVkUHJvZ3Jlc3NWYWx1ZSA9IG1fcHJvZ3Jlc3NWYWx1ZTsK
ICAgICAgICAgICAgIG1fbGFzdE5vdGlmaWVkUHJvZ3Jlc3NUaW1lID0gbm93OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5oCmluZGV4IGMwZDIxZTZlNjM3ZTgzMTUxNzU2NTlk
NzRhMmI1M2VkZjc4MWE5N2QuLmIzYWFiMmE5ODdmMTIwNTVjYmRlNWM3MWU1ZWMzYWRhMmVjNWM1
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgY2xhc3MgUHJvZ3Jlc3NUcmFja2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
cm9ncmVzc1RyYWNrZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIGV4cGxpY2l0IFByb2dyZXNzVHJhY2tlcihVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50PiYmKTsKKyAgICBleHBsaWNpdCBQcm9ncmVzc1RyYWNrZXIoUGFnZSYsIFVuaXF1ZVJlZjxQ
cm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYpOwogICAgIH5Qcm9ncmVzc1RyYWNrZXIoKTsKIAogICAg
IFByb2dyZXNzVHJhY2tlckNsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQuZ2V0KCk7
IH0KQEAgLTY2LDkgKzY2LDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCByZXNldCgp
OwogICAgIHZvaWQgZmluYWxQcm9ncmVzc0NvbXBsZXRlKCk7CisgICAgdm9pZCBwcm9ncmVzc0Vz
dGltYXRlQ2hhbmdlZChGcmFtZSYpOwogCiAgICAgdm9pZCBwcm9ncmVzc0hlYXJ0YmVhdFRpbWVy
RmlyZWQoKTsKIAorICAgIFBhZ2UmIG1fcGFnZTsKICAgICBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFj
a2VyQ2xpZW50PiBtX2NsaWVudDsKICAgICBSZWZQdHI8RnJhbWU+IG1fb3JpZ2luYXRpbmdQcm9n
cmVzc0ZyYW1lOwogICAgIEhhc2hNYXA8UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UHJvZ3Jlc3NJdGVtPj4gbV9wcm9ncmVzc0l0ZW1zOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggYzg4MWIyNmJhMjhkZDU4N2UxN2Y4ZWIzODlkNDI1MGI0MDg5MWZmNy4uYjk3MTBlMThi
N2QyZDVjZmQzNWU3MzI1Y2M2YWUwYmM5Yjg0OTFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0y
NzQsNyArMjc0LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1
cmF0aW9uKQogICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxQb2ludGVy
TG9ja0NvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhTZXR0aW5n
czo6Y3JlYXRlKHRoaXMpKQotICAgICwgbV9wcm9ncmVzcyhtYWtlVW5pcXVlPFByb2dyZXNzVHJh
Y2tlcj4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQpKSkK
KyAgICAsIG1fcHJvZ3Jlc3MobWFrZVVuaXF1ZTxQcm9ncmVzc1RyYWNrZXI+KCp0aGlzLCBXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCkpKQogICAgICwgbV9i
YWNrRm9yd2FyZENvbnRyb2xsZXIobWFrZVVuaXF1ZTxCYWNrRm9yd2FyZENvbnRyb2xsZXI+KCp0
aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmJhY2tGb3J3YXJkQ2xpZW50KSkpCiAgICAg
LCBtX21haW5GcmFtZShGcmFtZTo6Y3JlYXRlKHRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lKSkpCiAgICAgLCBtX2VkaXRvckNs
aWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCkpCkBAIC01ODMsNiAr
NTgzLDIyIEBAIHZvaWQgUGFnZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKQogI2VuZGlmCiB9CiAKK3Zv
aWQgUGFnZTo6cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoRnJhbWUmIGZyYW1lV2l0aFByb2dyZXNz
VXBkYXRlKSBjb25zdAoreworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lV2l0aFByb2dy
ZXNzVXBkYXRlLmRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGF4T2JqZWN0Q2FjaGUg
PSBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpKQorICAgICAgICAgICAgYXhPYmplY3RDYWNoZS0+
dXBkYXRlRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKHByb2dyZXNzKCkuZXN0aW1hdGVkUHJvZ3Jl
c3MoKSk7CisgICAgfQorfQorCit2b2lkIFBhZ2U6OnByb2dyZXNzRmluaXNoZWQoRnJhbWUmIGZy
YW1lV2l0aENvbXBsZXRlZFByb2dyZXNzKSBjb25zdAoreworICAgIGlmIChhdXRvKiBkb2N1bWVu
dCA9IGZyYW1lV2l0aENvbXBsZXRlZFByb2dyZXNzLmRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYg
KGF1dG8qIGF4T2JqZWN0Q2FjaGUgPSBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpKQorICAgICAg
ICAgICAgYXhPYmplY3RDYWNoZS0+bG9hZGluZ1Byb2dyZXNzRmluaXNoZWQoKTsKKyAgICB9Cit9
CisKIGJvb2wgUGFnZTo6b3BlbmVkQnlET00oKSBjb25zdAogewogICAgIHJldHVybiBtX29wZW5l
ZEJ5RE9NOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBiZTdmODEzOTA0ODJhYjkxODViMjAxNjg5Y2QyNDkx
NjVlNTUxZmRmLi45ODIwOWMxZTAwZGFjZDI4ODExZTU4ODFlYTM2MThmMDFhOTc4MjY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaApAQCAtMzYxLDYgKzM2MSw4IEBAIHB1YmxpYzoKIAogICAgIFNldHRpbmdzJiBz
ZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuICptX3NldHRpbmdzOyB9CiAgICAgUHJvZ3Jlc3NUcmFj
a2VyJiBwcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuICptX3Byb2dyZXNzOyB9CisgICAgdm9pZCBw
cm9ncmVzc0VzdGltYXRlQ2hhbmdlZChGcmFtZSYpIGNvbnN0OworICAgIHZvaWQgcHJvZ3Jlc3NG
aW5pc2hlZChGcmFtZSYpIGNvbnN0OwogICAgIEJhY2tGb3J3YXJkQ29udHJvbGxlciYgYmFja0Zv
cndhcmQoKSBjb25zdCB7IHJldHVybiAqbV9iYWNrRm9yd2FyZENvbnRyb2xsZXI7IH0KIAogICAg
IFNlY29uZHMgZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9t
VGltZXJBbGlnbm1lbnRJbnRlcnZhbDsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQyMWQzYWJhZTUyMDEzMWE1Y2M5MTRm
NWQwYjcyYWY1ODRiOTYzNGUuLjA0NzVkMmQ2OGJmY2FjNGZlMjQwYTExNTI4ZTdiYzUzNmExZDlm
MjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMS0yNiAgVHlsZXIgV2lsY29jayAgPHR5
bGVyX3dAYXBwbGUuY29tPgorCisgICAgICAgIEFYIElUTTogRGVmZXIgdG8gdGhlIHRyZWUgd2hl
biBkZXRlcm1pbmluZyBBWCBvYmplY3QgbG9hZGluZyBwcm9ncmVzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjQ2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9kb2N1
bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgQXNzb2NpYXRlZCB0ZXN0IG5v
dyB1c2VzIGpzLXRlc3QuanMsIHNvIG1vZGlmeSBleHBlY3RhdGlvbnMgdG8gaW5jbHVkZQorICAg
ICAgICBqcy10ZXN0IG91dHB1dCAoZS5nLiB0ZXN0IGRlc2NyaXB0aW9uKCkpLgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbDoKKyAgICAgICAgV2Fp
dCBhc3luY2hyb25vdXNseSBmb3IgbG9hZGluZyB0byBjb21wbGV0ZSAoIkFYTG9hZGVkOiAxIiku
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWw6CisgICAgICAgIERv
bid0IG91dHB1dCBhbGwgYXR0cmlidXRlcywgc2luY2UgaXQncyBub3QgbmVjZXNzYXJ5IGZvciB0
aGUgcHVycG9zZQorICAgICAgICBvZiB0aGUgdGVzdCAod2hpY2ggaXMgdG8gZW5zdXJlIGNhbGxp
bmcgYWxsQXR0cmlidXRlcygpIGluIHRoaXMKKyAgICAgICAgc2NlbmFyaW8gZG9lc24ndCBjYXVz
ZSBhIGNyYXNoKS4gUHJldmlvdXNseSwgdGhlIHRlc3Qgb3V0cHV0IGNvbnRhaW5lZAorICAgICAg
ICBsb2FkaW5nIEFYIGF0dHJpYnV0ZXMsIHNvIHJhdGhlciB0aGFuIG1ha2luZyB0aGlzIHRlc3Qg
d2FpdCBmb3IKKyAgICAgICAgbG9hZGluZyB0byBjb21wbGV0ZSBJIGRlY2lkZWQgdG8gcmVtb3Zl
IHRoZSBvdXRwdXQgYWxsIHRvZ2V0aGVyLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTI1ICBBZGl0eWEg
S2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIGlucHV0LXNl
Y3VyaXR5IENTUyBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRleCA5MTIz
YjMwOGNlY2I0ZjE3YzEwZjk3ZDExZTg4MTZjOWM3NjI5ZGYyLi41ZTljZDY5MDNjYmFhM2RiZDk2
M2Y0ZTFhNzJjNDY3MjgxODA5MzAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAt
MSw5ICsxLDE0IEBACitUaGlzIHRlc3QgcHJvdmlkZXMgYSBiYXNlIHNuYXBzaG90IG9mIHRoZSBy
b290IHdlYiBhcmVhJ3MgYXR0cmlidXRlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKIEFYSGFzRG9jdW1lbnRSb2xlQW5jZXN0b3I6IDAKIEFYSGFzV2ViQXBwbGljYXRpb25BbmNl
c3RvcjogMAogQVhSb2xlOiBBWFdlYkFyZWEKIEFYUm9sZURlc2NyaXB0aW9uOiBIVE1MIGNvbnRl
bnQKLUFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDA+Ci1BWENoaWxkcmVuSW5OYXZpZ2F0aW9u
T3JkZXI6IDxhcnJheSBvZiBzaXplIDA+CitBWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAyPgor
QVhDaGlsZHJlbkluTmF2aWdhdGlvbk9yZGVyOiA8YXJyYXkgb2Ygc2l6ZSAyPgogQVhIZWxwOgog
QVhQYXJlbnQ6IDxBWFdlYkFyZWE+CiBBWFNpemU6IE5TU2l6ZTogezgwMCwgNjAwfQpAQCAtMzQs
NCArMzksNyBAQCBBWFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2g6IDAKIEFYV2ViU2Vz
c2lvbklEOiAyCiBBWEVsZW1lbnRCdXN5OiAwCiAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLmh0bWwKaW5kZXggNmIyMjk5MTRmYzIyNmU4
ZmNjMmIwOWU3OWNmNzg3OThkNzgxYWI2Mi4uZjYwZDhmMmNlNDEzODcxN2I2NzVkYWFhYjczNTk1
MDYxYTI2YjBhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9j
dW1lbnQtYXR0cmlidXRlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbApAQCAtMSwyNCArMSwzMCBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorCiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCBwcm92aWRlcyBhIGJhc2Ugc25hcHNob3Qgb2YgdGhlIHJvb3Qgd2ViIGFyZWEncyBhdHRyaWJ1
dGVzLiIpOwogCi0gICAgdmFyIGxvZyA9IGZ1bmN0aW9uKG1zZykKLSAgICB7Ci0gICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUobXNnICsgIlxuIikpOwotICAgIH0KKyAgICBpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
IAotICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpCi0gICAgICAgICAgICBsb2coYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQuYWxsQXR0cmlidXRlcygpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbG9nKCJUaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUgdG8gcnVuLiIp
CisgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBsZXQg
YWxsQXR0cmlidXRlczsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4geworICAgICAg
ICAgICAgICAgIGlmICghYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBhbGxBdHRy
aWJ1dGVzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuYWxsQXR0cmli
dXRlcygpOworICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSBwYWdlIHRvIGJlIGZ1bGx5
IGxvYWRlZC4KKyAgICAgICAgICAgICAgICByZXR1cm4gYWxsQXR0cmlidXRlcy5pbmNsdWRlcygi
QVhMb2FkZWQ6IDEiKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZGVidWdFc2NhcGVk
KGFsbEF0dHJpYnV0ZXMpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0s
IDApOwogICAgIH0KIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cHJlIGlkPSJjb25zb2xl
Ij48L3ByZT4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9w
YXJlbnQtZGVsZXRlLmh0bWwKaW5kZXggNGQ3YzVlMjgxNDBlNDM3YjA3NDhjNGE3MGNmYjViZDE2
NmVjOWZlNy4uYjlkNTgwNjE5ZDkwNjdlMTkxOGYyOGUyMmNhNmM1YWE5NWFkNDYzZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwKQEAgLTEsMjcgKzEs
MjIgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCiBmdW5jdGlvbiBydW5UZXN0
KCkgewotICAgIHZhciBhY2Nlc3NpYmlsaXR5RWxlbWVudDsKLSAgICB7Ci0gICAgICAgIHZhciBv
dXRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRlciIpOwotICAgICAgICB2YXIgaW5u
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5uZXIiKTsKLSAgICAgICAgdmFyIGVkaXRh
YmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRhYmxlIik7Ci0gICAgICAgIHZhciBy
ZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7Ci0gICAgICAgIGVkaXRh
YmxlLmZvY3VzKCk7Ci0gICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
IHsKLSAgICAgICAgICAgIHZhciBhY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwotICAgICAgICB9Ci0gICAgICAgIGlubmVyLnJlbW92
ZUNoaWxkKGVkaXRhYmxlKTsKLSAgICAgICAgb3V0ZXIucmVtb3ZlQ2hpbGQoaW5uZXIpOwotICAg
IH0KLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgIHJl
c3VsdC5pbm5lclRleHQgPSBhY2Nlc3NpYmlsaXR5RWxlbWVudC5hbGxBdHRyaWJ1dGVzKCk7Ci0g
ICAgfQorICAgIGNvbnN0IG91dGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dGVyIik7
CisgICAgY29uc3QgaW5uZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5uZXIiKTsKKyAg
ICBjb25zdCBlZGl0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0YWJsZSIpOwor
ICAgIGNvbnN0IHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAg
ICBlZGl0YWJsZS5mb2N1cygpOworICAgIGxldCBhY2Nlc3NpYmlsaXR5RWxlbWVudDsKKyAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICBhY2Nlc3NpYmlsaXR5
RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIGlu
bmVyLnJlbW92ZUNoaWxkKGVkaXRhYmxlKTsKKyAgICBvdXRlci5yZW1vdmVDaGlsZChpbm5lcik7
CisgICAgLy8gVGhpcyBzaG91bGQgbm90IGNhdXNlIGEgY3Jhc2guCisgICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgYWNjZXNzaWJpbGl0eUVsZW1lbnQuYWxs
QXR0cmlidXRlcygpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUt
ZXhwZWN0ZWQudHh0CmluZGV4IDhmYzhhMjliNjU3ZGY2NGQ5ZmZhOWQ2YjcyMGQzOGM1ZTAzNTA3
ZDUuLmIwYjkzNDIyNzQzNTc2MDM2NmYxYTBiMTYyOTI3ODU4YmI1ZDU1MmYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Bh
cmVudC1kZWxldGUtZXhwZWN0ZWQudHh0CkBAIC0xLDM3ICsxLDUgQEAKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQogVGhpcyB0ZXN0IHBhc3NlcyBpZiB0
aGVyZSBpcyBubyBjcmFzaC4KLUFYSGFzRG9jdW1lbnRSb2xlQW5jZXN0b3I6IDAKLUFYSGFzV2Vi
QXBwbGljYXRpb25BbmNlc3RvcjogMAotQVhSb2xlOiBBWFdlYkFyZWEKLUFYUm9sZURlc2NyaXB0
aW9uOiBIVE1MIGNvbnRlbnQKLUFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDE+Ci1BWENoaWxk
cmVuSW5OYXZpZ2F0aW9uT3JkZXI6IDxhcnJheSBvZiBzaXplIDE+Ci1BWEhlbHA6Ci1BWFBhcmVu
dDogPEFYV2ViQXJlYT4KLUFYU2l6ZTogTlNTaXplOiB7ODAwLCA2MDB9Ci1BWFRpdGxlOgotQVhE
ZXNjcmlwdGlvbjoKLUFYVmFsdWU6Ci1BWEZvY3VzZWQ6IDAKLUFYRW5hYmxlZDogMQotQVhXaW5k
b3c6IDxBWFdlYkFyZWE+Ci1BWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3Rh
cnRUZXh0TWFya2VyOiA8QVhXZWJBcmVhPgotQVhFbmRUZXh0TWFya2VyOiA8QVhXZWJBcmVhPgot
QVhWaXNpdGVkOiAwCi1BWExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+Ci1BWFNl
bGVjdGVkOiAwCi1BWEJsb2NrUXVvdGVMZXZlbDogMAotQVhUb3BMZXZlbFVJRWxlbWVudDogPEFY
V2ViQXJlYT4KLUFYTGFuZ3VhZ2U6Ci1BWERPTUlkZW50aWZpZXI6Ci1BWERPTUNsYXNzTGlzdDog
PGFycmF5IG9mIHNpemUgMD4KLUFYTGlua1VJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+Ci1B
WExvYWRlZDogMQotQVhMYXlvdXRDb3VudDogMgotQVhMb2FkaW5nUHJvZ3Jlc3M6IDEKLUFYVVJM
OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUuaHRtbAotQVhDYXJldEJy
b3dzaW5nRW5hYmxlZDogMAotQVhQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoOiAwCi1B
WFdlYlNlc3Npb25JRDogMgotQVhFbGVtZW50QnVzeTogMAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450042</attachid>
            <date>2022-01-26 11:23:41 -0800</date>
            <delta_ts>2022-01-26 12:16:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235646-20220126132340.patch</filename>
            <type>text/plain</type>
            <size>26348</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVkNDQ2YjQ0OGI5ZjIz
YmExZmNmMDI2MzVkYTcyYmUwMTVjMTlkZi4uZDMxMzJiMGI3MDA2Zjg5M2Q1MGRmZmUyZGYyNWZk
OWMwMmY4YWEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIyLTAxLTI2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSVRNOiBEZWZlciB0
byB0aGUgdHJlZSB3aGVuIGRldGVybWluaW5nIEFYIG9iamVjdCBsb2FkaW5nIHByb2dyZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2NDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHks
IHdlIHNldCBBWFByb3BlcnR5TmFtZTo6SXNMb2FkZWQgYW5kIEFYUHJvcGVydHlOYW1lOjpFc3Rp
bWF0ZWRMb2FkaW5nUHJvZ3Jlc3MKKyAgICAgICAgb25jZSBpbiBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YSBhbmQgbmV2ZXIgdXBkYXRlIGl0LiBUaGlzIG1lYW5zIHRo
YXQKKyAgICAgICAgaWYgYW4gb2JqZWN0IGlzIGNyZWF0ZWQgd2hpbGUgdGhlIHBhZ2UgaXMgYXQg
c29tZSBub24tMTAwJSBsb2FkIHBlcmNlbnRhZ2UsIEFYIGNsaWVudHMKKyAgICAgICAgdGhhdCBy
ZXF1ZXN0IHRoZXNlIGF0dHJpYnV0ZXMgd2lsbCBhbHdheXMgdGhpbmsgdGhlIG9iamVjdCBpc24n
dCBsb2FkZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZXNlIHR3byBwcm9wZXJ0
aWVzIGFuZCBpbnN0ZWFkIGRlZmVycyB0byB0aGUgaXNvbGF0ZWQgdHJlZSBhc3NvY2lhdGVkCisg
ICAgICAgIHdpdGggZWFjaCBvYmplY3Qgd2hlbiBkZXRlcm1pbmluZyB0aGUgbG9hZCBwZXJjZW50
YWdlLiBCb3RoIG9mIHRoZXNlIHByb3BlcnRpZXMgd2VyZSBiYXNlZAorICAgICAgICBvbiB0aGUg
ZW50aXJlIHBhZ2UgLyBkb2N1bWVudCBsb2FkIHByb2dyZXNzIGFueXdheXMsIHNvIGl0IGRvZXNu
J3QgbWFrZSBzZW5zZSB0byBzZXQgdGhlCisgICAgICAgIHNhbWUgdmFsdWUgZm9yIGFsbCBvZiB0
aGVtLgorCisgICAgICAgIFdlIHRyYWNrIGxvYWRpbmcgcHJvZ3Jlc3MgYnkgY2hhbmdpbmcgUHJv
Z3Jlc3NUcmFja2VyIHRvIGFsc28gbm90aWZ5CisgICAgICAgIHRoZSBwYWdlIHdoZW4gcHJvZ3Jl
c3MgY2hhbmdlcywgd2hpY2ggaW4gdHVybiB1cGRhdGVzIHRoZSBhc3NvY2lhdGVkCisgICAgICAg
IEFYT2JqZWN0Q2FjaGUgd2l0aCB0aGUgbmV3IHByb2dyZXNzIHZhbHVlLgorCisgICAgICAgIENv
dmVyZWQgYnkgYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIHdoaWNo
IHZlcmlmaWVzIHRoZSBBWExvYWQgYW5kCisgICAgICAgIEFYTG9hZGluZ1Byb2dyZXNzIGF0dHJp
YnV0ZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dXBkYXRlRXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzKToKKyAgICAgICAgQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpsb2FkaW5nUHJvZ3Jlc3NG
aW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplc3RpbWF0ZWRMb2Fk
aW5nUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkVHJlZTo6dXBkYXRlRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKToKKyAgICAgICAgQXBw
bHkgbV9wZW5kaW5nRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKToKKyAgICAgICAgQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6V1RGX0dVQVJERURfQllfTE9DSyk6
CisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQcm9ncmVzc1RyYWNrZXI6OlByb2dyZXNzVHJhY2tlcik6CisgICAgICAgIFN0b3JlIGEgcmVm
ZXJlbmNlIHRvIHRoZSBhc3NvY2lhdGVkIHBhZ2UgaW4gbmV3IG1fcGFnZSBtZW1iZXIuCisgICAg
ICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKToK
KyAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmZpbmFs
UHJvZ3Jlc3NDb21wbGV0ZSk6CisgICAgICAgIE5vdGlmeSB0aGUgUGFnZSB3aGVuIHByb2dyZXNz
IGlzIGNvbXBsZXRlLgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1l
bnRQcm9ncmVzcyk6CisgICAgICAgIE5vdGlmeSB0aGUgUGFnZSB3aGVuIHByb2dyZXNzIGNoYW5n
ZXMuCisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnByb2dyZXNzRmluaXNoZWQgY29uc3QpOgorICAgICAgICBBZGRlZC4gTm90aWZ5
IHRoZSBBWE9iamVjdENhY2hlIHdoZW4gbG9hZGluZyBwcm9ncmVzcyBjaGFuZ2VzLgorICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorCiAyMDIyLTAxLTI1ICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWth
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViSURMXSBSZW1vdmUgdGhlIG5vdy11bnVzZWQgW0N1
c3RvbUVuYWJsZWRdIGV4dGVuZGVkIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggMTI0Y2Q5ZTkxOTVjNDFmZTRkYTQxMzJj
Y2JmNTBjNTAwNjA2MjYzYS4uMDgzNDg2NGMxMzJjMzA0ZjMzZDU0ZTVkNTAwY2JmZDkyNWIwZjk0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5j
bHVkZSAiTWF0aE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckF0dGFj
aG1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgpAQCAtMjI0LDYgKzIyNSwxMyBAQCBB
WE9iamVjdENhY2hlOjpBWE9iamVjdENhY2hlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAsIG1f
cGVyZm9ybUNhY2hlVXBkYXRlVGltZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpwZXJmb3JtQ2Fj
aGVVcGRhdGVUaW1lckZpcmVkKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICAvLyBJZiBsb2FkaW5nIGNvbXBsZXRlZCBiZWZvcmUgdGhlIGNhY2hlIHdhcyBjcmVhdGVkLCBs
b2FkaW5nIHByb2dyZXNzIHdpbGwgaGF2ZSBiZWVuIHJlc2V0IHRvIHplcm8uCisgICAgLy8gQ29u
c2lkZXIgbG9hZGluZyBwcm9ncmVzcyB0byBiZSAxMDAlIGluIHRoaXMgY2FzZS4KKyAgICBkb3Vi
bGUgbG9hZGluZ1Byb2dyZXNzID0gZG9jdW1lbnQucGFnZSgpID8gZG9jdW1lbnQucGFnZSgpLT5w
cm9ncmVzcygpLmVzdGltYXRlZFByb2dyZXNzKCkgOiAxOworICAgIGlmIChsb2FkaW5nUHJvZ3Jl
c3MgPD0gMCkKKyAgICAgICAgbG9hZGluZ1Byb2dyZXNzID0gMTsKKyAgICBtX2VzdGltYXRlZExv
YWRpbmdQcm9ncmVzcyA9IGxvYWRpbmdQcm9ncmVzczsKIH0KIAogQVhPYmplY3RDYWNoZTo6fkFY
T2JqZWN0Q2FjaGUoKQpAQCAtOTcxLDYgKzk3OSwyMiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVw
ZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKiBub2RlKQogICAgIGdldChub2RlKTsK
IH0KIAordm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3Mo
ZG91YmxlIG5ld1Byb2dyZXNzVmFsdWUpCit7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNP
TEFURURfVFJFRSkKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG5ld1Byb2dyZXNzVmFsdWUgPj0g
MCAmJiBuZXdQcm9ncmVzc1ZhbHVlIDw9IDEsICJ1bmV4cGVjdGVkIGxvYWRpbmcgcHJvZ3Jlc3Mg
dmFsdWU6ICVmIiwgbmV3UHJvZ3Jlc3NWYWx1ZSk7CisgICAgaWYgKG1fcGFnZUlEKSB7CisgICAg
ICAgIC8vIFNvbWV0aW1lcyB0aGUgaXNvbGF0ZWQgdHJlZSBoYXNuJ3QgYmVlbiBjcmVhdGVkIGJ5
IHRoZSB0aW1lIHdlIGdldCBsb2FkaW5nIHByb2dyZXNzIHVwZGF0ZXMsCisgICAgICAgIC8vIHNv
IGNhY2hlIHRoaXMgdmFsdWUgaW4gdGhlIEFYT2JqZWN0Q2FjaGUgdG9vIHNvIHdlIGNhbiBnaXZl
IGl0IHRvIHRoZSB0cmVlIHVwb24gY3JlYXRpb24uCisgICAgICAgIG1fZXN0aW1hdGVkTG9hZGlu
Z1Byb2dyZXNzID0gbmV3UHJvZ3Jlc3NWYWx1ZTsKKyAgICAgICAgaWYgKGF1dG8gdHJlZSA9IEFY
SXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKCptX3BhZ2VJRCkpCisgICAgICAgICAgICB0cmVl
LT51cGRhdGVFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MobmV3UHJvZ3Jlc3NWYWx1ZSk7CisgICAg
fQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obmV3UHJvZ3Jlc3NWYWx1ZSk7CisjZW5kaWYKK30K
Kwogdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVDaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0
eU9iamVjdCYgb2JqZWN0KQogewogICAgIC8vIEhhbmRsZSBNZW51TGlzdHMgYW5kIE1lbnVMaXN0
UG9wdXBzIGFzIHNwZWNpYWwgY2FzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5oCmluZGV4IDI5ODBhMWZiOGFhYTkxYjU3ZDcxYzYyYzZmMmNkZGRjMjQ1
OTYwOWYuLjA0Y2MzOWJiODBlMTIyMDM4OTlkMzBkYTY1ZThkMWZmYTllOWU5MmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0xODcsNiArMTg3
LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKik7CiAgICAg
Ly8gQ2FsbGVkIHdoZW4gYSBub2RlIGhhcyBqdXN0IGJlZW4gYXR0YWNoZWQsIHNvIHdlIGNhbiBt
YWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgc3ViY2xhc3Mgb2YgQWNjZXNzaWJpbGl0eU9iamVj
dC4KICAgICB2b2lkIHVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKik7CisgICAg
dm9pZCB1cGRhdGVFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoZG91YmxlKTsKKyAgICB2b2lkIGxv
YWRpbmdQcm9ncmVzc0ZpbmlzaGVkKCkgeyB1cGRhdGVFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3Mo
MSk7IH0KKyAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgeyByZXR1
cm4gbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3M7IH0KIAogICAgIHZvaWQgZGVmZXJGb2N1c2Vk
VUlFbGVtZW50Q2hhbmdlSWZOZWVkZWQoTm9kZSogb2xkRm9jdXNlZE5vZGUsIE5vZGUqIG5ld0Zv
Y3VzZWROb2RlKTsKICAgICB2b2lkIGRlZmVyTW9kYWxDaGFuZ2UoRWxlbWVudCopOwpAQCAtNTIz
LDYgKzUyNiw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxOb2RlKiwgTm9kZSo+
PiBtX2RlZmVycmVkRm9jdXNlZE5vZGVDaGFuZ2U7CiAgICAgYm9vbCBtX2lzU3luY2hyb25pemlu
Z1NlbGVjdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BlcmZvcm1pbmdEZWZlcnJlZENhY2hl
VXBkYXRlIHsgZmFsc2UgfTsKKyAgICBkb3VibGUgbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3Mg
eyAwLjI1IH07CiAKICNpZiBVU0UoQVRLKQogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxBY2Nlc3Np
YmlsaXR5T2JqZWN0Pj4gbV9kZWZlcnJlZEF0dGFjaGVkV3JhcHBlck9iamVjdExpc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IGVjZjgxOGIxYTZiMTYyNzI3MDM4MGJjZTg4NmY5
YTYwNGNmYTc3YWYuLjgyYzdjMWRjZjdkMmZiMjM4MmZjMDVjNjY4YzI4Njg4NDhiYTMyNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0xMTAsNyArMTEwLDYgQEAgdm9pZCBBWElz
b2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIGNvcmVP
YmplY3QsIGJvb2wgaXMKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNMaW5rLCBv
YmplY3QuaXNMaW5rKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0xpbmtl
ZCwgb2JqZWN0LmlzTGlua2VkKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJ
c0xpc3QsIG9iamVjdC5pc0xpc3QoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OklzTG9hZGVkLCBvYmplY3QuaXNMb2FkZWQoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OklzTWVkaWFUaW1lbGluZSwgb2JqZWN0LmlzTWVkaWFUaW1lbGluZSgpKTsKICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51LCBvYmplY3QuaXNNZW51KCkpOwogICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVCYXIsIG9iamVjdC5pc01lbnVCYXIo
KSk7CkBAIC0xNzEsNyArMTcwLDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXpl
QXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIGNvcmVPYmplY3QsIGJvb2wgaXMKICAgICBzZXRP
YmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRSYWRpb0J1dHRvbiwgb2JqZWN0
LnNlbGVjdGVkUmFkaW9CdXR0b24oKSk7CiAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSwgb2JqZWN0LnNlbGVjdGVkVGFiSXRlbSgpKTsKICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGF5b3V0Q291bnQsIG9iamVjdC5sYXlvdXRDb3Vu
dCgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RXN0aW1hdGVkTG9hZGluZ1By
b2dyZXNzLCBvYmplY3QuZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkpOwogICAgIHNldFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zLCBvYmplY3Quc3VwcG9ydHNBUklB
T3ducygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFzUG9wdXAsIG9iamVj
dC5oYXNQb3B1cCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UG9wdXBWYWx1
ZSwgb2JqZWN0LnBvcHVwVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmgKaW5kZXggYzhlZmIyZjhjMTRhZDQ1ZDFkYmIzODM5ZWI5NWMwNDZmMGVmN2Q5Ni4uOTIx
ZmI4ZTcxMThhMmJmYjA4NjhjNDNlZmM3OWY2ZGRjYWUwNTEwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuaApAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAgQVhDb3JlT2JqZWN0KiBz
ZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkUmFkaW9CdXR0b24pOyB9CiAgICAgQVhDb3JlT2Jq
ZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRUYWJJdGVtKTsgfQogICAgIGludCBsYXlvdXRD
b3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpMYXlvdXRDb3VudCk7IH0KLSAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZG91YmxlQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OkVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyk7IH0KKyAgICBkb3VibGUgZXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5lc3Rp
bWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKTsgfQogICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
U3VwcG9ydHNBUklBT3ducyk7IH0KICAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNl
ZENvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKTsgfQog
ICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiBjaGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6QVJJQUNvbnRyb2xzRWxlbWVudHMsIGNoaWxkcmVuKTsgfQpAQCAt
NTEzLDcgKzUxMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIGlzSG92ZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgaXNJbmRldGVybWluYXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0xvYWRlZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNMb2FkZWQpOyB9CisgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpID49IDE7IH0KICAgICBib29sIGlzT25TY3Jl
ZW4oKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcAppbmRleCA2NTQ5ZGJiOWJlNWZhODUwMTI5MmY2NTY4MmM3MDBlN2RhNzJhMGRiLi44
MjZiOGQwZGRmNDQ2ODU1N2NhZjFmOTZkZGU0MmJhMThlZGQ2MmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6Y3JlYXRlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCiAgICAgQVNTRVJU
KCF0cmVlUGFnZUNhY2hlKCkuY29udGFpbnMoKnBhZ2VJRCkpOwogICAgIHRyZWVQYWdlQ2FjaGUo
KS5zZXQoKnBhZ2VJRCwgdHJlZS5jb3B5UmVmKCkpOwogICAgIHRyZWVJRENhY2hlKCkuc2V0KHRy
ZWUtPnRyZWVJRCgpLCB0cmVlLmNvcHlSZWYoKSk7CisgICAgdHJlZS0+dXBkYXRlRXN0aW1hdGVk
TG9hZGluZ1Byb2dyZXNzKGF4T2JqZWN0Q2FjaGUtPmVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygp
KTsKIAogICAgIHJldHVybiB0cmVlOwogfQpAQCAtNDM5LDYgKzQ0MCwxNiBAQCB2b2lkIEFYSXNv
bGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlEKEFYSUQgYXhJRCkKICAgICBtX3BlbmRpbmdQcm9w
ZXJ0eUNoYW5nZXMuYXBwZW5kKHsgYXhJRCwgcHJvcGVydHlNYXAgfSk7CiB9CiAKK3ZvaWQgQVhJ
c29sYXRlZFRyZWU6OnVwZGF0ZUVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyhkb3VibGUgbmV3UHJv
Z3Jlc3NWYWx1ZSkKK3sKKyAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6dXBkYXRlRXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzIik7CisgICAgQVhMT0cobWFrZVN0cmluZygiUXVldWVpbmcgbG9h
ZGluZyBwcm9ncmVzcyB1cGRhdGUgdG8gIiwgbmV3UHJvZ3Jlc3NWYWx1ZSwgIiBmb3IgdHJlZUlE
ICIsIHRyZWVJRCgpKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBtX3BlbmRpbmdFc3RpbWF0ZWRMb2Fk
aW5nUHJvZ3Jlc3MgPSBuZXdQcm9ncmVzc1ZhbHVlOworfQorCiB2b2lkIEFYSXNvbGF0ZWRUcmVl
OjpyZW1vdmVOb2RlKEFYSUQgYXhJRCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6
cmVtb3ZlTm9kZSIpOwpAQCAtNDg0LDYgKzQ5NSw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFw
cGx5UGVuZGluZ0NoYW5nZXMoKQogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9j
ayB9OwogCisgICAgbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MgPSBtX3BlbmRpbmdFc3RpbWF0
ZWRMb2FkaW5nUHJvZ3Jlc3M7CisKICAgICBpZiAobV9wZW5kaW5nRm9jdXNlZE5vZGVJRCAhPSBt
X2ZvY3VzZWROb2RlSUQpIHsKICAgICAgICAgQVhMT0cobWFrZVN0cmluZygiZm9jdXNlZE5vZGVJ
RCAiLCBtX2ZvY3VzZWROb2RlSUQubG9nZ2luZ1N0cmluZygpLCAiIHBlbmRpbmdGb2N1c2VkTm9k
ZUlEICIsIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQubG9nZ2luZ1N0cmluZygpKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5oCmluZGV4IDIwYTRkMWM4NzM2YzA1MDQ4ZWFjMzM2YTNmMjNmODE3MzhjN2Vi
YjQuLjQ1Mzk4NWFmZmU4MWI4YzQzYjcyZmYzNzU5MzNiMmUyMzZiZmYwZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuaApAQCAtMTExLDcgKzExMSw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUg
OiB1aW50MTZfdCB7CiAgICAgRWRpdGFibGVBbmNlc3RvciwKICAgICBFbGVtZW50UmVjdCwKICAg
ICBFbWJlZGRlZEltYWdlRGVzY3JpcHRpb24sCi0gICAgRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNz
LAogICAgIEV4cGFuZGVkVGV4dFZhbHVlLAogICAgIEZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFs
dWVJblRpdGxlLAogICAgIEZvY3VzYWJsZUFuY2VzdG9yLApAQCAtMTY4LDcgKzE2Nyw2IEBAIGVu
dW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgSXNMaW5rZWQsCiAgICAg
SXNMaXN0LAogICAgIElzTGlzdEJveCwKLSAgICBJc0xvYWRlZCwKICAgICBJc01hdGhFbGVtZW50
LAogICAgIElzTWF0aEZyYWN0aW9uLAogICAgIElzTWF0aEZlbmNlZCwKQEAgLTM2MSw2ICszNTks
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYpOwogICAg
IHZvaWQgdXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0Jik7CiAKKyAgICBkb3VibGUgZXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzKCkgeyByZXR1cm4gbV9lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3M7
IH0KKyAgICB2b2lkIHVwZGF0ZUVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyhkb3VibGUgbmV3UHJv
Z3Jlc3MpOworCiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBsZWF2aW5nIGFsbCBkZXNj
ZW5kYW50cyBhbG9uZS4KICAgICB2b2lkIHJlbW92ZU5vZGUoQVhJRCk7CiAgICAgLy8gUmVtb3Zl
cyB0aGUgZ2l2ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cy4KQEAgLTQxMSw2ICs0MTIs
OCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgVmVjdG9yPEFYSUQ+Pj4g
bV9wZW5kaW5nQ2hpbGRyZW5VcGRhdGVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dM
b2NrKTsKICAgICBBWElEIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQgV1RGX0dVQVJERURfQllfTE9D
SyhtX2NoYW5nZUxvZ0xvY2spOwogICAgIEFYSUQgbV9mb2N1c2VkTm9kZUlEOworICAgIGRvdWJs
ZSBtX3BlbmRpbmdFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MgV1RGX0dVQVJERURfQllfTE9DSyht
X2NoYW5nZUxvZ0xvY2spIHsgMC4yNSB9OworICAgIGRvdWJsZSBtX2VzdGltYXRlZExvYWRpbmdQ
cm9ncmVzcyB7IDAuMjUgfTsKICAgICBMb2NrIG1fY2hhbmdlTG9nTG9jazsKIAogICAgIGJvb2wg
bV9jcmVhdGluZ1N1YnRyZWUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jl
c3NUcmFja2VyLmNwcAppbmRleCBmYTg0YzM2NmM2MzE3NWY5ZmI0NzMwZWI4NWM0Njc3ZmMzZDYz
NjhmLi5hYjQzYTYyMzVhYTkyMDQwZjMxODAyYmVkNWYzZWM5NzMxYTEzMDFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcApAQCAtNzUsOCArNzUsOSBAQCBwdWJs
aWM6CiAgICAgbG9uZyBsb25nIGVzdGltYXRlZExlbmd0aDsKIH07CiAKLVByb2dyZXNzVHJhY2tl
cjo6UHJvZ3Jlc3NUcmFja2VyKFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgY2xp
ZW50KQotICAgIDogbV9jbGllbnQoV1RGTW92ZShjbGllbnQpKQorUHJvZ3Jlc3NUcmFja2VyOjpQ
cm9ncmVzc1RyYWNrZXIoUGFnZSYgcGFnZSwgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVu
dD4mJiBjbGllbnQpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fY2xpZW50KFdURk1vdmUo
Y2xpZW50KSkKICAgICAsIG1fcHJvZ3Jlc3NIZWFydGJlYXRUaW1lcigqdGhpcywgJlByb2dyZXNz
VHJhY2tlcjo6cHJvZ3Jlc3NIZWFydGJlYXRUaW1lckZpcmVkKQogewogfQpAQCAtMTM4LDYgKzEz
OSwxMiBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NTdGFydGVkKEZyYW1lJiBmcmFt
ZSkKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lU3RhcnRlZExvYWRpbmcoZnJh
bWUpOwogfQogCit2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQo
RnJhbWUmIGZyYW1lKQoreworICAgIG1fY2xpZW50LT5wcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChm
cmFtZSk7CisgICAgbV9wYWdlLnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKGZyYW1lKTsKK30KKwog
dm9pZCBQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzQ29tcGxldGVkKEZyYW1lJiBmcmFtZSkKIHsK
ICAgICBMT0coUHJvZ3Jlc3MsICJQcm9ncmVzcyBjb21wbGV0ZWQgKCVwKSAtIGZyYW1lICVwKFwi
JXNcIiksIHZhbHVlICVmLCB0cmFja2VkIGZyYW1lcyAlZCwgb3JpZ2luYXRpbmcgZnJhbWUgJXAi
LCB0aGlzLCAmZnJhbWUsIGZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgbV9wcm9ncmVzc1ZhbHVlLCBtX251bVByb2dyZXNzVHJhY2tlZEZyYW1lcywgbV9v
cmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUuZ2V0KCkpOwpAQCAtMTY2LDcgKzE3Myw3IEBAIHZvaWQg
UHJvZ3Jlc3NUcmFja2VyOjpmaW5hbFByb2dyZXNzQ29tcGxldGUoKQogICAgIC8vIHdpdGggZmlu
YWwgcHJvZ3Jlc3MgdmFsdWUuCiAgICAgaWYgKCFtX2ZpbmFsUHJvZ3Jlc3NDaGFuZ2VkU2VudCkg
ewogICAgICAgICBtX3Byb2dyZXNzVmFsdWUgPSAxOwotICAgICAgICBtX2NsaWVudC0+cHJvZ3Jl
c3NFc3RpbWF0ZUNoYW5nZWQoKmZyYW1lKTsKKyAgICAgICAgcHJvZ3Jlc3NFc3RpbWF0ZUNoYW5n
ZWQoKmZyYW1lKTsKICAgICB9CiAKICAgICByZXNldCgpOwpAQCAtMTc2LDYgKzE4Myw3IEBAIHZv
aWQgUHJvZ3Jlc3NUcmFja2VyOjpmaW5hbFByb2dyZXNzQ29tcGxldGUoKQogCiAgICAgZnJhbWUt
PmxvYWRlcigpLmNsaWVudCgpLnNldE1haW5GcmFtZURvY3VtZW50UmVhZHkodHJ1ZSk7CiAgICAg
bV9jbGllbnQtPnByb2dyZXNzRmluaXNoZWQoKmZyYW1lKTsKKyAgICBtX3BhZ2UucHJvZ3Jlc3NG
aW5pc2hlZCgqZnJhbWUpOwogICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkUHJvZ3Jlc3NpbmdTdGF0
dXNDaGFuZ2VkKCk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lU3RvcHBl
ZExvYWRpbmcoKmZyYW1lKTsKQEAgLTI1NCw3ICsyNjIsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tl
cjo6aW5jcmVtZW50UHJvZ3Jlc3MoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHVucwogICAgICAgICAgICAgaWYgKG1fcHJvZ3Jlc3NWYWx1ZSA9PSAxKQogICAgICAgICAgICAg
ICAgIG1fZmluYWxQcm9ncmVzc0NoYW5nZWRTZW50ID0gdHJ1ZTsKIAotICAgICAgICAgICAgbV9j
bGllbnQtPnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKCpmcmFtZSk7CisgICAgICAgICAgICBwcm9n
cmVzc0VzdGltYXRlQ2hhbmdlZCgqZnJhbWUpOwogCiAgICAgICAgICAgICBtX2xhc3ROb3RpZmll
ZFByb2dyZXNzVmFsdWUgPSBtX3Byb2dyZXNzVmFsdWU7CiAgICAgICAgICAgICBtX2xhc3ROb3Rp
ZmllZFByb2dyZXNzVGltZSA9IG5vdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcm9ncmVzc1RyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNr
ZXIuaAppbmRleCBjMGQyMWU2ZTYzN2U4MzE1MTc1NjU5ZDc0YTJiNTNlZGY3ODFhOTdkLi5iM2Fh
YjJhOTg3ZjEyMDU1Y2JkZTVjNzFlNWVjM2FkYTJlYzVjNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Byb2dyZXNzVHJhY2tlci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFByb2dyZXNzVHJh
Y2tlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJvZ3Jlc3NUcmFja2VyKTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBQcm9ncmVzc1Ry
YWNrZXIoVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJik7CisgICAgZXhwbGljaXQg
UHJvZ3Jlc3NUcmFja2VyKFBhZ2UmLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYm
KTsKICAgICB+UHJvZ3Jlc3NUcmFja2VyKCk7CiAKICAgICBQcm9ncmVzc1RyYWNrZXJDbGllbnQm
IGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CkBAIC02Niw5ICs2NiwxMSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgcmVzZXQoKTsKICAgICB2b2lkIGZpbmFsUHJvZ3Jl
c3NDb21wbGV0ZSgpOworICAgIHZvaWQgcHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoRnJhbWUmKTsK
IAogICAgIHZvaWQgcHJvZ3Jlc3NIZWFydGJlYXRUaW1lckZpcmVkKCk7CiAKKyAgICBQYWdlJiBt
X3BhZ2U7CiAgICAgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4gbV9jbGllbnQ7CiAg
ICAgUmVmUHRyPEZyYW1lPiBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZTsKICAgICBIYXNoTWFw
PFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFByb2dyZXNzSXRlbT4+
IG1fcHJvZ3Jlc3NJdGVtczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGM4ODFiMjZiYTI4ZGQ1ODdl
MTdmOGViMzg5ZDQyNTBiNDA4OTFmZjcuLmI5NzEwZTE4YjdkMmQ1Y2ZkMzVlNzMyNWNjNmFlMGJj
OWI4NDkxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjc0LDcgKzI3NCw3IEBAIFBhZ2U6OlBh
Z2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fcG9pbnRl
ckxvY2tDb250cm9sbGVyKG1ha2VVbmlxdWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhpcykp
CiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKLSAgICAs
IG1fcHJvZ3Jlc3MobWFrZVVuaXF1ZTxQcm9ncmVzc1RyYWNrZXI+KFdURk1vdmUocGFnZUNvbmZp
Z3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkpCisgICAgLCBtX3Byb2dyZXNzKG1ha2VV
bmlxdWU8UHJvZ3Jlc3NUcmFja2VyPigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5w
cm9ncmVzc1RyYWNrZXJDbGllbnQpKSkKICAgICAsIG1fYmFja0ZvcndhcmRDb250cm9sbGVyKG1h
a2VVbmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVyPigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQogICAgICwgbV9tYWluRnJhbWUoRnJhbWU6OmNy
ZWF0ZSh0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVu
dEZvck1haW5GcmFtZSkpKQogICAgICwgbV9lZGl0b3JDbGllbnQoV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi5lZGl0b3JDbGllbnQpKQpAQCAtNTgzLDYgKzU4MywyMiBAQCB2b2lkIFBhZ2U6OnNl
dHRpbmdzRGlkQ2hhbmdlKCkKICNlbmRpZgogfQogCit2b2lkIFBhZ2U6OnByb2dyZXNzRXN0aW1h
dGVDaGFuZ2VkKEZyYW1lJiBmcmFtZVdpdGhQcm9ncmVzc1VwZGF0ZSkgY29uc3QKK3sKKyAgICBp
ZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZVdpdGhQcm9ncmVzc1VwZGF0ZS5kb2N1bWVudCgpKSB7
CisgICAgICAgIGlmIChhdXRvKiBheE9iamVjdENhY2hlID0gZG9jdW1lbnQtPmF4T2JqZWN0Q2Fj
aGUoKSkKKyAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUtPnVwZGF0ZUVzdGltYXRlZExvYWRpbmdQ
cm9ncmVzcyhwcm9ncmVzcygpLmVzdGltYXRlZFByb2dyZXNzKCkpOworICAgIH0KK30KKwordm9p
ZCBQYWdlOjpwcm9ncmVzc0ZpbmlzaGVkKEZyYW1lJiBmcmFtZVdpdGhDb21wbGV0ZWRQcm9ncmVz
cykgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZVdpdGhDb21wbGV0ZWRQ
cm9ncmVzcy5kb2N1bWVudCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBheE9iamVjdENhY2hlID0g
ZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUtPmxv
YWRpbmdQcm9ncmVzc0ZpbmlzaGVkKCk7CisgICAgfQorfQorCiBib29sIFBhZ2U6Om9wZW5lZEJ5
RE9NKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9vcGVuZWRCeURPTTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggYmU3ZjgxMzkwNDgyYWI5MTg1YjIwMTY4OWNkMjQ5MTY1ZTU1MWZkZi4uOTgyMDljMWUwMGRh
Y2QyODgxMWU1ODgxZWEzNjE4ZjAxYTk3ODI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTM2MSw2ICsz
NjEsOCBAQCBwdWJsaWM6CiAKICAgICBTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVy
biAqbV9zZXR0aW5nczsgfQogICAgIFByb2dyZXNzVHJhY2tlciYgcHJvZ3Jlc3MoKSBjb25zdCB7
IHJldHVybiAqbV9wcm9ncmVzczsgfQorICAgIHZvaWQgcHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQo
RnJhbWUmKSBjb25zdDsKKyAgICB2b2lkIHByb2dyZXNzRmluaXNoZWQoRnJhbWUmKSBjb25zdDsK
ICAgICBCYWNrRm9yd2FyZENvbnRyb2xsZXImIGJhY2tGb3J3YXJkKCkgY29uc3QgeyByZXR1cm4g
Km1fYmFja0ZvcndhcmRDb250cm9sbGVyOyB9CiAKICAgICBTZWNvbmRzIGRvbVRpbWVyQWxpZ25t
ZW50SW50ZXJ2YWwoKSBjb25zdCB7IHJldHVybiBtX2RvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWw7
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA0MjFkM2FiYWU1MjAxMzFhNWNjOTE0ZjVkMGI3MmFmNTg0Yjk2MzRlLi4wNDc1
ZDJkNjhiZmNhYzRmZTI0MGExMTUyOGU3YmM1MzZhMWQ5ZjI4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMjItMDEtMjYgIFR5bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFwcGxlLmNvbT4KKworICAg
ICAgICBBWCBJVE06IERlZmVyIHRvIHRoZSB0cmVlIHdoZW4gZGV0ZXJtaW5pbmcgQVggb2JqZWN0
IGxvYWRpbmcgcHJvZ3Jlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgIEFzc29jaWF0ZWQgdGVzdCBub3cgdXNlcyBqcy10ZXN0LmpzLCBzbyBt
b2RpZnkgZXhwZWN0YXRpb25zIHRvIGluY2x1ZGUKKyAgICAgICAganMtdGVzdCBvdXRwdXQgKGUu
Zy4gdGVzdCBkZXNjcmlwdGlvbigpKS4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9kb2N1
bWVudC1hdHRyaWJ1dGVzLmh0bWw6CisgICAgICAgIFdhaXQgYXN5bmNocm9ub3VzbHkgZm9yIGxv
YWRpbmcgdG8gY29tcGxldGUgKCJBWExvYWRlZDogMSIpLgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvcGFyZW50LWRlbGV0ZS5odG1sOgorICAgICAgICBEb24ndCBvdXRwdXQgYWxsIGF0dHJpYnV0
ZXMsIHNpbmNlIGl0J3Mgbm90IG5lY2Vzc2FyeSBmb3IgdGhlIHB1cnBvc2UKKyAgICAgICAgb2Yg
dGhlIHRlc3QgKHdoaWNoIGlzIHRvIGVuc3VyZSBjYWxsaW5nIGFsbEF0dHJpYnV0ZXMoKSBpbiB0
aGlzCisgICAgICAgIHNjZW5hcmlvIGRvZXNuJ3QgY2F1c2UgYSBjcmFzaCkuIFByZXZpb3VzbHks
IHRoZSB0ZXN0IG91dHB1dCBjb250YWluZWQKKyAgICAgICAgbG9hZGluZyBBWCBhdHRyaWJ1dGVz
LCBzbyByYXRoZXIgdGhhbiBtYWtpbmcgdGhpcyB0ZXN0IHdhaXQgZm9yCisgICAgICAgIGxvYWRp
bmcgdG8gY29tcGxldGUgSSBkZWNpZGVkIHRvIHJlbW92ZSB0aGUgb3V0cHV0IGFsbCB0b2dldGhl
ci4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4
cGVjdGVkLnR4dDoKKwogMjAyMi0wMS0yNSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBpbnB1dC1zZWN1cml0eSBDU1MgcHJvcGVydHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0
ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQt
YXR0cmlidXRlcy1leHBlY3RlZC50eHQKaW5kZXggOTEyM2IzMDhjZWNiNGYxN2MxMGY5N2QxMWU4
ODE2YzljNzYyOWRmMi4uNWU5Y2Q2OTAzY2JhYTNkYmQ5NjNmNGUxYTcyYzQ2NzI4MTgwOTMwMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmli
dXRlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9j
dW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTEsOSArMSwxNCBAQAorVGhpcyB0ZXN0
IHByb3ZpZGVzIGEgYmFzZSBzbmFwc2hvdCBvZiB0aGUgcm9vdCB3ZWIgYXJlYSdzIGF0dHJpYnV0
ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBBWEhhc0RvY3VtZW50Um9sZUFu
Y2VzdG9yOiAwCiBBWEhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3I6IDAKIEFYUm9sZTogQVhXZWJB
cmVhCiBBWFJvbGVEZXNjcmlwdGlvbjogSFRNTCBjb250ZW50Ci1BWENoaWxkcmVuOiA8YXJyYXkg
b2Ygc2l6ZSAwPgotQVhDaGlsZHJlbkluTmF2aWdhdGlvbk9yZGVyOiA8YXJyYXkgb2Ygc2l6ZSAw
PgorQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgMj4KK0FYQ2hpbGRyZW5Jbk5hdmlnYXRpb25P
cmRlcjogPGFycmF5IG9mIHNpemUgMj4KIEFYSGVscDoKIEFYUGFyZW50OiA8QVhXZWJBcmVhPgog
QVhTaXplOiBOU1NpemU6IHs4MDAsIDYwMH0KQEAgLTM0LDQgKzM5LDcgQEAgQVhQcmV2ZW50S2V5
Ym9hcmRET01FdmVudERpc3BhdGNoOiAwCiBBWFdlYlNlc3Npb25JRDogMgogQVhFbGVtZW50QnVz
eTogMAogCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0
cmlidXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0
cmlidXRlcy5odG1sCmluZGV4IDZiMjI5OTE0ZmMyMjZlOGZjYzJiMDllNzljZjc4Nzk4ZDc4MWFi
NjIuLmY2MGQ4ZjJjZTQxMzg3MTdiNjc1ZGFhYWI3MzU5NTA2MWEyNmIwYWMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLmh0
bWwKQEAgLTEsMjQgKzEsMzAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nl
c3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKwogPHNjcmlw
dD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcHJvdmlkZXMgYSBiYXNlIHNuYXBz
aG90IG9mIHRoZSByb290IHdlYiBhcmVhJ3MgYXR0cmlidXRlcy4iKTsKIAotICAgIHZhciBsb2cg
PSBmdW5jdGlvbihtc2cpCi0gICAgewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIp
KTsKLSAgICB9CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICBvbmxvYWQgPSBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQot
ICAgICAgICAgICAgbG9nKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmFs
bEF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiVGhpcyB0ZXN0
IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlIHRvIHJ1bi4iKQorICAgICAgICBzZXRUaW1lb3V0KGFz
eW5jIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbGV0IGFsbEF0dHJpYnV0ZXM7CisgICAgICAg
ICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoIWFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50KQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYWxsQXR0cmlidXRlcyA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmFsbEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgICAg
ICAvLyBXYWl0IGZvciB0aGUgcGFnZSB0byBiZSBmdWxseSBsb2FkZWQuCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGFsbEF0dHJpYnV0ZXMuaW5jbHVkZXMoIkFYTG9hZGVkOiAxIik7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGRlYnVnRXNjYXBlZChhbGxBdHRyaWJ1dGVzKTsKKyAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCAwKTsKICAgICB9CiA8L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUu
aHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1sCmluZGV4
IDRkN2M1ZTI4MTQwZTQzN2IwNzQ4YzRhNzBjZmI1YmQxNjZlYzlmZTcuLmI5ZDU4MDYxOWQ5MDY3
ZTE5MThmMjhlMjJjYTZjNWFhOTVhZDQ2M2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvcGFyZW50LWRlbGV0ZS5odG1sCkBAIC0xLDI3ICsxLDIyIEBACiA8IURPQ1RZUEUgaHRtbD4K
IDxodG1sPgogPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKLQogZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICB2YXIgYWNjZXNzaWJp
bGl0eUVsZW1lbnQ7Ci0gICAgewotICAgICAgICB2YXIgb3V0ZXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgib3V0ZXIiKTsKLSAgICAgICAgdmFyIGlubmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImlubmVyIik7Ci0gICAgICAgIHZhciBlZGl0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJlZGl0YWJsZSIpOwotICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdCIpOwotICAgICAgICBlZGl0YWJsZS5mb2N1cygpOwotICAgICAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICB2YXIgYWNj
ZXNzaWJpbGl0eUVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dDsKLSAgICAgICAgfQotICAgICAgICBpbm5lci5yZW1vdmVDaGlsZChlZGl0YWJsZSk7Ci0gICAg
ICAgIG91dGVyLnJlbW92ZUNoaWxkKGlubmVyKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgICAgICByZXN1bHQuaW5uZXJUZXh0ID0gYWNjZXNz
aWJpbGl0eUVsZW1lbnQuYWxsQXR0cmlidXRlcygpOwotICAgIH0KKyAgICBjb25zdCBvdXRlciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRlciIpOworICAgIGNvbnN0IGlubmVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlubmVyIik7CisgICAgY29uc3QgZWRpdGFibGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdGFibGUiKTsKKyAgICBjb25zdCByZXN1bHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgZWRpdGFibGUuZm9jdXMoKTsKKyAg
ICBsZXQgYWNjZXNzaWJpbGl0eUVsZW1lbnQ7CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcikKKyAgICAgICAgYWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBpbm5lci5yZW1vdmVDaGlsZChlZGl0YWJs
ZSk7CisgICAgb3V0ZXIucmVtb3ZlQ2hpbGQoaW5uZXIpOworICAgIC8vIFRoaXMgc2hvdWxkIG5v
dCBjYXVzZSBhIGNyYXNoLgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
CisgICAgICAgIGFjY2Vzc2liaWxpdHlFbGVtZW50LmFsbEF0dHJpYnV0ZXMoKTsKIH0KIDwvc2Ny
aXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4dAppbmRleCA4ZmM4
YTI5YjY1N2RmNjRkOWZmYTlkNmI3MjBkMzhjNWUwMzUwN2Q1Li5iMGI5MzQyMjc0MzU3NjAzNjZm
MWEwYjE2MjkyNzg1OGJiNWQ1NTJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4
dApAQCAtMSwzNyArMSw1IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKIFRoaXMgdGVzdCBwYXNzZXMgaWYgdGhlcmUgaXMgbm8gY3Jhc2guCi1BWEhh
c0RvY3VtZW50Um9sZUFuY2VzdG9yOiAwCi1BWEhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3I6IDAK
LUFYUm9sZTogQVhXZWJBcmVhCi1BWFJvbGVEZXNjcmlwdGlvbjogSFRNTCBjb250ZW50Ci1BWENo
aWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAxPgotQVhDaGlsZHJlbkluTmF2aWdhdGlvbk9yZGVyOiA8
YXJyYXkgb2Ygc2l6ZSAxPgotQVhIZWxwOgotQVhQYXJlbnQ6IDxBWFdlYkFyZWE+Ci1BWFNpemU6
IE5TU2l6ZTogezgwMCwgNjAwfQotQVhUaXRsZToKLUFYRGVzY3JpcHRpb246Ci1BWFZhbHVlOgot
QVhGb2N1c2VkOiAwCi1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhXZWJBcmVhPgotQVhTZWxl
Y3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYV2ViQXJl
YT4KLUFYRW5kVGV4dE1hcmtlcjogPEFYV2ViQXJlYT4KLUFYVmlzaXRlZDogMAotQVhMaW5rZWRV
SUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhTZWxlY3RlZDogMAotQVhCbG9ja1F1b3Rl
TGV2ZWw6IDAKLUFYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWFdlYkFyZWE+Ci1BWExhbmd1YWdlOgot
QVhET01JZGVudGlmaWVyOgotQVhET01DbGFzc0xpc3Q6IDxhcnJheSBvZiBzaXplIDA+Ci1BWExp
bmtVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhMb2FkZWQ6IDEKLUFYTGF5b3V0Q291
bnQ6IDIKLUFYTG9hZGluZ1Byb2dyZXNzOiAxCi1BWFVSTDogTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwKLUFYQ2FyZXRCcm93c2luZ0VuYWJsZWQ6IDAKLUFYUHJl
dmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaDogMAotQVhXZWJTZXNzaW9uSUQ6IDIKLUFYRWxl
bWVudEJ1c3k6IDAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450054</attachid>
            <date>2022-01-26 12:16:32 -0800</date>
            <delta_ts>2022-01-26 14:35:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235646-20220126141630.patch</filename>
            <type>text/plain</type>
            <size>30960</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVkNDQ2YjQ0OGI5ZjIz
YmExZmNmMDI2MzVkYTcyYmUwMTVjMTlkZi4uMzIzMzdiNjI3N2E1MTM3NmRiNmRhODE3MTA5ODhj
MjY4NTYyNDkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIyLTAxLTI2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSVRNOiBEZWZlciB0
byB0aGUgdHJlZSB3aGVuIGRldGVybWluaW5nIEFYIG9iamVjdCBsb2FkaW5nIHByb2dyZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2NDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHks
IHdlIHNldCBBWFByb3BlcnR5TmFtZTo6SXNMb2FkZWQgYW5kIEFYUHJvcGVydHlOYW1lOjpFc3Rp
bWF0ZWRMb2FkaW5nUHJvZ3Jlc3MKKyAgICAgICAgb25jZSBpbiBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YSBhbmQgbmV2ZXIgdXBkYXRlIGl0LiBUaGlzIG1lYW5zIHRo
YXQKKyAgICAgICAgaWYgYW4gb2JqZWN0IGlzIGNyZWF0ZWQgd2hpbGUgdGhlIHBhZ2UgaXMgYXQg
c29tZSBub24tMTAwJSBsb2FkIHBlcmNlbnRhZ2UsIEFYIGNsaWVudHMKKyAgICAgICAgdGhhdCBy
ZXF1ZXN0IHRoZXNlIGF0dHJpYnV0ZXMgd2lsbCBhbHdheXMgdGhpbmsgdGhlIG9iamVjdCBpc24n
dCBsb2FkZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZXNlIHR3byBwcm9wZXJ0
aWVzIGFuZCBpbnN0ZWFkIGRlZmVycyB0byB0aGUgaXNvbGF0ZWQgdHJlZSBhc3NvY2lhdGVkCisg
ICAgICAgIHdpdGggZWFjaCBvYmplY3Qgd2hlbiBkZXRlcm1pbmluZyB0aGUgbG9hZCBwZXJjZW50
YWdlLiBCb3RoIG9mIHRoZXNlIHByb3BlcnRpZXMgd2VyZSBiYXNlZAorICAgICAgICBvbiB0aGUg
ZW50aXJlIHBhZ2UgLyBkb2N1bWVudCBsb2FkIHByb2dyZXNzIGFueXdheXMsIHNvIGl0IGRvZXNu
J3QgbWFrZSBzZW5zZSB0byBzZXQgdGhlCisgICAgICAgIHNhbWUgdmFsdWUgZm9yIGFsbCBvZiB0
aGVtLgorCisgICAgICAgIFdlIHRyYWNrIGxvYWRpbmcgcHJvZ3Jlc3MgYnkgY2hhbmdpbmcgUHJv
Z3Jlc3NUcmFja2VyIHRvIGFsc28gbm90aWZ5CisgICAgICAgIHRoZSBwYWdlIHdoZW4gcHJvZ3Jl
c3MgY2hhbmdlcywgd2hpY2ggaW4gdHVybiB1cGRhdGVzIHRoZSBhc3NvY2lhdGVkCisgICAgICAg
IEFYT2JqZWN0Q2FjaGUgd2l0aCB0aGUgbmV3IHByb2dyZXNzIHZhbHVlLgorCisgICAgICAgIENv
dmVyZWQgYnkgYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIHdoaWNo
IHZlcmlmaWVzIHRoZSBBWExvYWQgYW5kCisgICAgICAgIEFYTG9hZGluZ1Byb2dyZXNzIGF0dHJp
YnV0ZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6QVhPYmplY3RDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjp1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MpOgorICAgICAgICBB
ZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmxvYWRpbmdGaW5pc2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpsb2FkaW5nUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICBBZGRl
ZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bG9hZGluZ1Byb2dyZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVzdGlt
YXRlZExvYWRpbmdQcm9ncmVzcyBjb25zdCk6CisgICAgICAgIFJlbmFtZSBlc3RpbWF0ZWRMb2Fk
aW5nUHJvZ3Jlc3MgbWV0aG9kcyB0byBsb2FkaW5nUHJvZ3Jlc3MuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZFRyZWU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcyk6CisgICAgICAgIEFwcGx5IG1fcGVu
ZGluZ0VzdGltYXRlZExvYWRpbmdQcm9ncmVzcy4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZFRyZWU6OmxvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIEFkZGVkLgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6XSk6CisgICAgICAgIEhhbmRsZSByZW5hbWUgb2YgZXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzIG1ldGhvZHMgdG8gbG9hZGluZ1Byb2dyZXNzLgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVz
c1RyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjpQcm9ncmVz
c1RyYWNrZXIpOgorICAgICAgICBTdG9yZSBhIHJlZmVyZW5jZSB0byB0aGUgYXNzb2NpYXRlZCBw
YWdlIGluIG5ldyBtX3BhZ2UgbWVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFj
a2VyOjpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVz
c1RyYWNrZXI6OmZpbmFsUHJvZ3Jlc3NDb21wbGV0ZSk6CisgICAgICAgIE5vdGlmeSB0aGUgUGFn
ZSB3aGVuIHByb2dyZXNzIGNvbXBsZXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJh
Y2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3MpOgorICAgICAgICBOb3RpZnkgdGhlIFBhZ2Ugd2hlbiBw
cm9ncmVzcyBjaGFuZ2VzLgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaDoKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCBjb25zdCk6Cisg
ICAgICAgIEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cHJvZ3Jlc3NGaW5pc2hlZCBj
b25zdCk6CisgICAgICAgIEFkZGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDIyLTAx
LTI1ICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
SURMXSBSZW1vdmUgdGhlIG5vdy11bnVzZWQgW0N1c3RvbUVuYWJsZWRdIGV4dGVuZGVkIGF0dHJp
YnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
aW5kZXggMTI0Y2Q5ZTkxOTVjNDFmZTRkYTQxMzJjY2JmNTBjNTAwNjA2MjYzYS4uNGJlMjdhNGFk
NDNjYWIwMWQxNGI3ZDg2YWE3ZDY5MzMxNjEwM2ZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVk
ZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJS
YW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJJ
bWFnZS5oIgpAQCAtMjI0LDYgKzIyNSwxMyBAQCBBWE9iamVjdENhY2hlOjpBWE9iamVjdENhY2hl
KERvY3VtZW50JiBkb2N1bWVudCkKICAgICAsIG1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIoKnRo
aXMsICZBWE9iamVjdENhY2hlOjpwZXJmb3JtQ2FjaGVVcGRhdGVUaW1lckZpcmVkKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBJZiBsb2FkaW5nIGNvbXBsZXRlZCBi
ZWZvcmUgdGhlIGNhY2hlIHdhcyBjcmVhdGVkLCBsb2FkaW5nIHByb2dyZXNzIHdpbGwgaGF2ZSBi
ZWVuIHJlc2V0IHRvIHplcm8uCisgICAgLy8gQ29uc2lkZXIgbG9hZGluZyBwcm9ncmVzcyB0byBi
ZSAxMDAlIGluIHRoaXMgY2FzZS4KKyAgICBkb3VibGUgbG9hZGluZ1Byb2dyZXNzID0gZG9jdW1l
bnQucGFnZSgpID8gZG9jdW1lbnQucGFnZSgpLT5wcm9ncmVzcygpLmVzdGltYXRlZFByb2dyZXNz
KCkgOiAxOworICAgIGlmIChsb2FkaW5nUHJvZ3Jlc3MgPD0gMCkKKyAgICAgICAgbG9hZGluZ1By
b2dyZXNzID0gMTsKKyAgICBtX2xvYWRpbmdQcm9ncmVzcyA9IGxvYWRpbmdQcm9ncmVzczsKIH0K
IAogQVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQpAQCAtOTcxLDYgKzk3OSwyMiBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKiBu
b2RlKQogICAgIGdldChub2RlKTsKIH0KIAordm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVMb2Fk
aW5nUHJvZ3Jlc3MoZG91YmxlIG5ld1Byb2dyZXNzVmFsdWUpCit7CisjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG5ld1Byb2dy
ZXNzVmFsdWUgPj0gMCAmJiBuZXdQcm9ncmVzc1ZhbHVlIDw9IDEsICJ1bmV4cGVjdGVkIGxvYWRp
bmcgcHJvZ3Jlc3MgdmFsdWU6ICVmIiwgbmV3UHJvZ3Jlc3NWYWx1ZSk7CisgICAgaWYgKG1fcGFn
ZUlEKSB7CisgICAgICAgIC8vIFNvbWV0aW1lcyB0aGUgaXNvbGF0ZWQgdHJlZSBoYXNuJ3QgYmVl
biBjcmVhdGVkIGJ5IHRoZSB0aW1lIHdlIGdldCBsb2FkaW5nIHByb2dyZXNzIHVwZGF0ZXMsCisg
ICAgICAgIC8vIHNvIGNhY2hlIHRoaXMgdmFsdWUgaW4gdGhlIEFYT2JqZWN0Q2FjaGUgdG9vIHNv
IHdlIGNhbiBnaXZlIGl0IHRvIHRoZSB0cmVlIHVwb24gY3JlYXRpb24uCisgICAgICAgIG1fbG9h
ZGluZ1Byb2dyZXNzID0gbmV3UHJvZ3Jlc3NWYWx1ZTsKKyAgICAgICAgaWYgKGF1dG8gdHJlZSA9
IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKCptX3BhZ2VJRCkpCisgICAgICAgICAgICB0
cmVlLT51cGRhdGVMb2FkaW5nUHJvZ3Jlc3MobmV3UHJvZ3Jlc3NWYWx1ZSk7CisgICAgfQorI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0obmV3UHJvZ3Jlc3NWYWx1ZSk7CisjZW5kaWYKK30KKwogdm9p
ZCBBWE9iamVjdENhY2hlOjpoYW5kbGVDaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVj
dCYgb2JqZWN0KQogewogICAgIC8vIEhhbmRsZSBNZW51TGlzdHMgYW5kIE1lbnVMaXN0UG9wdXBz
IGFzIHNwZWNpYWwgY2FzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oCmluZGV4IDI5ODBhMWZiOGFhYTkxYjU3ZDcxYzYyYzZmMmNkZGRjMjQ1OTYwOWYu
Ljg2MmM1MjJiODRjNDRmOTM0MjRiMGJmM2U5YjBlZGU0MjJlNDE1OGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0xODcsNiArMTg3LDkgQEAg
cHVibGljOgogICAgIHZvaWQgY2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKik7CiAgICAgLy8gQ2Fs
bGVkIHdoZW4gYSBub2RlIGhhcyBqdXN0IGJlZW4gYXR0YWNoZWQsIHNvIHdlIGNhbiBtYWtlIHN1
cmUgd2UgaGF2ZSB0aGUgcmlnaHQgc3ViY2xhc3Mgb2YgQWNjZXNzaWJpbGl0eU9iamVjdC4KICAg
ICB2b2lkIHVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKik7CisgICAgdm9pZCB1
cGRhdGVMb2FkaW5nUHJvZ3Jlc3MoZG91YmxlKTsKKyAgICB2b2lkIGxvYWRpbmdGaW5pc2hlZCgp
IHsgdXBkYXRlTG9hZGluZ1Byb2dyZXNzKDEpOyB9CisgICAgZG91YmxlIGxvYWRpbmdQcm9ncmVz
cygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGluZ1Byb2dyZXNzOyB9CiAKICAgICB2b2lkIGRlZmVy
Rm9jdXNlZFVJRWxlbWVudENoYW5nZUlmTmVlZGVkKE5vZGUqIG9sZEZvY3VzZWROb2RlLCBOb2Rl
KiBuZXdGb2N1c2VkTm9kZSk7CiAgICAgdm9pZCBkZWZlck1vZGFsQ2hhbmdlKEVsZW1lbnQqKTsK
QEAgLTUyMyw2ICs1MjYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Tm9kZSos
IE5vZGUqPj4gbV9kZWZlcnJlZEZvY3VzZWROb2RlQ2hhbmdlOwogICAgIGJvb2wgbV9pc1N5bmNo
cm9uaXppbmdTZWxlY3Rpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9wZXJmb3JtaW5nRGVmZXJy
ZWRDYWNoZVVwZGF0ZSB7IGZhbHNlIH07CisgICAgZG91YmxlIG1fbG9hZGluZ1Byb2dyZXNzIHsg
MC4yNSB9OwogCiAjaWYgVVNFKEFUSykKICAgICBMaXN0SGFzaFNldDxSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4+IG1fZGVmZXJyZWRBdHRhY2hlZFdyYXBwZXJPYmplY3RMaXN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRl
eCAxYzA3MDcyOTVhNzRkOTAxN2JkZGRlZmU0MmVkYzRjODk3YjFjZTFmLi4xYTk2M2E1ZDYxNjEw
NmEzMDYxZWI2NjBjYTRmNTQ1OGRjZTBhOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMjk1LDcgKzI5NSw3IEBAIHB1
YmxpYzoKICAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpIG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KICAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVkTGlzdEl0ZW0oKSBvdmVy
cmlkZTsKICAgICBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9
Ci0gICAgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIDA7IH0KKyAgICBkb3VibGUgbG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzQVJJQUNvbnRy
b2woQWNjZXNzaWJpbGl0eVJvbGUpOwogICAgIGJvb2wgc3VwcG9ydHNDaGVja2VkU3RhdGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggYzY1NjgwMzkw
YmM0MjIyYzIwOGRhMGM5ZmE2NjQwOWU4ODc0YzdhYS4uMjA0YjJiOTFhMjUyYjAwNjI1NmY4YzYy
MTY3MmRlMWVmYzQzOGMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTEwNDcsNyArMTA0
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRUYWJJdGVt
KCkgPSAwOwogICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBzZWxlY3RlZExpc3RJdGVtKCkgPSAw
OwogICAgIHZpcnR1YWwgaW50IGxheW91dENvdW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
ZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGRvdWJsZSBsb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcg
YnJhaWxsZUxhYmVsKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGJyYWlsbGVSb2xl
RGVzY3JpcHRpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZW1iZWRkZWRJbWFn
ZURlc2NyaXB0aW9uKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNDk4ODZl
NWQ4ODgwZDhhOGVkMjc0YzJmYmUxMDMxNjlhOThmNTNiMi4uZWZjMTVjNjk0NTI4ZDJkOTMzNmY4
Y2VhYjcwZGZmOWQwYzBlYjJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xNTM2LDcgKzE1
MzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTG9hZGVkKCkgY29uc3QK
ICAgICByZXR1cm4gbV9yZW5kZXJlciA/ICFtX3JlbmRlcmVyLT5kb2N1bWVudCgpLnBhcnNlcigp
IDogZmFsc2U7CiB9CiAKLWRvdWJsZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojplc3RpbWF0
ZWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdAorZG91YmxlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmxvYWRpbmdQcm9ncmVzcygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAg
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggNTk1ZjBhNmQzODcwYWNjOWIxYWE4
NzkyN2NlNDJmMjhkN2U4NWNhZC4uOTBlMzk5MWMyNTUzNzBmOTk3NjBjMGI1Yjg3YmRmY2ZlM2I5
ZTYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0
IG92ZXJyaWRlOwogICAgIAogICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIGRvdWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBkb3VibGUgbG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmNwcAppbmRleCBlY2Y4MThiMWE2YjE2MjcyNzAzODBiY2U4ODZmOWE2MDRjZmE3
N2FmLi44MmM3YzFkY2Y3ZDJmYjIzODJmYzA1YzY2OGMyODY4ODQ4YmEzMjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMTEwLDcgKzExMCw2IEBAIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3JlT2JqZWN0JiBjb3JlT2JqZWN0LCBi
b29sIGlzCiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTGluaywgb2JqZWN0Lmlz
TGluaygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNMaW5rZWQsIG9iamVj
dC5pc0xpbmtlZCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNMaXN0LCBv
YmplY3QuaXNMaXN0KCkpOwotICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0xvYWRl
ZCwgb2JqZWN0LmlzTG9hZGVkKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJ
c01lZGlhVGltZWxpbmUsIG9iamVjdC5pc01lZGlhVGltZWxpbmUoKSk7CiAgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVudSwgb2JqZWN0LmlzTWVudSgpKTsKICAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51QmFyLCBvYmplY3QuaXNNZW51QmFyKCkpOwpAQCAt
MTcxLDcgKzE3MCw2IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0
ZURhdGEoQVhDb3JlT2JqZWN0JiBjb3JlT2JqZWN0LCBib29sIGlzCiAgICAgc2V0T2JqZWN0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkUmFkaW9CdXR0b24sIG9iamVjdC5zZWxlY3Rl
ZFJhZGlvQnV0dG9uKCkpOwogICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpT
ZWxlY3RlZFRhYkl0ZW0sIG9iamVjdC5zZWxlY3RlZFRhYkl0ZW0oKSk7CiAgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OkxheW91dENvdW50LCBvYmplY3QubGF5b3V0Q291bnQoKSk7Ci0g
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkVzdGltYXRlZExvYWRpbmdQcm9ncmVzcywg
b2JqZWN0LmVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6U3VwcG9ydHNBUklBT3ducywgb2JqZWN0LnN1cHBvcnRzQVJJQU93bnMoKSk7
CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okhhc1BvcHVwLCBvYmplY3QuaGFzUG9w
dXAoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlBvcHVwVmFsdWUsIG9iamVj
dC5wb3B1cFZhbHVlKCkuaXNvbGF0ZWRDb3B5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmlu
ZGV4IGM4ZWZiMmY4YzE0YWQ0NWQxZGJiMzgzOWViOTVjMDQ2ZjBlZjdkOTYuLjk4MDA2OTk0OWQy
NTM4OTk1ZWNkNmI2MDNhMWYwNDJmOTAwMTIxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgK
QEAgLTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRS
YWRpb0J1dHRvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpTZWxlY3RlZFJhZGlvQnV0dG9uKTsgfQogICAgIEFYQ29yZU9iamVjdCogc2Vs
ZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSk7IH0KICAgICBpbnQgbGF5b3V0Q291bnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
TGF5b3V0Q291bnQpOyB9Ci0gICAgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGRvdWJsZUF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MpOyB9CisgICAgZG91YmxlIGxvYWRpbmdQcm9ncmVz
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRyZWUoKS0+bG9hZGluZ1Byb2dyZXNzKCk7IH0K
ICAgICBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzQVJJQU93bnMpOyB9CiAgICAg
Ym9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQWN0aXZlRGVz
Y2VuZGFudE9mRm9jdXNlZENvbnRhaW5lcik7IH0KICAgICB2b2lkIGFyaWFDb250cm9sc0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRl
IHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFDb250
cm9sc0VsZW1lbnRzLCBjaGlsZHJlbik7IH0KQEAgLTUxMyw3ICs1MTMsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNGaWd1cmVFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0hv
dmVyZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTG9hZGVkKTsgfQorICAgIGJvb2wg
aXNMb2FkZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBsb2FkaW5nUHJvZ3Jlc3MoKSA+PSAx
OyB9CiAgICAgYm9vbCBpc09uU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc09m
ZlNjcmVlbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNQcmVzc2VkKCkgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggNjU0OWRiYjliZTVmYTg1MDEyOTJm
NjU2ODJjNzAwZTdkYTcyYTBkYi4uZDI0OTEzNGY0MDhjODliOGI4YjhkMjlmOTJlNmUwMmFlOTY3
MzE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFJlZjxB
WElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZShBWE9iamVjdENhY2hlKiBheE9i
amVjdENhY2hlKQogICAgIEFTU0VSVCghdHJlZVBhZ2VDYWNoZSgpLmNvbnRhaW5zKCpwYWdlSUQp
KTsKICAgICB0cmVlUGFnZUNhY2hlKCkuc2V0KCpwYWdlSUQsIHRyZWUuY29weVJlZigpKTsKICAg
ICB0cmVlSURDYWNoZSgpLnNldCh0cmVlLT50cmVlSUQoKSwgdHJlZS5jb3B5UmVmKCkpOworICAg
IHRyZWUtPnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhheE9iamVjdENhY2hlLT5sb2FkaW5nUHJvZ3Jl
c3MoKSk7CiAKICAgICByZXR1cm4gdHJlZTsKIH0KQEAgLTQzOSw2ICs0NDAsMTYgQEAgdm9pZCBB
WElzb2xhdGVkVHJlZTo6c2V0Rm9jdXNlZE5vZGVJRChBWElEIGF4SUQpCiAgICAgbV9wZW5kaW5n
UHJvcGVydHlDaGFuZ2VzLmFwcGVuZCh7IGF4SUQsIHByb3BlcnR5TWFwIH0pOwogfQogCit2b2lk
IEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MoZG91YmxlIG5ld1Byb2dyZXNz
VmFsdWUpCit7CisgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUxvYWRpbmdQcm9n
cmVzcyIpOworICAgIEFYTE9HKG1ha2VTdHJpbmcoIlF1ZXVlaW5nIGxvYWRpbmcgcHJvZ3Jlc3Mg
dXBkYXRlIHRvICIsIG5ld1Byb2dyZXNzVmFsdWUsICIgZm9yIHRyZWVJRCAiLCB0cmVlSUQoKSkp
OworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9j
aGFuZ2VMb2dMb2NrIH07CisgICAgbV9wZW5kaW5nTG9hZGluZ1Byb2dyZXNzID0gbmV3UHJvZ3Jl
c3NWYWx1ZTsKK30KKwogdm9pZCBBWElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZShBWElEIGF4SUQp
CiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OnJlbW92ZU5vZGUiKTsKQEAgLTQ4NCw2
ICs0OTUsOCBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKCkKIAog
ICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKIAorICAgIG1fbG9hZGluZ1By
b2dyZXNzID0gbV9wZW5kaW5nTG9hZGluZ1Byb2dyZXNzOworCiAgICAgaWYgKG1fcGVuZGluZ0Zv
Y3VzZWROb2RlSUQgIT0gbV9mb2N1c2VkTm9kZUlEKSB7CiAgICAgICAgIEFYTE9HKG1ha2VTdHJp
bmcoImZvY3VzZWROb2RlSUQgIiwgbV9mb2N1c2VkTm9kZUlELmxvZ2dpbmdTdHJpbmcoKSwgIiBw
ZW5kaW5nRm9jdXNlZE5vZGVJRCAiLCBtX3BlbmRpbmdGb2N1c2VkTm9kZUlELmxvZ2dpbmdTdHJp
bmcoKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCAyMGE0ZDFjODczNmMwNTA0OGVhYzMz
NmEzZjIzZjgxNzM4YzdlYmI0Li5mMjhjNDZhNDUzNDViZTUwZjZhMzk2MTcxNzAzZDlkOTUzYTU0
ZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTExMSw3ICsxMTEsNiBAQCBlbnVtIGNsYXNz
IEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIEVkaXRhYmxlQW5jZXN0b3IsCiAgICAg
RWxlbWVudFJlY3QsCiAgICAgRW1iZWRkZWRJbWFnZURlc2NyaXB0aW9uLAotICAgIEVzdGltYXRl
ZExvYWRpbmdQcm9ncmVzcywKICAgICBFeHBhbmRlZFRleHRWYWx1ZSwKICAgICBGaWxlVXBsb2Fk
QnV0dG9uUmV0dXJuc1ZhbHVlSW5UaXRsZSwKICAgICBGb2N1c2FibGVBbmNlc3RvciwKQEAgLTE2
OCw3ICsxNjcsNiBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAg
IElzTGlua2VkLAogICAgIElzTGlzdCwKICAgICBJc0xpc3RCb3gsCi0gICAgSXNMb2FkZWQsCiAg
ICAgSXNNYXRoRWxlbWVudCwKICAgICBJc01hdGhGcmFjdGlvbiwKICAgICBJc01hdGhGZW5jZWQs
CkBAIC0zNjEsNiArMzU5LDkgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlU3VidHJlZShBWENv
cmVPYmplY3QmKTsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuKEFYQ29yZU9iamVjdCYpOwogCisg
ICAgZG91YmxlIGxvYWRpbmdQcm9ncmVzcygpIHsgcmV0dXJuIG1fbG9hZGluZ1Byb2dyZXNzOyB9
CisgICAgdm9pZCB1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MoZG91YmxlIG5ld1Byb2dyZXNzKTsKKwog
ICAgIC8vIFJlbW92ZXMgdGhlIGdpdmVuIG5vZGUgbGVhdmluZyBhbGwgZGVzY2VuZGFudHMgYWxv
bmUuCiAgICAgdm9pZCByZW1vdmVOb2RlKEFYSUQpOwogICAgIC8vIFJlbW92ZXMgdGhlIGdpdmVu
IG5vZGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFudHMuCkBAIC00MTEsNiArNDEyLDggQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPEFYSUQsIFZlY3RvcjxBWElEPj4+IG1fcGVuZGluZ0No
aWxkcmVuVXBkYXRlcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7CiAgICAg
QVhJRCBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VM
b2dMb2NrKTsKICAgICBBWElEIG1fZm9jdXNlZE5vZGVJRDsKKyAgICBkb3VibGUgbV9wZW5kaW5n
TG9hZGluZ1Byb2dyZXNzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKSB7IDAu
MjUgfTsKKyAgICBkb3VibGUgbV9sb2FkaW5nUHJvZ3Jlc3MgeyAwLjI1IH07CiAgICAgTG9jayBt
X2NoYW5nZUxvZ0xvY2s7CiAKICAgICBib29sIG1fY3JlYXRpbmdTdWJ0cmVlIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMTFjNGI5ZGNjODg3
ZmY0ZmFkNTVhNTI0ZDEwYzU4NmVhNmI3MjYxNC4uZWEwNjE2ZTkwN2NkNjFjYmY2NmM5OTc2MTU3
M2E4YzgyYmUwNWFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
QEAgLTIwMzMsNyArMjAzMyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMYXlvdXRD
b3VudCJdKQogICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+bGF5b3V0Q291bnQo
KSk7CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5TG9hZGluZ1Byb2dyZXNzQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiBAKGJh
Y2tpbmdPYmplY3QtPmVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpKTsKKyAgICAgICAgICAgIHJl
dHVybiBAKGJhY2tpbmdPYmplY3QtPmxvYWRpbmdQcm9ncmVzcygpKTsKICAgICAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5Ym9h
cmRET01FdmVudERpc3BhdGNoQXR0cmlidXRlXSkKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVjdC0+cHJldmVudEtleWJvYXJkRE9NRXZlbnRE
aXNwYXRjaCgpXTsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlDYXJldEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCmluZGV4IGZhODRjMzY2YzYzMTc1ZjlmYjQ3
MzBlYjg1YzQ2NzdmYzNkNjM2OGYuLmFiNDNhNjIzNWFhOTIwNDBmMzE4MDJiZWQ1ZjNlYzk3MzFh
MTMwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC03
NSw4ICs3NSw5IEBAIHB1YmxpYzoKICAgICBsb25nIGxvbmcgZXN0aW1hdGVkTGVuZ3RoOwogfTsK
IAotUHJvZ3Jlc3NUcmFja2VyOjpQcm9ncmVzc1RyYWNrZXIoVW5pcXVlUmVmPFByb2dyZXNzVHJh
Y2tlckNsaWVudD4mJiBjbGllbnQpCi0gICAgOiBtX2NsaWVudChXVEZNb3ZlKGNsaWVudCkpCitQ
cm9ncmVzc1RyYWNrZXI6OlByb2dyZXNzVHJhY2tlcihQYWdlJiBwYWdlLCBVbmlxdWVSZWY8UHJv
Z3Jlc3NUcmFja2VyQ2xpZW50PiYmIGNsaWVudCkKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwg
bV9jbGllbnQoV1RGTW92ZShjbGllbnQpKQogICAgICwgbV9wcm9ncmVzc0hlYXJ0YmVhdFRpbWVy
KCp0aGlzLCAmUHJvZ3Jlc3NUcmFja2VyOjpwcm9ncmVzc0hlYXJ0YmVhdFRpbWVyRmlyZWQpCiB7
CiB9CkBAIC0xMzgsNiArMTM5LDEyIEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjpwcm9ncmVzc1N0
YXJ0ZWQoRnJhbWUmIGZyYW1lKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVT
dGFydGVkTG9hZGluZyhmcmFtZSk7CiB9CiAKK3ZvaWQgUHJvZ3Jlc3NUcmFja2VyOjpwcm9ncmVz
c0VzdGltYXRlQ2hhbmdlZChGcmFtZSYgZnJhbWUpCit7CisgICAgbV9jbGllbnQtPnByb2dyZXNz
RXN0aW1hdGVDaGFuZ2VkKGZyYW1lKTsKKyAgICBtX3BhZ2UucHJvZ3Jlc3NFc3RpbWF0ZUNoYW5n
ZWQoZnJhbWUpOworfQorCiB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NDb21wbGV0ZWQo
RnJhbWUmIGZyYW1lKQogewogICAgIExPRyhQcm9ncmVzcywgIlByb2dyZXNzIGNvbXBsZXRlZCAo
JXApIC0gZnJhbWUgJXAoXCIlc1wiKSwgdmFsdWUgJWYsIHRyYWNrZWQgZnJhbWVzICVkLCBvcmln
aW5hdGluZyBmcmFtZSAlcCIsIHRoaXMsICZmcmFtZSwgZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NU
cmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSk7CkBAIC0xNjYs
NyArMTczLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmZpbmFsUHJvZ3Jlc3NDb21wbGV0ZSgp
CiAgICAgLy8gd2l0aCBmaW5hbCBwcm9ncmVzcyB2YWx1ZS4KICAgICBpZiAoIW1fZmluYWxQcm9n
cmVzc0NoYW5nZWRTZW50KSB7CiAgICAgICAgIG1fcHJvZ3Jlc3NWYWx1ZSA9IDE7Ci0gICAgICAg
IG1fY2xpZW50LT5wcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCgqZnJhbWUpOworICAgICAgICBwcm9n
cmVzc0VzdGltYXRlQ2hhbmdlZCgqZnJhbWUpOwogICAgIH0KIAogICAgIHJlc2V0KCk7CkBAIC0x
NzYsNiArMTgzLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmZpbmFsUHJvZ3Jlc3NDb21wbGV0
ZSgpCiAKICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2V0TWFpbkZyYW1lRG9jdW1lbnRS
ZWFkeSh0cnVlKTsKICAgICBtX2NsaWVudC0+cHJvZ3Jlc3NGaW5pc2hlZCgqZnJhbWUpOworICAg
IG1fcGFnZS5wcm9ncmVzc0ZpbmlzaGVkKCpmcmFtZSk7CiAgICAgZnJhbWUtPmxvYWRlcigpLmxv
YWRQcm9ncmVzc2luZ1N0YXR1c0NoYW5nZWQoKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZnJhbWVTdG9wcGVkTG9hZGluZygqZnJhbWUpOwpAQCAtMjU0LDcgKzI2Miw3IEBAIHZv
aWQgUHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyhSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgdW5zCiAgICAgICAgICAgICBpZiAobV9wcm9ncmVzc1ZhbHVlID09
IDEpCiAgICAgICAgICAgICAgICAgbV9maW5hbFByb2dyZXNzQ2hhbmdlZFNlbnQgPSB0cnVlOwog
Ci0gICAgICAgICAgICBtX2NsaWVudC0+cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoKmZyYW1lKTsK
KyAgICAgICAgICAgIHByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKCpmcmFtZSk7CiAKICAgICAgICAg
ICAgIG1fbGFzdE5vdGlmaWVkUHJvZ3Jlc3NWYWx1ZSA9IG1fcHJvZ3Jlc3NWYWx1ZTsKICAgICAg
ICAgICAgIG1fbGFzdE5vdGlmaWVkUHJvZ3Jlc3NUaW1lID0gbm93OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Byb2dyZXNzVHJhY2tlci5oCmluZGV4IGMwZDIxZTZlNjM3ZTgzMTUxNzU2NTlkNzRhMmI1
M2VkZjc4MWE5N2QuLmIzYWFiMmE5ODdmMTIwNTVjYmRlNWM3MWU1ZWMzYWRhMmVjNWM1ODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
Y2xhc3MgUHJvZ3Jlc3NUcmFja2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcm9ncmVz
c1RyYWNrZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4
cGxpY2l0IFByb2dyZXNzVHJhY2tlcihVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYm
KTsKKyAgICBleHBsaWNpdCBQcm9ncmVzc1RyYWNrZXIoUGFnZSYsIFVuaXF1ZVJlZjxQcm9ncmVz
c1RyYWNrZXJDbGllbnQ+JiYpOwogICAgIH5Qcm9ncmVzc1RyYWNrZXIoKTsKIAogICAgIFByb2dy
ZXNzVHJhY2tlckNsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQuZ2V0KCk7IH0KQEAg
LTY2LDkgKzY2LDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCByZXNldCgpOwogICAg
IHZvaWQgZmluYWxQcm9ncmVzc0NvbXBsZXRlKCk7CisgICAgdm9pZCBwcm9ncmVzc0VzdGltYXRl
Q2hhbmdlZChGcmFtZSYpOwogCiAgICAgdm9pZCBwcm9ncmVzc0hlYXJ0YmVhdFRpbWVyRmlyZWQo
KTsKIAorICAgIFBhZ2UmIG1fcGFnZTsKICAgICBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50PiBtX2NsaWVudDsKICAgICBSZWZQdHI8RnJhbWU+IG1fb3JpZ2luYXRpbmdQcm9ncmVzc0Zy
YW1lOwogICAgIEhhc2hNYXA8UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8UHJvZ3Jlc3NJdGVtPj4gbV9wcm9ncmVzc0l0ZW1zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
Yzg4MWIyNmJhMjhkZDU4N2UxN2Y4ZWIzODlkNDI1MGI0MDg5MWZmNy4uNTgwZGExMTcyM2RjZjY2
ZjMwY2ZmN2EzY2I1ODg1M2I3YmVmZTViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC00OCw2ICs0
OCw3IEBACiAjaW5jbHVkZSAiRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCIKICNpbmNsdWRlICJE
aWFnbm9zdGljTG9nZ2luZ0tleXMuaCIKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudFRpbWVsaW5lLmgiCkBAIC0yNzQsNyArMjc1LDcgQEAgUGFnZTo6UGFnZShQ
YWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgICwgbV9wb2ludGVyTG9j
a0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxQb2ludGVyTG9ja0NvbnRyb2xsZXI+KCp0aGlzKSkKICNl
bmRpZgogICAgICwgbV9zZXR0aW5ncyhTZXR0aW5nczo6Y3JlYXRlKHRoaXMpKQotICAgICwgbV9w
cm9ncmVzcyhtYWtlVW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oV1RGTW92ZShwYWdlQ29uZmlndXJh
dGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQpKSkKKyAgICAsIG1fcHJvZ3Jlc3MobWFrZVVuaXF1
ZTxQcm9ncmVzc1RyYWNrZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnByb2dy
ZXNzVHJhY2tlckNsaWVudCkpKQogICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIobWFrZVVu
aXF1ZTxCYWNrRm9yd2FyZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uLmJhY2tGb3J3YXJkQ2xpZW50KSkpCiAgICAgLCBtX21haW5GcmFtZShGcmFtZTo6Y3JlYXRl
KHRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9y
TWFpbkZyYW1lKSkpCiAgICAgLCBtX2VkaXRvckNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uLmVkaXRvckNsaWVudCkpCkBAIC01ODMsNiArNTg0LDIyIEBAIHZvaWQgUGFnZTo6c2V0dGlu
Z3NEaWRDaGFuZ2UoKQogI2VuZGlmCiB9CiAKK3ZvaWQgUGFnZTo6cHJvZ3Jlc3NFc3RpbWF0ZUNo
YW5nZWQoRnJhbWUmIGZyYW1lV2l0aFByb2dyZXNzVXBkYXRlKSBjb25zdAoreworICAgIGlmIChh
dXRvKiBkb2N1bWVudCA9IGZyYW1lV2l0aFByb2dyZXNzVXBkYXRlLmRvY3VtZW50KCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIGF4T2JqZWN0Q2FjaGUgPSBkb2N1bWVudC0+ZXhpc3RpbmdBWE9iamVj
dENhY2hlKCkpCisgICAgICAgICAgICBheE9iamVjdENhY2hlLT51cGRhdGVMb2FkaW5nUHJvZ3Jl
c3MocHJvZ3Jlc3MoKS5lc3RpbWF0ZWRQcm9ncmVzcygpKTsKKyAgICB9Cit9CisKK3ZvaWQgUGFn
ZTo6cHJvZ3Jlc3NGaW5pc2hlZChGcmFtZSYgZnJhbWVXaXRoQ29tcGxldGVkUHJvZ3Jlc3MpIGNv
bnN0Cit7CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWVXaXRoQ29tcGxldGVkUHJvZ3Jl
c3MuZG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoYXV0byogYXhPYmplY3RDYWNoZSA9IGRvY3Vt
ZW50LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUt
PmxvYWRpbmdGaW5pc2hlZCgpOworICAgIH0KK30KKwogYm9vbCBQYWdlOjpvcGVuZWRCeURPTSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3BlbmVkQnlET007CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGJl
N2Y4MTM5MDQ4MmFiOTE4NWIyMDE2ODljZDI0OTE2NWU1NTFmZGYuLjk4MjA5YzFlMDBkYWNkMjg4
MTFlNTg4MWVhMzYxOGYwMWE5NzgyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0zNjEsNiArMzYxLDgg
QEAgcHVibGljOgogCiAgICAgU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gKm1f
c2V0dGluZ3M7IH0KICAgICBQcm9ncmVzc1RyYWNrZXImIHByb2dyZXNzKCkgY29uc3QgeyByZXR1
cm4gKm1fcHJvZ3Jlc3M7IH0KKyAgICB2b2lkIHByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKEZyYW1l
JikgY29uc3Q7CisgICAgdm9pZCBwcm9ncmVzc0ZpbmlzaGVkKEZyYW1lJikgY29uc3Q7CiAgICAg
QmFja0ZvcndhcmRDb250cm9sbGVyJiBiYWNrRm9yd2FyZCgpIGNvbnN0IHsgcmV0dXJuICptX2Jh
Y2tGb3J3YXJkQ29udHJvbGxlcjsgfQogCiAgICAgU2Vjb25kcyBkb21UaW1lckFsaWdubWVudElu
dGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9kb21UaW1lckFsaWdubWVudEludGVydmFsOyB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNDIxZDNhYmFlNTIwMTMxYTVjYzkxNGY1ZDBiNzJhZjU4NGI5NjM0ZS4uMDQ3NWQyZDY4
YmZjYWM0ZmUyNDBhMTE1MjhlN2JjNTM2YTFkOWYyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisy
MDIyLTAxLTI2ICBUeWxlciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAg
QVggSVRNOiBEZWZlciB0byB0aGUgdHJlZSB3aGVuIGRldGVybWluaW5nIEFYIG9iamVjdCBsb2Fk
aW5nIHByb2dyZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzU2NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICBBc3NvY2lhdGVkIHRlc3Qgbm93IHVzZXMganMtdGVzdC5qcywgc28gbW9kaWZ5
IGV4cGVjdGF0aW9ucyB0byBpbmNsdWRlCisgICAgICAgIGpzLXRlc3Qgb3V0cHV0IChlLmcuIHRl
c3QgZGVzY3JpcHRpb24oKSkuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQt
YXR0cmlidXRlcy5odG1sOgorICAgICAgICBXYWl0IGFzeW5jaHJvbm91c2x5IGZvciBsb2FkaW5n
IHRvIGNvbXBsZXRlICgiQVhMb2FkZWQ6IDEiKS4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Bh
cmVudC1kZWxldGUuaHRtbDoKKyAgICAgICAgRG9uJ3Qgb3V0cHV0IGFsbCBhdHRyaWJ1dGVzLCBz
aW5jZSBpdCdzIG5vdCBuZWNlc3NhcnkgZm9yIHRoZSBwdXJwb3NlCisgICAgICAgIG9mIHRoZSB0
ZXN0ICh3aGljaCBpcyB0byBlbnN1cmUgY2FsbGluZyBhbGxBdHRyaWJ1dGVzKCkgaW4gdGhpcwor
ICAgICAgICBzY2VuYXJpbyBkb2Vzbid0IGNhdXNlIGEgY3Jhc2gpLiBQcmV2aW91c2x5LCB0aGUg
dGVzdCBvdXRwdXQgY29udGFpbmVkCisgICAgICAgIGxvYWRpbmcgQVggYXR0cmlidXRlcywgc28g
cmF0aGVyIHRoYW4gbWFraW5nIHRoaXMgdGVzdCB3YWl0IGZvcgorICAgICAgICBsb2FkaW5nIHRv
IGNvbXBsZXRlIEkgZGVjaWRlZCB0byByZW1vdmUgdGhlIG91dHB1dCBhbGwgdG9nZXRoZXIuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBlY3Rl
ZC50eHQ6CisKIDIwMjItMDEtMjUgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29t
PgogCiAgICAgICAgIERpc2FibGUgaW5wdXQtc2VjdXJpdHkgQ1NTIHByb3BlcnR5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJp
YnV0ZXMtZXhwZWN0ZWQudHh0CmluZGV4IDkxMjNiMzA4Y2VjYjRmMTdjMTBmOTdkMTFlODgxNmM5
Yzc2MjlkZjIuLjVlOWNkNjkwM2NiYWEzZGJkOTYzZjRlMWE3MmM0NjcyODE4MDkzMDEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50
LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsMTQgQEAKK1RoaXMgdGVzdCBwcm92
aWRlcyBhIGJhc2Ugc25hcHNob3Qgb2YgdGhlIHJvb3Qgd2ViIGFyZWEncyBhdHRyaWJ1dGVzLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogQVhIYXNEb2N1bWVudFJvbGVBbmNlc3Rv
cjogMAogQVhIYXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yOiAwCiBBWFJvbGU6IEFYV2ViQXJlYQog
QVhSb2xlRGVzY3JpcHRpb246IEhUTUwgY29udGVudAotQVhDaGlsZHJlbjogPGFycmF5IG9mIHNp
emUgMD4KLUFYQ2hpbGRyZW5Jbk5hdmlnYXRpb25PcmRlcjogPGFycmF5IG9mIHNpemUgMD4KK0FY
Q2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDI+CitBWENoaWxkcmVuSW5OYXZpZ2F0aW9uT3JkZXI6
IDxhcnJheSBvZiBzaXplIDI+CiBBWEhlbHA6CiBBWFBhcmVudDogPEFYV2ViQXJlYT4KIEFYU2l6
ZTogTlNTaXplOiB7ODAwLCA2MDB9CkBAIC0zNCw0ICszOSw3IEBAIEFYUHJldmVudEtleWJvYXJk
RE9NRXZlbnREaXNwYXRjaDogMAogQVhXZWJTZXNzaW9uSUQ6IDIKIEFYRWxlbWVudEJ1c3k6IDAK
IAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0
ZXMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0
ZXMuaHRtbAppbmRleCA2YjIyOTkxNGZjMjI2ZThmY2MyYjA5ZTc5Y2Y3ODc5OGQ3ODFhYjYyLi5m
NjBkOGYyY2U0MTM4NzE3YjY3NWRhYWFiNzM1OTUwNjFhMjZiMGFjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sCkBA
IC0xLDI0ICsxLDMwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+CiA8aHRtbD4KIDxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJp
bGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKIDxzY3JpcHQ+Ci0g
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHByb3ZpZGVzIGEgYmFzZSBzbmFwc2hvdCBv
ZiB0aGUgcm9vdCB3ZWIgYXJlYSdzIGF0dHJpYnV0ZXMuIik7CiAKLSAgICB2YXIgbG9nID0gZnVu
Y3Rpb24obXNnKQotICAgIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cgKyAiXG4iKSk7Ci0g
ICAgfQorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgb25sb2FkID0gZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKLSAgICAg
ICAgICAgIGxvZyhhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5hbGxBdHRy
aWJ1dGVzKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2coIlRoaXMgdGVzdCByZXF1
aXJlcyBEdW1wUmVuZGVyVHJlZSB0byBydW4uIikKKyAgICAgICAgc2V0VGltZW91dChhc3luYyBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGxldCBhbGxBdHRyaWJ1dGVzOworICAgICAgICAgICAg
YXdhaXQgd2FpdEZvcigoKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKCFhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgIGFsbEF0dHJpYnV0ZXMgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudC5hbGxBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICAgICAgLy8g
V2FpdCBmb3IgdGhlIHBhZ2UgdG8gYmUgZnVsbHkgbG9hZGVkLgorICAgICAgICAgICAgICAgIHJl
dHVybiBhbGxBdHRyaWJ1dGVzLmluY2x1ZGVzKCJBWExvYWRlZDogMSIpOworICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICBkZWJ1Z0VzY2FwZWQoYWxsQXR0cmlidXRlcyk7CisgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSwgMCk7CiAgICAgfQogPC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keT4KLTxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUuaHRtbAppbmRleCA0ZDdj
NWUyODE0MGU0MzdiMDc0OGM0YTcwY2ZiNWJkMTY2ZWM5ZmU3Li5iOWQ1ODA2MTlkOTA2N2UxOTE4
ZjI4ZTIyY2E2YzVhYTk1YWQ0NjNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L3BhcmVudC1kZWxldGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Bh
cmVudC1kZWxldGUuaHRtbApAQCAtMSwyNyArMSwyMiBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRt
bD4KIDxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7Ci0KIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgdmFyIGFjY2Vzc2liaWxpdHlF
bGVtZW50OwotICAgIHsKLSAgICAgICAgdmFyIG91dGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIm91dGVyIik7Ci0gICAgICAgIHZhciBpbm5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJpbm5lciIpOwotICAgICAgICB2YXIgZWRpdGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZWRpdGFibGUiKTsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQiKTsKLSAgICAgICAgZWRpdGFibGUuZm9jdXMoKTsKLSAgICAgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgICAgICAgICAgdmFyIGFjY2Vzc2li
aWxpdHlFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0g
ICAgICAgIH0KLSAgICAgICAgaW5uZXIucmVtb3ZlQ2hpbGQoZWRpdGFibGUpOwotICAgICAgICBv
dXRlci5yZW1vdmVDaGlsZChpbm5lcik7Ci0gICAgfQotICAgIGlmICh3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgcmVzdWx0LmlubmVyVGV4dCA9IGFjY2Vzc2liaWxp
dHlFbGVtZW50LmFsbEF0dHJpYnV0ZXMoKTsKLSAgICB9CisgICAgY29uc3Qgb3V0ZXIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgib3V0ZXIiKTsKKyAgICBjb25zdCBpbm5lciA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJpbm5lciIpOworICAgIGNvbnN0IGVkaXRhYmxlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImVkaXRhYmxlIik7CisgICAgY29uc3QgcmVzdWx0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgIGVkaXRhYmxlLmZvY3VzKCk7CisgICAgbGV0
IGFjY2Vzc2liaWxpdHlFbGVtZW50OworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpCisgICAgICAgIGFjY2Vzc2liaWxpdHlFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgaW5uZXIucmVtb3ZlQ2hpbGQoZWRpdGFibGUpOwor
ICAgIG91dGVyLnJlbW92ZUNoaWxkKGlubmVyKTsKKyAgICAvLyBUaGlzIHNob3VsZCBub3QgY2F1
c2UgYSBjcmFzaC4KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAg
ICAgICBhY2Nlc3NpYmlsaXR5RWxlbWVudC5hbGxBdHRyaWJ1dGVzKCk7CiB9CiA8L3NjcmlwdD4K
IDwvaGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBlY3RlZC50eHQKaW5kZXggOGZjOGEyOWI2
NTdkZjY0ZDlmZmE5ZDZiNzIwZDM4YzVlMDM1MDdkNS4uYjBiOTM0MjI3NDM1NzYwMzY2ZjFhMGIx
NjI5Mjc4NThiYjVkNTUyZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBlY3RlZC50eHQKQEAg
LTEsMzcgKzEsNSBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCiBUaGlzIHRlc3QgcGFzc2VzIGlmIHRoZXJlIGlzIG5vIGNyYXNoLgotQVhIYXNEb2N1
bWVudFJvbGVBbmNlc3RvcjogMAotQVhIYXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yOiAwCi1BWFJv
bGU6IEFYV2ViQXJlYQotQVhSb2xlRGVzY3JpcHRpb246IEhUTUwgY29udGVudAotQVhDaGlsZHJl
bjogPGFycmF5IG9mIHNpemUgMT4KLUFYQ2hpbGRyZW5Jbk5hdmlnYXRpb25PcmRlcjogPGFycmF5
IG9mIHNpemUgMT4KLUFYSGVscDoKLUFYUGFyZW50OiA8QVhXZWJBcmVhPgotQVhTaXplOiBOU1Np
emU6IHs4MDAsIDYwMH0KLUFYVGl0bGU6Ci1BWERlc2NyaXB0aW9uOgotQVhWYWx1ZToKLUFYRm9j
dXNlZDogMAotQVhFbmFibGVkOiAxCi1BWFdpbmRvdzogPEFYV2ViQXJlYT4KLUFYU2VsZWN0ZWRU
ZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IDxBWFdlYkFyZWE+Ci1B
WEVuZFRleHRNYXJrZXI6IDxBWFdlYkFyZWE+Ci1BWFZpc2l0ZWQ6IDAKLUFYTGlua2VkVUlFbGVt
ZW50czogPGFycmF5IG9mIHNpemUgMD4KLUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxldmVs
OiAwCi1BWFRvcExldmVsVUlFbGVtZW50OiA8QVhXZWJBcmVhPgotQVhMYW5ndWFnZToKLUFYRE9N
SWRlbnRpZmllcjoKLUFYRE9NQ2xhc3NMaXN0OiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhMaW5rVUlF
bGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KLUFYTG9hZGVkOiAxCi1BWExheW91dENvdW50OiAy
Ci1BWExvYWRpbmdQcm9ncmVzczogMQotQVhVUkw6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
cGFyZW50LWRlbGV0ZS5odG1sCi1BWENhcmV0QnJvd3NpbmdFbmFibGVkOiAwCi1BWFByZXZlbnRL
ZXlib2FyZERPTUV2ZW50RGlzcGF0Y2g6IDAKLUFYV2ViU2Vzc2lvbklEOiAyCi1BWEVsZW1lbnRC
dXN5OiAwCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450071</attachid>
            <date>2022-01-26 14:35:23 -0800</date>
            <delta_ts>2022-01-26 15:17:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235646-20220126163522.patch</filename>
            <type>text/plain</type>
            <size>31594</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVkNDQ2YjQ0OGI5ZjIz
YmExZmNmMDI2MzVkYTcyYmUwMTVjMTlkZi4uOTZjMGVmNjczMTQzNWZmZmFmZWExMjk5YmVlMmI1
YmIwMTAzNDRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIyLTAxLTI2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSVRNOiBEZWZlciB0
byB0aGUgdHJlZSB3aGVuIGRldGVybWluaW5nIEFYIG9iamVjdCBsb2FkaW5nIHByb2dyZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2NDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHks
IHdlIHNldCBBWFByb3BlcnR5TmFtZTo6SXNMb2FkZWQgYW5kIEFYUHJvcGVydHlOYW1lOjpFc3Rp
bWF0ZWRMb2FkaW5nUHJvZ3Jlc3MKKyAgICAgICAgb25jZSBpbiBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YSBhbmQgbmV2ZXIgdXBkYXRlIGl0LiBUaGlzIG1lYW5zIHRo
YXQKKyAgICAgICAgaWYgYW4gb2JqZWN0IGlzIGNyZWF0ZWQgd2hpbGUgdGhlIHBhZ2UgaXMgYXQg
c29tZSBub24tMTAwJSBsb2FkIHBlcmNlbnRhZ2UsIEFYIGNsaWVudHMKKyAgICAgICAgdGhhdCBy
ZXF1ZXN0IHRoZXNlIGF0dHJpYnV0ZXMgd2lsbCBhbHdheXMgdGhpbmsgdGhlIG9iamVjdCBpc24n
dCBsb2FkZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZXNlIHR3byBwcm9wZXJ0
aWVzIGFuZCBpbnN0ZWFkIGRlZmVycyB0byB0aGUgaXNvbGF0ZWQgdHJlZSBhc3NvY2lhdGVkCisg
ICAgICAgIHdpdGggZWFjaCBvYmplY3Qgd2hlbiBkZXRlcm1pbmluZyB0aGUgbG9hZCBwZXJjZW50
YWdlLiBCb3RoIG9mIHRoZXNlIHByb3BlcnRpZXMgd2VyZSBiYXNlZAorICAgICAgICBvbiB0aGUg
ZW50aXJlIHBhZ2UgLyBkb2N1bWVudCBsb2FkIHByb2dyZXNzIGFueXdheXMsIHNvIGl0IGRvZXNu
J3QgbWFrZSBzZW5zZSB0byBzZXQgdGhlCisgICAgICAgIHNhbWUgdmFsdWUgZm9yIGFsbCBvZiB0
aGVtLgorCisgICAgICAgIFdlIHRyYWNrIGxvYWRpbmcgcHJvZ3Jlc3MgYnkgY2hhbmdpbmcgUHJv
Z3Jlc3NUcmFja2VyIHRvIGFsc28gbm90aWZ5CisgICAgICAgIHRoZSBwYWdlIHdoZW4gcHJvZ3Jl
c3MgY2hhbmdlcywgd2hpY2ggaW4gdHVybiB1cGRhdGVzIHRoZSBhc3NvY2lhdGVkCisgICAgICAg
IEFYT2JqZWN0Q2FjaGUgd2l0aCB0aGUgbmV3IHByb2dyZXNzIHZhbHVlLgorCisgICAgICAgIENv
dmVyZWQgYnkgYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIHdoaWNo
IHZlcmlmaWVzIHRoZSBBWExvYWQgYW5kCisgICAgICAgIEFYTG9hZGluZ1Byb2dyZXNzIGF0dHJp
YnV0ZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6QVhPYmplY3RDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjp1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MpOgorICAgICAgICBB
ZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmxvYWRpbmdGaW5pc2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpsb2FkaW5nUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICBBZGRl
ZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bG9hZGluZ1Byb2dyZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVzdGlt
YXRlZExvYWRpbmdQcm9ncmVzcyBjb25zdCk6CisgICAgICAgIFJlbmFtZSBlc3RpbWF0ZWRMb2Fk
aW5nUHJvZ3Jlc3MgbWV0aG9kcyB0byBsb2FkaW5nUHJvZ3Jlc3MuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZFRyZWU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcyk6CisgICAgICAgIEFwcGx5IG1fcGVu
ZGluZ0VzdGltYXRlZExvYWRpbmdQcm9ncmVzcy4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZFRyZWU6OmxvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIEFkZGVkLgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6XSk6CisgICAgICAgIEhhbmRsZSByZW5hbWUgb2YgZXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzIG1ldGhvZHMgdG8gbG9hZGluZ1Byb2dyZXNzLgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVz
c1RyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjpQcm9ncmVz
c1RyYWNrZXIpOgorICAgICAgICBTdG9yZSBhIHJlZmVyZW5jZSB0byB0aGUgYXNzb2NpYXRlZCBw
YWdlIGluIG5ldyBtX3BhZ2UgbWVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFj
a2VyOjpub3RpZnlQcm9ncmVzc1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NU
cmFja2VyOjpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9n
cmVzc1RyYWNrZXI6OmZpbmFsUHJvZ3Jlc3NDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
cm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKToKKyAgICAgICAgTm90aWZ5IHRoZSBQ
YWdlIHdoZW4gcHJvZ3Jlc3MgY2hhbmdlcyBvciBjb21wbGV0ZXMuCisgICAgICAgICogbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnByb2dyZXNzRXN0
aW1hdGVDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpwcm9ncmVzc0ZpbmlzaGVkIGNvbnN0KToKKyAgICAgICAgQWRkZWQuCisgICAgICAgICog
cGFnZS9QYWdlLmg6CisKIDIwMjItMDEtMjUgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJJRExdIFJlbW92ZSB0aGUgbm93LXVudXNlZCBbQ3VzdG9t
RW5hYmxlZF0gZXh0ZW5kZWQgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCAxMjRjZDllOTE5NWM0MWZlNGRhNDEzMmNjYmY1
MGM1MDA2MDYyNjNhLi40YmUyN2E0YWQ0M2NhYjAxZDE0YjdkODZhYTdkNjkzMzE2MTAzZmI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAg
LTg5LDYgKzg5LDcgQEAKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKICNpbmNsdWRl
ICJNYXRoTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlByb2dyZXNz
VHJhY2tlci5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXR0YWNobWVu
dC5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC0yMjQsNiArMjI1LDEzIEBAIEFYT2Jq
ZWN0Q2FjaGU6OkFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9wZXJm
b3JtQ2FjaGVVcGRhdGVUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1DYWNoZVVw
ZGF0ZVRpbWVyRmlyZWQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIC8v
IElmIGxvYWRpbmcgY29tcGxldGVkIGJlZm9yZSB0aGUgY2FjaGUgd2FzIGNyZWF0ZWQsIGxvYWRp
bmcgcHJvZ3Jlc3Mgd2lsbCBoYXZlIGJlZW4gcmVzZXQgdG8gemVyby4KKyAgICAvLyBDb25zaWRl
ciBsb2FkaW5nIHByb2dyZXNzIHRvIGJlIDEwMCUgaW4gdGhpcyBjYXNlLgorICAgIGRvdWJsZSBs
b2FkaW5nUHJvZ3Jlc3MgPSBkb2N1bWVudC5wYWdlKCkgPyBkb2N1bWVudC5wYWdlKCktPnByb2dy
ZXNzKCkuZXN0aW1hdGVkUHJvZ3Jlc3MoKSA6IDE7CisgICAgaWYgKGxvYWRpbmdQcm9ncmVzcyA8
PSAwKQorICAgICAgICBsb2FkaW5nUHJvZ3Jlc3MgPSAxOworICAgIG1fbG9hZGluZ1Byb2dyZXNz
ID0gbG9hZGluZ1Byb2dyZXNzOwogfQogCiBBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSgp
CkBAIC05NzEsNiArOTc5LDIyIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlQ2FjaGVBZnRl
ck5vZGVJc0F0dGFjaGVkKE5vZGUqIG5vZGUpCiAgICAgZ2V0KG5vZGUpOwogfQogCit2b2lkIEFY
T2JqZWN0Q2FjaGU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhkb3VibGUgbmV3UHJvZ3Jlc3NWYWx1
ZSkKK3sKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UobmV3UHJvZ3Jlc3NWYWx1ZSA+PSAwICYmIG5ld1Byb2dyZXNzVmFsdWUg
PD0gMSwgInVuZXhwZWN0ZWQgbG9hZGluZyBwcm9ncmVzcyB2YWx1ZTogJWYiLCBuZXdQcm9ncmVz
c1ZhbHVlKTsKKyAgICBpZiAobV9wYWdlSUQpIHsKKyAgICAgICAgLy8gU29tZXRpbWVzIHRoZSBp
c29sYXRlZCB0cmVlIGhhc24ndCBiZWVuIGNyZWF0ZWQgYnkgdGhlIHRpbWUgd2UgZ2V0IGxvYWRp
bmcgcHJvZ3Jlc3MgdXBkYXRlcywKKyAgICAgICAgLy8gc28gY2FjaGUgdGhpcyB2YWx1ZSBpbiB0
aGUgQVhPYmplY3RDYWNoZSB0b28gc28gd2UgY2FuIGdpdmUgaXQgdG8gdGhlIHRyZWUgdXBvbiBj
cmVhdGlvbi4KKyAgICAgICAgbV9sb2FkaW5nUHJvZ3Jlc3MgPSBuZXdQcm9ncmVzc1ZhbHVlOwor
ICAgICAgICBpZiAoYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoKm1f
cGFnZUlEKSkKKyAgICAgICAgICAgIHRyZWUtPnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhuZXdQcm9n
cmVzc1ZhbHVlKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShuZXdQcm9ncmVzc1Zh
bHVlKTsKKyNlbmRpZgorfQorCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUNoaWxkcmVuQ2hh
bmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCiB7CiAgICAgLy8gSGFuZGxlIE1lbnVM
aXN0cyBhbmQgTWVudUxpc3RQb3B1cHMgYXMgc3BlY2lhbCBjYXNlcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggMjk4MGExZmI4YWFhOTFiNTdk
NzFjNjJjNmYyY2RkZGMyNDU5NjA5Zi4uODYyYzUyMmI4NGM0NGY5MzQyNGIwYmYzZTliMGVkZTQy
MmU0MTU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmgKQEAgLTE4Nyw2ICsxODcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja2VkU3RhdGVDaGFu
Z2VkKE5vZGUqKTsKICAgICAvLyBDYWxsZWQgd2hlbiBhIG5vZGUgaGFzIGp1c3QgYmVlbiBhdHRh
Y2hlZCwgc28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBzdWJjbGFzcyBvZiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0LgogICAgIHZvaWQgdXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFj
aGVkKE5vZGUqKTsKKyAgICB2b2lkIHVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhkb3VibGUpOworICAg
IHZvaWQgbG9hZGluZ0ZpbmlzaGVkKCkgeyB1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MoMSk7IH0KKyAg
ICBkb3VibGUgbG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkaW5nUHJvZ3Jl
c3M7IH0KIAogICAgIHZvaWQgZGVmZXJGb2N1c2VkVUlFbGVtZW50Q2hhbmdlSWZOZWVkZWQoTm9k
ZSogb2xkRm9jdXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWROb2RlKTsKICAgICB2b2lkIGRlZmVy
TW9kYWxDaGFuZ2UoRWxlbWVudCopOwpAQCAtNTIzLDYgKzUyNiw3IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPHN0ZDo6cGFpcjxOb2RlKiwgTm9kZSo+PiBtX2RlZmVycmVkRm9jdXNlZE5vZGVDaGFu
Z2U7CiAgICAgYm9vbCBtX2lzU3luY2hyb25pemluZ1NlbGVjdGlvbiB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX3BlcmZvcm1pbmdEZWZlcnJlZENhY2hlVXBkYXRlIHsgZmFsc2UgfTsKKyAgICBkb3Vi
bGUgbV9sb2FkaW5nUHJvZ3Jlc3MgeyAwLjI1IH07CiAKICNpZiBVU0UoQVRLKQogICAgIExpc3RI
YXNoU2V0PFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gbV9kZWZlcnJlZEF0dGFjaGVkV3Jh
cHBlck9iamVjdExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDFjMDcwNzI5NWE3NGQ5MDE3YmRkZGVmZTQyZWRjNGM4
OTdiMWNlMWYuLjFhOTYzYTVkNjE2MTA2YTMwNjFlYjY2MGNhNGY1NDU4ZGNlMGE4ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CkBAIC0yOTUsNyArMjk1LDcgQEAgcHVibGljOgogICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRU
YWJJdGVtKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIEFYQ29yZU9iamVjdCog
c2VsZWN0ZWRMaXN0SXRlbSgpIG92ZXJyaWRlOwogICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSBsb2FkaW5nUHJv
Z3Jlc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgaXNBUklBQ29udHJvbChBY2Nlc3NpYmlsaXR5Um9sZSk7CiAgICAgYm9vbCBz
dXBwb3J0c0NoZWNrZWRTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaAppbmRleCBjNjU2ODAzOTBiYzQyMjJjMjA4ZGEwYzlmYTY2NDA5ZTg4NzRjN2FhLi4y
MDRiMmI5MWEyNTJiMDA2MjU2ZjhjNjIxNjcyZGUxZWZjNDM4YzFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaApAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQVhDb3Jl
T2JqZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSA9IDA7CiAgICAgdmlydHVhbCBBWENvcmVPYmplY3Qq
IHNlbGVjdGVkTGlzdEl0ZW0oKSA9IDA7CiAgICAgdmlydHVhbCBpbnQgbGF5b3V0Q291bnQoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGxvYWRpbmdQcm9ncmVzcygpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFN0cmluZyBicmFpbGxlTGFiZWwoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgYnJhaWxsZVJvbGVEZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIFN0cmluZyBlbWJlZGRlZEltYWdlRGVzY3JpcHRpb24oKSBjb25zdCA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAppbmRleCA0OTg4NmU1ZDg4ODBkOGE4ZWQyNzRjMmZiZTEwMzE2OWE5OGY1M2Iy
Li5lZmMxNWM2OTQ1MjhkMmQ5MzM2ZjhjZWFiNzBkZmY5ZDBjMGViMmQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKQEAgLTE1MzYsNyArMTUzNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aXNMb2FkZWQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmVyID8gIW1fcmVuZGVy
ZXItPmRvY3VtZW50KCkucGFyc2VyKCkgOiBmYWxzZTsKIH0KIAotZG91YmxlIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0Citkb3VibGUg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRl
eCA1OTVmMGE2ZDM4NzBhY2M5YjFhYTg3OTI3Y2U0MmYyOGQ3ZTg1Y2FkLi45MGUzOTkxYzI1NTM3
MGY5OTc2MGMwYjViODdiZGZjZmUzYjllNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtODMsNyAr
ODMsNyBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWZhdWx0
T2JqZWN0SW5jbHVzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgaW50IGxheW91dENv
dW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVz
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGRvdWJsZSBsb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBv
dmVycmlkZTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdENoaWxkKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGFzdENoaWxkKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IGVjZjgxOGIxYTZiMTYy
NzI3MDM4MGJjZTg4NmY5YTYwNGNmYTc3YWYuLjgyYzdjMWRjZjdkMmZiMjM4MmZjMDVjNjY4YzI4
Njg4NDhiYTMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0xMTAsNyArMTEw
LDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShBWENv
cmVPYmplY3QmIGNvcmVPYmplY3QsIGJvb2wgaXMKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6SXNMaW5rLCBvYmplY3QuaXNMaW5rKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpJc0xpbmtlZCwgb2JqZWN0LmlzTGlua2VkKCkpOwogICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpJc0xpc3QsIG9iamVjdC5pc0xpc3QoKSk7Ci0gICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OklzTG9hZGVkLCBvYmplY3QuaXNMb2FkZWQoKSk7CiAgICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVkaWFUaW1lbGluZSwgb2JqZWN0LmlzTWVkaWFUaW1l
bGluZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51LCBvYmplY3Qu
aXNNZW51KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVCYXIsIG9i
amVjdC5pc01lbnVCYXIoKSk7CkBAIC0xNzEsNyArMTcwLDYgQEAgdm9pZCBBWElzb2xhdGVkT2Jq
ZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIGNvcmVPYmplY3QsIGJv
b2wgaXMKICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRSYWRp
b0J1dHRvbiwgb2JqZWN0LnNlbGVjdGVkUmFkaW9CdXR0b24oKSk7CiAgICAgc2V0T2JqZWN0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSwgb2JqZWN0LnNlbGVjdGVkVGFi
SXRlbSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGF5b3V0Q291bnQsIG9i
amVjdC5sYXlvdXRDb3VudCgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RXN0
aW1hdGVkTG9hZGluZ1Byb2dyZXNzLCBvYmplY3QuZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkp
OwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zLCBvYmpl
Y3Quc3VwcG9ydHNBUklBT3ducygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
SGFzUG9wdXAsIG9iamVjdC5oYXNQb3B1cCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6UG9wdXBWYWx1ZSwgb2JqZWN0LnBvcHVwVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmgKaW5kZXggYzhlZmIyZjhjMTRhZDQ1ZDFkYmIzODM5ZWI5NWMw
NDZmMGVmN2Q5Ni4uOTgwMDY5OTQ5ZDI1Mzg5OTVlY2Q2YjYwM2ExZjA0MmY5MDAxMjEwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAg
QVhDb3JlT2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2Jq
ZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkUmFkaW9CdXR0b24pOyB9
CiAgICAgQVhDb3JlT2JqZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSBvdmVycmlkZSB7IHJldHVybiBv
YmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRUYWJJdGVtKTsgfQog
ICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpMYXlvdXRDb3VudCk7IH0KLSAgICBkb3VibGUgZXN0aW1h
dGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZG91YmxlQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyk7IH0KKyAg
ICBkb3VibGUgbG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgp
LT5sb2FkaW5nUHJvZ3Jlc3MoKTsgfQogICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3Vw
cG9ydHNBUklBT3ducyk7IH0KICAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENv
bnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6SXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKTsgfQogICAg
IHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBj
aGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6QVJJQUNvbnRyb2xzRWxlbWVudHMsIGNoaWxkcmVuKTsgfQpAQCAtNTEz
LDcgKzUxMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIGlzSG92ZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wg
aXNJbmRldGVybWluYXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0xvYWRlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNMb2FkZWQpOyB9CisgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGxvYWRpbmdQcm9ncmVzcygpID49IDE7IH0KICAgICBib29sIGlzT25TY3JlZW4oKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9v
bCBpc1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRl
eCA2NTQ5ZGJiOWJlNWZhODUwMTI5MmY2NTY4MmM3MDBlN2RhNzJhMGRiLi5kMjQ5MTM0ZjQwOGM4
OWI4YjhiOGQyOWY5MmU2ZTAyYWU5NjczMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBA
IC0xMTgsNiArMTE4LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3Jl
YXRlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCiAgICAgQVNTRVJUKCF0cmVlUGFnZUNh
Y2hlKCkuY29udGFpbnMoKnBhZ2VJRCkpOwogICAgIHRyZWVQYWdlQ2FjaGUoKS5zZXQoKnBhZ2VJ
RCwgdHJlZS5jb3B5UmVmKCkpOwogICAgIHRyZWVJRENhY2hlKCkuc2V0KHRyZWUtPnRyZWVJRCgp
LCB0cmVlLmNvcHlSZWYoKSk7CisgICAgdHJlZS0+dXBkYXRlTG9hZGluZ1Byb2dyZXNzKGF4T2Jq
ZWN0Q2FjaGUtPmxvYWRpbmdQcm9ncmVzcygpKTsKIAogICAgIHJldHVybiB0cmVlOwogfQpAQCAt
NDM5LDYgKzQ0MCwxNiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlEKEFY
SUQgYXhJRCkKICAgICBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5nZXMuYXBwZW5kKHsgYXhJRCwgcHJv
cGVydHlNYXAgfSk7CiB9CiAKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUxvYWRpbmdQcm9n
cmVzcyhkb3VibGUgbmV3UHJvZ3Jlc3NWYWx1ZSkKK3sKKyAgICBBWFRSQUNFKCJBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTG9hZGluZ1Byb2dyZXNzIik7CisgICAgQVhMT0cobWFrZVN0cmluZygiUXVl
dWVpbmcgbG9hZGluZyBwcm9ncmVzcyB1cGRhdGUgdG8gIiwgbmV3UHJvZ3Jlc3NWYWx1ZSwgIiBm
b3IgdHJlZUlEICIsIHRyZWVJRCgpKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBtX3BlbmRpbmdMb2Fk
aW5nUHJvZ3Jlc3MgPSBuZXdQcm9ncmVzc1ZhbHVlOworfQorCiB2b2lkIEFYSXNvbGF0ZWRUcmVl
OjpyZW1vdmVOb2RlKEFYSUQgYXhJRCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6
cmVtb3ZlTm9kZSIpOwpAQCAtNDg0LDYgKzQ5NSw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFw
cGx5UGVuZGluZ0NoYW5nZXMoKQogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9j
ayB9OwogCisgICAgbV9sb2FkaW5nUHJvZ3Jlc3MgPSBtX3BlbmRpbmdMb2FkaW5nUHJvZ3Jlc3M7
CisKICAgICBpZiAobV9wZW5kaW5nRm9jdXNlZE5vZGVJRCAhPSBtX2ZvY3VzZWROb2RlSUQpIHsK
ICAgICAgICAgQVhMT0cobWFrZVN0cmluZygiZm9jdXNlZE5vZGVJRCAiLCBtX2ZvY3VzZWROb2Rl
SUQubG9nZ2luZ1N0cmluZygpLCAiIHBlbmRpbmdGb2N1c2VkTm9kZUlEICIsIG1fcGVuZGluZ0Zv
Y3VzZWROb2RlSUQubG9nZ2luZ1N0cmluZygpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4
IDIwYTRkMWM4NzM2YzA1MDQ4ZWFjMzM2YTNmMjNmODE3MzhjN2ViYjQuLmYyOGM0NmE0NTM0NWJl
NTBmNmEzOTYxNzE3MDNkOWQ5NTNhNTRkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMTEx
LDcgKzExMSw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAg
RWRpdGFibGVBbmNlc3RvciwKICAgICBFbGVtZW50UmVjdCwKICAgICBFbWJlZGRlZEltYWdlRGVz
Y3JpcHRpb24sCi0gICAgRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzLAogICAgIEV4cGFuZGVkVGV4
dFZhbHVlLAogICAgIEZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpdGxlLAogICAgIEZv
Y3VzYWJsZUFuY2VzdG9yLApAQCAtMTY4LDcgKzE2Nyw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0
eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgSXNMaW5rZWQsCiAgICAgSXNMaXN0LAogICAgIElzTGlz
dEJveCwKLSAgICBJc0xvYWRlZCwKICAgICBJc01hdGhFbGVtZW50LAogICAgIElzTWF0aEZyYWN0
aW9uLAogICAgIElzTWF0aEZlbmNlZCwKQEAgLTM2MSw2ICszNTksOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1cGRhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYpOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRy
ZW4oQVhDb3JlT2JqZWN0Jik7CiAKKyAgICBkb3VibGUgbG9hZGluZ1Byb2dyZXNzKCkgeyByZXR1
cm4gbV9sb2FkaW5nUHJvZ3Jlc3M7IH0KKyAgICB2b2lkIHVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhk
b3VibGUgbmV3UHJvZ3Jlc3MpOworCiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBsZWF2
aW5nIGFsbCBkZXNjZW5kYW50cyBhbG9uZS4KICAgICB2b2lkIHJlbW92ZU5vZGUoQVhJRCk7CiAg
ICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cy4KQEAg
LTQxMSw2ICs0MTIsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgVmVj
dG9yPEFYSUQ+Pj4gbV9wZW5kaW5nQ2hpbGRyZW5VcGRhdGVzIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9jaGFuZ2VMb2dMb2NrKTsKICAgICBBWElEIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQgV1RGX0dV
QVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOwogICAgIEFYSUQgbV9mb2N1c2VkTm9kZUlE
OworICAgIGRvdWJsZSBtX3BlbmRpbmdMb2FkaW5nUHJvZ3Jlc3MgV1RGX0dVQVJERURfQllfTE9D
SyhtX2NoYW5nZUxvZ0xvY2spIHsgMC4yNSB9OworICAgIGRvdWJsZSBtX2xvYWRpbmdQcm9ncmVz
cyB7IDAuMjUgfTsKICAgICBMb2NrIG1fY2hhbmdlTG9nTG9jazsKIAogICAgIGJvb2wgbV9jcmVh
dGluZ1N1YnRyZWUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQppbmRleCAxMWM0YjlkY2M4ODdmZjRmYWQ1NWE1MjRkMTBjNTg2ZWE2YjcyNjE0Li5lYTA2
MTZlOTA3Y2Q2MWNiZjY2Yzk5NzYxNTczYThjODJiZTA1YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMjAzMyw3ICsyMDMzLDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6QCJBWExheW91dENvdW50Il0pCiAgICAgICAgICAgICByZXR1cm4gQChiYWNr
aW5nT2JqZWN0LT5sYXlvdXRDb3VudCgpKTsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlMb2FkaW5nUHJvZ3Jlc3NBdHRyaWJ1dGVdKQot
ICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+ZXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzKCkpOworICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+bG9hZGluZ1Byb2dy
ZXNzKCkpOwogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eVByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdKQogICAg
ICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpiYWNraW5nT2JqZWN0LT5w
cmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCldOwogICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVk
QXR0cmlidXRlXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1Ry
YWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5k
ZXggZmE4NGMzNjZjNjMxNzVmOWZiNDczMGViODVjNDY3N2ZjM2Q2MzY4Zi4uZmY1NjBiZjg2ZGY3
Y2U0YmIxZmZmOGIzMDQ5NTJjY2U1MjI3YjY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
b2dyZXNzVHJhY2tlci5jcHAKQEAgLTc1LDggKzc1LDkgQEAgcHVibGljOgogICAgIGxvbmcgbG9u
ZyBlc3RpbWF0ZWRMZW5ndGg7CiB9OwogCi1Qcm9ncmVzc1RyYWNrZXI6OlByb2dyZXNzVHJhY2tl
cihVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYmIGNsaWVudCkKLSAgICA6IG1fY2xp
ZW50KFdURk1vdmUoY2xpZW50KSkKK1Byb2dyZXNzVHJhY2tlcjo6UHJvZ3Jlc3NUcmFja2VyKFBh
Z2UmIHBhZ2UsIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgY2xpZW50KQorICAg
IDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX2NsaWVudChXVEZNb3ZlKGNsaWVudCkpCiAgICAgLCBt
X3Byb2dyZXNzSGVhcnRiZWF0VGltZXIoKnRoaXMsICZQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNz
SGVhcnRiZWF0VGltZXJGaXJlZCkKIHsKIH0KQEAgLTEyOCw3ICsxMjksNyBAQCB2b2lkIFByb2dy
ZXNzVHJhY2tlcjo6cHJvZ3Jlc3NTdGFydGVkKEZyYW1lJiBmcmFtZSkKICAgICAgICAgc3RhdGlj
IGNvbnN0IGF1dG8gc3ViZnJhbWVQYXJ0T2ZNYWluTG9hZFRocmVzaG9sZCA9IDFfczsKICAgICAg
ICAgbV9pc01haW5Mb2FkID0gaXNNYWluRnJhbWUgfHwgZWxhcHNlZFRpbWVTaW5jZU1haW5Mb2Fk
Q29tcGxldGUgPCBzdWJmcmFtZVBhcnRPZk1haW5Mb2FkVGhyZXNob2xkOwogCi0gICAgICAgIG1f
Y2xpZW50LT5wcm9ncmVzc1N0YXJ0ZWQoKm1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lKTsKKyAg
ICAgICAgbm90aWZ5UHJvZ3Jlc3NTdGFydGVkKCptX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSk7
CiAgICAgfQogICAgIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzKys7CiAKQEAgLTEzOCw2ICsx
MzksMTggQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzU3RhcnRlZChGcmFtZSYgZnJh
bWUpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVN0YXJ0ZWRMb2FkaW5nKGZy
YW1lKTsKIH0KIAordm9pZCBQcm9ncmVzc1RyYWNrZXI6Om5vdGlmeVByb2dyZXNzU3RhcnRlZChG
cmFtZSYgZnJhbWUpCit7CisgICAgbV9jbGllbnQtPnByb2dyZXNzU3RhcnRlZChmcmFtZSk7Cisg
ICAgbV9wYWdlLnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKGZyYW1lKTsKK30KKwordm9pZCBQcm9n
cmVzc1RyYWNrZXI6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKEZyYW1lJiBmcmFtZSkKK3sKKyAg
ICBtX2NsaWVudC0+cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoZnJhbWUpOworICAgIG1fcGFnZS5w
cm9ncmVzc0VzdGltYXRlQ2hhbmdlZChmcmFtZSk7Cit9CisKIHZvaWQgUHJvZ3Jlc3NUcmFja2Vy
Ojpwcm9ncmVzc0NvbXBsZXRlZChGcmFtZSYgZnJhbWUpCiB7CiAgICAgTE9HKFByb2dyZXNzLCAi
UHJvZ3Jlc3MgY29tcGxldGVkICglcCkgLSBmcmFtZSAlcChcIiVzXCIpLCB2YWx1ZSAlZiwgdHJh
Y2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwIiwgdGhpcywgJmZyYW1lLCBmcmFt
ZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fcHJvZ3Jlc3NW
YWx1ZSwgbV9udW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMsIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0Zy
YW1lLmdldCgpKTsKQEAgLTE2Niw3ICsxNzksNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6Zmlu
YWxQcm9ncmVzc0NvbXBsZXRlKCkKICAgICAvLyB3aXRoIGZpbmFsIHByb2dyZXNzIHZhbHVlLgog
ICAgIGlmICghbV9maW5hbFByb2dyZXNzQ2hhbmdlZFNlbnQpIHsKICAgICAgICAgbV9wcm9ncmVz
c1ZhbHVlID0gMTsKLSAgICAgICAgbV9jbGllbnQtPnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKCpm
cmFtZSk7CisgICAgICAgIHByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKCpmcmFtZSk7CiAgICAgfQog
CiAgICAgcmVzZXQoKTsKQEAgLTE3Niw2ICsxODksNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6
ZmluYWxQcm9ncmVzc0NvbXBsZXRlKCkKIAogICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5z
ZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KHRydWUpOwogICAgIG1fY2xpZW50LT5wcm9ncmVzc0Zp
bmlzaGVkKCpmcmFtZSk7CisgICAgbV9wYWdlLnByb2dyZXNzRmluaXNoZWQoKmZyYW1lKTsKICAg
ICBmcmFtZS0+bG9hZGVyKCkubG9hZFByb2dyZXNzaW5nU3RhdHVzQ2hhbmdlZCgpOwogCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVN0b3BwZWRMb2FkaW5nKCpmcmFtZSk7CkBA
IC0yNTQsNyArMjY4LDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNz
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnMKICAgICAgICAgICAgIGlm
IChtX3Byb2dyZXNzVmFsdWUgPT0gMSkKICAgICAgICAgICAgICAgICBtX2ZpbmFsUHJvZ3Jlc3ND
aGFuZ2VkU2VudCA9IHRydWU7CiAKLSAgICAgICAgICAgIG1fY2xpZW50LT5wcm9ncmVzc0VzdGlt
YXRlQ2hhbmdlZCgqZnJhbWUpOworICAgICAgICAgICAgcHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQo
KmZyYW1lKTsKIAogICAgICAgICAgICAgbV9sYXN0Tm90aWZpZWRQcm9ncmVzc1ZhbHVlID0gbV9w
cm9ncmVzc1ZhbHVlOwogICAgICAgICAgICAgbV9sYXN0Tm90aWZpZWRQcm9ncmVzc1RpbWUgPSBu
b3c7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgKaW5kZXggYzBkMjFlNmU2
MzdlODMxNTE3NTY1OWQ3NGEyYjUzZWRmNzgxYTk3ZC4uMDYwZjg0M2ZkMDMxYjcxMWQ3YzA4MmE5
ZGRlYzI5ODI5NDM1ZGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dy
ZXNzVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIu
aApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBQcm9ncmVzc1RyYWNrZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFByb2dyZXNzVHJhY2tlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUHJvZ3Jlc3NUcmFja2VyKFVuaXF1ZVJlZjxQcm9n
cmVzc1RyYWNrZXJDbGllbnQ+JiYpOworICAgIGV4cGxpY2l0IFByb2dyZXNzVHJhY2tlcihQYWdl
JiwgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJik7CiAgICAgflByb2dyZXNzVHJh
Y2tlcigpOwogCiAgICAgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBt
X2NsaWVudC5nZXQoKTsgfQpAQCAtNjUsMTAgKzY1LDEzIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBub3RpZnlQcm9ncmVzc1N0YXJ0ZWQoRnJhbWUm
KTsKKyAgICB2b2lkIHByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKEZyYW1lJik7CiAgICAgdm9pZCBm
aW5hbFByb2dyZXNzQ29tcGxldGUoKTsKIAogICAgIHZvaWQgcHJvZ3Jlc3NIZWFydGJlYXRUaW1l
ckZpcmVkKCk7CiAKKyAgICBQYWdlJiBtX3BhZ2U7CiAgICAgVW5pcXVlUmVmPFByb2dyZXNzVHJh
Y2tlckNsaWVudD4gbV9jbGllbnQ7CiAgICAgUmVmUHRyPEZyYW1lPiBtX29yaWdpbmF0aW5nUHJv
Z3Jlc3NGcmFtZTsKICAgICBIYXNoTWFwPFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPFByb2dyZXNzSXRlbT4+IG1fcHJvZ3Jlc3NJdGVtczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IGM4ODFiMjZiYTI4ZGQ1ODdlMTdmOGViMzg5ZDQyNTBiNDA4OTFmZjcuLjU4MGRhMTE3
MjNkY2Y2NmYzMGNmZjdhM2NiNTg4NTNiN2JlZmU1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgiCiAjaW5j
bHVkZSAiRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmgiCiAjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFuYWdlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50SW5saW5lcy5oIgogI2luY2x1ZGUg
IkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1lbGluZS5oIgpAQCAtMjc0LDcgKzI3NSw3IEBAIFBhZ2U6
OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fcG9p
bnRlckxvY2tDb250cm9sbGVyKG1ha2VVbmlxdWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhp
cykpCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKLSAg
ICAsIG1fcHJvZ3Jlc3MobWFrZVVuaXF1ZTxQcm9ncmVzc1RyYWNrZXI+KFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkpCisgICAgLCBtX3Byb2dyZXNzKG1h
a2VVbmlxdWU8UHJvZ3Jlc3NUcmFja2VyPigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlv
bi5wcm9ncmVzc1RyYWNrZXJDbGllbnQpKSkKICAgICAsIG1fYmFja0ZvcndhcmRDb250cm9sbGVy
KG1ha2VVbmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVyPigqdGhpcywgV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQogICAgICwgbV9tYWluRnJhbWUoRnJhbWU6
OmNyZWF0ZSh0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNs
aWVudEZvck1haW5GcmFtZSkpKQogICAgICwgbV9lZGl0b3JDbGllbnQoV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbi5lZGl0b3JDbGllbnQpKQpAQCAtNTgzLDYgKzU4NCwyMiBAQCB2b2lkIFBhZ2U6
OnNldHRpbmdzRGlkQ2hhbmdlKCkKICNlbmRpZgogfQogCit2b2lkIFBhZ2U6OnByb2dyZXNzRXN0
aW1hdGVDaGFuZ2VkKEZyYW1lJiBmcmFtZVdpdGhQcm9ncmVzc1VwZGF0ZSkgY29uc3QKK3sKKyAg
ICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZVdpdGhQcm9ncmVzc1VwZGF0ZS5kb2N1bWVudCgp
KSB7CisgICAgICAgIGlmIChhdXRvKiBheE9iamVjdENhY2hlID0gZG9jdW1lbnQtPmV4aXN0aW5n
QVhPYmplY3RDYWNoZSgpKQorICAgICAgICAgICAgYXhPYmplY3RDYWNoZS0+dXBkYXRlTG9hZGlu
Z1Byb2dyZXNzKHByb2dyZXNzKCkuZXN0aW1hdGVkUHJvZ3Jlc3MoKSk7CisgICAgfQorfQorCit2
b2lkIFBhZ2U6OnByb2dyZXNzRmluaXNoZWQoRnJhbWUmIGZyYW1lV2l0aENvbXBsZXRlZFByb2dy
ZXNzKSBjb25zdAoreworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lV2l0aENvbXBsZXRl
ZFByb2dyZXNzLmRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGF4T2JqZWN0Q2FjaGUg
PSBkb2N1bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCisgICAgICAgICAgICBheE9iamVj
dENhY2hlLT5sb2FkaW5nRmluaXNoZWQoKTsKKyAgICB9Cit9CisKIGJvb2wgUGFnZTo6b3BlbmVk
QnlET00oKSBjb25zdAogewogICAgIHJldHVybiBtX29wZW5lZEJ5RE9NOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApp
bmRleCBiZTdmODEzOTA0ODJhYjkxODViMjAxNjg5Y2QyNDkxNjVlNTUxZmRmLi45ODIwOWMxZTAw
ZGFjZDI4ODExZTU4ODFlYTM2MThmMDFhOTc4MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzYxLDYg
KzM2MSw4IEBAIHB1YmxpYzoKIAogICAgIFNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0
dXJuICptX3NldHRpbmdzOyB9CiAgICAgUHJvZ3Jlc3NUcmFja2VyJiBwcm9ncmVzcygpIGNvbnN0
IHsgcmV0dXJuICptX3Byb2dyZXNzOyB9CisgICAgdm9pZCBwcm9ncmVzc0VzdGltYXRlQ2hhbmdl
ZChGcmFtZSYpIGNvbnN0OworICAgIHZvaWQgcHJvZ3Jlc3NGaW5pc2hlZChGcmFtZSYpIGNvbnN0
OwogICAgIEJhY2tGb3J3YXJkQ29udHJvbGxlciYgYmFja0ZvcndhcmQoKSBjb25zdCB7IHJldHVy
biAqbV9iYWNrRm9yd2FyZENvbnRyb2xsZXI7IH0KIAogICAgIFNlY29uZHMgZG9tVGltZXJBbGln
bm1lbnRJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZh
bDsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDQyMWQzYWJhZTUyMDEzMWE1Y2M5MTRmNWQwYjcyYWY1ODRiOTYzNGUuLjA0
NzVkMmQ2OGJmY2FjNGZlMjQwYTExNTI4ZTdiYzUzNmExZDlmMjggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAyMi0wMS0yNiAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBwbGUuY29tPgorCisg
ICAgICAgIEFYIElUTTogRGVmZXIgdG8gdGhlIHRyZWUgd2hlbiBkZXRlcm1pbmluZyBBWCBvYmpl
Y3QgbG9hZGluZyBwcm9ncmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM1NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgQXNzb2NpYXRlZCB0ZXN0IG5vdyB1c2VzIGpzLXRlc3QuanMsIHNv
IG1vZGlmeSBleHBlY3RhdGlvbnMgdG8gaW5jbHVkZQorICAgICAgICBqcy10ZXN0IG91dHB1dCAo
ZS5nLiB0ZXN0IGRlc2NyaXB0aW9uKCkpLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL2Rv
Y3VtZW50LWF0dHJpYnV0ZXMuaHRtbDoKKyAgICAgICAgV2FpdCBhc3luY2hyb25vdXNseSBmb3Ig
bG9hZGluZyB0byBjb21wbGV0ZSAoIkFYTG9hZGVkOiAxIikuCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9wYXJlbnQtZGVsZXRlLmh0bWw6CisgICAgICAgIERvbid0IG91dHB1dCBhbGwgYXR0cmli
dXRlcywgc2luY2UgaXQncyBub3QgbmVjZXNzYXJ5IGZvciB0aGUgcHVycG9zZQorICAgICAgICBv
ZiB0aGUgdGVzdCAod2hpY2ggaXMgdG8gZW5zdXJlIGNhbGxpbmcgYWxsQXR0cmlidXRlcygpIGlu
IHRoaXMKKyAgICAgICAgc2NlbmFyaW8gZG9lc24ndCBjYXVzZSBhIGNyYXNoKS4gUHJldmlvdXNs
eSwgdGhlIHRlc3Qgb3V0cHV0IGNvbnRhaW5lZAorICAgICAgICBsb2FkaW5nIEFYIGF0dHJpYnV0
ZXMsIHNvIHJhdGhlciB0aGFuIG1ha2luZyB0aGlzIHRlc3Qgd2FpdCBmb3IKKyAgICAgICAgbG9h
ZGluZyB0byBjb21wbGV0ZSBJIGRlY2lkZWQgdG8gcmVtb3ZlIHRoZSBvdXRwdXQgYWxsIHRvZ2V0
aGVyLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUt
ZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTI1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFw
cGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIGlucHV0LXNlY3VyaXR5IENTUyBwcm9wZXJ0eQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmli
dXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVu
dC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRleCA5MTIzYjMwOGNlY2I0ZjE3YzEwZjk3ZDEx
ZTg4MTZjOWM3NjI5ZGYyLi41ZTljZDY5MDNjYmFhM2RiZDk2M2Y0ZTFhNzJjNDY3MjgxODA5MzAx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRy
aWJ1dGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9k
b2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDE0IEBACitUaGlzIHRl
c3QgcHJvdmlkZXMgYSBiYXNlIHNuYXBzaG90IG9mIHRoZSByb290IHdlYiBhcmVhJ3MgYXR0cmli
dXRlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKIEFYSGFzRG9jdW1lbnRSb2xl
QW5jZXN0b3I6IDAKIEFYSGFzV2ViQXBwbGljYXRpb25BbmNlc3RvcjogMAogQVhSb2xlOiBBWFdl
YkFyZWEKIEFYUm9sZURlc2NyaXB0aW9uOiBIVE1MIGNvbnRlbnQKLUFYQ2hpbGRyZW46IDxhcnJh
eSBvZiBzaXplIDA+Ci1BWENoaWxkcmVuSW5OYXZpZ2F0aW9uT3JkZXI6IDxhcnJheSBvZiBzaXpl
IDA+CitBWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAyPgorQVhDaGlsZHJlbkluTmF2aWdhdGlv
bk9yZGVyOiA8YXJyYXkgb2Ygc2l6ZSAyPgogQVhIZWxwOgogQVhQYXJlbnQ6IDxBWFdlYkFyZWE+
CiBBWFNpemU6IE5TU2l6ZTogezgwMCwgNjAwfQpAQCAtMzQsNCArMzksNyBAQCBBWFByZXZlbnRL
ZXlib2FyZERPTUV2ZW50RGlzcGF0Y2g6IDAKIEFYV2ViU2Vzc2lvbklEOiAyCiBBWEVsZW1lbnRC
dXN5OiAwCiAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1h
dHRyaWJ1dGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1h
dHRyaWJ1dGVzLmh0bWwKaW5kZXggNmIyMjk5MTRmYzIyNmU4ZmNjMmIwOWU3OWNmNzg3OThkNzgx
YWI2Mi4uZjYwZDhmMmNlNDEzODcxN2I2NzVkYWFhYjczNTk1MDYxYTI2YjBhYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMu
aHRtbApAQCAtMSwyNCArMSwzMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2Fj
Y2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCiA8c2Ny
aXB0PgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBwcm92aWRlcyBhIGJhc2Ugc25h
cHNob3Qgb2YgdGhlIHJvb3Qgd2ViIGFyZWEncyBhdHRyaWJ1dGVzLiIpOwogCi0gICAgdmFyIGxv
ZyA9IGZ1bmN0aW9uKG1zZykKLSAgICB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnICsgIlxu
IikpOwotICAgIH0KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotICAgIG9ubG9hZCA9IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
Ci0gICAgICAgICAgICBsb2coYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
YWxsQXR0cmlidXRlcygpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9nKCJUaGlzIHRl
c3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUgdG8gcnVuLiIpCisgICAgICAgIHNldFRpbWVvdXQo
YXN5bmMgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBsZXQgYWxsQXR0cmlidXRlczsKKyAgICAg
ICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4geworICAgICAgICAgICAgICAgIGlmICghYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBhbGxBdHRyaWJ1dGVzID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuYWxsQXR0cmlidXRlcygpOworICAgICAgICAgICAg
ICAgIC8vIFdhaXQgZm9yIHRoZSBwYWdlIHRvIGJlIGZ1bGx5IGxvYWRlZC4KKyAgICAgICAgICAg
ICAgICByZXR1cm4gYWxsQXR0cmlidXRlcy5pbmNsdWRlcygiQVhMb2FkZWQ6IDEiKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgZGVidWdFc2NhcGVkKGFsbEF0dHJpYnV0ZXMpOworICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0sIDApOwogICAgIH0KIDwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwKaW5k
ZXggNGQ3YzVlMjgxNDBlNDM3YjA3NDhjNGE3MGNmYjViZDE2NmVjOWZlNy4uYjlkNTgwNjE5ZDkw
NjdlMTkxOGYyOGUyMmNhNmM1YWE5NWFkNDYzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwKQEAgLTEsMjcgKzEsMjIgQEAKIDwhRE9DVFlQRSBodG1s
PgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwotCiBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgIHZhciBhY2Nlc3Np
YmlsaXR5RWxlbWVudDsKLSAgICB7Ci0gICAgICAgIHZhciBvdXRlciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJvdXRlciIpOwotICAgICAgICB2YXIgaW5uZXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiaW5uZXIiKTsKLSAgICAgICAgdmFyIGVkaXRhYmxlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImVkaXRhYmxlIik7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0Iik7Ci0gICAgICAgIGVkaXRhYmxlLmZvY3VzKCk7Ci0gICAgICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIHZhciBh
Y2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50OwotICAgICAgICB9Ci0gICAgICAgIGlubmVyLnJlbW92ZUNoaWxkKGVkaXRhYmxlKTsKLSAg
ICAgICAgb3V0ZXIucmVtb3ZlQ2hpbGQoaW5uZXIpOwotICAgIH0KLSAgICBpZiAod2luZG93LmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgIHJlc3VsdC5pbm5lclRleHQgPSBhY2Nl
c3NpYmlsaXR5RWxlbWVudC5hbGxBdHRyaWJ1dGVzKCk7Ci0gICAgfQorICAgIGNvbnN0IG91dGVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dGVyIik7CisgICAgY29uc3QgaW5uZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5uZXIiKTsKKyAgICBjb25zdCBlZGl0YWJsZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0YWJsZSIpOworICAgIGNvbnN0IHJlc3VsdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICBlZGl0YWJsZS5mb2N1cygpOwor
ICAgIGxldCBhY2Nlc3NpYmlsaXR5RWxlbWVudDsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKQorICAgICAgICBhY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIGlubmVyLnJlbW92ZUNoaWxkKGVkaXRh
YmxlKTsKKyAgICBvdXRlci5yZW1vdmVDaGlsZChpbm5lcik7CisgICAgLy8gVGhpcyBzaG91bGQg
bm90IGNhdXNlIGEgY3Jhc2guCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikKKyAgICAgICAgYWNjZXNzaWJpbGl0eUVsZW1lbnQuYWxsQXR0cmlidXRlcygpOwogfQogPC9z
Y3JpcHQ+CiA8L2hlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0CmluZGV4IDhm
YzhhMjliNjU3ZGY2NGQ5ZmZhOWQ2YjcyMGQzOGM1ZTAzNTA3ZDUuLmIwYjkzNDIyNzQzNTc2MDM2
NmYxYTBiMTYyOTI3ODU4YmI1ZDU1MmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQu
dHh0CkBAIC0xLDM3ICsxLDUgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQogVGhpcyB0ZXN0IHBhc3NlcyBpZiB0aGVyZSBpcyBubyBjcmFzaC4KLUFY
SGFzRG9jdW1lbnRSb2xlQW5jZXN0b3I6IDAKLUFYSGFzV2ViQXBwbGljYXRpb25BbmNlc3Rvcjog
MAotQVhSb2xlOiBBWFdlYkFyZWEKLUFYUm9sZURlc2NyaXB0aW9uOiBIVE1MIGNvbnRlbnQKLUFY
Q2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDE+Ci1BWENoaWxkcmVuSW5OYXZpZ2F0aW9uT3JkZXI6
IDxhcnJheSBvZiBzaXplIDE+Ci1BWEhlbHA6Ci1BWFBhcmVudDogPEFYV2ViQXJlYT4KLUFYU2l6
ZTogTlNTaXplOiB7ODAwLCA2MDB9Ci1BWFRpdGxlOgotQVhEZXNjcmlwdGlvbjoKLUFYVmFsdWU6
Ci1BWEZvY3VzZWQ6IDAKLUFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWFdlYkFyZWE+Ci1BWFNl
bGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiA8QVhXZWJB
cmVhPgotQVhFbmRUZXh0TWFya2VyOiA8QVhXZWJBcmVhPgotQVhWaXNpdGVkOiAwCi1BWExpbmtl
ZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+Ci1BWFNlbGVjdGVkOiAwCi1BWEJsb2NrUXVv
dGVMZXZlbDogMAotQVhUb3BMZXZlbFVJRWxlbWVudDogPEFYV2ViQXJlYT4KLUFYTGFuZ3VhZ2U6
Ci1BWERPTUlkZW50aWZpZXI6Ci1BWERPTUNsYXNzTGlzdDogPGFycmF5IG9mIHNpemUgMD4KLUFY
TGlua1VJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+Ci1BWExvYWRlZDogMQotQVhMYXlvdXRD
b3VudDogMgotQVhMb2FkaW5nUHJvZ3Jlc3M6IDEKLUFYVVJMOiBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L3BhcmVudC1kZWxldGUuaHRtbAotQVhDYXJldEJyb3dzaW5nRW5hYmxlZDogMAotQVhQ
cmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoOiAwCi1BWFdlYlNlc3Npb25JRDogMgotQVhF
bGVtZW50QnVzeTogMAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450076</attachid>
            <date>2022-01-26 15:17:13 -0800</date>
            <delta_ts>2022-01-26 17:00:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235646-20220126171712.patch</filename>
            <type>text/plain</type>
            <size>31337</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVkNDQ2YjQ0OGI5ZjIz
YmExZmNmMDI2MzVkYTcyYmUwMTVjMTlkZi4uNTFkZDg1YzNkMWNiZjQ0ZWY0NmNjYzIwZjEyMTcw
ZTM1NzFmZmQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIyLTAxLTI2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSVRNOiBEZWZlciB0
byB0aGUgdHJlZSB3aGVuIGRldGVybWluaW5nIEFYIG9iamVjdCBsb2FkaW5nIHByb2dyZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2NDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHks
IHdlIHNldCBBWFByb3BlcnR5TmFtZTo6SXNMb2FkZWQgYW5kIEFYUHJvcGVydHlOYW1lOjpFc3Rp
bWF0ZWRMb2FkaW5nUHJvZ3Jlc3MKKyAgICAgICAgb25jZSBpbiBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YSBhbmQgbmV2ZXIgdXBkYXRlIGl0LiBUaGlzIG1lYW5zIHRo
YXQKKyAgICAgICAgaWYgYW4gb2JqZWN0IGlzIGNyZWF0ZWQgd2hpbGUgdGhlIHBhZ2UgaXMgYXQg
c29tZSBub24tMTAwJSBsb2FkIHBlcmNlbnRhZ2UsIEFYIGNsaWVudHMKKyAgICAgICAgdGhhdCBy
ZXF1ZXN0IHRoZXNlIGF0dHJpYnV0ZXMgd2lsbCBhbHdheXMgdGhpbmsgdGhlIG9iamVjdCBpc24n
dCBsb2FkZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZXNlIHR3byBwcm9wZXJ0
aWVzIGFuZCBpbnN0ZWFkIGRlZmVycyB0byB0aGUgaXNvbGF0ZWQgdHJlZSBhc3NvY2lhdGVkCisg
ICAgICAgIHdpdGggZWFjaCBvYmplY3Qgd2hlbiBkZXRlcm1pbmluZyB0aGUgbG9hZCBwZXJjZW50
YWdlLiBCb3RoIG9mIHRoZXNlIHByb3BlcnRpZXMgd2VyZSBiYXNlZAorICAgICAgICBvbiB0aGUg
ZW50aXJlIHBhZ2UgLyBkb2N1bWVudCBsb2FkIHByb2dyZXNzIGFueXdheXMsIHNvIGl0IGRvZXNu
J3QgbWFrZSBzZW5zZSB0byBzZXQgdGhlCisgICAgICAgIHNhbWUgdmFsdWUgZm9yIGFsbCBvZiB0
aGVtLgorCisgICAgICAgIFdlIHRyYWNrIGxvYWRpbmcgcHJvZ3Jlc3MgYnkgY2hhbmdpbmcgUHJv
Z3Jlc3NUcmFja2VyIHRvIGFsc28gbm90aWZ5CisgICAgICAgIHRoZSBwYWdlIHdoZW4gcHJvZ3Jl
c3MgY2hhbmdlcywgd2hpY2ggaW4gdHVybiB1cGRhdGVzIHRoZSBhc3NvY2lhdGVkCisgICAgICAg
IEFYT2JqZWN0Q2FjaGUgd2l0aCB0aGUgbmV3IHByb2dyZXNzIHZhbHVlLgorCisgICAgICAgIENv
dmVyZWQgYnkgYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIHdoaWNo
IHZlcmlmaWVzIHRoZSBBWExvYWQgYW5kCisgICAgICAgIEFYTG9hZGluZ1Byb2dyZXNzIGF0dHJp
YnV0ZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6QVhPYmplY3RDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjp1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MpOgorICAgICAgICBB
ZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmxvYWRpbmdGaW5pc2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpsb2FkaW5nUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICBBZGRl
ZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bG9hZGluZ1Byb2dyZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVzdGlt
YXRlZExvYWRpbmdQcm9ncmVzcyBjb25zdCk6CisgICAgICAgIFJlbmFtZSBlc3RpbWF0ZWRMb2Fk
aW5nUHJvZ3Jlc3MgbWV0aG9kcyB0byBsb2FkaW5nUHJvZ3Jlc3MuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZFRyZWU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcyk6CisgICAgICAgIEFwcGx5IG1fcGVu
ZGluZ0VzdGltYXRlZExvYWRpbmdQcm9ncmVzcy4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZFRyZWU6OmxvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIEFkZGVkLgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6XSk6CisgICAgICAgIEhhbmRsZSByZW5hbWUgb2YgZXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzIG1ldGhvZHMgdG8gbG9hZGluZ1Byb2dyZXNzLgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVz
c1RyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjpQcm9ncmVz
c1RyYWNrZXIpOgorICAgICAgICBTdG9yZSBhIHJlZmVyZW5jZSB0byB0aGUgYXNzb2NpYXRlZCBw
YWdlIGluIG5ldyBtX3BhZ2UgbWVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFj
a2VyOjpwcm9ncmVzc1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2Vy
Ojpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1Ry
YWNrZXI6OmZpbmFsUHJvZ3Jlc3NDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVz
c1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKToKKyAgICAgICAgTm90aWZ5IHRoZSBQYWdlIHdo
ZW4gcHJvZ3Jlc3MgY2hhbmdlcyBvciBjb21wbGV0ZXMuCisgICAgICAgICogbG9hZGVyL1Byb2dy
ZXNzVHJhY2tlci5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnByb2dyZXNzRXN0aW1hdGVD
aGFuZ2VkIGNvbnN0KToKKyAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
cm9ncmVzc0ZpbmlzaGVkIGNvbnN0KToKKyAgICAgICAgQWRkZWQuCisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisKIDIwMjItMDEtMjUgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXZWJJRExdIFJlbW92ZSB0aGUgbm93LXVudXNlZCBbQ3VzdG9tRW5hYmxl
ZF0gZXh0ZW5kZWQgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcAppbmRleCAxMjRjZDllOTE5NWM0MWZlNGRhNDEzMmNjYmY1MGM1MDA2
MDYyNjNhLi40YmUyN2E0YWQ0M2NhYjAxZDE0YjdkODZhYTdkNjkzMzE2MTAzZmI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTg5LDYg
Kzg5LDcgQEAKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKICNpbmNsdWRlICJNYXRo
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tl
ci5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXR0YWNobWVudC5oIgog
I2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC0yMjQsNiArMjI1LDEzIEBAIEFYT2JqZWN0Q2Fj
aGU6OkFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9wZXJmb3JtQ2Fj
aGVVcGRhdGVUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1DYWNoZVVwZGF0ZVRp
bWVyRmlyZWQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIElmIGxv
YWRpbmcgY29tcGxldGVkIGJlZm9yZSB0aGUgY2FjaGUgd2FzIGNyZWF0ZWQsIGxvYWRpbmcgcHJv
Z3Jlc3Mgd2lsbCBoYXZlIGJlZW4gcmVzZXQgdG8gemVyby4KKyAgICAvLyBDb25zaWRlciBsb2Fk
aW5nIHByb2dyZXNzIHRvIGJlIDEwMCUgaW4gdGhpcyBjYXNlLgorICAgIGRvdWJsZSBsb2FkaW5n
UHJvZ3Jlc3MgPSBkb2N1bWVudC5wYWdlKCkgPyBkb2N1bWVudC5wYWdlKCktPnByb2dyZXNzKCku
ZXN0aW1hdGVkUHJvZ3Jlc3MoKSA6IDE7CisgICAgaWYgKGxvYWRpbmdQcm9ncmVzcyA8PSAwKQor
ICAgICAgICBsb2FkaW5nUHJvZ3Jlc3MgPSAxOworICAgIG1fbG9hZGluZ1Byb2dyZXNzID0gbG9h
ZGluZ1Byb2dyZXNzOwogfQogCiBBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSgpCkBAIC05
NzEsNiArOTc5LDIyIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlQ2FjaGVBZnRlck5vZGVJ
c0F0dGFjaGVkKE5vZGUqIG5vZGUpCiAgICAgZ2V0KG5vZGUpOwogfQogCit2b2lkIEFYT2JqZWN0
Q2FjaGU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhkb3VibGUgbmV3UHJvZ3Jlc3NWYWx1ZSkKK3sK
KyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UobmV3UHJvZ3Jlc3NWYWx1ZSA+PSAwICYmIG5ld1Byb2dyZXNzVmFsdWUgPD0gMSwg
InVuZXhwZWN0ZWQgbG9hZGluZyBwcm9ncmVzcyB2YWx1ZTogJWYiLCBuZXdQcm9ncmVzc1ZhbHVl
KTsKKyAgICBpZiAobV9wYWdlSUQpIHsKKyAgICAgICAgLy8gU29tZXRpbWVzIHRoZSBpc29sYXRl
ZCB0cmVlIGhhc24ndCBiZWVuIGNyZWF0ZWQgYnkgdGhlIHRpbWUgd2UgZ2V0IGxvYWRpbmcgcHJv
Z3Jlc3MgdXBkYXRlcywKKyAgICAgICAgLy8gc28gY2FjaGUgdGhpcyB2YWx1ZSBpbiB0aGUgQVhP
YmplY3RDYWNoZSB0b28gc28gd2UgY2FuIGdpdmUgaXQgdG8gdGhlIHRyZWUgdXBvbiBjcmVhdGlv
bi4KKyAgICAgICAgbV9sb2FkaW5nUHJvZ3Jlc3MgPSBuZXdQcm9ncmVzc1ZhbHVlOworICAgICAg
ICBpZiAoYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoKm1fcGFnZUlE
KSkKKyAgICAgICAgICAgIHRyZWUtPnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhuZXdQcm9ncmVzc1Zh
bHVlKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShuZXdQcm9ncmVzc1ZhbHVlKTsK
KyNlbmRpZgorfQorCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUNoaWxkcmVuQ2hhbmdlZChB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCiB7CiAgICAgLy8gSGFuZGxlIE1lbnVMaXN0cyBh
bmQgTWVudUxpc3RQb3B1cHMgYXMgc3BlY2lhbCBjYXNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggMjk4MGExZmI4YWFhOTFiNTdkNzFjNjJj
NmYyY2RkZGMyNDU5NjA5Zi4uODYyYzUyMmI4NGM0NGY5MzQyNGIwYmYzZTliMGVkZTQyMmU0MTU4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAg
LTE4Nyw2ICsxODcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja2VkU3RhdGVDaGFuZ2VkKE5v
ZGUqKTsKICAgICAvLyBDYWxsZWQgd2hlbiBhIG5vZGUgaGFzIGp1c3QgYmVlbiBhdHRhY2hlZCwg
c28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBzdWJjbGFzcyBvZiBBY2Nlc3Np
YmlsaXR5T2JqZWN0LgogICAgIHZvaWQgdXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVkKE5v
ZGUqKTsKKyAgICB2b2lkIHVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhkb3VibGUpOworICAgIHZvaWQg
bG9hZGluZ0ZpbmlzaGVkKCkgeyB1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MoMSk7IH0KKyAgICBkb3Vi
bGUgbG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkaW5nUHJvZ3Jlc3M7IH0K
IAogICAgIHZvaWQgZGVmZXJGb2N1c2VkVUlFbGVtZW50Q2hhbmdlSWZOZWVkZWQoTm9kZSogb2xk
Rm9jdXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWROb2RlKTsKICAgICB2b2lkIGRlZmVyTW9kYWxD
aGFuZ2UoRWxlbWVudCopOwpAQCAtNTIzLDYgKzUyNiw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PHN0ZDo6cGFpcjxOb2RlKiwgTm9kZSo+PiBtX2RlZmVycmVkRm9jdXNlZE5vZGVDaGFuZ2U7CiAg
ICAgYm9vbCBtX2lzU3luY2hyb25pemluZ1NlbGVjdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3BlcmZvcm1pbmdEZWZlcnJlZENhY2hlVXBkYXRlIHsgZmFsc2UgfTsKKyAgICBkb3VibGUgbV9s
b2FkaW5nUHJvZ3Jlc3MgeyAwLjI1IH07CiAKICNpZiBVU0UoQVRLKQogICAgIExpc3RIYXNoU2V0
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gbV9kZWZlcnJlZEF0dGFjaGVkV3JhcHBlck9i
amVjdExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCmluZGV4IDFjMDcwNzI5NWE3NGQ5MDE3YmRkZGVmZTQyZWRjNGM4OTdiMWNl
MWYuLjFhOTYzYTVkNjE2MTA2YTMwNjFlYjY2MGNhNGY1NDU4ZGNlMGE4ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0y
OTUsNyArMjk1LDcgQEAgcHVibGljOgogICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRUYWJJdGVt
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIEFYQ29yZU9iamVjdCogc2VsZWN0
ZWRMaXN0SXRlbSgpIG92ZXJyaWRlOwogICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KLSAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSBsb2FkaW5nUHJvZ3Jlc3Mo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgaXNBUklBQ29udHJvbChBY2Nlc3NpYmlsaXR5Um9sZSk7CiAgICAgYm9vbCBzdXBwb3J0
c0NoZWNrZWRTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aAppbmRleCBjNjU2ODAzOTBiYzQyMjJjMjA4ZGEwYzlmYTY2NDA5ZTg4NzRjN2FhLi4yMDRiMmI5
MWEyNTJiMDA2MjU2ZjhjNjIxNjcyZGUxZWZjNDM4YzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aApAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0
KiBzZWxlY3RlZFRhYkl0ZW0oKSA9IDA7CiAgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIHNlbGVj
dGVkTGlzdEl0ZW0oKSA9IDA7CiAgICAgdmlydHVhbCBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgZG91YmxlIGxvYWRpbmdQcm9ncmVzcygpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIFN0cmluZyBicmFpbGxlTGFiZWwoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBT
dHJpbmcgYnJhaWxsZVJvbGVEZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0
cmluZyBlbWJlZGRlZEltYWdlRGVzY3JpcHRpb24oKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcAppbmRleCA0OTg4NmU1ZDg4ODBkOGE4ZWQyNzRjMmZiZTEwMzE2OWE5OGY1M2IyLi5lZmMx
NWM2OTQ1MjhkMmQ5MzM2ZjhjZWFiNzBkZmY5ZDBjMGViMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKQEAgLTE1MzYsNyArMTUzNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNMb2FkZWQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmVyID8gIW1fcmVuZGVyZXItPmRv
Y3VtZW50KCkucGFyc2VyKCkgOiBmYWxzZTsKIH0KIAotZG91YmxlIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0Citkb3VibGUgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCA1OTVm
MGE2ZDM4NzBhY2M5YjFhYTg3OTI3Y2U0MmYyOGQ3ZTg1Y2FkLi45MGUzOTkxYzI1NTM3MGY5OTc2
MGMwYjViODdiZGZjZmUzYjllNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtODMsNyArODMsNyBA
QCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWZhdWx0T2JqZWN0
SW5jbHVzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgaW50IGxheW91dENvdW50KCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNv
bnN0IG92ZXJyaWRlOworICAgIGRvdWJsZSBsb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlk
ZTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGFzdENoaWxkKCkgY29uc3Qgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IGVjZjgxOGIxYTZiMTYyNzI3MDM4
MGJjZTg4NmY5YTYwNGNmYTc3YWYuLjgyYzdjMWRjZjdkMmZiMjM4MmZjMDVjNjY4YzI4Njg4NDhi
YTMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0xMTAsNyArMTEwLDYgQEAg
dm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmpl
Y3QmIGNvcmVPYmplY3QsIGJvb2wgaXMKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
SXNMaW5rLCBvYmplY3QuaXNMaW5rKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpJc0xpbmtlZCwgb2JqZWN0LmlzTGlua2VkKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpJc0xpc3QsIG9iamVjdC5pc0xpc3QoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OklzTG9hZGVkLCBvYmplY3QuaXNMb2FkZWQoKSk7CiAgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OklzTWVkaWFUaW1lbGluZSwgb2JqZWN0LmlzTWVkaWFUaW1lbGluZSgp
KTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51LCBvYmplY3QuaXNNZW51
KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVCYXIsIG9iamVjdC5p
c01lbnVCYXIoKSk7CkBAIC0xNzEsNyArMTcwLDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIGNvcmVPYmplY3QsIGJvb2wgaXMK
ICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRSYWRpb0J1dHRv
biwgb2JqZWN0LnNlbGVjdGVkUmFkaW9CdXR0b24oKSk7CiAgICAgc2V0T2JqZWN0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSwgb2JqZWN0LnNlbGVjdGVkVGFiSXRlbSgp
KTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGF5b3V0Q291bnQsIG9iamVjdC5s
YXlvdXRDb3VudCgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RXN0aW1hdGVk
TG9hZGluZ1Byb2dyZXNzLCBvYmplY3QuZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkpOwogICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zLCBvYmplY3Quc3Vw
cG9ydHNBUklBT3ducygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFzUG9w
dXAsIG9iamVjdC5oYXNQb3B1cCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
UG9wdXBWYWx1ZSwgb2JqZWN0LnBvcHVwVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmgKaW5kZXggYzhlZmIyZjhjMTRhZDQ1ZDFkYmIzODM5ZWI5NWMwNDZmMGVm
N2Q5Ni4uOTgwMDY5OTQ5ZDI1Mzg5OTVlY2Q2YjYwM2ExZjA0MmY5MDAxMjEwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuaApAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAgQVhDb3Jl
T2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkUmFkaW9CdXR0b24pOyB9CiAgICAg
QVhDb3JlT2JqZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRUYWJJdGVtKTsgfQogICAgIGlu
dCBsYXlvdXRDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpMYXlvdXRDb3VudCk7IH0KLSAgICBkb3VibGUgZXN0aW1hdGVkTG9h
ZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZG91YmxlQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OkVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyk7IH0KKyAgICBkb3Vi
bGUgbG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5sb2Fk
aW5nUHJvZ3Jlc3MoKTsgfQogICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNB
UklBT3ducyk7IH0KICAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5l
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKTsgfQogICAgIHZvaWQg
YXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJl
bikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6QVJJQUNvbnRyb2xzRWxlbWVudHMsIGNoaWxkcmVuKTsgfQpAQCAtNTEzLDcgKzUx
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIGlzSG92ZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNJbmRl
dGVybWluYXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNMb2Fk
ZWQpOyB9CisgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGxvYWRp
bmdQcm9ncmVzcygpID49IDE7IH0KICAgICBib29sIGlzT25TY3JlZW4oKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1By
ZXNzZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA2NTQ5
ZGJiOWJlNWZhODUwMTI5MmY2NTY4MmM3MDBlN2RhNzJhMGRiLi5kMjQ5MTM0ZjQwOGM4OWI4Yjhi
OGQyOWY5MmU2ZTAyYWU5NjczMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBAIC0xMTgs
NiArMTE4LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKEFY
T2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCiAgICAgQVNTRVJUKCF0cmVlUGFnZUNhY2hlKCku
Y29udGFpbnMoKnBhZ2VJRCkpOwogICAgIHRyZWVQYWdlQ2FjaGUoKS5zZXQoKnBhZ2VJRCwgdHJl
ZS5jb3B5UmVmKCkpOwogICAgIHRyZWVJRENhY2hlKCkuc2V0KHRyZWUtPnRyZWVJRCgpLCB0cmVl
LmNvcHlSZWYoKSk7CisgICAgdHJlZS0+dXBkYXRlTG9hZGluZ1Byb2dyZXNzKGF4T2JqZWN0Q2Fj
aGUtPmxvYWRpbmdQcm9ncmVzcygpKTsKIAogICAgIHJldHVybiB0cmVlOwogfQpAQCAtNDM5LDYg
KzQ0MCwxNiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlEKEFYSUQgYXhJ
RCkKICAgICBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5nZXMuYXBwZW5kKHsgYXhJRCwgcHJvcGVydHlN
YXAgfSk7CiB9CiAKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhk
b3VibGUgbmV3UHJvZ3Jlc3NWYWx1ZSkKK3sKKyAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6
dXBkYXRlTG9hZGluZ1Byb2dyZXNzIik7CisgICAgQVhMT0cobWFrZVN0cmluZygiUXVldWVpbmcg
bG9hZGluZyBwcm9ncmVzcyB1cGRhdGUgdG8gIiwgbmV3UHJvZ3Jlc3NWYWx1ZSwgIiBmb3IgdHJl
ZUlEICIsIHRyZWVJRCgpKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBtX3BlbmRpbmdMb2FkaW5nUHJv
Z3Jlc3MgPSBuZXdQcm9ncmVzc1ZhbHVlOworfQorCiB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1v
dmVOb2RlKEFYSUQgYXhJRCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6cmVtb3Zl
Tm9kZSIpOwpAQCAtNDg0LDYgKzQ5NSw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVu
ZGluZ0NoYW5nZXMoKQogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9Owog
CisgICAgbV9sb2FkaW5nUHJvZ3Jlc3MgPSBtX3BlbmRpbmdMb2FkaW5nUHJvZ3Jlc3M7CisKICAg
ICBpZiAobV9wZW5kaW5nRm9jdXNlZE5vZGVJRCAhPSBtX2ZvY3VzZWROb2RlSUQpIHsKICAgICAg
ICAgQVhMT0cobWFrZVN0cmluZygiZm9jdXNlZE5vZGVJRCAiLCBtX2ZvY3VzZWROb2RlSUQubG9n
Z2luZ1N0cmluZygpLCAiIHBlbmRpbmdGb2N1c2VkTm9kZUlEICIsIG1fcGVuZGluZ0ZvY3VzZWRO
b2RlSUQubG9nZ2luZ1N0cmluZygpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IDIwYTRk
MWM4NzM2YzA1MDQ4ZWFjMzM2YTNmMjNmODE3MzhjN2ViYjQuLmYyOGM0NmE0NTM0NWJlNTBmNmEz
OTYxNzE3MDNkOWQ5NTNhNTRkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMTExLDcgKzEx
MSw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgRWRpdGFi
bGVBbmNlc3RvciwKICAgICBFbGVtZW50UmVjdCwKICAgICBFbWJlZGRlZEltYWdlRGVzY3JpcHRp
b24sCi0gICAgRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzLAogICAgIEV4cGFuZGVkVGV4dFZhbHVl
LAogICAgIEZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpdGxlLAogICAgIEZvY3VzYWJs
ZUFuY2VzdG9yLApAQCAtMTY4LDcgKzE2Nyw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUg
OiB1aW50MTZfdCB7CiAgICAgSXNMaW5rZWQsCiAgICAgSXNMaXN0LAogICAgIElzTGlzdEJveCwK
LSAgICBJc0xvYWRlZCwKICAgICBJc01hdGhFbGVtZW50LAogICAgIElzTWF0aEZyYWN0aW9uLAog
ICAgIElzTWF0aEZlbmNlZCwKQEAgLTM2MSw2ICszNTksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1
cGRhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYpOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW4oQVhD
b3JlT2JqZWN0Jik7CiAKKyAgICBkb3VibGUgbG9hZGluZ1Byb2dyZXNzKCkgeyByZXR1cm4gbV9s
b2FkaW5nUHJvZ3Jlc3M7IH0KKyAgICB2b2lkIHVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhkb3VibGUg
bmV3UHJvZ3Jlc3MpOworCiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBsZWF2aW5nIGFs
bCBkZXNjZW5kYW50cyBhbG9uZS4KICAgICB2b2lkIHJlbW92ZU5vZGUoQVhJRCk7CiAgICAgLy8g
UmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cy4KQEAgLTQxMSw2
ICs0MTIsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgVmVjdG9yPEFY
SUQ+Pj4gbV9wZW5kaW5nQ2hpbGRyZW5VcGRhdGVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFu
Z2VMb2dMb2NrKTsKICAgICBBWElEIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQgV1RGX0dVQVJERURf
QllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOwogICAgIEFYSUQgbV9mb2N1c2VkTm9kZUlEOworICAg
IGRvdWJsZSBtX3BlbmRpbmdMb2FkaW5nUHJvZ3Jlc3MgV1RGX0dVQVJERURfQllfTE9DSyhtX2No
YW5nZUxvZ0xvY2spIHsgMC4yNSB9OworICAgIGRvdWJsZSBtX2xvYWRpbmdQcm9ncmVzcyB7IDAu
MjUgfTsKICAgICBMb2NrIG1fY2hhbmdlTG9nTG9jazsKIAogICAgIGJvb2wgbV9jcmVhdGluZ1N1
YnRyZWUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpp
bmRleCAxMWM0YjlkY2M4ODdmZjRmYWQ1NWE1MjRkMTBjNTg2ZWE2YjcyNjE0Li5lYTA2MTZlOTA3
Y2Q2MWNiZjY2Yzk5NzYxNTczYThjODJiZTA1YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQpAQCAtMjAzMyw3ICsyMDMzLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6QCJBWExheW91dENvdW50Il0pCiAgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2Jq
ZWN0LT5sYXlvdXRDb3VudCgpKTsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlMb2FkaW5nUHJvZ3Jlc3NBdHRyaWJ1dGVdKQotICAgICAg
ICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkp
OworICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+bG9hZGluZ1Byb2dyZXNzKCkp
OwogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eVByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdKQogICAgICAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpiYWNraW5nT2JqZWN0LT5wcmV2ZW50
S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCldOwogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmli
dXRlXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZmE4
NGMzNjZjNjMxNzVmOWZiNDczMGViODVjNDY3N2ZjM2Q2MzY4Zi4uYTJjNmQ3MmI1YmEwZjA0YTQ5
Y2E2ZGM3MTBlZjZmYTVlMDEyNWMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNz
VHJhY2tlci5jcHAKQEAgLTc1LDggKzc1LDkgQEAgcHVibGljOgogICAgIGxvbmcgbG9uZyBlc3Rp
bWF0ZWRMZW5ndGg7CiB9OwogCi1Qcm9ncmVzc1RyYWNrZXI6OlByb2dyZXNzVHJhY2tlcihVbmlx
dWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYmIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KFdU
Rk1vdmUoY2xpZW50KSkKK1Byb2dyZXNzVHJhY2tlcjo6UHJvZ3Jlc3NUcmFja2VyKFBhZ2UmIHBh
Z2UsIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgY2xpZW50KQorICAgIDogbV9w
YWdlKHBhZ2UpCisgICAgLCBtX2NsaWVudChXVEZNb3ZlKGNsaWVudCkpCiAgICAgLCBtX3Byb2dy
ZXNzSGVhcnRiZWF0VGltZXIoKnRoaXMsICZQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzSGVhcnRi
ZWF0VGltZXJGaXJlZCkKIHsKIH0KQEAgLTEyOSw2ICsxMzAsNyBAQCB2b2lkIFByb2dyZXNzVHJh
Y2tlcjo6cHJvZ3Jlc3NTdGFydGVkKEZyYW1lJiBmcmFtZSkKICAgICAgICAgbV9pc01haW5Mb2Fk
ID0gaXNNYWluRnJhbWUgfHwgZWxhcHNlZFRpbWVTaW5jZU1haW5Mb2FkQ29tcGxldGUgPCBzdWJm
cmFtZVBhcnRPZk1haW5Mb2FkVGhyZXNob2xkOwogCiAgICAgICAgIG1fY2xpZW50LT5wcm9ncmVz
c1N0YXJ0ZWQoKm1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lKTsKKyAgICAgICAgbV9wYWdlLnBy
b2dyZXNzRXN0aW1hdGVDaGFuZ2VkKCptX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSk7CiAgICAg
fQogICAgIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzKys7CiAKQEAgLTEzOCw2ICsxNDAsMTIg
QEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzU3RhcnRlZChGcmFtZSYgZnJhbWUpCiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVN0YXJ0ZWRMb2FkaW5nKGZyYW1lKTsK
IH0KIAordm9pZCBQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKEZyYW1l
JiBmcmFtZSkKK3sKKyAgICBtX2NsaWVudC0+cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoZnJhbWUp
OworICAgIG1fcGFnZS5wcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChmcmFtZSk7Cit9CisKIHZvaWQg
UHJvZ3Jlc3NUcmFja2VyOjpwcm9ncmVzc0NvbXBsZXRlZChGcmFtZSYgZnJhbWUpCiB7CiAgICAg
TE9HKFByb2dyZXNzLCAiUHJvZ3Jlc3MgY29tcGxldGVkICglcCkgLSBmcmFtZSAlcChcIiVzXCIp
LCB2YWx1ZSAlZiwgdHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwIiwgdGhp
cywgJmZyYW1lLCBmcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCksIG1fcHJvZ3Jlc3NWYWx1ZSwgbV9udW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMsIG1fb3JpZ2lu
YXRpbmdQcm9ncmVzc0ZyYW1lLmdldCgpKTsKQEAgLTE2Niw3ICsxNzQsNyBAQCB2b2lkIFByb2dy
ZXNzVHJhY2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKCkKICAgICAvLyB3aXRoIGZpbmFsIHBy
b2dyZXNzIHZhbHVlLgogICAgIGlmICghbV9maW5hbFByb2dyZXNzQ2hhbmdlZFNlbnQpIHsKICAg
ICAgICAgbV9wcm9ncmVzc1ZhbHVlID0gMTsKLSAgICAgICAgbV9jbGllbnQtPnByb2dyZXNzRXN0
aW1hdGVDaGFuZ2VkKCpmcmFtZSk7CisgICAgICAgIHByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKCpm
cmFtZSk7CiAgICAgfQogCiAgICAgcmVzZXQoKTsKQEAgLTE3Niw2ICsxODQsNyBAQCB2b2lkIFBy
b2dyZXNzVHJhY2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKCkKIAogICAgIGZyYW1lLT5sb2Fk
ZXIoKS5jbGllbnQoKS5zZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KHRydWUpOwogICAgIG1fY2xp
ZW50LT5wcm9ncmVzc0ZpbmlzaGVkKCpmcmFtZSk7CisgICAgbV9wYWdlLnByb2dyZXNzRmluaXNo
ZWQoKmZyYW1lKTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZFByb2dyZXNzaW5nU3RhdHVzQ2hh
bmdlZCgpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVN0b3BwZWRMb2Fk
aW5nKCpmcmFtZSk7CkBAIC0yNTQsNyArMjYzLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6Omlu
Y3JlbWVudFByb2dyZXNzKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnMK
ICAgICAgICAgICAgIGlmIChtX3Byb2dyZXNzVmFsdWUgPT0gMSkKICAgICAgICAgICAgICAgICBt
X2ZpbmFsUHJvZ3Jlc3NDaGFuZ2VkU2VudCA9IHRydWU7CiAKLSAgICAgICAgICAgIG1fY2xpZW50
LT5wcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCgqZnJhbWUpOworICAgICAgICAgICAgcHJvZ3Jlc3NF
c3RpbWF0ZUNoYW5nZWQoKmZyYW1lKTsKIAogICAgICAgICAgICAgbV9sYXN0Tm90aWZpZWRQcm9n
cmVzc1ZhbHVlID0gbV9wcm9ncmVzc1ZhbHVlOwogICAgICAgICAgICAgbV9sYXN0Tm90aWZpZWRQ
cm9ncmVzc1RpbWUgPSBub3c7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJv
Z3Jlc3NUcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgK
aW5kZXggYzBkMjFlNmU2MzdlODMxNTE3NTY1OWQ3NGEyYjUzZWRmNzgxYTk3ZC4uYjNhYWIyYTk4
N2YxMjA1NWNiZGU1YzcxZTVlYzNhZGEyZWM1YzU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
cm9ncmVzc1RyYWNrZXIuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBQcm9ncmVzc1RyYWNrZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFByb2dyZXNzVHJhY2tlcik7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUHJvZ3Jlc3NUcmFja2Vy
KFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYpOworICAgIGV4cGxpY2l0IFByb2dy
ZXNzVHJhY2tlcihQYWdlJiwgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJik7CiAg
ICAgflByb2dyZXNzVHJhY2tlcigpOwogCiAgICAgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50JiBjbGll
bnQoKSB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQpAQCAtNjYsOSArNjYsMTEgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBmaW5hbFByb2dyZXNzQ29t
cGxldGUoKTsKKyAgICB2b2lkIHByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKEZyYW1lJik7CiAKICAg
ICB2b2lkIHByb2dyZXNzSGVhcnRiZWF0VGltZXJGaXJlZCgpOwogCisgICAgUGFnZSYgbV9wYWdl
OwogICAgIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+IG1fY2xpZW50OwogICAgIFJl
ZlB0cjxGcmFtZT4gbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWU7CiAgICAgSGFzaE1hcDxSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmVzc0l0ZW0+PiBtX3By
b2dyZXNzSXRlbXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBjODgxYjI2YmEyOGRkNTg3ZTE3Zjhl
YjM4OWQ0MjUwYjQwODkxZmY3Li41ODBkYTExNzIzZGNmNjZmMzBjZmY3YTNjYjU4ODUzYjdiZWZl
NWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5oIgogI2luY2x1ZGUgIkRpYWdub3N0aWNMb2dnaW5nS2V5cy5o
IgogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCIKKyNpbmNsdWRlICJE
b2N1bWVudElubGluZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUg
IkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmUu
aCIKQEAgLTI3NCw3ICsyNzUsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFn
ZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihtYWtlVW5pcXVl
PFBvaW50ZXJMb2NrQ29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3NldHRpbmdz
KFNldHRpbmdzOjpjcmVhdGUodGhpcykpCi0gICAgLCBtX3Byb2dyZXNzKG1ha2VVbmlxdWU8UHJv
Z3Jlc3NUcmFja2VyPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNs
aWVudCkpKQorICAgICwgbV9wcm9ncmVzcyhtYWtlVW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnRo
aXMsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkpCiAg
ICAgLCBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcihtYWtlVW5pcXVlPEJhY2tGb3J3YXJkQ29udHJv
bGxlcj4oKnRoaXMsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQp
KSkKICAgICAsIG1fbWFpbkZyYW1lKEZyYW1lOjpjcmVhdGUodGhpcywgbnVsbHB0ciwgV1RGTW92
ZShwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUpKSkKICAgICAsIG1f
ZWRpdG9yQ2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50KSkKQEAg
LTU4Myw2ICs1ODQsMjIgQEAgdm9pZCBQYWdlOjpzZXR0aW5nc0RpZENoYW5nZSgpCiAjZW5kaWYK
IH0KIAordm9pZCBQYWdlOjpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChGcmFtZSYgZnJhbWVXaXRo
UHJvZ3Jlc3NVcGRhdGUpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWVX
aXRoUHJvZ3Jlc3NVcGRhdGUuZG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoYXV0byogYXhPYmpl
Y3RDYWNoZSA9IGRvY3VtZW50LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgICAg
IGF4T2JqZWN0Q2FjaGUtPnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhwcm9ncmVzcygpLmVzdGltYXRl
ZFByb2dyZXNzKCkpOworICAgIH0KK30KKwordm9pZCBQYWdlOjpwcm9ncmVzc0ZpbmlzaGVkKEZy
YW1lJiBmcmFtZVdpdGhDb21wbGV0ZWRQcm9ncmVzcykgY29uc3QKK3sKKyAgICBpZiAoYXV0byog
ZG9jdW1lbnQgPSBmcmFtZVdpdGhDb21wbGV0ZWRQcm9ncmVzcy5kb2N1bWVudCgpKSB7CisgICAg
ICAgIGlmIChhdXRvKiBheE9iamVjdENhY2hlID0gZG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RD
YWNoZSgpKQorICAgICAgICAgICAgYXhPYmplY3RDYWNoZS0+bG9hZGluZ0ZpbmlzaGVkKCk7Cisg
ICAgfQorfQorCiBib29sIFBhZ2U6Om9wZW5lZEJ5RE9NKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9vcGVuZWRCeURPTTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggYmU3ZjgxMzkwNDgyYWI5MTg1YjIwMTY4
OWNkMjQ5MTY1ZTU1MWZkZi4uOTgyMDljMWUwMGRhY2QyODgxMWU1ODgxZWEzNjE4ZjAxYTk3ODI2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKQEAgLTM2MSw2ICszNjEsOCBAQCBwdWJsaWM6CiAKICAgICBTZXR0
aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiAqbV9zZXR0aW5nczsgfQogICAgIFByb2dy
ZXNzVHJhY2tlciYgcHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiAqbV9wcm9ncmVzczsgfQorICAg
IHZvaWQgcHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoRnJhbWUmKSBjb25zdDsKKyAgICB2b2lkIHBy
b2dyZXNzRmluaXNoZWQoRnJhbWUmKSBjb25zdDsKICAgICBCYWNrRm9yd2FyZENvbnRyb2xsZXIm
IGJhY2tGb3J3YXJkKCkgY29uc3QgeyByZXR1cm4gKm1fYmFja0ZvcndhcmRDb250cm9sbGVyOyB9
CiAKICAgICBTZWNvbmRzIGRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoKSBjb25zdCB7IHJldHVy
biBtX2RvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWw7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MjFkM2FiYWU1MjAxMzFh
NWNjOTE0ZjVkMGI3MmFmNTg0Yjk2MzRlLi4wNDc1ZDJkNjhiZmNhYzRmZTI0MGExMTUyOGU3YmM1
MzZhMWQ5ZjI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDEtMjYgIFR5bGVyIFdpbGNv
Y2sgIDx0eWxlcl93QGFwcGxlLmNvbT4KKworICAgICAgICBBWCBJVE06IERlZmVyIHRvIHRoZSB0
cmVlIHdoZW4gZGV0ZXJtaW5pbmcgQVggb2JqZWN0IGxvYWRpbmcgcHJvZ3Jlc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTY0NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9t
YWMvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgIEFzc29jaWF0ZWQg
dGVzdCBub3cgdXNlcyBqcy10ZXN0LmpzLCBzbyBtb2RpZnkgZXhwZWN0YXRpb25zIHRvIGluY2x1
ZGUKKyAgICAgICAganMtdGVzdCBvdXRwdXQgKGUuZy4gdGVzdCBkZXNjcmlwdGlvbigpKS4KKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLmh0bWw6CisgICAg
ICAgIFdhaXQgYXN5bmNocm9ub3VzbHkgZm9yIGxvYWRpbmcgdG8gY29tcGxldGUgKCJBWExvYWRl
ZDogMSIpLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1sOgorICAg
ICAgICBEb24ndCBvdXRwdXQgYWxsIGF0dHJpYnV0ZXMsIHNpbmNlIGl0J3Mgbm90IG5lY2Vzc2Fy
eSBmb3IgdGhlIHB1cnBvc2UKKyAgICAgICAgb2YgdGhlIHRlc3QgKHdoaWNoIGlzIHRvIGVuc3Vy
ZSBjYWxsaW5nIGFsbEF0dHJpYnV0ZXMoKSBpbiB0aGlzCisgICAgICAgIHNjZW5hcmlvIGRvZXNu
J3QgY2F1c2UgYSBjcmFzaCkuIFByZXZpb3VzbHksIHRoZSB0ZXN0IG91dHB1dCBjb250YWluZWQK
KyAgICAgICAgbG9hZGluZyBBWCBhdHRyaWJ1dGVzLCBzbyByYXRoZXIgdGhhbiBtYWtpbmcgdGhp
cyB0ZXN0IHdhaXQgZm9yCisgICAgICAgIGxvYWRpbmcgdG8gY29tcGxldGUgSSBkZWNpZGVkIHRv
IHJlbW92ZSB0aGUgb3V0cHV0IGFsbCB0b2dldGhlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wMS0yNSAg
QWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBp
bnB1dC1zZWN1cml0eSBDU1MgcHJvcGVydHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKaW5k
ZXggOTEyM2IzMDhjZWNiNGYxN2MxMGY5N2QxMWU4ODE2YzljNzYyOWRmMi4uNWU5Y2Q2OTAzY2Jh
YTNkYmQ5NjNmNGUxYTcyYzQ2NzI4MTgwOTMwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50
eHQKQEAgLTEsOSArMSwxNCBAQAorVGhpcyB0ZXN0IHByb3ZpZGVzIGEgYmFzZSBzbmFwc2hvdCBv
ZiB0aGUgcm9vdCB3ZWIgYXJlYSdzIGF0dHJpYnV0ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCiBBWEhhc0RvY3VtZW50Um9sZUFuY2VzdG9yOiAwCiBBWEhhc1dlYkFwcGxpY2F0
aW9uQW5jZXN0b3I6IDAKIEFYUm9sZTogQVhXZWJBcmVhCiBBWFJvbGVEZXNjcmlwdGlvbjogSFRN
TCBjb250ZW50Ci1BWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhDaGlsZHJlbkluTmF2
aWdhdGlvbk9yZGVyOiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhDaGlsZHJlbjogPGFycmF5IG9mIHNp
emUgMj4KK0FYQ2hpbGRyZW5Jbk5hdmlnYXRpb25PcmRlcjogPGFycmF5IG9mIHNpemUgMj4KIEFY
SGVscDoKIEFYUGFyZW50OiA8QVhXZWJBcmVhPgogQVhTaXplOiBOU1NpemU6IHs4MDAsIDYwMH0K
QEAgLTM0LDQgKzM5LDcgQEAgQVhQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoOiAwCiBB
WFdlYlNlc3Npb25JRDogMgogQVhFbGVtZW50QnVzeTogMAogCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sCmluZGV4IDZiMjI5OTE0
ZmMyMjZlOGZjYzJiMDllNzljZjc4Nzk4ZDc4MWFiNjIuLmY2MGQ4ZjJjZTQxMzg3MTdiNjc1ZGFh
YWI3MzU5NTA2MWEyNmIwYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLmh0bWwKQEAgLTEsMjQgKzEsMzAgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKwogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3QgcHJvdmlkZXMgYSBiYXNlIHNuYXBzaG90IG9mIHRoZSByb290IHdlYiBhcmVhJ3Mg
YXR0cmlidXRlcy4iKTsKIAotICAgIHZhciBsb2cgPSBmdW5jdGlvbihtc2cpCi0gICAgewotICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKLSAgICB9CisgICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CiAKLSAgICBvbmxvYWQgPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAod2lu
ZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQotICAgICAgICAgICAgbG9nKGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmFsbEF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlIHRv
IHJ1bi4iKQorICAgICAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgbGV0IGFsbEF0dHJpYnV0ZXM7CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHsK
KyAgICAgICAgICAgICAgICBpZiAoIWFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
YWxsQXR0cmlidXRlcyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmFs
bEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgcGFnZSB0byBi
ZSBmdWxseSBsb2FkZWQuCisgICAgICAgICAgICAgICAgcmV0dXJuIGFsbEF0dHJpYnV0ZXMuaW5j
bHVkZXMoIkFYTG9hZGVkOiAxIik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRlYnVn
RXNjYXBlZChhbGxBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9LCAwKTsKICAgICB9CiA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHByZSBpZD0i
Y29uc29sZSI+PC9wcmU+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvcGFyZW50LWRlbGV0ZS5odG1sCmluZGV4IDRkN2M1ZTI4MTQwZTQzN2IwNzQ4YzRhNzBj
ZmI1YmQxNjZlYzlmZTcuLmI5ZDU4MDYxOWQ5MDY3ZTE5MThmMjhlMjJjYTZjNWFhOTVhZDQ2M2Ug
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1sCkBAIC0x
LDI3ICsxLDIyIEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQogZnVuY3Rpb24g
cnVuVGVzdCgpIHsKLSAgICB2YXIgYWNjZXNzaWJpbGl0eUVsZW1lbnQ7Ci0gICAgewotICAgICAg
ICB2YXIgb3V0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0ZXIiKTsKLSAgICAgICAg
dmFyIGlubmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlubmVyIik7Ci0gICAgICAgIHZh
ciBlZGl0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0YWJsZSIpOwotICAgICAg
ICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwotICAgICAg
ICBlZGl0YWJsZS5mb2N1cygpOwotICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKSB7Ci0gICAgICAgICAgICB2YXIgYWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgfQotICAgICAgICBpbm5l
ci5yZW1vdmVDaGlsZChlZGl0YWJsZSk7Ci0gICAgICAgIG91dGVyLnJlbW92ZUNoaWxkKGlubmVy
KTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAg
ICAgICByZXN1bHQuaW5uZXJUZXh0ID0gYWNjZXNzaWJpbGl0eUVsZW1lbnQuYWxsQXR0cmlidXRl
cygpOwotICAgIH0KKyAgICBjb25zdCBvdXRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJv
dXRlciIpOworICAgIGNvbnN0IGlubmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlubmVy
Iik7CisgICAgY29uc3QgZWRpdGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdGFi
bGUiKTsKKyAgICBjb25zdCByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
Iik7CisgICAgZWRpdGFibGUuZm9jdXMoKTsKKyAgICBsZXQgYWNjZXNzaWJpbGl0eUVsZW1lbnQ7
CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgYWNjZXNz
aWJpbGl0eUVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsK
KyAgICBpbm5lci5yZW1vdmVDaGlsZChlZGl0YWJsZSk7CisgICAgb3V0ZXIucmVtb3ZlQ2hpbGQo
aW5uZXIpOworICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBjYXVzZSBhIGNyYXNoLgorICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIGFjY2Vzc2liaWxpdHlFbGVt
ZW50LmFsbEF0dHJpYnV0ZXMoKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQt
ZGVsZXRlLWV4cGVjdGVkLnR4dAppbmRleCA4ZmM4YTI5YjY1N2RmNjRkOWZmYTlkNmI3MjBkMzhj
NWUwMzUwN2Q1Li5iMGI5MzQyMjc0MzU3NjAzNjZmMWEwYjE2MjkyNzg1OGJiNWQ1NTJmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVs
ZXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4dApAQCAtMSwzNyArMSw1IEBACitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIFRoaXMgdGVzdCBwYXNz
ZXMgaWYgdGhlcmUgaXMgbm8gY3Jhc2guCi1BWEhhc0RvY3VtZW50Um9sZUFuY2VzdG9yOiAwCi1B
WEhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3I6IDAKLUFYUm9sZTogQVhXZWJBcmVhCi1BWFJvbGVE
ZXNjcmlwdGlvbjogSFRNTCBjb250ZW50Ci1BWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAxPgot
QVhDaGlsZHJlbkluTmF2aWdhdGlvbk9yZGVyOiA8YXJyYXkgb2Ygc2l6ZSAxPgotQVhIZWxwOgot
QVhQYXJlbnQ6IDxBWFdlYkFyZWE+Ci1BWFNpemU6IE5TU2l6ZTogezgwMCwgNjAwfQotQVhUaXRs
ZToKLUFYRGVzY3JpcHRpb246Ci1BWFZhbHVlOgotQVhGb2N1c2VkOiAwCi1BWEVuYWJsZWQ6IDEK
LUFYV2luZG93OiA8QVhXZWJBcmVhPgotQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwp
Ci1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYV2ViQXJlYT4KLUFYRW5kVGV4dE1hcmtlcjogPEFYV2Vi
QXJlYT4KLUFYVmlzaXRlZDogMAotQVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAw
PgotQVhTZWxlY3RlZDogMAotQVhCbG9ja1F1b3RlTGV2ZWw6IDAKLUFYVG9wTGV2ZWxVSUVsZW1l
bnQ6IDxBWFdlYkFyZWE+Ci1BWExhbmd1YWdlOgotQVhET01JZGVudGlmaWVyOgotQVhET01DbGFz
c0xpc3Q6IDxhcnJheSBvZiBzaXplIDA+Ci1BWExpbmtVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6
ZSAwPgotQVhMb2FkZWQ6IDEKLUFYTGF5b3V0Q291bnQ6IDIKLUFYTG9hZGluZ1Byb2dyZXNzOiAx
Ci1BWFVSTDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwKLUFY
Q2FyZXRCcm93c2luZ0VuYWJsZWQ6IDAKLUFYUHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRj
aDogMAotQVhXZWJTZXNzaW9uSUQ6IDIKLUFYRWxlbWVudEJ1c3k6IDAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450085</attachid>
            <date>2022-01-26 17:00:14 -0800</date>
            <delta_ts>2022-01-26 17:03:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235646-20220126190013.patch</filename>
            <type>text/plain</type>
            <size>31325</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVkNDQ2YjQ0OGI5ZjIz
YmExZmNmMDI2MzVkYTcyYmUwMTVjMTlkZi4uNTFkZDg1YzNkMWNiZjQ0ZWY0NmNjYzIwZjEyMTcw
ZTM1NzFmZmQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIyLTAxLTI2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSVRNOiBEZWZlciB0
byB0aGUgdHJlZSB3aGVuIGRldGVybWluaW5nIEFYIG9iamVjdCBsb2FkaW5nIHByb2dyZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2NDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHks
IHdlIHNldCBBWFByb3BlcnR5TmFtZTo6SXNMb2FkZWQgYW5kIEFYUHJvcGVydHlOYW1lOjpFc3Rp
bWF0ZWRMb2FkaW5nUHJvZ3Jlc3MKKyAgICAgICAgb25jZSBpbiBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YSBhbmQgbmV2ZXIgdXBkYXRlIGl0LiBUaGlzIG1lYW5zIHRo
YXQKKyAgICAgICAgaWYgYW4gb2JqZWN0IGlzIGNyZWF0ZWQgd2hpbGUgdGhlIHBhZ2UgaXMgYXQg
c29tZSBub24tMTAwJSBsb2FkIHBlcmNlbnRhZ2UsIEFYIGNsaWVudHMKKyAgICAgICAgdGhhdCBy
ZXF1ZXN0IHRoZXNlIGF0dHJpYnV0ZXMgd2lsbCBhbHdheXMgdGhpbmsgdGhlIG9iamVjdCBpc24n
dCBsb2FkZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZXNlIHR3byBwcm9wZXJ0
aWVzIGFuZCBpbnN0ZWFkIGRlZmVycyB0byB0aGUgaXNvbGF0ZWQgdHJlZSBhc3NvY2lhdGVkCisg
ICAgICAgIHdpdGggZWFjaCBvYmplY3Qgd2hlbiBkZXRlcm1pbmluZyB0aGUgbG9hZCBwZXJjZW50
YWdlLiBCb3RoIG9mIHRoZXNlIHByb3BlcnRpZXMgd2VyZSBiYXNlZAorICAgICAgICBvbiB0aGUg
ZW50aXJlIHBhZ2UgLyBkb2N1bWVudCBsb2FkIHByb2dyZXNzIGFueXdheXMsIHNvIGl0IGRvZXNu
J3QgbWFrZSBzZW5zZSB0byBzZXQgdGhlCisgICAgICAgIHNhbWUgdmFsdWUgZm9yIGFsbCBvZiB0
aGVtLgorCisgICAgICAgIFdlIHRyYWNrIGxvYWRpbmcgcHJvZ3Jlc3MgYnkgY2hhbmdpbmcgUHJv
Z3Jlc3NUcmFja2VyIHRvIGFsc28gbm90aWZ5CisgICAgICAgIHRoZSBwYWdlIHdoZW4gcHJvZ3Jl
c3MgY2hhbmdlcywgd2hpY2ggaW4gdHVybiB1cGRhdGVzIHRoZSBhc3NvY2lhdGVkCisgICAgICAg
IEFYT2JqZWN0Q2FjaGUgd2l0aCB0aGUgbmV3IHByb2dyZXNzIHZhbHVlLgorCisgICAgICAgIENv
dmVyZWQgYnkgYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIHdoaWNo
IHZlcmlmaWVzIHRoZSBBWExvYWQgYW5kCisgICAgICAgIEFYTG9hZGluZ1Byb2dyZXNzIGF0dHJp
YnV0ZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6QVhPYmplY3RDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjp1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MpOgorICAgICAgICBB
ZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmxvYWRpbmdGaW5pc2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpsb2FkaW5nUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICBBZGRl
ZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bG9hZGluZ1Byb2dyZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVzdGlt
YXRlZExvYWRpbmdQcm9ncmVzcyBjb25zdCk6CisgICAgICAgIFJlbmFtZSBlc3RpbWF0ZWRMb2Fk
aW5nUHJvZ3Jlc3MgbWV0aG9kcyB0byBsb2FkaW5nUHJvZ3Jlc3MuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZFRyZWU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcyk6CisgICAgICAgIEFwcGx5IG1fcGVu
ZGluZ0VzdGltYXRlZExvYWRpbmdQcm9ncmVzcy4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZFRyZWU6OmxvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIEFkZGVkLgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6XSk6CisgICAgICAgIEhhbmRsZSByZW5hbWUgb2YgZXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzIG1ldGhvZHMgdG8gbG9hZGluZ1Byb2dyZXNzLgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVz
c1RyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjpQcm9ncmVz
c1RyYWNrZXIpOgorICAgICAgICBTdG9yZSBhIHJlZmVyZW5jZSB0byB0aGUgYXNzb2NpYXRlZCBw
YWdlIGluIG5ldyBtX3BhZ2UgbWVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFj
a2VyOjpwcm9ncmVzc1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2Vy
Ojpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1Ry
YWNrZXI6OmZpbmFsUHJvZ3Jlc3NDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVz
c1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKToKKyAgICAgICAgTm90aWZ5IHRoZSBQYWdlIHdo
ZW4gcHJvZ3Jlc3MgY2hhbmdlcyBvciBjb21wbGV0ZXMuCisgICAgICAgICogbG9hZGVyL1Byb2dy
ZXNzVHJhY2tlci5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnByb2dyZXNzRXN0aW1hdGVD
aGFuZ2VkIGNvbnN0KToKKyAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
cm9ncmVzc0ZpbmlzaGVkIGNvbnN0KToKKyAgICAgICAgQWRkZWQuCisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisKIDIwMjItMDEtMjUgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXZWJJRExdIFJlbW92ZSB0aGUgbm93LXVudXNlZCBbQ3VzdG9tRW5hYmxl
ZF0gZXh0ZW5kZWQgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcAppbmRleCAxMjRjZDllOTE5NWM0MWZlNGRhNDEzMmNjYmY1MGM1MDA2
MDYyNjNhLi40YmUyN2E0YWQ0M2NhYjAxZDE0YjdkODZhYTdkNjkzMzE2MTAzZmI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTg5LDYg
Kzg5LDcgQEAKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKICNpbmNsdWRlICJNYXRo
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tl
ci5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXR0YWNobWVudC5oIgog
I2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC0yMjQsNiArMjI1LDEzIEBAIEFYT2JqZWN0Q2Fj
aGU6OkFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9wZXJmb3JtQ2Fj
aGVVcGRhdGVUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1DYWNoZVVwZGF0ZVRp
bWVyRmlyZWQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIElmIGxv
YWRpbmcgY29tcGxldGVkIGJlZm9yZSB0aGUgY2FjaGUgd2FzIGNyZWF0ZWQsIGxvYWRpbmcgcHJv
Z3Jlc3Mgd2lsbCBoYXZlIGJlZW4gcmVzZXQgdG8gemVyby4KKyAgICAvLyBDb25zaWRlciBsb2Fk
aW5nIHByb2dyZXNzIHRvIGJlIDEwMCUgaW4gdGhpcyBjYXNlLgorICAgIGRvdWJsZSBsb2FkaW5n
UHJvZ3Jlc3MgPSBkb2N1bWVudC5wYWdlKCkgPyBkb2N1bWVudC5wYWdlKCktPnByb2dyZXNzKCku
ZXN0aW1hdGVkUHJvZ3Jlc3MoKSA6IDE7CisgICAgaWYgKGxvYWRpbmdQcm9ncmVzcyA8PSAwKQor
ICAgICAgICBsb2FkaW5nUHJvZ3Jlc3MgPSAxOworICAgIG1fbG9hZGluZ1Byb2dyZXNzID0gbG9h
ZGluZ1Byb2dyZXNzOwogfQogCiBBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSgpCkBAIC05
NzEsNiArOTc5LDIyIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlQ2FjaGVBZnRlck5vZGVJ
c0F0dGFjaGVkKE5vZGUqIG5vZGUpCiAgICAgZ2V0KG5vZGUpOwogfQogCit2b2lkIEFYT2JqZWN0
Q2FjaGU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhkb3VibGUgbmV3UHJvZ3Jlc3NWYWx1ZSkKK3sK
KyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UobmV3UHJvZ3Jlc3NWYWx1ZSA+PSAwICYmIG5ld1Byb2dyZXNzVmFsdWUgPD0gMSwg
InVuZXhwZWN0ZWQgbG9hZGluZyBwcm9ncmVzcyB2YWx1ZTogJWYiLCBuZXdQcm9ncmVzc1ZhbHVl
KTsKKyAgICBpZiAobV9wYWdlSUQpIHsKKyAgICAgICAgLy8gU29tZXRpbWVzIHRoZSBpc29sYXRl
ZCB0cmVlIGhhc24ndCBiZWVuIGNyZWF0ZWQgYnkgdGhlIHRpbWUgd2UgZ2V0IGxvYWRpbmcgcHJv
Z3Jlc3MgdXBkYXRlcywKKyAgICAgICAgLy8gc28gY2FjaGUgdGhpcyB2YWx1ZSBpbiB0aGUgQVhP
YmplY3RDYWNoZSB0b28gc28gd2UgY2FuIGdpdmUgaXQgdG8gdGhlIHRyZWUgdXBvbiBjcmVhdGlv
bi4KKyAgICAgICAgbV9sb2FkaW5nUHJvZ3Jlc3MgPSBuZXdQcm9ncmVzc1ZhbHVlOworICAgICAg
ICBpZiAoYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoKm1fcGFnZUlE
KSkKKyAgICAgICAgICAgIHRyZWUtPnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhuZXdQcm9ncmVzc1Zh
bHVlKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShuZXdQcm9ncmVzc1ZhbHVlKTsK
KyNlbmRpZgorfQorCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUNoaWxkcmVuQ2hhbmdlZChB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCiB7CiAgICAgLy8gSGFuZGxlIE1lbnVMaXN0cyBh
bmQgTWVudUxpc3RQb3B1cHMgYXMgc3BlY2lhbCBjYXNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggMjk4MGExZmI4YWFhOTFiNTdkNzFjNjJj
NmYyY2RkZGMyNDU5NjA5Zi4uODYyYzUyMmI4NGM0NGY5MzQyNGIwYmYzZTliMGVkZTQyMmU0MTU4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAg
LTE4Nyw2ICsxODcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja2VkU3RhdGVDaGFuZ2VkKE5v
ZGUqKTsKICAgICAvLyBDYWxsZWQgd2hlbiBhIG5vZGUgaGFzIGp1c3QgYmVlbiBhdHRhY2hlZCwg
c28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBzdWJjbGFzcyBvZiBBY2Nlc3Np
YmlsaXR5T2JqZWN0LgogICAgIHZvaWQgdXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVkKE5v
ZGUqKTsKKyAgICB2b2lkIHVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhkb3VibGUpOworICAgIHZvaWQg
bG9hZGluZ0ZpbmlzaGVkKCkgeyB1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MoMSk7IH0KKyAgICBkb3Vi
bGUgbG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkaW5nUHJvZ3Jlc3M7IH0K
IAogICAgIHZvaWQgZGVmZXJGb2N1c2VkVUlFbGVtZW50Q2hhbmdlSWZOZWVkZWQoTm9kZSogb2xk
Rm9jdXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWROb2RlKTsKICAgICB2b2lkIGRlZmVyTW9kYWxD
aGFuZ2UoRWxlbWVudCopOwpAQCAtNTIzLDYgKzUyNiw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PHN0ZDo6cGFpcjxOb2RlKiwgTm9kZSo+PiBtX2RlZmVycmVkRm9jdXNlZE5vZGVDaGFuZ2U7CiAg
ICAgYm9vbCBtX2lzU3luY2hyb25pemluZ1NlbGVjdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3BlcmZvcm1pbmdEZWZlcnJlZENhY2hlVXBkYXRlIHsgZmFsc2UgfTsKKyAgICBkb3VibGUgbV9s
b2FkaW5nUHJvZ3Jlc3MgeyAwLjI1IH07CiAKICNpZiBVU0UoQVRLKQogICAgIExpc3RIYXNoU2V0
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gbV9kZWZlcnJlZEF0dGFjaGVkV3JhcHBlck9i
amVjdExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCmluZGV4IDFjMDcwNzI5NWE3NGQ5MDE3YmRkZGVmZTQyZWRjNGM4OTdiMWNl
MWYuLjFhOTYzYTVkNjE2MTA2YTMwNjFlYjY2MGNhNGY1NDU4ZGNlMGE4ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0y
OTUsNyArMjk1LDcgQEAgcHVibGljOgogICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRUYWJJdGVt
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIEFYQ29yZU9iamVjdCogc2VsZWN0
ZWRMaXN0SXRlbSgpIG92ZXJyaWRlOwogICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KLSAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSBsb2FkaW5nUHJvZ3Jlc3Mo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgaXNBUklBQ29udHJvbChBY2Nlc3NpYmlsaXR5Um9sZSk7CiAgICAgYm9vbCBzdXBwb3J0
c0NoZWNrZWRTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aAppbmRleCBjNjU2ODAzOTBiYzQyMjJjMjA4ZGEwYzlmYTY2NDA5ZTg4NzRjN2FhLi4yMDRiMmI5
MWEyNTJiMDA2MjU2ZjhjNjIxNjcyZGUxZWZjNDM4YzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aApAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0
KiBzZWxlY3RlZFRhYkl0ZW0oKSA9IDA7CiAgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIHNlbGVj
dGVkTGlzdEl0ZW0oKSA9IDA7CiAgICAgdmlydHVhbCBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgZG91YmxlIGxvYWRpbmdQcm9ncmVzcygpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIFN0cmluZyBicmFpbGxlTGFiZWwoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBT
dHJpbmcgYnJhaWxsZVJvbGVEZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0
cmluZyBlbWJlZGRlZEltYWdlRGVzY3JpcHRpb24oKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcAppbmRleCA0OTg4NmU1ZDg4ODBkOGE4ZWQyNzRjMmZiZTEwMzE2OWE5OGY1M2IyLi5lZmMx
NWM2OTQ1MjhkMmQ5MzM2ZjhjZWFiNzBkZmY5ZDBjMGViMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKQEAgLTE1MzYsNyArMTUzNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNMb2FkZWQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmVyID8gIW1fcmVuZGVyZXItPmRv
Y3VtZW50KCkucGFyc2VyKCkgOiBmYWxzZTsKIH0KIAotZG91YmxlIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0Citkb3VibGUgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCA1OTVm
MGE2ZDM4NzBhY2M5YjFhYTg3OTI3Y2U0MmYyOGQ3ZTg1Y2FkLi45MGUzOTkxYzI1NTM3MGY5OTc2
MGMwYjViODdiZGZjZmUzYjllNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtODMsNyArODMsNyBA
QCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWZhdWx0T2JqZWN0
SW5jbHVzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgaW50IGxheW91dENvdW50KCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNv
bnN0IG92ZXJyaWRlOworICAgIGRvdWJsZSBsb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlk
ZTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGFzdENoaWxkKCkgY29uc3Qgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IGVjZjgxOGIxYTZiMTYyNzI3MDM4
MGJjZTg4NmY5YTYwNGNmYTc3YWYuLjgyYzdjMWRjZjdkMmZiMjM4MmZjMDVjNjY4YzI4Njg4NDhi
YTMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0xMTAsNyArMTEwLDYgQEAg
dm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmpl
Y3QmIGNvcmVPYmplY3QsIGJvb2wgaXMKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
SXNMaW5rLCBvYmplY3QuaXNMaW5rKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpJc0xpbmtlZCwgb2JqZWN0LmlzTGlua2VkKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpJc0xpc3QsIG9iamVjdC5pc0xpc3QoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OklzTG9hZGVkLCBvYmplY3QuaXNMb2FkZWQoKSk7CiAgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OklzTWVkaWFUaW1lbGluZSwgb2JqZWN0LmlzTWVkaWFUaW1lbGluZSgp
KTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51LCBvYmplY3QuaXNNZW51
KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVCYXIsIG9iamVjdC5p
c01lbnVCYXIoKSk7CkBAIC0xNzEsNyArMTcwLDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIGNvcmVPYmplY3QsIGJvb2wgaXMK
ICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRSYWRpb0J1dHRv
biwgb2JqZWN0LnNlbGVjdGVkUmFkaW9CdXR0b24oKSk7CiAgICAgc2V0T2JqZWN0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSwgb2JqZWN0LnNlbGVjdGVkVGFiSXRlbSgp
KTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGF5b3V0Q291bnQsIG9iamVjdC5s
YXlvdXRDb3VudCgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RXN0aW1hdGVk
TG9hZGluZ1Byb2dyZXNzLCBvYmplY3QuZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkpOwogICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zLCBvYmplY3Quc3Vw
cG9ydHNBUklBT3ducygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFzUG9w
dXAsIG9iamVjdC5oYXNQb3B1cCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
UG9wdXBWYWx1ZSwgb2JqZWN0LnBvcHVwVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmgKaW5kZXggYzhlZmIyZjhjMTRhZDQ1ZDFkYmIzODM5ZWI5NWMwNDZmMGVm
N2Q5Ni4uOTgwMDY5OTQ5ZDI1Mzg5OTVlY2Q2YjYwM2ExZjA0MmY5MDAxMjEwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuaApAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAgQVhDb3Jl
T2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkUmFkaW9CdXR0b24pOyB9CiAgICAg
QVhDb3JlT2JqZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRUYWJJdGVtKTsgfQogICAgIGlu
dCBsYXlvdXRDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpMYXlvdXRDb3VudCk7IH0KLSAgICBkb3VibGUgZXN0aW1hdGVkTG9h
ZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZG91YmxlQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OkVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyk7IH0KKyAgICBkb3Vi
bGUgbG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5sb2Fk
aW5nUHJvZ3Jlc3MoKTsgfQogICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNB
UklBT3ducyk7IH0KICAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5l
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKTsgfQogICAgIHZvaWQg
YXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJl
bikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6QVJJQUNvbnRyb2xzRWxlbWVudHMsIGNoaWxkcmVuKTsgfQpAQCAtNTEzLDcgKzUx
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIGlzSG92ZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNJbmRl
dGVybWluYXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNMb2Fk
ZWQpOyB9CisgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGxvYWRp
bmdQcm9ncmVzcygpID49IDE7IH0KICAgICBib29sIGlzT25TY3JlZW4oKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1By
ZXNzZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA2NTQ5
ZGJiOWJlNWZhODUwMTI5MmY2NTY4MmM3MDBlN2RhNzJhMGRiLi5kMjQ5MTM0ZjQwOGM4OWI4Yjhi
OGQyOWY5MmU2ZTAyYWU5NjczMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBAIC0xMTgs
NiArMTE4LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKEFY
T2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCiAgICAgQVNTRVJUKCF0cmVlUGFnZUNhY2hlKCku
Y29udGFpbnMoKnBhZ2VJRCkpOwogICAgIHRyZWVQYWdlQ2FjaGUoKS5zZXQoKnBhZ2VJRCwgdHJl
ZS5jb3B5UmVmKCkpOwogICAgIHRyZWVJRENhY2hlKCkuc2V0KHRyZWUtPnRyZWVJRCgpLCB0cmVl
LmNvcHlSZWYoKSk7CisgICAgdHJlZS0+dXBkYXRlTG9hZGluZ1Byb2dyZXNzKGF4T2JqZWN0Q2Fj
aGUtPmxvYWRpbmdQcm9ncmVzcygpKTsKIAogICAgIHJldHVybiB0cmVlOwogfQpAQCAtNDM5LDYg
KzQ0MCwxNiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlEKEFYSUQgYXhJ
RCkKICAgICBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5nZXMuYXBwZW5kKHsgYXhJRCwgcHJvcGVydHlN
YXAgfSk7CiB9CiAKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhk
b3VibGUgbmV3UHJvZ3Jlc3NWYWx1ZSkKK3sKKyAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6
dXBkYXRlTG9hZGluZ1Byb2dyZXNzIik7CisgICAgQVhMT0cobWFrZVN0cmluZygiUXVldWVpbmcg
bG9hZGluZyBwcm9ncmVzcyB1cGRhdGUgdG8gIiwgbmV3UHJvZ3Jlc3NWYWx1ZSwgIiBmb3IgdHJl
ZUlEICIsIHRyZWVJRCgpKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBtX3BlbmRpbmdMb2FkaW5nUHJv
Z3Jlc3MgPSBuZXdQcm9ncmVzc1ZhbHVlOworfQorCiB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1v
dmVOb2RlKEFYSUQgYXhJRCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6cmVtb3Zl
Tm9kZSIpOwpAQCAtNDg0LDYgKzQ5NSw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVu
ZGluZ0NoYW5nZXMoKQogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9Owog
CisgICAgbV9sb2FkaW5nUHJvZ3Jlc3MgPSBtX3BlbmRpbmdMb2FkaW5nUHJvZ3Jlc3M7CisKICAg
ICBpZiAobV9wZW5kaW5nRm9jdXNlZE5vZGVJRCAhPSBtX2ZvY3VzZWROb2RlSUQpIHsKICAgICAg
ICAgQVhMT0cobWFrZVN0cmluZygiZm9jdXNlZE5vZGVJRCAiLCBtX2ZvY3VzZWROb2RlSUQubG9n
Z2luZ1N0cmluZygpLCAiIHBlbmRpbmdGb2N1c2VkTm9kZUlEICIsIG1fcGVuZGluZ0ZvY3VzZWRO
b2RlSUQubG9nZ2luZ1N0cmluZygpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IDIwYTRk
MWM4NzM2YzA1MDQ4ZWFjMzM2YTNmMjNmODE3MzhjN2ViYjQuLjc3YzE1NTg0YjM1MDAyODBmM2My
NzVjM2U1ZmNmNWQ5ZDM2YzA4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMTExLDcgKzEx
MSw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgRWRpdGFi
bGVBbmNlc3RvciwKICAgICBFbGVtZW50UmVjdCwKICAgICBFbWJlZGRlZEltYWdlRGVzY3JpcHRp
b24sCi0gICAgRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzLAogICAgIEV4cGFuZGVkVGV4dFZhbHVl
LAogICAgIEZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpdGxlLAogICAgIEZvY3VzYWJs
ZUFuY2VzdG9yLApAQCAtMTY4LDcgKzE2Nyw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUg
OiB1aW50MTZfdCB7CiAgICAgSXNMaW5rZWQsCiAgICAgSXNMaXN0LAogICAgIElzTGlzdEJveCwK
LSAgICBJc0xvYWRlZCwKICAgICBJc01hdGhFbGVtZW50LAogICAgIElzTWF0aEZyYWN0aW9uLAog
ICAgIElzTWF0aEZlbmNlZCwKQEAgLTM2MSw2ICszNTksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1
cGRhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYpOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW4oQVhD
b3JlT2JqZWN0Jik7CiAKKyAgICBkb3VibGUgbG9hZGluZ1Byb2dyZXNzKCkgeyByZXR1cm4gbV9s
b2FkaW5nUHJvZ3Jlc3M7IH0KKyAgICB2b2lkIHVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhkb3VibGUp
OworCiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBsZWF2aW5nIGFsbCBkZXNjZW5kYW50
cyBhbG9uZS4KICAgICB2b2lkIHJlbW92ZU5vZGUoQVhJRCk7CiAgICAgLy8gUmVtb3ZlcyB0aGUg
Z2l2ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cy4KQEAgLTQxMSw2ICs0MTIsOCBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgVmVjdG9yPEFYSUQ+Pj4gbV9wZW5k
aW5nQ2hpbGRyZW5VcGRhdGVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsK
ICAgICBBWElEIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQgV1RGX0dVQVJERURfQllfTE9DSyhtX2No
YW5nZUxvZ0xvY2spOwogICAgIEFYSUQgbV9mb2N1c2VkTm9kZUlEOworICAgIGRvdWJsZSBtX3Bl
bmRpbmdMb2FkaW5nUHJvZ3Jlc3MgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2sp
IHsgMC4yNSB9OworICAgIGRvdWJsZSBtX2xvYWRpbmdQcm9ncmVzcyB7IDAuMjUgfTsKICAgICBM
b2NrIG1fY2hhbmdlTG9nTG9jazsKIAogICAgIGJvb2wgbV9jcmVhdGluZ1N1YnRyZWUgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAxMWM0Yjlk
Y2M4ODdmZjRmYWQ1NWE1MjRkMTBjNTg2ZWE2YjcyNjE0Li5lYTA2MTZlOTA3Y2Q2MWNiZjY2Yzk5
NzYxNTczYThjODJiZTA1YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQpAQCAtMjAzMyw3ICsyMDMzLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExh
eW91dENvdW50Il0pCiAgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5sYXlvdXRD
b3VudCgpKTsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlMb2FkaW5nUHJvZ3Jlc3NBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJu
IEAoYmFja2luZ09iamVjdC0+ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkpOworICAgICAgICAg
ICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+bG9hZGluZ1Byb2dyZXNzKCkpOwogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVByZXZlbnRL
ZXlib2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdKQogICAgICAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDpiYWNraW5nT2JqZWN0LT5wcmV2ZW50S2V5Ym9hcmRET01F
dmVudERpc3BhdGNoKCldOwogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlXSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZmE4NGMzNjZjNjMxNzVm
OWZiNDczMGViODVjNDY3N2ZjM2Q2MzY4Zi4uYTJjNmQ3MmI1YmEwZjA0YTQ5Y2E2ZGM3MTBlZjZm
YTVlMDEyNWMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJh
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAK
QEAgLTc1LDggKzc1LDkgQEAgcHVibGljOgogICAgIGxvbmcgbG9uZyBlc3RpbWF0ZWRMZW5ndGg7
CiB9OwogCi1Qcm9ncmVzc1RyYWNrZXI6OlByb2dyZXNzVHJhY2tlcihVbmlxdWVSZWY8UHJvZ3Jl
c3NUcmFja2VyQ2xpZW50PiYmIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KFdURk1vdmUoY2xpZW50
KSkKK1Byb2dyZXNzVHJhY2tlcjo6UHJvZ3Jlc3NUcmFja2VyKFBhZ2UmIHBhZ2UsIFVuaXF1ZVJl
ZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgY2xpZW50KQorICAgIDogbV9wYWdlKHBhZ2UpCisg
ICAgLCBtX2NsaWVudChXVEZNb3ZlKGNsaWVudCkpCiAgICAgLCBtX3Byb2dyZXNzSGVhcnRiZWF0
VGltZXIoKnRoaXMsICZQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzSGVhcnRiZWF0VGltZXJGaXJl
ZCkKIHsKIH0KQEAgLTEyOSw2ICsxMzAsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jl
c3NTdGFydGVkKEZyYW1lJiBmcmFtZSkKICAgICAgICAgbV9pc01haW5Mb2FkID0gaXNNYWluRnJh
bWUgfHwgZWxhcHNlZFRpbWVTaW5jZU1haW5Mb2FkQ29tcGxldGUgPCBzdWJmcmFtZVBhcnRPZk1h
aW5Mb2FkVGhyZXNob2xkOwogCiAgICAgICAgIG1fY2xpZW50LT5wcm9ncmVzc1N0YXJ0ZWQoKm1f
b3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lKTsKKyAgICAgICAgbV9wYWdlLnByb2dyZXNzRXN0aW1h
dGVDaGFuZ2VkKCptX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSk7CiAgICAgfQogICAgIG1fbnVt
UHJvZ3Jlc3NUcmFja2VkRnJhbWVzKys7CiAKQEAgLTEzOCw2ICsxNDAsMTIgQEAgdm9pZCBQcm9n
cmVzc1RyYWNrZXI6OnByb2dyZXNzU3RhcnRlZChGcmFtZSYgZnJhbWUpCiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmcmFtZVN0YXJ0ZWRMb2FkaW5nKGZyYW1lKTsKIH0KIAordm9pZCBQ
cm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKEZyYW1lJiBmcmFtZSkKK3sK
KyAgICBtX2NsaWVudC0+cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoZnJhbWUpOworICAgIG1fcGFn
ZS5wcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChmcmFtZSk7Cit9CisKIHZvaWQgUHJvZ3Jlc3NUcmFj
a2VyOjpwcm9ncmVzc0NvbXBsZXRlZChGcmFtZSYgZnJhbWUpCiB7CiAgICAgTE9HKFByb2dyZXNz
LCAiUHJvZ3Jlc3MgY29tcGxldGVkICglcCkgLSBmcmFtZSAlcChcIiVzXCIpLCB2YWx1ZSAlZiwg
dHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwIiwgdGhpcywgJmZyYW1lLCBm
cmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fcHJvZ3Jl
c3NWYWx1ZSwgbV9udW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMsIG1fb3JpZ2luYXRpbmdQcm9ncmVz
c0ZyYW1lLmdldCgpKTsKQEAgLTE2Niw3ICsxNzQsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6
ZmluYWxQcm9ncmVzc0NvbXBsZXRlKCkKICAgICAvLyB3aXRoIGZpbmFsIHByb2dyZXNzIHZhbHVl
LgogICAgIGlmICghbV9maW5hbFByb2dyZXNzQ2hhbmdlZFNlbnQpIHsKICAgICAgICAgbV9wcm9n
cmVzc1ZhbHVlID0gMTsKLSAgICAgICAgbV9jbGllbnQtPnByb2dyZXNzRXN0aW1hdGVDaGFuZ2Vk
KCpmcmFtZSk7CisgICAgICAgIHByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKCpmcmFtZSk7CiAgICAg
fQogCiAgICAgcmVzZXQoKTsKQEAgLTE3Niw2ICsxODQsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tl
cjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKCkKIAogICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5zZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KHRydWUpOwogICAgIG1fY2xpZW50LT5wcm9ncmVz
c0ZpbmlzaGVkKCpmcmFtZSk7CisgICAgbV9wYWdlLnByb2dyZXNzRmluaXNoZWQoKmZyYW1lKTsK
ICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZFByb2dyZXNzaW5nU3RhdHVzQ2hhbmdlZCgpOwogCiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVN0b3BwZWRMb2FkaW5nKCpmcmFtZSk7
CkBAIC0yNTQsNyArMjYzLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dy
ZXNzKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnMKICAgICAgICAgICAg
IGlmIChtX3Byb2dyZXNzVmFsdWUgPT0gMSkKICAgICAgICAgICAgICAgICBtX2ZpbmFsUHJvZ3Jl
c3NDaGFuZ2VkU2VudCA9IHRydWU7CiAKLSAgICAgICAgICAgIG1fY2xpZW50LT5wcm9ncmVzc0Vz
dGltYXRlQ2hhbmdlZCgqZnJhbWUpOworICAgICAgICAgICAgcHJvZ3Jlc3NFc3RpbWF0ZUNoYW5n
ZWQoKmZyYW1lKTsKIAogICAgICAgICAgICAgbV9sYXN0Tm90aWZpZWRQcm9ncmVzc1ZhbHVlID0g
bV9wcm9ncmVzc1ZhbHVlOwogICAgICAgICAgICAgbV9sYXN0Tm90aWZpZWRQcm9ncmVzc1RpbWUg
PSBub3c7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgKaW5kZXggYzBkMjFl
NmU2MzdlODMxNTE3NTY1OWQ3NGEyYjUzZWRmNzgxYTk3ZC4uYjNhYWIyYTk4N2YxMjA1NWNiZGU1
YzcxZTVlYzNhZGEyZWM1YzU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
b2dyZXNzVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNr
ZXIuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBQcm9ncmVzc1RyYWNrZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFByb2dyZXNzVHJhY2tlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUHJvZ3Jlc3NUcmFja2VyKFVuaXF1ZVJlZjxQ
cm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYpOworICAgIGV4cGxpY2l0IFByb2dyZXNzVHJhY2tlcihQ
YWdlJiwgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJik7CiAgICAgflByb2dyZXNz
VHJhY2tlcigpOwogCiAgICAgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50JiBjbGllbnQoKSB7IHJldHVy
biBtX2NsaWVudC5nZXQoKTsgfQpAQCAtNjYsOSArNjYsMTEgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBmaW5hbFByb2dyZXNzQ29tcGxldGUoKTsKKyAg
ICB2b2lkIHByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKEZyYW1lJik7CiAKICAgICB2b2lkIHByb2dy
ZXNzSGVhcnRiZWF0VGltZXJGaXJlZCgpOwogCisgICAgUGFnZSYgbV9wYWdlOwogICAgIFVuaXF1
ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+IG1fY2xpZW50OwogICAgIFJlZlB0cjxGcmFtZT4g
bV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWU7CiAgICAgSGFzaE1hcDxSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmVzc0l0ZW0+PiBtX3Byb2dyZXNzSXRlbXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCBjODgxYjI2YmEyOGRkNTg3ZTE3ZjhlYjM4OWQ0MjUwYjQw
ODkxZmY3Li41ODBkYTExNzIzZGNmNjZmMzBjZmY3YTNjYjU4ODUzYjdiZWZlNWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudC5oIgogI2luY2x1ZGUgIkRpYWdub3N0aWNMb2dnaW5nS2V5cy5oIgogI2luY2x1ZGUg
IkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudElubGlu
ZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmUuaCIKQEAgLTI3NCw3
ICsyNzUsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRp
b24pCiAgICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihtYWtlVW5pcXVlPFBvaW50ZXJMb2Nr
Q29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3NldHRpbmdzKFNldHRpbmdzOjpj
cmVhdGUodGhpcykpCi0gICAgLCBtX3Byb2dyZXNzKG1ha2VVbmlxdWU8UHJvZ3Jlc3NUcmFja2Vy
PihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCkpKQorICAg
ICwgbV9wcm9ncmVzcyhtYWtlVW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnRoaXMsIFdURk1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkpCiAgICAgLCBtX2JhY2tG
b3J3YXJkQ29udHJvbGxlcihtYWtlVW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMs
IFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkKICAgICAsIG1f
bWFpbkZyYW1lKEZyYW1lOjpjcmVhdGUodGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUpKSkKICAgICAsIG1fZWRpdG9yQ2xpZW50
KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50KSkKQEAgLTU4Myw2ICs1ODQs
MjIgQEAgdm9pZCBQYWdlOjpzZXR0aW5nc0RpZENoYW5nZSgpCiAjZW5kaWYKIH0KIAordm9pZCBQ
YWdlOjpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChGcmFtZSYgZnJhbWVXaXRoUHJvZ3Jlc3NVcGRh
dGUpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWVXaXRoUHJvZ3Jlc3NV
cGRhdGUuZG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoYXV0byogYXhPYmplY3RDYWNoZSA9IGRv
Y3VtZW50LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgICAgIGF4T2JqZWN0Q2Fj
aGUtPnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhwcm9ncmVzcygpLmVzdGltYXRlZFByb2dyZXNzKCkp
OworICAgIH0KK30KKwordm9pZCBQYWdlOjpwcm9ncmVzc0ZpbmlzaGVkKEZyYW1lJiBmcmFtZVdp
dGhDb21wbGV0ZWRQcm9ncmVzcykgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBm
cmFtZVdpdGhDb21wbGV0ZWRQcm9ncmVzcy5kb2N1bWVudCgpKSB7CisgICAgICAgIGlmIChhdXRv
KiBheE9iamVjdENhY2hlID0gZG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAg
ICAgICAgICAgYXhPYmplY3RDYWNoZS0+bG9hZGluZ0ZpbmlzaGVkKCk7CisgICAgfQorfQorCiBi
b29sIFBhZ2U6Om9wZW5lZEJ5RE9NKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9vcGVuZWRCeURP
TTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKaW5kZXggYmU3ZjgxMzkwNDgyYWI5MTg1YjIwMTY4OWNkMjQ5MTY1ZTU1
MWZkZi4uOTgyMDljMWUwMGRhY2QyODgxMWU1ODgxZWEzNjE4ZjAxYTk3ODI2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKQEAgLTM2MSw2ICszNjEsOCBAQCBwdWJsaWM6CiAKICAgICBTZXR0aW5ncyYgc2V0dGlu
Z3MoKSBjb25zdCB7IHJldHVybiAqbV9zZXR0aW5nczsgfQogICAgIFByb2dyZXNzVHJhY2tlciYg
cHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiAqbV9wcm9ncmVzczsgfQorICAgIHZvaWQgcHJvZ3Jl
c3NFc3RpbWF0ZUNoYW5nZWQoRnJhbWUmKSBjb25zdDsKKyAgICB2b2lkIHByb2dyZXNzRmluaXNo
ZWQoRnJhbWUmKSBjb25zdDsKICAgICBCYWNrRm9yd2FyZENvbnRyb2xsZXImIGJhY2tGb3J3YXJk
KCkgY29uc3QgeyByZXR1cm4gKm1fYmFja0ZvcndhcmRDb250cm9sbGVyOyB9CiAKICAgICBTZWNv
bmRzIGRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoKSBjb25zdCB7IHJldHVybiBtX2RvbVRpbWVy
QWxpZ25tZW50SW50ZXJ2YWw7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MjFkM2FiYWU1MjAxMzFhNWNjOTE0ZjVkMGI3
MmFmNTg0Yjk2MzRlLi4wNDc1ZDJkNjhiZmNhYzRmZTI0MGExMTUyOGU3YmM1MzZhMWQ5ZjI4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDEtMjYgIFR5bGVyIFdpbGNvY2sgIDx0eWxlcl93
QGFwcGxlLmNvbT4KKworICAgICAgICBBWCBJVE06IERlZmVyIHRvIHRoZSB0cmVlIHdoZW4gZGV0
ZXJtaW5pbmcgQVggb2JqZWN0IGxvYWRpbmcgcHJvZ3Jlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTY0NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQt
YXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgIEFzc29jaWF0ZWQgdGVzdCBub3cgdXNl
cyBqcy10ZXN0LmpzLCBzbyBtb2RpZnkgZXhwZWN0YXRpb25zIHRvIGluY2x1ZGUKKyAgICAgICAg
anMtdGVzdCBvdXRwdXQgKGUuZy4gdGVzdCBkZXNjcmlwdGlvbigpKS4KKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLmh0bWw6CisgICAgICAgIFdhaXQgYXN5
bmNocm9ub3VzbHkgZm9yIGxvYWRpbmcgdG8gY29tcGxldGUgKCJBWExvYWRlZDogMSIpLgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1sOgorICAgICAgICBEb24ndCBv
dXRwdXQgYWxsIGF0dHJpYnV0ZXMsIHNpbmNlIGl0J3Mgbm90IG5lY2Vzc2FyeSBmb3IgdGhlIHB1
cnBvc2UKKyAgICAgICAgb2YgdGhlIHRlc3QgKHdoaWNoIGlzIHRvIGVuc3VyZSBjYWxsaW5nIGFs
bEF0dHJpYnV0ZXMoKSBpbiB0aGlzCisgICAgICAgIHNjZW5hcmlvIGRvZXNuJ3QgY2F1c2UgYSBj
cmFzaCkuIFByZXZpb3VzbHksIHRoZSB0ZXN0IG91dHB1dCBjb250YWluZWQKKyAgICAgICAgbG9h
ZGluZyBBWCBhdHRyaWJ1dGVzLCBzbyByYXRoZXIgdGhhbiBtYWtpbmcgdGhpcyB0ZXN0IHdhaXQg
Zm9yCisgICAgICAgIGxvYWRpbmcgdG8gY29tcGxldGUgSSBkZWNpZGVkIHRvIHJlbW92ZSB0aGUg
b3V0cHV0IGFsbCB0b2dldGhlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wMS0yNSAgQWRpdHlhIEtlZXJ0
aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBpbnB1dC1zZWN1cml0
eSBDU1MgcHJvcGVydHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L2RvY3VtZW50LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKaW5kZXggOTEyM2IzMDhj
ZWNiNGYxN2MxMGY5N2QxMWU4ODE2YzljNzYyOWRmMi4uNWU5Y2Q2OTAzY2JhYTNkYmQ5NjNmNGUx
YTcyYzQ2NzI4MTgwOTMwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTEsOSAr
MSwxNCBAQAorVGhpcyB0ZXN0IHByb3ZpZGVzIGEgYmFzZSBzbmFwc2hvdCBvZiB0aGUgcm9vdCB3
ZWIgYXJlYSdzIGF0dHJpYnV0ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBB
WEhhc0RvY3VtZW50Um9sZUFuY2VzdG9yOiAwCiBBWEhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3I6
IDAKIEFYUm9sZTogQVhXZWJBcmVhCiBBWFJvbGVEZXNjcmlwdGlvbjogSFRNTCBjb250ZW50Ci1B
WENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhDaGlsZHJlbkluTmF2aWdhdGlvbk9yZGVy
OiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgMj4KK0FYQ2hp
bGRyZW5Jbk5hdmlnYXRpb25PcmRlcjogPGFycmF5IG9mIHNpemUgMj4KIEFYSGVscDoKIEFYUGFy
ZW50OiA8QVhXZWJBcmVhPgogQVhTaXplOiBOU1NpemU6IHs4MDAsIDYwMH0KQEAgLTM0LDQgKzM5
LDcgQEAgQVhQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoOiAwCiBBWFdlYlNlc3Npb25J
RDogMgogQVhFbGVtZW50QnVzeTogMAogCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sCmluZGV4IDZiMjI5OTE0ZmMyMjZlOGZjYzJi
MDllNzljZjc4Nzk4ZDc4MWFiNjIuLmY2MGQ4ZjJjZTQxMzg3MTdiNjc1ZGFhYWI3MzU5NTA2MWEy
NmIwYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50
LWF0dHJpYnV0ZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1
bWVudC1hdHRyaWJ1dGVzLmh0bWwKQEAgLTEsMjQgKzEsMzAgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKwogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcHJv
dmlkZXMgYSBiYXNlIHNuYXBzaG90IG9mIHRoZSByb290IHdlYiBhcmVhJ3MgYXR0cmlidXRlcy4i
KTsKIAotICAgIHZhciBsb2cgPSBmdW5jdGlvbihtc2cpCi0gICAgewotICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1zZyArICJcbiIpKTsKLSAgICB9CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcikgeworICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAg
ICBvbmxvYWQgPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKQotICAgICAgICAgICAgbG9nKGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50LmFsbEF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlIHRvIHJ1bi4iKQorICAg
ICAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbGV0IGFsbEF0
dHJpYnV0ZXM7CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBpZiAoIWFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50KQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYWxsQXR0cmlidXRl
cyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmFsbEF0dHJpYnV0ZXMo
KTsKKyAgICAgICAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgcGFnZSB0byBiZSBmdWxseSBsb2Fk
ZWQuCisgICAgICAgICAgICAgICAgcmV0dXJuIGFsbEF0dHJpYnV0ZXMuaW5jbHVkZXMoIkFYTG9h
ZGVkOiAxIik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRlYnVnRXNjYXBlZChhbGxB
dHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCAwKTsK
ICAgICB9CiA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHByZSBpZD0iY29uc29sZSI+PC9w
cmU+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L3BhcmVudC1kZWxldGUuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50
LWRlbGV0ZS5odG1sCmluZGV4IDRkN2M1ZTI4MTQwZTQzN2IwNzQ4YzRhNzBjZmI1YmQxNjZlYzlm
ZTcuLmI5ZDU4MDYxOWQ5MDY3ZTE5MThmMjhlMjJjYTZjNWFhOTVhZDQ2M2UgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1sCkBAIC0xLDI3ICsxLDIyIEBA
CiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQogZnVuY3Rpb24gcnVuVGVzdCgpIHsK
LSAgICB2YXIgYWNjZXNzaWJpbGl0eUVsZW1lbnQ7Ci0gICAgewotICAgICAgICB2YXIgb3V0ZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0ZXIiKTsKLSAgICAgICAgdmFyIGlubmVyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlubmVyIik7Ci0gICAgICAgIHZhciBlZGl0YWJsZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0YWJsZSIpOwotICAgICAgICB2YXIgcmVzdWx0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwotICAgICAgICBlZGl0YWJsZS5m
b2N1cygpOwotICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0g
ICAgICAgICAgICB2YXIgYWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgfQotICAgICAgICBpbm5lci5yZW1vdmVDaGls
ZChlZGl0YWJsZSk7Ci0gICAgICAgIG91dGVyLnJlbW92ZUNoaWxkKGlubmVyKTsKLSAgICB9Ci0g
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgICAgICByZXN1bHQu
aW5uZXJUZXh0ID0gYWNjZXNzaWJpbGl0eUVsZW1lbnQuYWxsQXR0cmlidXRlcygpOwotICAgIH0K
KyAgICBjb25zdCBvdXRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRlciIpOworICAg
IGNvbnN0IGlubmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlubmVyIik7CisgICAgY29u
c3QgZWRpdGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdGFibGUiKTsKKyAgICBj
b25zdCByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgZWRp
dGFibGUuZm9jdXMoKTsKKyAgICBsZXQgYWNjZXNzaWJpbGl0eUVsZW1lbnQ7CisgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgYWNjZXNzaWJpbGl0eUVsZW1l
bnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBpbm5lci5y
ZW1vdmVDaGlsZChlZGl0YWJsZSk7CisgICAgb3V0ZXIucmVtb3ZlQ2hpbGQoaW5uZXIpOworICAg
IC8vIFRoaXMgc2hvdWxkIG5vdCBjYXVzZSBhIGNyYXNoLgorICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIGFjY2Vzc2liaWxpdHlFbGVtZW50LmFsbEF0dHJp
YnV0ZXMoKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVj
dGVkLnR4dAppbmRleCA4ZmM4YTI5YjY1N2RmNjRkOWZmYTlkNmI3MjBkMzhjNWUwMzUwN2Q1Li5i
MGI5MzQyMjc0MzU3NjAzNjZmMWEwYjE2MjkyNzg1OGJiNWQ1NTJmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQt
ZGVsZXRlLWV4cGVjdGVkLnR4dApAQCAtMSwzNyArMSw1IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIFRoaXMgdGVzdCBwYXNzZXMgaWYgdGhlcmUg
aXMgbm8gY3Jhc2guCi1BWEhhc0RvY3VtZW50Um9sZUFuY2VzdG9yOiAwCi1BWEhhc1dlYkFwcGxp
Y2F0aW9uQW5jZXN0b3I6IDAKLUFYUm9sZTogQVhXZWJBcmVhCi1BWFJvbGVEZXNjcmlwdGlvbjog
SFRNTCBjb250ZW50Ci1BWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAxPgotQVhDaGlsZHJlbklu
TmF2aWdhdGlvbk9yZGVyOiA8YXJyYXkgb2Ygc2l6ZSAxPgotQVhIZWxwOgotQVhQYXJlbnQ6IDxB
WFdlYkFyZWE+Ci1BWFNpemU6IE5TU2l6ZTogezgwMCwgNjAwfQotQVhUaXRsZToKLUFYRGVzY3Jp
cHRpb246Ci1BWFZhbHVlOgotQVhGb2N1c2VkOiAwCi1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8
QVhXZWJBcmVhPgotQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4
dE1hcmtlcjogPEFYV2ViQXJlYT4KLUFYRW5kVGV4dE1hcmtlcjogPEFYV2ViQXJlYT4KLUFYVmlz
aXRlZDogMAotQVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhTZWxlY3Rl
ZDogMAotQVhCbG9ja1F1b3RlTGV2ZWw6IDAKLUFYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWFdlYkFy
ZWE+Ci1BWExhbmd1YWdlOgotQVhET01JZGVudGlmaWVyOgotQVhET01DbGFzc0xpc3Q6IDxhcnJh
eSBvZiBzaXplIDA+Ci1BWExpbmtVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhMb2Fk
ZWQ6IDEKLUFYTGF5b3V0Q291bnQ6IDIKLUFYTG9hZGluZ1Byb2dyZXNzOiAxCi1BWFVSTDogTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwKLUFYQ2FyZXRCcm93c2lu
Z0VuYWJsZWQ6IDAKLUFYUHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaDogMAotQVhXZWJT
ZXNzaW9uSUQ6IDIKLUFYRWxlbWVudEJ1c3k6IDAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450086</attachid>
            <date>2022-01-26 17:04:03 -0800</date>
            <delta_ts>2022-01-27 08:52:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235646-20220126190402.patch</filename>
            <type>text/plain</type>
            <size>31316</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVkNDQ2YjQ0OGI5ZjIz
YmExZmNmMDI2MzVkYTcyYmUwMTVjMTlkZi4uNTFkZDg1YzNkMWNiZjQ0ZWY0NmNjYzIwZjEyMTcw
ZTM1NzFmZmQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIyLTAxLTI2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSVRNOiBEZWZlciB0
byB0aGUgdHJlZSB3aGVuIGRldGVybWluaW5nIEFYIG9iamVjdCBsb2FkaW5nIHByb2dyZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2NDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHks
IHdlIHNldCBBWFByb3BlcnR5TmFtZTo6SXNMb2FkZWQgYW5kIEFYUHJvcGVydHlOYW1lOjpFc3Rp
bWF0ZWRMb2FkaW5nUHJvZ3Jlc3MKKyAgICAgICAgb25jZSBpbiBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YSBhbmQgbmV2ZXIgdXBkYXRlIGl0LiBUaGlzIG1lYW5zIHRo
YXQKKyAgICAgICAgaWYgYW4gb2JqZWN0IGlzIGNyZWF0ZWQgd2hpbGUgdGhlIHBhZ2UgaXMgYXQg
c29tZSBub24tMTAwJSBsb2FkIHBlcmNlbnRhZ2UsIEFYIGNsaWVudHMKKyAgICAgICAgdGhhdCBy
ZXF1ZXN0IHRoZXNlIGF0dHJpYnV0ZXMgd2lsbCBhbHdheXMgdGhpbmsgdGhlIG9iamVjdCBpc24n
dCBsb2FkZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZXNlIHR3byBwcm9wZXJ0
aWVzIGFuZCBpbnN0ZWFkIGRlZmVycyB0byB0aGUgaXNvbGF0ZWQgdHJlZSBhc3NvY2lhdGVkCisg
ICAgICAgIHdpdGggZWFjaCBvYmplY3Qgd2hlbiBkZXRlcm1pbmluZyB0aGUgbG9hZCBwZXJjZW50
YWdlLiBCb3RoIG9mIHRoZXNlIHByb3BlcnRpZXMgd2VyZSBiYXNlZAorICAgICAgICBvbiB0aGUg
ZW50aXJlIHBhZ2UgLyBkb2N1bWVudCBsb2FkIHByb2dyZXNzIGFueXdheXMsIHNvIGl0IGRvZXNu
J3QgbWFrZSBzZW5zZSB0byBzZXQgdGhlCisgICAgICAgIHNhbWUgdmFsdWUgZm9yIGFsbCBvZiB0
aGVtLgorCisgICAgICAgIFdlIHRyYWNrIGxvYWRpbmcgcHJvZ3Jlc3MgYnkgY2hhbmdpbmcgUHJv
Z3Jlc3NUcmFja2VyIHRvIGFsc28gbm90aWZ5CisgICAgICAgIHRoZSBwYWdlIHdoZW4gcHJvZ3Jl
c3MgY2hhbmdlcywgd2hpY2ggaW4gdHVybiB1cGRhdGVzIHRoZSBhc3NvY2lhdGVkCisgICAgICAg
IEFYT2JqZWN0Q2FjaGUgd2l0aCB0aGUgbmV3IHByb2dyZXNzIHZhbHVlLgorCisgICAgICAgIENv
dmVyZWQgYnkgYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIHdoaWNo
IHZlcmlmaWVzIHRoZSBBWExvYWQgYW5kCisgICAgICAgIEFYTG9hZGluZ1Byb2dyZXNzIGF0dHJp
YnV0ZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6QVhPYmplY3RDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjp1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MpOgorICAgICAgICBB
ZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmxvYWRpbmdGaW5pc2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpsb2FkaW5nUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICBBZGRl
ZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bG9hZGluZ1Byb2dyZXNzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVzdGlt
YXRlZExvYWRpbmdQcm9ncmVzcyBjb25zdCk6CisgICAgICAgIFJlbmFtZSBlc3RpbWF0ZWRMb2Fk
aW5nUHJvZ3Jlc3MgbWV0aG9kcyB0byBsb2FkaW5nUHJvZ3Jlc3MuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZFRyZWU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcyk6CisgICAgICAgIEFwcGx5IG1fcGVu
ZGluZ0VzdGltYXRlZExvYWRpbmdQcm9ncmVzcy4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZFRyZWU6OmxvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIEFkZGVkLgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6XSk6CisgICAgICAgIEhhbmRsZSByZW5hbWUgb2YgZXN0aW1hdGVkTG9hZGluZ1Byb2dy
ZXNzIG1ldGhvZHMgdG8gbG9hZGluZ1Byb2dyZXNzLgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVz
c1RyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjpQcm9ncmVz
c1RyYWNrZXIpOgorICAgICAgICBTdG9yZSBhIHJlZmVyZW5jZSB0byB0aGUgYXNzb2NpYXRlZCBw
YWdlIGluIG5ldyBtX3BhZ2UgbWVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFj
a2VyOjpwcm9ncmVzc1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2Vy
Ojpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1Ry
YWNrZXI6OmZpbmFsUHJvZ3Jlc3NDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVz
c1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKToKKyAgICAgICAgTm90aWZ5IHRoZSBQYWdlIHdo
ZW4gcHJvZ3Jlc3MgY2hhbmdlcyBvciBjb21wbGV0ZXMuCisgICAgICAgICogbG9hZGVyL1Byb2dy
ZXNzVHJhY2tlci5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnByb2dyZXNzRXN0aW1hdGVD
aGFuZ2VkIGNvbnN0KToKKyAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
cm9ncmVzc0ZpbmlzaGVkIGNvbnN0KToKKyAgICAgICAgQWRkZWQuCisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisKIDIwMjItMDEtMjUgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXZWJJRExdIFJlbW92ZSB0aGUgbm93LXVudXNlZCBbQ3VzdG9tRW5hYmxl
ZF0gZXh0ZW5kZWQgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcAppbmRleCAxMjRjZDllOTE5NWM0MWZlNGRhNDEzMmNjYmY1MGM1MDA2
MDYyNjNhLi40YmUyN2E0YWQ0M2NhYjAxZDE0YjdkODZhYTdkNjkzMzE2MTAzZmI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTg5LDYg
Kzg5LDcgQEAKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKICNpbmNsdWRlICJNYXRo
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tl
ci5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXR0YWNobWVudC5oIgog
I2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC0yMjQsNiArMjI1LDEzIEBAIEFYT2JqZWN0Q2Fj
aGU6OkFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9wZXJmb3JtQ2Fj
aGVVcGRhdGVUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1DYWNoZVVwZGF0ZVRp
bWVyRmlyZWQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIElmIGxv
YWRpbmcgY29tcGxldGVkIGJlZm9yZSB0aGUgY2FjaGUgd2FzIGNyZWF0ZWQsIGxvYWRpbmcgcHJv
Z3Jlc3Mgd2lsbCBoYXZlIGJlZW4gcmVzZXQgdG8gemVyby4KKyAgICAvLyBDb25zaWRlciBsb2Fk
aW5nIHByb2dyZXNzIHRvIGJlIDEwMCUgaW4gdGhpcyBjYXNlLgorICAgIGRvdWJsZSBsb2FkaW5n
UHJvZ3Jlc3MgPSBkb2N1bWVudC5wYWdlKCkgPyBkb2N1bWVudC5wYWdlKCktPnByb2dyZXNzKCku
ZXN0aW1hdGVkUHJvZ3Jlc3MoKSA6IDE7CisgICAgaWYgKGxvYWRpbmdQcm9ncmVzcyA8PSAwKQor
ICAgICAgICBsb2FkaW5nUHJvZ3Jlc3MgPSAxOworICAgIG1fbG9hZGluZ1Byb2dyZXNzID0gbG9h
ZGluZ1Byb2dyZXNzOwogfQogCiBBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSgpCkBAIC05
NzEsNiArOTc5LDIyIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlQ2FjaGVBZnRlck5vZGVJ
c0F0dGFjaGVkKE5vZGUqIG5vZGUpCiAgICAgZ2V0KG5vZGUpOwogfQogCit2b2lkIEFYT2JqZWN0
Q2FjaGU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhkb3VibGUgbmV3UHJvZ3Jlc3NWYWx1ZSkKK3sK
KyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UobmV3UHJvZ3Jlc3NWYWx1ZSA+PSAwICYmIG5ld1Byb2dyZXNzVmFsdWUgPD0gMSwg
InVuZXhwZWN0ZWQgbG9hZGluZyBwcm9ncmVzcyB2YWx1ZTogJWYiLCBuZXdQcm9ncmVzc1ZhbHVl
KTsKKyAgICBpZiAobV9wYWdlSUQpIHsKKyAgICAgICAgLy8gU29tZXRpbWVzIHRoZSBpc29sYXRl
ZCB0cmVlIGhhc24ndCBiZWVuIGNyZWF0ZWQgYnkgdGhlIHRpbWUgd2UgZ2V0IGxvYWRpbmcgcHJv
Z3Jlc3MgdXBkYXRlcywKKyAgICAgICAgLy8gc28gY2FjaGUgdGhpcyB2YWx1ZSBpbiB0aGUgQVhP
YmplY3RDYWNoZSB0b28gc28gd2UgY2FuIGdpdmUgaXQgdG8gdGhlIHRyZWUgdXBvbiBjcmVhdGlv
bi4KKyAgICAgICAgbV9sb2FkaW5nUHJvZ3Jlc3MgPSBuZXdQcm9ncmVzc1ZhbHVlOworICAgICAg
ICBpZiAoYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoKm1fcGFnZUlE
KSkKKyAgICAgICAgICAgIHRyZWUtPnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhuZXdQcm9ncmVzc1Zh
bHVlKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShuZXdQcm9ncmVzc1ZhbHVlKTsK
KyNlbmRpZgorfQorCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUNoaWxkcmVuQ2hhbmdlZChB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCiB7CiAgICAgLy8gSGFuZGxlIE1lbnVMaXN0cyBh
bmQgTWVudUxpc3RQb3B1cHMgYXMgc3BlY2lhbCBjYXNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggMjk4MGExZmI4YWFhOTFiNTdkNzFjNjJj
NmYyY2RkZGMyNDU5NjA5Zi4uMWFlNWRmOTFmMDgxZWE1NDc4YjVhNTZhYWRmOWZiNmVjY2MxZDQ3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAg
LTE4Nyw2ICsxODcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja2VkU3RhdGVDaGFuZ2VkKE5v
ZGUqKTsKICAgICAvLyBDYWxsZWQgd2hlbiBhIG5vZGUgaGFzIGp1c3QgYmVlbiBhdHRhY2hlZCwg
c28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBzdWJjbGFzcyBvZiBBY2Nlc3Np
YmlsaXR5T2JqZWN0LgogICAgIHZvaWQgdXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVkKE5v
ZGUqKTsKKyAgICB2b2lkIHVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhkb3VibGUpOworICAgIHZvaWQg
bG9hZGluZ0ZpbmlzaGVkKCkgeyB1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MoMSk7IH0KKyAgICBkb3Vi
bGUgbG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkaW5nUHJvZ3Jlc3M7IH0K
IAogICAgIHZvaWQgZGVmZXJGb2N1c2VkVUlFbGVtZW50Q2hhbmdlSWZOZWVkZWQoTm9kZSogb2xk
Rm9jdXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWROb2RlKTsKICAgICB2b2lkIGRlZmVyTW9kYWxD
aGFuZ2UoRWxlbWVudCopOwpAQCAtNTIzLDYgKzUyNiw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PHN0ZDo6cGFpcjxOb2RlKiwgTm9kZSo+PiBtX2RlZmVycmVkRm9jdXNlZE5vZGVDaGFuZ2U7CiAg
ICAgYm9vbCBtX2lzU3luY2hyb25pemluZ1NlbGVjdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3BlcmZvcm1pbmdEZWZlcnJlZENhY2hlVXBkYXRlIHsgZmFsc2UgfTsKKyAgICBkb3VibGUgbV9s
b2FkaW5nUHJvZ3Jlc3MgeyAwIH07CiAKICNpZiBVU0UoQVRLKQogICAgIExpc3RIYXNoU2V0PFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gbV9kZWZlcnJlZEF0dGFjaGVkV3JhcHBlck9iamVj
dExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCmluZGV4IDFjMDcwNzI5NWE3NGQ5MDE3YmRkZGVmZTQyZWRjNGM4OTdiMWNlMWYu
LjFhOTYzYTVkNjE2MTA2YTMwNjFlYjY2MGNhNGY1NDU4ZGNlMGE4ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0yOTUs
NyArMjk1LDcgQEAgcHVibGljOgogICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRUYWJJdGVtKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRM
aXN0SXRlbSgpIG92ZXJyaWRlOwogICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KLSAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSBsb2FkaW5nUHJvZ3Jlc3MoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgaXNBUklBQ29udHJvbChBY2Nlc3NpYmlsaXR5Um9sZSk7CiAgICAgYm9vbCBzdXBwb3J0c0No
ZWNrZWRTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApp
bmRleCBjNjU2ODAzOTBiYzQyMjJjMjA4ZGEwYzlmYTY2NDA5ZTg4NzRjN2FhLi4yMDRiMmI5MWEy
NTJiMDA2MjU2ZjhjNjIxNjcyZGUxZWZjNDM4YzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApA
QCAtMTA0Nyw3ICsxMDQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBz
ZWxlY3RlZFRhYkl0ZW0oKSA9IDA7CiAgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIHNlbGVjdGVk
TGlzdEl0ZW0oKSA9IDA7CiAgICAgdmlydHVhbCBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgZG91YmxlIGxvYWRpbmdQcm9ncmVzcygpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFN0cmluZyBicmFpbGxlTGFiZWwoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJp
bmcgYnJhaWxsZVJvbGVEZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBlbWJlZGRlZEltYWdlRGVzY3JpcHRpb24oKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAppbmRleCA0OTg4NmU1ZDg4ODBkOGE4ZWQyNzRjMmZiZTEwMzE2OWE5OGY1M2IyLi5lZmMxNWM2
OTQ1MjhkMmQ5MzM2ZjhjZWFiNzBkZmY5ZDBjMGViMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTE1MzYsNyArMTUzNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNM
b2FkZWQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmVyID8gIW1fcmVuZGVyZXItPmRvY3Vt
ZW50KCkucGFyc2VyKCkgOiBmYWxzZTsKIH0KIAotZG91YmxlIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0Citkb3VibGUgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6bG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
cmVuZGVyZXIpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCA1OTVmMGE2
ZDM4NzBhY2M5YjFhYTg3OTI3Y2U0MmYyOGQ3ZTg1Y2FkLi45MGUzOTkxYzI1NTM3MGY5OTc2MGMw
YjViODdiZGZjZmUzYjllNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtODMsNyArODMsNyBAQCBw
dWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWZhdWx0T2JqZWN0SW5j
bHVzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgaW50IGxheW91dENvdW50KCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0
IG92ZXJyaWRlOworICAgIGRvdWJsZSBsb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsK
ICAgICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGFzdENoaWxkKCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IGVjZjgxOGIxYTZiMTYyNzI3MDM4MGJj
ZTg4NmY5YTYwNGNmYTc3YWYuLjgyYzdjMWRjZjdkMmZiMjM4MmZjMDVjNjY4YzI4Njg4NDhiYTMy
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0xMTAsNyArMTEwLDYgQEAgdm9p
ZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3Qm
IGNvcmVPYmplY3QsIGJvb2wgaXMKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNM
aW5rLCBvYmplY3QuaXNMaW5rKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJ
c0xpbmtlZCwgb2JqZWN0LmlzTGlua2VkKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpJc0xpc3QsIG9iamVjdC5pc0xpc3QoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OklzTG9hZGVkLCBvYmplY3QuaXNMb2FkZWQoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OklzTWVkaWFUaW1lbGluZSwgb2JqZWN0LmlzTWVkaWFUaW1lbGluZSgpKTsK
ICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51LCBvYmplY3QuaXNNZW51KCkp
OwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVCYXIsIG9iamVjdC5pc01l
bnVCYXIoKSk7CkBAIC0xNzEsNyArMTcwLDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0
aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIGNvcmVPYmplY3QsIGJvb2wgaXMKICAg
ICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRSYWRpb0J1dHRvbiwg
b2JqZWN0LnNlbGVjdGVkUmFkaW9CdXR0b24oKSk7CiAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSwgb2JqZWN0LnNlbGVjdGVkVGFiSXRlbSgpKTsK
ICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGF5b3V0Q291bnQsIG9iamVjdC5sYXlv
dXRDb3VudCgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RXN0aW1hdGVkTG9h
ZGluZ1Byb2dyZXNzLCBvYmplY3QuZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkpOwogICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zLCBvYmplY3Quc3VwcG9y
dHNBUklBT3ducygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFzUG9wdXAs
IG9iamVjdC5oYXNQb3B1cCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UG9w
dXBWYWx1ZSwgb2JqZWN0LnBvcHVwVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmgKaW5kZXggYzhlZmIyZjhjMTRhZDQ1ZDFkYmIzODM5ZWI5NWMwNDZmMGVmN2Q5
Ni4uOTgwMDY5OTQ5ZDI1Mzg5OTVlY2Q2YjYwM2ExZjA0MmY5MDAxMjEwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuaApAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAgQVhDb3JlT2Jq
ZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkUmFkaW9CdXR0b24pOyB9CiAgICAgQVhD
b3JlT2JqZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRUYWJJdGVtKTsgfQogICAgIGludCBs
YXlvdXRDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpMYXlvdXRDb3VudCk7IH0KLSAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGlu
Z1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZG91YmxlQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OkVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyk7IH0KKyAgICBkb3VibGUg
bG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5sb2FkaW5n
UHJvZ3Jlc3MoKTsgfQogICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNBUklB
T3ducyk7IH0KICAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5lcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKTsgfQogICAgIHZvaWQgYXJp
YUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbikg
Y29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6QVJJQUNvbnRyb2xzRWxlbWVudHMsIGNoaWxkcmVuKTsgfQpAQCAtNTEzLDcgKzUxMyw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGlzSG92ZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNJbmRldGVy
bWluYXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNMb2FkZWQp
OyB9CisgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGxvYWRpbmdQ
cm9ncmVzcygpID49IDE7IH0KICAgICBib29sIGlzT25TY3JlZW4oKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1ByZXNz
ZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA2NTQ5ZGJi
OWJlNWZhODUwMTI5MmY2NTY4MmM3MDBlN2RhNzJhMGRiLi5kMjQ5MTM0ZjQwOGM4OWI4YjhiOGQy
OWY5MmU2ZTAyYWU5NjczMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBAIC0xMTgsNiAr
MTE4LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKEFYT2Jq
ZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCiAgICAgQVNTRVJUKCF0cmVlUGFnZUNhY2hlKCkuY29u
dGFpbnMoKnBhZ2VJRCkpOwogICAgIHRyZWVQYWdlQ2FjaGUoKS5zZXQoKnBhZ2VJRCwgdHJlZS5j
b3B5UmVmKCkpOwogICAgIHRyZWVJRENhY2hlKCkuc2V0KHRyZWUtPnRyZWVJRCgpLCB0cmVlLmNv
cHlSZWYoKSk7CisgICAgdHJlZS0+dXBkYXRlTG9hZGluZ1Byb2dyZXNzKGF4T2JqZWN0Q2FjaGUt
PmxvYWRpbmdQcm9ncmVzcygpKTsKIAogICAgIHJldHVybiB0cmVlOwogfQpAQCAtNDM5LDYgKzQ0
MCwxNiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlEKEFYSUQgYXhJRCkK
ICAgICBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5nZXMuYXBwZW5kKHsgYXhJRCwgcHJvcGVydHlNYXAg
fSk7CiB9CiAKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhkb3Vi
bGUgbmV3UHJvZ3Jlc3NWYWx1ZSkKK3sKKyAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6dXBk
YXRlTG9hZGluZ1Byb2dyZXNzIik7CisgICAgQVhMT0cobWFrZVN0cmluZygiUXVldWVpbmcgbG9h
ZGluZyBwcm9ncmVzcyB1cGRhdGUgdG8gIiwgbmV3UHJvZ3Jlc3NWYWx1ZSwgIiBmb3IgdHJlZUlE
ICIsIHRyZWVJRCgpKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBtX3BlbmRpbmdMb2FkaW5nUHJvZ3Jl
c3MgPSBuZXdQcm9ncmVzc1ZhbHVlOworfQorCiB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVO
b2RlKEFYSUQgYXhJRCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9k
ZSIpOwpAQCAtNDg0LDYgKzQ5NSw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGlu
Z0NoYW5nZXMoKQogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogCisg
ICAgbV9sb2FkaW5nUHJvZ3Jlc3MgPSBtX3BlbmRpbmdMb2FkaW5nUHJvZ3Jlc3M7CisKICAgICBp
ZiAobV9wZW5kaW5nRm9jdXNlZE5vZGVJRCAhPSBtX2ZvY3VzZWROb2RlSUQpIHsKICAgICAgICAg
QVhMT0cobWFrZVN0cmluZygiZm9jdXNlZE5vZGVJRCAiLCBtX2ZvY3VzZWROb2RlSUQubG9nZ2lu
Z1N0cmluZygpLCAiIHBlbmRpbmdGb2N1c2VkTm9kZUlEICIsIG1fcGVuZGluZ0ZvY3VzZWROb2Rl
SUQubG9nZ2luZ1N0cmluZygpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IDIwYTRkMWM4
NzM2YzA1MDQ4ZWFjMzM2YTNmMjNmODE3MzhjN2ViYjQuLjA5ZmUxZGU5NGYwYTdkMGNkOTA1YTM5
MTg4MTg2NDdkYmVjN2ZiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMTExLDcgKzExMSw2
IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgRWRpdGFibGVB
bmNlc3RvciwKICAgICBFbGVtZW50UmVjdCwKICAgICBFbWJlZGRlZEltYWdlRGVzY3JpcHRpb24s
Ci0gICAgRXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzLAogICAgIEV4cGFuZGVkVGV4dFZhbHVlLAog
ICAgIEZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpdGxlLAogICAgIEZvY3VzYWJsZUFu
Y2VzdG9yLApAQCAtMTY4LDcgKzE2Nyw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1
aW50MTZfdCB7CiAgICAgSXNMaW5rZWQsCiAgICAgSXNMaXN0LAogICAgIElzTGlzdEJveCwKLSAg
ICBJc0xvYWRlZCwKICAgICBJc01hdGhFbGVtZW50LAogICAgIElzTWF0aEZyYWN0aW9uLAogICAg
IElzTWF0aEZlbmNlZCwKQEAgLTM2MSw2ICszNTksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRh
dGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYpOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW4oQVhDb3Jl
T2JqZWN0Jik7CiAKKyAgICBkb3VibGUgbG9hZGluZ1Byb2dyZXNzKCkgeyByZXR1cm4gbV9sb2Fk
aW5nUHJvZ3Jlc3M7IH0KKyAgICB2b2lkIHVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhkb3VibGUpOwor
CiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBsZWF2aW5nIGFsbCBkZXNjZW5kYW50cyBh
bG9uZS4KICAgICB2b2lkIHJlbW92ZU5vZGUoQVhJRCk7CiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2
ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cy4KQEAgLTQxMSw2ICs0MTIsOCBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgVmVjdG9yPEFYSUQ+Pj4gbV9wZW5kaW5n
Q2hpbGRyZW5VcGRhdGVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKICAg
ICBBWElEIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5n
ZUxvZ0xvY2spOwogICAgIEFYSUQgbV9mb2N1c2VkTm9kZUlEOworICAgIGRvdWJsZSBtX3BlbmRp
bmdMb2FkaW5nUHJvZ3Jlc3MgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spIHsg
MCB9OworICAgIGRvdWJsZSBtX2xvYWRpbmdQcm9ncmVzcyB7IDAgfTsKICAgICBMb2NrIG1fY2hh
bmdlTG9nTG9jazsKIAogICAgIGJvb2wgbV9jcmVhdGluZ1N1YnRyZWUgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAxMWM0YjlkY2M4ODdmZjRm
YWQ1NWE1MjRkMTBjNTg2ZWE2YjcyNjE0Li5lYTA2MTZlOTA3Y2Q2MWNiZjY2Yzk5NzYxNTczYThj
ODJiZTA1YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAt
MjAzMyw3ICsyMDMzLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExheW91dENvdW50
Il0pCiAgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5sYXlvdXRDb3VudCgpKTsK
ICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlMb2FkaW5nUHJvZ3Jlc3NBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIEAoYmFja2lu
Z09iamVjdC0+ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkpOworICAgICAgICAgICAgcmV0dXJu
IEAoYmFja2luZ09iamVjdC0+bG9hZGluZ1Byb2dyZXNzKCkpOwogICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVByZXZlbnRLZXlib2FyZERP
TUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdKQogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpiYWNraW5nT2JqZWN0LT5wcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3Bh
dGNoKCldOwogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlXSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZmE4NGMzNjZjNjMxNzVmOWZiNDczMGVi
ODVjNDY3N2ZjM2Q2MzY4Zi4uYTJjNmQ3MmI1YmEwZjA0YTQ5Y2E2ZGM3MTBlZjZmYTVlMDEyNWMz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTc1LDgg
Kzc1LDkgQEAgcHVibGljOgogICAgIGxvbmcgbG9uZyBlc3RpbWF0ZWRMZW5ndGg7CiB9OwogCi1Q
cm9ncmVzc1RyYWNrZXI6OlByb2dyZXNzVHJhY2tlcihVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50PiYmIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KFdURk1vdmUoY2xpZW50KSkKK1Byb2dy
ZXNzVHJhY2tlcjo6UHJvZ3Jlc3NUcmFja2VyKFBhZ2UmIHBhZ2UsIFVuaXF1ZVJlZjxQcm9ncmVz
c1RyYWNrZXJDbGllbnQ+JiYgY2xpZW50KQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX2Ns
aWVudChXVEZNb3ZlKGNsaWVudCkpCiAgICAgLCBtX3Byb2dyZXNzSGVhcnRiZWF0VGltZXIoKnRo
aXMsICZQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzSGVhcnRiZWF0VGltZXJGaXJlZCkKIHsKIH0K
QEAgLTEyOSw2ICsxMzAsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NTdGFydGVk
KEZyYW1lJiBmcmFtZSkKICAgICAgICAgbV9pc01haW5Mb2FkID0gaXNNYWluRnJhbWUgfHwgZWxh
cHNlZFRpbWVTaW5jZU1haW5Mb2FkQ29tcGxldGUgPCBzdWJmcmFtZVBhcnRPZk1haW5Mb2FkVGhy
ZXNob2xkOwogCiAgICAgICAgIG1fY2xpZW50LT5wcm9ncmVzc1N0YXJ0ZWQoKm1fb3JpZ2luYXRp
bmdQcm9ncmVzc0ZyYW1lKTsKKyAgICAgICAgbV9wYWdlLnByb2dyZXNzRXN0aW1hdGVDaGFuZ2Vk
KCptX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSk7CiAgICAgfQogICAgIG1fbnVtUHJvZ3Jlc3NU
cmFja2VkRnJhbWVzKys7CiAKQEAgLTEzOCw2ICsxNDAsMTIgQEAgdm9pZCBQcm9ncmVzc1RyYWNr
ZXI6OnByb2dyZXNzU3RhcnRlZChGcmFtZSYgZnJhbWUpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpmcmFtZVN0YXJ0ZWRMb2FkaW5nKGZyYW1lKTsKIH0KIAordm9pZCBQcm9ncmVzc1Ry
YWNrZXI6OnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKEZyYW1lJiBmcmFtZSkKK3sKKyAgICBtX2Ns
aWVudC0+cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoZnJhbWUpOworICAgIG1fcGFnZS5wcm9ncmVz
c0VzdGltYXRlQ2hhbmdlZChmcmFtZSk7Cit9CisKIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjpwcm9n
cmVzc0NvbXBsZXRlZChGcmFtZSYgZnJhbWUpCiB7CiAgICAgTE9HKFByb2dyZXNzLCAiUHJvZ3Jl
c3MgY29tcGxldGVkICglcCkgLSBmcmFtZSAlcChcIiVzXCIpLCB2YWx1ZSAlZiwgdHJhY2tlZCBm
cmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwIiwgdGhpcywgJmZyYW1lLCBmcmFtZS50cmVl
KCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fcHJvZ3Jlc3NWYWx1ZSwg
bV9udW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMsIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLmdl
dCgpKTsKQEAgLTE2Niw3ICsxNzQsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6ZmluYWxQcm9n
cmVzc0NvbXBsZXRlKCkKICAgICAvLyB3aXRoIGZpbmFsIHByb2dyZXNzIHZhbHVlLgogICAgIGlm
ICghbV9maW5hbFByb2dyZXNzQ2hhbmdlZFNlbnQpIHsKICAgICAgICAgbV9wcm9ncmVzc1ZhbHVl
ID0gMTsKLSAgICAgICAgbV9jbGllbnQtPnByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKCpmcmFtZSk7
CisgICAgICAgIHByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKCpmcmFtZSk7CiAgICAgfQogCiAgICAg
cmVzZXQoKTsKQEAgLTE3Niw2ICsxODQsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6ZmluYWxQ
cm9ncmVzc0NvbXBsZXRlKCkKIAogICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zZXRNYWlu
RnJhbWVEb2N1bWVudFJlYWR5KHRydWUpOwogICAgIG1fY2xpZW50LT5wcm9ncmVzc0ZpbmlzaGVk
KCpmcmFtZSk7CisgICAgbV9wYWdlLnByb2dyZXNzRmluaXNoZWQoKmZyYW1lKTsKICAgICBmcmFt
ZS0+bG9hZGVyKCkubG9hZFByb2dyZXNzaW5nU3RhdHVzQ2hhbmdlZCgpOwogCiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVN0b3BwZWRMb2FkaW5nKCpmcmFtZSk7CkBAIC0yNTQs
NyArMjYzLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnMKICAgICAgICAgICAgIGlmIChtX3By
b2dyZXNzVmFsdWUgPT0gMSkKICAgICAgICAgICAgICAgICBtX2ZpbmFsUHJvZ3Jlc3NDaGFuZ2Vk
U2VudCA9IHRydWU7CiAKLSAgICAgICAgICAgIG1fY2xpZW50LT5wcm9ncmVzc0VzdGltYXRlQ2hh
bmdlZCgqZnJhbWUpOworICAgICAgICAgICAgcHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoKmZyYW1l
KTsKIAogICAgICAgICAgICAgbV9sYXN0Tm90aWZpZWRQcm9ncmVzc1ZhbHVlID0gbV9wcm9ncmVz
c1ZhbHVlOwogICAgICAgICAgICAgbV9sYXN0Tm90aWZpZWRQcm9ncmVzc1RpbWUgPSBub3c7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgKaW5kZXggYzBkMjFlNmU2MzdlODMx
NTE3NTY1OWQ3NGEyYjUzZWRmNzgxYTk3ZC4uYjNhYWIyYTk4N2YxMjA1NWNiZGU1YzcxZTVlYzNh
ZGEyZWM1YzU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJh
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaApAQCAt
NDQsNyArNDQsNyBAQCBjbGFzcyBQcm9ncmVzc1RyYWNrZXIgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFByb2dyZXNzVHJhY2tlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgUHJvZ3Jlc3NUcmFja2VyKFVuaXF1ZVJlZjxQcm9ncmVzc1Ry
YWNrZXJDbGllbnQ+JiYpOworICAgIGV4cGxpY2l0IFByb2dyZXNzVHJhY2tlcihQYWdlJiwgVW5p
cXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJik7CiAgICAgflByb2dyZXNzVHJhY2tlcigp
OwogCiAgICAgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVu
dC5nZXQoKTsgfQpAQCAtNjYsOSArNjYsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lk
IHJlc2V0KCk7CiAgICAgdm9pZCBmaW5hbFByb2dyZXNzQ29tcGxldGUoKTsKKyAgICB2b2lkIHBy
b2dyZXNzRXN0aW1hdGVDaGFuZ2VkKEZyYW1lJik7CiAKICAgICB2b2lkIHByb2dyZXNzSGVhcnRi
ZWF0VGltZXJGaXJlZCgpOwogCisgICAgUGFnZSYgbV9wYWdlOwogICAgIFVuaXF1ZVJlZjxQcm9n
cmVzc1RyYWNrZXJDbGllbnQ+IG1fY2xpZW50OwogICAgIFJlZlB0cjxGcmFtZT4gbV9vcmlnaW5h
dGluZ1Byb2dyZXNzRnJhbWU7CiAgICAgSGFzaE1hcDxSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmVzc0l0ZW0+PiBtX3Byb2dyZXNzSXRlbXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCBjODgxYjI2YmEyOGRkNTg3ZTE3ZjhlYjM4OWQ0MjUwYjQwODkxZmY3Li41
ODBkYTExNzIzZGNmNjZmMzBjZmY3YTNjYjU4ODUzYjdiZWZlNWJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5o
IgogI2luY2x1ZGUgIkRpYWdub3N0aWNMb2dnaW5nS2V5cy5oIgogI2luY2x1ZGUgIkRpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudElubGluZXMuaCIKICNp
bmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmUuaCIKQEAgLTI3NCw3ICsyNzUsNyBA
QCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAg
LCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihtYWtlVW5pcXVlPFBvaW50ZXJMb2NrQ29udHJvbGxl
cj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3NldHRpbmdzKFNldHRpbmdzOjpjcmVhdGUodGhp
cykpCi0gICAgLCBtX3Byb2dyZXNzKG1ha2VVbmlxdWU8UHJvZ3Jlc3NUcmFja2VyPihXVEZNb3Zl
KHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCkpKQorICAgICwgbV9wcm9n
cmVzcyhtYWtlVW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnRoaXMsIFdURk1vdmUocGFnZUNvbmZp
Z3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkpCiAgICAgLCBtX2JhY2tGb3J3YXJkQ29u
dHJvbGxlcihtYWtlVW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdURk1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkKICAgICAsIG1fbWFpbkZyYW1l
KEZyYW1lOjpjcmVhdGUodGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5s
b2FkZXJDbGllbnRGb3JNYWluRnJhbWUpKSkKICAgICAsIG1fZWRpdG9yQ2xpZW50KFdURk1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50KSkKQEAgLTU4Myw2ICs1ODQsMjIgQEAgdm9p
ZCBQYWdlOjpzZXR0aW5nc0RpZENoYW5nZSgpCiAjZW5kaWYKIH0KIAordm9pZCBQYWdlOjpwcm9n
cmVzc0VzdGltYXRlQ2hhbmdlZChGcmFtZSYgZnJhbWVXaXRoUHJvZ3Jlc3NVcGRhdGUpIGNvbnN0
Cit7CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWVXaXRoUHJvZ3Jlc3NVcGRhdGUuZG9j
dW1lbnQoKSkgeworICAgICAgICBpZiAoYXV0byogYXhPYmplY3RDYWNoZSA9IGRvY3VtZW50LT5l
eGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUtPnVwZGF0
ZUxvYWRpbmdQcm9ncmVzcyhwcm9ncmVzcygpLmVzdGltYXRlZFByb2dyZXNzKCkpOworICAgIH0K
K30KKwordm9pZCBQYWdlOjpwcm9ncmVzc0ZpbmlzaGVkKEZyYW1lJiBmcmFtZVdpdGhDb21wbGV0
ZWRQcm9ncmVzcykgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZVdpdGhD
b21wbGV0ZWRQcm9ncmVzcy5kb2N1bWVudCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBheE9iamVj
dENhY2hlID0gZG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAgICAgICAgICAg
YXhPYmplY3RDYWNoZS0+bG9hZGluZ0ZpbmlzaGVkKCk7CisgICAgfQorfQorCiBib29sIFBhZ2U6
Om9wZW5lZEJ5RE9NKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9vcGVuZWRCeURPTTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKaW5kZXggYmU3ZjgxMzkwNDgyYWI5MTg1YjIwMTY4OWNkMjQ5MTY1ZTU1MWZkZi4uOTgy
MDljMWUwMGRhY2QyODgxMWU1ODgxZWEzNjE4ZjAxYTk3ODI2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAg
LTM2MSw2ICszNjEsOCBAQCBwdWJsaWM6CiAKICAgICBTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25z
dCB7IHJldHVybiAqbV9zZXR0aW5nczsgfQogICAgIFByb2dyZXNzVHJhY2tlciYgcHJvZ3Jlc3Mo
KSBjb25zdCB7IHJldHVybiAqbV9wcm9ncmVzczsgfQorICAgIHZvaWQgcHJvZ3Jlc3NFc3RpbWF0
ZUNoYW5nZWQoRnJhbWUmKSBjb25zdDsKKyAgICB2b2lkIHByb2dyZXNzRmluaXNoZWQoRnJhbWUm
KSBjb25zdDsKICAgICBCYWNrRm9yd2FyZENvbnRyb2xsZXImIGJhY2tGb3J3YXJkKCkgY29uc3Qg
eyByZXR1cm4gKm1fYmFja0ZvcndhcmRDb250cm9sbGVyOyB9CiAKICAgICBTZWNvbmRzIGRvbVRp
bWVyQWxpZ25tZW50SW50ZXJ2YWwoKSBjb25zdCB7IHJldHVybiBtX2RvbVRpbWVyQWxpZ25tZW50
SW50ZXJ2YWw7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA0MjFkM2FiYWU1MjAxMzFhNWNjOTE0ZjVkMGI3MmFmNTg0Yjk2
MzRlLi4wNDc1ZDJkNjhiZmNhYzRmZTI0MGExMTUyOGU3YmM1MzZhMWQ5ZjI4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMjItMDEtMjYgIFR5bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFwcGxlLmNv
bT4KKworICAgICAgICBBWCBJVE06IERlZmVyIHRvIHRoZSB0cmVlIHdoZW4gZGV0ZXJtaW5pbmcg
QVggb2JqZWN0IGxvYWRpbmcgcHJvZ3Jlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNTY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRl
cy1leHBlY3RlZC50eHQ6CisgICAgICAgIEFzc29jaWF0ZWQgdGVzdCBub3cgdXNlcyBqcy10ZXN0
LmpzLCBzbyBtb2RpZnkgZXhwZWN0YXRpb25zIHRvIGluY2x1ZGUKKyAgICAgICAganMtdGVzdCBv
dXRwdXQgKGUuZy4gdGVzdCBkZXNjcmlwdGlvbigpKS4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L21hYy9kb2N1bWVudC1hdHRyaWJ1dGVzLmh0bWw6CisgICAgICAgIFdhaXQgYXN5bmNocm9ub3Vz
bHkgZm9yIGxvYWRpbmcgdG8gY29tcGxldGUgKCJBWExvYWRlZDogMSIpLgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1sOgorICAgICAgICBEb24ndCBvdXRwdXQgYWxs
IGF0dHJpYnV0ZXMsIHNpbmNlIGl0J3Mgbm90IG5lY2Vzc2FyeSBmb3IgdGhlIHB1cnBvc2UKKyAg
ICAgICAgb2YgdGhlIHRlc3QgKHdoaWNoIGlzIHRvIGVuc3VyZSBjYWxsaW5nIGFsbEF0dHJpYnV0
ZXMoKSBpbiB0aGlzCisgICAgICAgIHNjZW5hcmlvIGRvZXNuJ3QgY2F1c2UgYSBjcmFzaCkuIFBy
ZXZpb3VzbHksIHRoZSB0ZXN0IG91dHB1dCBjb250YWluZWQKKyAgICAgICAgbG9hZGluZyBBWCBh
dHRyaWJ1dGVzLCBzbyByYXRoZXIgdGhhbiBtYWtpbmcgdGhpcyB0ZXN0IHdhaXQgZm9yCisgICAg
ICAgIGxvYWRpbmcgdG8gY29tcGxldGUgSSBkZWNpZGVkIHRvIHJlbW92ZSB0aGUgb3V0cHV0IGFs
bCB0b2dldGhlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQt
ZGVsZXRlLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wMS0yNSAgQWRpdHlhIEtlZXJ0aGkgIDxha2Vl
cnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBpbnB1dC1zZWN1cml0eSBDU1MgcHJv
cGVydHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50
LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
ZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKaW5kZXggOTEyM2IzMDhjZWNiNGYxN2Mx
MGY5N2QxMWU4ODE2YzljNzYyOWRmMi4uNWU5Y2Q2OTAzY2JhYTNkYmQ5NjNmNGUxYTcyYzQ2NzI4
MTgwOTMwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1l
bnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTEsOSArMSwxNCBAQAor
VGhpcyB0ZXN0IHByb3ZpZGVzIGEgYmFzZSBzbmFwc2hvdCBvZiB0aGUgcm9vdCB3ZWIgYXJlYSdz
IGF0dHJpYnV0ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBBWEhhc0RvY3Vt
ZW50Um9sZUFuY2VzdG9yOiAwCiBBWEhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3I6IDAKIEFYUm9s
ZTogQVhXZWJBcmVhCiBBWFJvbGVEZXNjcmlwdGlvbjogSFRNTCBjb250ZW50Ci1BWENoaWxkcmVu
OiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhDaGlsZHJlbkluTmF2aWdhdGlvbk9yZGVyOiA8YXJyYXkg
b2Ygc2l6ZSAwPgorQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgMj4KK0FYQ2hpbGRyZW5Jbk5h
dmlnYXRpb25PcmRlcjogPGFycmF5IG9mIHNpemUgMj4KIEFYSGVscDoKIEFYUGFyZW50OiA8QVhX
ZWJBcmVhPgogQVhTaXplOiBOU1NpemU6IHs4MDAsIDYwMH0KQEAgLTM0LDQgKzM5LDcgQEAgQVhQ
cmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoOiAwCiBBWFdlYlNlc3Npb25JRDogMgogQVhF
bGVtZW50QnVzeTogMAogCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9j
dW1lbnQtYXR0cmlidXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9j
dW1lbnQtYXR0cmlidXRlcy5odG1sCmluZGV4IDZiMjI5OTE0ZmMyMjZlOGZjYzJiMDllNzljZjc4
Nzk4ZDc4MWFiNjIuLmY2MGQ4ZjJjZTQxMzg3MTdiNjc1ZGFhYWI3MzU5NTA2MWEyNmIwYWMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0
ZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRy
aWJ1dGVzLmh0bWwKQEAgLTEsMjQgKzEsMzAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KwogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcHJvdmlkZXMgYSBi
YXNlIHNuYXBzaG90IG9mIHRoZSByb290IHdlYiBhcmVhJ3MgYXR0cmlidXRlcy4iKTsKIAotICAg
IHZhciBsb2cgPSBmdW5jdGlvbihtc2cpCi0gICAgewotICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1z
ZyArICJcbiIpKTsKLSAgICB9CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICBvbmxvYWQg
PSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKQotICAgICAgICAgICAgbG9nKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50LmFsbEF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygi
VGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlIHRvIHJ1bi4iKQorICAgICAgICBzZXRU
aW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbGV0IGFsbEF0dHJpYnV0ZXM7
CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAo
IWFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50KQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYWxsQXR0cmlidXRlcyA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmFsbEF0dHJpYnV0ZXMoKTsKKyAgICAg
ICAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgcGFnZSB0byBiZSBmdWxseSBsb2FkZWQuCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGFsbEF0dHJpYnV0ZXMuaW5jbHVkZXMoIkFYTG9hZGVkOiAxIik7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRlYnVnRXNjYXBlZChhbGxBdHRyaWJ1dGVz
KTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCAwKTsKICAgICB9CiA8
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVu
dC1kZWxldGUuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS5o
dG1sCmluZGV4IDRkN2M1ZTI4MTQwZTQzN2IwNzQ4YzRhNzBjZmI1YmQxNjZlYzlmZTcuLmI5ZDU4
MDYxOWQ5MDY3ZTE5MThmMjhlMjJjYTZjNWFhOTVhZDQ2M2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1sCkBAIC0xLDI3ICsxLDIyIEBACiA8IURPQ1RZ
UEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQogZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICB2YXIg
YWNjZXNzaWJpbGl0eUVsZW1lbnQ7Ci0gICAgewotICAgICAgICB2YXIgb3V0ZXIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgib3V0ZXIiKTsKLSAgICAgICAgdmFyIGlubmVyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImlubmVyIik7Ci0gICAgICAgIHZhciBlZGl0YWJsZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJlZGl0YWJsZSIpOwotICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwotICAgICAgICBlZGl0YWJsZS5mb2N1cygpOwot
ICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgICAg
ICB2YXIgYWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudDsKLSAgICAgICAgfQotICAgICAgICBpbm5lci5yZW1vdmVDaGlsZChlZGl0YWJs
ZSk7Ci0gICAgICAgIG91dGVyLnJlbW92ZUNoaWxkKGlubmVyKTsKLSAgICB9Ci0gICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgICAgICByZXN1bHQuaW5uZXJUZXh0
ID0gYWNjZXNzaWJpbGl0eUVsZW1lbnQuYWxsQXR0cmlidXRlcygpOwotICAgIH0KKyAgICBjb25z
dCBvdXRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRlciIpOworICAgIGNvbnN0IGlu
bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlubmVyIik7CisgICAgY29uc3QgZWRpdGFi
bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdGFibGUiKTsKKyAgICBjb25zdCByZXN1
bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgZWRpdGFibGUuZm9j
dXMoKTsKKyAgICBsZXQgYWNjZXNzaWJpbGl0eUVsZW1lbnQ7CisgICAgaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgYWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBpbm5lci5yZW1vdmVDaGls
ZChlZGl0YWJsZSk7CisgICAgb3V0ZXIucmVtb3ZlQ2hpbGQoaW5uZXIpOworICAgIC8vIFRoaXMg
c2hvdWxkIG5vdCBjYXVzZSBhIGNyYXNoLgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpCisgICAgICAgIGFjY2Vzc2liaWxpdHlFbGVtZW50LmFsbEF0dHJpYnV0ZXMoKTsK
IH0KIDwvc2NyaXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4dApp
bmRleCA4ZmM4YTI5YjY1N2RmNjRkOWZmYTlkNmI3MjBkMzhjNWUwMzUwN2Q1Li5iMGI5MzQyMjc0
MzU3NjAzNjZmMWEwYjE2MjkyNzg1OGJiNWQ1NTJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4
cGVjdGVkLnR4dApAQCAtMSwzNyArMSw1IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKIFRoaXMgdGVzdCBwYXNzZXMgaWYgdGhlcmUgaXMgbm8gY3Jh
c2guCi1BWEhhc0RvY3VtZW50Um9sZUFuY2VzdG9yOiAwCi1BWEhhc1dlYkFwcGxpY2F0aW9uQW5j
ZXN0b3I6IDAKLUFYUm9sZTogQVhXZWJBcmVhCi1BWFJvbGVEZXNjcmlwdGlvbjogSFRNTCBjb250
ZW50Ci1BWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAxPgotQVhDaGlsZHJlbkluTmF2aWdhdGlv
bk9yZGVyOiA8YXJyYXkgb2Ygc2l6ZSAxPgotQVhIZWxwOgotQVhQYXJlbnQ6IDxBWFdlYkFyZWE+
Ci1BWFNpemU6IE5TU2l6ZTogezgwMCwgNjAwfQotQVhUaXRsZToKLUFYRGVzY3JpcHRpb246Ci1B
WFZhbHVlOgotQVhGb2N1c2VkOiAwCi1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhXZWJBcmVh
PgotQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjog
PEFYV2ViQXJlYT4KLUFYRW5kVGV4dE1hcmtlcjogPEFYV2ViQXJlYT4KLUFYVmlzaXRlZDogMAot
QVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhTZWxlY3RlZDogMAotQVhC
bG9ja1F1b3RlTGV2ZWw6IDAKLUFYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWFdlYkFyZWE+Ci1BWExh
bmd1YWdlOgotQVhET01JZGVudGlmaWVyOgotQVhET01DbGFzc0xpc3Q6IDxhcnJheSBvZiBzaXpl
IDA+Ci1BWExpbmtVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhMb2FkZWQ6IDEKLUFY
TGF5b3V0Q291bnQ6IDIKLUFYTG9hZGluZ1Byb2dyZXNzOiAxCi1BWFVSTDogTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwKLUFYQ2FyZXRCcm93c2luZ0VuYWJsZWQ6
IDAKLUFYUHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaDogMAotQVhXZWJTZXNzaW9uSUQ6
IDIKLUFYRWxlbWVudEJ1c3k6IDAKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>