<?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>233336</bug_id>
          
          <creation_ts>2021-11-18 14:42:16 -0800</creation_ts>
          <short_desc>AX: WebKit: need a method to get visible text and frame of an element on screen</short_desc>
          <delta_ts>2021-11-22 12:34:28 -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="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1816639</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-18 14:42:16 -0800</bug_when>
    <thetext>We can determine what elements are on screen, but there is no good way to determine if the content in an element is on screen. If an element is only partially visible, we need to know what the visible content is, and what the accessibilityFrame is of that content.

This is to support Books 

&lt;rdar://problem/83657171&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816644</commentid>
    <comment_count>1</comment_count>
      <attachid>444744</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-18 14:52:05 -0800</bug_when>
    <thetext>Created attachment 444744
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816667</commentid>
    <comment_count>2</comment_count>
      <attachid>444744</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-11-18 15:48:11 -0800</bug_when>
    <thetext>Comment on attachment 444744
patch

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

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:491
&gt; +    std::optional&lt;BoundaryPoint&gt; endBoundary = range-&gt;end;

Can these be auto?

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:498
&gt; +        std::optional&lt;BoundaryPoint&gt; testStartBoundary = makeBoundaryPoint(nextLinePosition);

Can this be auto?

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:511
&gt; +        std::optional&lt;BoundaryPoint&gt; testEndBoundary = makeBoundaryPoint(previousLinePosition);

Can this be auto?

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:784
&gt; +- (WebCore::AXCoreObject*)initializeBackingsStore

Is this a typo (extra s)? initializeBackingsStore vs. initializeBackingStore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816671</commentid>
    <comment_count>3</comment_count>
      <attachid>444744</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-18 15:49:55 -0800</bug_when>
    <thetext>Comment on attachment 444744
patch

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

&gt;&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:491
&gt;&gt; +    std::optional&lt;BoundaryPoint&gt; endBoundary = range-&gt;end;
&gt; 
&gt; Can these be auto?

no it picks the wrong type

&gt;&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:498
&gt;&gt; +        std::optional&lt;BoundaryPoint&gt; testStartBoundary = makeBoundaryPoint(nextLinePosition);
&gt; 
&gt; Can this be auto?

ditto

&gt;&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:784
&gt;&gt; +- (WebCore::AXCoreObject*)initializeBackingsStore
&gt; 
&gt; Is this a typo (extra s)? initializeBackingsStore vs. initializeBackingStore

yea true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816675</commentid>
    <comment_count>4</comment_count>
      <attachid>444750</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-18 16:04:56 -0800</bug_when>
    <thetext>Created attachment 444750
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816678</commentid>
    <comment_count>5</comment_count>
      <attachid>444751</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-18 16:06:51 -0800</bug_when>
    <thetext>Created attachment 444751
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816764</commentid>
    <comment_count>6</comment_count>
      <attachid>444785</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-19 00:15:39 -0800</bug_when>
    <thetext>Created attachment 444785
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816818</commentid>
    <comment_count>7</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-11-19 05:41:05 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #6)
&gt; Created attachment 444785 [details]
&gt; patch

--- a/LayoutTests/accessibility/mac/visible-character-range.html
+++ a/LayoutTests/accessibility/mac/visible-character-range.html

+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;

Do just 

+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;

no -pre.

+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;

Remove these two lines, no needed any more.

+    if (window.accessibilityController) {
+
+          var text = accessibilityController.accessibleElementById(&quot;group&quot;).childAtIndex(0);

looks like indentation is off here, extra spaces.

+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;

Remove this line, not needed any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816845</commentid>
    <comment_count>8</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-11-19 06:51:18 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #6)
&gt; Created attachment 444785 [details]
&gt; patch

--- a/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
+++ a/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm

+#import &quot;Position.h&quot;
...
+#import &quot;SimpleRange.h&quot;

Doesn&apos;t seem right that we have to import Position.h here.

+- (CGRect)frameForRange:(NSRange)range
+{
+    auto webRange = [self convertToDOMRange:range];
+    if (!webRange)
+        return CGRectZero;
+    auto rect = self.axBackingObject-&gt;boundsForRange(*webRange);
+    return [self convertRectToSpace:rect space:AccessibilityConversionSpace::Screen];
+}

Don&apos;t we need to check for

    if (![self _prepareAccessibilityCall])

--- a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h
+++ a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h

+- (WebCore::FloatRect)accessibilityUnobscuredContentRect;

Shouldn&apos;t this be in the core code instead of in the wrapper?

+- (std::optional&lt;WebCore::SimpleRange&gt;)convertToDOMRange:(NSRange)range;
...
+extern NSRange convertToNSRange(const WebCore::SimpleRange&amp;);

Can we make the first one also a function so that we have a symmetric pair of convert functions? Also consider &quot;make&quot; instead of &quot;convert&quot; for the names since it seems that that&apos;s the trend in other conversion functions in WebKit.

--- a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
+++ a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm

+- (FloatRect)accessibilityUnobscuredContentRect
+{
+    auto document = self.axBackingObject-&gt;document();
+    if (!document || !document-&gt;view())
+        return { };
+    return FloatRect(snappedIntRect(document-&gt;view()-&gt;unobscuredContentRect()));
+}

Should be an AXCoreObject method instead.

+- (NSRange)accessibilityVisibleCharacterRange

The algorithm implementation of moving by line and intersecting with the given rect should be a core method, and then this wrapper method would do the conversions to NSRange of the result.

+    NSRange fullRange = convertToNSRange(SimpleRange(*startBoundary, *endBoundary));

Can we use initializer list instead of SimpleRange(...)?

+- (WebCore::AXCoreObject*)initializeBackingStore

This does more than initializing, it updates. Since we already are using updateObjectBackingStore, perhaps we can call this one just updateBackingStore? or _updateBackingStore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816848</commentid>
    <comment_count>9</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-11-19 06:54:15 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #6)
&gt; Created attachment 444785 [details]
&gt; patch

The test should also be enabled on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817049</commentid>
    <comment_count>10</comment_count>
      <attachid>444872</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-19 17:07:52 -0800</bug_when>
    <thetext>Created attachment 444872
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817050</commentid>
    <comment_count>11</comment_count>
      <attachid>444873</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-19 17:09:34 -0800</bug_when>
    <thetext>Created attachment 444873
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817051</commentid>
    <comment_count>12</comment_count>
      <attachid>444874</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-19 17:16:15 -0800</bug_when>
    <thetext>Created attachment 444874
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817089</commentid>
    <comment_count>13</comment_count>
      <attachid>444885</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-19 23:58:09 -0800</bug_when>
    <thetext>Created attachment 444885
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817090</commentid>
    <comment_count>14</comment_count>
      <attachid>444886</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-19 23:59:01 -0800</bug_when>
    <thetext>Created attachment 444886
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817091</commentid>
    <comment_count>15</comment_count>
      <attachid>444887</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-20 00:00:09 -0800</bug_when>
    <thetext>Created attachment 444887
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817096</commentid>
    <comment_count>16</comment_count>
      <attachid>444889</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-20 00:11:55 -0800</bug_when>
    <thetext>Created attachment 444889
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817170</commentid>
    <comment_count>17</comment_count>
      <attachid>444916</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-20 22:05:10 -0800</bug_when>
    <thetext>Created attachment 444916
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817172</commentid>
    <comment_count>18</comment_count>
      <attachid>444917</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-20 22:55:32 -0800</bug_when>
    <thetext>Created attachment 444917
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817173</commentid>
    <comment_count>19</comment_count>
      <attachid>444918</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-20 23:37:11 -0800</bug_when>
    <thetext>Created attachment 444918
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817229</commentid>
    <comment_count>20</comment_count>
      <attachid>444940</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-21 21:34:51 -0800</bug_when>
    <thetext>Created attachment 444940
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817231</commentid>
    <comment_count>21</comment_count>
      <attachid>444941</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-21 21:37:10 -0800</bug_when>
    <thetext>Created attachment 444941
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817232</commentid>
    <comment_count>22</comment_count>
      <attachid>444942</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-21 21:38:26 -0800</bug_when>
    <thetext>Created attachment 444942
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817282</commentid>
    <comment_count>23</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-11-22 06:52:26 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #22)
&gt; Created attachment 444942 [details]
&gt; patch

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

+std::optional&lt;SimpleRange&gt; AccessibilityObject::visibleCharacterRange() const
+{
...
+    return SimpleRange(*startBoundary, *endBoundary);
+}

I think you may be able to do the more stylish:

    return {{ *startBoundary, *endBoundary }};</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817289</commentid>
    <comment_count>24</comment_count>
      <attachid>444966</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-22 07:41:00 -0800</bug_when>
    <thetext>Created attachment 444966
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817329</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-22 12:34:26 -0800</bug_when>
    <thetext>Committed r286116 (244503@main): &lt;https://commits.webkit.org/244503@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444966.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444744</attachid>
            <date>2021-11-18 14:52:05 -0800</date>
            <delta_ts>2021-11-18 16:04:56 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>26975</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZjE3M2FiMzI3Zjg1Li5hZTVmMDMyOGMxYjAgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
MyBAQA0KKzIwMjEtMTEtMTggIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy92aXNp
YmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLg0KKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sOiBBZGRlZC4NCisNCiAy
MDIxLTExLTEyICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPg0KIA0KICAgICAg
ICAgW1dlYiBBbmltYXRpb25zXSBBY2NlbGVyYXRlZCBhbmltYXRpb25zIHdpdGggYSBzaW5nbGUg
a2V5ZnJhbWUgZG9uJ3QgYWNjb3VudCBmb3IgcHJpb3IgZm9yd2FyZC1maWxsaW5nIGFuaW1hdGlv
bnMNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLWNo
YXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQNCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjdkNGI5NzU4OTdhNg0KLS0tIC9kZXYvbnVsbA0KKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2Ut
ZXhwZWN0ZWQudHh0DQpAQCAtMCwwICsxLDEyIEBADQorVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVD
aGFyYWN0ZXJSYW5nZSByZXR1cm5zIGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlm
eWluZyBvYnNjdXJlZCBjb250ZW50Lg0KKw0KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4NCisN
CisNCitWaXNpYmxlIHJhbmdlOiBOU1JhbmdlOiB7MCwgNDY0MH0NCitWaXNpYmxlIHJhbmdlICgy
MDAsIDIwMCk6IE5TUmFuZ2U6IHswLCAzMDB9DQorVmlzaWJsZSByYW5nZSwgb2Zmc2V0OiA1MCAo
MjAwLCA1MDApOiBOU1JhbmdlOiB7OTAsIDgxMH0NCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlDQorDQorVEVTVCBDT01QTEVURQ0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sDQpuZXcgZmls
ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi42YjQwYTgyMmNlN2MNCi0tLSAvZGV2
L251bGwNCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtY2hhcmFj
dGVyLXJhbmdlLmh0bWwNCkBAIC0wLDAgKzEsNzggQEANCis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+DQorPGh0bWw+DQorPGhlYWQ+DQorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxi
b2R5IGlkPSJib2R5Ij4NCisNCis8ZGl2IGlkPSJncm91cCI+DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QN
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0K
K3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQor
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCis8L2Rpdj4NCisN
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4NCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCisN
Cis8c2NyaXB0Pg0KKw0KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVD
aGFyYWN0ZXJSYW5nZSByZXR1cm5zIGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlm
eWluZyBvYnNjdXJlZCBjb250ZW50LiIpOw0KKw0KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7DQorDQorICAgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJncm91cCIpLmNoaWxkQXRJbmRleCgwKTsN
CisgICAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2U6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0
aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0Vmlld1NpemUoMjAwLCAyMDApOw0KKyAgICAgICAgICBkZWJ1
ZygiVmlzaWJsZSByYW5nZSAoMjAwLCAyMDApOiAiICsgdGV4dC5zdHJpbmdEZXNjcmlwdGlvbk9m
QXR0cmlidXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikpOw0KKw0KKyAgICAgICAg
ICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDUwOw0KKyAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFZpZXdTaXplKDIwMCwgNTAwKTsNCisgICAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2UsIG9m
ZnNldDogNTAgKDIwMCwgNTAwKTogIiArIHRleHQuc3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0
ZVZhbHVlKCJBWFZpc2libGVDaGFyYWN0ZXJSYW5nZSIpKTsNCisNCisgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOw0K
KyAgICB9DQorDQorPC9zY3JpcHQ+DQorDQorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQpp
bmRleCBjN2VhM2FjZTBjODUuLjA5ZWNkZGJkZWRiYiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZw0KKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQpAQCAtMSwzICsx
LDM2IEBADQorMjAyMS0xMS0xOCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29t
Pg0KKw0KKyAgICAgICAgQVg6IFdlYktpdDogbmVlZCBhIG1ldGhvZCB0byBnZXQgdmlzaWJsZSB0
ZXh0IGFuZCBmcmFtZSBvZiBhbiBlbGVtZW50IG9uIHNjcmVlbg0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzMzNg0KKw0KKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAgICBJbXBsZW1lbnQgdmlzaWJsZUNoYXJh
Y3RlclJhbmdlIGZvciBzdGF0aWMgdGV4dCBlbGVtZW50cyBzbyB0aGF0IEJvb2tzIGNhbiBkZXRl
cm1pbmUgdGhlIHZpc2libGUNCisgICAgICAgIGNvbnRlbnQgb24gYSBwYWdlLg0KKw0KKyAgICAg
ICAgVGVzdDogYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0K
Kw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlWaXNpYmxlQ29udGVudFJlY3RdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIHBvc2l0aW9uRm9yVGV4dE1hcmtlcjpdKToNCisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJGb3JQb3NpdGlvbjpdKToN
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHN0cmluZ0ZvclJhbmdl
Ol0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZnJhbWVGb3JS
YW5nZTpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9jb252
ZXJ0VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgX2NvbnZlcnRUb0RPTVJhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaDoNCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlLm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGFj
Y2Vzc2liaWxpdHlVbm9ic2N1cmVkQ29udGVudFJlY3RdKToNCisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJh
bmdlXSk6DQorICAgICAgICAoY29udmVydFRvTlNSYW5nZSk6DQorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgY29udmVydFRvRE9NUmFuZ2U6XSk6DQorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgaW5pdGlhbGl6ZUJhY2tpbmdz
U3RvcmVdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBs
aW5lUmVjdHNBbmRUZXh0XSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOg0KKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2luZGV4Rm9yVGV4dE1hcmtlcjpdKToN
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0VG9OU1Jh
bmdlOl0pOiBEZWxldGVkLg0KKw0KIDIwMjEtMTEtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4NCiANCiAgICAgICAgIERpc2FibGUgTWF0aE1MIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0
YWwgTW9kZQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCmluZGV4IDVl
MGM4YzhlYmM2Ny4uYzQyY2IyZTBkMjBlIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tDQpAQCAtNDYsOSArNDYsMTEgQEANCiAjaW1wb3J0ICJJbnRSZWN0LmgiDQog
I2ltcG9ydCAiTG9jYWxpemVkU3RyaW5ncy5oIg0KICNpbXBvcnQgIlBhZ2UuaCINCisjaW1wb3J0
ICJQb3NpdGlvbi5oIg0KICNpbXBvcnQgIlJhbmdlLmgiDQogI2ltcG9ydCAiUmVuZGVyVmlldy5o
Ig0KICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIg0KKyNpbXBvcnQgIlNpbXBs
ZVJhbmdlLmgiDQogI2ltcG9ydCAiU1ZHRWxlbWVudElubGluZXMuaCINCiAjaW1wb3J0ICJTVkdO
YW1lcy5oIg0KICNpbXBvcnQgIlNlbGVjdGlvbkdlb21ldHJ5LmgiDQpAQCAtMTY5NCwxMiArMTY5
Niw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAq
cmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQ0KIHsNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFj
Y2Vzc2liaWxpdHlDYWxsXSkNCiAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOw0KLSAgICANCi0g
ICAgYXV0byBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOw0KLSAg
ICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQ0KLSAgICAgICAgcmV0dXJuIENH
UmVjdFplcm87DQotICAgIGF1dG8gcmVjdCA9IEZsb2F0UmVjdChzbmFwcGVkSW50UmVjdChkb2N1
bWVudC0+dmlldygpLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKSkpOw0KLSAgICByZXR1cm4gW3Nl
bGYgY29udmVydFJlY3RUb1NwYWNlOnJlY3Qgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25T
cGFjZTo6U2NyZWVuXTsNCisgICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpbc2Vs
ZiBhY2Nlc3NpYmlsaXR5VW5vYnNjdXJlZENvbnRlbnRSZWN0XSBzcGFjZTpBY2Nlc3NpYmlsaXR5
Q29udmVyc2lvblNwYWNlOjpTY3JlZW5dOw0KIH0NCiANCiAvLyBUaGUgImNlbnRlciBwb2ludCIg
aXMgd2hlcmUgVm9pY2VPdmVyIHdpbGwgInByZXNzIiBhbiBvYmplY3QuIFRoaXMgbWF5IG5vdCBi
ZSB0aGUgYWN0dWFsDQpAQCAtMjIwOSw0NyArMjIwNiw2IEBAIHN0YXRpYyBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICByZXR1cm4gcmFuZ2UgPyBbc2Vs
ZiBjb250ZW50Rm9yU2ltcGxlUmFuZ2U6KnJhbmdlIGF0dHJpYnV0ZWQ6YXR0cmlidXRlZF0gOiBu
aWw7DQogfQ0KIA0KLS8vIEZJWE1FOiBObyByZWFzb24gZm9yIHRoaXMgdG8gYmUgYSBtZXRob2Qg
aW5zdGVhZCBvZiBhIGZ1bmN0aW9uLg0KLS0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNv
bnN0IFNpbXBsZVJhbmdlJilyYW5nZQ0KLXsNCi0gICAgYXV0byYgZG9jdW1lbnQgPSByYW5nZS5z
dGFydC5kb2N1bWVudCgpOw0KLSAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7DQot
ICAgIGlmICghZnJhbWUpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwg
MCk7DQotDQotICAgIGF1dG8qIHJvb3RFZGl0YWJsZUVsZW1lbnQgPSBmcmFtZS0+c2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOw0KLSAgICBhdXRvKiBzY29wZSA9
IHJvb3RFZGl0YWJsZUVsZW1lbnQgPyByb290RWRpdGFibGVFbGVtZW50IDogZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50KCk7DQotICAgIGlmICghc2NvcGUpDQotICAgICAgICByZXR1cm4gTlNNYWtl
UmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIC8vIE1vdXNlIGV2ZW50cyBtYXkgY2F1c2Ug
VFNNIHRvIGF0dGVtcHQgdG8gY3JlYXRlIGFuIE5TUmFuZ2UgZm9yIGEgcG9ydGlvbiBvZiB0aGUg
dmlldw0KLSAgICAvLyB0aGF0IGlzIG5vdCBpbnNpZGUgdGhlIGN1cnJlbnQgZWRpdGFibGUgcmVn
aW9uLiBUaGVzZSBjaGVja3MgZW5zdXJlIHdlIGRvbid0IHByb2R1Y2UNCi0gICAgLy8gcG90ZW50
aWFsbHkgaW52YWxpZCBkYXRhIHdoZW4gcmVzcG9uZGluZyB0byBzdWNoIHJlcXVlc3RzLg0KLSAg
ICBpZiAoIXNjb3BlLT5jb250YWlucyhyYW5nZS5zdGFydC5jb250YWluZXIucHRyKCkpIHx8ICFz
Y29wZS0+Y29udGFpbnMocmFuZ2UuZW5kLmNvbnRhaW5lci5wdHIoKSkpDQotICAgICAgICByZXR1
cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIHJldHVybiBOU01ha2VSYW5n
ZShjaGFyYWN0ZXJDb3VudCh7IHsgKnNjb3BlLCAwIH0sIHJhbmdlLnN0YXJ0IH0pLCBjaGFyYWN0
ZXJDb3VudChyYW5nZSkpOw0KLX0NCi0NCi0tIChzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPilf
Y29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UNCi17DQotICAgIGlmIChyYW5nZS5sb2Nh
dGlvbiA9PSBOU05vdEZvdW5kKQ0KLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCi0NCi0g
ICAgLy8gb3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB3ZSBhcmUgb25seSBjYWxsZWQg
YnkgaW5wdXQgbWV0aG9kcyB0aGF0DQotICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJl
YSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24NCi0gICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJl
Y2F1c2Ugb2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMg
bm90DQotICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRp
b24gaXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBpcw0KLSAgICAvLyB0byB1c2UgdGhlIHJv
b3QgZWRpdGFibGUgZWxlbWVudCBvZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlv
bmFsIGJhc2UuDQotICAgIC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5w
dXQgY29udGV4dC4NCi0gICAgYXV0byBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5k
b2N1bWVudCgpOw0KLSAgICBhdXRvIHNlbGVjdGlvblJvb3QgPSBkb2N1bWVudC0+ZnJhbWUoKS0+
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOw0KLSAgICBhdXRv
IHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBkb2N1bWVudC0+ZG9jdW1l
bnRFbGVtZW50KCk7DQotICAgIGlmICghc2NvcGUpDQotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0Ow0KLQ0KLSAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVj
dGluZ05vZGVDb250ZW50cygqc2NvcGUpLCByYW5nZSk7DQotfQ0KIA0KIC8vIFRoaXMgbWV0aG9k
IGlzIGludGVuZGVkIHRvIHRha2UgYSB0ZXh0IG1hcmtlciByZXByZXNlbnRpbmcgYSBWaXNpYmxl
UG9zaXRpb24gYW5kIGNvbnZlcnQgaXQNCiAvLyBpbnRvIGEgbm9ybWFsaXplZCBsb2NhdGlvbiB3
aXRoaW4gdGhlIGRvY3VtZW50Lg0KQEAgLTIyNjcsNyArMjIyMyw3IEBAIHN0YXRpYyBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICAgICAgYXV0byByYW5n
ZSA9IGNhY2hlLT5yYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY2hhcmFjdGVyT2Zm
c2V0LCBjaGFyYWN0ZXJPZmZzZXQpOw0KICAgICAgICAgaWYgKCFyYW5nZSkNCiAgICAgICAgICAg
ICByZXR1cm4gTlNOb3RGb3VuZDsNCi0gICAgICAgIHJldHVybiBbc2VsZiBfY29udmVydFRvTlNS
YW5nZToqcmFuZ2VdLmxvY2F0aW9uOw0KKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TUmFuZ2Uo
KnJhbmdlKS5sb2NhdGlvbjsNCiAgICAgfQ0KICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCiB9DQpA
QCAtMjM0Niw3ICsyMzAyLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3
KFdBS1ZpZXcqIHZpZXcpDQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2Fs
bF0pDQogICAgICAgICByZXR1cm4gbmlsOw0KIA0KLSAgICBhdXRvIHJhbmdlID0gW3NlbGYgX2Nv
bnZlcnRUb0RPTVJhbmdlOk5TTWFrZVJhbmdlKHBvc2l0aW9uLCAwKV07DQorICAgIGF1dG8gcmFu
Z2UgPSBbc2VsZiBjb252ZXJ0VG9ET01SYW5nZTpOU01ha2VSYW5nZShwb3NpdGlvbiwgMCldOw0K
ICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiANCkBAIC0yNDE0LDcgKzIz
NzAsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmll
dykNCiB7DQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQogICAg
ICAgICByZXR1cm4gbmlsOw0KLSAgICBhdXRvIHdlYlJhbmdlID0gW3NlbGYgX2NvbnZlcnRUb0RP
TVJhbmdlOnJhbmdlXTsNCisgICAgYXV0byB3ZWJSYW5nZSA9IFtzZWxmIGNvbnZlcnRUb0RPTVJh
bmdlOnJhbmdlXTsNCiAgICAgaWYgKCF3ZWJSYW5nZSkNCiAgICAgICAgIHJldHVybiBuaWw7DQog
ICAgIHJldHVybiBzZWxmLmF4QmFja2luZ09iamVjdC0+c3RyaW5nRm9yUmFuZ2UoKndlYlJhbmdl
KTsNCkBAIC0yNjAwLDYgKzI1NTYsMTUgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJG
b3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgIHJldHVybiBbc2VsZiBwcmV2aW91c01hcmtlckZv
ckNoYXJhY3Rlck9mZnNldDpzdGFydF07DQogfQ0KIA0KKy0gKENHUmVjdClmcmFtZUZvclJhbmdl
OihOU1JhbmdlKXJhbmdlDQorew0KKyAgICBhdXRvIHdlYlJhbmdlID0gW3NlbGYgY29udmVydFRv
RE9NUmFuZ2U6cmFuZ2VdOw0KKyAgICBpZiAoIXdlYlJhbmdlKQ0KKyAgICAgICAgcmV0dXJuIENH
UmVjdFplcm87DQorICAgIGF1dG8gcmVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5ib3VuZHNG
b3JSYW5nZSgqd2ViUmFuZ2UpOw0KKyAgICByZXR1cm4gW3NlbGYgY29udmVydFJlY3RUb1NwYWNl
OnJlY3Qgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6U2NyZWVuXTsNCit9DQor
DQogLy8gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gcmV0dXJuIHRoZSBib3VuZHMgb2YgYSB0
ZXh0IG1hcmtlciByYW5nZSBpbiBzY3JlZW4gY29vcmRpbmF0ZXMuDQogLSAoQ0dSZWN0KWZyYW1l
Rm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKilhcnJheQ0KIHsNCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5oDQppbmRleCBlZWEzZTY5ZGVkOTMuLjE5MjA5MTUyZDE5MSAxMDA2
NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaA0KQEAgLTExMSwxMSArMTEx
LDE2IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRleHR1YWxDb250
ZXh0U291cmNlQ29kZSA9IEAiVUlBY2Nlc3NpYmlsDQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxp
dHlNYXRoUG9zdHNjcmlwdFBhaXJzOw0KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5TWF0aFBy
ZXNjcmlwdFBhaXJzOw0KIA0KKy0gKFdlYkNvcmU6OkZsb2F0UmVjdClhY2Nlc3NpYmlsaXR5VW5v
YnNjdXJlZENvbnRlbnRSZWN0Ow0KKy0gKE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVZpc2libGVDaGFy
YWN0ZXJSYW5nZTsNCistIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiljb252
ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZTsNCisNCiAtIChOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgaWQ+ICopYmFzZUFjY2Vzc2liaWxpdHlSZXNvbHZlZEVkaXRpbmdTdHlsZXM7DQogDQog
ZXh0ZXJuIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBhY2Nlc3NpYmlsaXR5
U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNv
bnN0IE5TRGljdGlvbmFyeSAqKTsNCiANCiBleHRlcm4gTlNBcnJheSAqY29udmVydFRvTlNBcnJh
eShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpOw0KK2V4dGVybiBOU1JhbmdlIGNvbnZlcnRUb05TUmFuZ2UoY29uc3QgV2ViQ29yZTo6U2lt
cGxlUmFuZ2UmKTsNCiANCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkNCiAtIChpZClfYWNjZXNz
aWJpbGl0eVdlYkRvY3VtZW50VmlldzsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UubW0NCmluZGV4IGFlNjVlNDlhYWQwNi4uNDI3N2NhZjVjZWFmIDEwMDY0NA0KLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlLm1tDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0NCkBAIC00NjIsNiArNDYyLDY5IEBAIHN0
YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9uKFBhdGhDb252ZXJzaW9u
SW5mbyYgY29udmVyc2lvbiwgY29uDQogICAgIHJldHVybiBjb252ZXJ0ZWRQYXRoLmF1dG9yZWxl
YXNlKCk7DQogfQ0KIA0KKy0gKEZsb2F0UmVjdClhY2Nlc3NpYmlsaXR5VW5vYnNjdXJlZENvbnRl
bnRSZWN0DQorew0KKyAgICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRv
Y3VtZW50KCk7DQorICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpDQorICAg
ICAgICByZXR1cm4geyB9Ow0KKyAgICByZXR1cm4gRmxvYXRSZWN0KHNuYXBwZWRJbnRSZWN0KGRv
Y3VtZW50LT52aWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVjdCgpKSk7DQorfQ0KKw0KKy8vIERl
dGVybWluZSB0aGUgdmlzaWJsZSByYW5nZSBieSBjaGVja2luZyBpbnRlcnNlY3Rpb24gb2YgdW5v
YnNjdXJlZENvbnRlbnRSZWN0IGFuZCBhIHJhbmdlIG9mIHRleHQgYnkNCisvLyBhZHZhbmNpbmcg
Zm9yd2FyZCBieSBsaW5lIGZyb20gdG9wIGFuZCBiYWNrd2FyZHMgYnkgbGluZSBmcm9tIHRoZSBi
b3R0b20sIHVudGlsIHdlIGhhdmUgYSB2aXNpYmxlIHJhbmdlLg0KKy0gKE5TUmFuZ2UpYWNjZXNz
aWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZQ0KK3sNCisgICAgYXV0byBiYWNraW5nT2JqZWN0
ID0gc2VsZi5pbml0aWFsaXplQmFja2luZ3NTdG9yZTsNCisgICAgaWYgKCFiYWNraW5nT2JqZWN0
KQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICBh
dXRvIHJhbmdlID0gYmFja2luZ09iamVjdC0+ZWxlbWVudFJhbmdlKCk7DQorICAgIGlmICghcmFu
Z2UpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQorDQorICAg
IGF1dG8gY29udGVudFJlY3QgPSBbc2VsZiBhY2Nlc3NpYmlsaXR5VW5vYnNjdXJlZENvbnRlbnRS
ZWN0XTsNCisgICAgYXV0byBlbGVtZW50UmVjdCA9IHNuYXBwZWRJbnRSZWN0KGJhY2tpbmdPYmpl
Y3QtPmVsZW1lbnRSZWN0KCkpOw0KKyAgICBpZiAoIWNvbnRlbnRSZWN0LmludGVyc2VjdHMoZWxl
bWVudFJlY3QpKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0K
Kw0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IHN0YXJ0Qm91bmRhcnkgPSByYW5n
ZS0+c3RhcnQ7DQorICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gZW5kQm91bmRhcnkg
PSByYW5nZS0+ZW5kOw0KKw0KKyAgICBOU1JhbmdlIGZ1bGxSYW5nZSA9IGNvbnZlcnRUb05TUmFu
Z2UoU2ltcGxlUmFuZ2UoKnN0YXJ0Qm91bmRhcnksICplbmRCb3VuZGFyeSkpOw0KKw0KKyAgICAv
LyBPcmlnaW4gaXNuJ3QgY29udGFpbmVkIGluIHZpc2libGUgcmVjdCwgc3RhcnQgbW92aW5nIGZv
cndhcmQgYnkgbGluZS4NCisgICAgd2hpbGUgKCFjb250ZW50UmVjdC5jb250YWlucyhlbGVtZW50
UmVjdC5sb2NhdGlvbigpKSkgew0KKyAgICAgICAgYXV0byBuZXh0TGluZVBvc2l0aW9uID0gYmFj
a2luZ09iamVjdC0+bmV4dExpbmVFbmRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obWFrZUNvbnRh
aW5lck9mZnNldFBvc2l0aW9uKCpzdGFydEJvdW5kYXJ5KSkpOw0KKyAgICAgICAgc3RkOjpvcHRp
b25hbDxCb3VuZGFyeVBvaW50PiB0ZXN0U3RhcnRCb3VuZGFyeSA9IG1ha2VCb3VuZGFyeVBvaW50
KG5leHRMaW5lUG9zaXRpb24pOw0KKyAgICAgICAgaWYgKCF0ZXN0U3RhcnRCb3VuZGFyeSB8fCAh
Y29udGFpbnMoKnJhbmdlLCAqdGVzdFN0YXJ0Qm91bmRhcnkpKQ0KKyAgICAgICAgICAgIGJyZWFr
Ow0KKyAgICAgICAgDQorICAgICAgICBzdGFydEJvdW5kYXJ5ID0gdGVzdFN0YXJ0Qm91bmRhcnk7
DQorICAgICAgICBlbGVtZW50UmVjdCA9IGJhY2tpbmdPYmplY3QtPmJvdW5kc0ZvclJhbmdlKFNp
bXBsZVJhbmdlKCpzdGFydEJvdW5kYXJ5LCByYW5nZS0+ZW5kKSk7DQorICAgICAgICBpZiAoZWxl
bWVudFJlY3QuaXNFbXB0eSgpKQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAg
IC8vIEVuZCBpc24ndCBjb250YWluZWQgaW4gdmlzaWJsZSByZWN0LCBzdGFydCBtb3ZpbmcgYmFj
a3dhcmRzIGJ5IGxpbmUuDQorICAgIHdoaWxlICghY29udGVudFJlY3QuY29udGFpbnMoZWxlbWVu
dFJlY3QubG9jYXRpb24oKSArIGVsZW1lbnRSZWN0LnNpemUoKSkpIHsNCisgICAgICAgIGF1dG8g
cHJldmlvdXNMaW5lUG9zaXRpb24gPSBiYWNraW5nT2JqZWN0LT5wcmV2aW91c0xpbmVTdGFydFBv
c2l0aW9uKFZpc2libGVQb3NpdGlvbihtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oKmVuZEJv
dW5kYXJ5KSkpOw0KKyAgICAgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiB0ZXN0RW5k
Qm91bmRhcnkgPSBtYWtlQm91bmRhcnlQb2ludChwcmV2aW91c0xpbmVQb3NpdGlvbik7DQorICAg
ICAgICBpZiAoIXRlc3RFbmRCb3VuZGFyeSB8fCAhY29udGFpbnMoKnJhbmdlLCAqdGVzdEVuZEJv
dW5kYXJ5KSkNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIA0KKyAgICAgICAgZW5kQm91
bmRhcnkgPSB0ZXN0RW5kQm91bmRhcnk7DQorICAgICAgICBlbGVtZW50UmVjdCA9IGJhY2tpbmdP
YmplY3QtPmJvdW5kc0ZvclJhbmdlKFNpbXBsZVJhbmdlKCpzdGFydEJvdW5kYXJ5LCAqZW5kQm91
bmRhcnkpKTsNCisgICAgICAgIGlmIChlbGVtZW50UmVjdC5pc0VtcHR5KCkpDQorICAgICAgICAg
ICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgaWYgKCFzdGFydEJvdW5kYXJ5IHx8ICFlbmRCb3Vu
ZGFyeSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCisgICAg
DQorICAgIE5TUmFuZ2UgdmlzaWJsZVJhbmdlID0gY29udmVydFRvTlNSYW5nZShTaW1wbGVSYW5n
ZSgqc3RhcnRCb3VuZGFyeSwgKmVuZEJvdW5kYXJ5KSk7DQorICAgIHJldHVybiBOU01ha2VSYW5n
ZSh2aXNpYmxlUmFuZ2UubG9jYXRpb24gLSBmdWxsUmFuZ2UubG9jYXRpb24sIHZpc2libGVSYW5n
ZS5sZW5ndGgpOw0KK30NCisNCiAtIChpZClfYWNjZXNzaWJpbGl0eVdlYkRvY3VtZW50Vmlldw0K
IHsNCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7DQpAQCAtNjIzLDYgKzY4Niw0OCBAQCBzdGF0
aWMgdm9pZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5TTXV0YWJsZUF0dHJpYnV0ZWRT
dHJpbmcqIGF0dHJTdHJpbmcsDQogICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TGFuZ3VhZ2UoYXR0
clN0cmluZywgbm9kZS0+cmVuZGVyZXIoKSwgYXR0clN0cmluZ1JhbmdlKTsNCiB9DQogDQorDQor
TlNSYW5nZSBjb252ZXJ0VG9OU1JhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkNCit7DQor
ICAgIGF1dG8mIGRvY3VtZW50ID0gcmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKTsNCisgICAgYXV0byog
ZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOw0KKyAgICBpZiAoIWZyYW1lKQ0KKyAgICAgICAgcmV0
dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICBhdXRvKiByb290RWRpdGFi
bGVFbGVtZW50ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKTsNCisgICAgYXV0byogc2NvcGUgPSByb290RWRpdGFibGVFbGVtZW50ID8gcm9vdEVk
aXRhYmxlRWxlbWVudCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOw0KKyAgICBpZiAoIXNj
b3BlKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAg
ICAvLyBNb3VzZSBldmVudHMgbWF5IGNhdXNlIFRTTSB0byBhdHRlbXB0IHRvIGNyZWF0ZSBhbiBO
U1JhbmdlIGZvciBhIHBvcnRpb24gb2YgdGhlIHZpZXcNCisgICAgLy8gdGhhdCBpcyBub3QgaW5z
aWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lvbi4gVGhlc2UgY2hlY2tzIGVuc3VyZSB3ZSBk
b24ndCBwcm9kdWNlDQorICAgIC8vIHBvdGVudGlhbGx5IGludmFsaWQgZGF0YSB3aGVuIHJlc3Bv
bmRpbmcgdG8gc3VjaCByZXF1ZXN0cy4NCisgICAgaWYgKCFzY29wZS0+Y29udGFpbnMocmFuZ2Uu
c3RhcnQuY29udGFpbmVyLnB0cigpKSB8fCAhc2NvcGUtPmNvbnRhaW5zKHJhbmdlLmVuZC5jb250
YWluZXIucHRyKCkpKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDAp
Ow0KKw0KKyAgICByZXR1cm4gTlNNYWtlUmFuZ2UoY2hhcmFjdGVyQ291bnQoeyB7ICpzY29wZSwg
MCB9LCByYW5nZS5zdGFydCB9KSwgY2hhcmFjdGVyQ291bnQocmFuZ2UpKTsNCit9DQorDQorLSAo
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4pY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpcmFu
Z2UNCit7DQorICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQ0KKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgLy8gb3VyIGNyaXRpY2FsIGFzc3VtcHRpb24g
aXMgdGhhdCB3ZSBhcmUgb25seSBjYWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0DQorICAgIC8v
IGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24NCisg
ICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugb2YgdGV4dCBmaWVsZHMgYW5kIHRleHRh
cmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90DQorICAgIC8vIGRpcmVjdGx5IGluIHRoZSBk
b2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1dGlv
biBpcw0KKyAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRpdGFibGUgZWxlbWVudCBvZiB0aGUgc2Vs
ZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJhc2UuDQorICAgIC8vIFRoYXQgZml0cyB3
aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29udGV4dC4NCisgICAgYXV0byBkb2N1bWVu
dCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOw0KKyAgICBhdXRvIHNlbGVjdGlv
blJvb3QgPSBkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOw0KKyAgICBhdXRvIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVj
dGlvblJvb3QgOiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7DQorICAgIGlmICghc2NvcGUp
DQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KKw0KKyAgICByZXR1cm4gcmVzb2x2ZUNo
YXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUpLCByYW5n
ZSk7DQorfQ0KKw0KIC8vIFJldHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhbmQgQVhPYmplY3Qg
d3JhcHBlcnMgY29ycmVzcG9uZGluZyB0byB0aGUgdGV4dA0KIC8vIHJ1bnMgYW5kIHJlcGxhY2Vt
ZW50IG5vZGVzIGluY2x1ZGVkIGluIHRoZSBnaXZlbiByYW5nZS4NCiAtIChOU0FycmF5ICopY29u
dGVudEZvclNpbXBsZVJhbmdlOihjb25zdCBTaW1wbGVSYW5nZSYpcmFuZ2UgYXR0cmlidXRlZDoo
Qk9PTClhdHRyaWJ1dGVkDQpAQCAtNjc2LDE4ICs3ODEsMjYgQEAgc3RhdGljIHZvaWQgQVhBdHRy
aWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3Ry
aW5nLA0KICAgICByZXR1cm4gYXJyYXkuYXV0b3JlbGVhc2UoKTsNCiB9DQogDQotLSAoTlNBcnJh
eTxOU0RpY3Rpb25hcnkgKj4gKilsaW5lUmVjdHNBbmRUZXh0DQorLSAoV2ViQ29yZTo6QVhDb3Jl
T2JqZWN0Kilpbml0aWFsaXplQmFja2luZ3NTdG9yZQ0KIHsNCiAjaWYgUExBVEZPUk0oTUFDKQ0K
ICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi51cGRhdGVPYmplY3RCYWNraW5nU3RvcmU7
DQogICAgIGlmICghYmFja2luZ09iamVjdCkNCi0gICAgICAgIHJldHVybiBuaWw7DQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsNCiAjZWxzZQ0KICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNz
aWJpbGl0eUNhbGxdKQ0KLSAgICAgICAgcmV0dXJuIG5pbDsNCisgICAgICAgIHJldHVybiBudWxs
cHRyOw0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7DQog
I2VuZGlmDQorICAgIHJldHVybiBiYWNraW5nT2JqZWN0Ow0KK30NCiANCistIChOU0FycmF5PE5T
RGljdGlvbmFyeSAqPiAqKWxpbmVSZWN0c0FuZFRleHQNCit7DQorICAgIGF1dG8gYmFja2luZ09i
amVjdCA9IHNlbGYuaW5pdGlhbGl6ZUJhY2tpbmdzU3RvcmU7DQorICAgIGlmICghYmFja2luZ09i
amVjdCkNCisgICAgICAgIHJldHVybiBuaWw7DQorICAgIA0KICAgICBhdXRvIHJhbmdlID0gYmFj
a2luZ09iamVjdC0+ZWxlbWVudFJhbmdlKCk7DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICBy
ZXR1cm4gbmlsOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCmluZGV4
IGExZDY1Y2MwYTBhYS4uYjQxMzIwNTY3ZDQ0IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tDQpAQCAtMjI2OCwxNiArMjI2OCwyMiBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFu
Z2UgPSBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZFRleHRSYW5nZSgpOw0KICAgICAgICAgICAgIHJl
dHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0UmFuZ2Uuc3RhcnQs
IHRleHRSYW5nZS5sZW5ndGgpXTsNCiAgICAgICAgIH0NCi0gICAgICAgIC8vIFRPRE86IEdldCBh
Y3R1YWwgdmlzaWJsZSByYW5nZS4gPHJkYXI6Ly9wcm9ibGVtLzQ3MTIxMDE+DQotICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxl
Q2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBiYWNraW5nT2Jq
ZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSA/IG5pbCA6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOiBO
U01ha2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0LT50ZXh0TGVuZ3RoKCkpXTsNCi0NCiAgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5zZXJ0
aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIGludCBsaW5lTnVt
YmVyID0gYmFja2luZ09iamVjdC0+aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCk7DQogICAgICAg
ICAgICAgcmV0dXJuIGxpbmVOdW1iZXIgPj0gMCA/IEAobGluZU51bWJlcikgOiBuaWw7DQogICAg
ICAgICB9DQogICAgIH0NCiANCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzogTlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRlXSkgew0KKyAg
ICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpKQ0KKyAgICAgICAgICAg
IHJldHVybiBuaWw7DQorICAgICAgICAvLyBUT0RPOiBHZXQgYWN0dWFsIHZpc2libGUgcmFuZ2Uu
IDxyZGFyOi8vcHJvYmxlbS80NzEyMTAxPg0KKyAgICAgICAgZWxzZSBpZiAoYmFja2luZ09iamVj
dC0+aXNUZXh0Q29udHJvbCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdp
dGhSYW5nZTpOU01ha2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0LT50ZXh0TGVuZ3RoKCkpXTsNCisg
ICAgICAgIGVsc2UNCisgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6
W3NlbGYgYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZV1dOw0KKyAgICB9DQorDQog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVVS
TEF0dHJpYnV0ZV0pIHsNCiAgICAgICAgIFVSTCB1cmwgPSBiYWNraW5nT2JqZWN0LT51cmwoKTsN
CiAgICAgICAgIGlmICh1cmwuaXNOdWxsKCkpDQpAQCAtMzQzNSwyMiArMzQ0MSw2IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICB9KTsNCiB9DQogDQotLy8gRklY
TUU6IE5vIHJlYXNvbiBmb3IgdGhpcyB0byBiZSBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rp
b247IGNhbiBnZXQgZG9jdW1lbnQgZnJvbSByYW5nZS4NCi0tIChOU1JhbmdlKV9jb252ZXJ0VG9O
U1JhbmdlOihjb25zdCBTaW1wbGVSYW5nZSYpcmFuZ2UNCi17DQotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7DQotICAgIA0KLSAgICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmpl
Y3QtPmRvY3VtZW50KCk7DQotICAgIGlmICghZG9jdW1lbnQpDQotICAgICAgICByZXR1cm4gTlNN
YWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0g
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOw0KLSAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkN
Ci0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgcmV0
dXJuIGNoYXJhY3RlclJhbmdlKG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRlbnRzKCpk
b2N1bWVudEVsZW1lbnQpLCByYW5nZSk7DQotfQ0KLQ0KIC0gKE5TSW50ZWdlcilfaW5kZXhGb3JU
ZXh0TWFya2VyOihBWFRleHRNYXJrZXJSZWYpbWFya2VyDQogew0KICAgICBpZiAoIW1hcmtlcikN
CkBAIC0zNDY3LDcgKzM0NTcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQNCiAgICAgICAgICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgICAgICAgICByZXR1cm4gTlNO
b3RGb3VuZDsNCiANCi0gICAgICAgICAgICByZXR1cm4gW3Byb3RlY3RlZFNlbGYgX2NvbnZlcnRU
b05TUmFuZ2U6KnJhbmdlXS5sb2NhdGlvbjsNCisgICAgICAgICAgICByZXR1cm4gY29udmVydFRv
TlNSYW5nZSgqcmFuZ2UpLmxvY2F0aW9uOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgcmV0dXJu
IE5TTm90Rm91bmQ7DQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444750</attachid>
            <date>2021-11-18 16:04:56 -0800</date>
            <delta_ts>2021-11-18 16:06:51 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>27004</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZjE3M2FiMzI3Zjg1Li5hZTVmMDMyOGMxYjAgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
MyBAQA0KKzIwMjEtMTEtMTggIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy92aXNp
YmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLg0KKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sOiBBZGRlZC4NCisNCiAy
MDIxLTExLTEyICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPg0KIA0KICAgICAg
ICAgW1dlYiBBbmltYXRpb25zXSBBY2NlbGVyYXRlZCBhbmltYXRpb25zIHdpdGggYSBzaW5nbGUg
a2V5ZnJhbWUgZG9uJ3QgYWNjb3VudCBmb3IgcHJpb3IgZm9yd2FyZC1maWxsaW5nIGFuaW1hdGlv
bnMNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLWNo
YXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQNCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjdkNGI5NzU4OTdhNg0KLS0tIC9kZXYvbnVsbA0KKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2Ut
ZXhwZWN0ZWQudHh0DQpAQCAtMCwwICsxLDEyIEBADQorVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVD
aGFyYWN0ZXJSYW5nZSByZXR1cm5zIGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlm
eWluZyBvYnNjdXJlZCBjb250ZW50Lg0KKw0KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4NCisN
CisNCitWaXNpYmxlIHJhbmdlOiBOU1JhbmdlOiB7MCwgNDY0MH0NCitWaXNpYmxlIHJhbmdlICgy
MDAsIDIwMCk6IE5TUmFuZ2U6IHswLCAzMDB9DQorVmlzaWJsZSByYW5nZSwgb2Zmc2V0OiA1MCAo
MjAwLCA1MDApOiBOU1JhbmdlOiB7OTAsIDgxMH0NCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlDQorDQorVEVTVCBDT01QTEVURQ0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sDQpuZXcgZmls
ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi42YjQwYTgyMmNlN2MNCi0tLSAvZGV2
L251bGwNCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtY2hhcmFj
dGVyLXJhbmdlLmh0bWwNCkBAIC0wLDAgKzEsNzggQEANCis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+DQorPGh0bWw+DQorPGhlYWQ+DQorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxi
b2R5IGlkPSJib2R5Ij4NCisNCis8ZGl2IGlkPSJncm91cCI+DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QN
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0K
K3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQor
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCis8L2Rpdj4NCisN
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4NCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCisN
Cis8c2NyaXB0Pg0KKw0KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVD
aGFyYWN0ZXJSYW5nZSByZXR1cm5zIGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlm
eWluZyBvYnNjdXJlZCBjb250ZW50LiIpOw0KKw0KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7DQorDQorICAgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJncm91cCIpLmNoaWxkQXRJbmRleCgwKTsN
CisgICAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2U6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0
aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0Vmlld1NpemUoMjAwLCAyMDApOw0KKyAgICAgICAgICBkZWJ1
ZygiVmlzaWJsZSByYW5nZSAoMjAwLCAyMDApOiAiICsgdGV4dC5zdHJpbmdEZXNjcmlwdGlvbk9m
QXR0cmlidXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikpOw0KKw0KKyAgICAgICAg
ICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDUwOw0KKyAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFZpZXdTaXplKDIwMCwgNTAwKTsNCisgICAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2UsIG9m
ZnNldDogNTAgKDIwMCwgNTAwKTogIiArIHRleHQuc3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0
ZVZhbHVlKCJBWFZpc2libGVDaGFyYWN0ZXJSYW5nZSIpKTsNCisNCisgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOw0K
KyAgICB9DQorDQorPC9zY3JpcHQ+DQorDQorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQpp
bmRleCBjN2VhM2FjZTBjODUuLjA5ZWNkZGJkZWRiYiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZw0KKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQpAQCAtMSwzICsx
LDM2IEBADQorMjAyMS0xMS0xOCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29t
Pg0KKw0KKyAgICAgICAgQVg6IFdlYktpdDogbmVlZCBhIG1ldGhvZCB0byBnZXQgdmlzaWJsZSB0
ZXh0IGFuZCBmcmFtZSBvZiBhbiBlbGVtZW50IG9uIHNjcmVlbg0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzMzNg0KKw0KKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAgICBJbXBsZW1lbnQgdmlzaWJsZUNoYXJh
Y3RlclJhbmdlIGZvciBzdGF0aWMgdGV4dCBlbGVtZW50cyBzbyB0aGF0IEJvb2tzIGNhbiBkZXRl
cm1pbmUgdGhlIHZpc2libGUNCisgICAgICAgIGNvbnRlbnQgb24gYSBwYWdlLg0KKw0KKyAgICAg
ICAgVGVzdDogYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0K
Kw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlWaXNpYmxlQ29udGVudFJlY3RdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIHBvc2l0aW9uRm9yVGV4dE1hcmtlcjpdKToNCisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJGb3JQb3NpdGlvbjpdKToN
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHN0cmluZ0ZvclJhbmdl
Ol0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZnJhbWVGb3JS
YW5nZTpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9jb252
ZXJ0VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgX2NvbnZlcnRUb0RPTVJhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaDoNCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlLm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGFj
Y2Vzc2liaWxpdHlVbm9ic2N1cmVkQ29udGVudFJlY3RdKToNCisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJh
bmdlXSk6DQorICAgICAgICAoY29udmVydFRvTlNSYW5nZSk6DQorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgY29udmVydFRvRE9NUmFuZ2U6XSk6DQorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgaW5pdGlhbGl6ZUJhY2tpbmdz
U3RvcmVdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBs
aW5lUmVjdHNBbmRUZXh0XSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOg0KKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2luZGV4Rm9yVGV4dE1hcmtlcjpdKToN
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0VG9OU1Jh
bmdlOl0pOiBEZWxldGVkLg0KKw0KIDIwMjEtMTEtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4NCiANCiAgICAgICAgIERpc2FibGUgTWF0aE1MIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0
YWwgTW9kZQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCmluZGV4IDVl
MGM4YzhlYmM2Ny4uM2Q3OGRkMjI1OGRlIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tDQpAQCAtNDYsMTEgKzQ2LDEzIEBADQogI2ltcG9ydCAiSW50UmVjdC5oIg0K
ICNpbXBvcnQgIkxvY2FsaXplZFN0cmluZ3MuaCINCiAjaW1wb3J0ICJQYWdlLmgiDQorI2ltcG9y
dCAiUG9zaXRpb24uaCINCiAjaW1wb3J0ICJSYW5nZS5oIg0KICNpbXBvcnQgIlJlbmRlclZpZXcu
aCINCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCINCiAjaW1wb3J0ICJTVkdF
bGVtZW50SW5saW5lcy5oIg0KICNpbXBvcnQgIlNWR05hbWVzLmgiDQorI2ltcG9ydCAiU2ltcGxl
UmFuZ2UuaCINCiAjaW1wb3J0ICJTZWxlY3Rpb25HZW9tZXRyeS5oIg0KICNpbXBvcnQgIlRleHRJ
dGVyYXRvci5oIg0KICNpbXBvcnQgIldBS1Njcm9sbFZpZXcuaCINCkBAIC0xNjk0LDEyICsxNjk2
LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpy
ZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpDQogew0KICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNj
ZXNzaWJpbGl0eUNhbGxdKQ0KICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87DQotICAgIA0KLSAg
ICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7DQotICAg
IGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpDQotICAgICAgICByZXR1cm4gQ0dS
ZWN0WmVybzsNCi0gICAgYXV0byByZWN0ID0gRmxvYXRSZWN0KHNuYXBwZWRJbnRSZWN0KGRvY3Vt
ZW50LT52aWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVjdCgpKSk7DQotICAgIHJldHVybiBbc2Vs
ZiBjb252ZXJ0UmVjdFRvU3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNw
YWNlOjpTY3JlZW5dOw0KKyAgICByZXR1cm4gW3NlbGYgY29udmVydFJlY3RUb1NwYWNlOltzZWxm
IGFjY2Vzc2liaWxpdHlVbm9ic2N1cmVkQ29udGVudFJlY3RdIHNwYWNlOkFjY2Vzc2liaWxpdHlD
b252ZXJzaW9uU3BhY2U6OlNjcmVlbl07DQogfQ0KIA0KIC8vIFRoZSAiY2VudGVyIHBvaW50IiBp
cyB3aGVyZSBWb2ljZU92ZXIgd2lsbCAicHJlc3MiIGFuIG9iamVjdC4gVGhpcyBtYXkgbm90IGJl
IHRoZSBhY3R1YWwNCkBAIC0yMjA5LDQ3ICsyMjA2LDYgQEAgc3RhdGljIFJlbmRlck9iamVjdCog
cmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgIHJldHVybiByYW5nZSA/IFtzZWxm
IGNvbnRlbnRGb3JTaW1wbGVSYW5nZToqcmFuZ2UgYXR0cmlidXRlZDphdHRyaWJ1dGVkXSA6IG5p
bDsNCiB9DQogDQotLy8gRklYTUU6IE5vIHJlYXNvbiBmb3IgdGhpcyB0byBiZSBhIG1ldGhvZCBp
bnN0ZWFkIG9mIGEgZnVuY3Rpb24uDQotLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooY29u
c3QgU2ltcGxlUmFuZ2UmKXJhbmdlDQotew0KLSAgICBhdXRvJiBkb2N1bWVudCA9IHJhbmdlLnN0
YXJ0LmRvY3VtZW50KCk7DQotICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsNCi0g
ICAgaWYgKCFmcmFtZSkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAw
KTsNCi0NCi0gICAgYXV0byogcm9vdEVkaXRhYmxlRWxlbWVudCA9IGZyYW1lLT5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQotICAgIGF1dG8qIHNjb3BlID0g
cm9vdEVkaXRhYmxlRWxlbWVudCA/IHJvb3RFZGl0YWJsZUVsZW1lbnQgOiBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQoKTsNCi0gICAgaWYgKCFzY29wZSkNCi0gICAgICAgIHJldHVybiBOU01ha2VS
YW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgLy8gTW91c2UgZXZlbnRzIG1heSBjYXVzZSBU
U00gdG8gYXR0ZW1wdCB0byBjcmVhdGUgYW4gTlNSYW5nZSBmb3IgYSBwb3J0aW9uIG9mIHRoZSB2
aWV3DQotICAgIC8vIHRoYXQgaXMgbm90IGluc2lkZSB0aGUgY3VycmVudCBlZGl0YWJsZSByZWdp
b24uIFRoZXNlIGNoZWNrcyBlbnN1cmUgd2UgZG9uJ3QgcHJvZHVjZQ0KLSAgICAvLyBwb3RlbnRp
YWxseSBpbnZhbGlkIGRhdGEgd2hlbiByZXNwb25kaW5nIHRvIHN1Y2ggcmVxdWVzdHMuDQotICAg
IGlmICghc2NvcGUtPmNvbnRhaW5zKHJhbmdlLnN0YXJ0LmNvbnRhaW5lci5wdHIoKSkgfHwgIXNj
b3BlLT5jb250YWlucyhyYW5nZS5lbmQuY29udGFpbmVyLnB0cigpKSkNCi0gICAgICAgIHJldHVy
biBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgcmV0dXJuIE5TTWFrZVJhbmdl
KGNoYXJhY3RlckNvdW50KHsgeyAqc2NvcGUsIDAgfSwgcmFuZ2Uuc3RhcnQgfSksIGNoYXJhY3Rl
ckNvdW50KHJhbmdlKSk7DQotfQ0KLQ0KLS0gKHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+KV9j
b252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZQ0KLXsNCi0gICAgaWYgKHJhbmdlLmxvY2F0
aW9uID09IE5TTm90Rm91bmQpDQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KLQ0KLSAg
ICAvLyBvdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBvbmx5IGNhbGxlZCBi
eSBpbnB1dCBtZXRob2RzIHRoYXQNCi0gICAgLy8gY29uY2VudHJhdGUgb24gYSBnaXZlbiBhcmVh
IGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbg0KLSAgICAvLyBXZSBoYXZlIHRvIGRvIHRoaXMgYmVj
YXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0aG9zZSBpcyBu
b3QNCi0gICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlv
biBpcyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzDQotICAgIC8vIHRvIHVzZSB0aGUgcm9v
dCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQgYXMgdGhlIHBvc2l0aW9u
YWwgYmFzZS4NCi0gICAgLy8gVGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1
dCBjb250ZXh0Lg0KLSAgICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRv
Y3VtZW50KCk7DQotICAgIGF1dG8gc2VsZWN0aW9uUm9vdCA9IGRvY3VtZW50LT5mcmFtZSgpLT5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQotICAgIGF1dG8g
c2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGRvY3VtZW50LT5kb2N1bWVu
dEVsZW1lbnQoKTsNCi0gICAgaWYgKCFzY29wZSkNCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7DQotDQotICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIHJhbmdlKTsNCi19DQogDQogLy8gVGhpcyBtZXRob2Qg
aXMgaW50ZW5kZWQgdG8gdGFrZSBhIHRleHQgbWFya2VyIHJlcHJlc2VudGluZyBhIFZpc2libGVQ
b3NpdGlvbiBhbmQgY29udmVydCBpdA0KIC8vIGludG8gYSBub3JtYWxpemVkIGxvY2F0aW9uIHdp
dGhpbiB0aGUgZG9jdW1lbnQuDQpAQCAtMjI2Nyw3ICsyMjIzLDcgQEAgc3RhdGljIFJlbmRlck9i
amVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgICAgICBhdXRvIHJhbmdl
ID0gY2FjaGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjaGFyYWN0ZXJPZmZz
ZXQsIGNoYXJhY3Rlck9mZnNldCk7DQogICAgICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgICAg
IHJldHVybiBOU05vdEZvdW5kOw0KLSAgICAgICAgcmV0dXJuIFtzZWxmIF9jb252ZXJ0VG9OU1Jh
bmdlOipyYW5nZV0ubG9jYXRpb247DQorICAgICAgICByZXR1cm4gY29udmVydFRvTlNSYW5nZSgq
cmFuZ2UpLmxvY2F0aW9uOw0KICAgICB9DQogICAgIHJldHVybiBOU05vdEZvdW5kOw0KIH0NCkBA
IC0yMzQ2LDcgKzIzMDIsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXco
V0FLVmlldyogdmlldykNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxs
XSkNCiAgICAgICAgIHJldHVybiBuaWw7DQogDQotICAgIGF1dG8gcmFuZ2UgPSBbc2VsZiBfY29u
dmVydFRvRE9NUmFuZ2U6TlNNYWtlUmFuZ2UocG9zaXRpb24sIDApXTsNCisgICAgYXV0byByYW5n
ZSA9IFtzZWxmIGNvbnZlcnRUb0RPTVJhbmdlOk5TTWFrZVJhbmdlKHBvc2l0aW9uLCAwKV07DQog
ICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm4gbmlsOw0KIA0KQEAgLTI0MTQsNyArMjM3
MCw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3
KQ0KIHsNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCiAgICAg
ICAgIHJldHVybiBuaWw7DQotICAgIGF1dG8gd2ViUmFuZ2UgPSBbc2VsZiBfY29udmVydFRvRE9N
UmFuZ2U6cmFuZ2VdOw0KKyAgICBhdXRvIHdlYlJhbmdlID0gW3NlbGYgY29udmVydFRvRE9NUmFu
Z2U6cmFuZ2VdOw0KICAgICBpZiAoIXdlYlJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiAg
ICAgcmV0dXJuIHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zdHJpbmdGb3JSYW5nZSgqd2ViUmFuZ2Up
Ow0KQEAgLTI2MDAsNiArMjU1NiwxNSBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZv
clZpZXcoV0FLVmlldyogdmlldykNCiAgICAgcmV0dXJuIFtzZWxmIHByZXZpb3VzTWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0OnN0YXJ0XTsNCiB9DQogDQorLSAoQ0dSZWN0KWZyYW1lRm9yUmFuZ2U6
KE5TUmFuZ2UpcmFuZ2UNCit7DQorICAgIGF1dG8gd2ViUmFuZ2UgPSBbc2VsZiBjb252ZXJ0VG9E
T01SYW5nZTpyYW5nZV07DQorICAgIGlmICghd2ViUmFuZ2UpDQorICAgICAgICByZXR1cm4gQ0dS
ZWN0WmVybzsNCisgICAgYXV0byByZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmJvdW5kc0Zv
clJhbmdlKCp3ZWJSYW5nZSk7DQorICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6
cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpTY3JlZW5dOw0KK30NCisN
CiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byByZXR1cm4gdGhlIGJvdW5kcyBvZiBhIHRl
eHQgbWFya2VyIHJhbmdlIGluIHNjcmVlbiBjb29yZGluYXRlcy4NCiAtIChDR1JlY3QpZnJhbWVG
b3JUZXh0TWFya2VyczooTlNBcnJheSAqKWFycmF5DQogew0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLmgNCmluZGV4IGVlYTNlNjlkZWQ5My4uMTkyMDkxNTJkMTkxIDEwMDY0
NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oDQpAQCAtMTExLDExICsxMTEs
MTYgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRl
eHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWwNCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0
eU1hdGhQb3N0c2NyaXB0UGFpcnM7DQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlNYXRoUHJl
c2NyaXB0UGFpcnM7DQogDQorLSAoV2ViQ29yZTo6RmxvYXRSZWN0KWFjY2Vzc2liaWxpdHlVbm9i
c2N1cmVkQ29udGVudFJlY3Q7DQorLSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJh
Y3RlclJhbmdlOw0KKy0gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KWNvbnZl
cnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlOw0KKw0KIC0gKE5TRGljdGlvbmFyeTxOU1N0cmlu
ZyAqLCBpZD4gKiliYXNlQWNjZXNzaWJpbGl0eVJlc29sdmVkRWRpdGluZ1N0eWxlczsNCiANCiBl
eHRlcm4gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGFjY2Vzc2liaWxpdHlT
ZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoY29u
c3QgTlNEaWN0aW9uYXJ5ICopOw0KIA0KIGV4dGVybiBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5
KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
Jik7DQorZXh0ZXJuIE5TUmFuZ2UgY29udmVydFRvTlNSYW5nZShjb25zdCBXZWJDb3JlOjpTaW1w
bGVSYW5nZSYpOw0KIA0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQ0KIC0gKGlkKV9hY2Nlc3Np
YmlsaXR5V2ViRG9jdW1lbnRWaWV3Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5tbQ0KaW5kZXggYWU2NWU0OWFhZDA2Li4xMWEwODNjMzlmOWIgMTAwNjQ0DQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckJhc2UubW0NCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQ0KQEAgLTQ2Miw2ICs0NjIsNjkgQEAgc3Rh
dGljIHZvaWQgY29udmVydFBhdGhUb1NjcmVlblNwYWNlRnVuY3Rpb24oUGF0aENvbnZlcnNpb25J
bmZvJiBjb252ZXJzaW9uLCBjb24NCiAgICAgcmV0dXJuIGNvbnZlcnRlZFBhdGguYXV0b3JlbGVh
c2UoKTsNCiB9DQogDQorLSAoRmxvYXRSZWN0KWFjY2Vzc2liaWxpdHlVbm9ic2N1cmVkQ29udGVu
dFJlY3QNCit7DQorICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9j
dW1lbnQoKTsNCisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkNCisgICAg
ICAgIHJldHVybiB7IH07DQorICAgIHJldHVybiBGbG9hdFJlY3Qoc25hcHBlZEludFJlY3QoZG9j
dW1lbnQtPnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpKTsNCit9DQorDQorLy8gRGV0
ZXJtaW5lIHRoZSB2aXNpYmxlIHJhbmdlIGJ5IGNoZWNraW5nIGludGVyc2VjdGlvbiBvZiB1bm9i
c2N1cmVkQ29udGVudFJlY3QgYW5kIGEgcmFuZ2Ugb2YgdGV4dCBieQ0KKy8vIGFkdmFuY2luZyBm
b3J3YXJkIGJ5IGxpbmUgZnJvbSB0b3AgYW5kIGJhY2t3YXJkcyBieSBsaW5lIGZyb20gdGhlIGJv
dHRvbSwgdW50aWwgd2UgaGF2ZSBhIHZpc2libGUgcmFuZ2UuDQorLSAoTlNSYW5nZSlhY2Nlc3Np
YmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlDQorew0KKyAgICBhdXRvIGJhY2tpbmdPYmplY3Qg
PSBzZWxmLmluaXRpYWxpemVCYWNraW5nU3RvcmU7DQorICAgIGlmICghYmFja2luZ09iamVjdCkN
CisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCisNCisgICAgYXV0
byByYW5nZSA9IGJhY2tpbmdPYmplY3QtPmVsZW1lbnRSYW5nZSgpOw0KKyAgICBpZiAoIXJhbmdl
KQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICBh
dXRvIGNvbnRlbnRSZWN0ID0gW3NlbGYgYWNjZXNzaWJpbGl0eVVub2JzY3VyZWRDb250ZW50UmVj
dF07DQorICAgIGF1dG8gZWxlbWVudFJlY3QgPSBzbmFwcGVkSW50UmVjdChiYWNraW5nT2JqZWN0
LT5lbGVtZW50UmVjdCgpKTsNCisgICAgaWYgKCFjb250ZW50UmVjdC5pbnRlcnNlY3RzKGVsZW1l
bnRSZWN0KSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCisN
CisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBzdGFydEJvdW5kYXJ5ID0gcmFuZ2Ut
PnN0YXJ0Ow0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IGVuZEJvdW5kYXJ5ID0g
cmFuZ2UtPmVuZDsNCisNCisgICAgTlNSYW5nZSBmdWxsUmFuZ2UgPSBjb252ZXJ0VG9OU1Jhbmdl
KFNpbXBsZVJhbmdlKCpzdGFydEJvdW5kYXJ5LCAqZW5kQm91bmRhcnkpKTsNCisNCisgICAgLy8g
T3JpZ2luIGlzbid0IGNvbnRhaW5lZCBpbiB2aXNpYmxlIHJlY3QsIHN0YXJ0IG1vdmluZyBmb3J3
YXJkIGJ5IGxpbmUuDQorICAgIHdoaWxlICghY29udGVudFJlY3QuY29udGFpbnMoZWxlbWVudFJl
Y3QubG9jYXRpb24oKSkpIHsNCisgICAgICAgIGF1dG8gbmV4dExpbmVQb3NpdGlvbiA9IGJhY2tp
bmdPYmplY3QtPm5leHRMaW5lRW5kUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1ha2VDb250YWlu
ZXJPZmZzZXRQb3NpdGlvbigqc3RhcnRCb3VuZGFyeSkpKTsNCisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8Qm91bmRhcnlQb2ludD4gdGVzdFN0YXJ0Qm91bmRhcnkgPSBtYWtlQm91bmRhcnlQb2ludChu
ZXh0TGluZVBvc2l0aW9uKTsNCisgICAgICAgIGlmICghdGVzdFN0YXJ0Qm91bmRhcnkgfHwgIWNv
bnRhaW5zKCpyYW5nZSwgKnRlc3RTdGFydEJvdW5kYXJ5KSkNCisgICAgICAgICAgICBicmVhazsN
CisgICAgICAgIA0KKyAgICAgICAgc3RhcnRCb3VuZGFyeSA9IHRlc3RTdGFydEJvdW5kYXJ5Ow0K
KyAgICAgICAgZWxlbWVudFJlY3QgPSBiYWNraW5nT2JqZWN0LT5ib3VuZHNGb3JSYW5nZShTaW1w
bGVSYW5nZSgqc3RhcnRCb3VuZGFyeSwgcmFuZ2UtPmVuZCkpOw0KKyAgICAgICAgaWYgKGVsZW1l
bnRSZWN0LmlzRW1wdHkoKSkNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKw0KKyAgICAv
LyBFbmQgaXNuJ3QgY29udGFpbmVkIGluIHZpc2libGUgcmVjdCwgc3RhcnQgbW92aW5nIGJhY2t3
YXJkcyBieSBsaW5lLg0KKyAgICB3aGlsZSAoIWNvbnRlbnRSZWN0LmNvbnRhaW5zKGVsZW1lbnRS
ZWN0LmxvY2F0aW9uKCkgKyBlbGVtZW50UmVjdC5zaXplKCkpKSB7DQorICAgICAgICBhdXRvIHBy
ZXZpb3VzTGluZVBvc2l0aW9uID0gYmFja2luZ09iamVjdC0+cHJldmlvdXNMaW5lU3RhcnRQb3Np
dGlvbihWaXNpYmxlUG9zaXRpb24obWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKCplbmRCb3Vu
ZGFyeSkpKTsNCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVzdEVuZEJv
dW5kYXJ5ID0gbWFrZUJvdW5kYXJ5UG9pbnQocHJldmlvdXNMaW5lUG9zaXRpb24pOw0KKyAgICAg
ICAgaWYgKCF0ZXN0RW5kQm91bmRhcnkgfHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RFbmRCb3Vu
ZGFyeSkpDQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICANCisgICAgICAgIGVuZEJvdW5k
YXJ5ID0gdGVzdEVuZEJvdW5kYXJ5Ow0KKyAgICAgICAgZWxlbWVudFJlY3QgPSBiYWNraW5nT2Jq
ZWN0LT5ib3VuZHNGb3JSYW5nZShTaW1wbGVSYW5nZSgqc3RhcnRCb3VuZGFyeSwgKmVuZEJvdW5k
YXJ5KSk7DQorICAgICAgICBpZiAoZWxlbWVudFJlY3QuaXNFbXB0eSgpKQ0KKyAgICAgICAgICAg
IGJyZWFrOw0KKyAgICB9DQorDQorICAgIGlmICghc3RhcnRCb3VuZGFyeSB8fCAhZW5kQm91bmRh
cnkpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQorICAgIA0K
KyAgICBOU1JhbmdlIHZpc2libGVSYW5nZSA9IGNvbnZlcnRUb05TUmFuZ2UoU2ltcGxlUmFuZ2Uo
KnN0YXJ0Qm91bmRhcnksICplbmRCb3VuZGFyeSkpOw0KKyAgICByZXR1cm4gTlNNYWtlUmFuZ2Uo
dmlzaWJsZVJhbmdlLmxvY2F0aW9uIC0gZnVsbFJhbmdlLmxvY2F0aW9uLCB2aXNpYmxlUmFuZ2Uu
bGVuZ3RoKTsNCit9DQorDQogLSAoaWQpX2FjY2Vzc2liaWxpdHlXZWJEb2N1bWVudFZpZXcNCiB7
DQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOw0KQEAgLTYyMyw2ICs2ODYsNDggQEAgc3RhdGlj
IHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nKiBhdHRyU3RyaW5nLA0KICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldExhbmd1YWdlKGF0dHJT
dHJpbmcsIG5vZGUtPnJlbmRlcmVyKCksIGF0dHJTdHJpbmdSYW5nZSk7DQogfQ0KIA0KKw0KK05T
UmFuZ2UgY29udmVydFRvTlNSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpDQorew0KKyAg
ICBhdXRvJiBkb2N1bWVudCA9IHJhbmdlLnN0YXJ0LmRvY3VtZW50KCk7DQorICAgIGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKTsNCisgICAgaWYgKCFmcmFtZSkNCisgICAgICAgIHJldHVy
biBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCisNCisgICAgYXV0byogcm9vdEVkaXRhYmxl
RWxlbWVudCA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVt
ZW50KCk7DQorICAgIGF1dG8qIHNjb3BlID0gcm9vdEVkaXRhYmxlRWxlbWVudCA/IHJvb3RFZGl0
YWJsZUVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsNCisgICAgaWYgKCFzY29w
ZSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCisNCisgICAg
Ly8gTW91c2UgZXZlbnRzIG1heSBjYXVzZSBUU00gdG8gYXR0ZW1wdCB0byBjcmVhdGUgYW4gTlNS
YW5nZSBmb3IgYSBwb3J0aW9uIG9mIHRoZSB2aWV3DQorICAgIC8vIHRoYXQgaXMgbm90IGluc2lk
ZSB0aGUgY3VycmVudCBlZGl0YWJsZSByZWdpb24uIFRoZXNlIGNoZWNrcyBlbnN1cmUgd2UgZG9u
J3QgcHJvZHVjZQ0KKyAgICAvLyBwb3RlbnRpYWxseSBpbnZhbGlkIGRhdGEgd2hlbiByZXNwb25k
aW5nIHRvIHN1Y2ggcmVxdWVzdHMuDQorICAgIGlmICghc2NvcGUtPmNvbnRhaW5zKHJhbmdlLnN0
YXJ0LmNvbnRhaW5lci5wdHIoKSkgfHwgIXNjb3BlLT5jb250YWlucyhyYW5nZS5lbmQuY29udGFp
bmVyLnB0cigpKSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsN
CisNCisgICAgcmV0dXJuIE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KHsgeyAqc2NvcGUsIDAg
fSwgcmFuZ2Uuc3RhcnQgfSksIGNoYXJhY3RlckNvdW50KHJhbmdlKSk7DQorfQ0KKw0KKy0gKHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+KWNvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdl
DQorew0KKyAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkNCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIC8vIG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlz
IHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdA0KKyAgICAvLyBj
b25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uDQorICAg
IC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJl
YXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdA0KKyAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9j
dW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24g
aXMNCisgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVj
dGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLg0KKyAgICAvLyBUaGF0IGZpdHMgd2l0
aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuDQorICAgIGF1dG8gZG9jdW1lbnQg
PSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCisgICAgYXV0byBzZWxlY3Rpb25S
b290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0
YWJsZUVsZW1lbnQoKTsNCisgICAgYXV0byBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rp
b25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOw0KKyAgICBpZiAoIXNjb3BlKQ0K
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgcmV0dXJuIHJlc29sdmVDaGFy
YWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgcmFuZ2Up
Ow0KK30NCisNCiAvLyBSZXR1cm5zIGFuIGFycmF5IG9mIHN0cmluZ3MgYW5kIEFYT2JqZWN0IHdy
YXBwZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRleHQNCiAvLyBydW5zIGFuZCByZXBsYWNlbWVu
dCBub2RlcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gcmFuZ2UuDQogLSAoTlNBcnJheSAqKWNvbnRl
bnRGb3JTaW1wbGVSYW5nZTooY29uc3QgU2ltcGxlUmFuZ2UmKXJhbmdlIGF0dHJpYnV0ZWQ6KEJP
T0wpYXR0cmlidXRlZA0KQEAgLTY3NiwxOCArNzgxLDI2IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmli
dXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmlu
ZywNCiAgICAgcmV0dXJuIGFycmF5LmF1dG9yZWxlYXNlKCk7DQogfQ0KIA0KLS0gKE5TQXJyYXk8
TlNEaWN0aW9uYXJ5ICo+ICopbGluZVJlY3RzQW5kVGV4dA0KKy0gKFdlYkNvcmU6OkFYQ29yZU9i
amVjdCopaW5pdGlhbGl6ZUJhY2tpbmdTdG9yZQ0KIHsNCiAjaWYgUExBVEZPUk0oTUFDKQ0KICAg
ICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi51cGRhdGVPYmplY3RCYWNraW5nU3RvcmU7DQog
ICAgIGlmICghYmFja2luZ09iamVjdCkNCi0gICAgICAgIHJldHVybiBuaWw7DQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsNCiAjZWxzZQ0KICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJp
bGl0eUNhbGxdKQ0KLSAgICAgICAgcmV0dXJuIG5pbDsNCisgICAgICAgIHJldHVybiBudWxscHRy
Ow0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7DQogI2Vu
ZGlmDQorICAgIHJldHVybiBiYWNraW5nT2JqZWN0Ow0KK30NCiANCistIChOU0FycmF5PE5TRGlj
dGlvbmFyeSAqPiAqKWxpbmVSZWN0c0FuZFRleHQNCit7DQorICAgIGF1dG8gYmFja2luZ09iamVj
dCA9IHNlbGYuaW5pdGlhbGl6ZUJhY2tpbmdTdG9yZTsNCisgICAgaWYgKCFiYWNraW5nT2JqZWN0
KQ0KKyAgICAgICAgcmV0dXJuIG5pbDsNCisgICAgDQogICAgIGF1dG8gcmFuZ2UgPSBiYWNraW5n
T2JqZWN0LT5lbGVtZW50UmFuZ2UoKTsNCiAgICAgaWYgKCFyYW5nZSkNCiAgICAgICAgIHJldHVy
biBuaWw7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQ0KaW5kZXggYTFk
NjVjYzBhMGFhLi42Y2EwYmEyNjYzMjEgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQ0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0NCkBAIC0yMjY4LDE2ICsyMjY4LDIxIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHRleHRSYW5nZSA9
IGJhY2tpbmdPYmplY3QtPnNlbGVjdGVkVGV4dFJhbmdlKCk7DQogICAgICAgICAgICAgcmV0dXJu
IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHRleHRSYW5nZS5zdGFydCwgdGV4
dFJhbmdlLmxlbmd0aCldOw0KICAgICAgICAgfQ0KLSAgICAgICAgLy8gVE9ETzogR2V0IGFjdHVh
bCB2aXNpYmxlIHJhbmdlLiA8cmRhcjovL3Byb2JsZW0vNDcxMjEwMT4NCi0gICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGFy
YWN0ZXJSYW5nZUF0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3Qt
PmlzUGFzc3dvcmRGaWVsZCgpID8gbmlsIDogW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6IE5TTWFr
ZVJhbmdlKDAsIGJhY2tpbmdPYmplY3QtPnRleHRMZW5ndGgoKSldOw0KLQ0KICAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbnNlcnRpb25Q
b2ludExpbmVOdW1iZXJBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIg
PSBiYWNraW5nT2JqZWN0LT5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXIoKTsNCiAgICAgICAgICAg
ICByZXR1cm4gbGluZU51bWJlciA+PSAwID8gQChsaW5lTnVtYmVyKSA6IG5pbDsNCiAgICAgICAg
IH0NCiAgICAgfQ0KIA0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBO
U0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKSB7DQorICAgICAg
ICBpZiAoYmFja2luZ09iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkpDQorICAgICAgICAgICAgcmV0
dXJuIG5pbDsNCisgICAgICAgIC8vIFRPRE86IEdldCBhY3R1YWwgdmlzaWJsZSByYW5nZS4gPHJk
YXI6Ly9wcm9ibGVtLzQ3MTIxMDE+DQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUZXh0
Q29udHJvbCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpO
U01ha2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0LT50ZXh0TGVuZ3RoKCkpXTsNCisgICAgICAgIHJl
dHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpbc2VsZiBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNo
YXJhY3RlclJhbmdlXV07DQorICAgIH0NCisNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXSkgew0KICAgICAgICAgVVJM
IHVybCA9IGJhY2tpbmdPYmplY3QtPnVybCgpOw0KICAgICAgICAgaWYgKHVybC5pc051bGwoKSkN
CkBAIC0zNDM1LDIyICszNDQwLDYgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5EDQogICAgIH0pOw0KIH0NCiANCi0vLyBGSVhNRTogTm8gcmVhc29uIGZvciB0aGlzIHRvIGJl
IGEgbWV0aG9kIGluc3RlYWQgb2YgYSBmdW5jdGlvbjsgY2FuIGdldCBkb2N1bWVudCBmcm9tIHJh
bmdlLg0KLS0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNvbnN0IFNpbXBsZVJhbmdlJily
YW5nZQ0KLXsNCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsNCi0gICAgDQotICAgIGF1dG8g
ZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCi0gICAgaWYgKCFk
b2N1bWVudCkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0N
Ci0gICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7
DQotICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdl
KE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICByZXR1cm4gY2hhcmFjdGVyUmFuZ2UobWFrZUJvdW5k
YXJ5UG9pbnRCZWZvcmVOb2RlQ29udGVudHMoKmRvY3VtZW50RWxlbWVudCksIHJhbmdlKTsNCi19
DQotDQogLSAoTlNJbnRlZ2VyKV9pbmRleEZvclRleHRNYXJrZXI6KEFYVGV4dE1hcmtlclJlZilt
YXJrZXINCiB7DQogICAgIGlmICghbWFya2VyKQ0KQEAgLTM0NjcsNyArMzQ1Niw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIGlmICghcmFuZ2Up
DQogICAgICAgICAgICAgICAgIHJldHVybiBOU05vdEZvdW5kOw0KIA0KLSAgICAgICAgICAgIHJl
dHVybiBbcHJvdGVjdGVkU2VsZiBfY29udmVydFRvTlNSYW5nZToqcmFuZ2VdLmxvY2F0aW9uOw0K
KyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU1JhbmdlKCpyYW5nZSkubG9jYXRpb247DQog
ICAgICAgICB9DQogDQogICAgICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444751</attachid>
            <date>2021-11-18 16:06:51 -0800</date>
            <delta_ts>2021-11-19 00:15:39 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>27028</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZjE3M2FiMzI3Zjg1Li5hZTVmMDMyOGMxYjAgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
MyBAQA0KKzIwMjEtMTEtMTggIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy92aXNp
YmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLg0KKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sOiBBZGRlZC4NCisNCiAy
MDIxLTExLTEyICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPg0KIA0KICAgICAg
ICAgW1dlYiBBbmltYXRpb25zXSBBY2NlbGVyYXRlZCBhbmltYXRpb25zIHdpdGggYSBzaW5nbGUg
a2V5ZnJhbWUgZG9uJ3QgYWNjb3VudCBmb3IgcHJpb3IgZm9yd2FyZC1maWxsaW5nIGFuaW1hdGlv
bnMNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLWNo
YXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQNCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjdkNGI5NzU4OTdhNg0KLS0tIC9kZXYvbnVsbA0KKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2Ut
ZXhwZWN0ZWQudHh0DQpAQCAtMCwwICsxLDEyIEBADQorVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVD
aGFyYWN0ZXJSYW5nZSByZXR1cm5zIGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlm
eWluZyBvYnNjdXJlZCBjb250ZW50Lg0KKw0KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4NCisN
CisNCitWaXNpYmxlIHJhbmdlOiBOU1JhbmdlOiB7MCwgNDY0MH0NCitWaXNpYmxlIHJhbmdlICgy
MDAsIDIwMCk6IE5TUmFuZ2U6IHswLCAzMDB9DQorVmlzaWJsZSByYW5nZSwgb2Zmc2V0OiA1MCAo
MjAwLCA1MDApOiBOU1JhbmdlOiB7OTAsIDgxMH0NCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlDQorDQorVEVTVCBDT01QTEVURQ0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sDQpuZXcgZmls
ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi42YjQwYTgyMmNlN2MNCi0tLSAvZGV2
L251bGwNCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtY2hhcmFj
dGVyLXJhbmdlLmh0bWwNCkBAIC0wLDAgKzEsNzggQEANCis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+DQorPGh0bWw+DQorPGhlYWQ+DQorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxi
b2R5IGlkPSJib2R5Ij4NCisNCis8ZGl2IGlkPSJncm91cCI+DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QN
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0K
K3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQor
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCis8L2Rpdj4NCisN
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4NCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCisN
Cis8c2NyaXB0Pg0KKw0KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVD
aGFyYWN0ZXJSYW5nZSByZXR1cm5zIGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlm
eWluZyBvYnNjdXJlZCBjb250ZW50LiIpOw0KKw0KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7DQorDQorICAgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJncm91cCIpLmNoaWxkQXRJbmRleCgwKTsN
CisgICAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2U6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0
aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0Vmlld1NpemUoMjAwLCAyMDApOw0KKyAgICAgICAgICBkZWJ1
ZygiVmlzaWJsZSByYW5nZSAoMjAwLCAyMDApOiAiICsgdGV4dC5zdHJpbmdEZXNjcmlwdGlvbk9m
QXR0cmlidXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikpOw0KKw0KKyAgICAgICAg
ICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDUwOw0KKyAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFZpZXdTaXplKDIwMCwgNTAwKTsNCisgICAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2UsIG9m
ZnNldDogNTAgKDIwMCwgNTAwKTogIiArIHRleHQuc3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0
ZVZhbHVlKCJBWFZpc2libGVDaGFyYWN0ZXJSYW5nZSIpKTsNCisNCisgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOw0K
KyAgICB9DQorDQorPC9zY3JpcHQ+DQorDQorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQpp
bmRleCBjN2VhM2FjZTBjODUuLjA5ZWNkZGJkZWRiYiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZw0KKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQpAQCAtMSwzICsx
LDM2IEBADQorMjAyMS0xMS0xOCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29t
Pg0KKw0KKyAgICAgICAgQVg6IFdlYktpdDogbmVlZCBhIG1ldGhvZCB0byBnZXQgdmlzaWJsZSB0
ZXh0IGFuZCBmcmFtZSBvZiBhbiBlbGVtZW50IG9uIHNjcmVlbg0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzMzNg0KKw0KKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAgICBJbXBsZW1lbnQgdmlzaWJsZUNoYXJh
Y3RlclJhbmdlIGZvciBzdGF0aWMgdGV4dCBlbGVtZW50cyBzbyB0aGF0IEJvb2tzIGNhbiBkZXRl
cm1pbmUgdGhlIHZpc2libGUNCisgICAgICAgIGNvbnRlbnQgb24gYSBwYWdlLg0KKw0KKyAgICAg
ICAgVGVzdDogYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0K
Kw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlWaXNpYmxlQ29udGVudFJlY3RdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIHBvc2l0aW9uRm9yVGV4dE1hcmtlcjpdKToNCisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJGb3JQb3NpdGlvbjpdKToN
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHN0cmluZ0ZvclJhbmdl
Ol0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZnJhbWVGb3JS
YW5nZTpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9jb252
ZXJ0VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgX2NvbnZlcnRUb0RPTVJhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaDoNCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlLm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGFj
Y2Vzc2liaWxpdHlVbm9ic2N1cmVkQ29udGVudFJlY3RdKToNCisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJh
bmdlXSk6DQorICAgICAgICAoY29udmVydFRvTlNSYW5nZSk6DQorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgY29udmVydFRvRE9NUmFuZ2U6XSk6DQorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgaW5pdGlhbGl6ZUJhY2tpbmdz
U3RvcmVdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBs
aW5lUmVjdHNBbmRUZXh0XSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOg0KKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2luZGV4Rm9yVGV4dE1hcmtlcjpdKToN
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0VG9OU1Jh
bmdlOl0pOiBEZWxldGVkLg0KKw0KIDIwMjEtMTEtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4NCiANCiAgICAgICAgIERpc2FibGUgTWF0aE1MIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0
YWwgTW9kZQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCmluZGV4IDVl
MGM4YzhlYmM2Ny4uNWQ5OTBjYmFkZGEyIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tDQpAQCAtNDYsMTIgKzQ2LDE0IEBADQogI2ltcG9ydCAiSW50UmVjdC5oIg0K
ICNpbXBvcnQgIkxvY2FsaXplZFN0cmluZ3MuaCINCiAjaW1wb3J0ICJQYWdlLmgiDQorI2ltcG9y
dCAiUG9zaXRpb24uaCINCiAjaW1wb3J0ICJSYW5nZS5oIg0KICNpbXBvcnQgIlJlbmRlclZpZXcu
aCINCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCINCiAjaW1wb3J0ICJTVkdF
bGVtZW50SW5saW5lcy5oIg0KICNpbXBvcnQgIlNWR05hbWVzLmgiDQogI2ltcG9ydCAiU2VsZWN0
aW9uR2VvbWV0cnkuaCINCisjaW1wb3J0ICJTaW1wbGVSYW5nZS5oIg0KICNpbXBvcnQgIlRleHRJ
dGVyYXRvci5oIg0KICNpbXBvcnQgIldBS1Njcm9sbFZpZXcuaCINCiAjaW1wb3J0ICJXQUtXaW5k
b3cuaCINCkBAIC0xNjk0LDEyICsxNjk2LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9S
ZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpDQogew0KICAg
ICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KICAgICAgICAgcmV0dXJu
IENHUmVjdFplcm87DQotICAgIA0KLSAgICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdP
YmplY3QtPmRvY3VtZW50KCk7DQotICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3
KCkpDQotICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCi0gICAgYXV0byByZWN0ID0gRmxvYXRS
ZWN0KHNuYXBwZWRJbnRSZWN0KGRvY3VtZW50LT52aWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVj
dCgpKSk7DQotICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6cmVjdCBzcGFjZTpB
Y2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpTY3JlZW5dOw0KKyAgICByZXR1cm4gW3NlbGYg
Y29udmVydFJlY3RUb1NwYWNlOltzZWxmIGFjY2Vzc2liaWxpdHlVbm9ic2N1cmVkQ29udGVudFJl
Y3RdIHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl07DQogfQ0KIA0K
IC8vIFRoZSAiY2VudGVyIHBvaW50IiBpcyB3aGVyZSBWb2ljZU92ZXIgd2lsbCAicHJlc3MiIGFu
IG9iamVjdC4gVGhpcyBtYXkgbm90IGJlIHRoZSBhY3R1YWwNCkBAIC0yMjA5LDQ3ICsyMjA2LDYg
QEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQog
ICAgIHJldHVybiByYW5nZSA/IFtzZWxmIGNvbnRlbnRGb3JTaW1wbGVSYW5nZToqcmFuZ2UgYXR0
cmlidXRlZDphdHRyaWJ1dGVkXSA6IG5pbDsNCiB9DQogDQotLy8gRklYTUU6IE5vIHJlYXNvbiBm
b3IgdGhpcyB0byBiZSBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rpb24uDQotLSAoTlNSYW5n
ZSlfY29udmVydFRvTlNSYW5nZTooY29uc3QgU2ltcGxlUmFuZ2UmKXJhbmdlDQotew0KLSAgICBh
dXRvJiBkb2N1bWVudCA9IHJhbmdlLnN0YXJ0LmRvY3VtZW50KCk7DQotICAgIGF1dG8qIGZyYW1l
ID0gZG9jdW1lbnQuZnJhbWUoKTsNCi0gICAgaWYgKCFmcmFtZSkNCi0gICAgICAgIHJldHVybiBO
U01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgYXV0byogcm9vdEVkaXRhYmxlRWxl
bWVudCA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50
KCk7DQotICAgIGF1dG8qIHNjb3BlID0gcm9vdEVkaXRhYmxlRWxlbWVudCA/IHJvb3RFZGl0YWJs
ZUVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsNCi0gICAgaWYgKCFzY29wZSkN
Ci0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgLy8g
TW91c2UgZXZlbnRzIG1heSBjYXVzZSBUU00gdG8gYXR0ZW1wdCB0byBjcmVhdGUgYW4gTlNSYW5n
ZSBmb3IgYSBwb3J0aW9uIG9mIHRoZSB2aWV3DQotICAgIC8vIHRoYXQgaXMgbm90IGluc2lkZSB0
aGUgY3VycmVudCBlZGl0YWJsZSByZWdpb24uIFRoZXNlIGNoZWNrcyBlbnN1cmUgd2UgZG9uJ3Qg
cHJvZHVjZQ0KLSAgICAvLyBwb3RlbnRpYWxseSBpbnZhbGlkIGRhdGEgd2hlbiByZXNwb25kaW5n
IHRvIHN1Y2ggcmVxdWVzdHMuDQotICAgIGlmICghc2NvcGUtPmNvbnRhaW5zKHJhbmdlLnN0YXJ0
LmNvbnRhaW5lci5wdHIoKSkgfHwgIXNjb3BlLT5jb250YWlucyhyYW5nZS5lbmQuY29udGFpbmVy
LnB0cigpKSkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0N
Ci0gICAgcmV0dXJuIE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KHsgeyAqc2NvcGUsIDAgfSwg
cmFuZ2Uuc3RhcnQgfSksIGNoYXJhY3RlckNvdW50KHJhbmdlKSk7DQotfQ0KLQ0KLS0gKHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZQ0K
LXsNCi0gICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpDQotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0Ow0KLQ0KLSAgICAvLyBvdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0
aGF0IHdlIGFyZSBvbmx5IGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQNCi0gICAgLy8gY29u
Y2VudHJhdGUgb24gYSBnaXZlbiBhcmVhIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbg0KLSAgICAv
LyBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFz
LiBUaGUgRE9NIGZvciB0aG9zZSBpcyBub3QNCi0gICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3Vt
ZW50IERPTSwgc28gc2VyaWFsaXphdGlvbiBpcyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlz
DQotICAgIC8vIHRvIHVzZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rp
b24gc3RhcnQgYXMgdGhlIHBvc2l0aW9uYWwgYmFzZS4NCi0gICAgLy8gVGhhdCBmaXRzIHdpdGgg
QXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0Lg0KLSAgICBhdXRvIGRvY3VtZW50ID0g
c2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7DQotICAgIGF1dG8gc2VsZWN0aW9uUm9v
dCA9IGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFi
bGVFbGVtZW50KCk7DQotICAgIGF1dG8gc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9u
Um9vdCA6IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsNCi0gICAgaWYgKCFzY29wZSkNCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQotDQotICAgIHJldHVybiByZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIHJhbmdlKTsN
Ci19DQogDQogLy8gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gdGFrZSBhIHRleHQgbWFya2Vy
IHJlcHJlc2VudGluZyBhIFZpc2libGVQb3NpdGlvbiBhbmQgY29udmVydCBpdA0KIC8vIGludG8g
YSBub3JtYWxpemVkIGxvY2F0aW9uIHdpdGhpbiB0aGUgZG9jdW1lbnQuDQpAQCAtMjI2Nyw3ICsy
MjIzLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZp
ZXcpDQogICAgICAgICBhdXRvIHJhbmdlID0gY2FjaGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFj
dGVyT2Zmc2V0cyhjaGFyYWN0ZXJPZmZzZXQsIGNoYXJhY3Rlck9mZnNldCk7DQogICAgICAgICBp
ZiAoIXJhbmdlKQ0KICAgICAgICAgICAgIHJldHVybiBOU05vdEZvdW5kOw0KLSAgICAgICAgcmV0
dXJuIFtzZWxmIF9jb252ZXJ0VG9OU1JhbmdlOipyYW5nZV0ubG9jYXRpb247DQorICAgICAgICBy
ZXR1cm4gY29udmVydFRvTlNSYW5nZSgqcmFuZ2UpLmxvY2F0aW9uOw0KICAgICB9DQogICAgIHJl
dHVybiBOU05vdEZvdW5kOw0KIH0NCkBAIC0yMzQ2LDcgKzIzMDIsNyBAQCBzdGF0aWMgUmVuZGVy
T2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgaWYgKCFbc2VsZiBf
cHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCiAgICAgICAgIHJldHVybiBuaWw7DQogDQotICAg
IGF1dG8gcmFuZ2UgPSBbc2VsZiBfY29udmVydFRvRE9NUmFuZ2U6TlNNYWtlUmFuZ2UocG9zaXRp
b24sIDApXTsNCisgICAgYXV0byByYW5nZSA9IFtzZWxmIGNvbnZlcnRUb0RPTVJhbmdlOk5TTWFr
ZVJhbmdlKHBvc2l0aW9uLCAwKV07DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm4g
bmlsOw0KIA0KQEAgLTI0MTQsNyArMjM3MCw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KIHsNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFj
Y2Vzc2liaWxpdHlDYWxsXSkNCiAgICAgICAgIHJldHVybiBuaWw7DQotICAgIGF1dG8gd2ViUmFu
Z2UgPSBbc2VsZiBfY29udmVydFRvRE9NUmFuZ2U6cmFuZ2VdOw0KKyAgICBhdXRvIHdlYlJhbmdl
ID0gW3NlbGYgY29udmVydFRvRE9NUmFuZ2U6cmFuZ2VdOw0KICAgICBpZiAoIXdlYlJhbmdlKQ0K
ICAgICAgICAgcmV0dXJuIG5pbDsNCiAgICAgcmV0dXJuIHNlbGYuYXhCYWNraW5nT2JqZWN0LT5z
dHJpbmdGb3JSYW5nZSgqd2ViUmFuZ2UpOw0KQEAgLTI2MDAsNiArMjU1NiwxNSBAQCBzdGF0aWMg
UmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgcmV0dXJu
IFtzZWxmIHByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OnN0YXJ0XTsNCiB9DQogDQor
LSAoQ0dSZWN0KWZyYW1lRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UNCit7DQorICAgIGF1dG8gd2Vi
UmFuZ2UgPSBbc2VsZiBjb252ZXJ0VG9ET01SYW5nZTpyYW5nZV07DQorICAgIGlmICghd2ViUmFu
Z2UpDQorICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCisgICAgYXV0byByZWN0ID0gc2VsZi5h
eEJhY2tpbmdPYmplY3QtPmJvdW5kc0ZvclJhbmdlKCp3ZWJSYW5nZSk7DQorICAgIHJldHVybiBb
c2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lv
blNwYWNlOjpTY3JlZW5dOw0KK30NCisNCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBy
ZXR1cm4gdGhlIGJvdW5kcyBvZiBhIHRleHQgbWFya2VyIHJhbmdlIGluIHNjcmVlbiBjb29yZGlu
YXRlcy4NCiAtIChDR1JlY3QpZnJhbWVGb3JUZXh0TWFya2VyczooTlNBcnJheSAqKWFycmF5DQog
ew0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgNCmluZGV4IGVlYTNlNjlk
ZWQ5My4uMTkyMDkxNTJkMTkxIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgNCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5oDQpAQCAtMTExLDExICsxMTEsMTYgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlB
Y2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWwNCiAt
IChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0UGFpcnM7DQogLSAoTlNBcnJh
eSAqKWFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0UGFpcnM7DQogDQorLSAoV2ViQ29yZTo6Rmxv
YXRSZWN0KWFjY2Vzc2liaWxpdHlVbm9ic2N1cmVkQ29udGVudFJlY3Q7DQorLSAoTlNSYW5nZSlh
Y2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlOw0KKy0gKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+KWNvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlOw0KKw0K
IC0gKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKiliYXNlQWNjZXNzaWJpbGl0eVJlc29s
dmVkRWRpdGluZ1N0eWxlczsNCiANCiBleHRlcm4gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJj
aENyaXRlcmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUoY29uc3QgTlNEaWN0aW9uYXJ5ICopOw0KIA0KIGV4dGVybiBO
U0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7DQorZXh0ZXJuIE5TUmFuZ2UgY29udmVydFRvTlNS
YW5nZShjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpOw0KIA0KICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQ0KIC0gKGlkKV9hY2Nlc3NpYmlsaXR5V2ViRG9jdW1lbnRWaWV3Ow0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQ0KaW5kZXggYWU2NWU0OWFhZDA2Li4xMWEw
ODNjMzlmOWIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0NCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQ0K
QEAgLTQ2Miw2ICs0NjIsNjkgQEAgc3RhdGljIHZvaWQgY29udmVydFBhdGhUb1NjcmVlblNwYWNl
RnVuY3Rpb24oUGF0aENvbnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBjb24NCiAgICAgcmV0dXJu
IGNvbnZlcnRlZFBhdGguYXV0b3JlbGVhc2UoKTsNCiB9DQogDQorLSAoRmxvYXRSZWN0KWFjY2Vz
c2liaWxpdHlVbm9ic2N1cmVkQ29udGVudFJlY3QNCit7DQorICAgIGF1dG8gZG9jdW1lbnQgPSBz
ZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCisgICAgaWYgKCFkb2N1bWVudCB8fCAh
ZG9jdW1lbnQtPnZpZXcoKSkNCisgICAgICAgIHJldHVybiB7IH07DQorICAgIHJldHVybiBGbG9h
dFJlY3Qoc25hcHBlZEludFJlY3QoZG9jdW1lbnQtPnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRS
ZWN0KCkpKTsNCit9DQorDQorLy8gRGV0ZXJtaW5lIHRoZSB2aXNpYmxlIHJhbmdlIGJ5IGNoZWNr
aW5nIGludGVyc2VjdGlvbiBvZiB1bm9ic2N1cmVkQ29udGVudFJlY3QgYW5kIGEgcmFuZ2Ugb2Yg
dGV4dCBieQ0KKy8vIGFkdmFuY2luZyBmb3J3YXJkIGJ5IGxpbmUgZnJvbSB0b3AgYW5kIGJhY2t3
YXJkcyBieSBsaW5lIGZyb20gdGhlIGJvdHRvbSwgdW50aWwgd2UgaGF2ZSBhIHZpc2libGUgcmFu
Z2UuDQorLSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlDQorew0K
KyAgICBhdXRvIGJhY2tpbmdPYmplY3QgPSBzZWxmLmluaXRpYWxpemVCYWNraW5nU3RvcmU7DQor
ICAgIGlmICghYmFja2luZ09iamVjdCkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05v
dEZvdW5kLCAwKTsNCisNCisgICAgYXV0byByYW5nZSA9IGJhY2tpbmdPYmplY3QtPmVsZW1lbnRS
YW5nZSgpOw0KKyAgICBpZiAoIXJhbmdlKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5T
Tm90Rm91bmQsIDApOw0KKw0KKyAgICBhdXRvIGNvbnRlbnRSZWN0ID0gW3NlbGYgYWNjZXNzaWJp
bGl0eVVub2JzY3VyZWRDb250ZW50UmVjdF07DQorICAgIGF1dG8gZWxlbWVudFJlY3QgPSBzbmFw
cGVkSW50UmVjdChiYWNraW5nT2JqZWN0LT5lbGVtZW50UmVjdCgpKTsNCisgICAgaWYgKCFjb250
ZW50UmVjdC5pbnRlcnNlY3RzKGVsZW1lbnRSZWN0KSkNCisgICAgICAgIHJldHVybiBOU01ha2VS
YW5nZShOU05vdEZvdW5kLCAwKTsNCisNCisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50
PiBzdGFydEJvdW5kYXJ5ID0gcmFuZ2UtPnN0YXJ0Ow0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvdW5k
YXJ5UG9pbnQ+IGVuZEJvdW5kYXJ5ID0gcmFuZ2UtPmVuZDsNCisNCisgICAgTlNSYW5nZSBmdWxs
UmFuZ2UgPSBjb252ZXJ0VG9OU1JhbmdlKFNpbXBsZVJhbmdlKCpzdGFydEJvdW5kYXJ5LCAqZW5k
Qm91bmRhcnkpKTsNCisNCisgICAgLy8gT3JpZ2luIGlzbid0IGNvbnRhaW5lZCBpbiB2aXNpYmxl
IHJlY3QsIHN0YXJ0IG1vdmluZyBmb3J3YXJkIGJ5IGxpbmUuDQorICAgIHdoaWxlICghY29udGVu
dFJlY3QuY29udGFpbnMoZWxlbWVudFJlY3QubG9jYXRpb24oKSkpIHsNCisgICAgICAgIGF1dG8g
bmV4dExpbmVQb3NpdGlvbiA9IGJhY2tpbmdPYmplY3QtPm5leHRMaW5lRW5kUG9zaXRpb24oVmlz
aWJsZVBvc2l0aW9uKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigqc3RhcnRCb3VuZGFyeSkp
KTsNCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVzdFN0YXJ0Qm91bmRh
cnkgPSBtYWtlQm91bmRhcnlQb2ludChuZXh0TGluZVBvc2l0aW9uKTsNCisgICAgICAgIGlmICgh
dGVzdFN0YXJ0Qm91bmRhcnkgfHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RTdGFydEJvdW5kYXJ5
KSkNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIA0KKyAgICAgICAgc3RhcnRCb3VuZGFy
eSA9IHRlc3RTdGFydEJvdW5kYXJ5Ow0KKyAgICAgICAgZWxlbWVudFJlY3QgPSBiYWNraW5nT2Jq
ZWN0LT5ib3VuZHNGb3JSYW5nZShTaW1wbGVSYW5nZSgqc3RhcnRCb3VuZGFyeSwgcmFuZ2UtPmVu
ZCkpOw0KKyAgICAgICAgaWYgKGVsZW1lbnRSZWN0LmlzRW1wdHkoKSkNCisgICAgICAgICAgICBi
cmVhazsNCisgICAgfQ0KKw0KKyAgICAvLyBFbmQgaXNuJ3QgY29udGFpbmVkIGluIHZpc2libGUg
cmVjdCwgc3RhcnQgbW92aW5nIGJhY2t3YXJkcyBieSBsaW5lLg0KKyAgICB3aGlsZSAoIWNvbnRl
bnRSZWN0LmNvbnRhaW5zKGVsZW1lbnRSZWN0LmxvY2F0aW9uKCkgKyBlbGVtZW50UmVjdC5zaXpl
KCkpKSB7DQorICAgICAgICBhdXRvIHByZXZpb3VzTGluZVBvc2l0aW9uID0gYmFja2luZ09iamVj
dC0+cHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obWFrZUNvbnRhaW5l
ck9mZnNldFBvc2l0aW9uKCplbmRCb3VuZGFyeSkpKTsNCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
Qm91bmRhcnlQb2ludD4gdGVzdEVuZEJvdW5kYXJ5ID0gbWFrZUJvdW5kYXJ5UG9pbnQocHJldmlv
dXNMaW5lUG9zaXRpb24pOw0KKyAgICAgICAgaWYgKCF0ZXN0RW5kQm91bmRhcnkgfHwgIWNvbnRh
aW5zKCpyYW5nZSwgKnRlc3RFbmRCb3VuZGFyeSkpDQorICAgICAgICAgICAgYnJlYWs7DQorICAg
ICAgICANCisgICAgICAgIGVuZEJvdW5kYXJ5ID0gdGVzdEVuZEJvdW5kYXJ5Ow0KKyAgICAgICAg
ZWxlbWVudFJlY3QgPSBiYWNraW5nT2JqZWN0LT5ib3VuZHNGb3JSYW5nZShTaW1wbGVSYW5nZSgq
c3RhcnRCb3VuZGFyeSwgKmVuZEJvdW5kYXJ5KSk7DQorICAgICAgICBpZiAoZWxlbWVudFJlY3Qu
aXNFbXB0eSgpKQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAgIGlmICghc3Rh
cnRCb3VuZGFyeSB8fCAhZW5kQm91bmRhcnkpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2Uo
TlNOb3RGb3VuZCwgMCk7DQorICAgIA0KKyAgICBOU1JhbmdlIHZpc2libGVSYW5nZSA9IGNvbnZl
cnRUb05TUmFuZ2UoU2ltcGxlUmFuZ2UoKnN0YXJ0Qm91bmRhcnksICplbmRCb3VuZGFyeSkpOw0K
KyAgICByZXR1cm4gTlNNYWtlUmFuZ2UodmlzaWJsZVJhbmdlLmxvY2F0aW9uIC0gZnVsbFJhbmdl
LmxvY2F0aW9uLCB2aXNpYmxlUmFuZ2UubGVuZ3RoKTsNCit9DQorDQogLSAoaWQpX2FjY2Vzc2li
aWxpdHlXZWJEb2N1bWVudFZpZXcNCiB7DQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOw0KQEAg
LTYyMyw2ICs2ODYsNDggQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4
dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLA0KICAgICBBWEF0dHJpYnV0
ZVN0cmluZ1NldExhbmd1YWdlKGF0dHJTdHJpbmcsIG5vZGUtPnJlbmRlcmVyKCksIGF0dHJTdHJp
bmdSYW5nZSk7DQogfQ0KIA0KKw0KK05TUmFuZ2UgY29udmVydFRvTlNSYW5nZShjb25zdCBTaW1w
bGVSYW5nZSYgcmFuZ2UpDQorew0KKyAgICBhdXRvJiBkb2N1bWVudCA9IHJhbmdlLnN0YXJ0LmRv
Y3VtZW50KCk7DQorICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsNCisgICAgaWYg
KCFmcmFtZSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCisN
CisgICAgYXV0byogcm9vdEVkaXRhYmxlRWxlbWVudCA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQorICAgIGF1dG8qIHNjb3BlID0gcm9vdEVk
aXRhYmxlRWxlbWVudCA/IHJvb3RFZGl0YWJsZUVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQoKTsNCisgICAgaWYgKCFzY29wZSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShO
U05vdEZvdW5kLCAwKTsNCisNCisgICAgLy8gTW91c2UgZXZlbnRzIG1heSBjYXVzZSBUU00gdG8g
YXR0ZW1wdCB0byBjcmVhdGUgYW4gTlNSYW5nZSBmb3IgYSBwb3J0aW9uIG9mIHRoZSB2aWV3DQor
ICAgIC8vIHRoYXQgaXMgbm90IGluc2lkZSB0aGUgY3VycmVudCBlZGl0YWJsZSByZWdpb24uIFRo
ZXNlIGNoZWNrcyBlbnN1cmUgd2UgZG9uJ3QgcHJvZHVjZQ0KKyAgICAvLyBwb3RlbnRpYWxseSBp
bnZhbGlkIGRhdGEgd2hlbiByZXNwb25kaW5nIHRvIHN1Y2ggcmVxdWVzdHMuDQorICAgIGlmICgh
c2NvcGUtPmNvbnRhaW5zKHJhbmdlLnN0YXJ0LmNvbnRhaW5lci5wdHIoKSkgfHwgIXNjb3BlLT5j
b250YWlucyhyYW5nZS5lbmQuY29udGFpbmVyLnB0cigpKSkNCisgICAgICAgIHJldHVybiBOU01h
a2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCisNCisgICAgcmV0dXJuIE5TTWFrZVJhbmdlKGNoYXJh
Y3RlckNvdW50KHsgeyAqc2NvcGUsIDAgfSwgcmFuZ2Uuc3RhcnQgfSksIGNoYXJhY3RlckNvdW50
KHJhbmdlKSk7DQorfQ0KKw0KKy0gKHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+KWNvbnZlcnRU
b0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlDQorew0KKyAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0g
TlNOb3RGb3VuZCkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIC8vIG91
ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0
IG1ldGhvZHMgdGhhdA0KKyAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFp
bmluZyB0aGUgc2VsZWN0aW9uDQorICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9m
IHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdA0KKyAg
ICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHBy
b2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMNCisgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRh
YmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNl
Lg0KKyAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRl
eHQuDQorICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQo
KTsNCisgICAgYXV0byBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCisgICAgYXV0byBzY29wZSA9
IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpOw0KKyAgICBpZiAoIXNjb3BlKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisN
CisgICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMoKnNjb3BlKSwgcmFuZ2UpOw0KK30NCisNCiAvLyBSZXR1cm5zIGFuIGFycmF5IG9m
IHN0cmluZ3MgYW5kIEFYT2JqZWN0IHdyYXBwZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRleHQN
CiAvLyBydW5zIGFuZCByZXBsYWNlbWVudCBub2RlcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gcmFu
Z2UuDQogLSAoTlNBcnJheSAqKWNvbnRlbnRGb3JTaW1wbGVSYW5nZTooY29uc3QgU2ltcGxlUmFu
Z2UmKXJhbmdlIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmlidXRlZA0KQEAgLTY3NiwxOCArNzgxLDI2
IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0
cmlidXRlZFN0cmluZyogYXR0clN0cmluZywNCiAgICAgcmV0dXJuIGFycmF5LmF1dG9yZWxlYXNl
KCk7DQogfQ0KIA0KLS0gKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopbGluZVJlY3RzQW5kVGV4
dA0KKy0gKFdlYkNvcmU6OkFYQ29yZU9iamVjdCopaW5pdGlhbGl6ZUJhY2tpbmdTdG9yZQ0KIHsN
CiAjaWYgUExBVEZPUk0oTUFDKQ0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi51cGRh
dGVPYmplY3RCYWNraW5nU3RvcmU7DQogICAgIGlmICghYmFja2luZ09iamVjdCkNCi0gICAgICAg
IHJldHVybiBuaWw7DQorICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAjZWxzZQ0KICAgICBpZiAo
IVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KLSAgICAgICAgcmV0dXJuIG5pbDsN
CisgICAgICAgIHJldHVybiBudWxscHRyOw0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2Vs
Zi5heEJhY2tpbmdPYmplY3Q7DQogI2VuZGlmDQorICAgIHJldHVybiBiYWNraW5nT2JqZWN0Ow0K
K30NCiANCistIChOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKWxpbmVSZWN0c0FuZFRleHQNCit7
DQorICAgIGF1dG8gYmFja2luZ09iamVjdCA9IHNlbGYuaW5pdGlhbGl6ZUJhY2tpbmdTdG9yZTsN
CisgICAgaWYgKCFiYWNraW5nT2JqZWN0KQ0KKyAgICAgICAgcmV0dXJuIG5pbDsNCisgICAgDQog
ICAgIGF1dG8gcmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5lbGVtZW50UmFuZ2UoKTsNCiAgICAgaWYg
KCFyYW5nZSkNCiAgICAgICAgIHJldHVybiBuaWw7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQ0KaW5kZXggYTFkNjVjYzBhMGFhLi42Y2EwYmEyNjYzMjEgMTAwNjQ0DQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQ0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCkBAIC0yMjY4LDE2ICsyMjY4LDIx
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIFBs
YWluVGV4dFJhbmdlIHRleHRSYW5nZSA9IGJhY2tpbmdPYmplY3QtPnNlbGVjdGVkVGV4dFJhbmdl
KCk7DQogICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJh
bmdlKHRleHRSYW5nZS5zdGFydCwgdGV4dFJhbmdlLmxlbmd0aCldOw0KICAgICAgICAgfQ0KLSAg
ICAgICAgLy8gVE9ETzogR2V0IGFjdHVhbCB2aXNpYmxlIHJhbmdlLiA8cmRhcjovL3Byb2JsZW0v
NDcxMjEwMT4NCi0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5T
QWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZV0pDQotICAgICAgICAg
ICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpID8gbmlsIDogW05TVmFs
dWUgdmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKDAsIGJhY2tpbmdPYmplY3QtPnRleHRMZW5n
dGgoKSldOw0KLQ0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlJbnNlcnRpb25Qb2ludExpbmVOdW1iZXJBdHRyaWJ1dGVdKSB7DQogICAg
ICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSBiYWNraW5nT2JqZWN0LT5pbnNlcnRpb25Qb2ludExp
bmVOdW1iZXIoKTsNCiAgICAgICAgICAgICByZXR1cm4gbGluZU51bWJlciA+PSAwID8gQChsaW5l
TnVtYmVyKSA6IG5pbDsNCiAgICAgICAgIH0NCiAgICAgfQ0KIA0KKyAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFu
Z2VBdHRyaWJ1dGVdKSB7DQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNQYXNzd29yZEZp
ZWxkKCkpDQorICAgICAgICAgICAgcmV0dXJuIG5pbDsNCisgICAgICAgIC8vIFRPRE86IEdldCBh
Y3R1YWwgdmlzaWJsZSByYW5nZS4gPHJkYXI6Ly9wcm9ibGVtLzQ3MTIxMDE+DQorICAgICAgICBp
ZiAoYmFja2luZ09iamVjdC0+aXNUZXh0Q29udHJvbCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBb
TlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0LT50ZXh0
TGVuZ3RoKCkpXTsNCisgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpbc2Vs
ZiBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlXV07DQorICAgIH0NCisNCiAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VVJMQXR0
cmlidXRlXSkgew0KICAgICAgICAgVVJMIHVybCA9IGJhY2tpbmdPYmplY3QtPnVybCgpOw0KICAg
ICAgICAgaWYgKHVybC5pc051bGwoKSkNCkBAIC0zNDM1LDIyICszNDQwLDYgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIH0pOw0KIH0NCiANCi0vLyBGSVhNRTog
Tm8gcmVhc29uIGZvciB0aGlzIHRvIGJlIGEgbWV0aG9kIGluc3RlYWQgb2YgYSBmdW5jdGlvbjsg
Y2FuIGdldCBkb2N1bWVudCBmcm9tIHJhbmdlLg0KLS0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFu
Z2U6KGNvbnN0IFNpbXBsZVJhbmdlJilyYW5nZQ0KLXsNCi0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsNCi0gICAgDQotICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+
ZG9jdW1lbnQoKTsNCi0gICAgaWYgKCFkb2N1bWVudCkNCi0gICAgICAgIHJldHVybiBOU01ha2VS
YW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBkb2N1
bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7DQotICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQ0KLSAg
ICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICByZXR1cm4g
Y2hhcmFjdGVyUmFuZ2UobWFrZUJvdW5kYXJ5UG9pbnRCZWZvcmVOb2RlQ29udGVudHMoKmRvY3Vt
ZW50RWxlbWVudCksIHJhbmdlKTsNCi19DQotDQogLSAoTlNJbnRlZ2VyKV9pbmRleEZvclRleHRN
YXJrZXI6KEFYVGV4dE1hcmtlclJlZiltYXJrZXINCiB7DQogICAgIGlmICghbWFya2VyKQ0KQEAg
LTM0NjcsNyArMzQ1Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0K
ICAgICAgICAgICAgIGlmICghcmFuZ2UpDQogICAgICAgICAgICAgICAgIHJldHVybiBOU05vdEZv
dW5kOw0KIA0KLSAgICAgICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiBfY29udmVydFRvTlNS
YW5nZToqcmFuZ2VdLmxvY2F0aW9uOw0KKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU1Jh
bmdlKCpyYW5nZSkubG9jYXRpb247DQogICAgICAgICB9DQogDQogICAgICAgICByZXR1cm4gTlNO
b3RGb3VuZDsNCg==
</data>
<flag name="commit-queue"
          id="469874"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444785</attachid>
            <date>2021-11-19 00:15:39 -0800</date>
            <delta_ts>2021-11-19 17:07:52 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>27766</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZjE3M2FiMzI3Zjg1Li5hZTVmMDMyOGMxYjAgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
MyBAQA0KKzIwMjEtMTEtMTggIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy92aXNp
YmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLg0KKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sOiBBZGRlZC4NCisNCiAy
MDIxLTExLTEyICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPg0KIA0KICAgICAg
ICAgW1dlYiBBbmltYXRpb25zXSBBY2NlbGVyYXRlZCBhbmltYXRpb25zIHdpdGggYSBzaW5nbGUg
a2V5ZnJhbWUgZG9uJ3QgYWNjb3VudCBmb3IgcHJpb3IgZm9yd2FyZC1maWxsaW5nIGFuaW1hdGlv
bnMNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLWNo
YXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQNCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjdkNGI5NzU4OTdhNg0KLS0tIC9kZXYvbnVsbA0KKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2Ut
ZXhwZWN0ZWQudHh0DQpAQCAtMCwwICsxLDEyIEBADQorVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVD
aGFyYWN0ZXJSYW5nZSByZXR1cm5zIGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlm
eWluZyBvYnNjdXJlZCBjb250ZW50Lg0KKw0KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4NCisN
CisNCitWaXNpYmxlIHJhbmdlOiBOU1JhbmdlOiB7MCwgNDY0MH0NCitWaXNpYmxlIHJhbmdlICgy
MDAsIDIwMCk6IE5TUmFuZ2U6IHswLCAzMDB9DQorVmlzaWJsZSByYW5nZSwgb2Zmc2V0OiA1MCAo
MjAwLCA1MDApOiBOU1JhbmdlOiB7OTAsIDgxMH0NCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlDQorDQorVEVTVCBDT01QTEVURQ0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sDQpuZXcgZmls
ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi42YjQwYTgyMmNlN2MNCi0tLSAvZGV2
L251bGwNCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtY2hhcmFj
dGVyLXJhbmdlLmh0bWwNCkBAIC0wLDAgKzEsNzggQEANCis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+DQorPGh0bWw+DQorPGhlYWQ+DQorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxi
b2R5IGlkPSJib2R5Ij4NCisNCis8ZGl2IGlkPSJncm91cCI+DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QN
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0K
K3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQor
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCis8L2Rpdj4NCisN
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4NCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCisN
Cis8c2NyaXB0Pg0KKw0KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVD
aGFyYWN0ZXJSYW5nZSByZXR1cm5zIGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlm
eWluZyBvYnNjdXJlZCBjb250ZW50LiIpOw0KKw0KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7DQorDQorICAgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJncm91cCIpLmNoaWxkQXRJbmRleCgwKTsN
CisgICAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2U6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0
aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0Vmlld1NpemUoMjAwLCAyMDApOw0KKyAgICAgICAgICBkZWJ1
ZygiVmlzaWJsZSByYW5nZSAoMjAwLCAyMDApOiAiICsgdGV4dC5zdHJpbmdEZXNjcmlwdGlvbk9m
QXR0cmlidXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikpOw0KKw0KKyAgICAgICAg
ICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDUwOw0KKyAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFZpZXdTaXplKDIwMCwgNTAwKTsNCisgICAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2UsIG9m
ZnNldDogNTAgKDIwMCwgNTAwKTogIiArIHRleHQuc3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0
ZVZhbHVlKCJBWFZpc2libGVDaGFyYWN0ZXJSYW5nZSIpKTsNCisNCisgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOw0K
KyAgICB9DQorDQorPC9zY3JpcHQ+DQorDQorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zDQppbmRleCA4NzJjN2E5NWMw
MjYuLjEzZDI2NmE0M2ZjZCAxMDA2NDQNCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvVGVzdEV4cGVjdGF0aW9ucw0KKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zDQpAQCAtNTk3LDYgKzU5Nyw3IEBAIGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctdW5pZmllZC1lbXVsYXRpb24uaHRtbCBbIEZhaWx1cmUgXQ0KIA0KICMgU2tpcCBkdWUg
dG8gbGFjayBvZiBEdW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9tSWRl
bnRpZmVyYCBpbXBsZW1lbnRhdGlvbi4NCiBhY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGlj
YXRlLWZvci1hZGhvYy1yYWRpby1ncm91cHMuaHRtbCBbIFNraXAgXQ0KK2FjY2Vzc2liaWxpdHkv
bWFjL3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBTa2lwIF0NCiANCiAjIDxyZGFyOi8v
cHJvYmxlbS8yNjA1MDkyMz4gVGhlIHJlc3VsdCBpcyBwcm9iYWJseSBzdGlsbCBhIHBhc3MsIGJ1
dCB3ZSBkb24ndCBoYXZlIGEgd2F5DQogIyB0byBoYXZlIHBsYXRmb3JtIHNwZWNpZmljIHJlc3Vs
dHMgdGhhdCBhcmUgZGlmZmVyZW50IGJldHdlZW4gV0sxIGFuZCBXSzIuDQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQppbmRl
eCBjN2VhM2FjZTBjODUuLjA5ZWNkZGJkZWRiYiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZw0KKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQpAQCAtMSwzICsxLDM2
IEBADQorMjAyMS0xMS0xOCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPg0K
Kw0KKyAgICAgICAgQVg6IFdlYktpdDogbmVlZCBhIG1ldGhvZCB0byBnZXQgdmlzaWJsZSB0ZXh0
IGFuZCBmcmFtZSBvZiBhbiBlbGVtZW50IG9uIHNjcmVlbg0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzMzNg0KKw0KKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAgICBJbXBsZW1lbnQgdmlzaWJsZUNoYXJhY3Rl
clJhbmdlIGZvciBzdGF0aWMgdGV4dCBlbGVtZW50cyBzbyB0aGF0IEJvb2tzIGNhbiBkZXRlcm1p
bmUgdGhlIHZpc2libGUNCisgICAgICAgIGNvbnRlbnQgb24gYSBwYWdlLg0KKw0KKyAgICAgICAg
VGVzdDogYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0KKw0K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlWaXNpYmxlQ29udGVudFJlY3RdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIHBvc2l0aW9uRm9yVGV4dE1hcmtlcjpdKToNCisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJGb3JQb3NpdGlvbjpdKToNCisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHN0cmluZ0ZvclJhbmdlOl0p
Og0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZnJhbWVGb3JSYW5n
ZTpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0
VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgX2NvbnZlcnRUb0RPTVJhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaDoNCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
Lm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGFjY2Vz
c2liaWxpdHlVbm9ic2N1cmVkQ29udGVudFJlY3RdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdl
XSk6DQorICAgICAgICAoY29udmVydFRvTlNSYW5nZSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgY29udmVydFRvRE9NUmFuZ2U6XSk6DQorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgaW5pdGlhbGl6ZUJhY2tpbmdzU3Rv
cmVdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBsaW5l
UmVjdHNBbmRUZXh0XSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOg0KKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2luZGV4Rm9yVGV4dE1hcmtlcjpdKToNCisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0VG9OU1Jhbmdl
Ol0pOiBEZWxldGVkLg0KKw0KIDIwMjEtMTEtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4NCiANCiAgICAgICAgIERpc2FibGUgTWF0aE1MIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0YWwg
TW9kZQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCmluZGV4IDVlMGM4
YzhlYmM2Ny4uNWQ5OTBjYmFkZGEyIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tDQpAQCAtNDYsMTIgKzQ2LDE0IEBADQogI2ltcG9ydCAiSW50UmVjdC5oIg0KICNp
bXBvcnQgIkxvY2FsaXplZFN0cmluZ3MuaCINCiAjaW1wb3J0ICJQYWdlLmgiDQorI2ltcG9ydCAi
UG9zaXRpb24uaCINCiAjaW1wb3J0ICJSYW5nZS5oIg0KICNpbXBvcnQgIlJlbmRlclZpZXcuaCIN
CiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCINCiAjaW1wb3J0ICJTVkdFbGVt
ZW50SW5saW5lcy5oIg0KICNpbXBvcnQgIlNWR05hbWVzLmgiDQogI2ltcG9ydCAiU2VsZWN0aW9u
R2VvbWV0cnkuaCINCisjaW1wb3J0ICJTaW1wbGVSYW5nZS5oIg0KICNpbXBvcnQgIlRleHRJdGVy
YXRvci5oIg0KICNpbXBvcnQgIldBS1Njcm9sbFZpZXcuaCINCiAjaW1wb3J0ICJXQUtXaW5kb3cu
aCINCkBAIC0xNjk0LDEyICsxNjk2LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1
bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpDQogew0KICAgICBp
ZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KICAgICAgICAgcmV0dXJuIENH
UmVjdFplcm87DQotICAgIA0KLSAgICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmpl
Y3QtPmRvY3VtZW50KCk7DQotICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkp
DQotICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCi0gICAgYXV0byByZWN0ID0gRmxvYXRSZWN0
KHNuYXBwZWRJbnRSZWN0KGRvY3VtZW50LT52aWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVjdCgp
KSk7DQotICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6cmVjdCBzcGFjZTpBY2Nl
c3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpTY3JlZW5dOw0KKyAgICByZXR1cm4gW3NlbGYgY29u
dmVydFJlY3RUb1NwYWNlOltzZWxmIGFjY2Vzc2liaWxpdHlVbm9ic2N1cmVkQ29udGVudFJlY3Rd
IHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl07DQogfQ0KIA0KIC8v
IFRoZSAiY2VudGVyIHBvaW50IiBpcyB3aGVyZSBWb2ljZU92ZXIgd2lsbCAicHJlc3MiIGFuIG9i
amVjdC4gVGhpcyBtYXkgbm90IGJlIHRoZSBhY3R1YWwNCkBAIC0yMjA5LDQ3ICsyMjA2LDYgQEAg
c3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAg
IHJldHVybiByYW5nZSA/IFtzZWxmIGNvbnRlbnRGb3JTaW1wbGVSYW5nZToqcmFuZ2UgYXR0cmli
dXRlZDphdHRyaWJ1dGVkXSA6IG5pbDsNCiB9DQogDQotLy8gRklYTUU6IE5vIHJlYXNvbiBmb3Ig
dGhpcyB0byBiZSBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rpb24uDQotLSAoTlNSYW5nZSlf
Y29udmVydFRvTlNSYW5nZTooY29uc3QgU2ltcGxlUmFuZ2UmKXJhbmdlDQotew0KLSAgICBhdXRv
JiBkb2N1bWVudCA9IHJhbmdlLnN0YXJ0LmRvY3VtZW50KCk7DQotICAgIGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKTsNCi0gICAgaWYgKCFmcmFtZSkNCi0gICAgICAgIHJldHVybiBOU01h
a2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgYXV0byogcm9vdEVkaXRhYmxlRWxlbWVu
dCA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7
DQotICAgIGF1dG8qIHNjb3BlID0gcm9vdEVkaXRhYmxlRWxlbWVudCA/IHJvb3RFZGl0YWJsZUVs
ZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsNCi0gICAgaWYgKCFzY29wZSkNCi0g
ICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgLy8gTW91
c2UgZXZlbnRzIG1heSBjYXVzZSBUU00gdG8gYXR0ZW1wdCB0byBjcmVhdGUgYW4gTlNSYW5nZSBm
b3IgYSBwb3J0aW9uIG9mIHRoZSB2aWV3DQotICAgIC8vIHRoYXQgaXMgbm90IGluc2lkZSB0aGUg
Y3VycmVudCBlZGl0YWJsZSByZWdpb24uIFRoZXNlIGNoZWNrcyBlbnN1cmUgd2UgZG9uJ3QgcHJv
ZHVjZQ0KLSAgICAvLyBwb3RlbnRpYWxseSBpbnZhbGlkIGRhdGEgd2hlbiByZXNwb25kaW5nIHRv
IHN1Y2ggcmVxdWVzdHMuDQotICAgIGlmICghc2NvcGUtPmNvbnRhaW5zKHJhbmdlLnN0YXJ0LmNv
bnRhaW5lci5wdHIoKSkgfHwgIXNjb3BlLT5jb250YWlucyhyYW5nZS5lbmQuY29udGFpbmVyLnB0
cigpKSkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0g
ICAgcmV0dXJuIE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KHsgeyAqc2NvcGUsIDAgfSwgcmFu
Z2Uuc3RhcnQgfSksIGNoYXJhY3RlckNvdW50KHJhbmdlKSk7DQotfQ0KLQ0KLS0gKHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZQ0KLXsN
Ci0gICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpDQotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0Ow0KLQ0KLSAgICAvLyBvdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0
IHdlIGFyZSBvbmx5IGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQNCi0gICAgLy8gY29uY2Vu
dHJhdGUgb24gYSBnaXZlbiBhcmVhIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbg0KLSAgICAvLyBX
ZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBU
aGUgRE9NIGZvciB0aG9zZSBpcyBub3QNCi0gICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50
IERPTSwgc28gc2VyaWFsaXphdGlvbiBpcyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzDQot
ICAgIC8vIHRvIHVzZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24g
c3RhcnQgYXMgdGhlIHBvc2l0aW9uYWwgYmFzZS4NCi0gICAgLy8gVGhhdCBmaXRzIHdpdGggQXBw
S2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0Lg0KLSAgICBhdXRvIGRvY3VtZW50ID0gc2Vs
Zi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7DQotICAgIGF1dG8gc2VsZWN0aW9uUm9vdCA9
IGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVF
bGVtZW50KCk7DQotICAgIGF1dG8gc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9v
dCA6IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsNCi0gICAgaWYgKCFzY29wZSkNCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQotDQotICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVy
UmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIHJhbmdlKTsNCi19
DQogDQogLy8gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gdGFrZSBhIHRleHQgbWFya2VyIHJl
cHJlc2VudGluZyBhIFZpc2libGVQb3NpdGlvbiBhbmQgY29udmVydCBpdA0KIC8vIGludG8gYSBu
b3JtYWxpemVkIGxvY2F0aW9uIHdpdGhpbiB0aGUgZG9jdW1lbnQuDQpAQCAtMjI2Nyw3ICsyMjIz
LDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcp
DQogICAgICAgICBhdXRvIHJhbmdlID0gY2FjaGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVy
T2Zmc2V0cyhjaGFyYWN0ZXJPZmZzZXQsIGNoYXJhY3Rlck9mZnNldCk7DQogICAgICAgICBpZiAo
IXJhbmdlKQ0KICAgICAgICAgICAgIHJldHVybiBOU05vdEZvdW5kOw0KLSAgICAgICAgcmV0dXJu
IFtzZWxmIF9jb252ZXJ0VG9OU1JhbmdlOipyYW5nZV0ubG9jYXRpb247DQorICAgICAgICByZXR1
cm4gY29udmVydFRvTlNSYW5nZSgqcmFuZ2UpLmxvY2F0aW9uOw0KICAgICB9DQogICAgIHJldHVy
biBOU05vdEZvdW5kOw0KIH0NCkBAIC0yMzQ2LDcgKzIzMDIsNyBAQCBzdGF0aWMgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgaWYgKCFbc2VsZiBfcHJl
cGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCiAgICAgICAgIHJldHVybiBuaWw7DQogDQotICAgIGF1
dG8gcmFuZ2UgPSBbc2VsZiBfY29udmVydFRvRE9NUmFuZ2U6TlNNYWtlUmFuZ2UocG9zaXRpb24s
IDApXTsNCisgICAgYXV0byByYW5nZSA9IFtzZWxmIGNvbnZlcnRUb0RPTVJhbmdlOk5TTWFrZVJh
bmdlKHBvc2l0aW9uLCAwKV07DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm4gbmls
Ow0KIA0KQEAgLTI0MTQsNyArMjM3MCw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
Rm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KIHsNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vz
c2liaWxpdHlDYWxsXSkNCiAgICAgICAgIHJldHVybiBuaWw7DQotICAgIGF1dG8gd2ViUmFuZ2Ug
PSBbc2VsZiBfY29udmVydFRvRE9NUmFuZ2U6cmFuZ2VdOw0KKyAgICBhdXRvIHdlYlJhbmdlID0g
W3NlbGYgY29udmVydFRvRE9NUmFuZ2U6cmFuZ2VdOw0KICAgICBpZiAoIXdlYlJhbmdlKQ0KICAg
ICAgICAgcmV0dXJuIG5pbDsNCiAgICAgcmV0dXJuIHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zdHJp
bmdGb3JSYW5nZSgqd2ViUmFuZ2UpOw0KQEAgLTI2MDAsNiArMjU1NiwxNSBAQCBzdGF0aWMgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgcmV0dXJuIFtz
ZWxmIHByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OnN0YXJ0XTsNCiB9DQogDQorLSAo
Q0dSZWN0KWZyYW1lRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UNCit7DQorICAgIGF1dG8gd2ViUmFu
Z2UgPSBbc2VsZiBjb252ZXJ0VG9ET01SYW5nZTpyYW5nZV07DQorICAgIGlmICghd2ViUmFuZ2Up
DQorICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCisgICAgYXV0byByZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmJvdW5kc0ZvclJhbmdlKCp3ZWJSYW5nZSk7DQorICAgIHJldHVybiBbc2Vs
ZiBjb252ZXJ0UmVjdFRvU3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNw
YWNlOjpTY3JlZW5dOw0KK30NCisNCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byByZXR1
cm4gdGhlIGJvdW5kcyBvZiBhIHRleHQgbWFya2VyIHJhbmdlIGluIHNjcmVlbiBjb29yZGluYXRl
cy4NCiAtIChDR1JlY3QpZnJhbWVGb3JUZXh0TWFya2VyczooTlNBcnJheSAqKWFycmF5DQogew0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgNCmluZGV4IGVlYTNlNjlkZWQ5
My4uMTkyMDkxNTJkMTkxIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgNCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5oDQpAQCAtMTExLDExICsxMTEsMTYgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nl
c3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWwNCiAtIChO
U0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0UGFpcnM7DQogLSAoTlNBcnJheSAq
KWFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0UGFpcnM7DQogDQorLSAoV2ViQ29yZTo6RmxvYXRS
ZWN0KWFjY2Vzc2liaWxpdHlVbm9ic2N1cmVkQ29udGVudFJlY3Q7DQorLSAoTlNSYW5nZSlhY2Nl
c3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlOw0KKy0gKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+KWNvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlOw0KKw0KIC0g
KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKiliYXNlQWNjZXNzaWJpbGl0eVJlc29sdmVk
RWRpdGluZ1N0eWxlczsNCiANCiBleHRlcm4gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaENy
aXRlcmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUoY29uc3QgTlNEaWN0aW9uYXJ5ICopOw0KIA0KIGV4dGVybiBOU0Fy
cmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7DQorZXh0ZXJuIE5TUmFuZ2UgY29udmVydFRvTlNSYW5n
ZShjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpOw0KIA0KICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQ0KIC0gKGlkKV9hY2Nlc3NpYmlsaXR5V2ViRG9jdW1lbnRWaWV3Ow0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQ0KaW5kZXggYWU2NWU0OWFhZDA2Li4xMWEwODNj
MzlmOWIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0NCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQ0KQEAg
LTQ2Miw2ICs0NjIsNjkgQEAgc3RhdGljIHZvaWQgY29udmVydFBhdGhUb1NjcmVlblNwYWNlRnVu
Y3Rpb24oUGF0aENvbnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBjb24NCiAgICAgcmV0dXJuIGNv
bnZlcnRlZFBhdGguYXV0b3JlbGVhc2UoKTsNCiB9DQogDQorLSAoRmxvYXRSZWN0KWFjY2Vzc2li
aWxpdHlVbm9ic2N1cmVkQ29udGVudFJlY3QNCit7DQorICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxm
LmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9j
dW1lbnQtPnZpZXcoKSkNCisgICAgICAgIHJldHVybiB7IH07DQorICAgIHJldHVybiBGbG9hdFJl
Y3Qoc25hcHBlZEludFJlY3QoZG9jdW1lbnQtPnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0
KCkpKTsNCit9DQorDQorLy8gRGV0ZXJtaW5lIHRoZSB2aXNpYmxlIHJhbmdlIGJ5IGNoZWNraW5n
IGludGVyc2VjdGlvbiBvZiB1bm9ic2N1cmVkQ29udGVudFJlY3QgYW5kIGEgcmFuZ2Ugb2YgdGV4
dCBieQ0KKy8vIGFkdmFuY2luZyBmb3J3YXJkIGJ5IGxpbmUgZnJvbSB0b3AgYW5kIGJhY2t3YXJk
cyBieSBsaW5lIGZyb20gdGhlIGJvdHRvbSwgdW50aWwgd2UgaGF2ZSBhIHZpc2libGUgcmFuZ2Uu
DQorLSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlDQorew0KKyAg
ICBhdXRvIGJhY2tpbmdPYmplY3QgPSBzZWxmLmluaXRpYWxpemVCYWNraW5nU3RvcmU7DQorICAg
IGlmICghYmFja2luZ09iamVjdCkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZv
dW5kLCAwKTsNCisNCisgICAgYXV0byByYW5nZSA9IGJhY2tpbmdPYmplY3QtPmVsZW1lbnRSYW5n
ZSgpOw0KKyAgICBpZiAoIXJhbmdlKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90
Rm91bmQsIDApOw0KKw0KKyAgICBhdXRvIGNvbnRlbnRSZWN0ID0gW3NlbGYgYWNjZXNzaWJpbGl0
eVVub2JzY3VyZWRDb250ZW50UmVjdF07DQorICAgIGF1dG8gZWxlbWVudFJlY3QgPSBzbmFwcGVk
SW50UmVjdChiYWNraW5nT2JqZWN0LT5lbGVtZW50UmVjdCgpKTsNCisgICAgaWYgKCFjb250ZW50
UmVjdC5pbnRlcnNlY3RzKGVsZW1lbnRSZWN0KSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5n
ZShOU05vdEZvdW5kLCAwKTsNCisNCisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBz
dGFydEJvdW5kYXJ5ID0gcmFuZ2UtPnN0YXJ0Ow0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5
UG9pbnQ+IGVuZEJvdW5kYXJ5ID0gcmFuZ2UtPmVuZDsNCisNCisgICAgTlNSYW5nZSBmdWxsUmFu
Z2UgPSBjb252ZXJ0VG9OU1JhbmdlKFNpbXBsZVJhbmdlKCpzdGFydEJvdW5kYXJ5LCAqZW5kQm91
bmRhcnkpKTsNCisNCisgICAgLy8gT3JpZ2luIGlzbid0IGNvbnRhaW5lZCBpbiB2aXNpYmxlIHJl
Y3QsIHN0YXJ0IG1vdmluZyBmb3J3YXJkIGJ5IGxpbmUuDQorICAgIHdoaWxlICghY29udGVudFJl
Y3QuY29udGFpbnMoZWxlbWVudFJlY3QubG9jYXRpb24oKSkpIHsNCisgICAgICAgIGF1dG8gbmV4
dExpbmVQb3NpdGlvbiA9IGJhY2tpbmdPYmplY3QtPm5leHRMaW5lRW5kUG9zaXRpb24oVmlzaWJs
ZVBvc2l0aW9uKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigqc3RhcnRCb3VuZGFyeSkpKTsN
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVzdFN0YXJ0Qm91bmRhcnkg
PSBtYWtlQm91bmRhcnlQb2ludChuZXh0TGluZVBvc2l0aW9uKTsNCisgICAgICAgIGlmICghdGVz
dFN0YXJ0Qm91bmRhcnkgfHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RTdGFydEJvdW5kYXJ5KSkN
CisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIA0KKyAgICAgICAgc3RhcnRCb3VuZGFyeSA9
IHRlc3RTdGFydEJvdW5kYXJ5Ow0KKyAgICAgICAgZWxlbWVudFJlY3QgPSBiYWNraW5nT2JqZWN0
LT5ib3VuZHNGb3JSYW5nZShTaW1wbGVSYW5nZSgqc3RhcnRCb3VuZGFyeSwgcmFuZ2UtPmVuZCkp
Ow0KKyAgICAgICAgaWYgKGVsZW1lbnRSZWN0LmlzRW1wdHkoKSkNCisgICAgICAgICAgICBicmVh
azsNCisgICAgfQ0KKw0KKyAgICAvLyBFbmQgaXNuJ3QgY29udGFpbmVkIGluIHZpc2libGUgcmVj
dCwgc3RhcnQgbW92aW5nIGJhY2t3YXJkcyBieSBsaW5lLg0KKyAgICB3aGlsZSAoIWNvbnRlbnRS
ZWN0LmNvbnRhaW5zKGVsZW1lbnRSZWN0LmxvY2F0aW9uKCkgKyBlbGVtZW50UmVjdC5zaXplKCkp
KSB7DQorICAgICAgICBhdXRvIHByZXZpb3VzTGluZVBvc2l0aW9uID0gYmFja2luZ09iamVjdC0+
cHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obWFrZUNvbnRhaW5lck9m
ZnNldFBvc2l0aW9uKCplbmRCb3VuZGFyeSkpKTsNCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Qm91
bmRhcnlQb2ludD4gdGVzdEVuZEJvdW5kYXJ5ID0gbWFrZUJvdW5kYXJ5UG9pbnQocHJldmlvdXNM
aW5lUG9zaXRpb24pOw0KKyAgICAgICAgaWYgKCF0ZXN0RW5kQm91bmRhcnkgfHwgIWNvbnRhaW5z
KCpyYW5nZSwgKnRlc3RFbmRCb3VuZGFyeSkpDQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAg
ICANCisgICAgICAgIGVuZEJvdW5kYXJ5ID0gdGVzdEVuZEJvdW5kYXJ5Ow0KKyAgICAgICAgZWxl
bWVudFJlY3QgPSBiYWNraW5nT2JqZWN0LT5ib3VuZHNGb3JSYW5nZShTaW1wbGVSYW5nZSgqc3Rh
cnRCb3VuZGFyeSwgKmVuZEJvdW5kYXJ5KSk7DQorICAgICAgICBpZiAoZWxlbWVudFJlY3QuaXNF
bXB0eSgpKQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAgIGlmICghc3RhcnRC
b3VuZGFyeSB8fCAhZW5kQm91bmRhcnkpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNO
b3RGb3VuZCwgMCk7DQorICAgIA0KKyAgICBOU1JhbmdlIHZpc2libGVSYW5nZSA9IGNvbnZlcnRU
b05TUmFuZ2UoU2ltcGxlUmFuZ2UoKnN0YXJ0Qm91bmRhcnksICplbmRCb3VuZGFyeSkpOw0KKyAg
ICByZXR1cm4gTlNNYWtlUmFuZ2UodmlzaWJsZVJhbmdlLmxvY2F0aW9uIC0gZnVsbFJhbmdlLmxv
Y2F0aW9uLCB2aXNpYmxlUmFuZ2UubGVuZ3RoKTsNCit9DQorDQogLSAoaWQpX2FjY2Vzc2liaWxp
dHlXZWJEb2N1bWVudFZpZXcNCiB7DQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOw0KQEAgLTYy
Myw2ICs2ODYsNDggQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLA0KICAgICBBWEF0dHJpYnV0ZVN0
cmluZ1NldExhbmd1YWdlKGF0dHJTdHJpbmcsIG5vZGUtPnJlbmRlcmVyKCksIGF0dHJTdHJpbmdS
YW5nZSk7DQogfQ0KIA0KKw0KK05TUmFuZ2UgY29udmVydFRvTlNSYW5nZShjb25zdCBTaW1wbGVS
YW5nZSYgcmFuZ2UpDQorew0KKyAgICBhdXRvJiBkb2N1bWVudCA9IHJhbmdlLnN0YXJ0LmRvY3Vt
ZW50KCk7DQorICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsNCisgICAgaWYgKCFm
cmFtZSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCisNCisg
ICAgYXV0byogcm9vdEVkaXRhYmxlRWxlbWVudCA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQorICAgIGF1dG8qIHNjb3BlID0gcm9vdEVkaXRh
YmxlRWxlbWVudCA/IHJvb3RFZGl0YWJsZUVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQoKTsNCisgICAgaWYgKCFzY29wZSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05v
dEZvdW5kLCAwKTsNCisNCisgICAgLy8gTW91c2UgZXZlbnRzIG1heSBjYXVzZSBUU00gdG8gYXR0
ZW1wdCB0byBjcmVhdGUgYW4gTlNSYW5nZSBmb3IgYSBwb3J0aW9uIG9mIHRoZSB2aWV3DQorICAg
IC8vIHRoYXQgaXMgbm90IGluc2lkZSB0aGUgY3VycmVudCBlZGl0YWJsZSByZWdpb24uIFRoZXNl
IGNoZWNrcyBlbnN1cmUgd2UgZG9uJ3QgcHJvZHVjZQ0KKyAgICAvLyBwb3RlbnRpYWxseSBpbnZh
bGlkIGRhdGEgd2hlbiByZXNwb25kaW5nIHRvIHN1Y2ggcmVxdWVzdHMuDQorICAgIGlmICghc2Nv
cGUtPmNvbnRhaW5zKHJhbmdlLnN0YXJ0LmNvbnRhaW5lci5wdHIoKSkgfHwgIXNjb3BlLT5jb250
YWlucyhyYW5nZS5lbmQuY29udGFpbmVyLnB0cigpKSkNCisgICAgICAgIHJldHVybiBOU01ha2VS
YW5nZShOU05vdEZvdW5kLCAwKTsNCisNCisgICAgcmV0dXJuIE5TTWFrZVJhbmdlKGNoYXJhY3Rl
ckNvdW50KHsgeyAqc2NvcGUsIDAgfSwgcmFuZ2Uuc3RhcnQgfSksIGNoYXJhY3RlckNvdW50KHJh
bmdlKSk7DQorfQ0KKw0KKy0gKHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+KWNvbnZlcnRUb0RP
TVJhbmdlOihOU1JhbmdlKXJhbmdlDQorew0KKyAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNO
b3RGb3VuZCkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIC8vIG91ciBj
cml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1l
dGhvZHMgdGhhdA0KKyAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmlu
ZyB0aGUgc2VsZWN0aW9uDQorICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRl
eHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdA0KKyAgICAv
LyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2Js
ZW1hdGljLiBPdXIgc29sdXRpb24gaXMNCisgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxl
IGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLg0K
KyAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQu
DQorICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsN
CisgICAgYXV0byBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCisgICAgYXV0byBzY29wZSA9IHNl
bGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
Ow0KKyAgICBpZiAoIXNjb3BlKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisg
ICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29u
dGVudHMoKnNjb3BlKSwgcmFuZ2UpOw0KK30NCisNCiAvLyBSZXR1cm5zIGFuIGFycmF5IG9mIHN0
cmluZ3MgYW5kIEFYT2JqZWN0IHdyYXBwZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRleHQNCiAv
LyBydW5zIGFuZCByZXBsYWNlbWVudCBub2RlcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gcmFuZ2Uu
DQogLSAoTlNBcnJheSAqKWNvbnRlbnRGb3JTaW1wbGVSYW5nZTooY29uc3QgU2ltcGxlUmFuZ2Um
KXJhbmdlIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmlidXRlZA0KQEAgLTY3NiwxOCArNzgxLDI2IEBA
IHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmli
dXRlZFN0cmluZyogYXR0clN0cmluZywNCiAgICAgcmV0dXJuIGFycmF5LmF1dG9yZWxlYXNlKCk7
DQogfQ0KIA0KLS0gKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopbGluZVJlY3RzQW5kVGV4dA0K
Ky0gKFdlYkNvcmU6OkFYQ29yZU9iamVjdCopaW5pdGlhbGl6ZUJhY2tpbmdTdG9yZQ0KIHsNCiAj
aWYgUExBVEZPUk0oTUFDKQ0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi51cGRhdGVP
YmplY3RCYWNraW5nU3RvcmU7DQogICAgIGlmICghYmFja2luZ09iamVjdCkNCi0gICAgICAgIHJl
dHVybiBuaWw7DQorICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAjZWxzZQ0KICAgICBpZiAoIVtz
ZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KLSAgICAgICAgcmV0dXJuIG5pbDsNCisg
ICAgICAgIHJldHVybiBudWxscHRyOw0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5h
eEJhY2tpbmdPYmplY3Q7DQogI2VuZGlmDQorICAgIHJldHVybiBiYWNraW5nT2JqZWN0Ow0KK30N
CiANCistIChOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKWxpbmVSZWN0c0FuZFRleHQNCit7DQor
ICAgIGF1dG8gYmFja2luZ09iamVjdCA9IHNlbGYuaW5pdGlhbGl6ZUJhY2tpbmdTdG9yZTsNCisg
ICAgaWYgKCFiYWNraW5nT2JqZWN0KQ0KKyAgICAgICAgcmV0dXJuIG5pbDsNCisgICAgDQogICAg
IGF1dG8gcmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5lbGVtZW50UmFuZ2UoKTsNCiAgICAgaWYgKCFy
YW5nZSkNCiAgICAgICAgIHJldHVybiBuaWw7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbQ0KaW5kZXggYTFkNjVjYzBhMGFhLi42Y2EwYmEyNjYzMjEgMTAwNjQ0DQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQ0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCkBAIC0yMjY4LDE2ICsyMjY4LDIxIEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIFBsYWlu
VGV4dFJhbmdlIHRleHRSYW5nZSA9IGJhY2tpbmdPYmplY3QtPnNlbGVjdGVkVGV4dFJhbmdlKCk7
DQogICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdl
KHRleHRSYW5nZS5zdGFydCwgdGV4dFJhbmdlLmxlbmd0aCldOw0KICAgICAgICAgfQ0KLSAgICAg
ICAgLy8gVE9ETzogR2V0IGFjdHVhbCB2aXNpYmxlIHJhbmdlLiA8cmRhcjovL3Byb2JsZW0vNDcx
MjEwMT4NCi0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNj
ZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZV0pDQotICAgICAgICAgICAg
cmV0dXJuIGJhY2tpbmdPYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpID8gbmlsIDogW05TVmFsdWUg
dmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKDAsIGJhY2tpbmdPYmplY3QtPnRleHRMZW5ndGgo
KSldOw0KLQ0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlJbnNlcnRpb25Qb2ludExpbmVOdW1iZXJBdHRyaWJ1dGVdKSB7DQogICAgICAg
ICAgICAgaW50IGxpbmVOdW1iZXIgPSBiYWNraW5nT2JqZWN0LT5pbnNlcnRpb25Qb2ludExpbmVO
dW1iZXIoKTsNCiAgICAgICAgICAgICByZXR1cm4gbGluZU51bWJlciA+PSAwID8gQChsaW5lTnVt
YmVyKSA6IG5pbDsNCiAgICAgICAgIH0NCiAgICAgfQ0KIA0KKyAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VB
dHRyaWJ1dGVdKSB7DQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNQYXNzd29yZEZpZWxk
KCkpDQorICAgICAgICAgICAgcmV0dXJuIG5pbDsNCisgICAgICAgIC8vIFRPRE86IEdldCBhY3R1
YWwgdmlzaWJsZSByYW5nZS4gPHJkYXI6Ly9wcm9ibGVtLzQ3MTIxMDE+DQorICAgICAgICBpZiAo
YmFja2luZ09iamVjdC0+aXNUZXh0Q29udHJvbCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBbTlNW
YWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0LT50ZXh0TGVu
Z3RoKCkpXTsNCisgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpbc2VsZiBh
Y2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlXV07DQorICAgIH0NCisNCiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmli
dXRlXSkgew0KICAgICAgICAgVVJMIHVybCA9IGJhY2tpbmdPYmplY3QtPnVybCgpOw0KICAgICAg
ICAgaWYgKHVybC5pc051bGwoKSkNCkBAIC0zNDM1LDIyICszNDQwLDYgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIH0pOw0KIH0NCiANCi0vLyBGSVhNRTogTm8g
cmVhc29uIGZvciB0aGlzIHRvIGJlIGEgbWV0aG9kIGluc3RlYWQgb2YgYSBmdW5jdGlvbjsgY2Fu
IGdldCBkb2N1bWVudCBmcm9tIHJhbmdlLg0KLS0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6
KGNvbnN0IFNpbXBsZVJhbmdlJilyYW5nZQ0KLXsNCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsNCi0gICAgDQotICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9j
dW1lbnQoKTsNCi0gICAgaWYgKCFkb2N1bWVudCkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5n
ZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVu
dC0+ZG9jdW1lbnRFbGVtZW50KCk7DQotICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQ0KLSAgICAg
ICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICByZXR1cm4gY2hh
cmFjdGVyUmFuZ2UobWFrZUJvdW5kYXJ5UG9pbnRCZWZvcmVOb2RlQ29udGVudHMoKmRvY3VtZW50
RWxlbWVudCksIHJhbmdlKTsNCi19DQotDQogLSAoTlNJbnRlZ2VyKV9pbmRleEZvclRleHRNYXJr
ZXI6KEFYVGV4dE1hcmtlclJlZiltYXJrZXINCiB7DQogICAgIGlmICghbWFya2VyKQ0KQEAgLTM0
NjcsNyArMzQ1Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAg
ICAgICAgICAgIGlmICghcmFuZ2UpDQogICAgICAgICAgICAgICAgIHJldHVybiBOU05vdEZvdW5k
Ow0KIA0KLSAgICAgICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiBfY29udmVydFRvTlNSYW5n
ZToqcmFuZ2VdLmxvY2F0aW9uOw0KKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU1Jhbmdl
KCpyYW5nZSkubG9jYXRpb247DQogICAgICAgICB9DQogDQogICAgICAgICByZXR1cm4gTlNOb3RG
b3VuZDsNCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444872</attachid>
            <date>2021-11-19 17:07:52 -0800</date>
            <delta_ts>2021-11-19 17:09:34 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>49635</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZjE3M2FiMzI3Zjg1Li41ZWE0ZTQ3N2Q3ODUgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwy
NyBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUt
Y2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuDQorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbDogQWRkZWQuDQorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOg0KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnM6DQorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zOg0KKw0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNv
bT4NCisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUg
dGV4dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4
cGVjdGF0aW9uczoNCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25z
Og0KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoNCisNCiAyMDIxLTEx
LTEyICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPg0KIA0KICAgICAgICAgW1dl
YiBBbmltYXRpb25zXSBBY2NlbGVyYXRlZCBhbmltYXRpb25zIHdpdGggYSBzaW5nbGUga2V5ZnJh
bWUgZG9uJ3QgYWNjb3VudCBmb3IgcHJpb3IgZm9yd2FyZC1maWxsaW5nIGFuaW1hdGlvbnMNCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJh
bmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFy
YWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw
MDAwMDAwMDAwLi5jZGJiOGM0MjJkYTcNCi0tLSAvZGV2L251bGwNCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0DQpAQCAt
MCwwICsxLDEyIEBADQorVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVDaGFyYWN0ZXJSYW5nZSByZXR1
cm5zIGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlmeWluZyBvYnNjdXJlZCBjb250
ZW50Lg0KKw0KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4NCisNCisNCitWaXNpYmxlIHJhbmdl
OiBOU1JhbmdlOiB7MCwgNDIwNX0NCitWaXNpYmxlIHJhbmdlICg1MDAsIDIwMCk6IE5TUmFuZ2U6
IHswLCAzNjB9DQorVmlzaWJsZSByYW5nZSwgb2Zmc2V0OiAyMDAgKDIwMCwgNTAwKTogTlNSYW5n
ZTogezAsIDY5MH0NCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlDQorDQorVEVTVCBD
T01QTEVURQ0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJs
ZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJs
ZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw
MDAwMDAwMC4uMzlkMzJkYmQyMDMzDQotLS0gL2Rldi9udWxsDQorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwNCkBAIC0wLDAgKzEsNzMg
QEANCis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+DQorPGh0
bWw+DQorPGhlYWQ+DQorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4NCis8L2hlYWQ+DQorPGJvZHkgaWQ9ImJvZHkiPg0KKw0KKzxkaXYgaWQ9Imdyb3VwIj4N
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0K
K3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQor
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KKzwvZGl2Pg0KKw0KKzxzY3JpcHQ+DQorDQorICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIHRoYXQgdmlzaWJsZUNoYXJhY3RlclJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJs
ZSByYW5nZXMgd2hpbGUgbW9kaWZ5aW5nIG9ic2N1cmVkIGNvbnRlbnQuIik7DQorDQorICAgIGlm
ICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsNCisgICAgICAgIHZhciB0ZXh0ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJncm91cCIpLmNo
aWxkQXRJbmRleCgwKTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxlIHJhbmdlOiAiICsgdGV4dC5z
dHJpbmdEZXNjcmlwdGlvbk9mQXR0cmlidXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdl
IikpOw0KKw0KKyAgICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3U2l6ZSg1MDAsIDIwMCk7DQorICAg
ICAgICBkZWJ1ZygiVmlzaWJsZSByYW5nZSAoNTAwLCAyMDApOiAiICsgdGV4dC5zdHJpbmdEZXNj
cmlwdGlvbk9mQXR0cmlidXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikpOw0KKw0K
KyAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSAyMDA7DQorICAgICAgICB0ZXN0UnVu
bmVyLnNldFZpZXdTaXplKDIwMCwgNTAwKTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxlIHJhbmdl
LCBvZmZzZXQ6IDIwMCAoMjAwLCA1MDApOiAiICsgdGV4dC5zdHJpbmdEZXNjcmlwdGlvbk9mQXR0
cmlidXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikpOw0KKw0KKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4i
Ow0KKyAgICB9DQorDQorPC9zY3JpcHQ+DQorDQorPC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zDQppbmRleCBjNGI0ZWRjOThmNWMuLjlm
ZDc3OWFkZThkMyAxMDA2NDQNCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zDQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9u
cw0KQEAgLTIxMTcsNyArMjExNyw3IEBAIHdlYmtpdC5vcmcvYi8xNDg4MDYgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXNwDQogZmFzdC9k
b20vbGlua2lmeS1waG9uZS1udW1iZXJzLmh0bWwgWyBQYXNzIF0NCiANCiBhY2Nlc3NpYmlsaXR5
L3ZpZGVvLWVsZW1lbnQtdXJsLWF0dHJpYnV0ZS5odG1sIFsgUGFzcyBdDQotDQorYWNjZXNzaWJp
bGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIFsgUGFzcyBdDQogYWNjZXNzaWJpbGl0
eS9hbmNlc3Rvci1jb21wdXRhdGlvbi5odG1sIFsgUGFzcyBdDQogDQogIyBFbmFibGUgImFyaWEt
Y3VycmVudCIgdGVzdHMgZm9yIGlPUy4NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMNCmluZGV4IDg3MmM3YTk1YzAyNi4uMTNkMjY2YTQzZmNkIDEwMDY0
NA0KLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zDQor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMNCkBAIC01
OTcsNiArNTk3LDcgQEAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy11bmlmaWVkLWVtdWxhdGlv
bi5odG1sIFsgRmFpbHVyZSBdDQogDQogIyBTa2lwIGR1ZSB0byBsYWNrIG9mIER1bXBSZW5kZXJU
cmVlIGBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb21JZGVudGlmZXJgIGltcGxlbWVudGF0aW9u
Lg0KIGFjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZm9yLWFkaG9jLXJhZGlvLWdy
b3Vwcy5odG1sIFsgU2tpcCBdDQorYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1jaGFyYWN0ZXIt
cmFuZ2UuaHRtbCBbIFNraXAgXQ0KIA0KICMgPHJkYXI6Ly9wcm9ibGVtLzI2MDUwOTIzPiBUaGUg
cmVzdWx0IGlzIHByb2JhYmx5IHN0aWxsIGEgcGFzcywgYnV0IHdlIGRvbid0IGhhdmUgYSB3YXkN
CiAjIHRvIGhhdmUgcGxhdGZvcm0gc3BlY2lmaWMgcmVzdWx0cyB0aGF0IGFyZSBkaWZmZXJlbnQg
YmV0d2VlbiBXSzEgYW5kIFdLMi4NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0
YXRpb25zDQppbmRleCAxODBlMmI0Y2Y2ZTguLjI3MTVkNDFkNjE4YyAxMDA2NDQNCi0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zDQorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucw0KQEAgLTI3NSw2ICsyNzUsNyBAQCBhY2Nl
c3NpYmlsaXR5L2FyaWEtbGlzdGJveC1jbGVhci1zZWxlY3Rpb24tY3Jhc2guaHRtbCBbIFNraXAg
XQ0KIGFjY2Vzc2liaWxpdHkvbGlzdGJveC1jbGVhci1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQ0K
IGFjY2Vzc2liaWxpdHkvZW1iZWRkZWQtaW1hZ2UtZGVzY3JpcHRpb24uaHRtbCBbIFNraXAgXQ0K
IGFjY2Vzc2liaWxpdHkvaW1nLW5vLWFsdC1ub3QtaWdub3JlZC13aXRoLXRpdGxlLmh0bWwgWyBT
a2lwIF0NCithY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBTa2lw
IF0NCiANCiAjIE5lZWQgdG8gaW1wbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc0Rv
Y3VtZW50Um9sZUFuY2VzdG9yKCksIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1dlYkFwcGxp
Y2F0aW9uQW5jZXN0b3IoKSwNCiAjIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5EZXNjcmlw
dGlvbkxpc3REZXRhaWwoKSwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbkRlc2NyaXB0aW9u
TGlzdFRlcm0oKSwgYW5kDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQppbmRleCBjN2VhM2FjZTBjODUuLjQ1YmRkYzAzMmE0
OSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nDQpAQCAtMSwzICsxLDUxIEBADQorMjAyMS0xMS0xOSAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPg0KKw0KKyAgICAgICAgQVg6IFdlYktpdDogbmVl
ZCBhIG1ldGhvZCB0byBnZXQgdmlzaWJsZSB0ZXh0IGFuZCBmcmFtZSBvZiBhbiBlbGVtZW50IG9u
IHNjcmVlbg0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzMzNg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAg
ICAgICBJbXBsZW1lbnQgdmlzaWJsZUNoYXJhY3RlclJhbmdlIGZvciBzdGF0aWMgdGV4dCBlbGVt
ZW50cyBzbyB0aGF0IEJvb2tzIGNhbiBkZXRlcm1pbmUgdGhlIHZpc2libGUNCisgICAgICAgIGNv
bnRlbnQgb24gYSBwYWdlLg0KKw0KKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS92aXNpYmxl
LWNoYXJhY3Rlci1yYW5nZS5odG1sDQorDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6dmlzaWJsZUNoYXJhY3RlclJhbmdlIGNvbnN0KToNCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojp1bm9ic2N1cmVkQ29udGVudFJlY3QgY29uc3QpOg0KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoNCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg6DQorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOg0KKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVZpc2libGVD
b250ZW50UmVjdF0pOg0KKyAgICAgICAgKGFjY2Vzc2libGVFbGVtZW50c0Zvck9iamVjdHMpOg0K
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUZp
bmRNYXRjaGluZ09iamVjdHM6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBwb3NpdGlvbkZvclRleHRNYXJrZXI6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciB0ZXh0TWFya2VyRm9yUG9zaXRpb246XSk6DQorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzdHJpbmdGb3JSYW5nZTpdKToNCisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGZyYW1lRm9yUmFuZ2U6XSk6DQor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5TWF0
aFJhZGljYW5kXSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBf
Y29udmVydFRvTlNSYW5nZTpdKTogRGVsZXRlZC4NCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0VG9ET01SYW5nZTpdKTogRGVsZXRlZC4NCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6DQorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6dmlzaWJsZUNoYXJhY3RlclJhbmdlIGNv
bnN0KToNCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1bm9ic2N1cmVkQ29u
dGVudFJlY3QgY29uc3QpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0Lmg6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06DQorICAgICAgICAobWFrZU5T
QXJyYXkpOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGFj
Y2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VdKToNCisgICAgICAgIChtYWtlTlNSYW5n
ZSk6DQorICAgICAgICAobWFrZURPTVJhbmdlKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZSBiYXNlVXBkYXRlQmFja2luZ1N0b3JlXSk6DQorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgbGluZVJlY3RzQW5kVGV4dF0pOg0K
KyAgICAgICAgKGNvbnZlcnRUb05TQXJyYXkpOiBEZWxldGVkLg0KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToNCisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNoaWxkcmVuVmVjdG9yQXJyYXldKToN
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIF9pbmRleEZvclRleHRNYXJrZXI6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0p
Og0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb05T
UmFuZ2U6XSk6IERlbGV0ZWQuDQorDQogMjAyMS0xMS0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPg0KIA0KICAgICAgICAgRGlzYWJsZSBNYXRoTUwgd2hlbiBpbiBDYXB0aXZlIFBv
cnRhbCBNb2RlDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHANCmluZGV4IDkzODQ4ZTFjYWI3Ni4uNjc0NmY2Y2JiNDhmIDEwMDY0
NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcA0KQEAgLTcwNCw2ICs3MDQsNTIgQEAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4g
QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudFJhbmdlKCkgY29uc3QNCiAgICAgcmV0dXJuIEFY
T2JqZWN0Q2FjaGU6OnJhbmdlRm9yTm9kZUNvbnRlbnRzKCpub2RlKTsNCiB9DQogDQorc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZUNoYXJhY3Rl
clJhbmdlKCkgY29uc3QNCit7DQorICAgIGF1dG8gcmFuZ2UgPSBlbGVtZW50UmFuZ2UoKTsNCisg
ICAgaWYgKCFyYW5nZSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIGF1
dG8gY29udGVudFJlY3QgPSB1bm9ic2N1cmVkQ29udGVudFJlY3QoKTsNCisgICAgYXV0byBlbGVt
ZW50UmVjdCA9IHNuYXBwZWRJbnRSZWN0KHRoaXMtPmVsZW1lbnRSZWN0KCkpOw0KKyAgICBpZiAo
IWNvbnRlbnRSZWN0LmludGVyc2VjdHMoZWxlbWVudFJlY3QpKQ0KKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsNCisNCisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBzdGFydEJv
dW5kYXJ5ID0gcmFuZ2UtPnN0YXJ0Ow0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+
IGVuZEJvdW5kYXJ5ID0gcmFuZ2UtPmVuZDsNCisNCisgICAgLy8gT3JpZ2luIGlzbid0IGNvbnRh
aW5lZCBpbiB2aXNpYmxlIHJlY3QsIHN0YXJ0IG1vdmluZyBmb3J3YXJkIGJ5IGxpbmUuDQorICAg
IHdoaWxlICghY29udGVudFJlY3QuY29udGFpbnMoZWxlbWVudFJlY3QubG9jYXRpb24oKSkpIHsN
CisgICAgICAgIGF1dG8gbmV4dExpbmVQb3NpdGlvbiA9IG5leHRMaW5lRW5kUG9zaXRpb24oVmlz
aWJsZVBvc2l0aW9uKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigqc3RhcnRCb3VuZGFyeSkp
KTsNCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVzdFN0YXJ0Qm91bmRh
cnkgPSBtYWtlQm91bmRhcnlQb2ludChuZXh0TGluZVBvc2l0aW9uKTsNCisgICAgICAgIGlmICgh
dGVzdFN0YXJ0Qm91bmRhcnkgfHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RTdGFydEJvdW5kYXJ5
KSkNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIA0KKyAgICAgICAgc3RhcnRCb3VuZGFy
eSA9IHRlc3RTdGFydEJvdW5kYXJ5Ow0KKyAgICAgICAgZWxlbWVudFJlY3QgPSBib3VuZHNGb3JS
YW5nZShTaW1wbGVSYW5nZSgqc3RhcnRCb3VuZGFyeSwgcmFuZ2UtPmVuZCkpOw0KKyAgICAgICAg
aWYgKGVsZW1lbnRSZWN0LmlzRW1wdHkoKSkNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0K
Kw0KKyAgICAvLyBFbmQgaXNuJ3QgY29udGFpbmVkIGluIHZpc2libGUgcmVjdCwgc3RhcnQgbW92
aW5nIGJhY2t3YXJkcyBieSBsaW5lLg0KKyAgICB3aGlsZSAoIWNvbnRlbnRSZWN0LmNvbnRhaW5z
KGVsZW1lbnRSZWN0LmxvY2F0aW9uKCkgKyBlbGVtZW50UmVjdC5zaXplKCkpKSB7DQorICAgICAg
ICBhdXRvIHByZXZpb3VzTGluZVBvc2l0aW9uID0gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihW
aXNpYmxlUG9zaXRpb24obWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKCplbmRCb3VuZGFyeSkp
KTsNCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVzdEVuZEJvdW5kYXJ5
ID0gbWFrZUJvdW5kYXJ5UG9pbnQocHJldmlvdXNMaW5lUG9zaXRpb24pOw0KKyAgICAgICAgaWYg
KCF0ZXN0RW5kQm91bmRhcnkgfHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RFbmRCb3VuZGFyeSkp
DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICANCisgICAgICAgIGVuZEJvdW5kYXJ5ID0g
dGVzdEVuZEJvdW5kYXJ5Ow0KKyAgICAgICAgZWxlbWVudFJlY3QgPSBib3VuZHNGb3JSYW5nZSh7
ICpzdGFydEJvdW5kYXJ5LCAqZW5kQm91bmRhcnkgfSk7DQorICAgICAgICBpZiAoZWxlbWVudFJl
Y3QuaXNFbXB0eSgpKQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAgIGlmICgh
c3RhcnRCb3VuZGFyeSB8fCAhZW5kQm91bmRhcnkpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0Ow0KKyAgICANCisgICAgcmV0dXJuIFNpbXBsZVJhbmdlKCpzdGFydEJvdW5kYXJ5LCAqZW5k
Qm91bmRhcnkpOw0KK30NCisNCiBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpmaW5kVGV4dFJhbmdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hTdHJp
bmdzLCBjb25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbikgY29uc3QNCiB7DQogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IGZvdW5kOw0KQEAgLTMxODIsNiArMzIyOCwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgSW50UmVjdCYgc3ViZm9j
dQ0KICAgICAgICAgc2Nyb2xsUGFyZW50LT5zY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3Vz
KG5ld1N1YmZvY3VzKTsNCiB9DQogDQorRmxvYXRSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnVu
b2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0DQorew0KKyAgICBhdXRvIGRvY3VtZW50ID0gdGhp
cy0+ZG9jdW1lbnQoKTsNCisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkN
CisgICAgICAgIHJldHVybiB7IH07DQorICAgIHJldHVybiBGbG9hdFJlY3Qoc25hcHBlZEludFJl
Y3QoZG9jdW1lbnQtPnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpKTsNCit9DQorDQog
dm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb2ludCkgY29uc3QNCiB7DQogICAgIC8vIFNlYXJjaCB1cCB0aGUgcGFyZW50
IGNoYWluIGFuZCBjcmVhdGUgYSB2ZWN0b3Igb2YgYWxsIHNjcm9sbGFibGUgcGFyZW50IG9iamVj
dHMNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oDQppbmRleCBlOTEzNGRhZDBkZjkuLjIzMDk1YWZiNmZjNyAxMDA2NDQNCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oDQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KQEAgLTgw
OCw3ICs4MDgsNyBAQCBwcm90ZWN0ZWQ6DQogICAgIHZvaWQgYXJpYUVsZW1lbnRzRnJvbUF0dHJp
YnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Q7DQogICAgIHZvaWQgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsNCiAg
ICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0NCi0NCisgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IG92
ZXJyaWRlOw0KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByYWRpb0dyb3VwQW5jZXN0b3IoKSBj
b25zdDsNCiANCiAgICAgYm9vbCBhbGxvd3NUZXh0UmFuZ2VzKCkgY29uc3Q7DQpAQCAtODIxLDYg
KzgyMSw3IEBAIHByaXZhdGU6DQogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdl
T2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiwgQWNj
ZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsN
CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VsZWN0aW9uUmFuZ2UoKSBjb25zdDsN
CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZmluZFRleHRSYW5nZShjb25zdCBWZWN0
b3I8U3RyaW5nPiYgc2VhcmNoU3RyaW5ncywgY29uc3QgU2ltcGxlUmFuZ2UmIHN0YXJ0LCBBY2Nl
c3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbikgY29uc3Q7DQorICAgIHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IHZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0K
IHByb3RlY3RlZDogLy8gRklYTUU6IE1ha2UgdGhlIGRhdGEgbWVtYmVycyBwcml2YXRlLg0KICAg
ICBib29sIGNoaWxkcmVuSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuSW5p
dGlhbGl6ZWQ7IH0NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQppbmRleCBjYTlhMGNlYmQyZmIuLjEw
NTlmNTkyNmY3MSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaA0KQEAgLTk5Niw2ICs5OTYsNyBA
QCBwdWJsaWM6DQogICAgIHZpcnR1YWwgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3QgPSAwOw0K
ICAgICB2aXJ0dWFsIGJvb2wgaGFzTWlzc3BlbGxpbmcoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1
YWwgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1w
bGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24pIGNvbnN0ID0gMDsN
CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiB2aXNpYmxlQ2hhcmFjdGVy
UmFuZ2UoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBjb25z
dCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lRm9udChjb25zdCBBWENvcmVPYmplY3Qm
KSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lRm9udENvbG9yKGNvbnN0IEFY
Q29yZU9iamVjdCYpIGNvbnN0ID0gMDsNCkBAIC0xNTMwLDYgKzE1MzEsOCBAQCBwdWJsaWM6DQog
ICAgIHZpcnR1YWwgU3RyaW5nIGlubmVySFRNTCgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBT
dHJpbmcgb3V0ZXJIVE1MKCkgY29uc3QgPSAwOw0KIA0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCB1
bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25zdCA9IDA7DQorICAgIA0KIHByaXZhdGU6DQogICAg
IC8vIERldGFjaGVzIHRoaXMgb2JqZWN0IGZyb20gdGhlIG9iamVjdHMgaXQgcmVmZXJlbmNlcyBh
bmQgaXQgaXMgcmVmZXJlbmNlZCBieS4NCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFJlbW90ZVBh
cnRzKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSkgPSAwOw0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0NCmluZGV4IDVlMGM4YzhlYmM2Ny4uOTg5MzQxYWZjMjEyIDEw
MDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tDQpAQCAtNTIsNiArNTIs
NyBAQA0KICNpbXBvcnQgIlNWR0VsZW1lbnRJbmxpbmVzLmgiDQogI2ltcG9ydCAiU1ZHTmFtZXMu
aCINCiAjaW1wb3J0ICJTZWxlY3Rpb25HZW9tZXRyeS5oIg0KKyNpbXBvcnQgIlNpbXBsZVJhbmdl
LmgiDQogI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiDQogI2ltcG9ydCAiV0FLU2Nyb2xsVmlldy5o
Ig0KICNpbXBvcnQgIldBS1dpbmRvdy5oIg0KQEAgLTE2OTQsMTIgKzE2OTUsNyBAQCBzdGF0aWMg
dm9pZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNTdHJp
bmcgKnN0cmluZykNCiB7DQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2Fs
bF0pDQogICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCi0gICAgDQotICAgIGF1dG8gZG9jdW1l
bnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCi0gICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkNCi0gICAgICAgIHJldHVybiBDR1JlY3RaZXJvOw0KLSAg
ICBhdXRvIHJlY3QgPSBGbG9hdFJlY3Qoc25hcHBlZEludFJlY3QoZG9jdW1lbnQtPnZpZXcoKS0+
dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpKTsNCi0gICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0
VG9TcGFjZTpyZWN0IHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl07
DQorICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6c2VsZi5heEJhY2tpbmdPYmpl
Y3QtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpIHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9u
U3BhY2U6OlNjcmVlbl07DQogfQ0KIA0KIC8vIFRoZSAiY2VudGVyIHBvaW50IiBpcyB3aGVyZSBW
b2ljZU92ZXIgd2lsbCAicHJlc3MiIGFuIG9iamVjdC4gVGhpcyBtYXkgbm90IGJlIHRoZSBhY3R1
YWwNCkBAIC0xOTE1LDcgKzE5MTEsNyBAQCBzdGF0aWMgTlNBcnJheSAqYWNjZXNzaWJsZUVsZW1l
bnRzRm9yT2JqZWN0cyhjb25zdCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaA0KICAgICAg
ICAgfSk7DQogICAgIH0NCiANCi0gICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYWNjZXNzaWJs
ZUVsZW1lbnRzKTsNCisgICAgcmV0dXJuIG1ha2VOU0FycmF5KGFjY2Vzc2libGVFbGVtZW50cyk7
DQogfQ0KIA0KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5RGV0YWlsc0VsZW1lbnRzDQpAQCAt
MjEwNCw3ICsyMTAwLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdB
S1ZpZXcqIHZpZXcpDQogICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBjcml0ZXJpYSA9
IGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGUocGFyYW1ldGVycyk7DQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOw0KICAgICBzZWxmLmF4QmFja2luZ09iamVj
dC0+ZmluZE1hdGNoaW5nT2JqZWN0cygmY3JpdGVyaWEsIHJlc3VsdHMpOw0KLSAgICByZXR1cm4g
Y29udmVydFRvTlNBcnJheShyZXN1bHRzKTsNCisgICAgcmV0dXJuIG1ha2VOU0FycmF5KHJlc3Vs
dHMpOw0KIH0NCiANCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlNb2RpZnlTZWxlY3Rpb246KFRleHRH
cmFudWxhcml0eSlncmFudWxhcml0eSBpbmNyZWFzZTooQk9PTClpbmNyZWFzZQ0KQEAgLTIyMDks
NDcgKzIyMDUsNiBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmll
dyogdmlldykNCiAgICAgcmV0dXJuIHJhbmdlID8gW3NlbGYgY29udGVudEZvclNpbXBsZVJhbmdl
OipyYW5nZSBhdHRyaWJ1dGVkOmF0dHJpYnV0ZWRdIDogbmlsOw0KIH0NCiANCi0vLyBGSVhNRTog
Tm8gcmVhc29uIGZvciB0aGlzIHRvIGJlIGEgbWV0aG9kIGluc3RlYWQgb2YgYSBmdW5jdGlvbi4N
Ci0tIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihjb25zdCBTaW1wbGVSYW5nZSYpcmFuZ2UN
Ci17DQotICAgIGF1dG8mIGRvY3VtZW50ID0gcmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKTsNCi0gICAg
YXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOw0KLSAgICBpZiAoIWZyYW1lKQ0KLSAgICAg
ICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICBhdXRvKiByb290
RWRpdGFibGVFbGVtZW50ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0
YWJsZUVsZW1lbnQoKTsNCi0gICAgYXV0byogc2NvcGUgPSByb290RWRpdGFibGVFbGVtZW50ID8g
cm9vdEVkaXRhYmxlRWxlbWVudCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOw0KLSAgICBp
ZiAoIXNjb3BlKQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0K
LQ0KLSAgICAvLyBNb3VzZSBldmVudHMgbWF5IGNhdXNlIFRTTSB0byBhdHRlbXB0IHRvIGNyZWF0
ZSBhbiBOU1JhbmdlIGZvciBhIHBvcnRpb24gb2YgdGhlIHZpZXcNCi0gICAgLy8gdGhhdCBpcyBu
b3QgaW5zaWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lvbi4gVGhlc2UgY2hlY2tzIGVuc3Vy
ZSB3ZSBkb24ndCBwcm9kdWNlDQotICAgIC8vIHBvdGVudGlhbGx5IGludmFsaWQgZGF0YSB3aGVu
IHJlc3BvbmRpbmcgdG8gc3VjaCByZXF1ZXN0cy4NCi0gICAgaWYgKCFzY29wZS0+Y29udGFpbnMo
cmFuZ2Uuc3RhcnQuY29udGFpbmVyLnB0cigpKSB8fCAhc2NvcGUtPmNvbnRhaW5zKHJhbmdlLmVu
ZC5jb250YWluZXIucHRyKCkpKQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91
bmQsIDApOw0KLQ0KLSAgICByZXR1cm4gTlNNYWtlUmFuZ2UoY2hhcmFjdGVyQ291bnQoeyB7ICpz
Y29wZSwgMCB9LCByYW5nZS5zdGFydCB9KSwgY2hhcmFjdGVyQ291bnQocmFuZ2UpKTsNCi19DQot
DQotLSAoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1Jh
bmdlKXJhbmdlDQotew0KLSAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkNCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQotDQotICAgIC8vIG91ciBjcml0aWNhbCBhc3N1
bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdA0K
LSAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0
aW9uDQotICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFu
ZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdA0KLSAgICAvLyBkaXJlY3RseSBp
biB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGljLiBPdXIg
c29sdXRpb24gaXMNCi0gICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2Yg
dGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLg0KLSAgICAvLyBUaGF0
IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuDQotICAgIGF1dG8g
ZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCi0gICAgYXV0byBz
ZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCi0gICAgYXV0byBzY29wZSA9IHNlbGVjdGlvblJvb3Qg
PyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOw0KLSAgICBpZiAo
IXNjb3BlKQ0KLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCi0NCi0gICAgcmV0dXJuIHJl
c29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3Bl
KSwgcmFuZ2UpOw0KLX0NCiANCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byB0YWtlIGEg
dGV4dCBtYXJrZXIgcmVwcmVzZW50aW5nIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCBjb252ZXJ0IGl0
DQogLy8gaW50byBhIG5vcm1hbGl6ZWQgbG9jYXRpb24gd2l0aGluIHRoZSBkb2N1bWVudC4NCkBA
IC0yMjY3LDcgKzIyMjIsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXco
V0FLVmlldyogdmlldykNCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYWNoZS0+cmFuZ2VGb3JVbm9y
ZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyT2Zmc2V0KTsN
CiAgICAgICAgIGlmICghcmFuZ2UpDQogICAgICAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQot
ICAgICAgICByZXR1cm4gW3NlbGYgX2NvbnZlcnRUb05TUmFuZ2U6KnJhbmdlXS5sb2NhdGlvbjsN
CisgICAgICAgIHJldHVybiBtYWtlTlNSYW5nZShyYW5nZSkubG9jYXRpb247DQogICAgIH0NCiAg
ICAgcmV0dXJuIE5TTm90Rm91bmQ7DQogfQ0KQEAgLTIzNDYsNyArMjMwMSw3IEBAIHN0YXRpYyBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICBpZiAoIVtz
ZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiAN
Ci0gICAgYXV0byByYW5nZSA9IFtzZWxmIF9jb252ZXJ0VG9ET01SYW5nZTpOU01ha2VSYW5nZShw
b3NpdGlvbiwgMCldOw0KKyAgICBhdXRvIHJhbmdlID0gbWFrZURPTVJhbmdlKHNlbGYuYXhCYWNr
aW5nT2JqZWN0LT5kb2N1bWVudCgpLCBOU01ha2VSYW5nZShwb3NpdGlvbiwgMCkpOw0KICAgICBp
ZiAoIXJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiANCkBAIC0yNDE0LDcgKzIzNjksNyBA
QCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiB7
DQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQogICAgICAgICBy
ZXR1cm4gbmlsOw0KLSAgICBhdXRvIHdlYlJhbmdlID0gW3NlbGYgX2NvbnZlcnRUb0RPTVJhbmdl
OnJhbmdlXTsNCisgICAgYXV0byB3ZWJSYW5nZSA9IG1ha2VET01SYW5nZShzZWxmLmF4QmFja2lu
Z09iamVjdC0+ZG9jdW1lbnQoKSwgcmFuZ2UpOw0KICAgICBpZiAoIXdlYlJhbmdlKQ0KICAgICAg
ICAgcmV0dXJuIG5pbDsNCiAgICAgcmV0dXJuIHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zdHJpbmdG
b3JSYW5nZSgqd2ViUmFuZ2UpOw0KQEAgLTI2MDAsNiArMjU1NSwxNyBAQCBzdGF0aWMgUmVuZGVy
T2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgcmV0dXJuIFtzZWxm
IHByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OnN0YXJ0XTsNCiB9DQogDQorLSAoQ0dS
ZWN0KWZyYW1lRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UNCit7DQorICAgIGlmICghW3NlbGYgX3By
ZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQorICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCisg
ICAgYXV0byB3ZWJSYW5nZSA9IG1ha2VET01SYW5nZShzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9j
dW1lbnQoKSwgcmFuZ2UpOw0KKyAgICBpZiAoIXdlYlJhbmdlKQ0KKyAgICAgICAgcmV0dXJuIENH
UmVjdFplcm87DQorICAgIGF1dG8gcmVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5ib3VuZHNG
b3JSYW5nZSgqd2ViUmFuZ2UpOw0KKyAgICByZXR1cm4gW3NlbGYgY29udmVydFJlY3RUb1NwYWNl
OnJlY3Qgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6U2NyZWVuXTsNCit9DQor
DQogLy8gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gcmV0dXJuIHRoZSBib3VuZHMgb2YgYSB0
ZXh0IG1hcmtlciByYW5nZSBpbiBzY3JlZW4gY29vcmRpbmF0ZXMuDQogLSAoQ0dSZWN0KWZyYW1l
Rm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKilhcnJheQ0KIHsNCkBAIC0yOTMxLDcgKzI4OTcsNyBA
QCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAg
ICAgICAgIHJldHVybiBuaWw7DQogDQogICAgIGF1dG8gcmFkaWNhbmQgPSBzZWxmLmF4QmFja2lu
Z09iamVjdC0+bWF0aFJhZGljYW5kKCk7DQotICAgIHJldHVybiByYWRpY2FuZCA/IGNvbnZlcnRU
b05TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCisgICAgcmV0dXJuIHJhZGljYW5kID8gbWFrZU5T
QXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCiB9DQogDQogLSAoV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgKilhY2Nlc3NpYmlsaXR5TWF0aE51bWVyYXRvck9iamVjdA0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5jcHANCmluZGV4IGJhNTA4NGE3M2YxYy4uMDY2OGJlMTg5ZmI5IDEwMDY0NA0K
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHANCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQpAQCAtOTkyLDYgKzk5MiwxMyBAQCB2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpDQogICAgICAgICB0cmVlLT5hcHBseVBl
bmRpbmdDaGFuZ2VzKCk7DQogfQ0KIA0KK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNv
bGF0ZWRPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0DQorew0KKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOw0KKyAgICBhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0ZWRBWE9i
amVjdCgpOw0KKyAgICByZXR1cm4gYXhPYmplY3QgPyBheE9iamVjdC0+dmlzaWJsZUNoYXJhY3Rl
clJhbmdlKCkgOiBzdGQ6Om51bGxvcHQ7DQorfQ0KKw0KIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5U
ZXh0UmFuZ2UmIGF4UmFuZ2UpIGNvbnN0DQogew0KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
Ow0KQEAgLTE0NzAsNiArMTQ3NywxNSBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFNlbGVj
dGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZw0KICAgICAg
ICAgb2JqZWN0LT5zZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NpdGlv
blJhbmdlKTsNCiB9DQogDQorRmxvYXRSZWN0IEFYSXNvbGF0ZWRPYmplY3Q6OnVub2JzY3VyZWRD
b250ZW50UmVjdCgpIGNvbnN0DQorew0KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmll
dmVWYWx1ZUZyb21NYWluVGhyZWFkPEZsb2F0UmVjdD4oW3RoaXNdICgpIC0+IEZsb2F0UmVjdCB7
DQorICAgICAgICBpZiAoYXV0byogb2JqZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0KCkpDQorICAg
ICAgICAgICAgcmV0dXJuIG9iamVjdC0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7DQorICAgICAg
ICByZXR1cm4geyB9Ow0KKyAgICB9KTsNCit9DQorDQogc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudFJhbmdlKCkgY29uc3QNCiB7DQogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oDQppbmRleCA2OTI5MzVh
OTc0ZjQuLjBlMmIzNzdhNzE5NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaA0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oDQpAQCAtNDQx
LDkgKzQ0MSwxMSBAQCBwcml2YXRlOg0KICAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlP
YmplY3RGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsN
CiAgICAgaW50IGxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBv
dmVycmlkZTsNCiAgICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2VGb3JWaXNpYmxlUG9z
aXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOw0K
KyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSBj
b25zdCBvdmVycmlkZTsNCiAgICAgaW50IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNv
bnN0IG92ZXJyaWRlOw0KICAgICB2b2lkIGxpbmVCcmVha3MoVmVjdG9yPGludD4mKSBjb25zdCBv
dmVycmlkZTsNCi0NCisgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0
IG92ZXJyaWRlOw0KKyAgICANCiAgICAgLy8gQXR0cmlidXRlIHNldHRlcnMuDQogICAgIHZvaWQg
c2V0QVJJQUdyYWJiZWQoYm9vbCkgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0SXNFeHBhbmRlZChi
b29sKSBvdmVycmlkZTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oDQpp
bmRleCBlZWEzZTY5ZGVkOTMuLmFjMmJkYmZlMmFjNSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5o
DQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UuaA0KQEAgLTM0LDYgKzM0LDcgQEANCiANCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7DQogc3RydWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYTsNCitjbGFzcyBEb2N1
bWVudDsNCiBjbGFzcyBJbnRSZWN0Ow0KIGNsYXNzIEZsb2F0UG9pbnQ7DQogY2xhc3MgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ7DQpAQCAtMTExLDExICsxMTIsMTUgQEAgc3RhdGljIE5TU3Ry
aW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlID0gQCJV
SUFjY2Vzc2liaWwNCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0UGFp
cnM7DQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0UGFpcnM7DQogDQor
LSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlOw0KKw0KIC0gKE5T
RGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKiliYXNlQWNjZXNzaWJpbGl0eVJlc29sdmVkRWRp
dGluZ1N0eWxlczsNCiANCiBleHRlcm4gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXRl
cml6ZWRBdHRyaWJ1dGUoY29uc3QgTlNEaWN0aW9uYXJ5ICopOw0KIA0KLWV4dGVybiBOU0FycmF5
ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJik7DQorZXh0ZXJuIE5TQXJyYXkgKm1ha2VOU0FycmF5KGNvbnN0
IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7DQor
ZXh0ZXJuIE5TUmFuZ2UgbWFrZU5TUmFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4pOw0KK2V4dGVybiBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBtYWtl
RE9NUmFuZ2UoV2ViQ29yZTo6RG9jdW1lbnQqLCBOU1JhbmdlKTsNCiANCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkNCiAtIChpZClfYWNjZXNzaWJpbGl0eVdlYkRvY3VtZW50VmlldzsNCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0NCmluZGV4IGFlNjVlNDlhYWQwNi4u
OTU3Y2RlNjFiNDE0IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tDQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
bW0NCkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIE5TQXJyYXkgKmNvbnZlcnRNYXRoUGFpcnNU
b05TQXJyYXkoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGkNCiAgICAgfSku
YXV0b3JlbGVhc2UoKTsNCiB9DQogDQotTlNBcnJheSAqY29udmVydFRvTlNBcnJheShjb25zdCBX
ZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRy
ZW4pDQorTlNBcnJheSAqbWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKQ0KIHsNCiAgICAgcmV0dXJuIGNy
ZWF0ZU5TQXJyYXkoY2hpbGRyZW4sIFtdIChjb25zdCBhdXRvJiBjaGlsZCkgLT4gaWQgew0KICAg
ICAgICAgYXV0byB3cmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsNCkBAIC00NjIsNiArNDYyLDI3
IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9uKFBhdGhDb252
ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uDQogICAgIHJldHVybiBjb252ZXJ0ZWRQYXRoLmF1
dG9yZWxlYXNlKCk7DQogfQ0KIA0KKy8vIERldGVybWluZSB0aGUgdmlzaWJsZSByYW5nZSBieSBj
aGVja2luZyBpbnRlcnNlY3Rpb24gb2YgdW5vYnNjdXJlZENvbnRlbnRSZWN0IGFuZCBhIHJhbmdl
IG9mIHRleHQgYnkNCisvLyBhZHZhbmNpbmcgZm9yd2FyZCBieSBsaW5lIGZyb20gdG9wIGFuZCBi
YWNrd2FyZHMgYnkgbGluZSBmcm9tIHRoZSBib3R0b20sIHVudGlsIHdlIGhhdmUgYSB2aXNpYmxl
IHJhbmdlLg0KKy0gKE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZQ0K
K3sNCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVh
ZDxOU1JhbmdlPihbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gTlNSYW5n
ZSB7DQorICAgICAgICBhdXRvIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmJh
c2VVcGRhdGVCYWNraW5nU3RvcmU7DQorICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpDQorICAg
ICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICAgICAg
YXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlTlNSYW5nZShiYWNraW5nT2JqZWN0LT5lbGVtZW50UmFu
Z2UoKSk7DQorICAgICAgICBpZiAoZWxlbWVudFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQp
DQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRSYW5nZTsNCisgICAgICAgIA0KKyAgICAgICAg
YXV0byB2aXNpYmxlUmFuZ2UgPSBtYWtlTlNSYW5nZShiYWNraW5nT2JqZWN0LT52aXNpYmxlQ2hh
cmFjdGVyUmFuZ2UoKSk7DQorICAgICAgICBpZiAodmlzaWJsZVJhbmdlLmxvY2F0aW9uID09IE5T
Tm90Rm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIHZpc2libGVSYW5nZTsNCisNCisgICAgICAg
IHJldHVybiBOU01ha2VSYW5nZSh2aXNpYmxlUmFuZ2UubG9jYXRpb24gLSBlbGVtZW50UmFuZ2Uu
bG9jYXRpb24sIHZpc2libGVSYW5nZS5sZW5ndGgpOw0KKyAgICB9KTsNCit9DQorDQogLSAoaWQp
X2FjY2Vzc2liaWxpdHlXZWJEb2N1bWVudFZpZXcNCiB7DQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOw0KQEAgLTYyMyw2ICs2NDQsNTAgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5n
QXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLA0KICAgICBB
WEF0dHJpYnV0ZVN0cmluZ1NldExhbmd1YWdlKGF0dHJTdHJpbmcsIG5vZGUtPnJlbmRlcmVyKCks
IGF0dHJTdHJpbmdSYW5nZSk7DQogfQ0KIA0KKw0KK05TUmFuZ2UgbWFrZU5TUmFuZ2Uoc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2UpDQorew0KKyAgICBpZiAoIXJhbmdlKQ0KKyAgICAg
ICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKyAgICANCisgICAgYXV0byYg
ZG9jdW1lbnQgPSByYW5nZS0+c3RhcnQuZG9jdW1lbnQoKTsNCisgICAgYXV0byogZnJhbWUgPSBk
b2N1bWVudC5mcmFtZSgpOw0KKyAgICBpZiAoIWZyYW1lKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFr
ZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICBhdXRvKiByb290RWRpdGFibGVFbGVtZW50
ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsN
CisgICAgYXV0byogc2NvcGUgPSByb290RWRpdGFibGVFbGVtZW50ID8gcm9vdEVkaXRhYmxlRWxl
bWVudCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOw0KKyAgICBpZiAoIXNjb3BlKQ0KKyAg
ICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICAvLyBNb3Vz
ZSBldmVudHMgbWF5IGNhdXNlIFRTTSB0byBhdHRlbXB0IHRvIGNyZWF0ZSBhbiBOU1JhbmdlIGZv
ciBhIHBvcnRpb24gb2YgdGhlIHZpZXcNCisgICAgLy8gdGhhdCBpcyBub3QgaW5zaWRlIHRoZSBj
dXJyZW50IGVkaXRhYmxlIHJlZ2lvbi4gVGhlc2UgY2hlY2tzIGVuc3VyZSB3ZSBkb24ndCBwcm9k
dWNlDQorICAgIC8vIHBvdGVudGlhbGx5IGludmFsaWQgZGF0YSB3aGVuIHJlc3BvbmRpbmcgdG8g
c3VjaCByZXF1ZXN0cy4NCisgICAgaWYgKCFzY29wZS0+Y29udGFpbnMocmFuZ2UtPnN0YXJ0LmNv
bnRhaW5lci5wdHIoKSkgfHwgIXNjb3BlLT5jb250YWlucyhyYW5nZS0+ZW5kLmNvbnRhaW5lci5w
dHIoKSkpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQorDQor
ICAgIHJldHVybiBOU01ha2VSYW5nZShjaGFyYWN0ZXJDb3VudCh7IHsgKnNjb3BlLCAwIH0sIHJh
bmdlLT5zdGFydCB9KSwgY2hhcmFjdGVyQ291bnQoKnJhbmdlKSk7DQorfQ0KKw0KK3N0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VET01SYW5nZShEb2N1bWVudCogZG9jdW1lbnQsIE5TUmFu
Z2UgcmFuZ2UpDQorew0KKyAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkNCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIC8vIG91ciBjcml0aWNhbCBhc3N1
bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdA0K
KyAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0
aW9uDQorICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFu
ZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdA0KKyAgICAvLyBkaXJlY3RseSBp
biB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGljLiBPdXIg
c29sdXRpb24gaXMNCisgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2Yg
dGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLg0KKyAgICAvLyBUaGF0
IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuDQorICAgIGF1dG8g
c2VsZWN0aW9uUm9vdCA9IGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5yb290RWRpdGFibGVFbGVtZW50KCk7DQorICAgIGF1dG8gc2NvcGUgPSBzZWxlY3Rpb25Sb290
ID8gc2VsZWN0aW9uUm9vdCA6IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsNCisgICAgaWYg
KCFzY29wZSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIHJldHVybiBy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29w
ZSksIHJhbmdlKTsNCit9DQorDQogLy8gUmV0dXJucyBhbiBhcnJheSBvZiBzdHJpbmdzIGFuZCBB
WE9iamVjdCB3cmFwcGVycyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0ZXh0DQogLy8gcnVucyBhbmQg
cmVwbGFjZW1lbnQgbm9kZXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIHJhbmdlLg0KIC0gKE5TQXJy
YXkgKiljb250ZW50Rm9yU2ltcGxlUmFuZ2U6KGNvbnN0IFNpbXBsZVJhbmdlJilyYW5nZSBhdHRy
aWJ1dGVkOihCT09MKWF0dHJpYnV0ZWQNCkBAIC02NzYsMTggKzc0MSwyNiBAQCBzdGF0aWMgdm9p
ZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcq
IGF0dHJTdHJpbmcsDQogICAgIHJldHVybiBhcnJheS5hdXRvcmVsZWFzZSgpOw0KIH0NCiANCi0t
IChOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKWxpbmVSZWN0c0FuZFRleHQNCistIChXZWJDb3Jl
OjpBWENvcmVPYmplY3QqKWJhc2VVcGRhdGVCYWNraW5nU3RvcmUNCiB7DQogI2lmIFBMQVRGT1JN
KE1BQykNCiAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYudXBkYXRlT2JqZWN0QmFja2lu
Z1N0b3JlOw0KICAgICBpZiAoIWJhY2tpbmdPYmplY3QpDQotICAgICAgICByZXR1cm4gbmlsOw0K
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogI2Vsc2UNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFy
ZUFjY2Vzc2liaWxpdHlDYWxsXSkNCi0gICAgICAgIHJldHVybiBuaWw7DQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsNCiAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0Ow0KICNlbmRpZg0KKyAgICByZXR1cm4gYmFja2luZ09iamVjdDsNCit9DQogDQorLSAoTlNB
cnJheTxOU0RpY3Rpb25hcnkgKj4gKilsaW5lUmVjdHNBbmRUZXh0DQorew0KKyAgICBhdXRvIGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmJhc2VVcGRhdGVCYWNraW5nU3RvcmU7DQorICAgIGlmICghYmFj
a2luZ09iamVjdCkNCisgICAgICAgIHJldHVybiBuaWw7DQorICAgIA0KICAgICBhdXRvIHJhbmdl
ID0gYmFja2luZ09iamVjdC0+ZWxlbWVudFJhbmdlKCk7DQogICAgIGlmICghcmFuZ2UpDQogICAg
ICAgICByZXR1cm4gbmlsOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0N
CmluZGV4IGExZDY1Y2MwYTBhYS4uMDI5M2Q4NjczYmJkIDEwMDY0NA0KLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0NCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tDQpAQCAtMTc5Niw3ICsxNzk2LDcgQEAgc3RhdGljIHZvaWQg
V2ViVHJhbnNmb3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9pZCogaW5mbywgY29uc3QgQ0dQYXRo
RWxlbWVudCAqZWwNCiANCiAtIChOU0FycmF5PFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
ICo+ICopY2hpbGRyZW5WZWN0b3JBcnJheQ0KIHsNCi0gICAgcmV0dXJuIGNvbnZlcnRUb05TQXJy
YXkoc2VsZi5heEJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KKyAgICByZXR1cm4gbWFrZU5T
QXJyYXkoc2VsZi5heEJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KIH0NCiANCiAtIChOU1Zh
bHVlICopcG9zaXRpb24NCkBAIC0yMjA0LDcgKzIyMDQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVt
KCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgY29udGVudENvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+YXJp
YVRyZWVJdGVtQ29udGVudChjb250ZW50Q29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZl
cnRUb05TQXJyYXkoY29udGVudENvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJh
eShjb250ZW50Q29weSk7DQogICAgICAgICB9DQogDQogICAgICAgICByZXR1cm4gc2VsZi5jaGls
ZHJlblZlY3RvckFycmF5Ow0KQEAgLTIyMTQsNyArMjIxNCw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmNhbkhhdmVT
ZWxlY3RlZENoaWxkcmVuKCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbkNvcHk7DQogICAgICAg
ICAgICAgYmFja2luZ09iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuQ29w
eSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZWN0ZWRDaGlsZHJl
bkNvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShzZWxlY3RlZENoaWxkcmVu
Q29weSk7DQogICAgICAgICB9DQogICAgICAgICByZXR1cm4gbmlsOw0KICAgICB9DQpAQCAtMjIy
Myw3ICsyMjIzLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAg
ICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNMaXN0Qm94KCkpIHsNCiAgICAgICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdmlzaWJsZUNoaWxk
cmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT52aXNpYmxlQ2hpbGRyZW4odmlz
aWJsZUNoaWxkcmVuQ29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXko
dmlzaWJsZUNoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHZp
c2libGVDaGlsZHJlbkNvcHkpOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgaWYgKGJhY2tpbmdP
YmplY3QtPmlzTGlzdCgpKQ0KQEAgLTIyMzUsNyArMjIzNSw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORA0KIA0KICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNXZWJBcmVh
KCkpIHsNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExp
bmtVSUVsZW1lbnRzIl0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFj
a2luZ09iamVjdC0+ZG9jdW1lbnRMaW5rcygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5T
QXJyYXkoYmFja2luZ09iamVjdC0+ZG9jdW1lbnRMaW5rcygpKTsNCiANCiAgICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExvYWRlZCJdKQ0KICAgICAgICAgICAg
IHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVjdC0+aXNMb2FkZWQo
KV07DQpAQCAtMjI2OCwxNiArMjI2OCwyMSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQNCiAgICAgICAgICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBiYWNraW5n
T2JqZWN0LT5zZWxlY3RlZFRleHRSYW5nZSgpOw0KICAgICAgICAgICAgIHJldHVybiBbTlNWYWx1
ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0UmFuZ2Uuc3RhcnQsIHRleHRSYW5nZS5s
ZW5ndGgpXTsNCiAgICAgICAgIH0NCi0gICAgICAgIC8vIFRPRE86IEdldCBhY3R1YWwgdmlzaWJs
ZSByYW5nZS4gPHJkYXI6Ly9wcm9ibGVtLzQ3MTIxMDE+DQotICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFu
Z2VBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT5pc1Bhc3N3
b3JkRmllbGQoKSA/IG5pbCA6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOiBOU01ha2VSYW5nZSgw
LCBiYWNraW5nT2JqZWN0LT50ZXh0TGVuZ3RoKCkpXTsNCi0NCiAgICAgICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5zZXJ0aW9uUG9pbnRMaW5l
TnVtYmVyQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIGludCBsaW5lTnVtYmVyID0gYmFja2lu
Z09iamVjdC0+aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCk7DQogICAgICAgICAgICAgcmV0dXJu
IGxpbmVOdW1iZXIgPj0gMCA/IEAobGluZU51bWJlcikgOiBuaWw7DQogICAgICAgICB9DQogICAg
IH0NCiANCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3Np
YmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRlXSkgew0KKyAgICAgICAgaWYgKGJh
Y2tpbmdPYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBuaWw7
DQorICAgICAgICAvLyBUT0RPOiBHZXQgYWN0dWFsIHZpc2libGUgcmFuZ2UuIDxyZGFyOi8vcHJv
YmxlbS80NzEyMTAxPg0KKyAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGV4dENvbnRyb2wo
KSkNCisgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgYmFja2luZ09iamVjdC0+dGV4dExlbmd0aCgpKV07DQorICAgICAgICByZXR1cm4gW05T
VmFsdWUgdmFsdWVXaXRoUmFuZ2U6W3NlbGYgYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJS
YW5nZV1dOw0KKyAgICB9DQorDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6IE5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV0pIHsNCiAgICAgICAgIFVSTCB1cmwgPSBi
YWNraW5nT2JqZWN0LT51cmwoKTsNCiAgICAgICAgIGlmICh1cmwuaXNOdWxsKCkpDQpAQCAtMjM4
MSw3ICsyMzg2LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogDQog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW1h
Z2VPdmVybGF5RWxlbWVudHNBdHRyaWJ1dGVdKSB7DQogICAgICAgICBhdXRvIGltYWdlT3Zlcmxh
eUVsZW1lbnRzID0gYmFja2luZ09iamVjdC0+aW1hZ2VPdmVybGF5RWxlbWVudHMoKTsNCi0gICAg
ICAgIHJldHVybiBpbWFnZU92ZXJsYXlFbGVtZW50cyA/IGNvbnZlcnRUb05TQXJyYXkoKmltYWdl
T3ZlcmxheUVsZW1lbnRzKSA6IG5pbDsNCisgICAgICAgIHJldHVybiBpbWFnZU92ZXJsYXlFbGVt
ZW50cyA/IG1ha2VOU0FycmF5KCppbWFnZU92ZXJsYXlFbGVtZW50cykgOiBuaWw7DQogICAgIH0N
CiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlFbWJlZGRlZEltYWdlRGVzY3JpcHRpb25BdHRyaWJ1dGVdKQ0KQEAgLTI0MDUsMjkgKzI0MTAs
MjkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAo
YmFja2luZ09iamVjdC0+aXNUYWJMaXN0KCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFic0NoaWxkcmVuOw0KICAgICAg
ICAgICAgIGJhY2tpbmdPYmplY3QtPnRhYkNoaWxkcmVuKHRhYnNDaGlsZHJlbik7DQotICAgICAg
ICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodGFic0NoaWxkcmVuKTsNCisgICAgICAgICAg
ICByZXR1cm4gbWFrZU5TQXJyYXkodGFic0NoaWxkcmVuKTsNCiAgICAgICAgIH0NCiAgICAgfQ0K
IA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eUNvbnRlbnRzQXR0cmlidXRlXSkNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJh
Y2tpbmdPYmplY3QtPmNvbnRlbnRzKCkpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJh
Y2tpbmdPYmplY3QtPmNvbnRlbnRzKCkpOw0KIA0KICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNU
YWJsZSgpICYmIGJhY2tpbmdPYmplY3QtPmlzRXhwb3NhYmxlKCkpIHsNCiAgICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0
ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+
cm93cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+
cm93cygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPnZpc2libGVSb3dzKCkpOw0KKyAgICAg
ICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT52aXNpYmxlUm93cygpKTsN
CiANCiAgICAgICAgIC8vIFRPRE86IGRpc3Rpbmd1aXNoIGJldHdlZW4gdmlzaWJsZSBhbmQgbm9u
LXZpc2libGUgY29sdW1ucw0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXQ0KICAgICAgICAgICAgIHx8IFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ29sdW1u
c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2lu
Z09iamVjdC0+Y29sdW1ucygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFj
a2luZ09iamVjdC0+Y29sdW1ucygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXSkgew0K
ICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5z
ZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1
cm4gY29udmVydFRvTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VOU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCiAgICAgICAgIH0NCiAN
CiAgICAgICAgIC8vIEhUTUwgdGFibGVzIGRvbid0IHN1cHBvcnQgdGhlc2UgYXR0cmlidXRlcy4N
CkBAIC0yNDM2LDcgKzI0NDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQNCiAgICAgICAgICAgICByZXR1cm4gbmlsOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1lbnRz
QXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5n
T2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJh
eShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVd
KSB7DQogICAgICAgICAgICAgYXV0byogaGVhZGVyQ29udGFpbmVyID0gYmFja2luZ09iamVjdC0+
aGVhZGVyQ29udGFpbmVyKCk7DQpAQCAtMjQ0NCwxMCArMjQ0OSwxMCBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIH0NCiANCiAgICAgICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVt
ZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFj
a2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJy
YXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNlbGxzQXR0cmli
dXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0
LT5jZWxscygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVj
dC0+Y2VsbHMoKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkNvdW50QXR0cmlidXRlXSkNCiAgICAgICAgICAgICBy
ZXR1cm4gQChiYWNraW5nT2JqZWN0LT5jb2x1bW5Db3VudCgpKTsNCkBAIC0yNDY5LDcgKzI0NzQs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIC8vIHJv
d3MgYXR0cmlidXRlIGZvciBhIGNvbHVtbiBpcyB0aGUgbGlzdCBvZiBhbGwgdGhlIGVsZW1lbnRz
IGluIHRoYXQgY29sdW1uIGF0IGVhY2ggcm93DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdDQogICAgICAgICAg
ICAgfHwgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2li
bGVSb3dzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShi
YWNraW5nT2JqZWN0LT5jaGlsZHJlbigpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJy
YXkoYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV0pIHsN
CiAgICAgICAgICAgICBhdXRvKiBoZWFkZXIgPSBiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXIo
KTsNCkBAIC0yNDg5LDEwICsyNDk0LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORA0KICAgICAgICAgfQ0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRl
XSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5j
b2x1bW5IZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5n
T2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmli
dXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0
LT5yb3dIZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5n
T2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBQ29sdW1uSW5kZXhBdHRyaWJ1dGVdKQ0K
ICAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmF4Q29sdW1uSW5kZXgoKSk7DQpA
QCAtMjUwNSwxMiArMjUxMCwxMiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29w
eTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVk
Q2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShzZWxl
Y3RlZENoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHNlbGVj
dGVkQ2hpbGRyZW5Db3B5KTsNCiAgICAgICAgIH0NCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0pIHsNCiAgICAg
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
cm93c0NvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYVRyZWVSb3dzKHJvd3ND
b3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShyb3dzQ29weSk7DQor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHJvd3NDb3B5KTsNCiAgICAgICAgIH0NCiAN
CiAgICAgICAgIC8vIFRyZWVSb2xlcyBkbyBub3Qgc3VwcG9ydCBjb2x1bW5zLCBidXQgTWFjIEFY
IGV4cGVjdHMgdG8gYmUgYWJsZSB0byBhc2sgYWJvdXQgY29sdW1ucyBhdCB0aGUgbGVhc3QuDQpA
QCAtMjU0NSw3ICsyNTUwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
DQogICAgIC8vIFRoZSByb3dzIHRoYXQgYXJlIGNvbnNpZGVyZWQgaW5zaWRlIHRoaXMgcm93Lg0K
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURp
c2Nsb3NlZFJvd3NBdHRyaWJ1dGVdKSB7DQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNU
cmVlSXRlbSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzQVJJQVRyZWVHcmlkUm93KCkpDQotICAgICAg
ICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+ZGlzY2xvc2VkUm93
cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+ZGlz
Y2xvc2VkUm93cygpKTsNCiAgICAgfQ0KIA0KICAgICAvLyBUaGUgcm93IHRoYXQgY29udGFpbnMg
dGhpcyByb3cuIEl0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgcGFyZW50IHRoYXQg
aXMgYSB0cmVlaXRlbS4NCkBAIC0yNjEzLDcgKzI2MTgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzogTlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBsaW5rZWRV
SUVsZW1lbnRzOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+bGlua2VkVUlFbGVtZW50cyhsaW5r
ZWRVSUVsZW1lbnRzKTsNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGxpbmtlZFVJ
RWxlbWVudHMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGxpbmtlZFVJRWxlbWVudHMp
Ow0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkQXR0cmlidXRlXSkNCkBAIC0yNjg2LDcgKzI2OTEsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlXSkgew0KICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFy
aWFPd25zOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYU93bnNFbGVtZW50cyhhcmlhT3du
cyk7DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShhcmlhT3ducyk7DQorICAgICAg
ICByZXR1cm4gbWFrZU5TQXJyYXkoYXJpYU93bnMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQVBvc0luU2V0QXR0
cmlidXRlXSkNCkBAIC0yNzUyLDcgKzI3NTcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RSYWRpY2FuZEF0dHJpYnV0ZV0pIHsNCiAgICAgICAg
ICAgICBhdXRvIHJhZGljYW5kID0gYmFja2luZ09iamVjdC0+bWF0aFJhZGljYW5kKCk7DQotICAg
ICAgICAgICAgcmV0dXJuIHJhZGljYW5kID8gY29udmVydFRvTlNBcnJheSgqcmFkaWNhbmQpIDog
bmlsOw0KKyAgICAgICAgICAgIHJldHVybiByYWRpY2FuZCA/IG1ha2VOU0FycmF5KCpyYWRpY2Fu
ZCkgOiBuaWw7DQogICAgICAgICB9DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlvbk51bWVyYXRvckF0dHJpYnV0
ZV0pDQpAQCAtMjg0Niw3ICsyODUxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5EDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWERldGFp
bHNFbGVtZW50cyJdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgZGV0YWlsczsNCiAgICAgICAgIGJhY2tpbmdPYmplY3QtPmFyaWFE
ZXRhaWxzRWxlbWVudHMoZGV0YWlscyk7DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eShkZXRhaWxzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShkZXRhaWxzKTsNCiAgICAg
fQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eUJyYWlsbGVMYWJlbEF0dHJpYnV0ZV0pDQpAQCAtMjg2MSw3ICsyODY2LDcgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6QCJBWEVycm9yTWVzc2FnZUVsZW1lbnRzIl0pIHsNCiAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJvck1lc3Nh
Z2VzOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKGVy
cm9yTWVzc2FnZXMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoZXJyb3JNZXNz
YWdlcyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoZXJyb3JNZXNzYWdlcyk7DQogICAg
IH0NCiANCiAgICAgLy8gTXVsdGktc2VsZWN0YWJsZQ0KQEAgLTI4NzksNyArMjg4NCw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFyaWFDb250cm9sc0F0dHJpYnV0ZV0p
IHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBhcmlhQ29udHJvbHM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhQ29udHJvbHNF
bGVtZW50cyhhcmlhQ29udHJvbHMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXko
YXJpYUNvbnRyb2xzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShhcmlhQ29udHJvbHMp
Ow0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5Rm9jdXNhYmxlQW5jZXN0b3JBdHRyaWJ1dGVdKSB7DQpAQCAtMzQzNSwyMiAr
MzQ0MCw2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICB9KTsN
CiB9DQogDQotLy8gRklYTUU6IE5vIHJlYXNvbiBmb3IgdGhpcyB0byBiZSBhIG1ldGhvZCBpbnN0
ZWFkIG9mIGEgZnVuY3Rpb247IGNhbiBnZXQgZG9jdW1lbnQgZnJvbSByYW5nZS4NCi0tIChOU1Jh
bmdlKV9jb252ZXJ0VG9OU1JhbmdlOihjb25zdCBTaW1wbGVSYW5nZSYpcmFuZ2UNCi17DQotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7DQotICAgIA0KLSAgICBhdXRvIGRvY3VtZW50ID0gc2Vs
Zi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7DQotICAgIGlmICghZG9jdW1lbnQpDQotICAg
ICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIGF1dG8gZG9j
dW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOw0KLSAgICBpZiAoIWRv
Y3VtZW50RWxlbWVudCkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAw
KTsNCi0NCi0gICAgcmV0dXJuIGNoYXJhY3RlclJhbmdlKG1ha2VCb3VuZGFyeVBvaW50QmVmb3Jl
Tm9kZUNvbnRlbnRzKCpkb2N1bWVudEVsZW1lbnQpLCByYW5nZSk7DQotfQ0KLQ0KIC0gKE5TSW50
ZWdlcilfaW5kZXhGb3JUZXh0TWFya2VyOihBWFRleHRNYXJrZXJSZWYpbWFya2VyDQogew0KICAg
ICBpZiAoIW1hcmtlcikNCkBAIC0zNDY3LDcgKzM0NTYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgICAg
ICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCiANCi0gICAgICAgICAgICByZXR1cm4gW3Byb3RlY3Rl
ZFNlbGYgX2NvbnZlcnRUb05TUmFuZ2U6KnJhbmdlXS5sb2NhdGlvbjsNCisgICAgICAgICAgICBy
ZXR1cm4gbWFrZU5TUmFuZ2UocmFuZ2UpLmxvY2F0aW9uOw0KICAgICAgICAgfQ0KIA0KICAgICAg
ICAgcmV0dXJuIE5TTm90Rm91bmQ7DQpAQCAtMzg0Miw4ICszODMxLDggQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsNCiAgICAgICAgIGJhY2tpbmdPYmpl
Y3QtPmZpbmRNYXRjaGluZ09iamVjdHMoJmNyaXRlcmlhLCByZXN1bHRzKTsNCiAgICAgICAgIGlm
ICh3aWRnZXRDaGlsZHJlbikNCi0gICAgICAgICAgICByZXR1cm4gW3dpZGdldENoaWxkcmVuIGFy
cmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OmNvbnZlcnRUb05TQXJyYXkocmVzdWx0cyldOw0K
LSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkocmVzdWx0cyk7DQorICAgICAgICAgICAg
cmV0dXJuIFt3aWRnZXRDaGlsZHJlbiBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTptYWtl
TlNBcnJheShyZXN1bHRzKV07DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkocmVzdWx0cyk7
DQogICAgIH0NCiANCiAgICAgLy8gVGV4dE1hcmtlciBhdHRyaWJ1dGVzLg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444873</attachid>
            <date>2021-11-19 17:09:34 -0800</date>
            <delta_ts>2021-11-19 17:16:15 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>49637</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZjE3M2FiMzI3Zjg1Li5jNzExYTdhN2QxZTEgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
NiBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUt
Y2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuDQorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbDogQWRkZWQuDQorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOg0KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnM6DQorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zOg0KKw0KIDIwMjEtMTEtMTIgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+
DQogDQogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIEFjY2VsZXJhdGVkIGFuaW1hdGlvbnMgd2l0
aCBhIHNpbmdsZSBrZXlmcmFtZSBkb24ndCBhY2NvdW50IGZvciBwcmlvciBmb3J3YXJkLWZpbGxp
bmcgYW5pbWF0aW9ucw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlz
aWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQNCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLmNkYmI4YzQyMmRhNw0KLS0tIC9kZXYvbnVsbA0K
KysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1l
eHBlY3RlZC50eHQNCkBAIC0wLDAgKzEsMTIgQEANCitUaGlzIHRlc3RzIHRoYXQgdmlzaWJsZUNo
YXJhY3RlclJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSByYW5nZXMgd2hpbGUgbW9kaWZ5
aW5nIG9ic2N1cmVkIGNvbnRlbnQuDQorDQorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLg0KKw0K
Kw0KK1Zpc2libGUgcmFuZ2U6IE5TUmFuZ2U6IHswLCA0MjA1fQ0KK1Zpc2libGUgcmFuZ2UgKDUw
MCwgMjAwKTogTlNSYW5nZTogezAsIDM2MH0NCitWaXNpYmxlIHJhbmdlLCBvZmZzZXQ6IDIwMCAo
MjAwLCA1MDApOiBOU1JhbmdlOiB7MCwgNjkwfQ0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUNCisNCitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sDQpuZXcgZmlsZSBtb2RlIDEw
MDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi4zOWQzMmRiZDIwMzMNCi0tLSAvZGV2L251bGwNCisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRt
bA0KQEAgLTAsMCArMSw3MyBAQA0KKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4NCis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keSBpZD0iYm9keSI+DQorDQor
PGRpdiBpZD0iZ3JvdXAiPg0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QN
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0K
K3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQor
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQorPC9kaXY+DQorDQorPHNjcmlwdD4NCisNCisgICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgcmV0dXJu
cyBleHBlY3RlZCB2aXNpYmxlIHJhbmdlcyB3aGlsZSBtb2RpZnlpbmcgb2JzY3VyZWQgY29udGVu
dC4iKTsNCisNCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgew0KKyAg
ICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoImdyb3VwIikuY2hpbGRBdEluZGV4KDApOw0KKyAgICAgICAgZGVidWcoIlZpc2libGUg
cmFuZ2U6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNp
YmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdTaXpl
KDUwMCwgMjAwKTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxlIHJhbmdlICg1MDAsIDIwMCk6ICIg
KyB0ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFj
dGVyUmFuZ2UiKSk7DQorDQorICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDIwMDsN
CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Vmlld1NpemUoMjAwLCA1MDApOw0KKyAgICAgICAgZGVi
dWcoIlZpc2libGUgcmFuZ2UsIG9mZnNldDogMjAwICgyMDAsIDUwMCk6ICIgKyB0ZXh0LnN0cmlu
Z0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7
DQorDQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAiKS5zdHlsZS52aXNp
YmlsaXR5ID0gImhpZGRlbiI7DQorICAgIH0NCisNCis8L3NjcmlwdD4NCisNCis8L2JvZHk+DQor
PC9odG1sPg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMNCmluZGV4
IGM0YjRlZGM5OGY1Yy4uOWZkNzc5YWRlOGQzIDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy9UZXN0RXhwZWN0YXRpb25zDQpAQCAtMjExNyw3ICsyMTE3LDcgQEAgd2Via2l0Lm9yZy9iLzE0
ODgwNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVs
dGljb2wtc3ANCiBmYXN0L2RvbS9saW5raWZ5LXBob25lLW51bWJlcnMuaHRtbCBbIFBhc3MgXQ0K
IA0KIGFjY2Vzc2liaWxpdHkvdmlkZW8tZWxlbWVudC11cmwtYXR0cmlidXRlLmh0bWwgWyBQYXNz
IF0NCi0NCithY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBQYXNz
IF0NCiBhY2Nlc3NpYmlsaXR5L2FuY2VzdG9yLWNvbXB1dGF0aW9uLmh0bWwgWyBQYXNzIF0NCiAN
CiAjIEVuYWJsZSAiYXJpYS1jdXJyZW50IiB0ZXN0cyBmb3IgaU9TLg0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucw0KaW5kZXggODcyYzdhOTVjMDI2Li4x
M2QyNjZhNDNmY2QgMTAwNjQ0DQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucw0KQEAgLTU5Nyw2ICs1OTcsNyBAQCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXVuaWZpZWQtZW11bGF0aW9uLmh0bWwgWyBGYWlsdXJlIF0NCiANCiAjIFNraXAgZHVlIHRvIGxh
Y2sgb2YgRHVtcFJlbmRlclRyZWUgYEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvbUlkZW50aWZl
cmAgaW1wbGVtZW50YXRpb24uDQogYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1m
b3ItYWRob2MtcmFkaW8tZ3JvdXBzLmh0bWwgWyBTa2lwIF0NCithY2Nlc3NpYmlsaXR5L21hYy92
aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIFsgU2tpcCBdDQogDQogIyA8cmRhcjovL3Byb2Js
ZW0vMjYwNTA5MjM+IFRoZSByZXN1bHQgaXMgcHJvYmFibHkgc3RpbGwgYSBwYXNzLCBidXQgd2Ug
ZG9uJ3QgaGF2ZSBhIHdheQ0KICMgdG8gaGF2ZSBwbGF0Zm9ybSBzcGVjaWZpYyByZXN1bHRzIHRo
YXQgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIFdLMSBhbmQgV0syLg0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMNCmluZGV4IDE4MGUyYjRjZjZlOC4uMjcxNWQ0MWQ2MThj
IDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMN
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zDQpAQCAtMjc1
LDYgKzI3NSw3IEBAIGFjY2Vzc2liaWxpdHkvYXJpYS1saXN0Ym94LWNsZWFyLXNlbGVjdGlvbi1j
cmFzaC5odG1sIFsgU2tpcCBdDQogYWNjZXNzaWJpbGl0eS9saXN0Ym94LWNsZWFyLXNlbGVjdGlv
bi5odG1sIFsgU2tpcCBdDQogYWNjZXNzaWJpbGl0eS9lbWJlZGRlZC1pbWFnZS1kZXNjcmlwdGlv
bi5odG1sIFsgU2tpcCBdDQogYWNjZXNzaWJpbGl0eS9pbWctbm8tYWx0LW5vdC1pZ25vcmVkLXdp
dGgtdGl0bGUuaHRtbCBbIFNraXAgXQ0KK2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXIt
cmFuZ2UuaHRtbCBbIFNraXAgXQ0KIA0KICMgTmVlZCB0byBpbXBsZW1lbnQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSwgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aGFzV2ViQXBwbGljYXRpb25BbmNlc3RvcigpLA0KICMgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNJbkRlc2NyaXB0aW9uTGlzdERldGFpbCgpLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc0luRGVzY3JpcHRpb25MaXN0VGVybSgpLCBhbmQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCmluZGV4IGM3ZWEzYWNl
MGM4NS4uNDViZGRjMDMyYTQ5IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
DQorKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsNTEgQEANCisyMDIx
LTExLTE5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQorDQorICAgICAg
ICBBWDogV2ViS2l0OiBuZWVkIGEgbWV0aG9kIHRvIGdldCB2aXNpYmxlIHRleHQgYW5kIGZyYW1l
IG9mIGFuIGVsZW1lbnQgb24gc2NyZWVuDQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMzM2DQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4NCisNCisgICAgICAgIEltcGxlbWVudCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgZm9y
IHN0YXRpYyB0ZXh0IGVsZW1lbnRzIHNvIHRoYXQgQm9va3MgY2FuIGRldGVybWluZSB0aGUgdmlz
aWJsZQ0KKyAgICAgICAgY29udGVudCBvbiBhIHBhZ2UuDQorDQorICAgICAgICBUZXN0OiBhY2Nl
c3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwNCisNCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgY29uc3QpOg0KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnVub2JzY3VyZWRDb250ZW50UmVjdCBj
b25zdCk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOg0K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoN
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW06DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nl
c3NpYmlsaXR5VmlzaWJsZUNvbnRlbnRSZWN0XSk6DQorICAgICAgICAoYWNjZXNzaWJsZUVsZW1l
bnRzRm9yT2JqZWN0cyk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBhY2Nlc3NpYmlsaXR5RmluZE1hdGNoaW5nT2JqZWN0czpdKToNCisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHBvc2l0aW9uRm9yVGV4dE1hcmtlcjpdKToNCisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJGb3JQb3NpdGlv
bjpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHN0cmluZ0Zv
clJhbmdlOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZnJh
bWVGb3JSYW5nZTpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlNYXRoUmFkaWNhbmRdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb0RPTVJhbmdlOl0pOiBE
ZWxldGVkLg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp2aXNpYmxl
Q2hhcmFjdGVyUmFuZ2UgY29uc3QpOg0KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnVub2JzY3VyZWRDb250ZW50UmVjdCBjb25zdCk6DQorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoNCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmg6DQorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToN
CisgICAgICAgIChtYWtlTlNBcnJheSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckJhc2UgYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZV0pOg0KKyAg
ICAgICAgKG1ha2VOU1JhbmdlKToNCisgICAgICAgIChtYWtlRE9NUmFuZ2UpOg0KKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGJhc2VVcGRhdGVCYWNraW5nU3Rv
cmVdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBsaW5l
UmVjdHNBbmRUZXh0XSk6DQorICAgICAgICAoY29udmVydFRvTlNBcnJheSk6IERlbGV0ZWQuDQor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2hpbGRy
ZW5WZWN0b3JBcnJheV0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgX2luZGV4Rm9yVGV4dE1hcmtlcjpdKToNCisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpmb3JQYXJhbWV0ZXI6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBfY29udmVydFRvTlNSYW5nZTpdKTogRGVsZXRlZC4NCisNCiAyMDIxLTExLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+DQogDQogICAgICAgICBEaXNhYmxlIE1hdGhNTCB3
aGVuIGluIENhcHRpdmUgUG9ydGFsIE1vZGUNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcA0KaW5kZXggOTM4NDhlMWNhYjc2Li42
NzQ2ZjZjYmI0OGYgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwDQpAQCAtNzA0LDYgKzcwNCw1MiBAQCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50UmFuZ2UoKSBjb25z
dA0KICAgICByZXR1cm4gQVhPYmplY3RDYWNoZTo6cmFuZ2VGb3JOb2RlQ29udGVudHMoKm5vZGUp
Ow0KIH0NCiANCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojp2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSBjb25zdA0KK3sNCisgICAgYXV0byByYW5nZSA9IGVs
ZW1lbnRSYW5nZSgpOw0KKyAgICBpZiAoIXJhbmdlKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsNCisNCisgICAgYXV0byBjb250ZW50UmVjdCA9IHVub2JzY3VyZWRDb250ZW50UmVjdCgp
Ow0KKyAgICBhdXRvIGVsZW1lbnRSZWN0ID0gc25hcHBlZEludFJlY3QodGhpcy0+ZWxlbWVudFJl
Y3QoKSk7DQorICAgIGlmICghY29udGVudFJlY3QuaW50ZXJzZWN0cyhlbGVtZW50UmVjdCkpDQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KKw0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvdW5k
YXJ5UG9pbnQ+IHN0YXJ0Qm91bmRhcnkgPSByYW5nZS0+c3RhcnQ7DQorICAgIHN0ZDo6b3B0aW9u
YWw8Qm91bmRhcnlQb2ludD4gZW5kQm91bmRhcnkgPSByYW5nZS0+ZW5kOw0KKw0KKyAgICAvLyBP
cmlnaW4gaXNuJ3QgY29udGFpbmVkIGluIHZpc2libGUgcmVjdCwgc3RhcnQgbW92aW5nIGZvcndh
cmQgYnkgbGluZS4NCisgICAgd2hpbGUgKCFjb250ZW50UmVjdC5jb250YWlucyhlbGVtZW50UmVj
dC5sb2NhdGlvbigpKSkgew0KKyAgICAgICAgYXV0byBuZXh0TGluZVBvc2l0aW9uID0gbmV4dExp
bmVFbmRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9u
KCpzdGFydEJvdW5kYXJ5KSkpOw0KKyAgICAgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50
PiB0ZXN0U3RhcnRCb3VuZGFyeSA9IG1ha2VCb3VuZGFyeVBvaW50KG5leHRMaW5lUG9zaXRpb24p
Ow0KKyAgICAgICAgaWYgKCF0ZXN0U3RhcnRCb3VuZGFyeSB8fCAhY29udGFpbnMoKnJhbmdlLCAq
dGVzdFN0YXJ0Qm91bmRhcnkpKQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgDQorICAg
ICAgICBzdGFydEJvdW5kYXJ5ID0gdGVzdFN0YXJ0Qm91bmRhcnk7DQorICAgICAgICBlbGVtZW50
UmVjdCA9IGJvdW5kc0ZvclJhbmdlKFNpbXBsZVJhbmdlKCpzdGFydEJvdW5kYXJ5LCByYW5nZS0+
ZW5kKSk7DQorICAgICAgICBpZiAoZWxlbWVudFJlY3QuaXNFbXB0eSgpKQ0KKyAgICAgICAgICAg
IGJyZWFrOw0KKyAgICB9DQorDQorICAgIC8vIEVuZCBpc24ndCBjb250YWluZWQgaW4gdmlzaWJs
ZSByZWN0LCBzdGFydCBtb3ZpbmcgYmFja3dhcmRzIGJ5IGxpbmUuDQorICAgIHdoaWxlICghY29u
dGVudFJlY3QuY29udGFpbnMoZWxlbWVudFJlY3QubG9jYXRpb24oKSArIGVsZW1lbnRSZWN0LnNp
emUoKSkpIHsNCisgICAgICAgIGF1dG8gcHJldmlvdXNMaW5lUG9zaXRpb24gPSBwcmV2aW91c0xp
bmVTdGFydFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRp
b24oKmVuZEJvdW5kYXJ5KSkpOw0KKyAgICAgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50
PiB0ZXN0RW5kQm91bmRhcnkgPSBtYWtlQm91bmRhcnlQb2ludChwcmV2aW91c0xpbmVQb3NpdGlv
bik7DQorICAgICAgICBpZiAoIXRlc3RFbmRCb3VuZGFyeSB8fCAhY29udGFpbnMoKnJhbmdlLCAq
dGVzdEVuZEJvdW5kYXJ5KSkNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIA0KKyAgICAg
ICAgZW5kQm91bmRhcnkgPSB0ZXN0RW5kQm91bmRhcnk7DQorICAgICAgICBlbGVtZW50UmVjdCA9
IGJvdW5kc0ZvclJhbmdlKHsgKnN0YXJ0Qm91bmRhcnksICplbmRCb3VuZGFyeSB9KTsNCisgICAg
ICAgIGlmIChlbGVtZW50UmVjdC5pc0VtcHR5KCkpDQorICAgICAgICAgICAgYnJlYWs7DQorICAg
IH0NCisNCisgICAgaWYgKCFzdGFydEJvdW5kYXJ5IHx8ICFlbmRCb3VuZGFyeSkNCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7DQorICAgIA0KKyAgICByZXR1cm4gU2ltcGxlUmFuZ2UoKnN0
YXJ0Qm91bmRhcnksICplbmRCb3VuZGFyeSk7DQorfQ0KKw0KIHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRUZXh0UmFuZ2UoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHNlYXJjaFN0cmluZ3MsIGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJp
bGl0eVNlYXJjaFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdA0KIHsNCiAgICAgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gZm91bmQ7DQpAQCAtMzE4Miw2ICszMjI4LDE0IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25z
dCBJbnRSZWN0JiBzdWJmb2N1DQogICAgICAgICBzY3JvbGxQYXJlbnQtPnNjcm9sbFRvTWFrZVZp
c2libGVXaXRoU3ViRm9jdXMobmV3U3ViZm9jdXMpOw0KIH0NCiANCitGbG9hdFJlY3QgQWNjZXNz
aWJpbGl0eU9iamVjdDo6dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3QNCit7DQorICAgIGF1
dG8gZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOw0KKyAgICBpZiAoIWRvY3VtZW50IHx8ICFk
b2N1bWVudC0+dmlldygpKQ0KKyAgICAgICAgcmV0dXJuIHsgfTsNCisgICAgcmV0dXJuIEZsb2F0
UmVjdChzbmFwcGVkSW50UmVjdChkb2N1bWVudC0+dmlldygpLT51bm9ic2N1cmVkQ29udGVudFJl
Y3QoKSkpOw0KK30NCisNCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFs
UG9pbnQoY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvaW50KSBjb25zdA0KIHsNCiAgICAgLy8gU2Vh
cmNoIHVwIHRoZSBwYXJlbnQgY2hhaW4gYW5kIGNyZWF0ZSBhIHZlY3RvciBvZiBhbGwgc2Nyb2xs
YWJsZSBwYXJlbnQgb2JqZWN0cw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgNCmluZGV4IGU5MTM0ZGFkMGRmOS4uMjMwOTVhZmI2ZmM3
IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oDQpAQCAtODA4LDcgKzgwOCw3IEBAIHByb3RlY3RlZDoNCiAgICAgdm9pZCBhcmlh
RWxlbWVudHNGcm9tQXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYsIGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdDsNCiAgICAgdm9pZCBhcmlhRWxlbWVudHNSZWZlcmVuY2Vk
QnlBdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0Ow0KICAgICB2aXJ0dWFsIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQ0KLQ0KKyAgICBGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRl
bnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7DQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJhZGlv
R3JvdXBBbmNlc3RvcigpIGNvbnN0Ow0KIA0KICAgICBib29sIGFsbG93c1RleHRSYW5nZXMoKSBj
b25zdDsNCkBAIC04MjEsNiArODIxLDcgQEAgcHJpdmF0ZToNCiAgICAgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gcmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24oY29uc3Qg
U2ltcGxlUmFuZ2UmLCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYpIGNvbnN0Ow0KICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzZWxlY3Rp
b25SYW5nZSgpIGNvbnN0Ow0KICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmaW5kVGV4
dFJhbmdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hTdHJpbmdzLCBjb25zdCBTaW1wbGVS
YW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9uKSBjb25zdDsNCisg
ICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gdmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgY29u
c3Qgb3ZlcnJpZGU7DQogDQogcHJvdGVjdGVkOiAvLyBGSVhNRTogTWFrZSB0aGUgZGF0YSBtZW1i
ZXJzIHByaXZhdGUuDQogICAgIGJvb2wgY2hpbGRyZW5Jbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2hpbGRyZW5Jbml0aWFsaXplZDsgfQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgNCmluZGV4
IGNhOWEwY2ViZDJmYi4uYzMyOWRlM2IyZWYxIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgNCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQpA
QCAtOTg3LDYgKzk4Nyw3IEBAIHB1YmxpYzoNCiAgICAgdmlydHVhbCB2b2lkIHNldElzRXhwYW5k
ZWQoYm9vbCkgPSAwOw0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29u
c3QgPSAwOw0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0
IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0ID0gMDsNCisg
ICAgdmlydHVhbCBGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3QgPSAwOw0K
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDaGVja2VkU3RhdGUoKSBjb25zdCA9IDA7DQogICAg
IA0KICAgICAvLyBJbiBhIG11bHRpLXNlbGVjdCBsaXN0LCBtYW55IGl0ZW1zIGNhbiBiZSBzZWxl
Y3RlZCBidXQgb25seSBvbmUgaXMgYWN0aXZlIGF0IGEgdGltZS4NCkBAIC05OTYsNiArOTk3LDcg
QEAgcHVibGljOg0KICAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0ID0gMDsN
CiAgICAgdmlydHVhbCBib29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3QgPSAwOw0KICAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2lt
cGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCA9IDA7
DQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gdmlzaWJsZUNoYXJhY3Rl
clJhbmdlKCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIGJvb2wgaGFzUGxhaW5UZXh0KCkgY29u
c3QgPSAwOw0KICAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnQoY29uc3QgQVhDb3JlT2JqZWN0
JikgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnRDb2xvcihjb25zdCBB
WENvcmVPYmplY3QmKSBjb25zdCA9IDA7DQpAQCAtMTUyOSw3ICsxNTMxLDcgQEAgcHVibGljOg0K
IA0KICAgICB2aXJ0dWFsIFN0cmluZyBpbm5lckhUTUwoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1
YWwgU3RyaW5nIG91dGVySFRNTCgpIGNvbnN0ID0gMDsNCi0NCisgICAgDQogcHJpdmF0ZToNCiAg
ICAgLy8gRGV0YWNoZXMgdGhpcyBvYmplY3QgZnJvbSB0aGUgb2JqZWN0cyBpdCByZWZlcmVuY2Vz
IGFuZCBpdCBpcyByZWZlcmVuY2VkIGJ5Lg0KICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoUmVtb3Rl
UGFydHMoQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlKSA9IDA7DQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5tbQ0KaW5kZXggNWUwYzhjOGViYzY3Li45ODkzNDFhZmMyMTIg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQ0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCkBAIC01Miw2ICs1
Miw3IEBADQogI2ltcG9ydCAiU1ZHRWxlbWVudElubGluZXMuaCINCiAjaW1wb3J0ICJTVkdOYW1l
cy5oIg0KICNpbXBvcnQgIlNlbGVjdGlvbkdlb21ldHJ5LmgiDQorI2ltcG9ydCAiU2ltcGxlUmFu
Z2UuaCINCiAjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCINCiAjaW1wb3J0ICJXQUtTY3JvbGxWaWV3
LmgiDQogI2ltcG9ydCAiV0FLV2luZG93LmgiDQpAQCAtMTY5NCwxMiArMTY5NSw3IEBAIHN0YXRp
YyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0
cmluZyAqc3RyaW5nKQ0KIHsNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlD
YWxsXSkNCiAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOw0KLSAgICANCi0gICAgYXV0byBkb2N1
bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOw0KLSAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQ0KLSAgICAgICAgcmV0dXJuIENHUmVjdFplcm87DQot
ICAgIGF1dG8gcmVjdCA9IEZsb2F0UmVjdChzbmFwcGVkSW50UmVjdChkb2N1bWVudC0+dmlldygp
LT51bm9ic2N1cmVkQ29udGVudFJlY3QoKSkpOw0KLSAgICByZXR1cm4gW3NlbGYgY29udmVydFJl
Y3RUb1NwYWNlOnJlY3Qgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6U2NyZWVu
XTsNCisgICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpzZWxmLmF4QmFja2luZ09i
amVjdC0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNp
b25TcGFjZTo6U2NyZWVuXTsNCiB9DQogDQogLy8gVGhlICJjZW50ZXIgcG9pbnQiIGlzIHdoZXJl
IFZvaWNlT3ZlciB3aWxsICJwcmVzcyIgYW4gb2JqZWN0LiBUaGlzIG1heSBub3QgYmUgdGhlIGFj
dHVhbA0KQEAgLTE5MTUsNyArMTkxMSw3IEBAIHN0YXRpYyBOU0FycmF5ICphY2Nlc3NpYmxlRWxl
bWVudHNGb3JPYmplY3RzKGNvbnN0IEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoDQogICAg
ICAgICB9KTsNCiAgICAgfQ0KIA0KLSAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShhY2Nlc3Np
YmxlRWxlbWVudHMpOw0KKyAgICByZXR1cm4gbWFrZU5TQXJyYXkoYWNjZXNzaWJsZUVsZW1lbnRz
KTsNCiB9DQogDQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlEZXRhaWxzRWxlbWVudHMNCkBA
IC0yMTA0LDcgKzIxMDAsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXco
V0FLVmlldyogdmlldykNCiAgICAgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGNyaXRlcmlh
ID0gYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVy
aXplZEF0dHJpYnV0ZShwYXJhbWV0ZXJzKTsNCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdHM7DQogICAgIHNlbGYuYXhCYWNraW5nT2Jq
ZWN0LT5maW5kTWF0Y2hpbmdPYmplY3RzKCZjcml0ZXJpYSwgcmVzdWx0cyk7DQotICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KHJlc3VsdHMpOw0KKyAgICByZXR1cm4gbWFrZU5TQXJyYXkocmVz
dWx0cyk7DQogfQ0KIA0KIC0gKHZvaWQpYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVjdGlvbjooVGV4
dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5IGluY3JlYXNlOihCT09MKWluY3JlYXNlDQpAQCAtMjIw
OSw0NyArMjIwNSw2IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtW
aWV3KiB2aWV3KQ0KICAgICByZXR1cm4gcmFuZ2UgPyBbc2VsZiBjb250ZW50Rm9yU2ltcGxlUmFu
Z2U6KnJhbmdlIGF0dHJpYnV0ZWQ6YXR0cmlidXRlZF0gOiBuaWw7DQogfQ0KIA0KLS8vIEZJWE1F
OiBObyByZWFzb24gZm9yIHRoaXMgdG8gYmUgYSBtZXRob2QgaW5zdGVhZCBvZiBhIGZ1bmN0aW9u
Lg0KLS0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNvbnN0IFNpbXBsZVJhbmdlJilyYW5n
ZQ0KLXsNCi0gICAgYXV0byYgZG9jdW1lbnQgPSByYW5nZS5zdGFydC5kb2N1bWVudCgpOw0KLSAg
ICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7DQotICAgIGlmICghZnJhbWUpDQotICAg
ICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIGF1dG8qIHJv
b3RFZGl0YWJsZUVsZW1lbnQgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOw0KLSAgICBhdXRvKiBzY29wZSA9IHJvb3RFZGl0YWJsZUVsZW1lbnQg
PyByb290RWRpdGFibGVFbGVtZW50IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCk7DQotICAg
IGlmICghc2NvcGUpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7
DQotDQotICAgIC8vIE1vdXNlIGV2ZW50cyBtYXkgY2F1c2UgVFNNIHRvIGF0dGVtcHQgdG8gY3Jl
YXRlIGFuIE5TUmFuZ2UgZm9yIGEgcG9ydGlvbiBvZiB0aGUgdmlldw0KLSAgICAvLyB0aGF0IGlz
IG5vdCBpbnNpZGUgdGhlIGN1cnJlbnQgZWRpdGFibGUgcmVnaW9uLiBUaGVzZSBjaGVja3MgZW5z
dXJlIHdlIGRvbid0IHByb2R1Y2UNCi0gICAgLy8gcG90ZW50aWFsbHkgaW52YWxpZCBkYXRhIHdo
ZW4gcmVzcG9uZGluZyB0byBzdWNoIHJlcXVlc3RzLg0KLSAgICBpZiAoIXNjb3BlLT5jb250YWlu
cyhyYW5nZS5zdGFydC5jb250YWluZXIucHRyKCkpIHx8ICFzY29wZS0+Y29udGFpbnMocmFuZ2Uu
ZW5kLmNvbnRhaW5lci5wdHIoKSkpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RG
b3VuZCwgMCk7DQotDQotICAgIHJldHVybiBOU01ha2VSYW5nZShjaGFyYWN0ZXJDb3VudCh7IHsg
KnNjb3BlLCAwIH0sIHJhbmdlLnN0YXJ0IH0pLCBjaGFyYWN0ZXJDb3VudChyYW5nZSkpOw0KLX0N
Ci0NCi0tIChzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5T
UmFuZ2UpcmFuZ2UNCi17DQotICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQ0K
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCi0NCi0gICAgLy8gb3VyIGNyaXRpY2FsIGFz
c3VtcHRpb24gaXMgdGhhdCB3ZSBhcmUgb25seSBjYWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0
DQotICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxl
Y3Rpb24NCi0gICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugb2YgdGV4dCBmaWVsZHMg
YW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90DQotICAgIC8vIGRpcmVjdGx5
IGluIHRoZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxlbWF0aWMuIE91
ciBzb2x1dGlvbiBpcw0KLSAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRpdGFibGUgZWxlbWVudCBv
ZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJhc2UuDQotICAgIC8vIFRo
YXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29udGV4dC4NCi0gICAgYXV0
byBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOw0KLSAgICBhdXRv
IHNlbGVjdGlvblJvb3QgPSBkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOw0KLSAgICBhdXRvIHNjb3BlID0gc2VsZWN0aW9uUm9v
dCA/IHNlbGVjdGlvblJvb3QgOiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7DQotICAgIGlm
ICghc2NvcGUpDQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KLQ0KLSAgICByZXR1cm4g
cmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2Nv
cGUpLCByYW5nZSk7DQotfQ0KIA0KIC8vIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIHRvIHRha2Ug
YSB0ZXh0IG1hcmtlciByZXByZXNlbnRpbmcgYSBWaXNpYmxlUG9zaXRpb24gYW5kIGNvbnZlcnQg
aXQNCiAvLyBpbnRvIGEgbm9ybWFsaXplZCBsb2NhdGlvbiB3aXRoaW4gdGhlIGRvY3VtZW50Lg0K
QEAgLTIyNjcsNyArMjIyMiw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmll
dyhXQUtWaWV3KiB2aWV3KQ0KICAgICAgICAgYXV0byByYW5nZSA9IGNhY2hlLT5yYW5nZUZvclVu
b3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY2hhcmFjdGVyT2Zmc2V0LCBjaGFyYWN0ZXJPZmZzZXQp
Ow0KICAgICAgICAgaWYgKCFyYW5nZSkNCiAgICAgICAgICAgICByZXR1cm4gTlNOb3RGb3VuZDsN
Ci0gICAgICAgIHJldHVybiBbc2VsZiBfY29udmVydFRvTlNSYW5nZToqcmFuZ2VdLmxvY2F0aW9u
Ow0KKyAgICAgICAgcmV0dXJuIG1ha2VOU1JhbmdlKHJhbmdlKS5sb2NhdGlvbjsNCiAgICAgfQ0K
ICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCiB9DQpAQCAtMjM0Niw3ICsyMzAxLDcgQEAgc3RhdGlj
IFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgIGlmICgh
W3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQogICAgICAgICByZXR1cm4gbmlsOw0K
IA0KLSAgICBhdXRvIHJhbmdlID0gW3NlbGYgX2NvbnZlcnRUb0RPTVJhbmdlOk5TTWFrZVJhbmdl
KHBvc2l0aW9uLCAwKV07DQorICAgIGF1dG8gcmFuZ2UgPSBtYWtlRE9NUmFuZ2Uoc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmRvY3VtZW50KCksIE5TTWFrZVJhbmdlKHBvc2l0aW9uLCAwKSk7DQogICAg
IGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm4gbmlsOw0KIA0KQEAgLTI0MTQsNyArMjM2OSw3
IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0K
IHsNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCiAgICAgICAg
IHJldHVybiBuaWw7DQotICAgIGF1dG8gd2ViUmFuZ2UgPSBbc2VsZiBfY29udmVydFRvRE9NUmFu
Z2U6cmFuZ2VdOw0KKyAgICBhdXRvIHdlYlJhbmdlID0gbWFrZURPTVJhbmdlKHNlbGYuYXhCYWNr
aW5nT2JqZWN0LT5kb2N1bWVudCgpLCByYW5nZSk7DQogICAgIGlmICghd2ViUmFuZ2UpDQogICAg
ICAgICByZXR1cm4gbmlsOw0KICAgICByZXR1cm4gc2VsZi5heEJhY2tpbmdPYmplY3QtPnN0cmlu
Z0ZvclJhbmdlKCp3ZWJSYW5nZSk7DQpAQCAtMjYwMCw2ICsyNTU1LDE3IEBAIHN0YXRpYyBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICByZXR1cm4gW3Nl
bGYgcHJldmlvdXNNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6c3RhcnRdOw0KIH0NCiANCistIChD
R1JlY3QpZnJhbWVGb3JSYW5nZTooTlNSYW5nZSlyYW5nZQ0KK3sNCisgICAgaWYgKCFbc2VsZiBf
cHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCisgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOw0K
KyAgICBhdXRvIHdlYlJhbmdlID0gbWFrZURPTVJhbmdlKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5k
b2N1bWVudCgpLCByYW5nZSk7DQorICAgIGlmICghd2ViUmFuZ2UpDQorICAgICAgICByZXR1cm4g
Q0dSZWN0WmVybzsNCisgICAgYXV0byByZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmJvdW5k
c0ZvclJhbmdlKCp3ZWJSYW5nZSk7DQorICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdFRvU3Bh
Y2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpTY3JlZW5dOw0KK30N
CisNCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byByZXR1cm4gdGhlIGJvdW5kcyBvZiBh
IHRleHQgbWFya2VyIHJhbmdlIGluIHNjcmVlbiBjb29yZGluYXRlcy4NCiAtIChDR1JlY3QpZnJh
bWVGb3JUZXh0TWFya2VyczooTlNBcnJheSAqKWFycmF5DQogew0KQEAgLTI5MzEsNyArMjg5Nyw3
IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0K
ICAgICAgICAgcmV0dXJuIG5pbDsNCiANCiAgICAgYXV0byByYWRpY2FuZCA9IHNlbGYuYXhCYWNr
aW5nT2JqZWN0LT5tYXRoUmFkaWNhbmQoKTsNCi0gICAgcmV0dXJuIHJhZGljYW5kID8gY29udmVy
dFRvTlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KKyAgICByZXR1cm4gcmFkaWNhbmQgPyBtYWtl
TlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KIH0NCiANCiAtIChXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciAqKWFjY2Vzc2liaWxpdHlNYXRoTnVtZXJhdG9yT2JqZWN0DQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmNwcA0KaW5kZXggYmE1MDg0YTczZjFjLi4wNjY4YmUxODlmYjkgMTAwNjQ0
DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCkBAIC05OTIsNiArOTkyLDEzIEBAIHZvaWQgQVhJ
c29sYXRlZE9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkNCiAgICAgICAgIHRyZWUtPmFwcGx5
UGVuZGluZ0NoYW5nZXMoKTsNCiB9DQogDQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJ
c29sYXRlZE9iamVjdDo6dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgY29uc3QNCit7DQorICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7DQorICAgIGF1dG8qIGF4T2JqZWN0ID0gYXNzb2NpYXRlZEFY
T2JqZWN0KCk7DQorICAgIHJldHVybiBheE9iamVjdCA/IGF4T2JqZWN0LT52aXNpYmxlQ2hhcmFj
dGVyUmFuZ2UoKSA6IHN0ZDo6bnVsbG9wdDsNCit9DQorDQogc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gQVhJc29sYXRlZE9iamVjdDo6cmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFp
blRleHRSYW5nZSYgYXhSYW5nZSkgY29uc3QNCiB7DQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7DQpAQCAtMTQ3MCw2ICsxNDc3LDE1IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0U2Vs
ZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nDQogICAg
ICAgICBvYmplY3QtPnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc2l0
aW9uUmFuZ2UpOw0KIH0NCiANCitGbG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6dW5vYnNjdXJl
ZENvbnRlbnRSZWN0KCkgY29uc3QNCit7DQorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRy
aWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8RmxvYXRSZWN0PihbdGhpc10gKCkgLT4gRmxvYXRSZWN0
IHsNCisgICAgICAgIGlmIChhdXRvKiBvYmplY3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKSkNCisg
ICAgICAgICAgICByZXR1cm4gb2JqZWN0LT51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsNCisgICAg
ICAgIHJldHVybiB7IH07DQorICAgIH0pOw0KK30NCisNCiBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50UmFuZ2UoKSBjb25zdA0KIHsNCiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgNCmluZGV4IDY5Mjkz
NWE5NzRmNC4uMGUyYjM3N2E3MTk3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oDQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgNCkBAIC00
NDEsOSArNDQxLDExIEBAIHByaXZhdGU6DQogICAgIEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0
eU9iamVjdEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRl
Ow0KICAgICBpbnQgbGluZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0
IG92ZXJyaWRlOw0KICAgICBQbGFpblRleHRSYW5nZSBwbGFpblRleHRSYW5nZUZvclZpc2libGVQ
b3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7
DQorICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHZpc2libGVDaGFyYWN0ZXJSYW5nZSgp
IGNvbnN0IG92ZXJyaWRlOw0KICAgICBpbnQgaW5kZXgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3Qgb3ZlcnJpZGU7DQogICAgIHZvaWQgbGluZUJyZWFrcyhWZWN0b3I8aW50PiYpIGNvbnN0
IG92ZXJyaWRlOw0KLQ0KKyAgICBGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29u
c3Qgb3ZlcnJpZGU7DQorICAgIA0KICAgICAvLyBBdHRyaWJ1dGUgc2V0dGVycy4NCiAgICAgdm9p
ZCBzZXRBUklBR3JhYmJlZChib29sKSBvdmVycmlkZTsNCiAgICAgdm9pZCBzZXRJc0V4cGFuZGVk
KGJvb2wpIG92ZXJyaWRlOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgN
CmluZGV4IGVlYTNlNjlkZWQ5My4uYWMyYmRiZmUyYWM1IDEwMDY0NA0KLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5oDQpAQCAtMzQsNiArMzQsNyBAQA0KIA0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsNCiBzdHJ1Y3QgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhOw0KK2NsYXNzIERv
Y3VtZW50Ow0KIGNsYXNzIEludFJlY3Q7DQogY2xhc3MgRmxvYXRQb2ludDsNCiBjbGFzcyBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDsNCkBAIC0xMTEsMTEgKzExMiwxNSBAQCBzdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlUZXh0dWFsQ29udGV4dFNvdXJjZUNvZGUgPSBA
IlVJQWNjZXNzaWJpbA0KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRQ
YWlyczsNCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRQYWlyczsNCiAN
CistIChOU1JhbmdlKWFjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2U7DQorDQogLSAo
TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWJhc2VBY2Nlc3NpYmlsaXR5UmVzb2x2ZWRF
ZGl0aW5nU3R5bGVzOw0KIA0KIGV4dGVybiBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2VhcmNoQ3Jp
dGVyaWEgYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1l
dGVyaXplZEF0dHJpYnV0ZShjb25zdCBOU0RpY3Rpb25hcnkgKik7DQogDQotZXh0ZXJuIE5TQXJy
YXkgKmNvbnZlcnRUb05TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsNCitleHRlcm4gTlNBcnJheSAqbWFrZU5TQXJyYXkoY29u
c3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsN
CitleHRlcm4gTlNSYW5nZSBtYWtlTlNSYW5nZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPik7DQorZXh0ZXJuIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IG1h
a2VET01SYW5nZShXZWJDb3JlOjpEb2N1bWVudCosIE5TUmFuZ2UpOw0KIA0KICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQ0KIC0gKGlkKV9hY2Nlc3NpYmlsaXR5V2ViRG9jdW1lbnRWaWV3Ow0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQ0KaW5kZXggYWU2NWU0OWFhZDA2
Li45NTdjZGU2MWI0MTQgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0NCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5tbQ0KQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29udmVydE1hdGhQYWly
c1RvTlNBcnJheShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaQ0KICAgICB9
KS5hdXRvcmVsZWFzZSgpOw0KIH0NCiANCi1OU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0
IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGls
ZHJlbikNCitOU0FycmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pDQogew0KICAgICByZXR1cm4g
Y3JlYXRlTlNBcnJheShjaGlsZHJlbiwgW10gKGNvbnN0IGF1dG8mIGNoaWxkKSAtPiBpZCB7DQog
ICAgICAgICBhdXRvIHdyYXBwZXIgPSBjaGlsZC0+d3JhcHBlcigpOw0KQEAgLTQ2Miw2ICs0NjIs
MjcgQEAgc3RhdGljIHZvaWQgY29udmVydFBhdGhUb1NjcmVlblNwYWNlRnVuY3Rpb24oUGF0aENv
bnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBjb24NCiAgICAgcmV0dXJuIGNvbnZlcnRlZFBhdGgu
YXV0b3JlbGVhc2UoKTsNCiB9DQogDQorLy8gRGV0ZXJtaW5lIHRoZSB2aXNpYmxlIHJhbmdlIGJ5
IGNoZWNraW5nIGludGVyc2VjdGlvbiBvZiB1bm9ic2N1cmVkQ29udGVudFJlY3QgYW5kIGEgcmFu
Z2Ugb2YgdGV4dCBieQ0KKy8vIGFkdmFuY2luZyBmb3J3YXJkIGJ5IGxpbmUgZnJvbSB0b3AgYW5k
IGJhY2t3YXJkcyBieSBsaW5lIGZyb20gdGhlIGJvdHRvbSwgdW50aWwgd2UgaGF2ZSBhIHZpc2li
bGUgcmFuZ2UuDQorLSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdl
DQorew0KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhy
ZWFkPE5TUmFuZ2U+KFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoKSAtPiBOU1Jh
bmdlIHsNCisgICAgICAgIGF1dG8gYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCku
YmFzZVVwZGF0ZUJhY2tpbmdTdG9yZTsNCisgICAgICAgIGlmICghYmFja2luZ09iamVjdCkNCisg
ICAgICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQorDQorICAgICAg
ICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VOU1JhbmdlKGJhY2tpbmdPYmplY3QtPmVsZW1lbnRS
YW5nZSgpKTsNCisgICAgICAgIGlmIChlbGVtZW50UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3Vu
ZCkNCisgICAgICAgICAgICByZXR1cm4gZWxlbWVudFJhbmdlOw0KKyAgICAgICAgDQorICAgICAg
ICBhdXRvIHZpc2libGVSYW5nZSA9IG1ha2VOU1JhbmdlKGJhY2tpbmdPYmplY3QtPnZpc2libGVD
aGFyYWN0ZXJSYW5nZSgpKTsNCisgICAgICAgIGlmICh2aXNpYmxlUmFuZ2UubG9jYXRpb24gPT0g
TlNOb3RGb3VuZCkNCisgICAgICAgICAgICByZXR1cm4gdmlzaWJsZVJhbmdlOw0KKw0KKyAgICAg
ICAgcmV0dXJuIE5TTWFrZVJhbmdlKHZpc2libGVSYW5nZS5sb2NhdGlvbiAtIGVsZW1lbnRSYW5n
ZS5sb2NhdGlvbiwgdmlzaWJsZVJhbmdlLmxlbmd0aCk7DQorICAgIH0pOw0KK30NCisNCiAtIChp
ZClfYWNjZXNzaWJpbGl0eVdlYkRvY3VtZW50Vmlldw0KIHsNCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7DQpAQCAtNjIzLDYgKzY0NCw1MCBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZWRTdHJp
bmdBcHBlbmRUZXh0KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsDQogICAg
IEFYQXR0cmlidXRlU3RyaW5nU2V0TGFuZ3VhZ2UoYXR0clN0cmluZywgbm9kZS0+cmVuZGVyZXIo
KSwgYXR0clN0cmluZ1JhbmdlKTsNCiB9DQogDQorDQorTlNSYW5nZSBtYWtlTlNSYW5nZShzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZSkNCit7DQorICAgIGlmICghcmFuZ2UpDQorICAg
ICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQorICAgIA0KKyAgICBhdXRv
JiBkb2N1bWVudCA9IHJhbmdlLT5zdGFydC5kb2N1bWVudCgpOw0KKyAgICBhdXRvKiBmcmFtZSA9
IGRvY3VtZW50LmZyYW1lKCk7DQorICAgIGlmICghZnJhbWUpDQorICAgICAgICByZXR1cm4gTlNN
YWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQorDQorICAgIGF1dG8qIHJvb3RFZGl0YWJsZUVsZW1l
bnQgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgp
Ow0KKyAgICBhdXRvKiBzY29wZSA9IHJvb3RFZGl0YWJsZUVsZW1lbnQgPyByb290RWRpdGFibGVF
bGVtZW50IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCk7DQorICAgIGlmICghc2NvcGUpDQor
ICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQorDQorICAgIC8vIE1v
dXNlIGV2ZW50cyBtYXkgY2F1c2UgVFNNIHRvIGF0dGVtcHQgdG8gY3JlYXRlIGFuIE5TUmFuZ2Ug
Zm9yIGEgcG9ydGlvbiBvZiB0aGUgdmlldw0KKyAgICAvLyB0aGF0IGlzIG5vdCBpbnNpZGUgdGhl
IGN1cnJlbnQgZWRpdGFibGUgcmVnaW9uLiBUaGVzZSBjaGVja3MgZW5zdXJlIHdlIGRvbid0IHBy
b2R1Y2UNCisgICAgLy8gcG90ZW50aWFsbHkgaW52YWxpZCBkYXRhIHdoZW4gcmVzcG9uZGluZyB0
byBzdWNoIHJlcXVlc3RzLg0KKyAgICBpZiAoIXNjb3BlLT5jb250YWlucyhyYW5nZS0+c3RhcnQu
Y29udGFpbmVyLnB0cigpKSB8fCAhc2NvcGUtPmNvbnRhaW5zKHJhbmdlLT5lbmQuY29udGFpbmVy
LnB0cigpKSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCisN
CisgICAgcmV0dXJuIE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KHsgeyAqc2NvcGUsIDAgfSwg
cmFuZ2UtPnN0YXJ0IH0pLCBjaGFyYWN0ZXJDb3VudCgqcmFuZ2UpKTsNCit9DQorDQorc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gbWFrZURPTVJhbmdlKERvY3VtZW50KiBkb2N1bWVudCwgTlNS
YW5nZSByYW5nZSkNCit7DQorICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQ0K
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgLy8gb3VyIGNyaXRpY2FsIGFz
c3VtcHRpb24gaXMgdGhhdCB3ZSBhcmUgb25seSBjYWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0
DQorICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxl
Y3Rpb24NCisgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugb2YgdGV4dCBmaWVsZHMg
YW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90DQorICAgIC8vIGRpcmVjdGx5
IGluIHRoZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxlbWF0aWMuIE91
ciBzb2x1dGlvbiBpcw0KKyAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRpdGFibGUgZWxlbWVudCBv
ZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJhc2UuDQorICAgIC8vIFRo
YXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29udGV4dC4NCisgICAgYXV0
byBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCisgICAgYXV0byBzY29wZSA9IHNlbGVjdGlvblJv
b3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOw0KKyAgICBp
ZiAoIXNjb3BlKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgcmV0dXJu
IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNj
b3BlKSwgcmFuZ2UpOw0KK30NCisNCiAvLyBSZXR1cm5zIGFuIGFycmF5IG9mIHN0cmluZ3MgYW5k
IEFYT2JqZWN0IHdyYXBwZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRleHQNCiAvLyBydW5zIGFu
ZCByZXBsYWNlbWVudCBub2RlcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gcmFuZ2UuDQogLSAoTlNB
cnJheSAqKWNvbnRlbnRGb3JTaW1wbGVSYW5nZTooY29uc3QgU2ltcGxlUmFuZ2UmKXJhbmdlIGF0
dHJpYnV0ZWQ6KEJPT0wpYXR0cmlidXRlZA0KQEAgLTY3NiwxOCArNzQxLDI2IEBAIHN0YXRpYyB2
b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyogYXR0clN0cmluZywNCiAgICAgcmV0dXJuIGFycmF5LmF1dG9yZWxlYXNlKCk7DQogfQ0KIA0K
LS0gKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopbGluZVJlY3RzQW5kVGV4dA0KKy0gKFdlYkNv
cmU6OkFYQ29yZU9iamVjdCopYmFzZVVwZGF0ZUJhY2tpbmdTdG9yZQ0KIHsNCiAjaWYgUExBVEZP
Uk0oTUFDKQ0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi51cGRhdGVPYmplY3RCYWNr
aW5nU3RvcmU7DQogICAgIGlmICghYmFja2luZ09iamVjdCkNCi0gICAgICAgIHJldHVybiBuaWw7
DQorICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAjZWxzZQ0KICAgICBpZiAoIVtzZWxmIF9wcmVw
YXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KLSAgICAgICAgcmV0dXJuIG5pbDsNCisgICAgICAgIHJl
dHVybiBudWxscHRyOw0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdP
YmplY3Q7DQogI2VuZGlmDQorICAgIHJldHVybiBiYWNraW5nT2JqZWN0Ow0KK30NCiANCistIChO
U0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKWxpbmVSZWN0c0FuZFRleHQNCit7DQorICAgIGF1dG8g
YmFja2luZ09iamVjdCA9IHNlbGYuYmFzZVVwZGF0ZUJhY2tpbmdTdG9yZTsNCisgICAgaWYgKCFi
YWNraW5nT2JqZWN0KQ0KKyAgICAgICAgcmV0dXJuIG5pbDsNCisgICAgDQogICAgIGF1dG8gcmFu
Z2UgPSBiYWNraW5nT2JqZWN0LT5lbGVtZW50UmFuZ2UoKTsNCiAgICAgaWYgKCFyYW5nZSkNCiAg
ICAgICAgIHJldHVybiBuaWw7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQ0KaW5kZXggYTFkNjVjYzBhMGFhLi4wMjkzZDg2NzNiYmQgMTAwNjQ0DQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQ0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCkBAIC0xNzk2LDcgKzE3OTYsNyBAQCBzdGF0aWMgdm9p
ZCBXZWJUcmFuc2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkKiBpbmZvLCBjb25zdCBDR1Bh
dGhFbGVtZW50ICplbA0KIA0KIC0gKE5TQXJyYXk8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgKj4gKiljaGlsZHJlblZlY3RvckFycmF5DQogew0KLSAgICByZXR1cm4gY29udmVydFRvTlNB
cnJheShzZWxmLmF4QmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7DQorICAgIHJldHVybiBtYWtl
TlNBcnJheShzZWxmLmF4QmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7DQogfQ0KIA0KIC0gKE5T
VmFsdWUgKilwb3NpdGlvbg0KQEAgLTIyMDQsNyArMjIwNCw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0
ZW0oKSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBjb250ZW50Q29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5h
cmlhVHJlZUl0ZW1Db250ZW50KGNvbnRlbnRDb3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29u
dmVydFRvTlNBcnJheShjb250ZW50Q29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGNvbnRlbnRDb3B5KTsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIHJldHVybiBzZWxmLmNo
aWxkcmVuVmVjdG9yQXJyYXk7DQpAQCAtMjIxNCw3ICsyMjE0LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+Y2FuSGF2
ZVNlbGVjdGVkQ2hpbGRyZW4oKSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsNCiAgICAg
ICAgICAgICBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5D
b3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShzZWxlY3RlZENoaWxk
cmVuQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHNlbGVjdGVkQ2hpbGRy
ZW5Db3B5KTsNCiAgICAgICAgIH0NCiAgICAgICAgIHJldHVybiBuaWw7DQogICAgIH0NCkBAIC0y
MjIzLDcgKzIyMjMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAg
ICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0xpc3RCb3goKSkgew0KICAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB2aXNpYmxlQ2hp
bGRyZW5Db3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnZpc2libGVDaGlsZHJlbih2
aXNpYmxlQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eSh2aXNpYmxlQ2hpbGRyZW5Db3B5KTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
dmlzaWJsZUNoaWxkcmVuQ29weSk7DQogICAgICAgICB9DQogDQogICAgICAgICBpZiAoYmFja2lu
Z09iamVjdC0+aXNMaXN0KCkpDQpAQCAtMjIzNSw3ICsyMjM1LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5EDQogDQogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1dlYkFy
ZWEoKSkgew0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFY
TGlua1VJRWxlbWVudHMiXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShi
YWNraW5nT2JqZWN0LT5kb2N1bWVudExpbmtzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtl
TlNBcnJheShiYWNraW5nT2JqZWN0LT5kb2N1bWVudExpbmtzKCkpOw0KIA0KICAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYTG9hZGVkIl0pDQogICAgICAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpiYWNraW5nT2JqZWN0LT5pc0xvYWRl
ZCgpXTsNCkBAIC0yMjY4LDE2ICsyMjY4LDIxIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORA0KICAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHRleHRSYW5nZSA9IGJhY2tp
bmdPYmplY3QtPnNlbGVjdGVkVGV4dFJhbmdlKCk7DQogICAgICAgICAgICAgcmV0dXJuIFtOU1Zh
bHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHRleHRSYW5nZS5zdGFydCwgdGV4dFJhbmdl
Lmxlbmd0aCldOw0KICAgICAgICAgfQ0KLSAgICAgICAgLy8gVE9ETzogR2V0IGFjdHVhbCB2aXNp
YmxlIHJhbmdlLiA8cmRhcjovL3Byb2JsZW0vNDcxMjEwMT4NCi0gICAgICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJS
YW5nZUF0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPmlzUGFz
c3dvcmRGaWVsZCgpID8gbmlsIDogW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdl
KDAsIGJhY2tpbmdPYmplY3QtPnRleHRMZW5ndGgoKSldOw0KLQ0KICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbnNlcnRpb25Qb2ludExp
bmVOdW1iZXJBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSBiYWNr
aW5nT2JqZWN0LT5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXIoKTsNCiAgICAgICAgICAgICByZXR1
cm4gbGluZU51bWJlciA+PSAwID8gQChsaW5lTnVtYmVyKSA6IG5pbDsNCiAgICAgICAgIH0NCiAg
ICAgfQ0KIA0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vz
c2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKSB7DQorICAgICAgICBpZiAo
YmFja2luZ09iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkpDQorICAgICAgICAgICAgcmV0dXJuIG5p
bDsNCisgICAgICAgIC8vIFRPRE86IEdldCBhY3R1YWwgdmlzaWJsZSByYW5nZS4gPHJkYXI6Ly9w
cm9ibGVtLzQ3MTIxMDE+DQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUZXh0Q29udHJv
bCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VS
YW5nZSgwLCBiYWNraW5nT2JqZWN0LT50ZXh0TGVuZ3RoKCkpXTsNCisgICAgICAgIHJldHVybiBb
TlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpbc2VsZiBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3Rl
clJhbmdlXV07DQorICAgIH0NCisNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzogTlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXSkgew0KICAgICAgICAgVVJMIHVybCA9
IGJhY2tpbmdPYmplY3QtPnVybCgpOw0KICAgICAgICAgaWYgKHVybC5pc051bGwoKSkNCkBAIC0y
MzgxLDcgKzIzODYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAN
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJ
bWFnZU92ZXJsYXlFbGVtZW50c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIGF1dG8gaW1hZ2VPdmVy
bGF5RWxlbWVudHMgPSBiYWNraW5nT2JqZWN0LT5pbWFnZU92ZXJsYXlFbGVtZW50cygpOw0KLSAg
ICAgICAgcmV0dXJuIGltYWdlT3ZlcmxheUVsZW1lbnRzID8gY29udmVydFRvTlNBcnJheSgqaW1h
Z2VPdmVybGF5RWxlbWVudHMpIDogbmlsOw0KKyAgICAgICAgcmV0dXJuIGltYWdlT3ZlcmxheUVs
ZW1lbnRzID8gbWFrZU5TQXJyYXkoKmltYWdlT3ZlcmxheUVsZW1lbnRzKSA6IG5pbDsNCiAgICAg
fQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eUVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbkF0dHJpYnV0ZV0pDQpAQCAtMjQwNSwyOSArMjQx
MCwyOSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlm
IChiYWNraW5nT2JqZWN0LT5pc1RhYkxpc3QoKSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB0YWJzQ2hpbGRyZW47DQogICAg
ICAgICAgICAgYmFja2luZ09iamVjdC0+dGFiQ2hpbGRyZW4odGFic0NoaWxkcmVuKTsNCi0gICAg
ICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheSh0YWJzQ2hpbGRyZW4pOw0KKyAgICAgICAg
ICAgIHJldHVybiBtYWtlTlNBcnJheSh0YWJzQ2hpbGRyZW4pOw0KICAgICAgICAgfQ0KICAgICB9
DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5Q29udGVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXko
YmFja2luZ09iamVjdC0+Y29udGVudHMoKSk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
YmFja2luZ09iamVjdC0+Y29udGVudHMoKSk7DQogDQogICAgIGlmIChiYWNraW5nT2JqZWN0LT5p
c1RhYmxlKCkgJiYgYmFja2luZ09iamVjdC0+aXNFeHBvc2FibGUoKSkgew0KICAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmli
dXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0
LT5yb3dzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0
LT5yb3dzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0
dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+dmlzaWJsZVJvd3MoKSk7DQorICAg
ICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPnZpc2libGVSb3dzKCkp
Ow0KIA0KICAgICAgICAgLy8gVE9ETzogZGlzdGluZ3Vpc2ggYmV0d2VlbiB2aXNpYmxlIGFuZCBu
b24tdmlzaWJsZSBjb2x1bW5zDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdDQogICAgICAgICAgICAgfHwg
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVDb2x1
bW5zQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNr
aW5nT2JqZWN0LT5jb2x1bW5zKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShi
YWNraW5nT2JqZWN0LT5jb2x1bW5zKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdKSB7
DQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW5Db3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3Qt
PnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KLSAgICAgICAgICAgIHJl
dHVybiBjb252ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCisgICAgICAgICAg
ICByZXR1cm4gbWFrZU5TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KICAgICAgICAgfQ0K
IA0KICAgICAgICAgLy8gSFRNTCB0YWJsZXMgZG9uJ3Qgc3VwcG9ydCB0aGVzZSBhdHRyaWJ1dGVz
Lg0KQEAgLTI0MzYsNyArMjQ0MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORA0KICAgICAgICAgICAgIHJldHVybiBuaWw7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkhlYWRlclVJRWxlbWVu
dHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tp
bmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQogDQogICAgICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0
ZV0pIHsNCiAgICAgICAgICAgICBhdXRvKiBoZWFkZXJDb250YWluZXIgPSBiYWNraW5nT2JqZWN0
LT5oZWFkZXJDb250YWluZXIoKTsNCkBAIC0yNDQ0LDEwICsyNDQ5LDEwIEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgfQ0KIA0KICAgICAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVs
ZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShi
YWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNB
cnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2VsbHNBdHRy
aWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmpl
Y3QtPmNlbGxzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2Jq
ZWN0LT5jZWxscygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uQ291bnRBdHRyaWJ1dGVdKQ0KICAgICAgICAgICAg
IHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmNvbHVtbkNvdW50KCkpOw0KQEAgLTI0NjksNyArMjQ3
NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgLy8g
cm93cyBhdHRyaWJ1dGUgZm9yIGEgY29sdW1uIGlzIHRoZSBsaXN0IG9mIGFsbCB0aGUgZWxlbWVu
dHMgaW4gdGhhdCBjb2x1bW4gYXQgZWFjaCByb3cNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0NCiAgICAgICAg
ICAgICB8fCBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Vmlz
aWJsZVJvd3NBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5
KGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNB
cnJheShiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SGVhZGVyQXR0cmlidXRlXSkg
ew0KICAgICAgICAgICAgIGF1dG8qIGhlYWRlciA9IGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRl
cigpOw0KQEAgLTI0ODksMTAgKzI0OTQsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5EDQogICAgICAgICB9DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1
dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3Qt
PmNvbHVtbkhlYWRlcnMoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tp
bmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd0hlYWRlclVJRWxlbWVudHNBdHRy
aWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmpl
Y3QtPnJvd0hlYWRlcnMoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tp
bmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFSSUFDb2x1bW5JbmRleEF0dHJpYnV0ZV0p
DQogICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+YXhDb2x1bW5JbmRleCgpKTsN
CkBAIC0yNTA1LDEyICsyNTEwLDEyIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW5D
b3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0
ZWRDaGlsZHJlbkNvcHkpOw0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHNl
bGVjdGVkQ2hpbGRyZW5Db3B5KTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoc2Vs
ZWN0ZWRDaGlsZHJlbkNvcHkpOw0KICAgICAgICAgfQ0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXSkgew0KICAg
ICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciByb3dzQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhVHJlZVJvd3Mocm93
c0NvcHkpOw0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHJvd3NDb3B5KTsN
CisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkocm93c0NvcHkpOw0KICAgICAgICAgfQ0K
IA0KICAgICAgICAgLy8gVHJlZVJvbGVzIGRvIG5vdCBzdXBwb3J0IGNvbHVtbnMsIGJ1dCBNYWMg
QVggZXhwZWN0cyB0byBiZSBhYmxlIHRvIGFzayBhYm91dCBjb2x1bW5zIGF0IHRoZSBsZWFzdC4N
CkBAIC0yNTQ1LDcgKzI1NTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQNCiAgICAgLy8gVGhlIHJvd3MgdGhhdCBhcmUgY29uc2lkZXJlZCBpbnNpZGUgdGhpcyByb3cu
DQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5p
c1RyZWVJdGVtKCkgfHwgYmFja2luZ09iamVjdC0+aXNBUklBVHJlZUdyaWRSb3coKSkNCi0gICAg
ICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5kaXNjbG9zZWRS
b3dzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5k
aXNjbG9zZWRSb3dzKCkpOw0KICAgICB9DQogDQogICAgIC8vIFRoZSByb3cgdGhhdCBjb250YWlu
cyB0aGlzIHJvdy4gSXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCBwYXJlbnQgdGhh
dCBpcyBhIHRyZWVpdGVtLg0KQEAgLTI2MTMsNyArMjYxOCw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOiBOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlXSkgew0KICAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxpbmtl
ZFVJRWxlbWVudHM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5saW5rZWRVSUVsZW1lbnRzKGxp
bmtlZFVJRWxlbWVudHMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkobGlua2Vk
VUlFbGVtZW50cyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkobGlua2VkVUlFbGVtZW50
cyk7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzog
TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1dGVdKQ0KQEAgLTI2ODYsNyArMjY5MSw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGVdKSB7DQog
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
YXJpYU93bnM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhT3duc0VsZW1lbnRzKGFyaWFP
d25zKTsNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGFyaWFPd25zKTsNCisgICAg
ICAgIHJldHVybiBtYWtlTlNBcnJheShhcmlhT3ducyk7DQogICAgIH0NCiANCiAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBUG9zSW5TZXRB
dHRyaWJ1dGVdKQ0KQEAgLTI3NTIsNyArMjc1Nyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORA0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoUm9vdFJhZGljYW5kQXR0cmlidXRlXSkgew0KICAgICAg
ICAgICAgIGF1dG8gcmFkaWNhbmQgPSBiYWNraW5nT2JqZWN0LT5tYXRoUmFkaWNhbmQoKTsNCi0g
ICAgICAgICAgICByZXR1cm4gcmFkaWNhbmQgPyBjb252ZXJ0VG9OU0FycmF5KCpyYWRpY2FuZCkg
OiBuaWw7DQorICAgICAgICAgICAgcmV0dXJuIHJhZGljYW5kID8gbWFrZU5TQXJyYXkoKnJhZGlj
YW5kKSA6IG5pbDsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aEZyYWN0aW9uTnVtZXJhdG9yQXR0cmli
dXRlXSkNCkBAIC0yODQ2LDcgKzI4NTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYRGV0
YWlsc0VsZW1lbnRzIl0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBkZXRhaWxzOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+YXJp
YURldGFpbHNFbGVtZW50cyhkZXRhaWxzKTsNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KGRldGFpbHMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGRldGFpbHMpOw0KICAg
ICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5QnJhaWxsZUxhYmVsQXR0cmlidXRlXSkNCkBAIC0yODYxLDcgKzI4NjYsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpAIkFYRXJyb3JNZXNzYWdlRWxlbWVudHMiXSkgew0KICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGVycm9yTWVz
c2FnZXM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMo
ZXJyb3JNZXNzYWdlcyk7DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShlcnJvck1l
c3NhZ2VzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShlcnJvck1lc3NhZ2VzKTsNCiAg
ICAgfQ0KIA0KICAgICAvLyBNdWx0aS1zZWxlY3RhYmxlDQpAQCAtMjg3OSw3ICsyODg0LDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QXJpYUNvbnRyb2xzQXR0cmlidXRl
XSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIGFyaWFDb250cm9sczsNCiAgICAgICAgIGJhY2tpbmdPYmplY3QtPmFyaWFDb250cm9s
c0VsZW1lbnRzKGFyaWFDb250cm9scyk7DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eShhcmlhQ29udHJvbHMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGFyaWFDb250cm9s
cyk7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlGb2N1c2FibGVBbmNlc3RvckF0dHJpYnV0ZV0pIHsNCkBAIC0zNDM1LDIy
ICszNDQwLDYgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIH0p
Ow0KIH0NCiANCi0vLyBGSVhNRTogTm8gcmVhc29uIGZvciB0aGlzIHRvIGJlIGEgbWV0aG9kIGlu
c3RlYWQgb2YgYSBmdW5jdGlvbjsgY2FuIGdldCBkb2N1bWVudCBmcm9tIHJhbmdlLg0KLS0gKE5T
UmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNvbnN0IFNpbXBsZVJhbmdlJilyYW5nZQ0KLXsNCi0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsNCi0gICAgDQotICAgIGF1dG8gZG9jdW1lbnQgPSBz
ZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCi0gICAgaWYgKCFkb2N1bWVudCkNCi0g
ICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgYXV0byBk
b2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7DQotICAgIGlmICgh
ZG9jdW1lbnRFbGVtZW50KQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQs
IDApOw0KLQ0KLSAgICByZXR1cm4gY2hhcmFjdGVyUmFuZ2UobWFrZUJvdW5kYXJ5UG9pbnRCZWZv
cmVOb2RlQ29udGVudHMoKmRvY3VtZW50RWxlbWVudCksIHJhbmdlKTsNCi19DQotDQogLSAoTlNJ
bnRlZ2VyKV9pbmRleEZvclRleHRNYXJrZXI6KEFYVGV4dE1hcmtlclJlZiltYXJrZXINCiB7DQog
ICAgIGlmICghbWFya2VyKQ0KQEAgLTM0NjcsNyArMzQ1Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIGlmICghcmFuZ2UpDQogICAgICAgICAg
ICAgICAgIHJldHVybiBOU05vdEZvdW5kOw0KIA0KLSAgICAgICAgICAgIHJldHVybiBbcHJvdGVj
dGVkU2VsZiBfY29udmVydFRvTlNSYW5nZToqcmFuZ2VdLmxvY2F0aW9uOw0KKyAgICAgICAgICAg
IHJldHVybiBtYWtlTlNSYW5nZShyYW5nZSkubG9jYXRpb247DQogICAgICAgICB9DQogDQogICAg
ICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCkBAIC0zODQyLDggKzM4MzEsOCBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOw0KICAgICAgICAgYmFja2luZ09i
amVjdC0+ZmluZE1hdGNoaW5nT2JqZWN0cygmY3JpdGVyaWEsIHJlc3VsdHMpOw0KICAgICAgICAg
aWYgKHdpZGdldENoaWxkcmVuKQ0KLSAgICAgICAgICAgIHJldHVybiBbd2lkZ2V0Q2hpbGRyZW4g
YXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6Y29udmVydFRvTlNBcnJheShyZXN1bHRzKV07
DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShyZXN1bHRzKTsNCisgICAgICAgICAg
ICByZXR1cm4gW3dpZGdldENoaWxkcmVuIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5Om1h
a2VOU0FycmF5KHJlc3VsdHMpXTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShyZXN1bHRz
KTsNCiAgICAgfQ0KIA0KICAgICAvLyBUZXh0TWFya2VyIGF0dHJpYnV0ZXMuDQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444874</attachid>
            <date>2021-11-19 17:16:15 -0800</date>
            <delta_ts>2021-11-19 23:58:09 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>57865</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZDIwNDhjNGZhMmY2Li44OGQxOGVlY2E1ZjMgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
NiBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUt
Y2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuDQorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbDogQWRkZWQuDQorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOg0KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnM6DQorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zOg0KKw0KIDIwMjEtMTEtMTkgIEtpZXQgSG8gIDx0aG8yMkBhcHBsZS5jb20+DQogDQogICAg
ICAgICBJbnRlZ3JhdGUgbW90aW9uIHBhdGggdHJhbnNmb3JtcyBpbiB0cmFuc2Zvcm1hdGlvbiBw
aXBlbGluZQ0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2li
bGUtY2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dA0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uN2Q0Yjk3NTg5N2E2DQotLS0gL2Rldi9udWxs
DQorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLWNoYXJhY3Rlci1y
YW5nZS1leHBlY3RlZC50eHQNCkBAIC0wLDAgKzEsMTIgQEANCitUaGlzIHRlc3RzIHRoYXQgdmlz
aWJsZUNoYXJhY3RlclJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSByYW5nZXMgd2hpbGUg
bW9kaWZ5aW5nIG9ic2N1cmVkIGNvbnRlbnQuDQorDQorT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
Lg0KKw0KKw0KK1Zpc2libGUgcmFuZ2U6IE5TUmFuZ2U6IHswLCA0NjQwfQ0KK1Zpc2libGUgcmFu
Z2UgKDIwMCwgMjAwKTogTlNSYW5nZTogezAsIDMwMH0NCitWaXNpYmxlIHJhbmdlLCBvZmZzZXQ6
IDUwICgyMDAsIDUwMCk6IE5TUmFuZ2U6IHs5MCwgODEwfQ0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUNCisNCitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbCBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwNCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjZiNDBhODIyY2U3Yw0KLS0t
IC9kZXYvbnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1j
aGFyYWN0ZXItcmFuZ2UuaHRtbA0KQEAgLTAsMCArMSw3OCBAQA0KKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4NCis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCis8L2hlYWQ+
DQorPGJvZHkgaWQ9ImJvZHkiPg0KKw0KKzxkaXYgaWQ9Imdyb3VwIj4NCit0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QN
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0K
K3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQor
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KKzwvZGl2
Pg0KKw0KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPg0KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
Pg0KKw0KKzxzY3JpcHQ+DQorDQorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdmlz
aWJsZUNoYXJhY3RlclJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSByYW5nZXMgd2hpbGUg
bW9kaWZ5aW5nIG9ic2N1cmVkIGNvbnRlbnQuIik7DQorDQorICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsNCisNCisgICAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImdyb3VwIikuY2hpbGRBdEluZGV4
KDApOw0KKyAgICAgICAgICBkZWJ1ZygiVmlzaWJsZSByYW5nZTogIiArIHRleHQuc3RyaW5nRGVz
Y3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlKCJBWFZpc2libGVDaGFyYWN0ZXJSYW5nZSIpKTsNCisN
CisgICAgICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3U2l6ZSgyMDAsIDIwMCk7DQorICAgICAgICAg
IGRlYnVnKCJWaXNpYmxlIHJhbmdlICgyMDAsIDIwMCk6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0
aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gNTA7DQorICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0Vmlld1NpemUoMjAwLCA1MDApOw0KKyAgICAgICAgICBkZWJ1ZygiVmlzaWJsZSByYW5n
ZSwgb2Zmc2V0OiA1MCAoMjAwLCA1MDApOiAiICsgdGV4dC5zdHJpbmdEZXNjcmlwdGlvbk9mQXR0
cmlidXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikpOw0KKw0KKyAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRl
biI7DQorICAgIH0NCisNCis8L3NjcmlwdD4NCisNCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+DQorPC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0
ZXItcmFuZ2UtZXhwZWN0ZWQudHh0DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw
MDAwMDAwLi5jZGJiOGM0MjJkYTcNCi0tLSAvZGV2L251bGwNCisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0DQpAQCAtMCww
ICsxLDEyIEBADQorVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVDaGFyYWN0ZXJSYW5nZSByZXR1cm5z
IGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlmeWluZyBvYnNjdXJlZCBjb250ZW50
Lg0KKw0KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4NCisNCisNCitWaXNpYmxlIHJhbmdlOiBO
U1JhbmdlOiB7MCwgNDIwNX0NCitWaXNpYmxlIHJhbmdlICg1MDAsIDIwMCk6IE5TUmFuZ2U6IHsw
LCAzNjB9DQorVmlzaWJsZSByYW5nZSwgb2Zmc2V0OiAyMDAgKDIwMCwgNTAwKTogTlNSYW5nZTog
ezAsIDY5MH0NCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlDQorDQorVEVTVCBDT01Q
TEVURQ0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1j
aGFyYWN0ZXItcmFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1j
aGFyYWN0ZXItcmFuZ2UuaHRtbA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw
MDAwMC4uMzlkMzJkYmQyMDMzDQotLS0gL2Rldi9udWxsDQorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwNCkBAIC0wLDAgKzEsNzMgQEAN
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+DQorPGh0bWw+
DQorPGhlYWQ+DQorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4NCis8L2hlYWQ+DQorPGJvZHkgaWQ9ImJvZHkiPg0KKw0KKzxkaXYgaWQ9Imdyb3VwIj4NCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KKzwvZGl2Pg0KKw0KKzxzY3JpcHQ+DQorDQorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHRoYXQgdmlzaWJsZUNoYXJhY3RlclJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSBy
YW5nZXMgd2hpbGUgbW9kaWZ5aW5nIG9ic2N1cmVkIGNvbnRlbnQuIik7DQorDQorICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsNCisgICAgICAgIHZhciB0ZXh0ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJncm91cCIpLmNoaWxk
QXRJbmRleCgwKTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxlIHJhbmdlOiAiICsgdGV4dC5zdHJp
bmdEZXNjcmlwdGlvbk9mQXR0cmlidXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikp
Ow0KKw0KKyAgICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3U2l6ZSg1MDAsIDIwMCk7DQorICAgICAg
ICBkZWJ1ZygiVmlzaWJsZSByYW5nZSAoNTAwLCAyMDApOiAiICsgdGV4dC5zdHJpbmdEZXNjcmlw
dGlvbk9mQXR0cmlidXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikpOw0KKw0KKyAg
ICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSAyMDA7DQorICAgICAgICB0ZXN0UnVubmVy
LnNldFZpZXdTaXplKDIwMCwgNTAwKTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxlIHJhbmdlLCBv
ZmZzZXQ6IDIwMCAoMjAwLCA1MDApOiAiICsgdGV4dC5zdHJpbmdEZXNjcmlwdGlvbk9mQXR0cmli
dXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikpOw0KKw0KKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOw0K
KyAgICB9DQorDQorPC9zY3JpcHQ+DQorDQorPC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zDQppbmRleCBhNDJjNzI5ZjA3ZmYuLmE0YjEw
NGUwNTdiZSAxMDA2NDQNCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zDQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucw0K
QEAgLTIxMTgsNyArMjExOCw3IEBAIHdlYmtpdC5vcmcvYi8xNDg4MDYgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXNwDQogZmFzdC9kb20v
bGlua2lmeS1waG9uZS1udW1iZXJzLmh0bWwgWyBQYXNzIF0NCiANCiBhY2Nlc3NpYmlsaXR5L3Zp
ZGVvLWVsZW1lbnQtdXJsLWF0dHJpYnV0ZS5odG1sIFsgUGFzcyBdDQotDQorYWNjZXNzaWJpbGl0
eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIFsgUGFzcyBdDQogYWNjZXNzaWJpbGl0eS9h
bmNlc3Rvci1jb21wdXRhdGlvbi5odG1sIFsgUGFzcyBdDQogDQogIyBFbmFibGUgImFyaWEtY3Vy
cmVudCIgdGVzdHMgZm9yIGlPUy4NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMNCmluZGV4IDlhMDc0NTg3OTM1NC4uMDQxOGQ2MjQ1MDczIDEwMDY0NA0K
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zDQorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMNCkBAIC02MDEs
NiArNjAxLDEzIEBAIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctaW5zZXJ0LWh0bWwuaHRtbCBb
IFBhc3MgVGltZW91dCBdDQogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwg
WyBGYWlsdXJlIF0NCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXVuaWZpZWQtZW11bGF0aW9u
Lmh0bWwgWyBGYWlsdXJlIF0NCiANCis8PDw8PDw8IFVwZGF0ZWQgdXBzdHJlYW0NCis9PT09PT09
DQorIyBTa2lwIGR1ZSB0byBsYWNrIG9mIER1bXBSZW5kZXJUcmVlIGBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpkb21JZGVudGlmZXJgIGltcGxlbWVudGF0aW9uLg0KK2FjY2Vzc2liaWxpdHkvbWFj
L3NlYXJjaC1wcmVkaWNhdGUtZm9yLWFkaG9jLXJhZGlvLWdyb3Vwcy5odG1sIFsgU2tpcCBdDQor
YWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbCBbIFNraXAgXQ0K
Kw0KKz4+Pj4+Pj4gU3Rhc2hlZCBjaGFuZ2VzDQogIyA8cmRhcjovL3Byb2JsZW0vMjYwNTA5MjM+
IFRoZSByZXN1bHQgaXMgcHJvYmFibHkgc3RpbGwgYSBwYXNzLCBidXQgd2UgZG9uJ3QgaGF2ZSBh
IHdheQ0KICMgdG8gaGF2ZSBwbGF0Zm9ybSBzcGVjaWZpYyByZXN1bHRzIHRoYXQgYXJlIGRpZmZl
cmVudCBiZXR3ZWVuIFdLMSBhbmQgV0syLg0KIGFjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0
dHJpYnV0ZXMuaHRtbCBbIEZhaWx1cmUgXQ0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RF
eHBlY3RhdGlvbnMNCmluZGV4IGE3MWU0MzBlYjhlOS4uMGZiOWMzOTkxMTBiIDEwMDY0NA0KLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMNCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zDQpAQCAtMjc4LDYgKzI3OCw3IEBA
IGFjY2Vzc2liaWxpdHkvYXJpYS1saXN0Ym94LWNsZWFyLXNlbGVjdGlvbi1jcmFzaC5odG1sIFsg
U2tpcCBdDQogYWNjZXNzaWJpbGl0eS9saXN0Ym94LWNsZWFyLXNlbGVjdGlvbi5odG1sIFsgU2tp
cCBdDQogYWNjZXNzaWJpbGl0eS9lbWJlZGRlZC1pbWFnZS1kZXNjcmlwdGlvbi5odG1sIFsgU2tp
cCBdDQogYWNjZXNzaWJpbGl0eS9pbWctbm8tYWx0LW5vdC1pZ25vcmVkLXdpdGgtdGl0bGUuaHRt
bCBbIFNraXAgXQ0KK2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbCBb
IFNraXAgXQ0KIA0KICMgTmVlZCB0byBpbXBsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzV2Vi
QXBwbGljYXRpb25BbmNlc3RvcigpLA0KICMgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbkRl
c2NyaXB0aW9uTGlzdERldGFpbCgpLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luRGVzY3Jp
cHRpb25MaXN0VGVybSgpLCBhbmQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCmluZGV4IDhiZWE0ZjZmZmQ1NS4uYjZjMGY3
MDBjM2U3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsNTEgQEANCisyMDIxLTExLTE5ICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQorDQorICAgICAgICBBWDogV2ViS2l0
OiBuZWVkIGEgbWV0aG9kIHRvIGdldCB2aXNpYmxlIHRleHQgYW5kIGZyYW1lIG9mIGFuIGVsZW1l
bnQgb24gc2NyZWVuDQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzMzM2DQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisN
CisgICAgICAgIEltcGxlbWVudCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgZm9yIHN0YXRpYyB0ZXh0
IGVsZW1lbnRzIHNvIHRoYXQgQm9va3MgY2FuIGRldGVybWluZSB0aGUgdmlzaWJsZQ0KKyAgICAg
ICAgY29udGVudCBvbiBhIHBhZ2UuDQorDQorICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L3Zp
c2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwNCisNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojp2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgY29uc3QpOg0KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnVub2JzY3VyZWRDb250ZW50UmVjdCBjb25zdCk6DQorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOg0KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoNCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06DQor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5Vmlz
aWJsZUNvbnRlbnRSZWN0XSk6DQorICAgICAgICAoYWNjZXNzaWJsZUVsZW1lbnRzRm9yT2JqZWN0
cyk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5RmluZE1hdGNoaW5nT2JqZWN0czpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIHBvc2l0aW9uRm9yVGV4dE1hcmtlcjpdKToNCisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJGb3JQb3NpdGlvbjpdKToNCisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHN0cmluZ0ZvclJhbmdlOl0pOg0K
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZnJhbWVGb3JSYW5nZTpd
KToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlNYXRoUmFkaWNhbmRdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIF9jb252ZXJ0VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb0RPTVJhbmdlOl0pOiBEZWxldGVkLg0KKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoN
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp2aXNpYmxlQ2hhcmFjdGVyUmFu
Z2UgY29uc3QpOg0KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnVub2JzY3Vy
ZWRDb250ZW50UmVjdCBjb25zdCk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmg6DQorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToNCisgICAgICAgICht
YWtlTlNBcnJheSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJh
c2UgYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZV0pOg0KKyAgICAgICAgKG1ha2VO
U1JhbmdlKToNCisgICAgICAgIChtYWtlRE9NUmFuZ2UpOg0KKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGJhc2VVcGRhdGVCYWNraW5nU3RvcmVdKToNCisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBsaW5lUmVjdHNBbmRUZXh0
XSk6DQorICAgICAgICAoY29udmVydFRvTlNBcnJheSk6IERlbGV0ZWQuDQorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOg0KKyAg
ICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2hpbGRyZW5WZWN0b3JBcnJh
eV0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgX2luZGV4Rm9yVGV4dE1hcmtlcjpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0
ZXI6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfY29udmVy
dFRvTlNSYW5nZTpdKTogRGVsZXRlZC4NCisNCiAyMDIxLTExLTE5ICBLaWV0IEhvICA8dGhvMjJA
YXBwbGUuY29tPg0KIA0KICAgICAgICAgSW1wbGVtZW50IHBhcnNpbmcgYW5kIGFuaW1hdGlvbiBz
dXBwb3J0IGZvciByYXkoKSBzaGFwZSBhY2NlcHRlZCBieSBvZmZzZXQtcGF0aA0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwDQpp
bmRleCA5Mzg0OGUxY2FiNzYuLjY3NDZmNmNiYjQ4ZiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHANCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHANCkBAIC03MDQsNiAr
NzA0LDUyIEBAIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmVsZW1lbnRSYW5nZSgpIGNvbnN0DQogICAgIHJldHVybiBBWE9iamVjdENhY2hlOjpyYW5nZUZv
ck5vZGVDb250ZW50cygqbm9kZSk7DQogfQ0KIA0KK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0DQorew0K
KyAgICBhdXRvIHJhbmdlID0gZWxlbWVudFJhbmdlKCk7DQorICAgIGlmICghcmFuZ2UpDQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KKw0KKyAgICBhdXRvIGNvbnRlbnRSZWN0ID0gdW5v
YnNjdXJlZENvbnRlbnRSZWN0KCk7DQorICAgIGF1dG8gZWxlbWVudFJlY3QgPSBzbmFwcGVkSW50
UmVjdCh0aGlzLT5lbGVtZW50UmVjdCgpKTsNCisgICAgaWYgKCFjb250ZW50UmVjdC5pbnRlcnNl
Y3RzKGVsZW1lbnRSZWN0KSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAg
IHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gc3RhcnRCb3VuZGFyeSA9IHJhbmdlLT5zdGFy
dDsNCisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBlbmRCb3VuZGFyeSA9IHJhbmdl
LT5lbmQ7DQorDQorICAgIC8vIE9yaWdpbiBpc24ndCBjb250YWluZWQgaW4gdmlzaWJsZSByZWN0
LCBzdGFydCBtb3ZpbmcgZm9yd2FyZCBieSBsaW5lLg0KKyAgICB3aGlsZSAoIWNvbnRlbnRSZWN0
LmNvbnRhaW5zKGVsZW1lbnRSZWN0LmxvY2F0aW9uKCkpKSB7DQorICAgICAgICBhdXRvIG5leHRM
aW5lUG9zaXRpb24gPSBuZXh0TGluZUVuZFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihtYWtlQ29u
dGFpbmVyT2Zmc2V0UG9zaXRpb24oKnN0YXJ0Qm91bmRhcnkpKSk7DQorICAgICAgICBzdGQ6Om9w
dGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IHRlc3RTdGFydEJvdW5kYXJ5ID0gbWFrZUJvdW5kYXJ5UG9p
bnQobmV4dExpbmVQb3NpdGlvbik7DQorICAgICAgICBpZiAoIXRlc3RTdGFydEJvdW5kYXJ5IHx8
ICFjb250YWlucygqcmFuZ2UsICp0ZXN0U3RhcnRCb3VuZGFyeSkpDQorICAgICAgICAgICAgYnJl
YWs7DQorICAgICAgICANCisgICAgICAgIHN0YXJ0Qm91bmRhcnkgPSB0ZXN0U3RhcnRCb3VuZGFy
eTsNCisgICAgICAgIGVsZW1lbnRSZWN0ID0gYm91bmRzRm9yUmFuZ2UoU2ltcGxlUmFuZ2UoKnN0
YXJ0Qm91bmRhcnksIHJhbmdlLT5lbmQpKTsNCisgICAgICAgIGlmIChlbGVtZW50UmVjdC5pc0Vt
cHR5KCkpDQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgLy8gRW5kIGlzbid0
IGNvbnRhaW5lZCBpbiB2aXNpYmxlIHJlY3QsIHN0YXJ0IG1vdmluZyBiYWNrd2FyZHMgYnkgbGlu
ZS4NCisgICAgd2hpbGUgKCFjb250ZW50UmVjdC5jb250YWlucyhlbGVtZW50UmVjdC5sb2NhdGlv
bigpICsgZWxlbWVudFJlY3Quc2l6ZSgpKSkgew0KKyAgICAgICAgYXV0byBwcmV2aW91c0xpbmVQ
b3NpdGlvbiA9IHByZXZpb3VzTGluZVN0YXJ0UG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1ha2VD
b250YWluZXJPZmZzZXRQb3NpdGlvbigqZW5kQm91bmRhcnkpKSk7DQorICAgICAgICBzdGQ6Om9w
dGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IHRlc3RFbmRCb3VuZGFyeSA9IG1ha2VCb3VuZGFyeVBvaW50
KHByZXZpb3VzTGluZVBvc2l0aW9uKTsNCisgICAgICAgIGlmICghdGVzdEVuZEJvdW5kYXJ5IHx8
ICFjb250YWlucygqcmFuZ2UsICp0ZXN0RW5kQm91bmRhcnkpKQ0KKyAgICAgICAgICAgIGJyZWFr
Ow0KKyAgICAgICAgDQorICAgICAgICBlbmRCb3VuZGFyeSA9IHRlc3RFbmRCb3VuZGFyeTsNCisg
ICAgICAgIGVsZW1lbnRSZWN0ID0gYm91bmRzRm9yUmFuZ2UoeyAqc3RhcnRCb3VuZGFyeSwgKmVu
ZEJvdW5kYXJ5IH0pOw0KKyAgICAgICAgaWYgKGVsZW1lbnRSZWN0LmlzRW1wdHkoKSkNCisgICAg
ICAgICAgICBicmVhazsNCisgICAgfQ0KKw0KKyAgICBpZiAoIXN0YXJ0Qm91bmRhcnkgfHwgIWVu
ZEJvdW5kYXJ5KQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisgICAgDQorICAgIHJl
dHVybiBTaW1wbGVSYW5nZSgqc3RhcnRCb3VuZGFyeSwgKmVuZEJvdW5kYXJ5KTsNCit9DQorDQog
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZmluZFRleHRS
YW5nZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoU3RyaW5ncywgY29uc3QgU2ltcGxlUmFu
Z2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNv
bnN0DQogew0KICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmb3VuZDsNCkBAIC0zMTgy
LDYgKzMyMjgsMTQgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNp
YmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmIHN1YmZvY3UNCiAgICAgICAgIHNjcm9sbFBh
cmVudC0+c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhuZXdTdWJmb2N1cyk7DQogfQ0K
IA0KK0Zsb2F0UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1bm9ic2N1cmVkQ29udGVudFJlY3Qo
KSBjb25zdA0KK3sNCisgICAgYXV0byBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7DQorICAg
IGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpDQorICAgICAgICByZXR1cm4geyB9
Ow0KKyAgICByZXR1cm4gRmxvYXRSZWN0KHNuYXBwZWRJbnRSZWN0KGRvY3VtZW50LT52aWV3KCkt
PnVub2JzY3VyZWRDb250ZW50UmVjdCgpKSk7DQorfQ0KKw0KIHZvaWQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6c2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9pbnQpIGNv
bnN0DQogew0KICAgICAvLyBTZWFyY2ggdXAgdGhlIHBhcmVudCBjaGFpbiBhbmQgY3JlYXRlIGEg
dmVjdG9yIG9mIGFsbCBzY3JvbGxhYmxlIHBhcmVudCBvYmplY3RzDQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KaW5kZXggMjFmZjRh
MjhhNWE2Li41OWNlYTRmNGIzOTcgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgNCkBAIC04MDgsNyArODA4LDcgQEAgcHJvdGVj
dGVkOg0KICAgICB2b2lkIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Ow0KICAgICB2b2lkIGFy
aWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7DQogICAgIHZpcnR1YWwgYm9vbCBleHBv
c2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9DQotDQorICAgIEZsb2F0
UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsNCiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogcmFkaW9Hcm91cEFuY2VzdG9yKCkgY29uc3Q7DQogDQogICAgIGJvb2wg
YWxsb3dzVGV4dFJhbmdlcygpIGNvbnN0Ow0KQEAgLTgyMSw2ICs4MjEsNyBAQCBwcml2YXRlOg0K
ICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFu
Z2VJbkRpcmVjdGlvbihjb25zdCBTaW1wbGVSYW5nZSYsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJl
Y3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7DQogICAgIHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IHNlbGVjdGlvblJhbmdlKCkgY29uc3Q7DQogICAgIHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IGZpbmRUZXh0UmFuZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaFN0
cmluZ3MsIGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRE
aXJlY3Rpb24pIGNvbnN0Ow0KKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiB2aXNpYmxl
Q2hhcmFjdGVyUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCiANCiBwcm90ZWN0ZWQ6IC8vIEZJWE1F
OiBNYWtlIHRoZSBkYXRhIG1lbWJlcnMgcHJpdmF0ZS4NCiAgICAgYm9vbCBjaGlsZHJlbkluaXRp
YWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkluaXRpYWxpemVkOyB9DQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaA0KaW5kZXggZTE1OTYyMWM4NTQ5Li4yYjZkYjU1MDdmOGIgMTAwNjQ0DQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmgNCkBAIC05ODgsNiArOTg4LDcgQEAgcHVibGljOg0KICAgICB2aXJ0
dWFsIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSA9IDA7DQogICAgIHZpcnR1YWwgRmxvYXRSZWN0
IHJlbGF0aXZlRnJhbWUoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNvbnZl
cnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25T
cGFjZSkgY29uc3QgPSAwOw0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29udGVu
dFJlY3QoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NoZWNrZWRTdGF0
ZSgpIGNvbnN0ID0gMDsNCiAgICAgDQogICAgIC8vIEluIGEgbXVsdGktc2VsZWN0IGxpc3QsIG1h
bnkgaXRlbXMgY2FuIGJlIHNlbGVjdGVkIGJ1dCBvbmx5IG9uZSBpcyBhY3RpdmUgYXQgYSB0aW1l
Lg0KQEAgLTk5Nyw2ICs5OTgsNyBAQCBwdWJsaWM6DQogICAgIHZpcnR1YWwgYm9vbCBoYXNJdGFs
aWNGb250KCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIGJvb2wgaGFzTWlzc3BlbGxpbmcoKSBj
b25zdCA9IDA7DQogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWlzc3Bl
bGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hE
aXJlY3Rpb24pIGNvbnN0ID0gMDsNCisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9v
bCBoYXNQbGFpblRleHQoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lRm9u
dChjb25zdCBBWENvcmVPYmplY3QmKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBoYXNT
YW1lRm9udENvbG9yKGNvbnN0IEFYQ29yZU9iamVjdCYpIGNvbnN0ID0gMDsNCkBAIC0xNTMwLDcg
KzE1MzIsNyBAQCBwdWJsaWM6DQogDQogICAgIHZpcnR1YWwgU3RyaW5nIGlubmVySFRNTCgpIGNv
bnN0ID0gMDsNCiAgICAgdmlydHVhbCBTdHJpbmcgb3V0ZXJIVE1MKCkgY29uc3QgPSAwOw0KLQ0K
KyAgICANCiBwcml2YXRlOg0KICAgICAvLyBEZXRhY2hlcyB0aGlzIG9iamVjdCBmcm9tIHRoZSBv
YmplY3RzIGl0IHJlZmVyZW5jZXMgYW5kIGl0IGlzIHJlZmVyZW5jZWQgYnkuDQogICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUpID0g
MDsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tDQppbmRleCA1ZTBjOGM4
ZWJjNjcuLjk4OTM0MWFmYzIxMiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tDQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQ0KQEAgLTUyLDYgKzUyLDcgQEANCiAjaW1wb3J0ICJTVkdFbGVtZW50SW5saW5lcy5o
Ig0KICNpbXBvcnQgIlNWR05hbWVzLmgiDQogI2ltcG9ydCAiU2VsZWN0aW9uR2VvbWV0cnkuaCIN
CisjaW1wb3J0ICJTaW1wbGVSYW5nZS5oIg0KICNpbXBvcnQgIlRleHRJdGVyYXRvci5oIg0KICNp
bXBvcnQgIldBS1Njcm9sbFZpZXcuaCINCiAjaW1wb3J0ICJXQUtXaW5kb3cuaCINCkBAIC0xNjk0
LDEyICsxNjk1LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxl
U3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpDQogew0KICAgICBpZiAoIVtzZWxmIF9w
cmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87DQot
ICAgIA0KLSAgICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50
KCk7DQotICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpDQotICAgICAgICBy
ZXR1cm4gQ0dSZWN0WmVybzsNCi0gICAgYXV0byByZWN0ID0gRmxvYXRSZWN0KHNuYXBwZWRJbnRS
ZWN0KGRvY3VtZW50LT52aWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVjdCgpKSk7DQotICAgIHJl
dHVybiBbc2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29u
dmVyc2lvblNwYWNlOjpTY3JlZW5dOw0KKyAgICByZXR1cm4gW3NlbGYgY29udmVydFJlY3RUb1Nw
YWNlOnNlbGYuYXhCYWNraW5nT2JqZWN0LT51bm9ic2N1cmVkQ29udGVudFJlY3QoKSBzcGFjZTpB
Y2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpTY3JlZW5dOw0KIH0NCiANCiAvLyBUaGUgImNl
bnRlciBwb2ludCIgaXMgd2hlcmUgVm9pY2VPdmVyIHdpbGwgInByZXNzIiBhbiBvYmplY3QuIFRo
aXMgbWF5IG5vdCBiZSB0aGUgYWN0dWFsDQpAQCAtMTkxNSw3ICsxOTExLDcgQEAgc3RhdGljIE5T
QXJyYXkgKmFjY2Vzc2libGVFbGVtZW50c0Zvck9iamVjdHMoY29uc3QgQVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2gNCiAgICAgICAgIH0pOw0KICAgICB9DQogDQotICAgIHJldHVybiBjb252
ZXJ0VG9OU0FycmF5KGFjY2Vzc2libGVFbGVtZW50cyk7DQorICAgIHJldHVybiBtYWtlTlNBcnJh
eShhY2Nlc3NpYmxlRWxlbWVudHMpOw0KIH0NCiANCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0
eURldGFpbHNFbGVtZW50cw0KQEAgLTIxMDQsNyArMjEwMCw3IEBAIHN0YXRpYyBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICBBY2Nlc3NpYmlsaXR5U2Vh
cmNoQ3JpdGVyaWEgY3JpdGVyaWEgPSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFy
Y2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKHBhcmFtZXRlcnMpOw0KICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsNCiAg
ICAgc2VsZi5heEJhY2tpbmdPYmplY3QtPmZpbmRNYXRjaGluZ09iamVjdHMoJmNyaXRlcmlhLCBy
ZXN1bHRzKTsNCi0gICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkocmVzdWx0cyk7DQorICAgIHJl
dHVybiBtYWtlTlNBcnJheShyZXN1bHRzKTsNCiB9DQogDQogLSAodm9pZClhY2Nlc3NpYmlsaXR5
TW9kaWZ5U2VsZWN0aW9uOihUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkgaW5jcmVhc2U6KEJP
T0wpaW5jcmVhc2UNCkBAIC0yMjA5LDQ3ICsyMjA1LDYgQEAgc3RhdGljIFJlbmRlck9iamVjdCog
cmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgIHJldHVybiByYW5nZSA/IFtzZWxm
IGNvbnRlbnRGb3JTaW1wbGVSYW5nZToqcmFuZ2UgYXR0cmlidXRlZDphdHRyaWJ1dGVkXSA6IG5p
bDsNCiB9DQogDQotLy8gRklYTUU6IE5vIHJlYXNvbiBmb3IgdGhpcyB0byBiZSBhIG1ldGhvZCBp
bnN0ZWFkIG9mIGEgZnVuY3Rpb24uDQotLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooY29u
c3QgU2ltcGxlUmFuZ2UmKXJhbmdlDQotew0KLSAgICBhdXRvJiBkb2N1bWVudCA9IHJhbmdlLnN0
YXJ0LmRvY3VtZW50KCk7DQotICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsNCi0g
ICAgaWYgKCFmcmFtZSkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAw
KTsNCi0NCi0gICAgYXV0byogcm9vdEVkaXRhYmxlRWxlbWVudCA9IGZyYW1lLT5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQotICAgIGF1dG8qIHNjb3BlID0g
cm9vdEVkaXRhYmxlRWxlbWVudCA/IHJvb3RFZGl0YWJsZUVsZW1lbnQgOiBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQoKTsNCi0gICAgaWYgKCFzY29wZSkNCi0gICAgICAgIHJldHVybiBOU01ha2VS
YW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgLy8gTW91c2UgZXZlbnRzIG1heSBjYXVzZSBU
U00gdG8gYXR0ZW1wdCB0byBjcmVhdGUgYW4gTlNSYW5nZSBmb3IgYSBwb3J0aW9uIG9mIHRoZSB2
aWV3DQotICAgIC8vIHRoYXQgaXMgbm90IGluc2lkZSB0aGUgY3VycmVudCBlZGl0YWJsZSByZWdp
b24uIFRoZXNlIGNoZWNrcyBlbnN1cmUgd2UgZG9uJ3QgcHJvZHVjZQ0KLSAgICAvLyBwb3RlbnRp
YWxseSBpbnZhbGlkIGRhdGEgd2hlbiByZXNwb25kaW5nIHRvIHN1Y2ggcmVxdWVzdHMuDQotICAg
IGlmICghc2NvcGUtPmNvbnRhaW5zKHJhbmdlLnN0YXJ0LmNvbnRhaW5lci5wdHIoKSkgfHwgIXNj
b3BlLT5jb250YWlucyhyYW5nZS5lbmQuY29udGFpbmVyLnB0cigpKSkNCi0gICAgICAgIHJldHVy
biBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgcmV0dXJuIE5TTWFrZVJhbmdl
KGNoYXJhY3RlckNvdW50KHsgeyAqc2NvcGUsIDAgfSwgcmFuZ2Uuc3RhcnQgfSksIGNoYXJhY3Rl
ckNvdW50KHJhbmdlKSk7DQotfQ0KLQ0KLS0gKHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+KV9j
b252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZQ0KLXsNCi0gICAgaWYgKHJhbmdlLmxvY2F0
aW9uID09IE5TTm90Rm91bmQpDQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KLQ0KLSAg
ICAvLyBvdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBvbmx5IGNhbGxlZCBi
eSBpbnB1dCBtZXRob2RzIHRoYXQNCi0gICAgLy8gY29uY2VudHJhdGUgb24gYSBnaXZlbiBhcmVh
IGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbg0KLSAgICAvLyBXZSBoYXZlIHRvIGRvIHRoaXMgYmVj
YXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0aG9zZSBpcyBu
b3QNCi0gICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlv
biBpcyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzDQotICAgIC8vIHRvIHVzZSB0aGUgcm9v
dCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQgYXMgdGhlIHBvc2l0aW9u
YWwgYmFzZS4NCi0gICAgLy8gVGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1
dCBjb250ZXh0Lg0KLSAgICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRv
Y3VtZW50KCk7DQotICAgIGF1dG8gc2VsZWN0aW9uUm9vdCA9IGRvY3VtZW50LT5mcmFtZSgpLT5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQotICAgIGF1dG8g
c2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGRvY3VtZW50LT5kb2N1bWVu
dEVsZW1lbnQoKTsNCi0gICAgaWYgKCFzY29wZSkNCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7DQotDQotICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIHJhbmdlKTsNCi19DQogDQogLy8gVGhpcyBtZXRob2Qg
aXMgaW50ZW5kZWQgdG8gdGFrZSBhIHRleHQgbWFya2VyIHJlcHJlc2VudGluZyBhIFZpc2libGVQ
b3NpdGlvbiBhbmQgY29udmVydCBpdA0KIC8vIGludG8gYSBub3JtYWxpemVkIGxvY2F0aW9uIHdp
dGhpbiB0aGUgZG9jdW1lbnQuDQpAQCAtMjI2Nyw3ICsyMjIyLDcgQEAgc3RhdGljIFJlbmRlck9i
amVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgICAgICBhdXRvIHJhbmdl
ID0gY2FjaGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjaGFyYWN0ZXJPZmZz
ZXQsIGNoYXJhY3Rlck9mZnNldCk7DQogICAgICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgICAg
IHJldHVybiBOU05vdEZvdW5kOw0KLSAgICAgICAgcmV0dXJuIFtzZWxmIF9jb252ZXJ0VG9OU1Jh
bmdlOipyYW5nZV0ubG9jYXRpb247DQorICAgICAgICByZXR1cm4gbWFrZU5TUmFuZ2UocmFuZ2Up
LmxvY2F0aW9uOw0KICAgICB9DQogICAgIHJldHVybiBOU05vdEZvdW5kOw0KIH0NCkBAIC0yMzQ2
LDcgKzIzMDEsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmll
dyogdmlldykNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCiAg
ICAgICAgIHJldHVybiBuaWw7DQogDQotICAgIGF1dG8gcmFuZ2UgPSBbc2VsZiBfY29udmVydFRv
RE9NUmFuZ2U6TlNNYWtlUmFuZ2UocG9zaXRpb24sIDApXTsNCisgICAgYXV0byByYW5nZSA9IG1h
a2VET01SYW5nZShzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKSwgTlNNYWtlUmFuZ2Uo
cG9zaXRpb24sIDApKTsNCiAgICAgaWYgKCFyYW5nZSkNCiAgICAgICAgIHJldHVybiBuaWw7DQog
DQpAQCAtMjQxNCw3ICsyMzY5LDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JW
aWV3KFdBS1ZpZXcqIHZpZXcpDQogew0KICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJp
bGl0eUNhbGxdKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCi0gICAgYXV0byB3ZWJSYW5nZSA9IFtz
ZWxmIF9jb252ZXJ0VG9ET01SYW5nZTpyYW5nZV07DQorICAgIGF1dG8gd2ViUmFuZ2UgPSBtYWtl
RE9NUmFuZ2Uoc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCksIHJhbmdlKTsNCiAgICAg
aWYgKCF3ZWJSYW5nZSkNCiAgICAgICAgIHJldHVybiBuaWw7DQogICAgIHJldHVybiBzZWxmLmF4
QmFja2luZ09iamVjdC0+c3RyaW5nRm9yUmFuZ2UoKndlYlJhbmdlKTsNCkBAIC0yNjAwLDYgKzI1
NTUsMTcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZp
ZXcpDQogICAgIHJldHVybiBbc2VsZiBwcmV2aW91c01hcmtlckZvckNoYXJhY3Rlck9mZnNldDpz
dGFydF07DQogfQ0KIA0KKy0gKENHUmVjdClmcmFtZUZvclJhbmdlOihOU1JhbmdlKXJhbmdlDQor
ew0KKyAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KKyAgICAgICAg
cmV0dXJuIENHUmVjdFplcm87DQorICAgIGF1dG8gd2ViUmFuZ2UgPSBtYWtlRE9NUmFuZ2Uoc2Vs
Zi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCksIHJhbmdlKTsNCisgICAgaWYgKCF3ZWJSYW5n
ZSkNCisgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOw0KKyAgICBhdXRvIHJlY3QgPSBzZWxmLmF4
QmFja2luZ09iamVjdC0+Ym91bmRzRm9yUmFuZ2UoKndlYlJhbmdlKTsNCisgICAgcmV0dXJuIFtz
ZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpyZWN0IHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9u
U3BhY2U6OlNjcmVlbl07DQorfQ0KKw0KIC8vIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIHRvIHJl
dHVybiB0aGUgYm91bmRzIG9mIGEgdGV4dCBtYXJrZXIgcmFuZ2UgaW4gc2NyZWVuIGNvb3JkaW5h
dGVzLg0KIC0gKENHUmVjdClmcmFtZUZvclRleHRNYXJrZXJzOihOU0FycmF5ICopYXJyYXkNCiB7
DQpAQCAtMjkzMSw3ICsyODk3LDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JW
aWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgICAgICByZXR1cm4gbmlsOw0KIA0KICAgICBhdXRvIHJh
ZGljYW5kID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPm1hdGhSYWRpY2FuZCgpOw0KLSAgICByZXR1
cm4gcmFkaWNhbmQgPyBjb252ZXJ0VG9OU0FycmF5KCpyYWRpY2FuZCkgOiBuaWw7DQorICAgIHJl
dHVybiByYWRpY2FuZCA/IG1ha2VOU0FycmF5KCpyYWRpY2FuZCkgOiBuaWw7DQogfQ0KIA0KIC0g
KFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICopYWNjZXNzaWJpbGl0eU1hdGhOdW1lcmF0
b3JPYmplY3QNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQppbmRleCAxMWE3OWIxMjE3MmQu
LjM2OTUyZjk0MDhmYiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0KQEAgLTk5Miw2
ICs5OTIsMTMgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojp1cGRhdGVCYWNraW5nU3RvcmUoKQ0K
ICAgICAgICAgdHJlZS0+YXBwbHlQZW5kaW5nQ2hhbmdlcygpOw0KIH0NCiANCitzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBBWElzb2xhdGVkT2JqZWN0Ojp2aXNpYmxlQ2hhcmFjdGVyUmFuZ2Uo
KSBjb25zdA0KK3sNCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsNCisgICAgYXV0byogYXhP
YmplY3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKTsNCisgICAgcmV0dXJuIGF4T2JqZWN0ID8gYXhP
YmplY3QtPnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIDogc3RkOjpudWxsb3B0Ow0KK30NCisNCiBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWElzb2xhdGVkT2JqZWN0OjpyYW5nZUZvclBsYWlu
VGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJiBheFJhbmdlKSBjb25zdA0KIHsNCiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsNCkBAIC0xNDcwLDYgKzE0NzcsMTUgQEAgdm9pZCBBWElz
b2xhdGVkT2JqZWN0OjpzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2li
bGVQb3NpdGlvblJhbmcNCiAgICAgICAgIG9iamVjdC0+c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRp
b25SYW5nZSh2aXNpYmxlUG9zaXRpb25SYW5nZSk7DQogfQ0KIA0KK0Zsb2F0UmVjdCBBWElzb2xh
dGVkT2JqZWN0Ojp1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25zdA0KK3sNCisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxGbG9hdFJlY3Q+KFt0
aGlzXSAoKSAtPiBGbG9hdFJlY3Qgew0KKyAgICAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGFzc29j
aWF0ZWRBWE9iamVjdCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBvYmplY3QtPnVub2JzY3VyZWRD
b250ZW50UmVjdCgpOw0KKyAgICAgICAgcmV0dXJuIHsgfTsNCisgICAgfSk7DQorfQ0KKw0KIHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRSYW5nZSgp
IGNvbnN0DQogew0KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOw0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuaA0KaW5kZXggM2I0ZWVhMWZiYjU4Li5iYTYzZGMyNzIxZDIgMTAwNjQ0DQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuaA0KQEAgLTQ0MSw5ICs0NDEsMTEgQEAgcHJpdmF0ZToNCiAgICAgQVhDb3Jl
T2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJikgY29uc3Qgb3ZlcnJpZGU7DQogICAgIGludCBsaW5lRm9yUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7DQogICAgIFBsYWluVGV4dFJhbmdlIHBsYWlu
VGV4dFJhbmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UmKSBjb25zdCBvdmVycmlkZTsNCisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gdmlz
aWJsZUNoYXJhY3RlclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7DQogICAgIGludCBpbmRleChjb25z
dCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsNCiAgICAgdm9pZCBsaW5lQnJlYWtz
KFZlY3RvcjxpbnQ+JikgY29uc3Qgb3ZlcnJpZGU7DQotDQorICAgIEZsb2F0UmVjdCB1bm9ic2N1
cmVkQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsNCisgICAgDQogICAgIC8vIEF0dHJpYnV0
ZSBzZXR0ZXJzLg0KICAgICB2b2lkIHNldEFSSUFHcmFiYmVkKGJvb2wpIG92ZXJyaWRlOw0KICAg
ICB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgb3ZlcnJpZGU7DQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UuaA0KaW5kZXggZWVhM2U2OWRlZDkzLi5hYzJiZGJmZTJhYzUgMTAw
NjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlckJhc2UuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgNCkBAIC0zNCw2ICszNCw3
IEBADQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIHN0cnVjdCBBY2Nlc3NpYmlsaXR5U2VhcmNo
Q3JpdGVyaWE7DQorY2xhc3MgRG9jdW1lbnQ7DQogY2xhc3MgSW50UmVjdDsNCiBjbGFzcyBGbG9h
dFBvaW50Ow0KIGNsYXNzIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ow0KQEAgLTExMSwxMSAr
MTEyLDE1IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRleHR1YWxD
b250ZXh0U291cmNlQ29kZSA9IEAiVUlBY2Nlc3NpYmlsDQogLSAoTlNBcnJheSAqKWFjY2Vzc2li
aWxpdHlNYXRoUG9zdHNjcmlwdFBhaXJzOw0KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5TWF0
aFByZXNjcmlwdFBhaXJzOw0KIA0KKy0gKE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVZpc2libGVDaGFy
YWN0ZXJSYW5nZTsNCisNCiAtIChOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYmFzZUFj
Y2Vzc2liaWxpdHlSZXNvbHZlZEVkaXRpbmdTdHlsZXM7DQogDQogZXh0ZXJuIFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JT
ZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNvbnN0IE5TRGljdGlvbmFyeSAq
KTsNCiANCi1leHRlcm4gTlNBcnJheSAqY29udmVydFRvTlNBcnJheShjb25zdCBXZWJDb3JlOjpB
WENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOw0KK2V4dGVybiBOU0Fy
cmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpOw0KK2V4dGVybiBOU1JhbmdlIG1ha2VOU1JhbmdlKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KTsNCitleHRlcm4gc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4gbWFrZURPTVJhbmdlKFdlYkNvcmU6OkRvY3VtZW50KiwgTlNSYW5n
ZSk7DQogDQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpDQogLSAoaWQpX2FjY2Vzc2liaWxpdHlX
ZWJEb2N1bWVudFZpZXc7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1t
DQppbmRleCAxZTU2OTFkMTlmOTIuLjVmN2FkMjg2OWU3NCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5tbQ0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tDQpAQCAtMjYxLDcgKzI2MSw3IEBAIHN0YXRpYyBOU0Fy
cmF5ICpjb252ZXJ0TWF0aFBhaXJzVG9OU0FycmF5KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpDQogICAgIH0pLmF1dG9yZWxlYXNlKCk7DQogfQ0KIA0KLU5TQXJyYXkgKmNv
bnZlcnRUb05TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKQ0KK05TQXJyYXkgKm1ha2VOU0FycmF5KGNvbnN0IFdl
YkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJl
bikNCiB7DQogICAgIHJldHVybiBjcmVhdGVOU0FycmF5KGNoaWxkcmVuLCBbXSAoY29uc3QgYXV0
byYgY2hpbGQpIC0+IGlkIHsNCiAgICAgICAgIGF1dG8gd3JhcHBlciA9IGNoaWxkLT53cmFwcGVy
KCk7DQpAQCAtNDYyLDYgKzQ2MiwyNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVu
U3BhY2VGdW5jdGlvbihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbg0KICAgICBy
ZXR1cm4gY29udmVydGVkUGF0aC5hdXRvcmVsZWFzZSgpOw0KIH0NCiANCisvLyBEZXRlcm1pbmUg
dGhlIHZpc2libGUgcmFuZ2UgYnkgY2hlY2tpbmcgaW50ZXJzZWN0aW9uIG9mIHVub2JzY3VyZWRD
b250ZW50UmVjdCBhbmQgYSByYW5nZSBvZiB0ZXh0IGJ5DQorLy8gYWR2YW5jaW5nIGZvcndhcmQg
YnkgbGluZSBmcm9tIHRvcCBhbmQgYmFja3dhcmRzIGJ5IGxpbmUgZnJvbSB0aGUgYm90dG9tLCB1
bnRpbCB3ZSBoYXZlIGEgdmlzaWJsZSByYW5nZS4NCistIChOU1JhbmdlKWFjY2Vzc2liaWxpdHlW
aXNpYmxlQ2hhcmFjdGVyUmFuZ2UNCit7DQorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRy
aWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8TlNSYW5nZT4oW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5Q
dHIoc2VsZildICgpIC0+IE5TUmFuZ2Ugew0KKyAgICAgICAgYXV0byBiYWNraW5nT2JqZWN0ID0g
cHJvdGVjdGVkU2VsZi5nZXQoKS5iYXNlVXBkYXRlQmFja2luZ1N0b3JlOw0KKyAgICAgICAgaWYg
KCFiYWNraW5nT2JqZWN0KQ0KKyAgICAgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZv
dW5kLCAwKTsNCisNCisgICAgICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZU5TUmFuZ2UoYmFj
a2luZ09iamVjdC0+ZWxlbWVudFJhbmdlKCkpOw0KKyAgICAgICAgaWYgKGVsZW1lbnRSYW5nZS5s
b2NhdGlvbiA9PSBOU05vdEZvdW5kKQ0KKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50UmFuZ2U7
DQorICAgICAgICANCisgICAgICAgIGF1dG8gdmlzaWJsZVJhbmdlID0gbWFrZU5TUmFuZ2UoYmFj
a2luZ09iamVjdC0+dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkpOw0KKyAgICAgICAgaWYgKHZpc2li
bGVSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQ0KKyAgICAgICAgICAgIHJldHVybiB2aXNp
YmxlUmFuZ2U7DQorDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UodmlzaWJsZVJhbmdlLmxv
Y2F0aW9uIC0gZWxlbWVudFJhbmdlLmxvY2F0aW9uLCB2aXNpYmxlUmFuZ2UubGVuZ3RoKTsNCisg
ICAgfSk7DQorfQ0KKw0KIC0gKGlkKV9hY2Nlc3NpYmlsaXR5V2ViRG9jdW1lbnRWaWV3DQogew0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsNCkBAIC02MjMsNiArNjQ0LDUwIEBAIHN0YXRpYyB2
b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyogYXR0clN0cmluZywNCiAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShhdHRyU3Ry
aW5nLCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOw0KIH0NCiANCisNCitOU1Jh
bmdlIG1ha2VOU1JhbmdlKHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlKQ0KK3sNCisg
ICAgaWYgKCFyYW5nZSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAw
KTsNCisgICAgDQorICAgIGF1dG8mIGRvY3VtZW50ID0gcmFuZ2UtPnN0YXJ0LmRvY3VtZW50KCk7
DQorICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsNCisgICAgaWYgKCFmcmFtZSkN
CisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCisNCisgICAgYXV0
byogcm9vdEVkaXRhYmxlRWxlbWVudCA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5y
b290RWRpdGFibGVFbGVtZW50KCk7DQorICAgIGF1dG8qIHNjb3BlID0gcm9vdEVkaXRhYmxlRWxl
bWVudCA/IHJvb3RFZGl0YWJsZUVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsN
CisgICAgaWYgKCFzY29wZSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5k
LCAwKTsNCisNCisgICAgLy8gTW91c2UgZXZlbnRzIG1heSBjYXVzZSBUU00gdG8gYXR0ZW1wdCB0
byBjcmVhdGUgYW4gTlNSYW5nZSBmb3IgYSBwb3J0aW9uIG9mIHRoZSB2aWV3DQorICAgIC8vIHRo
YXQgaXMgbm90IGluc2lkZSB0aGUgY3VycmVudCBlZGl0YWJsZSByZWdpb24uIFRoZXNlIGNoZWNr
cyBlbnN1cmUgd2UgZG9uJ3QgcHJvZHVjZQ0KKyAgICAvLyBwb3RlbnRpYWxseSBpbnZhbGlkIGRh
dGEgd2hlbiByZXNwb25kaW5nIHRvIHN1Y2ggcmVxdWVzdHMuDQorICAgIGlmICghc2NvcGUtPmNv
bnRhaW5zKHJhbmdlLT5zdGFydC5jb250YWluZXIucHRyKCkpIHx8ICFzY29wZS0+Y29udGFpbnMo
cmFuZ2UtPmVuZC5jb250YWluZXIucHRyKCkpKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdl
KE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICByZXR1cm4gTlNNYWtlUmFuZ2UoY2hhcmFjdGVyQ291
bnQoeyB7ICpzY29wZSwgMCB9LCByYW5nZS0+c3RhcnQgfSksIGNoYXJhY3RlckNvdW50KCpyYW5n
ZSkpOw0KK30NCisNCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlRE9NUmFuZ2UoRG9j
dW1lbnQqIGRvY3VtZW50LCBOU1JhbmdlIHJhbmdlKQ0KK3sNCisgICAgaWYgKHJhbmdlLmxvY2F0
aW9uID09IE5TTm90Rm91bmQpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KKw0KKyAg
ICAvLyBvdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBvbmx5IGNhbGxlZCBi
eSBpbnB1dCBtZXRob2RzIHRoYXQNCisgICAgLy8gY29uY2VudHJhdGUgb24gYSBnaXZlbiBhcmVh
IGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbg0KKyAgICAvLyBXZSBoYXZlIHRvIGRvIHRoaXMgYmVj
YXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0aG9zZSBpcyBu
b3QNCisgICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlv
biBpcyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzDQorICAgIC8vIHRvIHVzZSB0aGUgcm9v
dCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQgYXMgdGhlIHBvc2l0aW9u
YWwgYmFzZS4NCisgICAgLy8gVGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1
dCBjb250ZXh0Lg0KKyAgICBhdXRvIHNlbGVjdGlvblJvb3QgPSBkb2N1bWVudC0+ZnJhbWUoKS0+
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOw0KKyAgICBhdXRv
IHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBkb2N1bWVudC0+ZG9jdW1l
bnRFbGVtZW50KCk7DQorICAgIGlmICghc2NvcGUpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0Ow0KKw0KKyAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVj
dGluZ05vZGVDb250ZW50cygqc2NvcGUpLCByYW5nZSk7DQorfQ0KKw0KIC8vIFJldHVybnMgYW4g
YXJyYXkgb2Ygc3RyaW5ncyBhbmQgQVhPYmplY3Qgd3JhcHBlcnMgY29ycmVzcG9uZGluZyB0byB0
aGUgdGV4dA0KIC8vIHJ1bnMgYW5kIHJlcGxhY2VtZW50IG5vZGVzIGluY2x1ZGVkIGluIHRoZSBn
aXZlbiByYW5nZS4NCiAtIChOU0FycmF5ICopY29udGVudEZvclNpbXBsZVJhbmdlOihjb25zdCBT
aW1wbGVSYW5nZSYpcmFuZ2UgYXR0cmlidXRlZDooQk9PTClhdHRyaWJ1dGVkDQpAQCAtNjc2LDE4
ICs3NDEsMjYgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011
dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLA0KICAgICByZXR1cm4gYXJyYXkuYXV0
b3JlbGVhc2UoKTsNCiB9DQogDQotLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilsaW5lUmVj
dHNBbmRUZXh0DQorLSAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KiliYXNlVXBkYXRlQmFja2luZ1N0
b3JlDQogew0KICNpZiBQTEFURk9STShNQUMpDQogICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBz
ZWxmLnVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZTsNCiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQ0K
LSAgICAgICAgcmV0dXJuIG5pbDsNCisgICAgICAgIHJldHVybiBudWxscHRyOw0KICNlbHNlDQog
ICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQotICAgICAgICByZXR1
cm4gbmlsOw0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgIGF1dG8qIGJhY2tpbmdPYmpl
Y3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsNCiAjZW5kaWYNCisgICAgcmV0dXJuIGJhY2tpbmdP
YmplY3Q7DQorfQ0KIA0KKy0gKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopbGluZVJlY3RzQW5k
VGV4dA0KK3sNCisgICAgYXV0byBiYWNraW5nT2JqZWN0ID0gc2VsZi5iYXNlVXBkYXRlQmFja2lu
Z1N0b3JlOw0KKyAgICBpZiAoIWJhY2tpbmdPYmplY3QpDQorICAgICAgICByZXR1cm4gbmlsOw0K
KyAgICANCiAgICAgYXV0byByYW5nZSA9IGJhY2tpbmdPYmplY3QtPmVsZW1lbnRSYW5nZSgpOw0K
ICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tDQppbmRleCA3MDA0YzQ2YjY0MzkuLmQ2OTQxZjgyZjEyMiAx
MDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQ0KQEAgLTE3OTUsNyAr
MTc5NSw3IEBAIHN0YXRpYyB2b2lkIFdlYlRyYW5zZm9ybUNHUGF0aFRvTlNCZXppZXJQYXRoKHZv
aWQqIGluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsDQogDQogLSAoTlNBcnJheTxXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqPiAqKWNoaWxkcmVuVmVjdG9yQXJyYXkNCiB7DQotICAg
IHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5jaGlsZHJlbigp
KTsNCisgICAgcmV0dXJuIG1ha2VOU0FycmF5KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5jaGlsZHJl
bigpKTsNCiB9DQogDQogLSAoTlNWYWx1ZSAqKXBvc2l0aW9uDQpAQCAtMjIwMyw3ICsyMjAzLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoYmFj
a2luZ09iamVjdC0+aXNUcmVlSXRlbSgpKSB7DQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRlbnRDb3B5Ow0KICAgICAgICAg
ICAgIGJhY2tpbmdPYmplY3QtPmFyaWFUcmVlSXRlbUNvbnRlbnQoY29udGVudENvcHkpOw0KLSAg
ICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNvbnRlbnRDb3B5KTsNCisgICAgICAg
ICAgICByZXR1cm4gbWFrZU5TQXJyYXkoY29udGVudENvcHkpOw0KICAgICAgICAgfQ0KIA0KICAg
ICAgICAgcmV0dXJuIHNlbGYuY2hpbGRyZW5WZWN0b3JBcnJheTsNCkBAIC0yMjEzLDcgKzIyMTMs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChi
YWNraW5nT2JqZWN0LT5jYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpKSB7DQogICAgICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVk
Q2hpbGRyZW5Db3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnNlbGVjdGVkQ2hpbGRy
ZW4oc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5T
QXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KICAgICAgICAgfQ0KICAgICAgICAgcmV0dXJu
IG5pbDsNCiAgICAgfQ0KQEAgLTIyMjIsNyArMjIyMiw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTGlzdEJveCgp
KSB7DQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIHZpc2libGVDaGlsZHJlbkNvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVj
dC0+dmlzaWJsZUNoaWxkcmVuKHZpc2libGVDaGlsZHJlbkNvcHkpOw0KLSAgICAgICAgICAgIHJl
dHVybiBjb252ZXJ0VG9OU0FycmF5KHZpc2libGVDaGlsZHJlbkNvcHkpOw0KKyAgICAgICAgICAg
IHJldHVybiBtYWtlTlNBcnJheSh2aXNpYmxlQ2hpbGRyZW5Db3B5KTsNCiAgICAgICAgIH0NCiAN
CiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0xpc3QoKSkNCkBAIC0yMjM0LDcgKzIyMzQs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiANCiAgICAgaWYgKGJh
Y2tpbmdPYmplY3QtPmlzV2ViQXJlYSgpKSB7DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOkAiQVhMaW5rVUlFbGVtZW50cyJdKQ0KLSAgICAgICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmRvY3VtZW50TGlua3MoKSk7DQorICAg
ICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmRvY3VtZW50TGlua3Mo
KSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhM
b2FkZWQiXSkNCiAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOmJh
Y2tpbmdPYmplY3QtPmlzTG9hZGVkKCldOw0KQEAgLTIyNjcsMTYgKzIyNjcsMjEgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICAgICAgUGxhaW5UZXh0UmFu
Z2UgdGV4dFJhbmdlID0gYmFja2luZ09iamVjdC0+c2VsZWN0ZWRUZXh0UmFuZ2UoKTsNCiAgICAg
ICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UodGV4dFJh
bmdlLnN0YXJ0LCB0ZXh0UmFuZ2UubGVuZ3RoKV07DQogICAgICAgICB9DQotICAgICAgICAvLyBU
T0RPOiBHZXQgYWN0dWFsIHZpc2libGUgcmFuZ2UuIDxyZGFyOi8vcHJvYmxlbS80NzEyMTAxPg0K
LSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmls
aXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4g
YmFja2luZ09iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkgPyBuaWwgOiBbTlNWYWx1ZSB2YWx1ZVdp
dGhSYW5nZTogTlNNYWtlUmFuZ2UoMCwgYmFja2luZ09iamVjdC0+dGV4dExlbmd0aCgpKV07DQot
DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eUluc2VydGlvblBvaW50TGluZU51bWJlckF0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBp
bnQgbGluZU51bWJlciA9IGJhY2tpbmdPYmplY3QtPmluc2VydGlvblBvaW50TGluZU51bWJlcigp
Ow0KICAgICAgICAgICAgIHJldHVybiBsaW5lTnVtYmVyID49IDAgPyBAKGxpbmVOdW1iZXIpIDog
bmlsOw0KICAgICAgICAgfQ0KICAgICB9DQogDQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0
ZV0pIHsNCisgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkNCisg
ICAgICAgICAgICByZXR1cm4gbmlsOw0KKyAgICAgICAgLy8gVE9ETzogR2V0IGFjdHVhbCB2aXNp
YmxlIHJhbmdlLiA8cmRhcjovL3Byb2JsZW0vNDcxMjEwMT4NCisgICAgICAgIGlmIChiYWNraW5n
T2JqZWN0LT5pc1RleHRDb250cm9sKCkpDQorICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZh
bHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKDAsIGJhY2tpbmdPYmplY3QtPnRleHRMZW5ndGgoKSld
Ow0KKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOltzZWxmIGFjY2Vzc2li
aWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VdXTsNCisgICAgfQ0KKw0KICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGVdKSB7
DQogICAgICAgICBVUkwgdXJsID0gYmFja2luZ09iamVjdC0+dXJsKCk7DQogICAgICAgICBpZiAo
dXJsLmlzTnVsbCgpKQ0KQEAgLTIzODAsNyArMjM4NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORA0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUltYWdlT3ZlcmxheUVsZW1lbnRzQXR0cmlidXRlXSkgew0KICAg
ICAgICAgYXV0byBpbWFnZU92ZXJsYXlFbGVtZW50cyA9IGJhY2tpbmdPYmplY3QtPmltYWdlT3Zl
cmxheUVsZW1lbnRzKCk7DQotICAgICAgICByZXR1cm4gaW1hZ2VPdmVybGF5RWxlbWVudHMgPyBj
b252ZXJ0VG9OU0FycmF5KCppbWFnZU92ZXJsYXlFbGVtZW50cykgOiBuaWw7DQorICAgICAgICBy
ZXR1cm4gaW1hZ2VPdmVybGF5RWxlbWVudHMgPyBtYWtlTlNBcnJheSgqaW1hZ2VPdmVybGF5RWxl
bWVudHMpIDogbmlsOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RW1iZWRkZWRJbWFnZURlc2NyaXB0aW9uQXR0cmlidXRl
XSkNCkBAIC0yNDA0LDI5ICsyNDA5LDI5IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFiTGlzdCgpKSB7DQogICAg
ICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IHRhYnNDaGlsZHJlbjsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT50YWJDaGlsZHJlbih0
YWJzQ2hpbGRyZW4pOw0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHRhYnND
aGlsZHJlbik7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHRhYnNDaGlsZHJlbik7
DQogICAgICAgICB9DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb250ZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICByZXR1
cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb250ZW50cygpKTsNCisgICAgICAg
IHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb250ZW50cygpKTsNCiANCiAgICAg
aWYgKGJhY2tpbmdPYmplY3QtPmlzVGFibGUoKSAmJiBiYWNraW5nT2JqZWN0LT5pc0V4cG9zYWJs
ZSgpKSB7DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd3MoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VO
U0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd3MoKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRl
XSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT52
aXNpYmxlUm93cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09i
amVjdC0+dmlzaWJsZVJvd3MoKSk7DQogDQogICAgICAgICAvLyBUT0RPOiBkaXN0aW5ndWlzaCBi
ZXR3ZWVuIHZpc2libGUgYW5kIG5vbi12aXNpYmxlIGNvbHVtbnMNCiAgICAgICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0
ZV0NCiAgICAgICAgICAgICB8fCBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5VmlzaWJsZUNvbHVtbnNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbnMoKSk7DQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbnMoKSk7DQogDQogICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVj
dGVkUm93c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbkNvcHk7DQogICAgICAg
ICAgICAgYmFja2luZ09iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuQ29w
eSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZWN0ZWRDaGlsZHJl
bkNvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShzZWxlY3RlZENoaWxkcmVu
Q29weSk7DQogICAgICAgICB9DQogDQogICAgICAgICAvLyBIVE1MIHRhYmxlcyBkb24ndCBzdXBw
b3J0IHRoZXNlIGF0dHJpYnV0ZXMuDQpAQCAtMjQzNSw3ICsyNDQwLDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICAgICAgcmV0dXJuIG5pbDsNCiANCiAg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
Q29sdW1uSGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1uSGVhZGVycygpKTsNCisgICAgICAg
ICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1uSGVhZGVycygpKTsN
CiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5SGVhZGVyQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIGF1dG8qIGhlYWRlckNvbnRh
aW5lciA9IGJhY2tpbmdPYmplY3QtPmhlYWRlckNvbnRhaW5lcigpOw0KQEAgLTI0NDMsMTAgKzI0
NDgsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICB9
DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVJvd0hlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7DQorICAgICAg
ICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7DQog
DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eVZpc2libGVDZWxsc0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkoYmFja2luZ09iamVjdC0+Y2VsbHMoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1h
a2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNlbGxzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5Db3VudEF0dHJp
YnV0ZV0pDQogICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+Y29sdW1uQ291bnQo
KSk7DQpAQCAtMjQ2OCw3ICsyNDczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5EDQogICAgICAgICAvLyByb3dzIGF0dHJpYnV0ZSBmb3IgYSBjb2x1bW4gaXMgdGhlIGxp
c3Qgb2YgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGF0IGNvbHVtbiBhdCBlYWNoIHJvdw0KICAgICAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dz
QXR0cmlidXRlXQ0KICAgICAgICAgICAgIHx8IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0
dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7DQorICAgICAg
ICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KIA0K
ICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlIZWFkZXJBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgYXV0byogaGVhZGVyID0gYmFja2lu
Z09iamVjdC0+Y29sdW1uSGVhZGVyKCk7DQpAQCAtMjQ4OCwxMCArMjQ5MywxMCBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIH0NCiANCiAgICAgICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSGVh
ZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05T
QXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1uSGVhZGVycygpKTsNCisgICAgICAgICAgICByZXR1
cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1uSGVhZGVycygpKTsNCiANCiAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93
SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCisgICAgICAgICAgICByZXR1
cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCiANCiAgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQUNv
bHVtbkluZGV4QXR0cmlidXRlXSkNCiAgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0
LT5heENvbHVtbkluZGV4KCkpOw0KQEAgLTI1MDQsMTIgKzI1MDksMTIgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV0pIHsNCiAg
ICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3Igc2VsZWN0ZWRDaGlsZHJlbkNvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+c2Vs
ZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuQ29weSk7DQotICAgICAgICAgICAgcmV0dXJu
IGNvbnZlcnRUb05TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KKyAgICAgICAgICAgIHJl
dHVybiBtYWtlTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQogICAgICAgICB9DQogICAg
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJv
d3NBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd3NDb3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmpl
Y3QtPmFyaWFUcmVlUm93cyhyb3dzQ29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkocm93c0NvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShyb3dz
Q29weSk7DQogICAgICAgICB9DQogDQogICAgICAgICAvLyBUcmVlUm9sZXMgZG8gbm90IHN1cHBv
cnQgY29sdW1ucywgYnV0IE1hYyBBWCBleHBlY3RzIHRvIGJlIGFibGUgdG8gYXNrIGFib3V0IGNv
bHVtbnMgYXQgdGhlIGxlYXN0Lg0KQEAgLTI1NDQsNyArMjU0OSw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAvLyBUaGUgcm93cyB0aGF0IGFyZSBjb25zaWRl
cmVkIGluc2lkZSB0aGlzIHJvdy4NCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRSb3dzQXR0cmlidXRlXSkgew0KICAgICAgICAg
aWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSB8fCBiYWNraW5nT2JqZWN0LT5pc0FSSUFU
cmVlR3JpZFJvdygpKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tp
bmdPYmplY3QtPmRpc2Nsb3NlZFJvd3MoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGJhY2tpbmdPYmplY3QtPmRpc2Nsb3NlZFJvd3MoKSk7DQogICAgIH0NCiANCiAgICAgLy8g
VGhlIHJvdyB0aGF0IGNvbnRhaW5zIHRoaXMgcm93LiBJdCBzaG91bGQgYmUgdGhlIHNhbWUgYXMg
dGhlIGZpcnN0IHBhcmVudCB0aGF0IGlzIGEgdHJlZWl0ZW0uDQpAQCAtMjYxMiw3ICsyNjE3LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNB
dHRyaWJ1dGVdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgbGlua2VkVUlFbGVtZW50czsNCiAgICAgICAgIGJhY2tpbmdPYmplY3Qt
PmxpbmtlZFVJRWxlbWVudHMobGlua2VkVUlFbGVtZW50cyk7DQotICAgICAgICByZXR1cm4gY29u
dmVydFRvTlNBcnJheShsaW5rZWRVSUVsZW1lbnRzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNB
cnJheShsaW5rZWRVSUVsZW1lbnRzKTsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZEF0dHJpYnV0ZV0pDQpA
QCAtMjY4NSw3ICsyNjkwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
DQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
T3duc0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBhcmlhT3duczsNCiAgICAgICAgIGJhY2tpbmdPYmplY3QtPmFy
aWFPd25zRWxlbWVudHMoYXJpYU93bnMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJy
YXkoYXJpYU93bnMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGFyaWFPd25zKTsNCiAg
ICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eUFSSUFQb3NJblNldEF0dHJpYnV0ZV0pDQpAQCAtMjc1MSw3ICsyNzU2LDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogDQogICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhSb290UmFkaWNhbmRB
dHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgYXV0byByYWRpY2FuZCA9IGJhY2tpbmdPYmplY3Qt
Pm1hdGhSYWRpY2FuZCgpOw0KLSAgICAgICAgICAgIHJldHVybiByYWRpY2FuZCA/IGNvbnZlcnRU
b05TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCisgICAgICAgICAgICByZXR1cm4gcmFkaWNhbmQg
PyBtYWtlTlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoRnJh
Y3Rpb25OdW1lcmF0b3JBdHRyaWJ1dGVdKQ0KQEAgLTI4NDUsNyArMjg1MCw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOkAiQVhEZXRhaWxzRWxlbWVudHMiXSkgew0KICAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRldGFpbHM7DQogICAgICAg
ICBiYWNraW5nT2JqZWN0LT5hcmlhRGV0YWlsc0VsZW1lbnRzKGRldGFpbHMpOw0KLSAgICAgICAg
cmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoZGV0YWlscyk7DQorICAgICAgICByZXR1cm4gbWFrZU5T
QXJyYXkoZGV0YWlscyk7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlCcmFpbGxlTGFiZWxBdHRyaWJ1dGVdKQ0KQEAgLTI4
NjAsNyArMjg2NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhFcnJvck1lc3NhZ2VFbGVt
ZW50cyJdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgZXJyb3JNZXNzYWdlczsNCiAgICAgICAgIGJhY2tpbmdPYmplY3QtPmFyaWFF
cnJvck1lc3NhZ2VFbGVtZW50cyhlcnJvck1lc3NhZ2VzKTsNCi0gICAgICAgIHJldHVybiBjb252
ZXJ0VG9OU0FycmF5KGVycm9yTWVzc2FnZXMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5
KGVycm9yTWVzc2FnZXMpOw0KICAgICB9DQogDQogICAgIC8vIE11bHRpLXNlbGVjdGFibGUNCkBA
IC0yODc4LDcgKzI4ODMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQN
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlB
cmlhQ29udHJvbHNBdHRyaWJ1dGVdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUNvbnRyb2xzOw0KICAgICAgICAgYmFja2lu
Z09iamVjdC0+YXJpYUNvbnRyb2xzRWxlbWVudHMoYXJpYUNvbnRyb2xzKTsNCi0gICAgICAgIHJl
dHVybiBjb252ZXJ0VG9OU0FycmF5KGFyaWFDb250cm9scyk7DQorICAgICAgICByZXR1cm4gbWFr
ZU5TQXJyYXkoYXJpYUNvbnRyb2xzKTsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUZvY3VzYWJsZUFuY2VzdG9yQXR0cmli
dXRlXSkgew0KQEAgLTM0MjgsMjIgKzM0MzMsNiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQNCiAgICAgfSk7DQogfQ0KIA0KLS8vIEZJWE1FOiBObyByZWFzb24gZm9yIHRo
aXMgdG8gYmUgYSBtZXRob2QgaW5zdGVhZCBvZiBhIGZ1bmN0aW9uOyBjYW4gZ2V0IGRvY3VtZW50
IGZyb20gcmFuZ2UuDQotLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooY29uc3QgU2ltcGxl
UmFuZ2UmKXJhbmdlDQotew0KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOw0KLSAgICANCi0g
ICAgYXV0byBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOw0KLSAg
ICBpZiAoIWRvY3VtZW50KQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQs
IDApOw0KLQ0KLSAgICBhdXRvIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVs
ZW1lbnQoKTsNCi0gICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpDQotICAgICAgICByZXR1cm4gTlNN
YWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIHJldHVybiBjaGFyYWN0ZXJSYW5nZSht
YWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGVDb250ZW50cygqZG9jdW1lbnRFbGVtZW50KSwgcmFu
Z2UpOw0KLX0NCi0NCiAtIChOU0ludGVnZXIpX2luZGV4Rm9yVGV4dE1hcmtlcjooQVhUZXh0TWFy
a2VyUmVmKW1hcmtlcg0KIHsNCiAgICAgaWYgKCFtYXJrZXIpDQpAQCAtMzQ2MCw3ICszNDQ5LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICAgICAgaWYg
KCFyYW5nZSkNCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQogDQotICAgICAg
ICAgICAgcmV0dXJuIFtwcm90ZWN0ZWRTZWxmIF9jb252ZXJ0VG9OU1JhbmdlOipyYW5nZV0ubG9j
YXRpb247DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU1JhbmdlKHJhbmdlKS5sb2NhdGlvbjsN
CiAgICAgICAgIH0NCiANCiAgICAgICAgIHJldHVybiBOU05vdEZvdW5kOw0KQEAgLTM4MzUsOCAr
MzgyNCw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdHM7
DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5maW5kTWF0Y2hpbmdPYmplY3RzKCZjcml0ZXJpYSwg
cmVzdWx0cyk7DQogICAgICAgICBpZiAod2lkZ2V0Q2hpbGRyZW4pDQotICAgICAgICAgICAgcmV0
dXJuIFt3aWRnZXRDaGlsZHJlbiBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTpjb252ZXJ0
VG9OU0FycmF5KHJlc3VsdHMpXTsNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHJl
c3VsdHMpOw0KKyAgICAgICAgICAgIHJldHVybiBbd2lkZ2V0Q2hpbGRyZW4gYXJyYXlCeUFkZGlu
Z09iamVjdHNGcm9tQXJyYXk6bWFrZU5TQXJyYXkocmVzdWx0cyldOw0KKyAgICAgICAgcmV0dXJu
IG1ha2VOU0FycmF5KHJlc3VsdHMpOw0KICAgICB9DQogDQogICAgIC8vIFRleHRNYXJrZXIgYXR0
cmlidXRlcy4NCg==
</data>
<flag name="commit-queue"
          id="469997"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444885</attachid>
            <date>2021-11-19 23:58:09 -0800</date>
            <delta_ts>2021-11-19 23:59:01 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>59032</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZDIwNDhjNGZhMmY2Li44OGQxOGVlY2E1ZjMgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
NiBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUt
Y2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuDQorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbDogQWRkZWQuDQorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOg0KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnM6DQorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zOg0KKw0KIDIwMjEtMTEtMTkgIEtpZXQgSG8gIDx0aG8yMkBhcHBsZS5jb20+DQogDQogICAg
ICAgICBJbnRlZ3JhdGUgbW90aW9uIHBhdGggdHJhbnNmb3JtcyBpbiB0cmFuc2Zvcm1hdGlvbiBw
aXBlbGluZQ0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2li
bGUtY2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dA0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uN2Q0Yjk3NTg5N2E2DQotLS0gL2Rldi9udWxs
DQorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLWNoYXJhY3Rlci1y
YW5nZS1leHBlY3RlZC50eHQNCkBAIC0wLDAgKzEsMTIgQEANCitUaGlzIHRlc3RzIHRoYXQgdmlz
aWJsZUNoYXJhY3RlclJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSByYW5nZXMgd2hpbGUg
bW9kaWZ5aW5nIG9ic2N1cmVkIGNvbnRlbnQuDQorDQorT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
Lg0KKw0KKw0KK1Zpc2libGUgcmFuZ2U6IE5TUmFuZ2U6IHswLCA0NjQwfQ0KK1Zpc2libGUgcmFu
Z2UgKDIwMCwgMjAwKTogTlNSYW5nZTogezAsIDMwMH0NCitWaXNpYmxlIHJhbmdlLCBvZmZzZXQ6
IDUwICgyMDAsIDUwMCk6IE5TUmFuZ2U6IHs5MCwgODEwfQ0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUNCisNCitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbCBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwNCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjZiNDBhODIyY2U3Yw0KLS0t
IC9kZXYvbnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1j
aGFyYWN0ZXItcmFuZ2UuaHRtbA0KQEAgLTAsMCArMSw3OCBAQA0KKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4NCis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCis8L2hlYWQ+
DQorPGJvZHkgaWQ9ImJvZHkiPg0KKw0KKzxkaXYgaWQ9Imdyb3VwIj4NCit0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QN
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0K
K3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQor
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KKzwvZGl2
Pg0KKw0KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPg0KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
Pg0KKw0KKzxzY3JpcHQ+DQorDQorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdmlz
aWJsZUNoYXJhY3RlclJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSByYW5nZXMgd2hpbGUg
bW9kaWZ5aW5nIG9ic2N1cmVkIGNvbnRlbnQuIik7DQorDQorICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsNCisNCisgICAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImdyb3VwIikuY2hpbGRBdEluZGV4
KDApOw0KKyAgICAgICAgICBkZWJ1ZygiVmlzaWJsZSByYW5nZTogIiArIHRleHQuc3RyaW5nRGVz
Y3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlKCJBWFZpc2libGVDaGFyYWN0ZXJSYW5nZSIpKTsNCisN
CisgICAgICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3U2l6ZSgyMDAsIDIwMCk7DQorICAgICAgICAg
IGRlYnVnKCJWaXNpYmxlIHJhbmdlICgyMDAsIDIwMCk6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0
aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gNTA7DQorICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0Vmlld1NpemUoMjAwLCA1MDApOw0KKyAgICAgICAgICBkZWJ1ZygiVmlzaWJsZSByYW5n
ZSwgb2Zmc2V0OiA1MCAoMjAwLCA1MDApOiAiICsgdGV4dC5zdHJpbmdEZXNjcmlwdGlvbk9mQXR0
cmlidXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikpOw0KKw0KKyAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRl
biI7DQorICAgIH0NCisNCis8L3NjcmlwdD4NCisNCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+DQorPC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0
ZXItcmFuZ2UtZXhwZWN0ZWQudHh0DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw
MDAwMDAwLi5jZGJiOGM0MjJkYTcNCi0tLSAvZGV2L251bGwNCisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0DQpAQCAtMCww
ICsxLDEyIEBADQorVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVDaGFyYWN0ZXJSYW5nZSByZXR1cm5z
IGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlmeWluZyBvYnNjdXJlZCBjb250ZW50
Lg0KKw0KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4NCisNCisNCitWaXNpYmxlIHJhbmdlOiBO
U1JhbmdlOiB7MCwgNDIwNX0NCitWaXNpYmxlIHJhbmdlICg1MDAsIDIwMCk6IE5TUmFuZ2U6IHsw
LCAzNjB9DQorVmlzaWJsZSByYW5nZSwgb2Zmc2V0OiAyMDAgKDIwMCwgNTAwKTogTlNSYW5nZTog
ezAsIDY5MH0NCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlDQorDQorVEVTVCBDT01Q
TEVURQ0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1j
aGFyYWN0ZXItcmFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1j
aGFyYWN0ZXItcmFuZ2UuaHRtbA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw
MDAwMC4uMzlkMzJkYmQyMDMzDQotLS0gL2Rldi9udWxsDQorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwNCkBAIC0wLDAgKzEsNzMgQEAN
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+DQorPGh0bWw+
DQorPGhlYWQ+DQorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4NCis8L2hlYWQ+DQorPGJvZHkgaWQ9ImJvZHkiPg0KKw0KKzxkaXYgaWQ9Imdyb3VwIj4NCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KKzwvZGl2Pg0KKw0KKzxzY3JpcHQ+DQorDQorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHRoYXQgdmlzaWJsZUNoYXJhY3RlclJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSBy
YW5nZXMgd2hpbGUgbW9kaWZ5aW5nIG9ic2N1cmVkIGNvbnRlbnQuIik7DQorDQorICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsNCisgICAgICAgIHZhciB0ZXh0ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJncm91cCIpLmNoaWxk
QXRJbmRleCgwKTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxlIHJhbmdlOiAiICsgdGV4dC5zdHJp
bmdEZXNjcmlwdGlvbk9mQXR0cmlidXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikp
Ow0KKw0KKyAgICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3U2l6ZSg1MDAsIDIwMCk7DQorICAgICAg
ICBkZWJ1ZygiVmlzaWJsZSByYW5nZSAoNTAwLCAyMDApOiAiICsgdGV4dC5zdHJpbmdEZXNjcmlw
dGlvbk9mQXR0cmlidXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikpOw0KKw0KKyAg
ICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSAyMDA7DQorICAgICAgICB0ZXN0UnVubmVy
LnNldFZpZXdTaXplKDIwMCwgNTAwKTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxlIHJhbmdlLCBv
ZmZzZXQ6IDIwMCAoMjAwLCA1MDApOiAiICsgdGV4dC5zdHJpbmdEZXNjcmlwdGlvbk9mQXR0cmli
dXRlVmFsdWUoIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdlIikpOw0KKw0KKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOw0K
KyAgICB9DQorDQorPC9zY3JpcHQ+DQorDQorPC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zDQppbmRleCBhNDJjNzI5ZjA3ZmYuLmE0YjEw
NGUwNTdiZSAxMDA2NDQNCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zDQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucw0K
QEAgLTIxMTgsNyArMjExOCw3IEBAIHdlYmtpdC5vcmcvYi8xNDg4MDYgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXNwDQogZmFzdC9kb20v
bGlua2lmeS1waG9uZS1udW1iZXJzLmh0bWwgWyBQYXNzIF0NCiANCiBhY2Nlc3NpYmlsaXR5L3Zp
ZGVvLWVsZW1lbnQtdXJsLWF0dHJpYnV0ZS5odG1sIFsgUGFzcyBdDQotDQorYWNjZXNzaWJpbGl0
eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIFsgUGFzcyBdDQogYWNjZXNzaWJpbGl0eS9h
bmNlc3Rvci1jb21wdXRhdGlvbi5odG1sIFsgUGFzcyBdDQogDQogIyBFbmFibGUgImFyaWEtY3Vy
cmVudCIgdGVzdHMgZm9yIGlPUy4NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMNCmluZGV4IDlhMDc0NTg3OTM1NC4uOWQ4NjVlYjA1ZTRlIDEwMDY0NA0K
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zDQorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMNCkBAIC02MDEs
NiArNjAxLDExIEBAIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctaW5zZXJ0LWh0bWwuaHRtbCBb
IFBhc3MgVGltZW91dCBdDQogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwg
WyBGYWlsdXJlIF0NCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXVuaWZpZWQtZW11bGF0aW9u
Lmh0bWwgWyBGYWlsdXJlIF0NCiANCisjIFNraXAgZHVlIHRvIGxhY2sgb2YgRHVtcFJlbmRlclRy
ZWUgYEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvbUlkZW50aWZlcmAgaW1wbGVtZW50YXRpb24u
DQorYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mb3ItYWRob2MtcmFkaW8tZ3Jv
dXBzLmh0bWwgWyBTa2lwIF0NCisjIFNraXAgZHVlIHRvIGxhY2sgb2YgRHVtcFJlbmRlclRyZWUg
YEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1
ZWAgaW1wbGVtZW50YXRpb24uDQorYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1jaGFyYWN0ZXIt
cmFuZ2UuaHRtbCBbIFNraXAgXQ0KKw0KICMgPHJkYXI6Ly9wcm9ibGVtLzI2MDUwOTIzPiBUaGUg
cmVzdWx0IGlzIHByb2JhYmx5IHN0aWxsIGEgcGFzcywgYnV0IHdlIGRvbid0IGhhdmUgYSB3YXkN
CiAjIHRvIGhhdmUgcGxhdGZvcm0gc3BlY2lmaWMgcmVzdWx0cyB0aGF0IGFyZSBkaWZmZXJlbnQg
YmV0d2VlbiBXSzEgYW5kIFdLMi4NCiBhY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1hdHRyaWJ1
dGVzLmh0bWwgWyBGYWlsdXJlIF0NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0
YXRpb25zDQppbmRleCBhNzFlNDMwZWI4ZTkuLjBmYjljMzk5MTEwYiAxMDA2NDQNCi0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zDQorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucw0KQEAgLTI3OCw2ICsyNzgsNyBAQCBhY2Nl
c3NpYmlsaXR5L2FyaWEtbGlzdGJveC1jbGVhci1zZWxlY3Rpb24tY3Jhc2guaHRtbCBbIFNraXAg
XQ0KIGFjY2Vzc2liaWxpdHkvbGlzdGJveC1jbGVhci1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQ0K
IGFjY2Vzc2liaWxpdHkvZW1iZWRkZWQtaW1hZ2UtZGVzY3JpcHRpb24uaHRtbCBbIFNraXAgXQ0K
IGFjY2Vzc2liaWxpdHkvaW1nLW5vLWFsdC1ub3QtaWdub3JlZC13aXRoLXRpdGxlLmh0bWwgWyBT
a2lwIF0NCithY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBTa2lw
IF0NCiANCiAjIE5lZWQgdG8gaW1wbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc0Rv
Y3VtZW50Um9sZUFuY2VzdG9yKCksIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1dlYkFwcGxp
Y2F0aW9uQW5jZXN0b3IoKSwNCiAjIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5EZXNjcmlw
dGlvbkxpc3REZXRhaWwoKSwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbkRlc2NyaXB0aW9u
TGlzdFRlcm0oKSwgYW5kDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQppbmRleCA4YmVhNGY2ZmZkNTUuLmI2YzBmNzAwYzNl
NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nDQpAQCAtMSwzICsxLDUxIEBADQorMjAyMS0xMS0xOSAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPg0KKw0KKyAgICAgICAgQVg6IFdlYktpdDogbmVl
ZCBhIG1ldGhvZCB0byBnZXQgdmlzaWJsZSB0ZXh0IGFuZCBmcmFtZSBvZiBhbiBlbGVtZW50IG9u
IHNjcmVlbg0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzMzNg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAg
ICAgICBJbXBsZW1lbnQgdmlzaWJsZUNoYXJhY3RlclJhbmdlIGZvciBzdGF0aWMgdGV4dCBlbGVt
ZW50cyBzbyB0aGF0IEJvb2tzIGNhbiBkZXRlcm1pbmUgdGhlIHZpc2libGUNCisgICAgICAgIGNv
bnRlbnQgb24gYSBwYWdlLg0KKw0KKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS92aXNpYmxl
LWNoYXJhY3Rlci1yYW5nZS5odG1sDQorDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6dmlzaWJsZUNoYXJhY3RlclJhbmdlIGNvbnN0KToNCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojp1bm9ic2N1cmVkQ29udGVudFJlY3QgY29uc3QpOg0KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoNCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg6DQorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOg0KKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVZpc2libGVD
b250ZW50UmVjdF0pOg0KKyAgICAgICAgKGFjY2Vzc2libGVFbGVtZW50c0Zvck9iamVjdHMpOg0K
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUZp
bmRNYXRjaGluZ09iamVjdHM6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBwb3NpdGlvbkZvclRleHRNYXJrZXI6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciB0ZXh0TWFya2VyRm9yUG9zaXRpb246XSk6DQorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzdHJpbmdGb3JSYW5nZTpdKToNCisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGZyYW1lRm9yUmFuZ2U6XSk6DQor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5TWF0
aFJhZGljYW5kXSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBf
Y29udmVydFRvTlNSYW5nZTpdKTogRGVsZXRlZC4NCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0VG9ET01SYW5nZTpdKTogRGVsZXRlZC4NCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6DQorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6dmlzaWJsZUNoYXJhY3RlclJhbmdlIGNv
bnN0KToNCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1bm9ic2N1cmVkQ29u
dGVudFJlY3QgY29uc3QpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0Lmg6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06DQorICAgICAgICAobWFrZU5T
QXJyYXkpOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGFj
Y2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VdKToNCisgICAgICAgIChtYWtlTlNSYW5n
ZSk6DQorICAgICAgICAobWFrZURPTVJhbmdlKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZSBiYXNlVXBkYXRlQmFja2luZ1N0b3JlXSk6DQorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgbGluZVJlY3RzQW5kVGV4dF0pOg0K
KyAgICAgICAgKGNvbnZlcnRUb05TQXJyYXkpOiBEZWxldGVkLg0KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToNCisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNoaWxkcmVuVmVjdG9yQXJyYXldKToN
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIF9pbmRleEZvclRleHRNYXJrZXI6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0p
Og0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb05T
UmFuZ2U6XSk6IERlbGV0ZWQuDQorDQogMjAyMS0xMS0xOSAgS2lldCBIbyAgPHRobzIyQGFwcGxl
LmNvbT4NCiANCiAgICAgICAgIEltcGxlbWVudCBwYXJzaW5nIGFuZCBhbmltYXRpb24gc3VwcG9y
dCBmb3IgcmF5KCkgc2hhcGUgYWNjZXB0ZWQgYnkgb2Zmc2V0LXBhdGgNCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcA0KaW5kZXgg
OTM4NDhlMWNhYjc2Li42NzQ2ZjZjYmI0OGYgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwDQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwDQpAQCAtNzA0LDYgKzcwNCw1
MiBAQCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVt
ZW50UmFuZ2UoKSBjb25zdA0KICAgICByZXR1cm4gQVhPYmplY3RDYWNoZTo6cmFuZ2VGb3JOb2Rl
Q29udGVudHMoKm5vZGUpOw0KIH0NCiANCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSBjb25zdA0KK3sNCisgICAg
YXV0byByYW5nZSA9IGVsZW1lbnRSYW5nZSgpOw0KKyAgICBpZiAoIXJhbmdlKQ0KKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgYXV0byBjb250ZW50UmVjdCA9IHVub2JzY3Vy
ZWRDb250ZW50UmVjdCgpOw0KKyAgICBhdXRvIGVsZW1lbnRSZWN0ID0gc25hcHBlZEludFJlY3Qo
dGhpcy0+ZWxlbWVudFJlY3QoKSk7DQorICAgIGlmICghY29udGVudFJlY3QuaW50ZXJzZWN0cyhl
bGVtZW50UmVjdCkpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KKw0KKyAgICBzdGQ6
Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IHN0YXJ0Qm91bmRhcnkgPSByYW5nZS0+c3RhcnQ7DQor
ICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gZW5kQm91bmRhcnkgPSByYW5nZS0+ZW5k
Ow0KKw0KKyAgICAvLyBPcmlnaW4gaXNuJ3QgY29udGFpbmVkIGluIHZpc2libGUgcmVjdCwgc3Rh
cnQgbW92aW5nIGZvcndhcmQgYnkgbGluZS4NCisgICAgd2hpbGUgKCFjb250ZW50UmVjdC5jb250
YWlucyhlbGVtZW50UmVjdC5sb2NhdGlvbigpKSkgew0KKyAgICAgICAgYXV0byBuZXh0TGluZVBv
c2l0aW9uID0gbmV4dExpbmVFbmRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obWFrZUNvbnRhaW5l
ck9mZnNldFBvc2l0aW9uKCpzdGFydEJvdW5kYXJ5KSkpOw0KKyAgICAgICAgc3RkOjpvcHRpb25h
bDxCb3VuZGFyeVBvaW50PiB0ZXN0U3RhcnRCb3VuZGFyeSA9IG1ha2VCb3VuZGFyeVBvaW50KG5l
eHRMaW5lUG9zaXRpb24pOw0KKyAgICAgICAgaWYgKCF0ZXN0U3RhcnRCb3VuZGFyeSB8fCAhY29u
dGFpbnMoKnJhbmdlLCAqdGVzdFN0YXJ0Qm91bmRhcnkpKQ0KKyAgICAgICAgICAgIGJyZWFrOw0K
KyAgICAgICAgDQorICAgICAgICBzdGFydEJvdW5kYXJ5ID0gdGVzdFN0YXJ0Qm91bmRhcnk7DQor
ICAgICAgICBlbGVtZW50UmVjdCA9IGJvdW5kc0ZvclJhbmdlKFNpbXBsZVJhbmdlKCpzdGFydEJv
dW5kYXJ5LCByYW5nZS0+ZW5kKSk7DQorICAgICAgICBpZiAoZWxlbWVudFJlY3QuaXNFbXB0eSgp
KQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAgIC8vIEVuZCBpc24ndCBjb250
YWluZWQgaW4gdmlzaWJsZSByZWN0LCBzdGFydCBtb3ZpbmcgYmFja3dhcmRzIGJ5IGxpbmUuDQor
ICAgIHdoaWxlICghY29udGVudFJlY3QuY29udGFpbnMoZWxlbWVudFJlY3QubG9jYXRpb24oKSAr
IGVsZW1lbnRSZWN0LnNpemUoKSkpIHsNCisgICAgICAgIGF1dG8gcHJldmlvdXNMaW5lUG9zaXRp
b24gPSBwcmV2aW91c0xpbmVTdGFydFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihtYWtlQ29udGFp
bmVyT2Zmc2V0UG9zaXRpb24oKmVuZEJvdW5kYXJ5KSkpOw0KKyAgICAgICAgc3RkOjpvcHRpb25h
bDxCb3VuZGFyeVBvaW50PiB0ZXN0RW5kQm91bmRhcnkgPSBtYWtlQm91bmRhcnlQb2ludChwcmV2
aW91c0xpbmVQb3NpdGlvbik7DQorICAgICAgICBpZiAoIXRlc3RFbmRCb3VuZGFyeSB8fCAhY29u
dGFpbnMoKnJhbmdlLCAqdGVzdEVuZEJvdW5kYXJ5KSkNCisgICAgICAgICAgICBicmVhazsNCisg
ICAgICAgIA0KKyAgICAgICAgZW5kQm91bmRhcnkgPSB0ZXN0RW5kQm91bmRhcnk7DQorICAgICAg
ICBlbGVtZW50UmVjdCA9IGJvdW5kc0ZvclJhbmdlKHsgKnN0YXJ0Qm91bmRhcnksICplbmRCb3Vu
ZGFyeSB9KTsNCisgICAgICAgIGlmIChlbGVtZW50UmVjdC5pc0VtcHR5KCkpDQorICAgICAgICAg
ICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgaWYgKCFzdGFydEJvdW5kYXJ5IHx8ICFlbmRCb3Vu
ZGFyeSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorICAgIA0KKyAgICByZXR1cm4g
U2ltcGxlUmFuZ2UoKnN0YXJ0Qm91bmRhcnksICplbmRCb3VuZGFyeSk7DQorfQ0KKw0KIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRUZXh0UmFuZ2Uo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaFN0cmluZ3MsIGNvbnN0IFNpbXBsZVJhbmdlJiBz
dGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdA0K
IHsNCiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZm91bmQ7DQpAQCAtMzE4Miw2ICsz
MjI4LDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdp
dGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JiBzdWJmb2N1DQogICAgICAgICBzY3JvbGxQYXJlbnQt
PnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMobmV3U3ViZm9jdXMpOw0KIH0NCiANCitG
bG9hdFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29u
c3QNCit7DQorICAgIGF1dG8gZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOw0KKyAgICBpZiAo
IWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQ0KKyAgICAgICAgcmV0dXJuIHsgfTsNCisg
ICAgcmV0dXJuIEZsb2F0UmVjdChzbmFwcGVkSW50UmVjdChkb2N1bWVudC0+dmlldygpLT51bm9i
c2N1cmVkQ29udGVudFJlY3QoKSkpOw0KK30NCisNCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OnNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvaW50KSBjb25zdA0K
IHsNCiAgICAgLy8gU2VhcmNoIHVwIHRoZSBwYXJlbnQgY2hhaW4gYW5kIGNyZWF0ZSBhIHZlY3Rv
ciBvZiBhbGwgc2Nyb2xsYWJsZSBwYXJlbnQgb2JqZWN0cw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgNCmluZGV4IDIxZmY0YTI4YTVh
Ni4uNTljZWE0ZjRiMzk3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oDQpAQCAtODA4LDcgKzgwOCw3IEBAIHByb3RlY3RlZDoN
CiAgICAgdm9pZCBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsNCiAgICAgdm9pZCBhcmlhRWxl
bWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Ow0KICAgICB2aXJ0dWFsIGJvb2wgZXhwb3Nlc1Rp
dGxlVUlFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQ0KLQ0KKyAgICBGbG9hdFJlY3Qg
dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7DQogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHJhZGlvR3JvdXBBbmNlc3RvcigpIGNvbnN0Ow0KIA0KICAgICBib29sIGFsbG93
c1RleHRSYW5nZXMoKSBjb25zdDsNCkBAIC04MjEsNiArODIxLDcgQEAgcHJpdmF0ZToNCiAgICAg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5E
aXJlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmLCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9u
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Ow0KICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBzZWxlY3Rpb25SYW5nZSgpIGNvbnN0Ow0KICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBmaW5kVGV4dFJhbmdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hTdHJpbmdz
LCBjb25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0
aW9uKSBjb25zdDsNCisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gdmlzaWJsZUNoYXJh
Y3RlclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7DQogDQogcHJvdGVjdGVkOiAvLyBGSVhNRTogTWFr
ZSB0aGUgZGF0YSBtZW1iZXJzIHByaXZhdGUuDQogICAgIGJvb2wgY2hpbGRyZW5Jbml0aWFsaXpl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5Jbml0aWFsaXplZDsgfQ0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmgNCmluZGV4IGUxNTk2MjFjODU0OS4uMmI2ZGI1NTA3ZjhiIDEwMDY0NA0KLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZS5oDQpAQCAtOTg4LDYgKzk4OCw3IEBAIHB1YmxpYzoNCiAgICAgdmlydHVhbCB2
b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgPSAwOw0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZWxh
dGl2ZUZyYW1lKCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjb252ZXJ0RnJh
bWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2Up
IGNvbnN0ID0gMDsNCisgICAgdmlydHVhbCBGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0
KCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDaGVja2VkU3RhdGUoKSBj
b25zdCA9IDA7DQogICAgIA0KICAgICAvLyBJbiBhIG11bHRpLXNlbGVjdCBsaXN0LCBtYW55IGl0
ZW1zIGNhbiBiZSBzZWxlY3RlZCBidXQgb25seSBvbmUgaXMgYWN0aXZlIGF0IGEgdGltZS4NCkBA
IC05OTcsNiArOTk4LDcgQEAgcHVibGljOg0KICAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9u
dCgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3Qg
PSAwOw0KICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1pc3NwZWxsaW5n
UmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0
aW9uKSBjb25zdCA9IDA7DQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4g
dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIGJvb2wgaGFz
UGxhaW5UZXh0KCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnQoY29u
c3QgQVhDb3JlT2JqZWN0JikgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZUZv
bnRDb2xvcihjb25zdCBBWENvcmVPYmplY3QmKSBjb25zdCA9IDA7DQpAQCAtMTUzMCw3ICsxNTMy
LDcgQEAgcHVibGljOg0KIA0KICAgICB2aXJ0dWFsIFN0cmluZyBpbm5lckhUTUwoKSBjb25zdCA9
IDA7DQogICAgIHZpcnR1YWwgU3RyaW5nIG91dGVySFRNTCgpIGNvbnN0ID0gMDsNCi0NCisgICAg
DQogcHJpdmF0ZToNCiAgICAgLy8gRGV0YWNoZXMgdGhpcyBvYmplY3QgZnJvbSB0aGUgb2JqZWN0
cyBpdCByZWZlcmVuY2VzIGFuZCBpdCBpcyByZWZlcmVuY2VkIGJ5Lg0KICAgICB2aXJ0dWFsIHZv
aWQgZGV0YWNoUmVtb3RlUGFydHMoQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlKSA9IDA7DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lv
cy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQ0KaW5kZXggNWUwYzhjOGViYzY3
Li45ODkzNDFhZmMyMTIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQ0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0NCkBAIC01Miw2ICs1Miw3IEBADQogI2ltcG9ydCAiU1ZHRWxlbWVudElubGluZXMuaCINCiAj
aW1wb3J0ICJTVkdOYW1lcy5oIg0KICNpbXBvcnQgIlNlbGVjdGlvbkdlb21ldHJ5LmgiDQorI2lt
cG9ydCAiU2ltcGxlUmFuZ2UuaCINCiAjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCINCiAjaW1wb3J0
ICJXQUtTY3JvbGxWaWV3LmgiDQogI2ltcG9ydCAiV0FLV2luZG93LmgiDQpAQCAtMTY5NCwxMiAr
MTY5NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmlu
ZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQ0KIHsNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFy
ZUFjY2Vzc2liaWxpdHlDYWxsXSkNCiAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOw0KLSAgICAN
Ci0gICAgYXV0byBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOw0K
LSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQ0KLSAgICAgICAgcmV0dXJu
IENHUmVjdFplcm87DQotICAgIGF1dG8gcmVjdCA9IEZsb2F0UmVjdChzbmFwcGVkSW50UmVjdChk
b2N1bWVudC0+dmlldygpLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKSkpOw0KLSAgICByZXR1cm4g
W3NlbGYgY29udmVydFJlY3RUb1NwYWNlOnJlY3Qgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNp
b25TcGFjZTo6U2NyZWVuXTsNCisgICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpz
ZWxmLmF4QmFja2luZ09iamVjdC0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgc3BhY2U6QWNjZXNz
aWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6U2NyZWVuXTsNCiB9DQogDQogLy8gVGhlICJjZW50ZXIg
cG9pbnQiIGlzIHdoZXJlIFZvaWNlT3ZlciB3aWxsICJwcmVzcyIgYW4gb2JqZWN0LiBUaGlzIG1h
eSBub3QgYmUgdGhlIGFjdHVhbA0KQEAgLTE5MTUsNyArMTkxMSw3IEBAIHN0YXRpYyBOU0FycmF5
ICphY2Nlc3NpYmxlRWxlbWVudHNGb3JPYmplY3RzKGNvbnN0IEFYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoDQogICAgICAgICB9KTsNCiAgICAgfQ0KIA0KLSAgICByZXR1cm4gY29udmVydFRv
TlNBcnJheShhY2Nlc3NpYmxlRWxlbWVudHMpOw0KKyAgICByZXR1cm4gbWFrZU5TQXJyYXkoYWNj
ZXNzaWJsZUVsZW1lbnRzKTsNCiB9DQogDQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlEZXRh
aWxzRWxlbWVudHMNCkBAIC0yMTA0LDcgKzIxMDAsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgQWNjZXNzaWJpbGl0eVNlYXJjaENy
aXRlcmlhIGNyaXRlcmlhID0gYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJl
ZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShwYXJhbWV0ZXJzKTsNCiAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdHM7DQogICAgIHNl
bGYuYXhCYWNraW5nT2JqZWN0LT5maW5kTWF0Y2hpbmdPYmplY3RzKCZjcml0ZXJpYSwgcmVzdWx0
cyk7DQotICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHJlc3VsdHMpOw0KKyAgICByZXR1cm4g
bWFrZU5TQXJyYXkocmVzdWx0cyk7DQogfQ0KIA0KIC0gKHZvaWQpYWNjZXNzaWJpbGl0eU1vZGlm
eVNlbGVjdGlvbjooVGV4dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5IGluY3JlYXNlOihCT09MKWlu
Y3JlYXNlDQpAQCAtMjIwOSw0NyArMjIwNSw2IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICByZXR1cm4gcmFuZ2UgPyBbc2VsZiBjb250
ZW50Rm9yU2ltcGxlUmFuZ2U6KnJhbmdlIGF0dHJpYnV0ZWQ6YXR0cmlidXRlZF0gOiBuaWw7DQog
fQ0KIA0KLS8vIEZJWE1FOiBObyByZWFzb24gZm9yIHRoaXMgdG8gYmUgYSBtZXRob2QgaW5zdGVh
ZCBvZiBhIGZ1bmN0aW9uLg0KLS0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNvbnN0IFNp
bXBsZVJhbmdlJilyYW5nZQ0KLXsNCi0gICAgYXV0byYgZG9jdW1lbnQgPSByYW5nZS5zdGFydC5k
b2N1bWVudCgpOw0KLSAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7DQotICAgIGlm
ICghZnJhbWUpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQot
DQotICAgIGF1dG8qIHJvb3RFZGl0YWJsZUVsZW1lbnQgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOw0KLSAgICBhdXRvKiBzY29wZSA9IHJvb3RF
ZGl0YWJsZUVsZW1lbnQgPyByb290RWRpdGFibGVFbGVtZW50IDogZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50KCk7DQotICAgIGlmICghc2NvcGUpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2Uo
TlNOb3RGb3VuZCwgMCk7DQotDQotICAgIC8vIE1vdXNlIGV2ZW50cyBtYXkgY2F1c2UgVFNNIHRv
IGF0dGVtcHQgdG8gY3JlYXRlIGFuIE5TUmFuZ2UgZm9yIGEgcG9ydGlvbiBvZiB0aGUgdmlldw0K
LSAgICAvLyB0aGF0IGlzIG5vdCBpbnNpZGUgdGhlIGN1cnJlbnQgZWRpdGFibGUgcmVnaW9uLiBU
aGVzZSBjaGVja3MgZW5zdXJlIHdlIGRvbid0IHByb2R1Y2UNCi0gICAgLy8gcG90ZW50aWFsbHkg
aW52YWxpZCBkYXRhIHdoZW4gcmVzcG9uZGluZyB0byBzdWNoIHJlcXVlc3RzLg0KLSAgICBpZiAo
IXNjb3BlLT5jb250YWlucyhyYW5nZS5zdGFydC5jb250YWluZXIucHRyKCkpIHx8ICFzY29wZS0+
Y29udGFpbnMocmFuZ2UuZW5kLmNvbnRhaW5lci5wdHIoKSkpDQotICAgICAgICByZXR1cm4gTlNN
YWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIHJldHVybiBOU01ha2VSYW5nZShjaGFy
YWN0ZXJDb3VudCh7IHsgKnNjb3BlLCAwIH0sIHJhbmdlLnN0YXJ0IH0pLCBjaGFyYWN0ZXJDb3Vu
dChyYW5nZSkpOw0KLX0NCi0NCi0tIChzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPilfY29udmVy
dFRvRE9NUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UNCi17DQotICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9
PSBOU05vdEZvdW5kKQ0KLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCi0NCi0gICAgLy8g
b3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB3ZSBhcmUgb25seSBjYWxsZWQgYnkgaW5w
dXQgbWV0aG9kcyB0aGF0DQotICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250
YWluaW5nIHRoZSBzZWxlY3Rpb24NCi0gICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ug
b2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90DQot
ICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMg
cHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBpcw0KLSAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRp
dGFibGUgZWxlbWVudCBvZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJh
c2UuDQotICAgIC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29u
dGV4dC4NCi0gICAgYXV0byBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVu
dCgpOw0KLSAgICBhdXRvIHNlbGVjdGlvblJvb3QgPSBkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOw0KLSAgICBhdXRvIHNjb3Bl
ID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVt
ZW50KCk7DQotICAgIGlmICghc2NvcGUpDQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0K
LQ0KLSAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05v
ZGVDb250ZW50cygqc2NvcGUpLCByYW5nZSk7DQotfQ0KIA0KIC8vIFRoaXMgbWV0aG9kIGlzIGlu
dGVuZGVkIHRvIHRha2UgYSB0ZXh0IG1hcmtlciByZXByZXNlbnRpbmcgYSBWaXNpYmxlUG9zaXRp
b24gYW5kIGNvbnZlcnQgaXQNCiAvLyBpbnRvIGEgbm9ybWFsaXplZCBsb2NhdGlvbiB3aXRoaW4g
dGhlIGRvY3VtZW50Lg0KQEAgLTIyNjcsNyArMjIyMiw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICAgICAgYXV0byByYW5nZSA9IGNh
Y2hlLT5yYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY2hhcmFjdGVyT2Zmc2V0LCBj
aGFyYWN0ZXJPZmZzZXQpOw0KICAgICAgICAgaWYgKCFyYW5nZSkNCiAgICAgICAgICAgICByZXR1
cm4gTlNOb3RGb3VuZDsNCi0gICAgICAgIHJldHVybiBbc2VsZiBfY29udmVydFRvTlNSYW5nZToq
cmFuZ2VdLmxvY2F0aW9uOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU1JhbmdlKHJhbmdlKS5sb2Nh
dGlvbjsNCiAgICAgfQ0KICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCiB9DQpAQCAtMjM0Niw3ICsy
MzAxLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZp
ZXcpDQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQogICAgICAg
ICByZXR1cm4gbmlsOw0KIA0KLSAgICBhdXRvIHJhbmdlID0gW3NlbGYgX2NvbnZlcnRUb0RPTVJh
bmdlOk5TTWFrZVJhbmdlKHBvc2l0aW9uLCAwKV07DQorICAgIGF1dG8gcmFuZ2UgPSBtYWtlRE9N
UmFuZ2Uoc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCksIE5TTWFrZVJhbmdlKHBvc2l0
aW9uLCAwKSk7DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm4gbmlsOw0KIA0KQEAg
LTI0MTQsNyArMjM2OSw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhX
QUtWaWV3KiB2aWV3KQ0KIHsNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlD
YWxsXSkNCiAgICAgICAgIHJldHVybiBuaWw7DQotICAgIGF1dG8gd2ViUmFuZ2UgPSBbc2VsZiBf
Y29udmVydFRvRE9NUmFuZ2U6cmFuZ2VdOw0KKyAgICBhdXRvIHdlYlJhbmdlID0gbWFrZURPTVJh
bmdlKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpLCByYW5nZSk7DQogICAgIGlmICgh
d2ViUmFuZ2UpDQogICAgICAgICByZXR1cm4gbmlsOw0KICAgICByZXR1cm4gc2VsZi5heEJhY2tp
bmdPYmplY3QtPnN0cmluZ0ZvclJhbmdlKCp3ZWJSYW5nZSk7DQpAQCAtMjYwMCw2ICsyNTU1LDE3
IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0K
ICAgICByZXR1cm4gW3NlbGYgcHJldmlvdXNNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6c3RhcnRd
Ow0KIH0NCiANCistIChDR1JlY3QpZnJhbWVGb3JSYW5nZTooTlNSYW5nZSlyYW5nZQ0KK3sNCisg
ICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCisgICAgICAgIHJldHVy
biBDR1JlY3RaZXJvOw0KKyAgICBhdXRvIHdlYlJhbmdlID0gbWFrZURPTVJhbmdlKHNlbGYuYXhC
YWNraW5nT2JqZWN0LT5kb2N1bWVudCgpLCByYW5nZSk7DQorICAgIGlmICghd2ViUmFuZ2UpDQor
ICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCisgICAgYXV0byByZWN0ID0gc2VsZi5heEJhY2tp
bmdPYmplY3QtPmJvdW5kc0ZvclJhbmdlKCp3ZWJSYW5nZSk7DQorICAgIHJldHVybiBbc2VsZiBj
b252ZXJ0UmVjdFRvU3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNl
OjpTY3JlZW5dOw0KK30NCisNCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byByZXR1cm4g
dGhlIGJvdW5kcyBvZiBhIHRleHQgbWFya2VyIHJhbmdlIGluIHNjcmVlbiBjb29yZGluYXRlcy4N
CiAtIChDR1JlY3QpZnJhbWVGb3JUZXh0TWFya2VyczooTlNBcnJheSAqKWFycmF5DQogew0KQEAg
LTI5MzEsNyArMjg5Nyw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhX
QUtWaWV3KiB2aWV3KQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiANCiAgICAgYXV0byByYWRpY2Fu
ZCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5tYXRoUmFkaWNhbmQoKTsNCi0gICAgcmV0dXJuIHJh
ZGljYW5kID8gY29udmVydFRvTlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KKyAgICByZXR1cm4g
cmFkaWNhbmQgPyBtYWtlTlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KIH0NCiANCiAtIChXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqKWFjY2Vzc2liaWxpdHlNYXRoTnVtZXJhdG9yT2Jq
ZWN0DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0KaW5kZXggMTFhNzliMTIxNzJkLi4zNjk1
MmY5NDA4ZmIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCkBAIC05OTIsNiArOTky
LDEzIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkNCiAgICAg
ICAgIHRyZWUtPmFwcGx5UGVuZGluZ0NoYW5nZXMoKTsNCiB9DQogDQorc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gQVhJc29sYXRlZE9iamVjdDo6dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgY29u
c3QNCit7DQorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7DQorICAgIGF1dG8qIGF4T2JqZWN0
ID0gYXNzb2NpYXRlZEFYT2JqZWN0KCk7DQorICAgIHJldHVybiBheE9iamVjdCA/IGF4T2JqZWN0
LT52aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSA6IHN0ZDo6bnVsbG9wdDsNCit9DQorDQogc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJc29sYXRlZE9iamVjdDo6cmFuZ2VGb3JQbGFpblRleHRS
YW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYgYXhSYW5nZSkgY29uc3QNCiB7DQogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7DQpAQCAtMTQ3MCw2ICsxNDc3LDE1IEBAIHZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9z
aXRpb25SYW5nDQogICAgICAgICBvYmplY3QtPnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFu
Z2UodmlzaWJsZVBvc2l0aW9uUmFuZ2UpOw0KIH0NCiANCitGbG9hdFJlY3QgQVhJc29sYXRlZE9i
amVjdDo6dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3QNCit7DQorICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8RmxvYXRSZWN0PihbdGhpc10g
KCkgLT4gRmxvYXRSZWN0IHsNCisgICAgICAgIGlmIChhdXRvKiBvYmplY3QgPSBhc3NvY2lhdGVk
QVhPYmplY3QoKSkNCisgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT51bm9ic2N1cmVkQ29udGVu
dFJlY3QoKTsNCisgICAgICAgIHJldHVybiB7IH07DQorICAgIH0pOw0KK30NCisNCiBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50UmFuZ2UoKSBjb25z
dA0KIHsNCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsNCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmgNCmluZGV4IDNiNGVlYTFmYmI1OC4uYmE2M2RjMjcyMWQyIDEwMDY0NA0KLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oDQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmgNCkBAIC00NDEsOSArNDQxLDExIEBAIHByaXZhdGU6DQogICAgIEFYQ29yZU9iamVj
dCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
IGNvbnN0IG92ZXJyaWRlOw0KICAgICBpbnQgbGluZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBQbGFpblRleHRSYW5nZSBwbGFpblRleHRS
YW5nZUZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikg
Y29uc3Qgb3ZlcnJpZGU7DQorICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHZpc2libGVD
aGFyYWN0ZXJSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBpbnQgaW5kZXgoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7DQogICAgIHZvaWQgbGluZUJyZWFrcyhWZWN0
b3I8aW50PiYpIGNvbnN0IG92ZXJyaWRlOw0KLQ0KKyAgICBGbG9hdFJlY3QgdW5vYnNjdXJlZENv
bnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7DQorICAgIA0KICAgICAvLyBBdHRyaWJ1dGUgc2V0
dGVycy4NCiAgICAgdm9pZCBzZXRBUklBR3JhYmJlZChib29sKSBvdmVycmlkZTsNCiAgICAgdm9p
ZCBzZXRJc0V4cGFuZGVkKGJvb2wpIG92ZXJyaWRlOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlLmgNCmluZGV4IGVlYTNlNjlkZWQ5My4uYWMyYmRiZmUyYWM1IDEwMDY0NA0K
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oDQpAQCAtMzQsNiArMzQsNyBAQA0K
IA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiBzdHJ1Y3QgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhOw0KK2NsYXNzIERvY3VtZW50Ow0KIGNsYXNzIEludFJlY3Q7DQogY2xhc3MgRmxvYXRQb2lu
dDsNCiBjbGFzcyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDsNCkBAIC0xMTEsMTEgKzExMiwx
NSBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlUZXh0dWFsQ29udGV4
dFNvdXJjZUNvZGUgPSBAIlVJQWNjZXNzaWJpbA0KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5
TWF0aFBvc3RzY3JpcHRQYWlyczsNCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQcmVz
Y3JpcHRQYWlyczsNCiANCistIChOU1JhbmdlKWFjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVy
UmFuZ2U7DQorDQogLSAoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWJhc2VBY2Nlc3Np
YmlsaXR5UmVzb2x2ZWRFZGl0aW5nU3R5bGVzOw0KIA0KIGV4dGVybiBXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5U2VhcmNoQ3JpdGVyaWEgYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNo
UHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShjb25zdCBOU0RpY3Rpb25hcnkgKik7DQog
DQotZXh0ZXJuIE5TQXJyYXkgKmNvbnZlcnRUb05TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3Jl
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsNCitleHRlcm4gTlNBcnJheSAq
bWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKTsNCitleHRlcm4gTlNSYW5nZSBtYWtlTlNSYW5nZShzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPik7DQorZXh0ZXJuIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+IG1ha2VET01SYW5nZShXZWJDb3JlOjpEb2N1bWVudCosIE5TUmFuZ2UpOw0K
IA0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQ0KIC0gKGlkKV9hY2Nlc3NpYmlsaXR5V2ViRG9j
dW1lbnRWaWV3Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQ0KaW5k
ZXggMWU1NjkxZDE5ZjkyLi41ZjdhZDI4NjllNzQgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0N
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbQ0KQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgTlNBcnJheSAq
Y29udmVydE1hdGhQYWlyc1RvTlNBcnJheShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nl
c3NpYmlsaQ0KICAgICB9KS5hdXRvcmVsZWFzZSgpOw0KIH0NCiANCi1OU0FycmF5ICpjb252ZXJ0
VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJiBjaGlsZHJlbikNCitOU0FycmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJDb3Jl
OjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pDQog
ew0KICAgICByZXR1cm4gY3JlYXRlTlNBcnJheShjaGlsZHJlbiwgW10gKGNvbnN0IGF1dG8mIGNo
aWxkKSAtPiBpZCB7DQogICAgICAgICBhdXRvIHdyYXBwZXIgPSBjaGlsZC0+d3JhcHBlcigpOw0K
QEAgLTQ2Miw2ICs0NjIsMjcgQEAgc3RhdGljIHZvaWQgY29udmVydFBhdGhUb1NjcmVlblNwYWNl
RnVuY3Rpb24oUGF0aENvbnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBjb24NCiAgICAgcmV0dXJu
IGNvbnZlcnRlZFBhdGguYXV0b3JlbGVhc2UoKTsNCiB9DQogDQorLy8gRGV0ZXJtaW5lIHRoZSB2
aXNpYmxlIHJhbmdlIGJ5IGNoZWNraW5nIGludGVyc2VjdGlvbiBvZiB1bm9ic2N1cmVkQ29udGVu
dFJlY3QgYW5kIGEgcmFuZ2Ugb2YgdGV4dCBieQ0KKy8vIGFkdmFuY2luZyBmb3J3YXJkIGJ5IGxp
bmUgZnJvbSB0b3AgYW5kIGJhY2t3YXJkcyBieSBsaW5lIGZyb20gdGhlIGJvdHRvbSwgdW50aWwg
d2UgaGF2ZSBhIHZpc2libGUgcmFuZ2UuDQorLSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5VmlzaWJs
ZUNoYXJhY3RlclJhbmdlDQorew0KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVW
YWx1ZUZyb21NYWluVGhyZWFkPE5TUmFuZ2U+KFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNl
bGYpXSAoKSAtPiBOU1JhbmdlIHsNCisgICAgICAgIGF1dG8gYmFja2luZ09iamVjdCA9IHByb3Rl
Y3RlZFNlbGYuZ2V0KCkuYmFzZVVwZGF0ZUJhY2tpbmdTdG9yZTsNCisgICAgICAgIGlmICghYmFj
a2luZ09iamVjdCkNCisgICAgICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwg
MCk7DQorDQorICAgICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VOU1JhbmdlKGJhY2tpbmdP
YmplY3QtPmVsZW1lbnRSYW5nZSgpKTsNCisgICAgICAgIGlmIChlbGVtZW50UmFuZ2UubG9jYXRp
b24gPT0gTlNOb3RGb3VuZCkNCisgICAgICAgICAgICByZXR1cm4gZWxlbWVudFJhbmdlOw0KKyAg
ICAgICAgDQorICAgICAgICBhdXRvIHZpc2libGVSYW5nZSA9IG1ha2VOU1JhbmdlKGJhY2tpbmdP
YmplY3QtPnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpKTsNCisgICAgICAgIGlmICh2aXNpYmxlUmFu
Z2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkNCisgICAgICAgICAgICByZXR1cm4gdmlzaWJsZVJh
bmdlOw0KKw0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKHZpc2libGVSYW5nZS5sb2NhdGlv
biAtIGVsZW1lbnRSYW5nZS5sb2NhdGlvbiwgdmlzaWJsZVJhbmdlLmxlbmd0aCk7DQorICAgIH0p
Ow0KK30NCisNCiAtIChpZClfYWNjZXNzaWJpbGl0eVdlYkRvY3VtZW50Vmlldw0KIHsNCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7DQpAQCAtNjIzLDYgKzY0NCw1MCBAQCBzdGF0aWMgdm9pZCBB
WEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0
dHJTdHJpbmcsDQogICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TGFuZ3VhZ2UoYXR0clN0cmluZywg
bm9kZS0+cmVuZGVyZXIoKSwgYXR0clN0cmluZ1JhbmdlKTsNCiB9DQogDQorDQorTlNSYW5nZSBt
YWtlTlNSYW5nZShzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZSkNCit7DQorICAgIGlm
ICghcmFuZ2UpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQor
ICAgIA0KKyAgICBhdXRvJiBkb2N1bWVudCA9IHJhbmdlLT5zdGFydC5kb2N1bWVudCgpOw0KKyAg
ICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7DQorICAgIGlmICghZnJhbWUpDQorICAg
ICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQorDQorICAgIGF1dG8qIHJv
b3RFZGl0YWJsZUVsZW1lbnQgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOw0KKyAgICBhdXRvKiBzY29wZSA9IHJvb3RFZGl0YWJsZUVsZW1lbnQg
PyByb290RWRpdGFibGVFbGVtZW50IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCk7DQorICAg
IGlmICghc2NvcGUpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7
DQorDQorICAgIC8vIE1vdXNlIGV2ZW50cyBtYXkgY2F1c2UgVFNNIHRvIGF0dGVtcHQgdG8gY3Jl
YXRlIGFuIE5TUmFuZ2UgZm9yIGEgcG9ydGlvbiBvZiB0aGUgdmlldw0KKyAgICAvLyB0aGF0IGlz
IG5vdCBpbnNpZGUgdGhlIGN1cnJlbnQgZWRpdGFibGUgcmVnaW9uLiBUaGVzZSBjaGVja3MgZW5z
dXJlIHdlIGRvbid0IHByb2R1Y2UNCisgICAgLy8gcG90ZW50aWFsbHkgaW52YWxpZCBkYXRhIHdo
ZW4gcmVzcG9uZGluZyB0byBzdWNoIHJlcXVlc3RzLg0KKyAgICBpZiAoIXNjb3BlLT5jb250YWlu
cyhyYW5nZS0+c3RhcnQuY29udGFpbmVyLnB0cigpKSB8fCAhc2NvcGUtPmNvbnRhaW5zKHJhbmdl
LT5lbmQuY29udGFpbmVyLnB0cigpKSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05v
dEZvdW5kLCAwKTsNCisNCisgICAgcmV0dXJuIE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KHsg
eyAqc2NvcGUsIDAgfSwgcmFuZ2UtPnN0YXJ0IH0pLCBjaGFyYWN0ZXJDb3VudCgqcmFuZ2UpKTsN
Cit9DQorDQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFrZURPTVJhbmdlKERvY3VtZW50
KiBkb2N1bWVudCwgTlNSYW5nZSByYW5nZSkNCit7DQorICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9
PSBOU05vdEZvdW5kKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgLy8g
b3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB3ZSBhcmUgb25seSBjYWxsZWQgYnkgaW5w
dXQgbWV0aG9kcyB0aGF0DQorICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250
YWluaW5nIHRoZSBzZWxlY3Rpb24NCisgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ug
b2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90DQor
ICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMg
cHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBpcw0KKyAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRp
dGFibGUgZWxlbWVudCBvZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJh
c2UuDQorICAgIC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29u
dGV4dC4NCisgICAgYXV0byBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCisgICAgYXV0byBzY29w
ZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxl
bWVudCgpOw0KKyAgICBpZiAoIXNjb3BlKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsN
CisNCisgICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMoKnNjb3BlKSwgcmFuZ2UpOw0KK30NCisNCiAvLyBSZXR1cm5zIGFuIGFycmF5
IG9mIHN0cmluZ3MgYW5kIEFYT2JqZWN0IHdyYXBwZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRl
eHQNCiAvLyBydW5zIGFuZCByZXBsYWNlbWVudCBub2RlcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4g
cmFuZ2UuDQogLSAoTlNBcnJheSAqKWNvbnRlbnRGb3JTaW1wbGVSYW5nZTooY29uc3QgU2ltcGxl
UmFuZ2UmKXJhbmdlIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmlidXRlZA0KQEAgLTY3NiwxOCArNzQx
LDI2IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywNCiAgICAgcmV0dXJuIGFycmF5LmF1dG9yZWxl
YXNlKCk7DQogfQ0KIA0KLS0gKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopbGluZVJlY3RzQW5k
VGV4dA0KKy0gKFdlYkNvcmU6OkFYQ29yZU9iamVjdCopYmFzZVVwZGF0ZUJhY2tpbmdTdG9yZQ0K
IHsNCiAjaWYgUExBVEZPUk0oTUFDKQ0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi51
cGRhdGVPYmplY3RCYWNraW5nU3RvcmU7DQogICAgIGlmICghYmFja2luZ09iamVjdCkNCi0gICAg
ICAgIHJldHVybiBuaWw7DQorICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAjZWxzZQ0KICAgICBp
ZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KLSAgICAgICAgcmV0dXJuIG5p
bDsNCisgICAgICAgIHJldHVybiBudWxscHRyOw0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0g
c2VsZi5heEJhY2tpbmdPYmplY3Q7DQogI2VuZGlmDQorICAgIHJldHVybiBiYWNraW5nT2JqZWN0
Ow0KK30NCiANCistIChOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKWxpbmVSZWN0c0FuZFRleHQN
Cit7DQorICAgIGF1dG8gYmFja2luZ09iamVjdCA9IHNlbGYuYmFzZVVwZGF0ZUJhY2tpbmdTdG9y
ZTsNCisgICAgaWYgKCFiYWNraW5nT2JqZWN0KQ0KKyAgICAgICAgcmV0dXJuIG5pbDsNCisgICAg
DQogICAgIGF1dG8gcmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5lbGVtZW50UmFuZ2UoKTsNCiAgICAg
aWYgKCFyYW5nZSkNCiAgICAgICAgIHJldHVybiBuaWw7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQ0KaW5kZXggNzAwNGM0NmI2NDM5Li5kNjk0MWY4MmYxMjIgMTAwNjQ0
DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQ0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCkBAIC0xNzk1LDcgKzE3OTUs
NyBAQCBzdGF0aWMgdm9pZCBXZWJUcmFuc2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkKiBp
bmZvLCBjb25zdCBDR1BhdGhFbGVtZW50ICplbA0KIA0KIC0gKE5TQXJyYXk8V2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgKj4gKiljaGlsZHJlblZlY3RvckFycmF5DQogew0KLSAgICByZXR1
cm4gY29udmVydFRvTlNBcnJheShzZWxmLmF4QmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7DQor
ICAgIHJldHVybiBtYWtlTlNBcnJheShzZWxmLmF4QmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7
DQogfQ0KIA0KIC0gKE5TVmFsdWUgKilwb3NpdGlvbg0KQEAgLTIyMDMsNyArMjIwMyw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKGJhY2tpbmdP
YmplY3QtPmlzVHJlZUl0ZW0oKSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250ZW50Q29weTsNCiAgICAgICAgICAgICBi
YWNraW5nT2JqZWN0LT5hcmlhVHJlZUl0ZW1Db250ZW50KGNvbnRlbnRDb3B5KTsNCi0gICAgICAg
ICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShjb250ZW50Q29weSk7DQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VOU0FycmF5KGNvbnRlbnRDb3B5KTsNCiAgICAgICAgIH0NCiANCiAgICAgICAg
IHJldHVybiBzZWxmLmNoaWxkcmVuVmVjdG9yQXJyYXk7DQpAQCAtMjIxMyw3ICsyMjEzLDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoYmFja2lu
Z09iamVjdC0+Y2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4oKSkgew0KICAgICAgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxk
cmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNl
bGVjdGVkQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5
KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCiAgICAgICAgIH0NCiAgICAgICAgIHJldHVybiBuaWw7
DQogICAgIH0NCkBAIC0yMjIyLDcgKzIyMjIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0xpc3RCb3goKSkgew0K
ICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciB2aXNpYmxlQ2hpbGRyZW5Db3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnZp
c2libGVDaGlsZHJlbih2aXNpYmxlQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1cm4g
Y29udmVydFRvTlNBcnJheSh2aXNpYmxlQ2hpbGRyZW5Db3B5KTsNCisgICAgICAgICAgICByZXR1
cm4gbWFrZU5TQXJyYXkodmlzaWJsZUNoaWxkcmVuQ29weSk7DQogICAgICAgICB9DQogDQogICAg
ICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNMaXN0KCkpDQpAQCAtMjIzNCw3ICsyMjM0LDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogDQogICAgIGlmIChiYWNraW5n
T2JqZWN0LT5pc1dlYkFyZWEoKSkgew0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpAIkFYTGlua1VJRWxlbWVudHMiXSkNCi0gICAgICAgICAgICByZXR1cm4gY29u
dmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5kb2N1bWVudExpbmtzKCkpOw0KKyAgICAgICAg
ICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5kb2N1bWVudExpbmtzKCkpOw0K
IA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYTG9hZGVk
Il0pDQogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpiYWNraW5n
T2JqZWN0LT5pc0xvYWRlZCgpXTsNCkBAIC0yMjY3LDE2ICsyMjY3LDIxIEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHRl
eHRSYW5nZSA9IGJhY2tpbmdPYmplY3QtPnNlbGVjdGVkVGV4dFJhbmdlKCk7DQogICAgICAgICAg
ICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHRleHRSYW5nZS5z
dGFydCwgdGV4dFJhbmdlLmxlbmd0aCldOw0KICAgICAgICAgfQ0KLSAgICAgICAgLy8gVE9ETzog
R2V0IGFjdHVhbCB2aXNpYmxlIHJhbmdlLiA8cmRhcjovL3Byb2JsZW0vNDcxMjEwMT4NCi0gICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZp
c2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGJhY2tp
bmdPYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpID8gbmlsIDogW05TVmFsdWUgdmFsdWVXaXRoUmFu
Z2U6IE5TTWFrZVJhbmdlKDAsIGJhY2tpbmdPYmplY3QtPnRleHRMZW5ndGgoKSldOw0KLQ0KICAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJ
bnNlcnRpb25Qb2ludExpbmVOdW1iZXJBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgaW50IGxp
bmVOdW1iZXIgPSBiYWNraW5nT2JqZWN0LT5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXIoKTsNCiAg
ICAgICAgICAgICByZXR1cm4gbGluZU51bWJlciA+PSAwID8gQChsaW5lTnVtYmVyKSA6IG5pbDsN
CiAgICAgICAgIH0NCiAgICAgfQ0KIA0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKSB7
DQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkpDQorICAgICAg
ICAgICAgcmV0dXJuIG5pbDsNCisgICAgICAgIC8vIFRPRE86IEdldCBhY3R1YWwgdmlzaWJsZSBy
YW5nZS4gPHJkYXI6Ly9wcm9ibGVtLzQ3MTIxMDE+DQorICAgICAgICBpZiAoYmFja2luZ09iamVj
dC0+aXNUZXh0Q29udHJvbCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdp
dGhSYW5nZTpOU01ha2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0LT50ZXh0TGVuZ3RoKCkpXTsNCisg
ICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpbc2VsZiBhY2Nlc3NpYmlsaXR5
VmlzaWJsZUNoYXJhY3RlclJhbmdlXV07DQorICAgIH0NCisNCiAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXSkgew0KICAg
ICAgICAgVVJMIHVybCA9IGJhY2tpbmdPYmplY3QtPnVybCgpOw0KICAgICAgICAgaWYgKHVybC5p
c051bGwoKSkNCkBAIC0yMzgwLDcgKzIzODUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQNCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlJbWFnZU92ZXJsYXlFbGVtZW50c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAg
IGF1dG8gaW1hZ2VPdmVybGF5RWxlbWVudHMgPSBiYWNraW5nT2JqZWN0LT5pbWFnZU92ZXJsYXlF
bGVtZW50cygpOw0KLSAgICAgICAgcmV0dXJuIGltYWdlT3ZlcmxheUVsZW1lbnRzID8gY29udmVy
dFRvTlNBcnJheSgqaW1hZ2VPdmVybGF5RWxlbWVudHMpIDogbmlsOw0KKyAgICAgICAgcmV0dXJu
IGltYWdlT3ZlcmxheUVsZW1lbnRzID8gbWFrZU5TQXJyYXkoKmltYWdlT3ZlcmxheUVsZW1lbnRz
KSA6IG5pbDsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbkF0dHJpYnV0ZV0pDQpA
QCAtMjQwNCwyOSArMjQwOSwyOSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQNCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYkxpc3QoKSkgew0KICAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB0YWJz
Q2hpbGRyZW47DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+dGFiQ2hpbGRyZW4odGFic0No
aWxkcmVuKTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheSh0YWJzQ2hpbGRy
ZW4pOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheSh0YWJzQ2hpbGRyZW4pOw0KICAg
ICAgICAgfQ0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y29udGVudHMoKSk7DQorICAgICAgICByZXR1
cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29udGVudHMoKSk7DQogDQogICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc1RhYmxlKCkgJiYgYmFja2luZ09iamVjdC0+aXNFeHBvc2FibGUoKSkg
ew0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlSb3dzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eShiYWNraW5nT2JqZWN0LT5yb3dzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJh
eShiYWNraW5nT2JqZWN0LT5yb3dzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pDQot
ICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+dmlzaWJs
ZVJvd3MoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3Qt
PnZpc2libGVSb3dzKCkpOw0KIA0KICAgICAgICAgLy8gVE9ETzogZGlzdGluZ3Vpc2ggYmV0d2Vl
biB2aXNpYmxlIGFuZCBub24tdmlzaWJsZSBjb2x1bW5zDQogICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdDQog
ICAgICAgICAgICAgfHwgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eVZpc2libGVDb2x1bW5zQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVy
dFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5zKCkpOw0KKyAgICAgICAgICAgIHJldHVy
biBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5zKCkpOw0KIA0KICAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJv
d3NBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW5Db3B5Ow0KICAgICAgICAgICAg
IGJhY2tpbmdPYmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0K
LSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5
KTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkp
Ow0KICAgICAgICAgfQ0KIA0KICAgICAgICAgLy8gSFRNTCB0YWJsZXMgZG9uJ3Qgc3VwcG9ydCB0
aGVzZSBhdHRyaWJ1dGVzLg0KQEAgLTI0MzUsNyArMjQ0MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIHJldHVybiBuaWw7DQogDQogICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVt
bkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0
VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQogDQog
ICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eUhlYWRlckF0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBhdXRvKiBoZWFkZXJDb250YWluZXIg
PSBiYWNraW5nT2JqZWN0LT5oZWFkZXJDb250YWluZXIoKTsNCkBAIC0yNDQzLDEwICsyNDQ4LDEw
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgfQ0KIA0K
ICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29u
dmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KKyAgICAgICAgICAg
IHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KIA0KICAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlW
aXNpYmxlQ2VsbHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KGJhY2tpbmdPYmplY3QtPmNlbGxzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNB
cnJheShiYWNraW5nT2JqZWN0LT5jZWxscygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uQ291bnRBdHRyaWJ1dGVd
KQ0KICAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmNvbHVtbkNvdW50KCkpOw0K
QEAgLTI0NjgsNyArMjQ3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RA0KICAgICAgICAgLy8gcm93cyBhdHRyaWJ1dGUgZm9yIGEgY29sdW1uIGlzIHRoZSBsaXN0IG9m
IGFsbCB0aGUgZWxlbWVudHMgaW4gdGhhdCBjb2x1bW4gYXQgZWFjaCByb3cNCiAgICAgICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJp
YnV0ZV0NCiAgICAgICAgICAgICB8fCBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KKyAgICAgICAgICAg
IHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpKTsNCiANCiAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SGVh
ZGVyQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIGF1dG8qIGhlYWRlciA9IGJhY2tpbmdPYmpl
Y3QtPmNvbHVtbkhlYWRlcigpOw0KQEAgLTI0ODgsMTAgKzI0OTMsMTAgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICB9DQogDQogICAgICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkhlYWRlclVJ
RWxlbWVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5
KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1h
a2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQogDQogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd0hlYWRl
clVJRWxlbWVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1h
a2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7DQogDQogICAgICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFSSUFDb2x1bW5J
bmRleEF0dHJpYnV0ZV0pDQogICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+YXhD
b2x1bW5JbmRleCgpKTsNCkBAIC0yNTA0LDEyICsyNTA5LDEyIEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdKSB7DQogICAgICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNl
bGVjdGVkQ2hpbGRyZW5Db3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnNlbGVjdGVk
Q2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KLSAgICAgICAgICAgIHJldHVybiBjb252
ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCisgICAgICAgICAgICByZXR1cm4g
bWFrZU5TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KICAgICAgICAgfQ0KICAgICAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0
cmlidXRlXSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciByb3dzQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5h
cmlhVHJlZVJvd3Mocm93c0NvcHkpOw0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KHJvd3NDb3B5KTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkocm93c0NvcHkp
Ow0KICAgICAgICAgfQ0KIA0KICAgICAgICAgLy8gVHJlZVJvbGVzIGRvIG5vdCBzdXBwb3J0IGNv
bHVtbnMsIGJ1dCBNYWMgQVggZXhwZWN0cyB0byBiZSBhYmxlIHRvIGFzayBhYm91dCBjb2x1bW5z
IGF0IHRoZSBsZWFzdC4NCkBAIC0yNTQ0LDcgKzI1NDksNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQNCiAgICAgLy8gVGhlIHJvd3MgdGhhdCBhcmUgY29uc2lkZXJlZCBp
bnNpZGUgdGhpcyByb3cuDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkgfHwgYmFja2luZ09iamVjdC0+aXNBUklBVHJlZUdy
aWRSb3coKSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2Jq
ZWN0LT5kaXNjbG9zZWRSb3dzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShi
YWNraW5nT2JqZWN0LT5kaXNjbG9zZWRSb3dzKCkpOw0KICAgICB9DQogDQogICAgIC8vIFRoZSBy
b3cgdGhhdCBjb250YWlucyB0aGlzIHJvdy4gSXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBm
aXJzdCBwYXJlbnQgdGhhdCBpcyBhIHRyZWVpdGVtLg0KQEAgLTI2MTIsNyArMjYxNyw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmli
dXRlXSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGxpbmtlZFVJRWxlbWVudHM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5saW5r
ZWRVSUVsZW1lbnRzKGxpbmtlZFVJRWxlbWVudHMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkobGlua2VkVUlFbGVtZW50cyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
bGlua2VkVUlFbGVtZW50cyk7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1dGVdKQ0KQEAgLTI2
ODUsNyArMjY5MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU93bnNB
dHRyaWJ1dGVdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhT3du
c0VsZW1lbnRzKGFyaWFPd25zKTsNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGFy
aWFPd25zKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShhcmlhT3ducyk7DQogICAgIH0N
CiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlBUklBUG9zSW5TZXRBdHRyaWJ1dGVdKQ0KQEAgLTI3NTEsNyArMjc1Niw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoUm9vdFJhZGljYW5kQXR0cmli
dXRlXSkgew0KICAgICAgICAgICAgIGF1dG8gcmFkaWNhbmQgPSBiYWNraW5nT2JqZWN0LT5tYXRo
UmFkaWNhbmQoKTsNCi0gICAgICAgICAgICByZXR1cm4gcmFkaWNhbmQgPyBjb252ZXJ0VG9OU0Fy
cmF5KCpyYWRpY2FuZCkgOiBuaWw7DQorICAgICAgICAgICAgcmV0dXJuIHJhZGljYW5kID8gbWFr
ZU5TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aEZyYWN0aW9u
TnVtZXJhdG9yQXR0cmlidXRlXSkNCkBAIC0yODQ1LDcgKzI4NTAsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpAIkFYRGV0YWlsc0VsZW1lbnRzIl0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXRhaWxzOw0KICAgICAgICAgYmFj
a2luZ09iamVjdC0+YXJpYURldGFpbHNFbGVtZW50cyhkZXRhaWxzKTsNCi0gICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KGRldGFpbHMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5
KGRldGFpbHMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5QnJhaWxsZUxhYmVsQXR0cmlidXRlXSkNCkBAIC0yODYwLDcg
KzI4NjUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYRXJyb3JNZXNzYWdlRWxlbWVudHMi
XSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIGVycm9yTWVzc2FnZXM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhRXJyb3JN
ZXNzYWdlRWxlbWVudHMoZXJyb3JNZXNzYWdlcyk7DQotICAgICAgICByZXR1cm4gY29udmVydFRv
TlNBcnJheShlcnJvck1lc3NhZ2VzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShlcnJv
ck1lc3NhZ2VzKTsNCiAgICAgfQ0KIA0KICAgICAvLyBNdWx0aS1zZWxlY3RhYmxlDQpAQCAtMjg3
OCw3ICsyODgzLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QXJpYUNv
bnRyb2xzQXR0cmlidXRlXSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFDb250cm9sczsNCiAgICAgICAgIGJhY2tpbmdPYmpl
Y3QtPmFyaWFDb250cm9sc0VsZW1lbnRzKGFyaWFDb250cm9scyk7DQotICAgICAgICByZXR1cm4g
Y29udmVydFRvTlNBcnJheShhcmlhQ29udHJvbHMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGFyaWFDb250cm9scyk7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlGb2N1c2FibGVBbmNlc3RvckF0dHJpYnV0ZV0p
IHsNCkBAIC0zNDI4LDIyICszNDMzLDYgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5EDQogICAgIH0pOw0KIH0NCiANCi0vLyBGSVhNRTogTm8gcmVhc29uIGZvciB0aGlzIHRv
IGJlIGEgbWV0aG9kIGluc3RlYWQgb2YgYSBmdW5jdGlvbjsgY2FuIGdldCBkb2N1bWVudCBmcm9t
IHJhbmdlLg0KLS0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNvbnN0IFNpbXBsZVJhbmdl
JilyYW5nZQ0KLXsNCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsNCi0gICAgDQotICAgIGF1
dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCi0gICAgaWYg
KCFkb2N1bWVudCkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsN
Ci0NCi0gICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50
KCk7DQotICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJh
bmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICByZXR1cm4gY2hhcmFjdGVyUmFuZ2UobWFrZUJv
dW5kYXJ5UG9pbnRCZWZvcmVOb2RlQ29udGVudHMoKmRvY3VtZW50RWxlbWVudCksIHJhbmdlKTsN
Ci19DQotDQogLSAoTlNJbnRlZ2VyKV9pbmRleEZvclRleHRNYXJrZXI6KEFYVGV4dE1hcmtlclJl
ZiltYXJrZXINCiB7DQogICAgIGlmICghbWFya2VyKQ0KQEAgLTM0NjAsNyArMzQ0OSw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIGlmICghcmFu
Z2UpDQogICAgICAgICAgICAgICAgIHJldHVybiBOU05vdEZvdW5kOw0KIA0KLSAgICAgICAgICAg
IHJldHVybiBbcHJvdGVjdGVkU2VsZiBfY29udmVydFRvTlNSYW5nZToqcmFuZ2VdLmxvY2F0aW9u
Ow0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNSYW5nZShyYW5nZSkubG9jYXRpb247DQogICAg
ICAgICB9DQogDQogICAgICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCkBAIC0zODM1LDggKzM4MjQs
OCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOw0KICAg
ICAgICAgYmFja2luZ09iamVjdC0+ZmluZE1hdGNoaW5nT2JqZWN0cygmY3JpdGVyaWEsIHJlc3Vs
dHMpOw0KICAgICAgICAgaWYgKHdpZGdldENoaWxkcmVuKQ0KLSAgICAgICAgICAgIHJldHVybiBb
d2lkZ2V0Q2hpbGRyZW4gYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6Y29udmVydFRvTlNB
cnJheShyZXN1bHRzKV07DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShyZXN1bHRz
KTsNCisgICAgICAgICAgICByZXR1cm4gW3dpZGdldENoaWxkcmVuIGFycmF5QnlBZGRpbmdPYmpl
Y3RzRnJvbUFycmF5Om1ha2VOU0FycmF5KHJlc3VsdHMpXTsNCisgICAgICAgIHJldHVybiBtYWtl
TlNBcnJheShyZXN1bHRzKTsNCiAgICAgfQ0KIA0KICAgICAvLyBUZXh0TWFya2VyIGF0dHJpYnV0
ZXMuDQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9p
b3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0NCmluZGV4IGRk
NGViMDk2ZmVlOS4uYmE0NzRmOTZjMGI2IDEwMDY0NA0KLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQ0KKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudElPUy5tbQ0KQEAgLTEwOCw2ICsxMDgsNyBAQCB0eXBlZGVmIHZvaWQgKCpBWFBv
c3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0
aW9uLA0KIC0gKGlkKV9hY2Nlc3NpYmlsaXR5TGlzdEFuY2VzdG9yOw0KIC0gKGlkKV9hY2Nlc3Np
YmlsaXR5UGhvdG9EZXNjcmlwdGlvbjsNCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUltYWdl
T3ZlcmxheUVsZW1lbnRzOw0KKy0gKE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0
ZXJSYW5nZTsNCiANCiAvLyBUZXh0TWFya2VyIHJlbGF0ZWQNCiAtIChOU0FycmF5ICopdGV4dE1h
cmtlclJhbmdlOw0KQEAgLTM5NCw2ICszOTUsOSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcygpDQogDQogSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Rlc2NyaXB0aW9uT2ZB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpDQogew0KKyAgICBpZiAoSlNTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhhdHRyaWJ1dGUsICJBWFZpc2libGVDaGFyYWN0ZXJSYW5n
ZSIpKQ0KKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZ0Zyb21SYW5nZShbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VdKSBjcmVhdGVKU1N0cmluZ1JlZl07DQorDQog
ICAgIHJldHVybiBjcmVhdGVKU1N0cmluZygpOw0KIH0NCiANCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444886</attachid>
            <date>2021-11-19 23:59:01 -0800</date>
            <delta_ts>2021-11-20 00:00:09 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>51009</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZDIwNDhjNGZhMmY2Li44OGQxOGVlY2E1ZjMgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
NiBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUt
Y2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuDQorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbDogQWRkZWQuDQorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOg0KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnM6DQorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zOg0KKw0KIDIwMjEtMTEtMTkgIEtpZXQgSG8gIDx0aG8yMkBhcHBsZS5jb20+DQogDQogICAg
ICAgICBJbnRlZ3JhdGUgbW90aW9uIHBhdGggdHJhbnNmb3JtcyBpbiB0cmFuc2Zvcm1hdGlvbiBw
aXBlbGluZQ0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1j
aGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92
aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
DQppbmRleCAwMDAwMDAwMDAwMDAuLmNkYmI4YzQyMmRhNw0KLS0tIC9kZXYvbnVsbA0KKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3Rl
ZC50eHQNCkBAIC0wLDAgKzEsMTIgQEANCitUaGlzIHRlc3RzIHRoYXQgdmlzaWJsZUNoYXJhY3Rl
clJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSByYW5nZXMgd2hpbGUgbW9kaWZ5aW5nIG9i
c2N1cmVkIGNvbnRlbnQuDQorDQorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLg0KKw0KKw0KK1Zp
c2libGUgcmFuZ2U6IE5TUmFuZ2U6IHswLCA0MjA1fQ0KK1Zpc2libGUgcmFuZ2UgKDUwMCwgMjAw
KTogTlNSYW5nZTogezAsIDM2MH0NCitWaXNpYmxlIHJhbmdlLCBvZmZzZXQ6IDIwMCAoMjAwLCA1
MDApOiBOU1JhbmdlOiB7MCwgNjkwfQ0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUN
CisNCitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K
aW5kZXggMDAwMDAwMDAwMDAwLi4zOWQzMmRiZDIwMzMNCi0tLSAvZGV2L251bGwNCisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0KQEAg
LTAsMCArMSw3MyBAQA0KKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4NCis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keSBpZD0iYm9keSI+DQorDQorPGRpdiBp
ZD0iZ3JvdXAiPg0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QN
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0K
K3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQor
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQorPC9kaXY+DQorDQorPHNjcmlwdD4NCisNCisgICAgZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdHMgdGhhdCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgcmV0dXJucyBleHBl
Y3RlZCB2aXNpYmxlIHJhbmdlcyB3aGlsZSBtb2RpZnlpbmcgb2JzY3VyZWQgY29udGVudC4iKTsN
CisNCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgew0KKyAgICAgICAg
dmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
Imdyb3VwIikuY2hpbGRBdEluZGV4KDApOw0KKyAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2U6
ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hh
cmFjdGVyUmFuZ2UiKSk7DQorDQorICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdTaXplKDUwMCwg
MjAwKTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxlIHJhbmdlICg1MDAsIDIwMCk6ICIgKyB0ZXh0
LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFu
Z2UiKSk7DQorDQorICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDIwMDsNCisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0Vmlld1NpemUoMjAwLCA1MDApOw0KKyAgICAgICAgZGVidWcoIlZp
c2libGUgcmFuZ2UsIG9mZnNldDogMjAwICgyMDAsIDUwMCk6ICIgKyB0ZXh0LnN0cmluZ0Rlc2Ny
aXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAiKS5zdHlsZS52aXNpYmlsaXR5
ID0gImhpZGRlbiI7DQorICAgIH0NCisNCis8L3NjcmlwdD4NCisNCis8L2JvZHk+DQorPC9odG1s
Pg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMNCmluZGV4IGE0MmM3
MjlmMDdmZi4uYTRiMTA0ZTA1N2JlIDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zL1Rlc3RFeHBlY3RhdGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0
RXhwZWN0YXRpb25zDQpAQCAtMjExOCw3ICsyMTE4LDcgQEAgd2Via2l0Lm9yZy9iLzE0ODgwNiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wt
c3ANCiBmYXN0L2RvbS9saW5raWZ5LXBob25lLW51bWJlcnMuaHRtbCBbIFBhc3MgXQ0KIA0KIGFj
Y2Vzc2liaWxpdHkvdmlkZW8tZWxlbWVudC11cmwtYXR0cmlidXRlLmh0bWwgWyBQYXNzIF0NCi0N
CithY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBQYXNzIF0NCiBh
Y2Nlc3NpYmlsaXR5L2FuY2VzdG9yLWNvbXB1dGF0aW9uLmh0bWwgWyBQYXNzIF0NCiANCiAjIEVu
YWJsZSAiYXJpYS1jdXJyZW50IiB0ZXN0cyBmb3IgaU9TLg0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucw0KaW5kZXggOWEwNzQ1ODc5MzU0Li45ZDg2NWVi
MDVlNGUgMTAwNjQ0DQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0
aW9ucw0KQEAgLTYwMSw2ICs2MDEsMTEgQEAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1pbnNl
cnQtaHRtbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0NCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hl
Y2stYXN5bmMuaHRtbCBbIEZhaWx1cmUgXQ0KIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdW5p
ZmllZC1lbXVsYXRpb24uaHRtbCBbIEZhaWx1cmUgXQ0KIA0KKyMgU2tpcCBkdWUgdG8gbGFjayBv
ZiBEdW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9tSWRlbnRpZmVyYCBp
bXBsZW1lbnRhdGlvbi4NCithY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZvci1h
ZGhvYy1yYWRpby1ncm91cHMuaHRtbCBbIFNraXAgXQ0KKyMgU2tpcCBkdWUgdG8gbGFjayBvZiBE
dW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRGVzY3JpcHRpb25P
ZkF0dHJpYnV0ZVZhbHVlYCBpbXBsZW1lbnRhdGlvbi4NCithY2Nlc3NpYmlsaXR5L21hYy92aXNp
YmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIFsgU2tpcCBdDQorDQogIyA8cmRhcjovL3Byb2JsZW0v
MjYwNTA5MjM+IFRoZSByZXN1bHQgaXMgcHJvYmFibHkgc3RpbGwgYSBwYXNzLCBidXQgd2UgZG9u
J3QgaGF2ZSBhIHdheQ0KICMgdG8gaGF2ZSBwbGF0Zm9ybSBzcGVjaWZpYyByZXN1bHRzIHRoYXQg
YXJlIGRpZmZlcmVudCBiZXR3ZWVuIFdLMSBhbmQgV0syLg0KIGFjY2Vzc2liaWxpdHkvbWFjL2Rv
Y3VtZW50LWF0dHJpYnV0ZXMuaHRtbCBbIEZhaWx1cmUgXQ0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1Rlc3RFeHBlY3RhdGlvbnMNCmluZGV4IGE3MWU0MzBlYjhlOS4uMGZiOWMzOTkxMTBiIDEw
MDY0NA0KLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMNCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zDQpAQCAtMjc4LDYg
KzI3OCw3IEBAIGFjY2Vzc2liaWxpdHkvYXJpYS1saXN0Ym94LWNsZWFyLXNlbGVjdGlvbi1jcmFz
aC5odG1sIFsgU2tpcCBdDQogYWNjZXNzaWJpbGl0eS9saXN0Ym94LWNsZWFyLXNlbGVjdGlvbi5o
dG1sIFsgU2tpcCBdDQogYWNjZXNzaWJpbGl0eS9lbWJlZGRlZC1pbWFnZS1kZXNjcmlwdGlvbi5o
dG1sIFsgU2tpcCBdDQogYWNjZXNzaWJpbGl0eS9pbWctbm8tYWx0LW5vdC1pZ25vcmVkLXdpdGgt
dGl0bGUuaHRtbCBbIFNraXAgXQ0KK2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFu
Z2UuaHRtbCBbIFNraXAgXQ0KIA0KICMgTmVlZCB0byBpbXBsZW1lbnQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSwgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aGFzV2ViQXBwbGljYXRpb25BbmNlc3RvcigpLA0KICMgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNJbkRlc2NyaXB0aW9uTGlzdERldGFpbCgpLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0luRGVzY3JpcHRpb25MaXN0VGVybSgpLCBhbmQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCmluZGV4IDhiZWE0ZjZmZmQ1
NS4uYjZjMGY3MDBjM2U3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsNTEgQEANCisyMDIxLTEx
LTE5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQorDQorICAgICAgICBB
WDogV2ViS2l0OiBuZWVkIGEgbWV0aG9kIHRvIGdldCB2aXNpYmxlIHRleHQgYW5kIGZyYW1lIG9m
IGFuIGVsZW1lbnQgb24gc2NyZWVuDQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzMzM2DQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4NCisNCisgICAgICAgIEltcGxlbWVudCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgZm9yIHN0
YXRpYyB0ZXh0IGVsZW1lbnRzIHNvIHRoYXQgQm9va3MgY2FuIGRldGVybWluZSB0aGUgdmlzaWJs
ZQ0KKyAgICAgICAgY29udGVudCBvbiBhIHBhZ2UuDQorDQorICAgICAgICBUZXN0OiBhY2Nlc3Np
YmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwNCisNCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgY29uc3QpOg0KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnVub2JzY3VyZWRDb250ZW50UmVjdCBjb25z
dCk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOg0KKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoNCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW06DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3Np
YmlsaXR5VmlzaWJsZUNvbnRlbnRSZWN0XSk6DQorICAgICAgICAoYWNjZXNzaWJsZUVsZW1lbnRz
Rm9yT2JqZWN0cyk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5RmluZE1hdGNoaW5nT2JqZWN0czpdKToNCisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIHBvc2l0aW9uRm9yVGV4dE1hcmtlcjpdKToNCisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJGb3JQb3NpdGlvbjpd
KToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHN0cmluZ0ZvclJh
bmdlOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZnJhbWVG
b3JSYW5nZTpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlNYXRoUmFkaWNhbmRdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIF9jb252ZXJ0VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb0RPTVJhbmdlOl0pOiBEZWxl
dGVkLg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp2aXNpYmxlQ2hh
cmFjdGVyUmFuZ2UgY29uc3QpOg0KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnVub2JzY3VyZWRDb250ZW50UmVjdCBjb25zdCk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmg6DQorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToNCisg
ICAgICAgIChtYWtlTlNBcnJheSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckJhc2UgYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZV0pOg0KKyAgICAg
ICAgKG1ha2VOU1JhbmdlKToNCisgICAgICAgIChtYWtlRE9NUmFuZ2UpOg0KKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGJhc2VVcGRhdGVCYWNraW5nU3RvcmVd
KToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBsaW5lUmVj
dHNBbmRUZXh0XSk6DQorICAgICAgICAoY29udmVydFRvTlNBcnJheSk6IERlbGV0ZWQuDQorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2hpbGRyZW5W
ZWN0b3JBcnJheV0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgX2luZGV4Rm9yVGV4dE1hcmtlcjpdKToNCisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpm
b3JQYXJhbWV0ZXI6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBfY29udmVydFRvTlNSYW5nZTpdKTogRGVsZXRlZC4NCisNCiAyMDIxLTExLTE5ICBLaWV0IEhv
ICA8dGhvMjJAYXBwbGUuY29tPg0KIA0KICAgICAgICAgSW1wbGVtZW50IHBhcnNpbmcgYW5kIGFu
aW1hdGlvbiBzdXBwb3J0IGZvciByYXkoKSBzaGFwZSBhY2NlcHRlZCBieSBvZmZzZXQtcGF0aA0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwDQppbmRleCA5Mzg0OGUxY2FiNzYuLjY3NDZmNmNiYjQ4ZiAxMDA2NDQNCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHANCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHANCkBA
IC03MDQsNiArNzA0LDUyIEBAIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmVsZW1lbnRSYW5nZSgpIGNvbnN0DQogICAgIHJldHVybiBBWE9iamVjdENhY2hl
OjpyYW5nZUZvck5vZGVDb250ZW50cygqbm9kZSk7DQogfQ0KIA0KK3N0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNv
bnN0DQorew0KKyAgICBhdXRvIHJhbmdlID0gZWxlbWVudFJhbmdlKCk7DQorICAgIGlmICghcmFu
Z2UpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KKw0KKyAgICBhdXRvIGNvbnRlbnRS
ZWN0ID0gdW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7DQorICAgIGF1dG8gZWxlbWVudFJlY3QgPSBz
bmFwcGVkSW50UmVjdCh0aGlzLT5lbGVtZW50UmVjdCgpKTsNCisgICAgaWYgKCFjb250ZW50UmVj
dC5pbnRlcnNlY3RzKGVsZW1lbnRSZWN0KSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
DQorDQorICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gc3RhcnRCb3VuZGFyeSA9IHJh
bmdlLT5zdGFydDsNCisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBlbmRCb3VuZGFy
eSA9IHJhbmdlLT5lbmQ7DQorDQorICAgIC8vIE9yaWdpbiBpc24ndCBjb250YWluZWQgaW4gdmlz
aWJsZSByZWN0LCBzdGFydCBtb3ZpbmcgZm9yd2FyZCBieSBsaW5lLg0KKyAgICB3aGlsZSAoIWNv
bnRlbnRSZWN0LmNvbnRhaW5zKGVsZW1lbnRSZWN0LmxvY2F0aW9uKCkpKSB7DQorICAgICAgICBh
dXRvIG5leHRMaW5lUG9zaXRpb24gPSBuZXh0TGluZUVuZFBvc2l0aW9uKFZpc2libGVQb3NpdGlv
bihtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oKnN0YXJ0Qm91bmRhcnkpKSk7DQorICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IHRlc3RTdGFydEJvdW5kYXJ5ID0gbWFrZUJv
dW5kYXJ5UG9pbnQobmV4dExpbmVQb3NpdGlvbik7DQorICAgICAgICBpZiAoIXRlc3RTdGFydEJv
dW5kYXJ5IHx8ICFjb250YWlucygqcmFuZ2UsICp0ZXN0U3RhcnRCb3VuZGFyeSkpDQorICAgICAg
ICAgICAgYnJlYWs7DQorICAgICAgICANCisgICAgICAgIHN0YXJ0Qm91bmRhcnkgPSB0ZXN0U3Rh
cnRCb3VuZGFyeTsNCisgICAgICAgIGVsZW1lbnRSZWN0ID0gYm91bmRzRm9yUmFuZ2UoU2ltcGxl
UmFuZ2UoKnN0YXJ0Qm91bmRhcnksIHJhbmdlLT5lbmQpKTsNCisgICAgICAgIGlmIChlbGVtZW50
UmVjdC5pc0VtcHR5KCkpDQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgLy8g
RW5kIGlzbid0IGNvbnRhaW5lZCBpbiB2aXNpYmxlIHJlY3QsIHN0YXJ0IG1vdmluZyBiYWNrd2Fy
ZHMgYnkgbGluZS4NCisgICAgd2hpbGUgKCFjb250ZW50UmVjdC5jb250YWlucyhlbGVtZW50UmVj
dC5sb2NhdGlvbigpICsgZWxlbWVudFJlY3Quc2l6ZSgpKSkgew0KKyAgICAgICAgYXV0byBwcmV2
aW91c0xpbmVQb3NpdGlvbiA9IHByZXZpb3VzTGluZVN0YXJ0UG9zaXRpb24oVmlzaWJsZVBvc2l0
aW9uKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigqZW5kQm91bmRhcnkpKSk7DQorICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IHRlc3RFbmRCb3VuZGFyeSA9IG1ha2VCb3Vu
ZGFyeVBvaW50KHByZXZpb3VzTGluZVBvc2l0aW9uKTsNCisgICAgICAgIGlmICghdGVzdEVuZEJv
dW5kYXJ5IHx8ICFjb250YWlucygqcmFuZ2UsICp0ZXN0RW5kQm91bmRhcnkpKQ0KKyAgICAgICAg
ICAgIGJyZWFrOw0KKyAgICAgICAgDQorICAgICAgICBlbmRCb3VuZGFyeSA9IHRlc3RFbmRCb3Vu
ZGFyeTsNCisgICAgICAgIGVsZW1lbnRSZWN0ID0gYm91bmRzRm9yUmFuZ2UoeyAqc3RhcnRCb3Vu
ZGFyeSwgKmVuZEJvdW5kYXJ5IH0pOw0KKyAgICAgICAgaWYgKGVsZW1lbnRSZWN0LmlzRW1wdHko
KSkNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKw0KKyAgICBpZiAoIXN0YXJ0Qm91bmRh
cnkgfHwgIWVuZEJvdW5kYXJ5KQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisgICAg
DQorICAgIHJldHVybiBTaW1wbGVSYW5nZSgqc3RhcnRCb3VuZGFyeSwgKmVuZEJvdW5kYXJ5KTsN
Cit9DQorDQogc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6
ZmluZFRleHRSYW5nZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoU3RyaW5ncywgY29uc3Qg
U2ltcGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24pIGNvbnN0DQogew0KICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmb3VuZDsN
CkBAIC0zMTgyLDYgKzMyMjgsMTQgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxU
b01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmIHN1YmZvY3UNCiAgICAgICAg
IHNjcm9sbFBhcmVudC0+c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhuZXdTdWJmb2N1
cyk7DQogfQ0KIA0KK0Zsb2F0UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1bm9ic2N1cmVkQ29u
dGVudFJlY3QoKSBjb25zdA0KK3sNCisgICAgYXV0byBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCk7DQorICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpDQorICAgICAgICBy
ZXR1cm4geyB9Ow0KKyAgICByZXR1cm4gRmxvYXRSZWN0KHNuYXBwZWRJbnRSZWN0KGRvY3VtZW50
LT52aWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVjdCgpKSk7DQorfQ0KKw0KIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9pbnQpIGNvbnN0DQogew0KICAgICAvLyBTZWFyY2ggdXAgdGhlIHBhcmVudCBjaGFpbiBhbmQg
Y3JlYXRlIGEgdmVjdG9yIG9mIGFsbCBzY3JvbGxhYmxlIHBhcmVudCBvYmplY3RzDQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KaW5k
ZXggMjFmZjRhMjhhNWE2Li41OWNlYTRmNGIzOTcgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgNCkBAIC04MDgsNyArODA4LDcg
QEAgcHJvdGVjdGVkOg0KICAgICB2b2lkIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Ow0KICAg
ICB2b2lkIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7DQogICAgIHZpcnR1YWwg
Ym9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9DQotDQor
ICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsNCiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmFkaW9Hcm91cEFuY2VzdG9yKCkgY29uc3Q7DQogDQog
ICAgIGJvb2wgYWxsb3dzVGV4dFJhbmdlcygpIGNvbnN0Ow0KQEAgLTgyMSw2ICs4MjEsNyBAQCBw
cml2YXRlOg0KICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU9mU3RyaW5nQ2xv
c2VzdFRvUmFuZ2VJbkRpcmVjdGlvbihjb25zdCBTaW1wbGVSYW5nZSYsIEFjY2Vzc2liaWxpdHlT
ZWFyY2hEaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7DQogICAgIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHNlbGVjdGlvblJhbmdlKCkgY29uc3Q7DQogICAgIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZpbmRUZXh0UmFuZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHNlYXJjaFN0cmluZ3MsIGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNl
YXJjaFRleHREaXJlY3Rpb24pIGNvbnN0Ow0KKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCiANCiBwcm90ZWN0ZWQ6
IC8vIEZJWE1FOiBNYWtlIHRoZSBkYXRhIG1lbWJlcnMgcHJpdmF0ZS4NCiAgICAgYm9vbCBjaGls
ZHJlbkluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkluaXRpYWxpemVkOyB9
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaA0KaW5kZXggZTE1OTYyMWM4NTQ5Li4yYjZkYjU1MDdmOGIg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgNCkBAIC05ODgsNiArOTg4LDcgQEAgcHVibGljOg0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSA9IDA7DQogICAgIHZpcnR1YWwg
RmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgRmxvYXRS
ZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNv
bnZlcnNpb25TcGFjZSkgY29uc3QgPSAwOw0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCB1bm9ic2N1
cmVkQ29udGVudFJlY3QoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0No
ZWNrZWRTdGF0ZSgpIGNvbnN0ID0gMDsNCiAgICAgDQogICAgIC8vIEluIGEgbXVsdGktc2VsZWN0
IGxpc3QsIG1hbnkgaXRlbXMgY2FuIGJlIHNlbGVjdGVkIGJ1dCBvbmx5IG9uZSBpcyBhY3RpdmUg
YXQgYSB0aW1lLg0KQEAgLTk5Nyw2ICs5OTgsNyBAQCBwdWJsaWM6DQogICAgIHZpcnR1YWwgYm9v
bCBoYXNJdGFsaWNGb250KCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIGJvb2wgaGFzTWlzc3Bl
bGxpbmcoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gbWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxp
dHlTZWFyY2hEaXJlY3Rpb24pIGNvbnN0ID0gMDsNCisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSBjb25zdCA9IDA7DQogICAgIHZp
cnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBo
YXNTYW1lRm9udChjb25zdCBBWENvcmVPYmplY3QmKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwg
Ym9vbCBoYXNTYW1lRm9udENvbG9yKGNvbnN0IEFYQ29yZU9iamVjdCYpIGNvbnN0ID0gMDsNCkBA
IC0xNTMwLDcgKzE1MzIsNyBAQCBwdWJsaWM6DQogDQogICAgIHZpcnR1YWwgU3RyaW5nIGlubmVy
SFRNTCgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBTdHJpbmcgb3V0ZXJIVE1MKCkgY29uc3Qg
PSAwOw0KLQ0KKyAgICANCiBwcml2YXRlOg0KICAgICAvLyBEZXRhY2hlcyB0aGlzIG9iamVjdCBm
cm9tIHRoZSBvYmplY3RzIGl0IHJlZmVyZW5jZXMgYW5kIGl0IGlzIHJlZmVyZW5jZWQgYnkuDQog
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVu
dFR5cGUpID0gMDsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lv
cy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tDQppbmRl
eCA1ZTBjOGM4ZWJjNjcuLjk4OTM0MWFmYzIxMiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tDQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQ0KQEAgLTUyLDYgKzUyLDcgQEANCiAjaW1wb3J0ICJTVkdFbGVtZW50
SW5saW5lcy5oIg0KICNpbXBvcnQgIlNWR05hbWVzLmgiDQogI2ltcG9ydCAiU2VsZWN0aW9uR2Vv
bWV0cnkuaCINCisjaW1wb3J0ICJTaW1wbGVSYW5nZS5oIg0KICNpbXBvcnQgIlRleHRJdGVyYXRv
ci5oIg0KICNpbXBvcnQgIldBS1Njcm9sbFZpZXcuaCINCiAjaW1wb3J0ICJXQUtXaW5kb3cuaCIN
CkBAIC0xNjk0LDEyICsxNjk1LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQo
TlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpDQogew0KICAgICBpZiAo
IVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KICAgICAgICAgcmV0dXJuIENHUmVj
dFplcm87DQotICAgIA0KLSAgICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3Qt
PmRvY3VtZW50KCk7DQotICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpDQot
ICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCi0gICAgYXV0byByZWN0ID0gRmxvYXRSZWN0KHNu
YXBwZWRJbnRSZWN0KGRvY3VtZW50LT52aWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVjdCgpKSk7
DQotICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3Np
YmlsaXR5Q29udmVyc2lvblNwYWNlOjpTY3JlZW5dOw0KKyAgICByZXR1cm4gW3NlbGYgY29udmVy
dFJlY3RUb1NwYWNlOnNlbGYuYXhCYWNraW5nT2JqZWN0LT51bm9ic2N1cmVkQ29udGVudFJlY3Qo
KSBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpTY3JlZW5dOw0KIH0NCiANCiAv
LyBUaGUgImNlbnRlciBwb2ludCIgaXMgd2hlcmUgVm9pY2VPdmVyIHdpbGwgInByZXNzIiBhbiBv
YmplY3QuIFRoaXMgbWF5IG5vdCBiZSB0aGUgYWN0dWFsDQpAQCAtMTkxNSw3ICsxOTExLDcgQEAg
c3RhdGljIE5TQXJyYXkgKmFjY2Vzc2libGVFbGVtZW50c0Zvck9iamVjdHMoY29uc3QgQVhDb3Jl
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2gNCiAgICAgICAgIH0pOw0KICAgICB9DQogDQotICAgIHJl
dHVybiBjb252ZXJ0VG9OU0FycmF5KGFjY2Vzc2libGVFbGVtZW50cyk7DQorICAgIHJldHVybiBt
YWtlTlNBcnJheShhY2Nlc3NpYmxlRWxlbWVudHMpOw0KIH0NCiANCiAtIChOU0FycmF5ICopYWNj
ZXNzaWJpbGl0eURldGFpbHNFbGVtZW50cw0KQEAgLTIxMDQsNyArMjEwMCw3IEBAIHN0YXRpYyBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICBBY2Nlc3Np
YmlsaXR5U2VhcmNoQ3JpdGVyaWEgY3JpdGVyaWEgPSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVy
aWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKHBhcmFtZXRlcnMpOw0K
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVz
dWx0czsNCiAgICAgc2VsZi5heEJhY2tpbmdPYmplY3QtPmZpbmRNYXRjaGluZ09iamVjdHMoJmNy
aXRlcmlhLCByZXN1bHRzKTsNCi0gICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkocmVzdWx0cyk7
DQorICAgIHJldHVybiBtYWtlTlNBcnJheShyZXN1bHRzKTsNCiB9DQogDQogLSAodm9pZClhY2Nl
c3NpYmlsaXR5TW9kaWZ5U2VsZWN0aW9uOihUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkgaW5j
cmVhc2U6KEJPT0wpaW5jcmVhc2UNCkBAIC0yMjA5LDQ3ICsyMjA1LDYgQEAgc3RhdGljIFJlbmRl
ck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgIHJldHVybiByYW5n
ZSA/IFtzZWxmIGNvbnRlbnRGb3JTaW1wbGVSYW5nZToqcmFuZ2UgYXR0cmlidXRlZDphdHRyaWJ1
dGVkXSA6IG5pbDsNCiB9DQogDQotLy8gRklYTUU6IE5vIHJlYXNvbiBmb3IgdGhpcyB0byBiZSBh
IG1ldGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rpb24uDQotLSAoTlNSYW5nZSlfY29udmVydFRvTlNS
YW5nZTooY29uc3QgU2ltcGxlUmFuZ2UmKXJhbmdlDQotew0KLSAgICBhdXRvJiBkb2N1bWVudCA9
IHJhbmdlLnN0YXJ0LmRvY3VtZW50KCk7DQotICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJh
bWUoKTsNCi0gICAgaWYgKCFmcmFtZSkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05v
dEZvdW5kLCAwKTsNCi0NCi0gICAgYXV0byogcm9vdEVkaXRhYmxlRWxlbWVudCA9IGZyYW1lLT5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQotICAgIGF1dG8q
IHNjb3BlID0gcm9vdEVkaXRhYmxlRWxlbWVudCA/IHJvb3RFZGl0YWJsZUVsZW1lbnQgOiBkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQoKTsNCi0gICAgaWYgKCFzY29wZSkNCi0gICAgICAgIHJldHVy
biBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgLy8gTW91c2UgZXZlbnRzIG1h
eSBjYXVzZSBUU00gdG8gYXR0ZW1wdCB0byBjcmVhdGUgYW4gTlNSYW5nZSBmb3IgYSBwb3J0aW9u
IG9mIHRoZSB2aWV3DQotICAgIC8vIHRoYXQgaXMgbm90IGluc2lkZSB0aGUgY3VycmVudCBlZGl0
YWJsZSByZWdpb24uIFRoZXNlIGNoZWNrcyBlbnN1cmUgd2UgZG9uJ3QgcHJvZHVjZQ0KLSAgICAv
LyBwb3RlbnRpYWxseSBpbnZhbGlkIGRhdGEgd2hlbiByZXNwb25kaW5nIHRvIHN1Y2ggcmVxdWVz
dHMuDQotICAgIGlmICghc2NvcGUtPmNvbnRhaW5zKHJhbmdlLnN0YXJ0LmNvbnRhaW5lci5wdHIo
KSkgfHwgIXNjb3BlLT5jb250YWlucyhyYW5nZS5lbmQuY29udGFpbmVyLnB0cigpKSkNCi0gICAg
ICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgcmV0dXJuIE5T
TWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KHsgeyAqc2NvcGUsIDAgfSwgcmFuZ2Uuc3RhcnQgfSks
IGNoYXJhY3RlckNvdW50KHJhbmdlKSk7DQotfQ0KLQ0KLS0gKHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZQ0KLXsNCi0gICAgaWYgKHJh
bmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpDQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
Ow0KLQ0KLSAgICAvLyBvdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBvbmx5
IGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQNCi0gICAgLy8gY29uY2VudHJhdGUgb24gYSBn
aXZlbiBhcmVhIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbg0KLSAgICAvLyBXZSBoYXZlIHRvIGRv
IHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0
aG9zZSBpcyBub3QNCi0gICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2Vy
aWFsaXphdGlvbiBpcyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzDQotICAgIC8vIHRvIHVz
ZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQgYXMgdGhl
IHBvc2l0aW9uYWwgYmFzZS4NCi0gICAgLy8gVGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBv
ZiBhbiBpbnB1dCBjb250ZXh0Lg0KLSAgICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdP
YmplY3QtPmRvY3VtZW50KCk7DQotICAgIGF1dG8gc2VsZWN0aW9uUm9vdCA9IGRvY3VtZW50LT5m
cmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQot
ICAgIGF1dG8gc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGRvY3VtZW50
LT5kb2N1bWVudEVsZW1lbnQoKTsNCi0gICAgaWYgKCFzY29wZSkNCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7DQotDQotICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIHJhbmdlKTsNCi19DQogDQogLy8gVGhp
cyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gdGFrZSBhIHRleHQgbWFya2VyIHJlcHJlc2VudGluZyBh
IFZpc2libGVQb3NpdGlvbiBhbmQgY29udmVydCBpdA0KIC8vIGludG8gYSBub3JtYWxpemVkIGxv
Y2F0aW9uIHdpdGhpbiB0aGUgZG9jdW1lbnQuDQpAQCAtMjI2Nyw3ICsyMjIyLDcgQEAgc3RhdGlj
IFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgICAgICBh
dXRvIHJhbmdlID0gY2FjaGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjaGFy
YWN0ZXJPZmZzZXQsIGNoYXJhY3Rlck9mZnNldCk7DQogICAgICAgICBpZiAoIXJhbmdlKQ0KICAg
ICAgICAgICAgIHJldHVybiBOU05vdEZvdW5kOw0KLSAgICAgICAgcmV0dXJuIFtzZWxmIF9jb252
ZXJ0VG9OU1JhbmdlOipyYW5nZV0ubG9jYXRpb247DQorICAgICAgICByZXR1cm4gbWFrZU5TUmFu
Z2UocmFuZ2UpLmxvY2F0aW9uOw0KICAgICB9DQogICAgIHJldHVybiBOU05vdEZvdW5kOw0KIH0N
CkBAIC0yMzQ2LDcgKzIzMDEsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZp
ZXcoV0FLVmlldyogdmlldykNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlD
YWxsXSkNCiAgICAgICAgIHJldHVybiBuaWw7DQogDQotICAgIGF1dG8gcmFuZ2UgPSBbc2VsZiBf
Y29udmVydFRvRE9NUmFuZ2U6TlNNYWtlUmFuZ2UocG9zaXRpb24sIDApXTsNCisgICAgYXV0byBy
YW5nZSA9IG1ha2VET01SYW5nZShzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKSwgTlNN
YWtlUmFuZ2UocG9zaXRpb24sIDApKTsNCiAgICAgaWYgKCFyYW5nZSkNCiAgICAgICAgIHJldHVy
biBuaWw7DQogDQpAQCAtMjQxNCw3ICsyMzY5LDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVu
ZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogew0KICAgICBpZiAoIVtzZWxmIF9wcmVwYXJl
QWNjZXNzaWJpbGl0eUNhbGxdKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCi0gICAgYXV0byB3ZWJS
YW5nZSA9IFtzZWxmIF9jb252ZXJ0VG9ET01SYW5nZTpyYW5nZV07DQorICAgIGF1dG8gd2ViUmFu
Z2UgPSBtYWtlRE9NUmFuZ2Uoc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCksIHJhbmdl
KTsNCiAgICAgaWYgKCF3ZWJSYW5nZSkNCiAgICAgICAgIHJldHVybiBuaWw7DQogICAgIHJldHVy
biBzZWxmLmF4QmFja2luZ09iamVjdC0+c3RyaW5nRm9yUmFuZ2UoKndlYlJhbmdlKTsNCkBAIC0y
NjAwLDYgKzI1NTUsMTcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdB
S1ZpZXcqIHZpZXcpDQogICAgIHJldHVybiBbc2VsZiBwcmV2aW91c01hcmtlckZvckNoYXJhY3Rl
ck9mZnNldDpzdGFydF07DQogfQ0KIA0KKy0gKENHUmVjdClmcmFtZUZvclJhbmdlOihOU1Jhbmdl
KXJhbmdlDQorew0KKyAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0K
KyAgICAgICAgcmV0dXJuIENHUmVjdFplcm87DQorICAgIGF1dG8gd2ViUmFuZ2UgPSBtYWtlRE9N
UmFuZ2Uoc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCksIHJhbmdlKTsNCisgICAgaWYg
KCF3ZWJSYW5nZSkNCisgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOw0KKyAgICBhdXRvIHJlY3Qg
PSBzZWxmLmF4QmFja2luZ09iamVjdC0+Ym91bmRzRm9yUmFuZ2UoKndlYlJhbmdlKTsNCisgICAg
cmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpyZWN0IHNwYWNlOkFjY2Vzc2liaWxpdHlD
b252ZXJzaW9uU3BhY2U6OlNjcmVlbl07DQorfQ0KKw0KIC8vIFRoaXMgbWV0aG9kIGlzIGludGVu
ZGVkIHRvIHJldHVybiB0aGUgYm91bmRzIG9mIGEgdGV4dCBtYXJrZXIgcmFuZ2UgaW4gc2NyZWVu
IGNvb3JkaW5hdGVzLg0KIC0gKENHUmVjdClmcmFtZUZvclRleHRNYXJrZXJzOihOU0FycmF5ICop
YXJyYXkNCiB7DQpAQCAtMjkzMSw3ICsyODk3LDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVu
ZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgICAgICByZXR1cm4gbmlsOw0KIA0KICAg
ICBhdXRvIHJhZGljYW5kID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPm1hdGhSYWRpY2FuZCgpOw0K
LSAgICByZXR1cm4gcmFkaWNhbmQgPyBjb252ZXJ0VG9OU0FycmF5KCpyYWRpY2FuZCkgOiBuaWw7
DQorICAgIHJldHVybiByYWRpY2FuZCA/IG1ha2VOU0FycmF5KCpyYWRpY2FuZCkgOiBuaWw7DQog
fQ0KIA0KIC0gKFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICopYWNjZXNzaWJpbGl0eU1h
dGhOdW1lcmF0b3JPYmplY3QNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQppbmRleCAxMWE3
OWIxMjE3MmQuLjM2OTUyZjk0MDhmYiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0K
QEAgLTk5Miw2ICs5OTIsMTMgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojp1cGRhdGVCYWNraW5n
U3RvcmUoKQ0KICAgICAgICAgdHJlZS0+YXBwbHlQZW5kaW5nQ2hhbmdlcygpOw0KIH0NCiANCitz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWElzb2xhdGVkT2JqZWN0Ojp2aXNpYmxlQ2hhcmFj
dGVyUmFuZ2UoKSBjb25zdA0KK3sNCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsNCisgICAg
YXV0byogYXhPYmplY3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKTsNCisgICAgcmV0dXJuIGF4T2Jq
ZWN0ID8gYXhPYmplY3QtPnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIDogc3RkOjpudWxsb3B0Ow0K
K30NCisNCiBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWElzb2xhdGVkT2JqZWN0OjpyYW5n
ZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJiBheFJhbmdlKSBjb25zdA0K
IHsNCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsNCkBAIC0xNDcwLDYgKzE0NzcsMTUgQEAg
dm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNv
bnN0IFZpc2libGVQb3NpdGlvblJhbmcNCiAgICAgICAgIG9iamVjdC0+c2V0U2VsZWN0ZWRWaXNp
YmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9zaXRpb25SYW5nZSk7DQogfQ0KIA0KK0Zsb2F0UmVj
dCBBWElzb2xhdGVkT2JqZWN0Ojp1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25zdA0KK3sNCisg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxGbG9h
dFJlY3Q+KFt0aGlzXSAoKSAtPiBGbG9hdFJlY3Qgew0KKyAgICAgICAgaWYgKGF1dG8qIG9iamVj
dCA9IGFzc29jaWF0ZWRBWE9iamVjdCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBvYmplY3QtPnVu
b2JzY3VyZWRDb250ZW50UmVjdCgpOw0KKyAgICAgICAgcmV0dXJuIHsgfTsNCisgICAgfSk7DQor
fQ0KKw0KIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1l
bnRSYW5nZSgpIGNvbnN0DQogew0KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOw0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuaA0KaW5kZXggM2I0ZWVhMWZiYjU4Li5iYTYzZGMyNzIxZDIgMTAwNjQ0
DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaA0KQEAgLTQ0MSw5ICs0NDEsMTEgQEAgcHJpdmF0ZToNCiAg
ICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7DQogICAgIGludCBsaW5lRm9yUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7DQogICAgIFBsYWluVGV4dFJh
bmdlIHBsYWluVGV4dFJhbmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZTsNCisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gdmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7DQogICAgIGludCBp
bmRleChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsNCiAgICAgdm9pZCBs
aW5lQnJlYWtzKFZlY3RvcjxpbnQ+JikgY29uc3Qgb3ZlcnJpZGU7DQotDQorICAgIEZsb2F0UmVj
dCB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsNCisgICAgDQogICAgIC8v
IEF0dHJpYnV0ZSBzZXR0ZXJzLg0KICAgICB2b2lkIHNldEFSSUFHcmFiYmVkKGJvb2wpIG92ZXJy
aWRlOw0KICAgICB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgb3ZlcnJpZGU7DQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaA0KaW5kZXggZWVhM2U2OWRlZDkzLi5hYzJiZGJm
ZTJhYzUgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgNCkBAIC0z
NCw2ICszNCw3IEBADQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIHN0cnVjdCBBY2Nlc3NpYmls
aXR5U2VhcmNoQ3JpdGVyaWE7DQorY2xhc3MgRG9jdW1lbnQ7DQogY2xhc3MgSW50UmVjdDsNCiBj
bGFzcyBGbG9hdFBvaW50Ow0KIGNsYXNzIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ow0KQEAg
LTExMSwxMSArMTEyLDE1IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0
eVRleHR1YWxDb250ZXh0U291cmNlQ29kZSA9IEAiVUlBY2Nlc3NpYmlsDQogLSAoTlNBcnJheSAq
KWFjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdFBhaXJzOw0KIC0gKE5TQXJyYXkgKilhY2Nlc3Np
YmlsaXR5TWF0aFByZXNjcmlwdFBhaXJzOw0KIA0KKy0gKE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVZp
c2libGVDaGFyYWN0ZXJSYW5nZTsNCisNCiAtIChOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+
ICopYmFzZUFjY2Vzc2liaWxpdHlSZXNvbHZlZEVkaXRpbmdTdHlsZXM7DQogDQogZXh0ZXJuIFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3Jp
dGVyaWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNvbnN0IE5TRGlj
dGlvbmFyeSAqKTsNCiANCi1leHRlcm4gTlNBcnJheSAqY29udmVydFRvTlNBcnJheShjb25zdCBX
ZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOw0KK2V4
dGVybiBOU0FycmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOw0KK2V4dGVybiBOU1JhbmdlIG1ha2VOU1Jhbmdl
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KTsNCitleHRlcm4gc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4gbWFrZURPTVJhbmdlKFdlYkNvcmU6OkRvY3VtZW50
KiwgTlNSYW5nZSk7DQogDQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpDQogLSAoaWQpX2FjY2Vz
c2liaWxpdHlXZWJEb2N1bWVudFZpZXc7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJCYXNlLm1tDQppbmRleCAxZTU2OTFkMTlmOTIuLjVmN2FkMjg2OWU3NCAxMDA2NDQNCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbQ0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tDQpAQCAtMjYxLDcgKzI2MSw3IEBAIHN0
YXRpYyBOU0FycmF5ICpjb252ZXJ0TWF0aFBhaXJzVG9OU0FycmF5KGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OkFjY2Vzc2liaWxpDQogICAgIH0pLmF1dG9yZWxlYXNlKCk7DQogfQ0KIA0KLU5T
QXJyYXkgKmNvbnZlcnRUb05TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKQ0KK05TQXJyYXkgKm1ha2VOU0FycmF5
KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiBjaGlsZHJlbikNCiB7DQogICAgIHJldHVybiBjcmVhdGVOU0FycmF5KGNoaWxkcmVuLCBbXSAo
Y29uc3QgYXV0byYgY2hpbGQpIC0+IGlkIHsNCiAgICAgICAgIGF1dG8gd3JhcHBlciA9IGNoaWxk
LT53cmFwcGVyKCk7DQpAQCAtNDYyLDYgKzQ2MiwyNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0
aFRvU2NyZWVuU3BhY2VGdW5jdGlvbihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNv
bg0KICAgICByZXR1cm4gY29udmVydGVkUGF0aC5hdXRvcmVsZWFzZSgpOw0KIH0NCiANCisvLyBE
ZXRlcm1pbmUgdGhlIHZpc2libGUgcmFuZ2UgYnkgY2hlY2tpbmcgaW50ZXJzZWN0aW9uIG9mIHVu
b2JzY3VyZWRDb250ZW50UmVjdCBhbmQgYSByYW5nZSBvZiB0ZXh0IGJ5DQorLy8gYWR2YW5jaW5n
IGZvcndhcmQgYnkgbGluZSBmcm9tIHRvcCBhbmQgYmFja3dhcmRzIGJ5IGxpbmUgZnJvbSB0aGUg
Ym90dG9tLCB1bnRpbCB3ZSBoYXZlIGEgdmlzaWJsZSByYW5nZS4NCistIChOU1JhbmdlKWFjY2Vz
c2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UNCit7DQorICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8TlNSYW5nZT4oW3Byb3RlY3RlZFNlbGYg
PSByZXRhaW5QdHIoc2VsZildICgpIC0+IE5TUmFuZ2Ugew0KKyAgICAgICAgYXV0byBiYWNraW5n
T2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5iYXNlVXBkYXRlQmFja2luZ1N0b3JlOw0KKyAg
ICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQ0KKyAgICAgICAgICAgIHJldHVybiBOU01ha2VSYW5n
ZShOU05vdEZvdW5kLCAwKTsNCisNCisgICAgICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZU5T
UmFuZ2UoYmFja2luZ09iamVjdC0+ZWxlbWVudFJhbmdlKCkpOw0KKyAgICAgICAgaWYgKGVsZW1l
bnRSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQ0KKyAgICAgICAgICAgIHJldHVybiBlbGVt
ZW50UmFuZ2U7DQorICAgICAgICANCisgICAgICAgIGF1dG8gdmlzaWJsZVJhbmdlID0gbWFrZU5T
UmFuZ2UoYmFja2luZ09iamVjdC0+dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkpOw0KKyAgICAgICAg
aWYgKHZpc2libGVSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQ0KKyAgICAgICAgICAgIHJl
dHVybiB2aXNpYmxlUmFuZ2U7DQorDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UodmlzaWJs
ZVJhbmdlLmxvY2F0aW9uIC0gZWxlbWVudFJhbmdlLmxvY2F0aW9uLCB2aXNpYmxlUmFuZ2UubGVu
Z3RoKTsNCisgICAgfSk7DQorfQ0KKw0KIC0gKGlkKV9hY2Nlc3NpYmlsaXR5V2ViRG9jdW1lbnRW
aWV3DQogew0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsNCkBAIC02MjMsNiArNjQ0LDUwIEBA
IHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmli
dXRlZFN0cmluZyogYXR0clN0cmluZywNCiAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFn
ZShhdHRyU3RyaW5nLCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOw0KIH0NCiAN
CisNCitOU1JhbmdlIG1ha2VOU1JhbmdlKHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdl
KQ0KK3sNCisgICAgaWYgKCFyYW5nZSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05v
dEZvdW5kLCAwKTsNCisgICAgDQorICAgIGF1dG8mIGRvY3VtZW50ID0gcmFuZ2UtPnN0YXJ0LmRv
Y3VtZW50KCk7DQorICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsNCisgICAgaWYg
KCFmcmFtZSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCisN
CisgICAgYXV0byogcm9vdEVkaXRhYmxlRWxlbWVudCA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQorICAgIGF1dG8qIHNjb3BlID0gcm9vdEVk
aXRhYmxlRWxlbWVudCA/IHJvb3RFZGl0YWJsZUVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQoKTsNCisgICAgaWYgKCFzY29wZSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShO
U05vdEZvdW5kLCAwKTsNCisNCisgICAgLy8gTW91c2UgZXZlbnRzIG1heSBjYXVzZSBUU00gdG8g
YXR0ZW1wdCB0byBjcmVhdGUgYW4gTlNSYW5nZSBmb3IgYSBwb3J0aW9uIG9mIHRoZSB2aWV3DQor
ICAgIC8vIHRoYXQgaXMgbm90IGluc2lkZSB0aGUgY3VycmVudCBlZGl0YWJsZSByZWdpb24uIFRo
ZXNlIGNoZWNrcyBlbnN1cmUgd2UgZG9uJ3QgcHJvZHVjZQ0KKyAgICAvLyBwb3RlbnRpYWxseSBp
bnZhbGlkIGRhdGEgd2hlbiByZXNwb25kaW5nIHRvIHN1Y2ggcmVxdWVzdHMuDQorICAgIGlmICgh
c2NvcGUtPmNvbnRhaW5zKHJhbmdlLT5zdGFydC5jb250YWluZXIucHRyKCkpIHx8ICFzY29wZS0+
Y29udGFpbnMocmFuZ2UtPmVuZC5jb250YWluZXIucHRyKCkpKQ0KKyAgICAgICAgcmV0dXJuIE5T
TWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICByZXR1cm4gTlNNYWtlUmFuZ2UoY2hh
cmFjdGVyQ291bnQoeyB7ICpzY29wZSwgMCB9LCByYW5nZS0+c3RhcnQgfSksIGNoYXJhY3RlckNv
dW50KCpyYW5nZSkpOw0KK30NCisNCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlRE9N
UmFuZ2UoRG9jdW1lbnQqIGRvY3VtZW50LCBOU1JhbmdlIHJhbmdlKQ0KK3sNCisgICAgaWYgKHJh
bmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
Ow0KKw0KKyAgICAvLyBvdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBvbmx5
IGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQNCisgICAgLy8gY29uY2VudHJhdGUgb24gYSBn
aXZlbiBhcmVhIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbg0KKyAgICAvLyBXZSBoYXZlIHRvIGRv
IHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0
aG9zZSBpcyBub3QNCisgICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2Vy
aWFsaXphdGlvbiBpcyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzDQorICAgIC8vIHRvIHVz
ZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQgYXMgdGhl
IHBvc2l0aW9uYWwgYmFzZS4NCisgICAgLy8gVGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBv
ZiBhbiBpbnB1dCBjb250ZXh0Lg0KKyAgICBhdXRvIHNlbGVjdGlvblJvb3QgPSBkb2N1bWVudC0+
ZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOw0K
KyAgICBhdXRvIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBkb2N1bWVu
dC0+ZG9jdW1lbnRFbGVtZW50KCk7DQorICAgIGlmICghc2NvcGUpDQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0Ow0KKw0KKyAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VS
YW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUpLCByYW5nZSk7DQorfQ0KKw0KIC8vIFJl
dHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhbmQgQVhPYmplY3Qgd3JhcHBlcnMgY29ycmVzcG9u
ZGluZyB0byB0aGUgdGV4dA0KIC8vIHJ1bnMgYW5kIHJlcGxhY2VtZW50IG5vZGVzIGluY2x1ZGVk
IGluIHRoZSBnaXZlbiByYW5nZS4NCiAtIChOU0FycmF5ICopY29udGVudEZvclNpbXBsZVJhbmdl
Oihjb25zdCBTaW1wbGVSYW5nZSYpcmFuZ2UgYXR0cmlidXRlZDooQk9PTClhdHRyaWJ1dGVkDQpA
QCAtNjc2LDE4ICs3NDEsMjYgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5k
VGV4dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLA0KICAgICByZXR1cm4g
YXJyYXkuYXV0b3JlbGVhc2UoKTsNCiB9DQogDQotLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4g
KilsaW5lUmVjdHNBbmRUZXh0DQorLSAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KiliYXNlVXBkYXRl
QmFja2luZ1N0b3JlDQogew0KICNpZiBQTEFURk9STShNQUMpDQogICAgIGF1dG8qIGJhY2tpbmdP
YmplY3QgPSBzZWxmLnVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZTsNCiAgICAgaWYgKCFiYWNraW5n
T2JqZWN0KQ0KLSAgICAgICAgcmV0dXJuIG5pbDsNCisgICAgICAgIHJldHVybiBudWxscHRyOw0K
ICNlbHNlDQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQotICAg
ICAgICByZXR1cm4gbmlsOw0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsNCiAjZW5kaWYNCisgICAgcmV0dXJu
IGJhY2tpbmdPYmplY3Q7DQorfQ0KIA0KKy0gKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopbGlu
ZVJlY3RzQW5kVGV4dA0KK3sNCisgICAgYXV0byBiYWNraW5nT2JqZWN0ID0gc2VsZi5iYXNlVXBk
YXRlQmFja2luZ1N0b3JlOw0KKyAgICBpZiAoIWJhY2tpbmdPYmplY3QpDQorICAgICAgICByZXR1
cm4gbmlsOw0KKyAgICANCiAgICAgYXV0byByYW5nZSA9IGJhY2tpbmdPYmplY3QtPmVsZW1lbnRS
YW5nZSgpOw0KICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tDQppbmRleCA3MDA0YzQ2YjY0MzkuLmQ2OTQx
ZjgyZjEyMiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQ0KQEAg
LTE3OTUsNyArMTc5NSw3IEBAIHN0YXRpYyB2b2lkIFdlYlRyYW5zZm9ybUNHUGF0aFRvTlNCZXpp
ZXJQYXRoKHZvaWQqIGluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsDQogDQogLSAoTlNBcnJh
eTxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqPiAqKWNoaWxkcmVuVmVjdG9yQXJyYXkN
CiB7DQotICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5j
aGlsZHJlbigpKTsNCisgICAgcmV0dXJuIG1ha2VOU0FycmF5KHNlbGYuYXhCYWNraW5nT2JqZWN0
LT5jaGlsZHJlbigpKTsNCiB9DQogDQogLSAoTlNWYWx1ZSAqKXBvc2l0aW9uDQpAQCAtMjIwMyw3
ICsyMjAzLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAg
ICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpKSB7DQogICAgICAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRlbnRDb3B5Ow0K
ICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPmFyaWFUcmVlSXRlbUNvbnRlbnQoY29udGVudENv
cHkpOw0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNvbnRlbnRDb3B5KTsN
CisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoY29udGVudENvcHkpOw0KICAgICAgICAg
fQ0KIA0KICAgICAgICAgcmV0dXJuIHNlbGYuY2hpbGRyZW5WZWN0b3JBcnJheTsNCkBAIC0yMjEz
LDcgKzIyMTMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAg
ICAgIGlmIChiYWNraW5nT2JqZWN0LT5jYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpKSB7DQogICAg
ICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IHNlbGVjdGVkQ2hpbGRyZW5Db3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnNlbGVj
dGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KLSAgICAgICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCisgICAgICAgICAgICByZXR1
cm4gbWFrZU5TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KICAgICAgICAgfQ0KICAgICAg
ICAgcmV0dXJuIG5pbDsNCiAgICAgfQ0KQEAgLTIyMjIsNyArMjIyMiw3IEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlz
TGlzdEJveCgpKSB7DQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIHZpc2libGVDaGlsZHJlbkNvcHk7DQogICAgICAgICAgICAgYmFj
a2luZ09iamVjdC0+dmlzaWJsZUNoaWxkcmVuKHZpc2libGVDaGlsZHJlbkNvcHkpOw0KLSAgICAg
ICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHZpc2libGVDaGlsZHJlbkNvcHkpOw0KKyAg
ICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheSh2aXNpYmxlQ2hpbGRyZW5Db3B5KTsNCiAgICAg
ICAgIH0NCiANCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0xpc3QoKSkNCkBAIC0yMjM0
LDcgKzIyMzQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiANCiAg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzV2ViQXJlYSgpKSB7DQogICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMaW5rVUlFbGVtZW50cyJdKQ0KLSAgICAgICAg
ICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmRvY3VtZW50TGlua3Mo
KSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmRvY3Vt
ZW50TGlua3MoKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhMb2FkZWQiXSkNCiAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldp
dGhCb29sOmJhY2tpbmdPYmplY3QtPmlzTG9hZGVkKCldOw0KQEAgLTIyNjcsMTYgKzIyNjcsMjEg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICAgICAgUGxh
aW5UZXh0UmFuZ2UgdGV4dFJhbmdlID0gYmFja2luZ09iamVjdC0+c2VsZWN0ZWRUZXh0UmFuZ2Uo
KTsNCiAgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFu
Z2UodGV4dFJhbmdlLnN0YXJ0LCB0ZXh0UmFuZ2UubGVuZ3RoKV07DQogICAgICAgICB9DQotICAg
ICAgICAvLyBUT0RPOiBHZXQgYWN0dWFsIHZpc2libGUgcmFuZ2UuIDxyZGFyOi8vcHJvYmxlbS80
NzEyMTAxPg0KLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNB
Y2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRlXSkNCi0gICAgICAgICAg
ICByZXR1cm4gYmFja2luZ09iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkgPyBuaWwgOiBbTlNWYWx1
ZSB2YWx1ZVdpdGhSYW5nZTogTlNNYWtlUmFuZ2UoMCwgYmFja2luZ09iamVjdC0+dGV4dExlbmd0
aCgpKV07DQotDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eUluc2VydGlvblBvaW50TGluZU51bWJlckF0dHJpYnV0ZV0pIHsNCiAgICAg
ICAgICAgICBpbnQgbGluZU51bWJlciA9IGJhY2tpbmdPYmplY3QtPmluc2VydGlvblBvaW50TGlu
ZU51bWJlcigpOw0KICAgICAgICAgICAgIHJldHVybiBsaW5lTnVtYmVyID49IDAgPyBAKGxpbmVO
dW1iZXIpIDogbmlsOw0KICAgICAgICAgfQ0KICAgICB9DQogDQorICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5n
ZUF0dHJpYnV0ZV0pIHsNCisgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1Bhc3N3b3JkRmll
bGQoKSkNCisgICAgICAgICAgICByZXR1cm4gbmlsOw0KKyAgICAgICAgLy8gVE9ETzogR2V0IGFj
dHVhbCB2aXNpYmxlIHJhbmdlLiA8cmRhcjovL3Byb2JsZW0vNDcxMjEwMT4NCisgICAgICAgIGlm
IChiYWNraW5nT2JqZWN0LT5pc1RleHRDb250cm9sKCkpDQorICAgICAgICAgICAgcmV0dXJuIFtO
U1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKDAsIGJhY2tpbmdPYmplY3QtPnRleHRM
ZW5ndGgoKSldOw0KKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOltzZWxm
IGFjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VdXTsNCisgICAgfQ0KKw0KICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlVUkxBdHRy
aWJ1dGVdKSB7DQogICAgICAgICBVUkwgdXJsID0gYmFja2luZ09iamVjdC0+dXJsKCk7DQogICAg
ICAgICBpZiAodXJsLmlzTnVsbCgpKQ0KQEAgLTIzODAsNyArMjM4NSw3IEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUltYWdlT3ZlcmxheUVsZW1lbnRzQXR0cmlidXRl
XSkgew0KICAgICAgICAgYXV0byBpbWFnZU92ZXJsYXlFbGVtZW50cyA9IGJhY2tpbmdPYmplY3Qt
PmltYWdlT3ZlcmxheUVsZW1lbnRzKCk7DQotICAgICAgICByZXR1cm4gaW1hZ2VPdmVybGF5RWxl
bWVudHMgPyBjb252ZXJ0VG9OU0FycmF5KCppbWFnZU92ZXJsYXlFbGVtZW50cykgOiBuaWw7DQor
ICAgICAgICByZXR1cm4gaW1hZ2VPdmVybGF5RWxlbWVudHMgPyBtYWtlTlNBcnJheSgqaW1hZ2VP
dmVybGF5RWxlbWVudHMpIDogbmlsOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RW1iZWRkZWRJbWFnZURlc2NyaXB0aW9u
QXR0cmlidXRlXSkNCkBAIC0yNDA0LDI5ICsyNDA5LDI5IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFiTGlzdCgp
KSB7DQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIHRhYnNDaGlsZHJlbjsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT50YWJD
aGlsZHJlbih0YWJzQ2hpbGRyZW4pOw0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KHRhYnNDaGlsZHJlbik7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHRhYnND
aGlsZHJlbik7DQogICAgICAgICB9DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb250ZW50c0F0dHJpYnV0ZV0pDQotICAg
ICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb250ZW50cygpKTsN
CisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb250ZW50cygpKTsN
CiANCiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFibGUoKSAmJiBiYWNraW5nT2JqZWN0LT5p
c0V4cG9zYWJsZSgpKSB7DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd3MoKSk7DQorICAgICAgICAgICAgcmV0
dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd3MoKSk7DQogDQogICAgICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dz
QXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5n
T2JqZWN0LT52aXNpYmxlUm93cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
YmFja2luZ09iamVjdC0+dmlzaWJsZVJvd3MoKSk7DQogDQogICAgICAgICAvLyBUT0RPOiBkaXN0
aW5ndWlzaCBiZXR3ZWVuIHZpc2libGUgYW5kIG5vbi12aXNpYmxlIGNvbHVtbnMNCiAgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1u
c0F0dHJpYnV0ZV0NCiAgICAgICAgICAgICB8fCBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNvbHVtbnNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAg
IHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbnMoKSk7DQorICAg
ICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbnMoKSk7DQog
DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbkNvcHk7
DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENo
aWxkcmVuQ29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZWN0
ZWRDaGlsZHJlbkNvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShzZWxlY3Rl
ZENoaWxkcmVuQ29weSk7DQogICAgICAgICB9DQogDQogICAgICAgICAvLyBIVE1MIHRhYmxlcyBk
b24ndCBzdXBwb3J0IHRoZXNlIGF0dHJpYnV0ZXMuDQpAQCAtMjQzNSw3ICsyNDQwLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICAgICAgcmV0dXJuIG5p
bDsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5Q29sdW1uSGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAg
cmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1uSGVhZGVycygpKTsN
CisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1uSGVh
ZGVycygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5SGVhZGVyQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIGF1dG8qIGhl
YWRlckNvbnRhaW5lciA9IGJhY2tpbmdPYmplY3QtPmhlYWRlckNvbnRhaW5lcigpOw0KQEAgLTI0
NDMsMTAgKzI0NDgsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQog
ICAgICAgICB9DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eVJvd0hlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAg
ICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7
DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRl
cnMoKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eVZpc2libGVDZWxsc0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJu
IGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y2VsbHMoKSk7DQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNlbGxzKCkpOw0KIA0KICAgICAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5D
b3VudEF0dHJpYnV0ZV0pDQogICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+Y29s
dW1uQ291bnQoKSk7DQpAQCAtMjQ2OCw3ICsyNDczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5EDQogICAgICAgICAvLyByb3dzIGF0dHJpYnV0ZSBmb3IgYSBjb2x1bW4g
aXMgdGhlIGxpc3Qgb2YgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGF0IGNvbHVtbiBhdCBlYWNoIHJv
dw0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlSb3dzQXR0cmlidXRlXQ0KICAgICAgICAgICAgIHx8IFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pDQotICAgICAg
ICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7
DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNoaWxkcmVu
KCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgYXV0byogaGVhZGVy
ID0gYmFja2luZ09iamVjdC0+Y29sdW1uSGVhZGVyKCk7DQpAQCAtMjQ4OCwxMCArMjQ5MywxMCBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIH0NCiANCiAg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
Q29sdW1uSGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1uSGVhZGVycygpKTsNCisgICAgICAg
ICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1uSGVhZGVycygpKTsN
CiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJu
IGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCisgICAgICAg
ICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCiAN
CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5QVJJQUNvbHVtbkluZGV4QXR0cmlidXRlXSkNCiAgICAgICAgICAgICByZXR1cm4gQChiYWNr
aW5nT2JqZWN0LT5heENvbHVtbkluZGV4KCkpOw0KQEAgLTI1MDQsMTIgKzI1MDksMTIgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0
ZV0pIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbkNvcHk7DQogICAgICAgICAgICAgYmFja2luZ09i
amVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuQ29weSk7DQotICAgICAgICAg
ICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KKyAgICAg
ICAgICAgIHJldHVybiBtYWtlTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQogICAgICAg
ICB9DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVJvd3NBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd3NDb3B5Ow0KICAgICAgICAgICAgIGJh
Y2tpbmdPYmplY3QtPmFyaWFUcmVlUm93cyhyb3dzQ29weSk7DQotICAgICAgICAgICAgcmV0dXJu
IGNvbnZlcnRUb05TQXJyYXkocm93c0NvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNB
cnJheShyb3dzQ29weSk7DQogICAgICAgICB9DQogDQogICAgICAgICAvLyBUcmVlUm9sZXMgZG8g
bm90IHN1cHBvcnQgY29sdW1ucywgYnV0IE1hYyBBWCBleHBlY3RzIHRvIGJlIGFibGUgdG8gYXNr
IGFib3V0IGNvbHVtbnMgYXQgdGhlIGxlYXN0Lg0KQEAgLTI1NDQsNyArMjU0OSw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAvLyBUaGUgcm93cyB0aGF0IGFy
ZSBjb25zaWRlcmVkIGluc2lkZSB0aGlzIHJvdy4NCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRSb3dzQXR0cmlidXRlXSkgew0K
ICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSB8fCBiYWNraW5nT2JqZWN0
LT5pc0FSSUFUcmVlR3JpZFJvdygpKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KGJhY2tpbmdPYmplY3QtPmRpc2Nsb3NlZFJvd3MoKSk7DQorICAgICAgICAgICAgcmV0dXJu
IG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmRpc2Nsb3NlZFJvd3MoKSk7DQogICAgIH0NCiAN
CiAgICAgLy8gVGhlIHJvdyB0aGF0IGNvbnRhaW5zIHRoaXMgcm93LiBJdCBzaG91bGQgYmUgdGhl
IHNhbWUgYXMgdGhlIGZpcnN0IHBhcmVudCB0aGF0IGlzIGEgdHJlZWl0ZW0uDQpAQCAtMjYxMiw3
ICsyNjE3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJ
RWxlbWVudHNBdHRyaWJ1dGVdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGlua2VkVUlFbGVtZW50czsNCiAgICAgICAgIGJhY2tp
bmdPYmplY3QtPmxpbmtlZFVJRWxlbWVudHMobGlua2VkVUlFbGVtZW50cyk7DQotICAgICAgICBy
ZXR1cm4gY29udmVydFRvTlNBcnJheShsaW5rZWRVSUVsZW1lbnRzKTsNCisgICAgICAgIHJldHVy
biBtYWtlTlNBcnJheShsaW5rZWRVSUVsZW1lbnRzKTsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZEF0dHJp
YnV0ZV0pDQpAQCAtMjY4NSw3ICsyNjkwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5EDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5T3duc0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhT3duczsNCiAgICAgICAgIGJhY2tpbmdP
YmplY3QtPmFyaWFPd25zRWxlbWVudHMoYXJpYU93bnMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZl
cnRUb05TQXJyYXkoYXJpYU93bnMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGFyaWFP
d25zKTsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUFSSUFQb3NJblNldEF0dHJpYnV0ZV0pDQpAQCAtMjc1MSw3ICsyNzU2
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogDQogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhSb290
UmFkaWNhbmRBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgYXV0byByYWRpY2FuZCA9IGJhY2tp
bmdPYmplY3QtPm1hdGhSYWRpY2FuZCgpOw0KLSAgICAgICAgICAgIHJldHVybiByYWRpY2FuZCA/
IGNvbnZlcnRUb05TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCisgICAgICAgICAgICByZXR1cm4g
cmFkaWNhbmQgPyBtYWtlTlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KICAgICAgICAgfQ0KIA0K
ICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlNYXRoRnJhY3Rpb25OdW1lcmF0b3JBdHRyaWJ1dGVdKQ0KQEAgLTI4NDUsNyArMjg1MCw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhEZXRhaWxzRWxlbWVudHMiXSkgew0KICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRldGFpbHM7
DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhRGV0YWlsc0VsZW1lbnRzKGRldGFpbHMpOw0K
LSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoZGV0YWlscyk7DQorICAgICAgICByZXR1
cm4gbWFrZU5TQXJyYXkoZGV0YWlscyk7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlCcmFpbGxlTGFiZWxBdHRyaWJ1dGVd
KQ0KQEAgLTI4NjAsNyArMjg2NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhFcnJvck1l
c3NhZ2VFbGVtZW50cyJdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgZXJyb3JNZXNzYWdlczsNCiAgICAgICAgIGJhY2tpbmdPYmpl
Y3QtPmFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhlcnJvck1lc3NhZ2VzKTsNCi0gICAgICAgIHJl
dHVybiBjb252ZXJ0VG9OU0FycmF5KGVycm9yTWVzc2FnZXMpOw0KKyAgICAgICAgcmV0dXJuIG1h
a2VOU0FycmF5KGVycm9yTWVzc2FnZXMpOw0KICAgICB9DQogDQogICAgIC8vIE11bHRpLXNlbGVj
dGFibGUNCkBAIC0yODc4LDcgKzI4ODMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlBcmlhQ29udHJvbHNBdHRyaWJ1dGVdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUNvbnRyb2xzOw0KICAgICAg
ICAgYmFja2luZ09iamVjdC0+YXJpYUNvbnRyb2xzRWxlbWVudHMoYXJpYUNvbnRyb2xzKTsNCi0g
ICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGFyaWFDb250cm9scyk7DQorICAgICAgICBy
ZXR1cm4gbWFrZU5TQXJyYXkoYXJpYUNvbnRyb2xzKTsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUZvY3VzYWJsZUFuY2Vz
dG9yQXR0cmlidXRlXSkgew0KQEAgLTM0MjgsMjIgKzM0MzMsNiBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgfSk7DQogfQ0KIA0KLS8vIEZJWE1FOiBObyByZWFz
b24gZm9yIHRoaXMgdG8gYmUgYSBtZXRob2QgaW5zdGVhZCBvZiBhIGZ1bmN0aW9uOyBjYW4gZ2V0
IGRvY3VtZW50IGZyb20gcmFuZ2UuDQotLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooY29u
c3QgU2ltcGxlUmFuZ2UmKXJhbmdlDQotew0KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOw0K
LSAgICANCi0gICAgYXV0byBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVu
dCgpOw0KLSAgICBpZiAoIWRvY3VtZW50KQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5T
Tm90Rm91bmQsIDApOw0KLQ0KLSAgICBhdXRvIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LT5k
b2N1bWVudEVsZW1lbnQoKTsNCi0gICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpDQotICAgICAgICBy
ZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIHJldHVybiBjaGFyYWN0
ZXJSYW5nZShtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGVDb250ZW50cygqZG9jdW1lbnRFbGVt
ZW50KSwgcmFuZ2UpOw0KLX0NCi0NCiAtIChOU0ludGVnZXIpX2luZGV4Rm9yVGV4dE1hcmtlcjoo
QVhUZXh0TWFya2VyUmVmKW1hcmtlcg0KIHsNCiAgICAgaWYgKCFtYXJrZXIpDQpAQCAtMzQ2MCw3
ICszNDQ5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAg
ICAgICAgaWYgKCFyYW5nZSkNCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQog
DQotICAgICAgICAgICAgcmV0dXJuIFtwcm90ZWN0ZWRTZWxmIF9jb252ZXJ0VG9OU1JhbmdlOipy
YW5nZV0ubG9jYXRpb247DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU1JhbmdlKHJhbmdlKS5s
b2NhdGlvbjsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIHJldHVybiBOU05vdEZvdW5kOw0KQEAg
LTM4MzUsOCArMzgyNCw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0K
ICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IHJlc3VsdHM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5maW5kTWF0Y2hpbmdPYmplY3RzKCZj
cml0ZXJpYSwgcmVzdWx0cyk7DQogICAgICAgICBpZiAod2lkZ2V0Q2hpbGRyZW4pDQotICAgICAg
ICAgICAgcmV0dXJuIFt3aWRnZXRDaGlsZHJlbiBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJh
eTpjb252ZXJ0VG9OU0FycmF5KHJlc3VsdHMpXTsNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KHJlc3VsdHMpOw0KKyAgICAgICAgICAgIHJldHVybiBbd2lkZ2V0Q2hpbGRyZW4gYXJy
YXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6bWFrZU5TQXJyYXkocmVzdWx0cyldOw0KKyAgICAg
ICAgcmV0dXJuIG1ha2VOU0FycmF5KHJlc3VsdHMpOw0KICAgICB9DQogDQogICAgIC8vIFRleHRN
YXJrZXIgYXR0cmlidXRlcy4NCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElP
Uy5tbQ0KaW5kZXggZGQ0ZWIwOTZmZWU5Li5iYTQ3NGY5NmMwYjYgMTAwNjQ0DQotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50SU9TLm1tDQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lv
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tDQpAQCAtMTA4LDYgKzEwOCw3IEBAIHR5cGVk
ZWYgdm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3Ry
aW5nKiBub3RpZmljYXRpb24sDQogLSAoaWQpX2FjY2Vzc2liaWxpdHlMaXN0QW5jZXN0b3I7DQog
LSAoaWQpX2FjY2Vzc2liaWxpdHlQaG90b0Rlc2NyaXB0aW9uOw0KIC0gKE5TQXJyYXkgKilhY2Nl
c3NpYmlsaXR5SW1hZ2VPdmVybGF5RWxlbWVudHM7DQorLSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5
VmlzaWJsZUNoYXJhY3RlclJhbmdlOw0KIA0KIC8vIFRleHRNYXJrZXIgcmVsYXRlZA0KIC0gKE5T
QXJyYXkgKil0ZXh0TWFya2VyUmFuZ2U7DQpAQCAtMzk0LDYgKzM5NSw5IEBAIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKCkNCiAN
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5n
RGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkNCiB7DQor
ICAgIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGF0dHJpYnV0ZSwgIkFYVmlzaWJs
ZUNoYXJhY3RlclJhbmdlIikpDQorICAgICAgICByZXR1cm4gW05TU3RyaW5nRnJvbVJhbmdlKFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZV0pIGNyZWF0ZUpTU3Ry
aW5nUmVmXTsNCisNCiAgICAgcmV0dXJuIGNyZWF0ZUpTU3RyaW5nKCk7DQogfQ0KIA0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444887</attachid>
            <date>2021-11-20 00:00:09 -0800</date>
            <delta_ts>2021-11-20 00:11:55 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>50709</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZDIwNDhjNGZhMmY2Li44OGQxOGVlY2E1ZjMgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
NiBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUt
Y2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuDQorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbDogQWRkZWQuDQorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOg0KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnM6DQorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zOg0KKw0KIDIwMjEtMTEtMTkgIEtpZXQgSG8gIDx0aG8yMkBhcHBsZS5jb20+DQogDQogICAg
ICAgICBJbnRlZ3JhdGUgbW90aW9uIHBhdGggdHJhbnNmb3JtcyBpbiB0cmFuc2Zvcm1hdGlvbiBw
aXBlbGluZQ0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1j
aGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92
aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
DQppbmRleCAwMDAwMDAwMDAwMDAuLmNkYmI4YzQyMmRhNw0KLS0tIC9kZXYvbnVsbA0KKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3Rl
ZC50eHQNCkBAIC0wLDAgKzEsMTIgQEANCitUaGlzIHRlc3RzIHRoYXQgdmlzaWJsZUNoYXJhY3Rl
clJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSByYW5nZXMgd2hpbGUgbW9kaWZ5aW5nIG9i
c2N1cmVkIGNvbnRlbnQuDQorDQorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLg0KKw0KKw0KK1Zp
c2libGUgcmFuZ2U6IE5TUmFuZ2U6IHswLCA0MjA1fQ0KK1Zpc2libGUgcmFuZ2UgKDUwMCwgMjAw
KTogTlNSYW5nZTogezAsIDM2MH0NCitWaXNpYmxlIHJhbmdlLCBvZmZzZXQ6IDIwMCAoMjAwLCA1
MDApOiBOU1JhbmdlOiB7MCwgNjkwfQ0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUN
CisNCitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K
aW5kZXggMDAwMDAwMDAwMDAwLi4zOWQzMmRiZDIwMzMNCi0tLSAvZGV2L251bGwNCisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0KQEAg
LTAsMCArMSw3MyBAQA0KKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4NCis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keSBpZD0iYm9keSI+DQorDQorPGRpdiBp
ZD0iZ3JvdXAiPg0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QN
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0K
K3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQor
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQorPC9kaXY+DQorDQorPHNjcmlwdD4NCisNCisgICAgZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdHMgdGhhdCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgcmV0dXJucyBleHBl
Y3RlZCB2aXNpYmxlIHJhbmdlcyB3aGlsZSBtb2RpZnlpbmcgb2JzY3VyZWQgY29udGVudC4iKTsN
CisNCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgew0KKyAgICAgICAg
dmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
Imdyb3VwIikuY2hpbGRBdEluZGV4KDApOw0KKyAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2U6
ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hh
cmFjdGVyUmFuZ2UiKSk7DQorDQorICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdTaXplKDUwMCwg
MjAwKTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxlIHJhbmdlICg1MDAsIDIwMCk6ICIgKyB0ZXh0
LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFu
Z2UiKSk7DQorDQorICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDIwMDsNCisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0Vmlld1NpemUoMjAwLCA1MDApOw0KKyAgICAgICAgZGVidWcoIlZp
c2libGUgcmFuZ2UsIG9mZnNldDogMjAwICgyMDAsIDUwMCk6ICIgKyB0ZXh0LnN0cmluZ0Rlc2Ny
aXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAiKS5zdHlsZS52aXNpYmlsaXR5
ID0gImhpZGRlbiI7DQorICAgIH0NCisNCis8L3NjcmlwdD4NCisNCis8L2JvZHk+DQorPC9odG1s
Pg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMNCmluZGV4IGE0MmM3
MjlmMDdmZi4uYTRiMTA0ZTA1N2JlIDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zL1Rlc3RFeHBlY3RhdGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0
RXhwZWN0YXRpb25zDQpAQCAtMjExOCw3ICsyMTE4LDcgQEAgd2Via2l0Lm9yZy9iLzE0ODgwNiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wt
c3ANCiBmYXN0L2RvbS9saW5raWZ5LXBob25lLW51bWJlcnMuaHRtbCBbIFBhc3MgXQ0KIA0KIGFj
Y2Vzc2liaWxpdHkvdmlkZW8tZWxlbWVudC11cmwtYXR0cmlidXRlLmh0bWwgWyBQYXNzIF0NCi0N
CithY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBQYXNzIF0NCiBh
Y2Nlc3NpYmlsaXR5L2FuY2VzdG9yLWNvbXB1dGF0aW9uLmh0bWwgWyBQYXNzIF0NCiANCiAjIEVu
YWJsZSAiYXJpYS1jdXJyZW50IiB0ZXN0cyBmb3IgaU9TLg0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucw0KaW5kZXggOWEwNzQ1ODc5MzU0Li45ZDg2NWVi
MDVlNGUgMTAwNjQ0DQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0
aW9ucw0KQEAgLTYwMSw2ICs2MDEsMTEgQEAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1pbnNl
cnQtaHRtbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0NCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hl
Y2stYXN5bmMuaHRtbCBbIEZhaWx1cmUgXQ0KIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdW5p
ZmllZC1lbXVsYXRpb24uaHRtbCBbIEZhaWx1cmUgXQ0KIA0KKyMgU2tpcCBkdWUgdG8gbGFjayBv
ZiBEdW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9tSWRlbnRpZmVyYCBp
bXBsZW1lbnRhdGlvbi4NCithY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZvci1h
ZGhvYy1yYWRpby1ncm91cHMuaHRtbCBbIFNraXAgXQ0KKyMgU2tpcCBkdWUgdG8gbGFjayBvZiBE
dW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRGVzY3JpcHRpb25P
ZkF0dHJpYnV0ZVZhbHVlYCBpbXBsZW1lbnRhdGlvbi4NCithY2Nlc3NpYmlsaXR5L21hYy92aXNp
YmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIFsgU2tpcCBdDQorDQogIyA8cmRhcjovL3Byb2JsZW0v
MjYwNTA5MjM+IFRoZSByZXN1bHQgaXMgcHJvYmFibHkgc3RpbGwgYSBwYXNzLCBidXQgd2UgZG9u
J3QgaGF2ZSBhIHdheQ0KICMgdG8gaGF2ZSBwbGF0Zm9ybSBzcGVjaWZpYyByZXN1bHRzIHRoYXQg
YXJlIGRpZmZlcmVudCBiZXR3ZWVuIFdLMSBhbmQgV0syLg0KIGFjY2Vzc2liaWxpdHkvbWFjL2Rv
Y3VtZW50LWF0dHJpYnV0ZXMuaHRtbCBbIEZhaWx1cmUgXQ0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1Rlc3RFeHBlY3RhdGlvbnMNCmluZGV4IGE3MWU0MzBlYjhlOS4uMGZiOWMzOTkxMTBiIDEw
MDY0NA0KLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMNCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zDQpAQCAtMjc4LDYg
KzI3OCw3IEBAIGFjY2Vzc2liaWxpdHkvYXJpYS1saXN0Ym94LWNsZWFyLXNlbGVjdGlvbi1jcmFz
aC5odG1sIFsgU2tpcCBdDQogYWNjZXNzaWJpbGl0eS9saXN0Ym94LWNsZWFyLXNlbGVjdGlvbi5o
dG1sIFsgU2tpcCBdDQogYWNjZXNzaWJpbGl0eS9lbWJlZGRlZC1pbWFnZS1kZXNjcmlwdGlvbi5o
dG1sIFsgU2tpcCBdDQogYWNjZXNzaWJpbGl0eS9pbWctbm8tYWx0LW5vdC1pZ25vcmVkLXdpdGgt
dGl0bGUuaHRtbCBbIFNraXAgXQ0KK2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFu
Z2UuaHRtbCBbIFNraXAgXQ0KIA0KICMgTmVlZCB0byBpbXBsZW1lbnQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSwgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aGFzV2ViQXBwbGljYXRpb25BbmNlc3RvcigpLA0KICMgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNJbkRlc2NyaXB0aW9uTGlzdERldGFpbCgpLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0luRGVzY3JpcHRpb25MaXN0VGVybSgpLCBhbmQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCmluZGV4IDhiZWE0ZjZmZmQ1
NS4uYjZjMGY3MDBjM2U3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsNTEgQEANCisyMDIxLTEx
LTE5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQorDQorICAgICAgICBB
WDogV2ViS2l0OiBuZWVkIGEgbWV0aG9kIHRvIGdldCB2aXNpYmxlIHRleHQgYW5kIGZyYW1lIG9m
IGFuIGVsZW1lbnQgb24gc2NyZWVuDQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzMzM2DQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4NCisNCisgICAgICAgIEltcGxlbWVudCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgZm9yIHN0
YXRpYyB0ZXh0IGVsZW1lbnRzIHNvIHRoYXQgQm9va3MgY2FuIGRldGVybWluZSB0aGUgdmlzaWJs
ZQ0KKyAgICAgICAgY29udGVudCBvbiBhIHBhZ2UuDQorDQorICAgICAgICBUZXN0OiBhY2Nlc3Np
YmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwNCisNCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgY29uc3QpOg0KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnVub2JzY3VyZWRDb250ZW50UmVjdCBjb25z
dCk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOg0KKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoNCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW06DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3Np
YmlsaXR5VmlzaWJsZUNvbnRlbnRSZWN0XSk6DQorICAgICAgICAoYWNjZXNzaWJsZUVsZW1lbnRz
Rm9yT2JqZWN0cyk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5RmluZE1hdGNoaW5nT2JqZWN0czpdKToNCisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIHBvc2l0aW9uRm9yVGV4dE1hcmtlcjpdKToNCisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJGb3JQb3NpdGlvbjpd
KToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHN0cmluZ0ZvclJh
bmdlOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZnJhbWVG
b3JSYW5nZTpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlNYXRoUmFkaWNhbmRdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIF9jb252ZXJ0VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb0RPTVJhbmdlOl0pOiBEZWxl
dGVkLg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp2aXNpYmxlQ2hh
cmFjdGVyUmFuZ2UgY29uc3QpOg0KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnVub2JzY3VyZWRDb250ZW50UmVjdCBjb25zdCk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmg6DQorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToNCisg
ICAgICAgIChtYWtlTlNBcnJheSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckJhc2UgYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZV0pOg0KKyAgICAg
ICAgKG1ha2VOU1JhbmdlKToNCisgICAgICAgIChtYWtlRE9NUmFuZ2UpOg0KKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGJhc2VVcGRhdGVCYWNraW5nU3RvcmVd
KToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBsaW5lUmVj
dHNBbmRUZXh0XSk6DQorICAgICAgICAoY29udmVydFRvTlNBcnJheSk6IERlbGV0ZWQuDQorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2hpbGRyZW5W
ZWN0b3JBcnJheV0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgX2luZGV4Rm9yVGV4dE1hcmtlcjpdKToNCisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpm
b3JQYXJhbWV0ZXI6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBfY29udmVydFRvTlNSYW5nZTpdKTogRGVsZXRlZC4NCisNCiAyMDIxLTExLTE5ICBLaWV0IEhv
ICA8dGhvMjJAYXBwbGUuY29tPg0KIA0KICAgICAgICAgSW1wbGVtZW50IHBhcnNpbmcgYW5kIGFu
aW1hdGlvbiBzdXBwb3J0IGZvciByYXkoKSBzaGFwZSBhY2NlcHRlZCBieSBvZmZzZXQtcGF0aA0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwDQppbmRleCA5Mzg0OGUxY2FiNzYuLjY3NDZmNmNiYjQ4ZiAxMDA2NDQNCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHANCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHANCkBA
IC03MDQsNiArNzA0LDUyIEBAIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmVsZW1lbnRSYW5nZSgpIGNvbnN0DQogICAgIHJldHVybiBBWE9iamVjdENhY2hl
OjpyYW5nZUZvck5vZGVDb250ZW50cygqbm9kZSk7DQogfQ0KIA0KK3N0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNv
bnN0DQorew0KKyAgICBhdXRvIHJhbmdlID0gZWxlbWVudFJhbmdlKCk7DQorICAgIGlmICghcmFu
Z2UpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KKw0KKyAgICBhdXRvIGNvbnRlbnRS
ZWN0ID0gdW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7DQorICAgIGF1dG8gZWxlbWVudFJlY3QgPSBz
bmFwcGVkSW50UmVjdCh0aGlzLT5lbGVtZW50UmVjdCgpKTsNCisgICAgaWYgKCFjb250ZW50UmVj
dC5pbnRlcnNlY3RzKGVsZW1lbnRSZWN0KSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
DQorDQorICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gc3RhcnRCb3VuZGFyeSA9IHJh
bmdlLT5zdGFydDsNCisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBlbmRCb3VuZGFy
eSA9IHJhbmdlLT5lbmQ7DQorDQorICAgIC8vIE9yaWdpbiBpc24ndCBjb250YWluZWQgaW4gdmlz
aWJsZSByZWN0LCBzdGFydCBtb3ZpbmcgZm9yd2FyZCBieSBsaW5lLg0KKyAgICB3aGlsZSAoIWNv
bnRlbnRSZWN0LmNvbnRhaW5zKGVsZW1lbnRSZWN0LmxvY2F0aW9uKCkpKSB7DQorICAgICAgICBh
dXRvIG5leHRMaW5lUG9zaXRpb24gPSBuZXh0TGluZUVuZFBvc2l0aW9uKFZpc2libGVQb3NpdGlv
bihtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oKnN0YXJ0Qm91bmRhcnkpKSk7DQorICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IHRlc3RTdGFydEJvdW5kYXJ5ID0gbWFrZUJv
dW5kYXJ5UG9pbnQobmV4dExpbmVQb3NpdGlvbik7DQorICAgICAgICBpZiAoIXRlc3RTdGFydEJv
dW5kYXJ5IHx8ICFjb250YWlucygqcmFuZ2UsICp0ZXN0U3RhcnRCb3VuZGFyeSkpDQorICAgICAg
ICAgICAgYnJlYWs7DQorICAgICAgICANCisgICAgICAgIHN0YXJ0Qm91bmRhcnkgPSB0ZXN0U3Rh
cnRCb3VuZGFyeTsNCisgICAgICAgIGVsZW1lbnRSZWN0ID0gYm91bmRzRm9yUmFuZ2UoU2ltcGxl
UmFuZ2UoKnN0YXJ0Qm91bmRhcnksIHJhbmdlLT5lbmQpKTsNCisgICAgICAgIGlmIChlbGVtZW50
UmVjdC5pc0VtcHR5KCkpDQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgLy8g
RW5kIGlzbid0IGNvbnRhaW5lZCBpbiB2aXNpYmxlIHJlY3QsIHN0YXJ0IG1vdmluZyBiYWNrd2Fy
ZHMgYnkgbGluZS4NCisgICAgd2hpbGUgKCFjb250ZW50UmVjdC5jb250YWlucyhlbGVtZW50UmVj
dC5sb2NhdGlvbigpICsgZWxlbWVudFJlY3Quc2l6ZSgpKSkgew0KKyAgICAgICAgYXV0byBwcmV2
aW91c0xpbmVQb3NpdGlvbiA9IHByZXZpb3VzTGluZVN0YXJ0UG9zaXRpb24oVmlzaWJsZVBvc2l0
aW9uKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigqZW5kQm91bmRhcnkpKSk7DQorICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IHRlc3RFbmRCb3VuZGFyeSA9IG1ha2VCb3Vu
ZGFyeVBvaW50KHByZXZpb3VzTGluZVBvc2l0aW9uKTsNCisgICAgICAgIGlmICghdGVzdEVuZEJv
dW5kYXJ5IHx8ICFjb250YWlucygqcmFuZ2UsICp0ZXN0RW5kQm91bmRhcnkpKQ0KKyAgICAgICAg
ICAgIGJyZWFrOw0KKyAgICAgICAgDQorICAgICAgICBlbmRCb3VuZGFyeSA9IHRlc3RFbmRCb3Vu
ZGFyeTsNCisgICAgICAgIGVsZW1lbnRSZWN0ID0gYm91bmRzRm9yUmFuZ2UoeyAqc3RhcnRCb3Vu
ZGFyeSwgKmVuZEJvdW5kYXJ5IH0pOw0KKyAgICAgICAgaWYgKGVsZW1lbnRSZWN0LmlzRW1wdHko
KSkNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKw0KKyAgICBpZiAoIXN0YXJ0Qm91bmRh
cnkgfHwgIWVuZEJvdW5kYXJ5KQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisgICAg
DQorICAgIHJldHVybiBTaW1wbGVSYW5nZSgqc3RhcnRCb3VuZGFyeSwgKmVuZEJvdW5kYXJ5KTsN
Cit9DQorDQogc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6
ZmluZFRleHRSYW5nZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoU3RyaW5ncywgY29uc3Qg
U2ltcGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24pIGNvbnN0DQogew0KICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmb3VuZDsN
CkBAIC0zMTgyLDYgKzMyMjgsMTQgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxU
b01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmIHN1YmZvY3UNCiAgICAgICAg
IHNjcm9sbFBhcmVudC0+c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhuZXdTdWJmb2N1
cyk7DQogfQ0KIA0KK0Zsb2F0UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1bm9ic2N1cmVkQ29u
dGVudFJlY3QoKSBjb25zdA0KK3sNCisgICAgYXV0byBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCk7DQorICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpDQorICAgICAgICBy
ZXR1cm4geyB9Ow0KKyAgICByZXR1cm4gRmxvYXRSZWN0KHNuYXBwZWRJbnRSZWN0KGRvY3VtZW50
LT52aWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVjdCgpKSk7DQorfQ0KKw0KIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9pbnQpIGNvbnN0DQogew0KICAgICAvLyBTZWFyY2ggdXAgdGhlIHBhcmVudCBjaGFpbiBhbmQg
Y3JlYXRlIGEgdmVjdG9yIG9mIGFsbCBzY3JvbGxhYmxlIHBhcmVudCBvYmplY3RzDQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KaW5k
ZXggMjFmZjRhMjhhNWE2Li41OWNlYTRmNGIzOTcgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgNCkBAIC04MDgsNyArODA4LDcg
QEAgcHJvdGVjdGVkOg0KICAgICB2b2lkIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Ow0KICAg
ICB2b2lkIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7DQogICAgIHZpcnR1YWwg
Ym9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9DQotDQor
ICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsNCiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmFkaW9Hcm91cEFuY2VzdG9yKCkgY29uc3Q7DQogDQog
ICAgIGJvb2wgYWxsb3dzVGV4dFJhbmdlcygpIGNvbnN0Ow0KQEAgLTgyMSw2ICs4MjEsNyBAQCBw
cml2YXRlOg0KICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU9mU3RyaW5nQ2xv
c2VzdFRvUmFuZ2VJbkRpcmVjdGlvbihjb25zdCBTaW1wbGVSYW5nZSYsIEFjY2Vzc2liaWxpdHlT
ZWFyY2hEaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7DQogICAgIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHNlbGVjdGlvblJhbmdlKCkgY29uc3Q7DQogICAgIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZpbmRUZXh0UmFuZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHNlYXJjaFN0cmluZ3MsIGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNl
YXJjaFRleHREaXJlY3Rpb24pIGNvbnN0Ow0KKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCiANCiBwcm90ZWN0ZWQ6
IC8vIEZJWE1FOiBNYWtlIHRoZSBkYXRhIG1lbWJlcnMgcHJpdmF0ZS4NCiAgICAgYm9vbCBjaGls
ZHJlbkluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkluaXRpYWxpemVkOyB9
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaA0KaW5kZXggZTE1OTYyMWM4NTQ5Li4xNjc5ZjAxYzUxZGYg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgNCkBAIC05ODgsNiArOTg4LDcgQEAgcHVibGljOg0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSA9IDA7DQogICAgIHZpcnR1YWwg
RmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgRmxvYXRS
ZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNv
bnZlcnNpb25TcGFjZSkgY29uc3QgPSAwOw0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCB1bm9ic2N1
cmVkQ29udGVudFJlY3QoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0No
ZWNrZWRTdGF0ZSgpIGNvbnN0ID0gMDsNCiAgICAgDQogICAgIC8vIEluIGEgbXVsdGktc2VsZWN0
IGxpc3QsIG1hbnkgaXRlbXMgY2FuIGJlIHNlbGVjdGVkIGJ1dCBvbmx5IG9uZSBpcyBhY3RpdmUg
YXQgYSB0aW1lLg0KQEAgLTk5Nyw2ICs5OTgsNyBAQCBwdWJsaWM6DQogICAgIHZpcnR1YWwgYm9v
bCBoYXNJdGFsaWNGb250KCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIGJvb2wgaGFzTWlzc3Bl
bGxpbmcoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gbWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxp
dHlTZWFyY2hEaXJlY3Rpb24pIGNvbnN0ID0gMDsNCisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSBjb25zdCA9IDA7DQogICAgIHZp
cnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBo
YXNTYW1lRm9udChjb25zdCBBWENvcmVPYmplY3QmKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwg
Ym9vbCBoYXNTYW1lRm9udENvbG9yKGNvbnN0IEFYQ29yZU9iamVjdCYpIGNvbnN0ID0gMDsNCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tDQppbmRleCA1ZTBjOGM4ZWJjNjcu
Ljk4OTM0MWFmYzIxMiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tDQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQ0KQEAgLTUyLDYgKzUyLDcgQEANCiAjaW1wb3J0ICJTVkdFbGVtZW50SW5saW5lcy5oIg0KICNp
bXBvcnQgIlNWR05hbWVzLmgiDQogI2ltcG9ydCAiU2VsZWN0aW9uR2VvbWV0cnkuaCINCisjaW1w
b3J0ICJTaW1wbGVSYW5nZS5oIg0KICNpbXBvcnQgIlRleHRJdGVyYXRvci5oIg0KICNpbXBvcnQg
IldBS1Njcm9sbFZpZXcuaCINCiAjaW1wb3J0ICJXQUtXaW5kb3cuaCINCkBAIC0xNjk0LDEyICsx
Njk1LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5n
ICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpDQogew0KICAgICBpZiAoIVtzZWxmIF9wcmVwYXJl
QWNjZXNzaWJpbGl0eUNhbGxdKQ0KICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87DQotICAgIA0K
LSAgICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7DQot
ICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpDQotICAgICAgICByZXR1cm4g
Q0dSZWN0WmVybzsNCi0gICAgYXV0byByZWN0ID0gRmxvYXRSZWN0KHNuYXBwZWRJbnRSZWN0KGRv
Y3VtZW50LT52aWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVjdCgpKSk7DQotICAgIHJldHVybiBb
c2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lv
blNwYWNlOjpTY3JlZW5dOw0KKyAgICByZXR1cm4gW3NlbGYgY29udmVydFJlY3RUb1NwYWNlOnNl
bGYuYXhCYWNraW5nT2JqZWN0LT51bm9ic2N1cmVkQ29udGVudFJlY3QoKSBzcGFjZTpBY2Nlc3Np
YmlsaXR5Q29udmVyc2lvblNwYWNlOjpTY3JlZW5dOw0KIH0NCiANCiAvLyBUaGUgImNlbnRlciBw
b2ludCIgaXMgd2hlcmUgVm9pY2VPdmVyIHdpbGwgInByZXNzIiBhbiBvYmplY3QuIFRoaXMgbWF5
IG5vdCBiZSB0aGUgYWN0dWFsDQpAQCAtMTkxNSw3ICsxOTExLDcgQEAgc3RhdGljIE5TQXJyYXkg
KmFjY2Vzc2libGVFbGVtZW50c0Zvck9iamVjdHMoY29uc3QgQVhDb3JlT2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2gNCiAgICAgICAgIH0pOw0KICAgICB9DQogDQotICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KGFjY2Vzc2libGVFbGVtZW50cyk7DQorICAgIHJldHVybiBtYWtlTlNBcnJheShhY2Nl
c3NpYmxlRWxlbWVudHMpOw0KIH0NCiANCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eURldGFp
bHNFbGVtZW50cw0KQEAgLTIxMDQsNyArMjEwMCw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3Jp
dGVyaWEgY3JpdGVyaWEgPSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQcmVk
aWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKHBhcmFtZXRlcnMpOw0KICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsNCiAgICAgc2Vs
Zi5heEJhY2tpbmdPYmplY3QtPmZpbmRNYXRjaGluZ09iamVjdHMoJmNyaXRlcmlhLCByZXN1bHRz
KTsNCi0gICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkocmVzdWx0cyk7DQorICAgIHJldHVybiBt
YWtlTlNBcnJheShyZXN1bHRzKTsNCiB9DQogDQogLSAodm9pZClhY2Nlc3NpYmlsaXR5TW9kaWZ5
U2VsZWN0aW9uOihUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkgaW5jcmVhc2U6KEJPT0wpaW5j
cmVhc2UNCkBAIC0yMjA5LDQ3ICsyMjA1LDYgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVy
ZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgIHJldHVybiByYW5nZSA/IFtzZWxmIGNvbnRl
bnRGb3JTaW1wbGVSYW5nZToqcmFuZ2UgYXR0cmlidXRlZDphdHRyaWJ1dGVkXSA6IG5pbDsNCiB9
DQogDQotLy8gRklYTUU6IE5vIHJlYXNvbiBmb3IgdGhpcyB0byBiZSBhIG1ldGhvZCBpbnN0ZWFk
IG9mIGEgZnVuY3Rpb24uDQotLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooY29uc3QgU2lt
cGxlUmFuZ2UmKXJhbmdlDQotew0KLSAgICBhdXRvJiBkb2N1bWVudCA9IHJhbmdlLnN0YXJ0LmRv
Y3VtZW50KCk7DQotICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsNCi0gICAgaWYg
KCFmcmFtZSkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0N
Ci0gICAgYXV0byogcm9vdEVkaXRhYmxlRWxlbWVudCA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQotICAgIGF1dG8qIHNjb3BlID0gcm9vdEVk
aXRhYmxlRWxlbWVudCA/IHJvb3RFZGl0YWJsZUVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQoKTsNCi0gICAgaWYgKCFzY29wZSkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShO
U05vdEZvdW5kLCAwKTsNCi0NCi0gICAgLy8gTW91c2UgZXZlbnRzIG1heSBjYXVzZSBUU00gdG8g
YXR0ZW1wdCB0byBjcmVhdGUgYW4gTlNSYW5nZSBmb3IgYSBwb3J0aW9uIG9mIHRoZSB2aWV3DQot
ICAgIC8vIHRoYXQgaXMgbm90IGluc2lkZSB0aGUgY3VycmVudCBlZGl0YWJsZSByZWdpb24uIFRo
ZXNlIGNoZWNrcyBlbnN1cmUgd2UgZG9uJ3QgcHJvZHVjZQ0KLSAgICAvLyBwb3RlbnRpYWxseSBp
bnZhbGlkIGRhdGEgd2hlbiByZXNwb25kaW5nIHRvIHN1Y2ggcmVxdWVzdHMuDQotICAgIGlmICgh
c2NvcGUtPmNvbnRhaW5zKHJhbmdlLnN0YXJ0LmNvbnRhaW5lci5wdHIoKSkgfHwgIXNjb3BlLT5j
b250YWlucyhyYW5nZS5lbmQuY29udGFpbmVyLnB0cigpKSkNCi0gICAgICAgIHJldHVybiBOU01h
a2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgcmV0dXJuIE5TTWFrZVJhbmdlKGNoYXJh
Y3RlckNvdW50KHsgeyAqc2NvcGUsIDAgfSwgcmFuZ2Uuc3RhcnQgfSksIGNoYXJhY3RlckNvdW50
KHJhbmdlKSk7DQotfQ0KLQ0KLS0gKHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+KV9jb252ZXJ0
VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZQ0KLXsNCi0gICAgaWYgKHJhbmdlLmxvY2F0aW9uID09
IE5TTm90Rm91bmQpDQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KLQ0KLSAgICAvLyBv
dXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBvbmx5IGNhbGxlZCBieSBpbnB1
dCBtZXRob2RzIHRoYXQNCi0gICAgLy8gY29uY2VudHJhdGUgb24gYSBnaXZlbiBhcmVhIGNvbnRh
aW5pbmcgdGhlIHNlbGVjdGlvbg0KLSAgICAvLyBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBv
ZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0aG9zZSBpcyBub3QNCi0g
ICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlvbiBpcyBw
cm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzDQotICAgIC8vIHRvIHVzZSB0aGUgcm9vdCBlZGl0
YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQgYXMgdGhlIHBvc2l0aW9uYWwgYmFz
ZS4NCi0gICAgLy8gVGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250
ZXh0Lg0KLSAgICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50
KCk7DQotICAgIGF1dG8gc2VsZWN0aW9uUm9vdCA9IGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQotICAgIGF1dG8gc2NvcGUg
PSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGRvY3VtZW50LT5kb2N1bWVudEVsZW1l
bnQoKTsNCi0gICAgaWYgKCFzY29wZSkNCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQot
DQotICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKCpzY29wZSksIHJhbmdlKTsNCi19DQogDQogLy8gVGhpcyBtZXRob2QgaXMgaW50
ZW5kZWQgdG8gdGFrZSBhIHRleHQgbWFya2VyIHJlcHJlc2VudGluZyBhIFZpc2libGVQb3NpdGlv
biBhbmQgY29udmVydCBpdA0KIC8vIGludG8gYSBub3JtYWxpemVkIGxvY2F0aW9uIHdpdGhpbiB0
aGUgZG9jdW1lbnQuDQpAQCAtMjI2Nyw3ICsyMjIyLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCog
cmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgICAgICBhdXRvIHJhbmdlID0gY2Fj
aGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjaGFyYWN0ZXJPZmZzZXQsIGNo
YXJhY3Rlck9mZnNldCk7DQogICAgICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgICAgIHJldHVy
biBOU05vdEZvdW5kOw0KLSAgICAgICAgcmV0dXJuIFtzZWxmIF9jb252ZXJ0VG9OU1JhbmdlOipy
YW5nZV0ubG9jYXRpb247DQorICAgICAgICByZXR1cm4gbWFrZU5TUmFuZ2UocmFuZ2UpLmxvY2F0
aW9uOw0KICAgICB9DQogICAgIHJldHVybiBOU05vdEZvdW5kOw0KIH0NCkBAIC0yMzQ2LDcgKzIz
MDEsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmll
dykNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCiAgICAgICAg
IHJldHVybiBuaWw7DQogDQotICAgIGF1dG8gcmFuZ2UgPSBbc2VsZiBfY29udmVydFRvRE9NUmFu
Z2U6TlNNYWtlUmFuZ2UocG9zaXRpb24sIDApXTsNCisgICAgYXV0byByYW5nZSA9IG1ha2VET01S
YW5nZShzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKSwgTlNNYWtlUmFuZ2UocG9zaXRp
b24sIDApKTsNCiAgICAgaWYgKCFyYW5nZSkNCiAgICAgICAgIHJldHVybiBuaWw7DQogDQpAQCAt
MjQxNCw3ICsyMzY5LDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdB
S1ZpZXcqIHZpZXcpDQogew0KICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNh
bGxdKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCi0gICAgYXV0byB3ZWJSYW5nZSA9IFtzZWxmIF9j
b252ZXJ0VG9ET01SYW5nZTpyYW5nZV07DQorICAgIGF1dG8gd2ViUmFuZ2UgPSBtYWtlRE9NUmFu
Z2Uoc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCksIHJhbmdlKTsNCiAgICAgaWYgKCF3
ZWJSYW5nZSkNCiAgICAgICAgIHJldHVybiBuaWw7DQogICAgIHJldHVybiBzZWxmLmF4QmFja2lu
Z09iamVjdC0+c3RyaW5nRm9yUmFuZ2UoKndlYlJhbmdlKTsNCkBAIC0yNjAwLDYgKzI1NTUsMTcg
QEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQog
ICAgIHJldHVybiBbc2VsZiBwcmV2aW91c01hcmtlckZvckNoYXJhY3Rlck9mZnNldDpzdGFydF07
DQogfQ0KIA0KKy0gKENHUmVjdClmcmFtZUZvclJhbmdlOihOU1JhbmdlKXJhbmdlDQorew0KKyAg
ICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KKyAgICAgICAgcmV0dXJu
IENHUmVjdFplcm87DQorICAgIGF1dG8gd2ViUmFuZ2UgPSBtYWtlRE9NUmFuZ2Uoc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmRvY3VtZW50KCksIHJhbmdlKTsNCisgICAgaWYgKCF3ZWJSYW5nZSkNCisg
ICAgICAgIHJldHVybiBDR1JlY3RaZXJvOw0KKyAgICBhdXRvIHJlY3QgPSBzZWxmLmF4QmFja2lu
Z09iamVjdC0+Ym91bmRzRm9yUmFuZ2UoKndlYlJhbmdlKTsNCisgICAgcmV0dXJuIFtzZWxmIGNv
bnZlcnRSZWN0VG9TcGFjZTpyZWN0IHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6
OlNjcmVlbl07DQorfQ0KKw0KIC8vIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIHRvIHJldHVybiB0
aGUgYm91bmRzIG9mIGEgdGV4dCBtYXJrZXIgcmFuZ2UgaW4gc2NyZWVuIGNvb3JkaW5hdGVzLg0K
IC0gKENHUmVjdClmcmFtZUZvclRleHRNYXJrZXJzOihOU0FycmF5ICopYXJyYXkNCiB7DQpAQCAt
MjkzMSw3ICsyODk3LDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdB
S1ZpZXcqIHZpZXcpDQogICAgICAgICByZXR1cm4gbmlsOw0KIA0KICAgICBhdXRvIHJhZGljYW5k
ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPm1hdGhSYWRpY2FuZCgpOw0KLSAgICByZXR1cm4gcmFk
aWNhbmQgPyBjb252ZXJ0VG9OU0FycmF5KCpyYWRpY2FuZCkgOiBuaWw7DQorICAgIHJldHVybiBy
YWRpY2FuZCA/IG1ha2VOU0FycmF5KCpyYWRpY2FuZCkgOiBuaWw7DQogfQ0KIA0KIC0gKFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICopYWNjZXNzaWJpbGl0eU1hdGhOdW1lcmF0b3JPYmpl
Y3QNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQppbmRleCAxMWE3OWIxMjE3MmQuLjM2OTUy
Zjk0MDhmYiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0KQEAgLTk5Miw2ICs5OTIs
MTMgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojp1cGRhdGVCYWNraW5nU3RvcmUoKQ0KICAgICAg
ICAgdHJlZS0+YXBwbHlQZW5kaW5nQ2hhbmdlcygpOw0KIH0NCiANCitzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBBWElzb2xhdGVkT2JqZWN0Ojp2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSBjb25z
dA0KK3sNCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsNCisgICAgYXV0byogYXhPYmplY3Qg
PSBhc3NvY2lhdGVkQVhPYmplY3QoKTsNCisgICAgcmV0dXJuIGF4T2JqZWN0ID8gYXhPYmplY3Qt
PnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIDogc3RkOjpudWxsb3B0Ow0KK30NCisNCiBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBBWElzb2xhdGVkT2JqZWN0OjpyYW5nZUZvclBsYWluVGV4dFJh
bmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJiBheFJhbmdlKSBjb25zdA0KIHsNCiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsNCkBAIC0xNDcwLDYgKzE0NzcsMTUgQEAgdm9pZCBBWElzb2xhdGVk
T2JqZWN0OjpzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3Np
dGlvblJhbmcNCiAgICAgICAgIG9iamVjdC0+c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5n
ZSh2aXNpYmxlUG9zaXRpb25SYW5nZSk7DQogfQ0KIA0KK0Zsb2F0UmVjdCBBWElzb2xhdGVkT2Jq
ZWN0Ojp1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxGbG9hdFJlY3Q+KFt0aGlzXSAo
KSAtPiBGbG9hdFJlY3Qgew0KKyAgICAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGFzc29jaWF0ZWRB
WE9iamVjdCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBvYmplY3QtPnVub2JzY3VyZWRDb250ZW50
UmVjdCgpOw0KKyAgICAgICAgcmV0dXJuIHsgfTsNCisgICAgfSk7DQorfQ0KKw0KIHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRSYW5nZSgpIGNvbnN0
DQogew0KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
aA0KaW5kZXggM2I0ZWVhMWZiYjU4Li5iYTYzZGMyNzIxZDIgMTAwNjQ0DQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgNCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuaA0KQEAgLTQ0MSw5ICs0NDEsMTEgQEAgcHJpdmF0ZToNCiAgICAgQVhDb3JlT2JqZWN0
KiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3Qgb3ZlcnJpZGU7DQogICAgIGludCBsaW5lRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7DQogICAgIFBsYWluVGV4dFJhbmdlIHBsYWluVGV4dFJh
bmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBj
b25zdCBvdmVycmlkZTsNCisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gdmlzaWJsZUNo
YXJhY3RlclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7DQogICAgIGludCBpbmRleChjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsNCiAgICAgdm9pZCBsaW5lQnJlYWtzKFZlY3Rv
cjxpbnQ+JikgY29uc3Qgb3ZlcnJpZGU7DQotDQorICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29u
dGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsNCisgICAgDQogICAgIC8vIEF0dHJpYnV0ZSBzZXR0
ZXJzLg0KICAgICB2b2lkIHNldEFSSUFHcmFiYmVkKGJvb2wpIG92ZXJyaWRlOw0KICAgICB2b2lk
IHNldElzRXhwYW5kZWQoYm9vbCkgb3ZlcnJpZGU7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckJhc2UuaA0KaW5kZXggZWVhM2U2OWRlZDkzLi5hYzJiZGJmZTJhYzUgMTAwNjQ0DQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckJhc2UuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgNCkBAIC0zNCw2ICszNCw3IEBADQog
DQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIHN0cnVjdCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVy
aWE7DQorY2xhc3MgRG9jdW1lbnQ7DQogY2xhc3MgSW50UmVjdDsNCiBjbGFzcyBGbG9hdFBvaW50
Ow0KIGNsYXNzIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ow0KQEAgLTExMSwxMSArMTEyLDE1
IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRleHR1YWxDb250ZXh0
U291cmNlQ29kZSA9IEAiVUlBY2Nlc3NpYmlsDQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlN
YXRoUG9zdHNjcmlwdFBhaXJzOw0KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5TWF0aFByZXNj
cmlwdFBhaXJzOw0KIA0KKy0gKE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJS
YW5nZTsNCisNCiAtIChOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYmFzZUFjY2Vzc2li
aWxpdHlSZXNvbHZlZEVkaXRpbmdTdHlsZXM7DQogDQogZXh0ZXJuIFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlTZWFyY2hDcml0ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQ
cmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNvbnN0IE5TRGljdGlvbmFyeSAqKTsNCiAN
Ci1leHRlcm4gTlNBcnJheSAqY29udmVydFRvTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOw0KK2V4dGVybiBOU0FycmF5ICpt
YWtlTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpOw0KK2V4dGVybiBOU1JhbmdlIG1ha2VOU1JhbmdlKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KTsNCitleHRlcm4gc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4gbWFrZURPTVJhbmdlKFdlYkNvcmU6OkRvY3VtZW50KiwgTlNSYW5nZSk7DQog
DQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpDQogLSAoaWQpX2FjY2Vzc2liaWxpdHlXZWJEb2N1
bWVudFZpZXc7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tDQppbmRl
eCAxZTU2OTFkMTlmOTIuLjVmN2FkMjg2OWU3NCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQ0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLm1tDQpAQCAtMjYxLDcgKzI2MSw3IEBAIHN0YXRpYyBOU0FycmF5ICpj
b252ZXJ0TWF0aFBhaXJzVG9OU0FycmF5KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpDQogICAgIH0pLmF1dG9yZWxlYXNlKCk7DQogfQ0KIA0KLU5TQXJyYXkgKmNvbnZlcnRU
b05TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIGNoaWxkcmVuKQ0KK05TQXJyYXkgKm1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6
OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbikNCiB7
DQogICAgIHJldHVybiBjcmVhdGVOU0FycmF5KGNoaWxkcmVuLCBbXSAoY29uc3QgYXV0byYgY2hp
bGQpIC0+IGlkIHsNCiAgICAgICAgIGF1dG8gd3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7DQpA
QCAtNDYyLDYgKzQ2MiwyNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVuU3BhY2VG
dW5jdGlvbihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbg0KICAgICByZXR1cm4g
Y29udmVydGVkUGF0aC5hdXRvcmVsZWFzZSgpOw0KIH0NCiANCisvLyBEZXRlcm1pbmUgdGhlIHZp
c2libGUgcmFuZ2UgYnkgY2hlY2tpbmcgaW50ZXJzZWN0aW9uIG9mIHVub2JzY3VyZWRDb250ZW50
UmVjdCBhbmQgYSByYW5nZSBvZiB0ZXh0IGJ5DQorLy8gYWR2YW5jaW5nIGZvcndhcmQgYnkgbGlu
ZSBmcm9tIHRvcCBhbmQgYmFja3dhcmRzIGJ5IGxpbmUgZnJvbSB0aGUgYm90dG9tLCB1bnRpbCB3
ZSBoYXZlIGEgdmlzaWJsZSByYW5nZS4NCistIChOU1JhbmdlKWFjY2Vzc2liaWxpdHlWaXNpYmxl
Q2hhcmFjdGVyUmFuZ2UNCit7DQorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZh
bHVlRnJvbU1haW5UaHJlYWQ8TlNSYW5nZT4oW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2Vs
ZildICgpIC0+IE5TUmFuZ2Ugew0KKyAgICAgICAgYXV0byBiYWNraW5nT2JqZWN0ID0gcHJvdGVj
dGVkU2VsZi5nZXQoKS5iYXNlVXBkYXRlQmFja2luZ1N0b3JlOw0KKyAgICAgICAgaWYgKCFiYWNr
aW5nT2JqZWN0KQ0KKyAgICAgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAw
KTsNCisNCisgICAgICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZU5TUmFuZ2UoYmFja2luZ09i
amVjdC0+ZWxlbWVudFJhbmdlKCkpOw0KKyAgICAgICAgaWYgKGVsZW1lbnRSYW5nZS5sb2NhdGlv
biA9PSBOU05vdEZvdW5kKQ0KKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50UmFuZ2U7DQorICAg
ICAgICANCisgICAgICAgIGF1dG8gdmlzaWJsZVJhbmdlID0gbWFrZU5TUmFuZ2UoYmFja2luZ09i
amVjdC0+dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkpOw0KKyAgICAgICAgaWYgKHZpc2libGVSYW5n
ZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQ0KKyAgICAgICAgICAgIHJldHVybiB2aXNpYmxlUmFu
Z2U7DQorDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UodmlzaWJsZVJhbmdlLmxvY2F0aW9u
IC0gZWxlbWVudFJhbmdlLmxvY2F0aW9uLCB2aXNpYmxlUmFuZ2UubGVuZ3RoKTsNCisgICAgfSk7
DQorfQ0KKw0KIC0gKGlkKV9hY2Nlc3NpYmlsaXR5V2ViRG9jdW1lbnRWaWV3DQogew0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsNCkBAIC02MjMsNiArNjQ0LDUwIEBAIHN0YXRpYyB2b2lkIEFY
QXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0
clN0cmluZywNCiAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShhdHRyU3RyaW5nLCBu
b2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOw0KIH0NCiANCisNCitOU1JhbmdlIG1h
a2VOU1JhbmdlKHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlKQ0KK3sNCisgICAgaWYg
KCFyYW5nZSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCisg
ICAgDQorICAgIGF1dG8mIGRvY3VtZW50ID0gcmFuZ2UtPnN0YXJ0LmRvY3VtZW50KCk7DQorICAg
IGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsNCisgICAgaWYgKCFmcmFtZSkNCisgICAg
ICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCisNCisgICAgYXV0byogcm9v
dEVkaXRhYmxlRWxlbWVudCA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRp
dGFibGVFbGVtZW50KCk7DQorICAgIGF1dG8qIHNjb3BlID0gcm9vdEVkaXRhYmxlRWxlbWVudCA/
IHJvb3RFZGl0YWJsZUVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsNCisgICAg
aWYgKCFzY29wZSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsN
CisNCisgICAgLy8gTW91c2UgZXZlbnRzIG1heSBjYXVzZSBUU00gdG8gYXR0ZW1wdCB0byBjcmVh
dGUgYW4gTlNSYW5nZSBmb3IgYSBwb3J0aW9uIG9mIHRoZSB2aWV3DQorICAgIC8vIHRoYXQgaXMg
bm90IGluc2lkZSB0aGUgY3VycmVudCBlZGl0YWJsZSByZWdpb24uIFRoZXNlIGNoZWNrcyBlbnN1
cmUgd2UgZG9uJ3QgcHJvZHVjZQ0KKyAgICAvLyBwb3RlbnRpYWxseSBpbnZhbGlkIGRhdGEgd2hl
biByZXNwb25kaW5nIHRvIHN1Y2ggcmVxdWVzdHMuDQorICAgIGlmICghc2NvcGUtPmNvbnRhaW5z
KHJhbmdlLT5zdGFydC5jb250YWluZXIucHRyKCkpIHx8ICFzY29wZS0+Y29udGFpbnMocmFuZ2Ut
PmVuZC5jb250YWluZXIucHRyKCkpKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90
Rm91bmQsIDApOw0KKw0KKyAgICByZXR1cm4gTlNNYWtlUmFuZ2UoY2hhcmFjdGVyQ291bnQoeyB7
ICpzY29wZSwgMCB9LCByYW5nZS0+c3RhcnQgfSksIGNoYXJhY3RlckNvdW50KCpyYW5nZSkpOw0K
K30NCisNCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlRE9NUmFuZ2UoRG9jdW1lbnQq
IGRvY3VtZW50LCBOU1JhbmdlIHJhbmdlKQ0KK3sNCisgICAgaWYgKHJhbmdlLmxvY2F0aW9uID09
IE5TTm90Rm91bmQpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KKw0KKyAgICAvLyBv
dXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBvbmx5IGNhbGxlZCBieSBpbnB1
dCBtZXRob2RzIHRoYXQNCisgICAgLy8gY29uY2VudHJhdGUgb24gYSBnaXZlbiBhcmVhIGNvbnRh
aW5pbmcgdGhlIHNlbGVjdGlvbg0KKyAgICAvLyBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBv
ZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0aG9zZSBpcyBub3QNCisg
ICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlvbiBpcyBw
cm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzDQorICAgIC8vIHRvIHVzZSB0aGUgcm9vdCBlZGl0
YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQgYXMgdGhlIHBvc2l0aW9uYWwgYmFz
ZS4NCisgICAgLy8gVGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250
ZXh0Lg0KKyAgICBhdXRvIHNlbGVjdGlvblJvb3QgPSBkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOw0KKyAgICBhdXRvIHNjb3Bl
ID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVt
ZW50KCk7DQorICAgIGlmICghc2NvcGUpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0K
Kw0KKyAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05v
ZGVDb250ZW50cygqc2NvcGUpLCByYW5nZSk7DQorfQ0KKw0KIC8vIFJldHVybnMgYW4gYXJyYXkg
b2Ygc3RyaW5ncyBhbmQgQVhPYmplY3Qgd3JhcHBlcnMgY29ycmVzcG9uZGluZyB0byB0aGUgdGV4
dA0KIC8vIHJ1bnMgYW5kIHJlcGxhY2VtZW50IG5vZGVzIGluY2x1ZGVkIGluIHRoZSBnaXZlbiBy
YW5nZS4NCiAtIChOU0FycmF5ICopY29udGVudEZvclNpbXBsZVJhbmdlOihjb25zdCBTaW1wbGVS
YW5nZSYpcmFuZ2UgYXR0cmlidXRlZDooQk9PTClhdHRyaWJ1dGVkDQpAQCAtNjc2LDE4ICs3NDEs
MjYgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLA0KICAgICByZXR1cm4gYXJyYXkuYXV0b3JlbGVh
c2UoKTsNCiB9DQogDQotLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilsaW5lUmVjdHNBbmRU
ZXh0DQorLSAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KiliYXNlVXBkYXRlQmFja2luZ1N0b3JlDQog
ew0KICNpZiBQTEFURk9STShNQUMpDQogICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLnVw
ZGF0ZU9iamVjdEJhY2tpbmdTdG9yZTsNCiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQ0KLSAgICAg
ICAgcmV0dXJuIG5pbDsNCisgICAgICAgIHJldHVybiBudWxscHRyOw0KICNlbHNlDQogICAgIGlm
ICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQotICAgICAgICByZXR1cm4gbmls
Ow0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBz
ZWxmLmF4QmFja2luZ09iamVjdDsNCiAjZW5kaWYNCisgICAgcmV0dXJuIGJhY2tpbmdPYmplY3Q7
DQorfQ0KIA0KKy0gKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopbGluZVJlY3RzQW5kVGV4dA0K
K3sNCisgICAgYXV0byBiYWNraW5nT2JqZWN0ID0gc2VsZi5iYXNlVXBkYXRlQmFja2luZ1N0b3Jl
Ow0KKyAgICBpZiAoIWJhY2tpbmdPYmplY3QpDQorICAgICAgICByZXR1cm4gbmlsOw0KKyAgICAN
CiAgICAgYXV0byByYW5nZSA9IGJhY2tpbmdPYmplY3QtPmVsZW1lbnRSYW5nZSgpOw0KICAgICBp
ZiAoIXJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tDQppbmRleCA3MDA0YzQ2YjY0MzkuLmQ2OTQxZjgyZjEyMiAxMDA2NDQN
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQ0KQEAgLTE3OTUsNyArMTc5NSw3
IEBAIHN0YXRpYyB2b2lkIFdlYlRyYW5zZm9ybUNHUGF0aFRvTlNCZXppZXJQYXRoKHZvaWQqIGlu
Zm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsDQogDQogLSAoTlNBcnJheTxXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciAqPiAqKWNoaWxkcmVuVmVjdG9yQXJyYXkNCiB7DQotICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpKTsNCisg
ICAgcmV0dXJuIG1ha2VOU0FycmF5KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpKTsN
CiB9DQogDQogLSAoTlNWYWx1ZSAqKXBvc2l0aW9uDQpAQCAtMjIwMyw3ICsyMjAzLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoYmFja2luZ09i
amVjdC0+aXNUcmVlSXRlbSgpKSB7DQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRlbnRDb3B5Ow0KICAgICAgICAgICAgIGJh
Y2tpbmdPYmplY3QtPmFyaWFUcmVlSXRlbUNvbnRlbnQoY29udGVudENvcHkpOw0KLSAgICAgICAg
ICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNvbnRlbnRDb3B5KTsNCisgICAgICAgICAgICBy
ZXR1cm4gbWFrZU5TQXJyYXkoY29udGVudENvcHkpOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAg
cmV0dXJuIHNlbGYuY2hpbGRyZW5WZWN0b3JBcnJheTsNCkBAIC0yMjEzLDcgKzIyMTMsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChiYWNraW5n
T2JqZWN0LT5jYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpKSB7DQogICAgICAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRy
ZW5Db3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2Vs
ZWN0ZWRDaGlsZHJlbkNvcHkpOw0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5
KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
c2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KICAgICAgICAgfQ0KICAgICAgICAgcmV0dXJuIG5pbDsN
CiAgICAgfQ0KQEAgLTIyMjIsNyArMjIyMiw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTGlzdEJveCgpKSB7DQog
ICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIHZpc2libGVDaGlsZHJlbkNvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+dmlz
aWJsZUNoaWxkcmVuKHZpc2libGVDaGlsZHJlbkNvcHkpOw0KLSAgICAgICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KHZpc2libGVDaGlsZHJlbkNvcHkpOw0KKyAgICAgICAgICAgIHJldHVy
biBtYWtlTlNBcnJheSh2aXNpYmxlQ2hpbGRyZW5Db3B5KTsNCiAgICAgICAgIH0NCiANCiAgICAg
ICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0xpc3QoKSkNCkBAIC0yMjM0LDcgKzIyMzQsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiANCiAgICAgaWYgKGJhY2tpbmdP
YmplY3QtPmlzV2ViQXJlYSgpKSB7DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOkAiQVhMaW5rVUlFbGVtZW50cyJdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252
ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmRvY3VtZW50TGlua3MoKSk7DQorICAgICAgICAg
ICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmRvY3VtZW50TGlua3MoKSk7DQog
DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMb2FkZWQi
XSkNCiAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOmJhY2tpbmdP
YmplY3QtPmlzTG9hZGVkKCldOw0KQEAgLTIyNjcsMTYgKzIyNjcsMjEgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICAgICAgUGxhaW5UZXh0UmFuZ2UgdGV4
dFJhbmdlID0gYmFja2luZ09iamVjdC0+c2VsZWN0ZWRUZXh0UmFuZ2UoKTsNCiAgICAgICAgICAg
ICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UodGV4dFJhbmdlLnN0
YXJ0LCB0ZXh0UmFuZ2UubGVuZ3RoKV07DQogICAgICAgICB9DQotICAgICAgICAvLyBUT0RPOiBH
ZXQgYWN0dWFsIHZpc2libGUgcmFuZ2UuIDxyZGFyOi8vcHJvYmxlbS80NzEyMTAxPg0KLSAgICAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5Vmlz
aWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gYmFja2lu
Z09iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkgPyBuaWwgOiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5n
ZTogTlNNYWtlUmFuZ2UoMCwgYmFja2luZ09iamVjdC0+dGV4dExlbmd0aCgpKV07DQotDQogICAg
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUlu
c2VydGlvblBvaW50TGluZU51bWJlckF0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBpbnQgbGlu
ZU51bWJlciA9IGJhY2tpbmdPYmplY3QtPmluc2VydGlvblBvaW50TGluZU51bWJlcigpOw0KICAg
ICAgICAgICAgIHJldHVybiBsaW5lTnVtYmVyID49IDAgPyBAKGxpbmVOdW1iZXIpIDogbmlsOw0K
ICAgICAgICAgfQ0KICAgICB9DQogDQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZV0pIHsN
CisgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkNCisgICAgICAg
ICAgICByZXR1cm4gbmlsOw0KKyAgICAgICAgLy8gVE9ETzogR2V0IGFjdHVhbCB2aXNpYmxlIHJh
bmdlLiA8cmRhcjovL3Byb2JsZW0vNDcxMjEwMT4NCisgICAgICAgIGlmIChiYWNraW5nT2JqZWN0
LT5pc1RleHRDb250cm9sKCkpDQorICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0
aFJhbmdlOk5TTWFrZVJhbmdlKDAsIGJhY2tpbmdPYmplY3QtPnRleHRMZW5ndGgoKSldOw0KKyAg
ICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOltzZWxmIGFjY2Vzc2liaWxpdHlW
aXNpYmxlQ2hhcmFjdGVyUmFuZ2VdXTsNCisgICAgfQ0KKw0KICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGVdKSB7DQogICAg
ICAgICBVUkwgdXJsID0gYmFja2luZ09iamVjdC0+dXJsKCk7DQogICAgICAgICBpZiAodXJsLmlz
TnVsbCgpKQ0KQEAgLTIzODAsNyArMjM4NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORA0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eUltYWdlT3ZlcmxheUVsZW1lbnRzQXR0cmlidXRlXSkgew0KICAgICAgICAg
YXV0byBpbWFnZU92ZXJsYXlFbGVtZW50cyA9IGJhY2tpbmdPYmplY3QtPmltYWdlT3ZlcmxheUVs
ZW1lbnRzKCk7DQotICAgICAgICByZXR1cm4gaW1hZ2VPdmVybGF5RWxlbWVudHMgPyBjb252ZXJ0
VG9OU0FycmF5KCppbWFnZU92ZXJsYXlFbGVtZW50cykgOiBuaWw7DQorICAgICAgICByZXR1cm4g
aW1hZ2VPdmVybGF5RWxlbWVudHMgPyBtYWtlTlNBcnJheSgqaW1hZ2VPdmVybGF5RWxlbWVudHMp
IDogbmlsOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5RW1iZWRkZWRJbWFnZURlc2NyaXB0aW9uQXR0cmlidXRlXSkNCkBA
IC0yNDA0LDI5ICsyNDA5LDI5IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFiTGlzdCgpKSB7DQogICAgICAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHRhYnND
aGlsZHJlbjsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT50YWJDaGlsZHJlbih0YWJzQ2hp
bGRyZW4pOw0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHRhYnNDaGlsZHJl
bik7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHRhYnNDaGlsZHJlbik7DQogICAg
ICAgICB9DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlDb250ZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICByZXR1cm4gY29u
dmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb250ZW50cygpKTsNCisgICAgICAgIHJldHVy
biBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb250ZW50cygpKTsNCiANCiAgICAgaWYgKGJh
Y2tpbmdPYmplY3QtPmlzVGFibGUoKSAmJiBiYWNraW5nT2JqZWN0LT5pc0V4cG9zYWJsZSgpKSB7
DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eVJvd3NBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5
KGJhY2tpbmdPYmplY3QtPnJvd3MoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5
KGJhY2tpbmdPYmplY3QtPnJvd3MoKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRlXSkNCi0g
ICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT52aXNpYmxl
Um93cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+
dmlzaWJsZVJvd3MoKSk7DQogDQogICAgICAgICAvLyBUT0RPOiBkaXN0aW5ndWlzaCBiZXR3ZWVu
IHZpc2libGUgYW5kIG5vbi12aXNpYmxlIGNvbHVtbnMNCiAgICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV0NCiAg
ICAgICAgICAgICB8fCBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5VmlzaWJsZUNvbHVtbnNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0
VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbnMoKSk7DQorICAgICAgICAgICAgcmV0dXJu
IG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbnMoKSk7DQogDQogICAgICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93
c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbkNvcHk7DQogICAgICAgICAgICAg
YmFja2luZ09iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuQ29weSk7DQot
ICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkp
Ow0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7
DQogICAgICAgICB9DQogDQogICAgICAgICAvLyBIVE1MIHRhYmxlcyBkb24ndCBzdXBwb3J0IHRo
ZXNlIGF0dHJpYnV0ZXMuDQpAQCAtMjQzNSw3ICsyNDQwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICAgICAgcmV0dXJuIG5pbDsNCiANCiAgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1u
SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1uSGVhZGVycygpKTsNCisgICAgICAgICAgICBy
ZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1uSGVhZGVycygpKTsNCiANCiAg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
SGVhZGVyQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIGF1dG8qIGhlYWRlckNvbnRhaW5lciA9
IGJhY2tpbmdPYmplY3QtPmhlYWRlckNvbnRhaW5lcigpOw0KQEAgLTI0NDMsMTAgKzI0NDgsMTAg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICB9DQogDQog
ICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVJvd0hlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252
ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7DQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7DQogDQogICAg
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZp
c2libGVDZWxsc0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJy
YXkoYmFja2luZ09iamVjdC0+Y2VsbHMoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGJhY2tpbmdPYmplY3QtPmNlbGxzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5Db3VudEF0dHJpYnV0ZV0p
DQogICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+Y29sdW1uQ291bnQoKSk7DQpA
QCAtMjQ2OCw3ICsyNDczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
DQogICAgICAgICAvLyByb3dzIGF0dHJpYnV0ZSBmb3IgYSBjb2x1bW4gaXMgdGhlIGxpc3Qgb2Yg
YWxsIHRoZSBlbGVtZW50cyBpbiB0aGF0IGNvbHVtbiBhdCBlYWNoIHJvdw0KICAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmli
dXRlXQ0KICAgICAgICAgICAgIHx8IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7DQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KIA0KICAgICAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlIZWFk
ZXJBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgYXV0byogaGVhZGVyID0gYmFja2luZ09iamVj
dC0+Y29sdW1uSGVhZGVyKCk7DQpAQCAtMjQ4OCwxMCArMjQ5MywxMCBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIH0NCiANCiAgICAgICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSGVhZGVyVUlF
bGVtZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXko
YmFja2luZ09iamVjdC0+Y29sdW1uSGVhZGVycygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFr
ZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1uSGVhZGVycygpKTsNCiANCiAgICAgICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVy
VUlFbGVtZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJy
YXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFr
ZU5TQXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCiANCiAgICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQUNvbHVtbklu
ZGV4QXR0cmlidXRlXSkNCiAgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5heENv
bHVtbkluZGV4KCkpOw0KQEAgLTI1MDQsMTIgKzI1MDksMTIgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2Vs
ZWN0ZWRDaGlsZHJlbkNvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+c2VsZWN0ZWRD
aGlsZHJlbihzZWxlY3RlZENoaWxkcmVuQ29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZl
cnRUb05TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBt
YWtlTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQogICAgICAgICB9DQogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRy
aWJ1dGVdKSB7DQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIHJvd3NDb3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPmFy
aWFUcmVlUm93cyhyb3dzQ29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJy
YXkocm93c0NvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShyb3dzQ29weSk7
DQogICAgICAgICB9DQogDQogICAgICAgICAvLyBUcmVlUm9sZXMgZG8gbm90IHN1cHBvcnQgY29s
dW1ucywgYnV0IE1hYyBBWCBleHBlY3RzIHRvIGJlIGFibGUgdG8gYXNrIGFib3V0IGNvbHVtbnMg
YXQgdGhlIGxlYXN0Lg0KQEAgLTI1NDQsNyArMjU0OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORA0KICAgICAvLyBUaGUgcm93cyB0aGF0IGFyZSBjb25zaWRlcmVkIGlu
c2lkZSB0aGlzIHJvdy4NCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRSb3dzQXR0cmlidXRlXSkgew0KICAgICAgICAgaWYgKGJh
Y2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSB8fCBiYWNraW5nT2JqZWN0LT5pc0FSSUFUcmVlR3Jp
ZFJvdygpKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmpl
Y3QtPmRpc2Nsb3NlZFJvd3MoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJh
Y2tpbmdPYmplY3QtPmRpc2Nsb3NlZFJvd3MoKSk7DQogICAgIH0NCiANCiAgICAgLy8gVGhlIHJv
dyB0aGF0IGNvbnRhaW5zIHRoaXMgcm93LiBJdCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIGZp
cnN0IHBhcmVudCB0aGF0IGlzIGEgdHJlZWl0ZW0uDQpAQCAtMjYxMiw3ICsyNjE3LDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1
dGVdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3IgbGlua2VkVUlFbGVtZW50czsNCiAgICAgICAgIGJhY2tpbmdPYmplY3QtPmxpbmtl
ZFVJRWxlbWVudHMobGlua2VkVUlFbGVtZW50cyk7DQotICAgICAgICByZXR1cm4gY29udmVydFRv
TlNBcnJheShsaW5rZWRVSUVsZW1lbnRzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShs
aW5rZWRVSUVsZW1lbnRzKTsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZEF0dHJpYnV0ZV0pDQpAQCAtMjY4
NSw3ICsyNjkwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5T3duc0F0
dHJpYnV0ZV0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBhcmlhT3duczsNCiAgICAgICAgIGJhY2tpbmdPYmplY3QtPmFyaWFPd25z
RWxlbWVudHMoYXJpYU93bnMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYXJp
YU93bnMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGFyaWFPd25zKTsNCiAgICAgfQ0K
IA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eUFSSUFQb3NJblNldEF0dHJpYnV0ZV0pDQpAQCAtMjc1MSw3ICsyNzU2LDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhSb290UmFkaWNhbmRBdHRyaWJ1
dGVdKSB7DQogICAgICAgICAgICAgYXV0byByYWRpY2FuZCA9IGJhY2tpbmdPYmplY3QtPm1hdGhS
YWRpY2FuZCgpOw0KLSAgICAgICAgICAgIHJldHVybiByYWRpY2FuZCA/IGNvbnZlcnRUb05TQXJy
YXkoKnJhZGljYW5kKSA6IG5pbDsNCisgICAgICAgICAgICByZXR1cm4gcmFkaWNhbmQgPyBtYWtl
TlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoRnJhY3Rpb25O
dW1lcmF0b3JBdHRyaWJ1dGVdKQ0KQEAgLTI4NDUsNyArMjg1MCw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOkAiQVhEZXRhaWxzRWxlbWVudHMiXSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRldGFpbHM7DQogICAgICAgICBiYWNr
aW5nT2JqZWN0LT5hcmlhRGV0YWlsc0VsZW1lbnRzKGRldGFpbHMpOw0KLSAgICAgICAgcmV0dXJu
IGNvbnZlcnRUb05TQXJyYXkoZGV0YWlscyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
ZGV0YWlscyk7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlCcmFpbGxlTGFiZWxBdHRyaWJ1dGVdKQ0KQEAgLTI4NjAsNyAr
Mjg2NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhFcnJvck1lc3NhZ2VFbGVtZW50cyJd
KSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgZXJyb3JNZXNzYWdlczsNCiAgICAgICAgIGJhY2tpbmdPYmplY3QtPmFyaWFFcnJvck1l
c3NhZ2VFbGVtZW50cyhlcnJvck1lc3NhZ2VzKTsNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KGVycm9yTWVzc2FnZXMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGVycm9y
TWVzc2FnZXMpOw0KICAgICB9DQogDQogICAgIC8vIE11bHRpLXNlbGVjdGFibGUNCkBAIC0yODc4
LDcgKzI4ODMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBcmlhQ29u
dHJvbHNBdHRyaWJ1dGVdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUNvbnRyb2xzOw0KICAgICAgICAgYmFja2luZ09iamVj
dC0+YXJpYUNvbnRyb2xzRWxlbWVudHMoYXJpYUNvbnRyb2xzKTsNCi0gICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KGFyaWFDb250cm9scyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJy
YXkoYXJpYUNvbnRyb2xzKTsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUZvY3VzYWJsZUFuY2VzdG9yQXR0cmlidXRlXSkg
ew0KQEAgLTM0MjgsMjIgKzM0MzMsNiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19FTkQNCiAgICAgfSk7DQogfQ0KIA0KLS8vIEZJWE1FOiBObyByZWFzb24gZm9yIHRoaXMgdG8g
YmUgYSBtZXRob2QgaW5zdGVhZCBvZiBhIGZ1bmN0aW9uOyBjYW4gZ2V0IGRvY3VtZW50IGZyb20g
cmFuZ2UuDQotLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooY29uc3QgU2ltcGxlUmFuZ2Um
KXJhbmdlDQotew0KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOw0KLSAgICANCi0gICAgYXV0
byBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOw0KLSAgICBpZiAo
IWRvY3VtZW50KQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0K
LQ0KLSAgICBhdXRvIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQo
KTsNCi0gICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFu
Z2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIHJldHVybiBjaGFyYWN0ZXJSYW5nZShtYWtlQm91
bmRhcnlQb2ludEJlZm9yZU5vZGVDb250ZW50cygqZG9jdW1lbnRFbGVtZW50KSwgcmFuZ2UpOw0K
LX0NCi0NCiAtIChOU0ludGVnZXIpX2luZGV4Rm9yVGV4dE1hcmtlcjooQVhUZXh0TWFya2VyUmVm
KW1hcmtlcg0KIHsNCiAgICAgaWYgKCFtYXJrZXIpDQpAQCAtMzQ2MCw3ICszNDQ5LDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICAgICAgaWYgKCFyYW5n
ZSkNCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQogDQotICAgICAgICAgICAg
cmV0dXJuIFtwcm90ZWN0ZWRTZWxmIF9jb252ZXJ0VG9OU1JhbmdlOipyYW5nZV0ubG9jYXRpb247
DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU1JhbmdlKHJhbmdlKS5sb2NhdGlvbjsNCiAgICAg
ICAgIH0NCiANCiAgICAgICAgIHJldHVybiBOU05vdEZvdW5kOw0KQEAgLTM4MzUsOCArMzgyNCw4
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdHM7DQogICAg
ICAgICBiYWNraW5nT2JqZWN0LT5maW5kTWF0Y2hpbmdPYmplY3RzKCZjcml0ZXJpYSwgcmVzdWx0
cyk7DQogICAgICAgICBpZiAod2lkZ2V0Q2hpbGRyZW4pDQotICAgICAgICAgICAgcmV0dXJuIFt3
aWRnZXRDaGlsZHJlbiBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTpjb252ZXJ0VG9OU0Fy
cmF5KHJlc3VsdHMpXTsNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHJlc3VsdHMp
Ow0KKyAgICAgICAgICAgIHJldHVybiBbd2lkZ2V0Q2hpbGRyZW4gYXJyYXlCeUFkZGluZ09iamVj
dHNGcm9tQXJyYXk6bWFrZU5TQXJyYXkocmVzdWx0cyldOw0KKyAgICAgICAgcmV0dXJuIG1ha2VO
U0FycmF5KHJlc3VsdHMpOw0KICAgICB9DQogDQogICAgIC8vIFRleHRNYXJrZXIgYXR0cmlidXRl
cy4NCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lv
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQ0KaW5kZXggZGQ0
ZWIwOTZmZWU5Li5iYTQ3NGY5NmMwYjYgMTAwNjQ0DQotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tDQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50SU9TLm1tDQpAQCAtMTA4LDYgKzEwOCw3IEBAIHR5cGVkZWYgdm9pZCAoKkFYUG9z
dGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5nKiBub3RpZmljYXRp
b24sDQogLSAoaWQpX2FjY2Vzc2liaWxpdHlMaXN0QW5jZXN0b3I7DQogLSAoaWQpX2FjY2Vzc2li
aWxpdHlQaG90b0Rlc2NyaXB0aW9uOw0KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5SW1hZ2VP
dmVybGF5RWxlbWVudHM7DQorLSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3Rl
clJhbmdlOw0KIA0KIC8vIFRleHRNYXJrZXIgcmVsYXRlZA0KIC0gKE5TQXJyYXkgKil0ZXh0TWFy
a2VyUmFuZ2U7DQpAQCAtMzk0LDYgKzM5NSw5IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKCkNCiANCiBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRGVzY3JpcHRpb25PZkF0
dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkNCiB7DQorICAgIGlmIChKU1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKGF0dHJpYnV0ZSwgIkFYVmlzaWJsZUNoYXJhY3RlclJhbmdl
IikpDQorICAgICAgICByZXR1cm4gW05TU3RyaW5nRnJvbVJhbmdlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZV0pIGNyZWF0ZUpTU3RyaW5nUmVmXTsNCisNCiAg
ICAgcmV0dXJuIGNyZWF0ZUpTU3RyaW5nKCk7DQogfQ0KIA0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444889</attachid>
            <date>2021-11-20 00:11:55 -0800</date>
            <delta_ts>2021-11-20 22:05:10 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>50705</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZDIwNDhjNGZhMmY2Li44OGQxOGVlY2E1ZjMgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
NiBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUt
Y2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuDQorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbDogQWRkZWQuDQorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOg0KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnM6DQorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zOg0KKw0KIDIwMjEtMTEtMTkgIEtpZXQgSG8gIDx0aG8yMkBhcHBsZS5jb20+DQogDQogICAg
ICAgICBJbnRlZ3JhdGUgbW90aW9uIHBhdGggdHJhbnNmb3JtcyBpbiB0cmFuc2Zvcm1hdGlvbiBw
aXBlbGluZQ0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1j
aGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92
aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
DQppbmRleCAwMDAwMDAwMDAwMDAuLmNkYmI4YzQyMmRhNw0KLS0tIC9kZXYvbnVsbA0KKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3Rl
ZC50eHQNCkBAIC0wLDAgKzEsMTIgQEANCitUaGlzIHRlc3RzIHRoYXQgdmlzaWJsZUNoYXJhY3Rl
clJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSByYW5nZXMgd2hpbGUgbW9kaWZ5aW5nIG9i
c2N1cmVkIGNvbnRlbnQuDQorDQorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLg0KKw0KKw0KK1Zp
c2libGUgcmFuZ2U6IE5TUmFuZ2U6IHswLCA0MjA1fQ0KK1Zpc2libGUgcmFuZ2UgKDUwMCwgMjAw
KTogTlNSYW5nZTogezAsIDM2MH0NCitWaXNpYmxlIHJhbmdlLCBvZmZzZXQ6IDIwMCAoMjAwLCA1
MDApOiBOU1JhbmdlOiB7MCwgNjkwfQ0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUN
CisNCitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K
aW5kZXggMDAwMDAwMDAwMDAwLi4zOWQzMmRiZDIwMzMNCi0tLSAvZGV2L251bGwNCisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0KQEAg
LTAsMCArMSw3MyBAQA0KKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4NCis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keSBpZD0iYm9keSI+DQorDQorPGRpdiBp
ZD0iZ3JvdXAiPg0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QN
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0K
K3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQor
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQorPC9kaXY+DQorDQorPHNjcmlwdD4NCisNCisgICAgZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdHMgdGhhdCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgcmV0dXJucyBleHBl
Y3RlZCB2aXNpYmxlIHJhbmdlcyB3aGlsZSBtb2RpZnlpbmcgb2JzY3VyZWQgY29udGVudC4iKTsN
CisNCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgew0KKyAgICAgICAg
dmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
Imdyb3VwIikuY2hpbGRBdEluZGV4KDApOw0KKyAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2U6
ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hh
cmFjdGVyUmFuZ2UiKSk7DQorDQorICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdTaXplKDUwMCwg
MjAwKTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxlIHJhbmdlICg1MDAsIDIwMCk6ICIgKyB0ZXh0
LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFu
Z2UiKSk7DQorDQorICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDIwMDsNCisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0Vmlld1NpemUoMjAwLCA1MDApOw0KKyAgICAgICAgZGVidWcoIlZp
c2libGUgcmFuZ2UsIG9mZnNldDogMjAwICgyMDAsIDUwMCk6ICIgKyB0ZXh0LnN0cmluZ0Rlc2Ny
aXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAiKS5zdHlsZS52aXNpYmlsaXR5
ID0gImhpZGRlbiI7DQorICAgIH0NCisNCis8L3NjcmlwdD4NCisNCis8L2JvZHk+DQorPC9odG1s
Pg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMNCmluZGV4IGE0MmM3
MjlmMDdmZi4uYTRiMTA0ZTA1N2JlIDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zL1Rlc3RFeHBlY3RhdGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0
RXhwZWN0YXRpb25zDQpAQCAtMjExOCw3ICsyMTE4LDcgQEAgd2Via2l0Lm9yZy9iLzE0ODgwNiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wt
c3ANCiBmYXN0L2RvbS9saW5raWZ5LXBob25lLW51bWJlcnMuaHRtbCBbIFBhc3MgXQ0KIA0KIGFj
Y2Vzc2liaWxpdHkvdmlkZW8tZWxlbWVudC11cmwtYXR0cmlidXRlLmh0bWwgWyBQYXNzIF0NCi0N
CithY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBQYXNzIF0NCiBh
Y2Nlc3NpYmlsaXR5L2FuY2VzdG9yLWNvbXB1dGF0aW9uLmh0bWwgWyBQYXNzIF0NCiANCiAjIEVu
YWJsZSAiYXJpYS1jdXJyZW50IiB0ZXN0cyBmb3IgaU9TLg0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucw0KaW5kZXggOWEwNzQ1ODc5MzU0Li5hNWMzMWZl
YzlmMWYgMTAwNjQ0DQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0
aW9ucw0KQEAgLTYwMSw2ICs2MDEsMTEgQEAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1pbnNl
cnQtaHRtbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0NCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hl
Y2stYXN5bmMuaHRtbCBbIEZhaWx1cmUgXQ0KIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdW5p
ZmllZC1lbXVsYXRpb24uaHRtbCBbIEZhaWx1cmUgXQ0KIA0KKyMgU2tpcCBkdWUgdG8gbGFjayBv
ZiBEdW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9tSWRlbnRpZmVyYCBp
bXBsZW1lbnRhdGlvbi4NCithY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZvci1h
ZGhvYy1yYWRpby1ncm91cHMuaHRtbCBbIFNraXAgXQ0KKyMgU2tpcCBkdWUgdG8gbGFjayBvZiBE
dW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRGVzY3JpcHRpb25P
ZkF0dHJpYnV0ZVZhbHVlYCBpbXBsZW1lbnRhdGlvbi4NCithY2Nlc3NpYmlsaXR5L3Zpc2libGUt
Y2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBTa2lwIF0NCisNCiAjIDxyZGFyOi8vcHJvYmxlbS8yNjA1
MDkyMz4gVGhlIHJlc3VsdCBpcyBwcm9iYWJseSBzdGlsbCBhIHBhc3MsIGJ1dCB3ZSBkb24ndCBo
YXZlIGEgd2F5DQogIyB0byBoYXZlIHBsYXRmb3JtIHNwZWNpZmljIHJlc3VsdHMgdGhhdCBhcmUg
ZGlmZmVyZW50IGJldHdlZW4gV0sxIGFuZCBXSzIuDQogYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1l
bnQtYXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBdDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9ucw0KaW5kZXggYTcxZTQzMGViOGU5Li4wZmI5YzM5OTExMGIgMTAwNjQ0
DQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucw0KKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMNCkBAIC0yNzgsNiArMjc4
LDcgQEAgYWNjZXNzaWJpbGl0eS9hcmlhLWxpc3Rib3gtY2xlYXItc2VsZWN0aW9uLWNyYXNoLmh0
bWwgWyBTa2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2xpc3Rib3gtY2xlYXItc2VsZWN0aW9uLmh0bWwg
WyBTa2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2VtYmVkZGVkLWltYWdlLWRlc2NyaXB0aW9uLmh0bWwg
WyBTa2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2ltZy1uby1hbHQtbm90LWlnbm9yZWQtd2l0aC10aXRs
ZS5odG1sIFsgU2tpcCBdDQorYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5o
dG1sIFsgU2tpcCBdDQogDQogIyBOZWVkIHRvIGltcGxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpoYXNEb2N1bWVudFJvbGVBbmNlc3RvcigpLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
YXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yKCksDQogIyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0luRGVzY3JpcHRpb25MaXN0RGV0YWlsKCksIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5E
ZXNjcmlwdGlvbkxpc3RUZXJtKCksIGFuZA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KaW5kZXggOGJlYTRmNmZmZDU1Li5i
NmMwZjcwMGMzZTcgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KQEAgLTEsMyArMSw1MSBAQA0KKzIwMjEtMTEtMTkg
IENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4NCisNCisgICAgICAgIEFYOiBX
ZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4dCBhbmQgZnJhbWUgb2YgYW4g
ZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
Lg0KKw0KKyAgICAgICAgSW1wbGVtZW50IHZpc2libGVDaGFyYWN0ZXJSYW5nZSBmb3Igc3RhdGlj
IHRleHQgZWxlbWVudHMgc28gdGhhdCBCb29rcyBjYW4gZGV0ZXJtaW5lIHRoZSB2aXNpYmxlDQor
ICAgICAgICBjb250ZW50IG9uIGEgcGFnZS4NCisNCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxp
dHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOg0KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSBjb25zdCk6DQorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dW5vYnNjdXJlZENvbnRlbnRSZWN0IGNvbnN0KToN
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6DQorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOg0KKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlWaXNpYmxlQ29udGVudFJlY3RdKToNCisgICAgICAgIChhY2Nlc3NpYmxlRWxlbWVudHNGb3JP
YmplY3RzKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlGaW5kTWF0Y2hpbmdPYmplY3RzOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgcG9zaXRpb25Gb3JUZXh0TWFya2VyOl0pOg0KKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlckZvclBvc2l0aW9uOl0pOg0K
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3RyaW5nRm9yUmFuZ2U6
XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBmcmFtZUZvclJh
bmdlOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNz
aWJpbGl0eU1hdGhSYWRpY2FuZF0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgX2NvbnZlcnRUb05TUmFuZ2U6XSk6IERlbGV0ZWQuDQorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfY29udmVydFRvRE9NUmFuZ2U6XSk6IERlbGV0ZWQu
DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
Y3BwOg0KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnZpc2libGVDaGFyYWN0
ZXJSYW5nZSBjb25zdCk6DQorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6dW5v
YnNjdXJlZENvbnRlbnRSZWN0IGNvbnN0KToNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaDoNCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOg0KKyAgICAg
ICAgKG1ha2VOU0FycmF5KToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZSBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlXSk6DQorICAgICAgICAo
bWFrZU5TUmFuZ2UpOg0KKyAgICAgICAgKG1ha2VET01SYW5nZSk6DQorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgYmFzZVVwZGF0ZUJhY2tpbmdTdG9yZV0pOg0K
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGxpbmVSZWN0c0Fu
ZFRleHRdKToNCisgICAgICAgIChjb252ZXJ0VG9OU0FycmF5KTogRGVsZXRlZC4NCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjaGlsZHJlblZlY3Rv
ckFycmF5XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBfaW5kZXhGb3JUZXh0TWFya2VyOl0pOg0KKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZvclBh
cmFtZXRlcjpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9j
b252ZXJ0VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0KKw0KIDIwMjEtMTEtMTkgIEtpZXQgSG8gIDx0
aG8yMkBhcHBsZS5jb20+DQogDQogICAgICAgICBJbXBsZW1lbnQgcGFyc2luZyBhbmQgYW5pbWF0
aW9uIHN1cHBvcnQgZm9yIHJheSgpIHNoYXBlIGFjY2VwdGVkIGJ5IG9mZnNldC1wYXRoDQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHANCmluZGV4IDkzODQ4ZTFjYWI3Ni4uNjc0NmY2Y2JiNDhmIDEwMDY0NA0KLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcA0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcA0KQEAgLTcw
NCw2ICs3MDQsNTIgQEAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9i
amVjdDo6ZWxlbWVudFJhbmdlKCkgY29uc3QNCiAgICAgcmV0dXJuIEFYT2JqZWN0Q2FjaGU6OnJh
bmdlRm9yTm9kZUNvbnRlbnRzKCpub2RlKTsNCiB9DQogDQorc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgY29uc3QN
Cit7DQorICAgIGF1dG8gcmFuZ2UgPSBlbGVtZW50UmFuZ2UoKTsNCisgICAgaWYgKCFyYW5nZSkN
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIGF1dG8gY29udGVudFJlY3Qg
PSB1bm9ic2N1cmVkQ29udGVudFJlY3QoKTsNCisgICAgYXV0byBlbGVtZW50UmVjdCA9IHNuYXBw
ZWRJbnRSZWN0KHRoaXMtPmVsZW1lbnRSZWN0KCkpOw0KKyAgICBpZiAoIWNvbnRlbnRSZWN0Lmlu
dGVyc2VjdHMoZWxlbWVudFJlY3QpKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisN
CisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBzdGFydEJvdW5kYXJ5ID0gcmFuZ2Ut
PnN0YXJ0Ow0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IGVuZEJvdW5kYXJ5ID0g
cmFuZ2UtPmVuZDsNCisNCisgICAgLy8gT3JpZ2luIGlzbid0IGNvbnRhaW5lZCBpbiB2aXNpYmxl
IHJlY3QsIHN0YXJ0IG1vdmluZyBmb3J3YXJkIGJ5IGxpbmUuDQorICAgIHdoaWxlICghY29udGVu
dFJlY3QuY29udGFpbnMoZWxlbWVudFJlY3QubG9jYXRpb24oKSkpIHsNCisgICAgICAgIGF1dG8g
bmV4dExpbmVQb3NpdGlvbiA9IG5leHRMaW5lRW5kUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1h
a2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigqc3RhcnRCb3VuZGFyeSkpKTsNCisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVzdFN0YXJ0Qm91bmRhcnkgPSBtYWtlQm91bmRh
cnlQb2ludChuZXh0TGluZVBvc2l0aW9uKTsNCisgICAgICAgIGlmICghdGVzdFN0YXJ0Qm91bmRh
cnkgfHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RTdGFydEJvdW5kYXJ5KSkNCisgICAgICAgICAg
ICBicmVhazsNCisgICAgICAgIA0KKyAgICAgICAgc3RhcnRCb3VuZGFyeSA9IHRlc3RTdGFydEJv
dW5kYXJ5Ow0KKyAgICAgICAgZWxlbWVudFJlY3QgPSBib3VuZHNGb3JSYW5nZShTaW1wbGVSYW5n
ZSgqc3RhcnRCb3VuZGFyeSwgcmFuZ2UtPmVuZCkpOw0KKyAgICAgICAgaWYgKGVsZW1lbnRSZWN0
LmlzRW1wdHkoKSkNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKw0KKyAgICAvLyBFbmQg
aXNuJ3QgY29udGFpbmVkIGluIHZpc2libGUgcmVjdCwgc3RhcnQgbW92aW5nIGJhY2t3YXJkcyBi
eSBsaW5lLg0KKyAgICB3aGlsZSAoIWNvbnRlbnRSZWN0LmNvbnRhaW5zKGVsZW1lbnRSZWN0Lmxv
Y2F0aW9uKCkgKyBlbGVtZW50UmVjdC5zaXplKCkpKSB7DQorICAgICAgICBhdXRvIHByZXZpb3Vz
TGluZVBvc2l0aW9uID0gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24o
bWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKCplbmRCb3VuZGFyeSkpKTsNCisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVzdEVuZEJvdW5kYXJ5ID0gbWFrZUJvdW5kYXJ5
UG9pbnQocHJldmlvdXNMaW5lUG9zaXRpb24pOw0KKyAgICAgICAgaWYgKCF0ZXN0RW5kQm91bmRh
cnkgfHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RFbmRCb3VuZGFyeSkpDQorICAgICAgICAgICAg
YnJlYWs7DQorICAgICAgICANCisgICAgICAgIGVuZEJvdW5kYXJ5ID0gdGVzdEVuZEJvdW5kYXJ5
Ow0KKyAgICAgICAgZWxlbWVudFJlY3QgPSBib3VuZHNGb3JSYW5nZSh7ICpzdGFydEJvdW5kYXJ5
LCAqZW5kQm91bmRhcnkgfSk7DQorICAgICAgICBpZiAoZWxlbWVudFJlY3QuaXNFbXB0eSgpKQ0K
KyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAgIGlmICghc3RhcnRCb3VuZGFyeSB8
fCAhZW5kQm91bmRhcnkpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KKyAgICANCisg
ICAgcmV0dXJuIFNpbXBsZVJhbmdlKCpzdGFydEJvdW5kYXJ5LCAqZW5kQm91bmRhcnkpOw0KK30N
CisNCiBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaW5k
VGV4dFJhbmdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hTdHJpbmdzLCBjb25zdCBTaW1w
bGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
bikgY29uc3QNCiB7DQogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZvdW5kOw0KQEAg
LTMxODIsNiArMzIyOCwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFr
ZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgSW50UmVjdCYgc3ViZm9jdQ0KICAgICAgICAgc2Ny
b2xsUGFyZW50LT5zY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKG5ld1N1YmZvY3VzKTsN
CiB9DQogDQorRmxvYXRSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnVub2JzY3VyZWRDb250ZW50
UmVjdCgpIGNvbnN0DQorew0KKyAgICBhdXRvIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsN
CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkNCisgICAgICAgIHJldHVy
biB7IH07DQorICAgIHJldHVybiBGbG9hdFJlY3Qoc25hcHBlZEludFJlY3QoZG9jdW1lbnQtPnZp
ZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpKTsNCit9DQorDQogdm9pZCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50JiBnbG9iYWxQb2lu
dCkgY29uc3QNCiB7DQogICAgIC8vIFNlYXJjaCB1cCB0aGUgcGFyZW50IGNoYWluIGFuZCBjcmVh
dGUgYSB2ZWN0b3Igb2YgYWxsIHNjcm9sbGFibGUgcGFyZW50IG9iamVjdHMNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oDQppbmRleCAy
MWZmNGEyOGE1YTYuLjU5Y2VhNGY0YjM5NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KQEAgLTgwOCw3ICs4MDgsNyBAQCBw
cm90ZWN0ZWQ6DQogICAgIHZvaWQgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7DQogICAgIHZv
aWQgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsNCiAgICAgdmlydHVhbCBib29s
IGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0NCi0NCisgICAg
RmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiByYWRpb0dyb3VwQW5jZXN0b3IoKSBjb25zdDsNCiANCiAgICAg
Ym9vbCBhbGxvd3NUZXh0UmFuZ2VzKCkgY29uc3Q7DQpAQCAtODIxLDYgKzgyMSw3IEBAIHByaXZh
dGU6DQogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlT2ZTdHJpbmdDbG9zZXN0
VG9SYW5nZUluRGlyZWN0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiwgQWNjZXNzaWJpbGl0eVNlYXJj
aERpcmVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsNCiAgICAgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4gc2VsZWN0aW9uUmFuZ2UoKSBjb25zdDsNCiAgICAgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4gZmluZFRleHRSYW5nZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2Vh
cmNoU3RyaW5ncywgY29uc3QgU2ltcGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNo
VGV4dERpcmVjdGlvbikgY29uc3Q7DQorICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHZp
c2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KIHByb3RlY3RlZDogLy8g
RklYTUU6IE1ha2UgdGhlIGRhdGEgbWVtYmVycyBwcml2YXRlLg0KICAgICBib29sIGNoaWxkcmVu
SW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuSW5pdGlhbGl6ZWQ7IH0NCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdEludGVyZmFjZS5oDQppbmRleCBlMTU5NjIxYzg1NDkuLjE2NzlmMDFjNTFkZiAxMDA2
NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZS5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaA0KQEAgLTk4OCw2ICs5ODgsNyBAQCBwdWJsaWM6DQogICAg
IHZpcnR1YWwgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpID0gMDsNCiAgICAgdmlydHVhbCBGbG9h
dFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBGbG9hdFJlY3Qg
Y29udmVydEZyYW1lVG9TcGFjZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVy
c2lvblNwYWNlKSBjb25zdCA9IDA7DQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IHVub2JzY3VyZWRD
b250ZW50UmVjdCgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ2hlY2tl
ZFN0YXRlKCkgY29uc3QgPSAwOw0KICAgICANCiAgICAgLy8gSW4gYSBtdWx0aS1zZWxlY3QgbGlz
dCwgbWFueSBpdGVtcyBjYW4gYmUgc2VsZWN0ZWQgYnV0IG9ubHkgb25lIGlzIGFjdGl2ZSBhdCBh
IHRpbWUuDQpAQCAtOTk3LDYgKzk5OCw3IEBAIHB1YmxpYzoNCiAgICAgdmlydHVhbCBib29sIGhh
c0l0YWxpY0ZvbnQoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBoYXNNaXNzcGVsbGlu
ZygpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBt
aXNzcGVsbGluZ1JhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNl
YXJjaERpcmVjdGlvbikgY29uc3QgPSAwOw0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVh
bCBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIGhhc1Nh
bWVGb250KGNvbnN0IEFYQ29yZU9iamVjdCYpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29s
IGhhc1NhbWVGb250Q29sb3IoY29uc3QgQVhDb3JlT2JqZWN0JikgY29uc3QgPSAwOw0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCmluZGV4IDVlMGM4YzhlYmM2Ny4uOTg5
MzQxYWZjMjEyIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tDQpA
QCAtNTIsNiArNTIsNyBAQA0KICNpbXBvcnQgIlNWR0VsZW1lbnRJbmxpbmVzLmgiDQogI2ltcG9y
dCAiU1ZHTmFtZXMuaCINCiAjaW1wb3J0ICJTZWxlY3Rpb25HZW9tZXRyeS5oIg0KKyNpbXBvcnQg
IlNpbXBsZVJhbmdlLmgiDQogI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiDQogI2ltcG9ydCAiV0FL
U2Nyb2xsVmlldy5oIg0KICNpbXBvcnQgIldBS1dpbmRvdy5oIg0KQEAgLTE2OTQsMTIgKzE2OTUs
NyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJl
c3VsdCwgTlNTdHJpbmcgKnN0cmluZykNCiB7DQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nl
c3NpYmlsaXR5Q2FsbF0pDQogICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCi0gICAgDQotICAg
IGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCi0gICAg
aWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkNCi0gICAgICAgIHJldHVybiBDR1Jl
Y3RaZXJvOw0KLSAgICBhdXRvIHJlY3QgPSBGbG9hdFJlY3Qoc25hcHBlZEludFJlY3QoZG9jdW1l
bnQtPnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpKTsNCi0gICAgcmV0dXJuIFtzZWxm
IGNvbnZlcnRSZWN0VG9TcGFjZTpyZWN0IHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3Bh
Y2U6OlNjcmVlbl07DQorICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6c2VsZi5h
eEJhY2tpbmdPYmplY3QtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpIHNwYWNlOkFjY2Vzc2liaWxp
dHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl07DQogfQ0KIA0KIC8vIFRoZSAiY2VudGVyIHBvaW50
IiBpcyB3aGVyZSBWb2ljZU92ZXIgd2lsbCAicHJlc3MiIGFuIG9iamVjdC4gVGhpcyBtYXkgbm90
IGJlIHRoZSBhY3R1YWwNCkBAIC0xOTE1LDcgKzE5MTEsNyBAQCBzdGF0aWMgTlNBcnJheSAqYWNj
ZXNzaWJsZUVsZW1lbnRzRm9yT2JqZWN0cyhjb25zdCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaA0KICAgICAgICAgfSk7DQogICAgIH0NCiANCi0gICAgcmV0dXJuIGNvbnZlcnRUb05TQXJy
YXkoYWNjZXNzaWJsZUVsZW1lbnRzKTsNCisgICAgcmV0dXJuIG1ha2VOU0FycmF5KGFjY2Vzc2li
bGVFbGVtZW50cyk7DQogfQ0KIA0KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5RGV0YWlsc0Vs
ZW1lbnRzDQpAQCAtMjEwNCw3ICsyMTAwLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVy
ZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJp
YSBjcml0ZXJpYSA9IGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0
ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUocGFyYW1ldGVycyk7DQogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOw0KICAgICBzZWxmLmF4
QmFja2luZ09iamVjdC0+ZmluZE1hdGNoaW5nT2JqZWN0cygmY3JpdGVyaWEsIHJlc3VsdHMpOw0K
LSAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShyZXN1bHRzKTsNCisgICAgcmV0dXJuIG1ha2VO
U0FycmF5KHJlc3VsdHMpOw0KIH0NCiANCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlNb2RpZnlTZWxl
Y3Rpb246KFRleHRHcmFudWxhcml0eSlncmFudWxhcml0eSBpbmNyZWFzZTooQk9PTClpbmNyZWFz
ZQ0KQEAgLTIyMDksNDcgKzIyMDUsNiBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZv
clZpZXcoV0FLVmlldyogdmlldykNCiAgICAgcmV0dXJuIHJhbmdlID8gW3NlbGYgY29udGVudEZv
clNpbXBsZVJhbmdlOipyYW5nZSBhdHRyaWJ1dGVkOmF0dHJpYnV0ZWRdIDogbmlsOw0KIH0NCiAN
Ci0vLyBGSVhNRTogTm8gcmVhc29uIGZvciB0aGlzIHRvIGJlIGEgbWV0aG9kIGluc3RlYWQgb2Yg
YSBmdW5jdGlvbi4NCi0tIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihjb25zdCBTaW1wbGVS
YW5nZSYpcmFuZ2UNCi17DQotICAgIGF1dG8mIGRvY3VtZW50ID0gcmFuZ2Uuc3RhcnQuZG9jdW1l
bnQoKTsNCi0gICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOw0KLSAgICBpZiAoIWZy
YW1lKQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAg
ICBhdXRvKiByb290RWRpdGFibGVFbGVtZW50ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCi0gICAgYXV0byogc2NvcGUgPSByb290RWRpdGFi
bGVFbGVtZW50ID8gcm9vdEVkaXRhYmxlRWxlbWVudCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dCgpOw0KLSAgICBpZiAoIXNjb3BlKQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90
Rm91bmQsIDApOw0KLQ0KLSAgICAvLyBNb3VzZSBldmVudHMgbWF5IGNhdXNlIFRTTSB0byBhdHRl
bXB0IHRvIGNyZWF0ZSBhbiBOU1JhbmdlIGZvciBhIHBvcnRpb24gb2YgdGhlIHZpZXcNCi0gICAg
Ly8gdGhhdCBpcyBub3QgaW5zaWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lvbi4gVGhlc2Ug
Y2hlY2tzIGVuc3VyZSB3ZSBkb24ndCBwcm9kdWNlDQotICAgIC8vIHBvdGVudGlhbGx5IGludmFs
aWQgZGF0YSB3aGVuIHJlc3BvbmRpbmcgdG8gc3VjaCByZXF1ZXN0cy4NCi0gICAgaWYgKCFzY29w
ZS0+Y29udGFpbnMocmFuZ2Uuc3RhcnQuY29udGFpbmVyLnB0cigpKSB8fCAhc2NvcGUtPmNvbnRh
aW5zKHJhbmdlLmVuZC5jb250YWluZXIucHRyKCkpKQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJh
bmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICByZXR1cm4gTlNNYWtlUmFuZ2UoY2hhcmFjdGVy
Q291bnQoeyB7ICpzY29wZSwgMCB9LCByYW5nZS5zdGFydCB9KSwgY2hhcmFjdGVyQ291bnQocmFu
Z2UpKTsNCi19DQotDQotLSAoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4pX2NvbnZlcnRUb0RP
TVJhbmdlOihOU1JhbmdlKXJhbmdlDQotew0KLSAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNO
b3RGb3VuZCkNCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQotDQotICAgIC8vIG91ciBj
cml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1l
dGhvZHMgdGhhdA0KLSAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmlu
ZyB0aGUgc2VsZWN0aW9uDQotICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRl
eHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdA0KLSAgICAv
LyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2Js
ZW1hdGljLiBPdXIgc29sdXRpb24gaXMNCi0gICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxl
IGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLg0K
LSAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQu
DQotICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsN
Ci0gICAgYXV0byBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCi0gICAgYXV0byBzY29wZSA9IHNl
bGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
Ow0KLSAgICBpZiAoIXNjb3BlKQ0KLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCi0NCi0g
ICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29u
dGVudHMoKnNjb3BlKSwgcmFuZ2UpOw0KLX0NCiANCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRl
ZCB0byB0YWtlIGEgdGV4dCBtYXJrZXIgcmVwcmVzZW50aW5nIGEgVmlzaWJsZVBvc2l0aW9uIGFu
ZCBjb252ZXJ0IGl0DQogLy8gaW50byBhIG5vcm1hbGl6ZWQgbG9jYXRpb24gd2l0aGluIHRoZSBk
b2N1bWVudC4NCkBAIC0yMjY3LDcgKzIyMjIsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYWNoZS0+
cmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNoYXJhY3Rlck9mZnNldCwgY2hhcmFj
dGVyT2Zmc2V0KTsNCiAgICAgICAgIGlmICghcmFuZ2UpDQogICAgICAgICAgICAgcmV0dXJuIE5T
Tm90Rm91bmQ7DQotICAgICAgICByZXR1cm4gW3NlbGYgX2NvbnZlcnRUb05TUmFuZ2U6KnJhbmdl
XS5sb2NhdGlvbjsNCisgICAgICAgIHJldHVybiBtYWtlTlNSYW5nZShyYW5nZSkubG9jYXRpb247
DQogICAgIH0NCiAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQogfQ0KQEAgLTIzNDYsNyArMjMwMSw3
IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0K
ICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KICAgICAgICAgcmV0
dXJuIG5pbDsNCiANCi0gICAgYXV0byByYW5nZSA9IFtzZWxmIF9jb252ZXJ0VG9ET01SYW5nZTpO
U01ha2VSYW5nZShwb3NpdGlvbiwgMCldOw0KKyAgICBhdXRvIHJhbmdlID0gbWFrZURPTVJhbmdl
KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpLCBOU01ha2VSYW5nZShwb3NpdGlvbiwg
MCkpOw0KICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiANCkBAIC0yNDE0
LDcgKzIzNjksNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmll
dyogdmlldykNCiB7DQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0p
DQogICAgICAgICByZXR1cm4gbmlsOw0KLSAgICBhdXRvIHdlYlJhbmdlID0gW3NlbGYgX2NvbnZl
cnRUb0RPTVJhbmdlOnJhbmdlXTsNCisgICAgYXV0byB3ZWJSYW5nZSA9IG1ha2VET01SYW5nZShz
ZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKSwgcmFuZ2UpOw0KICAgICBpZiAoIXdlYlJh
bmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiAgICAgcmV0dXJuIHNlbGYuYXhCYWNraW5nT2Jq
ZWN0LT5zdHJpbmdGb3JSYW5nZSgqd2ViUmFuZ2UpOw0KQEAgLTI2MDAsNiArMjU1NSwxNyBAQCBz
dGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAg
cmV0dXJuIFtzZWxmIHByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OnN0YXJ0XTsNCiB9
DQogDQorLSAoQ0dSZWN0KWZyYW1lRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UNCit7DQorICAgIGlm
ICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQorICAgICAgICByZXR1cm4gQ0dS
ZWN0WmVybzsNCisgICAgYXV0byB3ZWJSYW5nZSA9IG1ha2VET01SYW5nZShzZWxmLmF4QmFja2lu
Z09iamVjdC0+ZG9jdW1lbnQoKSwgcmFuZ2UpOw0KKyAgICBpZiAoIXdlYlJhbmdlKQ0KKyAgICAg
ICAgcmV0dXJuIENHUmVjdFplcm87DQorICAgIGF1dG8gcmVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0LT5ib3VuZHNGb3JSYW5nZSgqd2ViUmFuZ2UpOw0KKyAgICByZXR1cm4gW3NlbGYgY29udmVy
dFJlY3RUb1NwYWNlOnJlY3Qgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6U2Ny
ZWVuXTsNCit9DQorDQogLy8gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gcmV0dXJuIHRoZSBi
b3VuZHMgb2YgYSB0ZXh0IG1hcmtlciByYW5nZSBpbiBzY3JlZW4gY29vcmRpbmF0ZXMuDQogLSAo
Q0dSZWN0KWZyYW1lRm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKilhcnJheQ0KIHsNCkBAIC0yOTMx
LDcgKzI4OTcsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmll
dyogdmlldykNCiAgICAgICAgIHJldHVybiBuaWw7DQogDQogICAgIGF1dG8gcmFkaWNhbmQgPSBz
ZWxmLmF4QmFja2luZ09iamVjdC0+bWF0aFJhZGljYW5kKCk7DQotICAgIHJldHVybiByYWRpY2Fu
ZCA/IGNvbnZlcnRUb05TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCisgICAgcmV0dXJuIHJhZGlj
YW5kID8gbWFrZU5TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCiB9DQogDQogLSAoV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgKilhY2Nlc3NpYmlsaXR5TWF0aE51bWVyYXRvck9iamVjdA0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCmluZGV4IDExYTc5YjEyMTcyZC4uMzY5NTJmOTQw
OGZiIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQpAQCAtOTkyLDYgKzk5MiwxMyBA
QCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpDQogICAgICAgICB0
cmVlLT5hcHBseVBlbmRpbmdDaGFuZ2VzKCk7DQogfQ0KIA0KK3N0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0DQor
ew0KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOw0KKyAgICBhdXRvKiBheE9iamVjdCA9IGFz
c29jaWF0ZWRBWE9iamVjdCgpOw0KKyAgICByZXR1cm4gYXhPYmplY3QgPyBheE9iamVjdC0+dmlz
aWJsZUNoYXJhY3RlclJhbmdlKCkgOiBzdGQ6Om51bGxvcHQ7DQorfQ0KKw0KIHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnJhbmdlRm9yUGxhaW5UZXh0UmFuZ2Uo
Y29uc3QgUGxhaW5UZXh0UmFuZ2UmIGF4UmFuZ2UpIGNvbnN0DQogew0KICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOw0KQEAgLTE0NzAsNiArMTQ3NywxNSBAQCB2b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9u
UmFuZw0KICAgICAgICAgb2JqZWN0LT5zZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKHZp
c2libGVQb3NpdGlvblJhbmdlKTsNCiB9DQogDQorRmxvYXRSZWN0IEFYSXNvbGF0ZWRPYmplY3Q6
OnVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0DQorew0KKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPEZsb2F0UmVjdD4oW3RoaXNdICgpIC0+
IEZsb2F0UmVjdCB7DQorICAgICAgICBpZiAoYXV0byogb2JqZWN0ID0gYXNzb2NpYXRlZEFYT2Jq
ZWN0KCkpDQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+dW5vYnNjdXJlZENvbnRlbnRSZWN0
KCk7DQorICAgICAgICByZXR1cm4geyB9Ow0KKyAgICB9KTsNCit9DQorDQogc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudFJhbmdlKCkgY29uc3QNCiB7
DQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oDQpp
bmRleCAzYjRlZWExZmJiNTguLmJhNjNkYzI3MjFkMiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaA0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5oDQpAQCAtNDQxLDkgKzQ0MSwxMSBAQCBwcml2YXRlOg0KICAgICBBWENvcmVPYmplY3QqIGFj
Y2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dCBvdmVycmlkZTsNCiAgICAgaW50IGxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCBvdmVycmlkZTsNCiAgICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2VG
b3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0
IG92ZXJyaWRlOw0KKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiB2aXNpYmxlQ2hhcmFj
dGVyUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCiAgICAgaW50IGluZGV4KGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOw0KICAgICB2b2lkIGxpbmVCcmVha3MoVmVjdG9yPGlu
dD4mKSBjb25zdCBvdmVycmlkZTsNCi0NCisgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50
UmVjdCgpIGNvbnN0IG92ZXJyaWRlOw0KKyAgICANCiAgICAgLy8gQXR0cmlidXRlIHNldHRlcnMu
DQogICAgIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0
SXNFeHBhbmRlZChib29sKSBvdmVycmlkZTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5oDQppbmRleCBlZWEzZTY5ZGVkOTMuLmFjMmJkYmZlMmFjNSAxMDA2NDQNCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaA0KQEAgLTM0LDYgKzM0LDcgQEANCiANCiBu
YW1lc3BhY2UgV2ViQ29yZSB7DQogc3RydWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYTsN
CitjbGFzcyBEb2N1bWVudDsNCiBjbGFzcyBJbnRSZWN0Ow0KIGNsYXNzIEZsb2F0UG9pbnQ7DQog
Y2xhc3MgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ7DQpAQCAtMTExLDExICsxMTIsMTUgQEAg
c3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3Vy
Y2VDb2RlID0gQCJVSUFjY2Vzc2liaWwNCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQ
b3N0c2NyaXB0UGFpcnM7DQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0
UGFpcnM7DQogDQorLSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdl
Ow0KKw0KIC0gKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKiliYXNlQWNjZXNzaWJpbGl0
eVJlc29sdmVkRWRpdGluZ1N0eWxlczsNCiANCiBleHRlcm4gV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNlYXJjaENyaXRlcmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRp
Y2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoY29uc3QgTlNEaWN0aW9uYXJ5ICopOw0KIA0KLWV4
dGVybiBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7DQorZXh0ZXJuIE5TQXJyYXkgKm1ha2VO
U0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJik7DQorZXh0ZXJuIE5TUmFuZ2UgbWFrZU5TUmFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4pOw0KK2V4dGVybiBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiBtYWtlRE9NUmFuZ2UoV2ViQ29yZTo6RG9jdW1lbnQqLCBOU1JhbmdlKTsNCiANCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkNCiAtIChpZClfYWNjZXNzaWJpbGl0eVdlYkRvY3VtZW50
VmlldzsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0NCmluZGV4IDFl
NTY5MWQxOWY5Mi4uNWY3YWQyODY5ZTc0IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tDQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckJhc2UubW0NCkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIE5TQXJyYXkgKmNvbnZl
cnRNYXRoUGFpcnNUb05TQXJyYXkoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGkNCiAgICAgfSkuYXV0b3JlbGVhc2UoKTsNCiB9DQogDQotTlNBcnJheSAqY29udmVydFRvTlNB
cnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgY2hpbGRyZW4pDQorTlNBcnJheSAqbWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhD
b3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKQ0KIHsNCiAg
ICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoY2hpbGRyZW4sIFtdIChjb25zdCBhdXRvJiBjaGlsZCkg
LT4gaWQgew0KICAgICAgICAgYXV0byB3cmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsNCkBAIC00
NjIsNiArNDYyLDI3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0
aW9uKFBhdGhDb252ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uDQogICAgIHJldHVybiBjb252
ZXJ0ZWRQYXRoLmF1dG9yZWxlYXNlKCk7DQogfQ0KIA0KKy8vIERldGVybWluZSB0aGUgdmlzaWJs
ZSByYW5nZSBieSBjaGVja2luZyBpbnRlcnNlY3Rpb24gb2YgdW5vYnNjdXJlZENvbnRlbnRSZWN0
IGFuZCBhIHJhbmdlIG9mIHRleHQgYnkNCisvLyBhZHZhbmNpbmcgZm9yd2FyZCBieSBsaW5lIGZy
b20gdG9wIGFuZCBiYWNrd2FyZHMgYnkgbGluZSBmcm9tIHRoZSBib3R0b20sIHVudGlsIHdlIGhh
dmUgYSB2aXNpYmxlIHJhbmdlLg0KKy0gKE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVZpc2libGVDaGFy
YWN0ZXJSYW5nZQ0KK3sNCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVG
cm9tTWFpblRocmVhZDxOU1JhbmdlPihbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0g
KCkgLT4gTlNSYW5nZSB7DQorICAgICAgICBhdXRvIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRT
ZWxmLmdldCgpLmJhc2VVcGRhdGVCYWNraW5nU3RvcmU7DQorICAgICAgICBpZiAoIWJhY2tpbmdP
YmplY3QpDQorICAgICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0K
Kw0KKyAgICAgICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlTlNSYW5nZShiYWNraW5nT2JqZWN0
LT5lbGVtZW50UmFuZ2UoKSk7DQorICAgICAgICBpZiAoZWxlbWVudFJhbmdlLmxvY2F0aW9uID09
IE5TTm90Rm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRSYW5nZTsNCisgICAgICAg
IA0KKyAgICAgICAgYXV0byB2aXNpYmxlUmFuZ2UgPSBtYWtlTlNSYW5nZShiYWNraW5nT2JqZWN0
LT52aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSk7DQorICAgICAgICBpZiAodmlzaWJsZVJhbmdlLmxv
Y2F0aW9uID09IE5TTm90Rm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIHZpc2libGVSYW5nZTsN
CisNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZSh2aXNpYmxlUmFuZ2UubG9jYXRpb24gLSBl
bGVtZW50UmFuZ2UubG9jYXRpb24sIHZpc2libGVSYW5nZS5sZW5ndGgpOw0KKyAgICB9KTsNCit9
DQorDQogLSAoaWQpX2FjY2Vzc2liaWxpdHlXZWJEb2N1bWVudFZpZXcNCiB7DQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOw0KQEAgLTYyMyw2ICs2NDQsNTAgQEAgc3RhdGljIHZvaWQgQVhBdHRy
aWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3Ry
aW5nLA0KICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldExhbmd1YWdlKGF0dHJTdHJpbmcsIG5vZGUt
PnJlbmRlcmVyKCksIGF0dHJTdHJpbmdSYW5nZSk7DQogfQ0KIA0KKw0KK05TUmFuZ2UgbWFrZU5T
UmFuZ2Uoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2UpDQorew0KKyAgICBpZiAoIXJh
bmdlKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKyAgICAN
CisgICAgYXV0byYgZG9jdW1lbnQgPSByYW5nZS0+c3RhcnQuZG9jdW1lbnQoKTsNCisgICAgYXV0
byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOw0KKyAgICBpZiAoIWZyYW1lKQ0KKyAgICAgICAg
cmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICBhdXRvKiByb290RWRp
dGFibGVFbGVtZW50ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJs
ZUVsZW1lbnQoKTsNCisgICAgYXV0byogc2NvcGUgPSByb290RWRpdGFibGVFbGVtZW50ID8gcm9v
dEVkaXRhYmxlRWxlbWVudCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOw0KKyAgICBpZiAo
IXNjb3BlKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0K
KyAgICAvLyBNb3VzZSBldmVudHMgbWF5IGNhdXNlIFRTTSB0byBhdHRlbXB0IHRvIGNyZWF0ZSBh
biBOU1JhbmdlIGZvciBhIHBvcnRpb24gb2YgdGhlIHZpZXcNCisgICAgLy8gdGhhdCBpcyBub3Qg
aW5zaWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lvbi4gVGhlc2UgY2hlY2tzIGVuc3VyZSB3
ZSBkb24ndCBwcm9kdWNlDQorICAgIC8vIHBvdGVudGlhbGx5IGludmFsaWQgZGF0YSB3aGVuIHJl
c3BvbmRpbmcgdG8gc3VjaCByZXF1ZXN0cy4NCisgICAgaWYgKCFzY29wZS0+Y29udGFpbnMocmFu
Z2UtPnN0YXJ0LmNvbnRhaW5lci5wdHIoKSkgfHwgIXNjb3BlLT5jb250YWlucyhyYW5nZS0+ZW5k
LmNvbnRhaW5lci5wdHIoKSkpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3Vu
ZCwgMCk7DQorDQorICAgIHJldHVybiBOU01ha2VSYW5nZShjaGFyYWN0ZXJDb3VudCh7IHsgKnNj
b3BlLCAwIH0sIHJhbmdlLT5zdGFydCB9KSwgY2hhcmFjdGVyQ291bnQoKnJhbmdlKSk7DQorfQ0K
Kw0KK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VET01SYW5nZShEb2N1bWVudCogZG9j
dW1lbnQsIE5TUmFuZ2UgcmFuZ2UpDQorew0KKyAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNO
b3RGb3VuZCkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIC8vIG91ciBj
cml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1l
dGhvZHMgdGhhdA0KKyAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmlu
ZyB0aGUgc2VsZWN0aW9uDQorICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRl
eHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdA0KKyAgICAv
LyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2Js
ZW1hdGljLiBPdXIgc29sdXRpb24gaXMNCisgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxl
IGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLg0K
KyAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQu
DQorICAgIGF1dG8gc2VsZWN0aW9uUm9vdCA9IGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQorICAgIGF1dG8gc2NvcGUgPSBz
ZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQo
KTsNCisgICAgaWYgKCFzY29wZSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQor
ICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNv
bnRlbnRzKCpzY29wZSksIHJhbmdlKTsNCit9DQorDQogLy8gUmV0dXJucyBhbiBhcnJheSBvZiBz
dHJpbmdzIGFuZCBBWE9iamVjdCB3cmFwcGVycyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0ZXh0DQog
Ly8gcnVucyBhbmQgcmVwbGFjZW1lbnQgbm9kZXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIHJhbmdl
Lg0KIC0gKE5TQXJyYXkgKiljb250ZW50Rm9yU2ltcGxlUmFuZ2U6KGNvbnN0IFNpbXBsZVJhbmdl
JilyYW5nZSBhdHRyaWJ1dGVkOihCT09MKWF0dHJpYnV0ZWQNCkBAIC02NzYsMTggKzc0MSwyNiBA
QCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5TTXV0YWJsZUF0dHJp
YnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsDQogICAgIHJldHVybiBhcnJheS5hdXRvcmVsZWFzZSgp
Ow0KIH0NCiANCi0tIChOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKWxpbmVSZWN0c0FuZFRleHQN
CistIChXZWJDb3JlOjpBWENvcmVPYmplY3QqKWJhc2VVcGRhdGVCYWNraW5nU3RvcmUNCiB7DQog
I2lmIFBMQVRGT1JNKE1BQykNCiAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYudXBkYXRl
T2JqZWN0QmFja2luZ1N0b3JlOw0KICAgICBpZiAoIWJhY2tpbmdPYmplY3QpDQotICAgICAgICBy
ZXR1cm4gbmlsOw0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogI2Vsc2UNCiAgICAgaWYgKCFb
c2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCi0gICAgICAgIHJldHVybiBuaWw7DQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0Ow0KICNlbmRpZg0KKyAgICByZXR1cm4gYmFja2luZ09iamVjdDsNCit9
DQogDQorLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilsaW5lUmVjdHNBbmRUZXh0DQorew0K
KyAgICBhdXRvIGJhY2tpbmdPYmplY3QgPSBzZWxmLmJhc2VVcGRhdGVCYWNraW5nU3RvcmU7DQor
ICAgIGlmICghYmFja2luZ09iamVjdCkNCisgICAgICAgIHJldHVybiBuaWw7DQorICAgIA0KICAg
ICBhdXRvIHJhbmdlID0gYmFja2luZ09iamVjdC0+ZWxlbWVudFJhbmdlKCk7DQogICAgIGlmICgh
cmFuZ2UpDQogICAgICAgICByZXR1cm4gbmlsOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0NCmluZGV4IDcwMDRjNDZiNjQzOS4uZDY5NDFmODJmMTIyIDEwMDY0NA0KLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0NCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tDQpAQCAtMTc5NSw3ICsxNzk1LDcgQEAg
c3RhdGljIHZvaWQgV2ViVHJhbnNmb3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9pZCogaW5mbywg
Y29uc3QgQ0dQYXRoRWxlbWVudCAqZWwNCiANCiAtIChOU0FycmF5PFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyICo+ICopY2hpbGRyZW5WZWN0b3JBcnJheQ0KIHsNCi0gICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkoc2VsZi5heEJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KKyAgICBy
ZXR1cm4gbWFrZU5TQXJyYXkoc2VsZi5heEJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KIH0N
CiANCiAtIChOU1ZhbHVlICopcG9zaXRpb24NCkBAIC0yMjAzLDcgKzIyMDMsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0
LT5pc1RyZWVJdGVtKCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udGVudENvcHk7DQogICAgICAgICAgICAgYmFja2lu
Z09iamVjdC0+YXJpYVRyZWVJdGVtQ29udGVudChjb250ZW50Q29weSk7DQotICAgICAgICAgICAg
cmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoY29udGVudENvcHkpOw0KKyAgICAgICAgICAgIHJldHVy
biBtYWtlTlNBcnJheShjb250ZW50Q29weSk7DQogICAgICAgICB9DQogDQogICAgICAgICByZXR1
cm4gc2VsZi5jaGlsZHJlblZlY3RvckFycmF5Ow0KQEAgLTIyMTMsNyArMjIxMyw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmpl
Y3QtPmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbkNv
cHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3Rl
ZENoaWxkcmVuQ29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2Vs
ZWN0ZWRDaGlsZHJlbkNvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShzZWxl
Y3RlZENoaWxkcmVuQ29weSk7DQogICAgICAgICB9DQogICAgICAgICByZXR1cm4gbmlsOw0KICAg
ICB9DQpAQCAtMjIyMiw3ICsyMjIyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5EDQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNMaXN0Qm94KCkpIHsNCiAgICAg
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
dmlzaWJsZUNoaWxkcmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT52aXNpYmxl
Q2hpbGRyZW4odmlzaWJsZUNoaWxkcmVuQ29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZl
cnRUb05TQXJyYXkodmlzaWJsZUNoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1h
a2VOU0FycmF5KHZpc2libGVDaGlsZHJlbkNvcHkpOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAg
aWYgKGJhY2tpbmdPYmplY3QtPmlzTGlzdCgpKQ0KQEAgLTIyMzQsNyArMjIzNCw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KIA0KICAgICBpZiAoYmFja2luZ09iamVj
dC0+aXNXZWJBcmVhKCkpIHsNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6QCJBWExpbmtVSUVsZW1lbnRzIl0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkoYmFja2luZ09iamVjdC0+ZG9jdW1lbnRMaW5rcygpKTsNCisgICAgICAgICAgICBy
ZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+ZG9jdW1lbnRMaW5rcygpKTsNCiANCiAg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExvYWRlZCJdKQ0K
ICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVj
dC0+aXNMb2FkZWQoKV07DQpAQCAtMjI2NywxNiArMjI2NywyMSBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFu
Z2UgPSBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZFRleHRSYW5nZSgpOw0KICAgICAgICAgICAgIHJl
dHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0UmFuZ2Uuc3RhcnQs
IHRleHRSYW5nZS5sZW5ndGgpXTsNCiAgICAgICAgIH0NCi0gICAgICAgIC8vIFRPRE86IEdldCBh
Y3R1YWwgdmlzaWJsZSByYW5nZS4gPHJkYXI6Ly9wcm9ibGVtLzQ3MTIxMDE+DQotICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxl
Q2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBiYWNraW5nT2Jq
ZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSA/IG5pbCA6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOiBO
U01ha2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0LT50ZXh0TGVuZ3RoKCkpXTsNCi0NCiAgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5zZXJ0
aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIGludCBsaW5lTnVt
YmVyID0gYmFja2luZ09iamVjdC0+aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCk7DQogICAgICAg
ICAgICAgcmV0dXJuIGxpbmVOdW1iZXIgPj0gMCA/IEAobGluZU51bWJlcikgOiBuaWw7DQogICAg
ICAgICB9DQogICAgIH0NCiANCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzogTlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRlXSkgew0KKyAg
ICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpKQ0KKyAgICAgICAgICAg
IHJldHVybiBuaWw7DQorICAgICAgICAvLyBUT0RPOiBHZXQgYWN0dWFsIHZpc2libGUgcmFuZ2Uu
IDxyZGFyOi8vcHJvYmxlbS80NzEyMTAxPg0KKyAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlz
VGV4dENvbnRyb2woKSkNCisgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgYmFja2luZ09iamVjdC0+dGV4dExlbmd0aCgpKV07DQorICAgICAg
ICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6W3NlbGYgYWNjZXNzaWJpbGl0eVZpc2li
bGVDaGFyYWN0ZXJSYW5nZV1dOw0KKyAgICB9DQorDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV0pIHsNCiAgICAgICAg
IFVSTCB1cmwgPSBiYWNraW5nT2JqZWN0LT51cmwoKTsNCiAgICAgICAgIGlmICh1cmwuaXNOdWxs
KCkpDQpAQCAtMjM4MCw3ICsyMzg1LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5EDQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5SW1hZ2VPdmVybGF5RWxlbWVudHNBdHRyaWJ1dGVdKSB7DQogICAgICAgICBhdXRv
IGltYWdlT3ZlcmxheUVsZW1lbnRzID0gYmFja2luZ09iamVjdC0+aW1hZ2VPdmVybGF5RWxlbWVu
dHMoKTsNCi0gICAgICAgIHJldHVybiBpbWFnZU92ZXJsYXlFbGVtZW50cyA/IGNvbnZlcnRUb05T
QXJyYXkoKmltYWdlT3ZlcmxheUVsZW1lbnRzKSA6IG5pbDsNCisgICAgICAgIHJldHVybiBpbWFn
ZU92ZXJsYXlFbGVtZW50cyA/IG1ha2VOU0FycmF5KCppbWFnZU92ZXJsYXlFbGVtZW50cykgOiBu
aWw7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlFbWJlZGRlZEltYWdlRGVzY3JpcHRpb25BdHRyaWJ1dGVdKQ0KQEAgLTI0
MDQsMjkgKzI0MDksMjkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQog
ICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJMaXN0KCkpIHsNCiAgICAgICAgICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFic0NoaWxk
cmVuOw0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnRhYkNoaWxkcmVuKHRhYnNDaGlsZHJl
bik7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodGFic0NoaWxkcmVuKTsN
CisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkodGFic0NoaWxkcmVuKTsNCiAgICAgICAg
IH0NCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXSkNCi0gICAgICAgIHJldHVybiBjb252ZXJ0
VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbnRlbnRzKCkpOw0KKyAgICAgICAgcmV0dXJuIG1h
a2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbnRlbnRzKCkpOw0KIA0KICAgICBpZiAoYmFja2lu
Z09iamVjdC0+aXNUYWJsZSgpICYmIGJhY2tpbmdPYmplY3QtPmlzRXhwb3NhYmxlKCkpIHsNCiAg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
Um93c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFj
a2luZ09iamVjdC0+cm93cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFj
a2luZ09iamVjdC0+cm93cygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdKQ0KLSAgICAg
ICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPnZpc2libGVSb3dz
KCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT52aXNp
YmxlUm93cygpKTsNCiANCiAgICAgICAgIC8vIFRPRE86IGRpc3Rpbmd1aXNoIGJldHdlZW4gdmlz
aWJsZSBhbmQgbm9uLXZpc2libGUgY29sdW1ucw0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXQ0KICAgICAg
ICAgICAgIHx8IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlW
aXNpYmxlQ29sdW1uc0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05T
QXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1ucygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFr
ZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1ucygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0
cmlidXRlXSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsNCiAgICAgICAgICAgICBiYWNr
aW5nT2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCi0gICAg
ICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCiAg
ICAgICAgIH0NCiANCiAgICAgICAgIC8vIEhUTUwgdGFibGVzIGRvbid0IHN1cHBvcnQgdGhlc2Ug
YXR0cmlidXRlcy4NCkBAIC0yNDM1LDcgKzI0NDAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICByZXR1cm4gbmlsOw0KIA0KICAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5IZWFk
ZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNB
cnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVy
biBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KIA0KICAgICAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlIZWFk
ZXJBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgYXV0byogaGVhZGVyQ29udGFpbmVyID0gYmFj
a2luZ09iamVjdC0+aGVhZGVyQ29udGFpbmVyKCk7DQpAQCAtMjQ0MywxMCArMjQ0OCwxMCBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIH0NCiANCiAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93
SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCisgICAgICAgICAgICByZXR1
cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCiANCiAgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJs
ZUNlbGxzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShi
YWNraW5nT2JqZWN0LT5jZWxscygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
YmFja2luZ09iamVjdC0+Y2VsbHMoKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkNvdW50QXR0cmlidXRlXSkNCiAg
ICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5jb2x1bW5Db3VudCgpKTsNCkBAIC0y
NDY4LDcgKzI0NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAg
ICAgICAgIC8vIHJvd3MgYXR0cmlidXRlIGZvciBhIGNvbHVtbiBpcyB0aGUgbGlzdCBvZiBhbGwg
dGhlIGVsZW1lbnRzIGluIHRoYXQgY29sdW1uIGF0IGVhY2ggcm93DQogICAgICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVd
DQogICAgICAgICAgICAgfHwgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVy
dFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpKTsNCisgICAgICAgICAgICByZXR1
cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7DQogDQogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRlckF0
dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBhdXRvKiBoZWFkZXIgPSBiYWNraW5nT2JqZWN0LT5j
b2x1bW5IZWFkZXIoKTsNCkBAIC0yNDg4LDEwICsyNDkzLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgfQ0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1l
bnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNr
aW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNB
cnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KIA0KICAgICAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVs
ZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShi
YWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNB
cnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBQ29sdW1uSW5kZXhB
dHRyaWJ1dGVdKQ0KICAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmF4Q29sdW1u
SW5kZXgoKSk7DQpAQCAtMjUwNCwxMiArMjUwOSwxMiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXSkgew0KICAgICAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3Rl
ZENoaWxkcmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZENoaWxk
cmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRv
TlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VO
U0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCiAgICAgICAgIH0NCiAgICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0
ZV0pIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3Igcm93c0NvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYVRy
ZWVSb3dzKHJvd3NDb3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShy
b3dzQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHJvd3NDb3B5KTsNCiAg
ICAgICAgIH0NCiANCiAgICAgICAgIC8vIFRyZWVSb2xlcyBkbyBub3Qgc3VwcG9ydCBjb2x1bW5z
LCBidXQgTWFjIEFYIGV4cGVjdHMgdG8gYmUgYWJsZSB0byBhc2sgYWJvdXQgY29sdW1ucyBhdCB0
aGUgbGVhc3QuDQpAQCAtMjU0NCw3ICsyNTQ5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5EDQogICAgIC8vIFRoZSByb3dzIHRoYXQgYXJlIGNvbnNpZGVyZWQgaW5zaWRl
IHRoaXMgcm93Lg0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdKSB7DQogICAgICAgICBpZiAoYmFja2lu
Z09iamVjdC0+aXNUcmVlSXRlbSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzQVJJQVRyZWVHcmlkUm93
KCkpDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+
ZGlzY2xvc2VkUm93cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2lu
Z09iamVjdC0+ZGlzY2xvc2VkUm93cygpKTsNCiAgICAgfQ0KIA0KICAgICAvLyBUaGUgcm93IHRo
YXQgY29udGFpbnMgdGhpcyByb3cuIEl0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgZmlyc3Qg
cGFyZW50IHRoYXQgaXMgYSB0cmVlaXRlbS4NCkBAIC0yNjEyLDcgKzI2MTcsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV0p
IHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBsaW5rZWRVSUVsZW1lbnRzOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+bGlua2VkVUlF
bGVtZW50cyhsaW5rZWRVSUVsZW1lbnRzKTsNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KGxpbmtlZFVJRWxlbWVudHMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGxpbmtl
ZFVJRWxlbWVudHMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQXR0cmlidXRlXSkNCkBAIC0yNjg1LDcg
KzI2OTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmli
dXRlXSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGFyaWFPd25zOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYU93bnNFbGVt
ZW50cyhhcmlhT3ducyk7DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShhcmlhT3du
cyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYXJpYU93bnMpOw0KICAgICB9DQogDQog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJ
QVBvc0luU2V0QXR0cmlidXRlXSkNCkBAIC0yNzUxLDcgKzI3NTYsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RSYWRpY2FuZEF0dHJpYnV0ZV0p
IHsNCiAgICAgICAgICAgICBhdXRvIHJhZGljYW5kID0gYmFja2luZ09iamVjdC0+bWF0aFJhZGlj
YW5kKCk7DQotICAgICAgICAgICAgcmV0dXJuIHJhZGljYW5kID8gY29udmVydFRvTlNBcnJheSgq
cmFkaWNhbmQpIDogbmlsOw0KKyAgICAgICAgICAgIHJldHVybiByYWRpY2FuZCA/IG1ha2VOU0Fy
cmF5KCpyYWRpY2FuZCkgOiBuaWw7DQogICAgICAgICB9DQogDQogICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlvbk51bWVy
YXRvckF0dHJpYnV0ZV0pDQpAQCAtMjg0NSw3ICsyODUwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6QCJBWERldGFpbHNFbGVtZW50cyJdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGV0YWlsczsNCiAgICAgICAgIGJhY2tpbmdP
YmplY3QtPmFyaWFEZXRhaWxzRWxlbWVudHMoZGV0YWlscyk7DQotICAgICAgICByZXR1cm4gY29u
dmVydFRvTlNBcnJheShkZXRhaWxzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShkZXRh
aWxzKTsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUJyYWlsbGVMYWJlbEF0dHJpYnV0ZV0pDQpAQCAtMjg2MCw3ICsyODY1
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEVycm9yTWVzc2FnZUVsZW1lbnRzIl0pIHsN
CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBlcnJvck1lc3NhZ2VzOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYUVycm9yTWVzc2Fn
ZUVsZW1lbnRzKGVycm9yTWVzc2FnZXMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJy
YXkoZXJyb3JNZXNzYWdlcyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoZXJyb3JNZXNz
YWdlcyk7DQogICAgIH0NCiANCiAgICAgLy8gTXVsdGktc2VsZWN0YWJsZQ0KQEAgLTI4NzgsNyAr
Mjg4Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFyaWFDb250cm9s
c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBhcmlhQ29udHJvbHM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5h
cmlhQ29udHJvbHNFbGVtZW50cyhhcmlhQ29udHJvbHMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZl
cnRUb05TQXJyYXkoYXJpYUNvbnRyb2xzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShh
cmlhQ29udHJvbHMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNhYmxlQW5jZXN0b3JBdHRyaWJ1dGVdKSB7DQpA
QCAtMzQyOCwyMiArMzQzMyw2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RA0KICAgICB9KTsNCiB9DQogDQotLy8gRklYTUU6IE5vIHJlYXNvbiBmb3IgdGhpcyB0byBiZSBh
IG1ldGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rpb247IGNhbiBnZXQgZG9jdW1lbnQgZnJvbSByYW5n
ZS4NCi0tIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihjb25zdCBTaW1wbGVSYW5nZSYpcmFu
Z2UNCi17DQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7DQotICAgIA0KLSAgICBhdXRvIGRv
Y3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7DQotICAgIGlmICghZG9j
dW1lbnQpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQot
ICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOw0K
LSAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShO
U05vdEZvdW5kLCAwKTsNCi0NCi0gICAgcmV0dXJuIGNoYXJhY3RlclJhbmdlKG1ha2VCb3VuZGFy
eVBvaW50QmVmb3JlTm9kZUNvbnRlbnRzKCpkb2N1bWVudEVsZW1lbnQpLCByYW5nZSk7DQotfQ0K
LQ0KIC0gKE5TSW50ZWdlcilfaW5kZXhGb3JUZXh0TWFya2VyOihBWFRleHRNYXJrZXJSZWYpbWFy
a2VyDQogew0KICAgICBpZiAoIW1hcmtlcikNCkBAIC0zNDYwLDcgKzM0NDksNyBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICBpZiAoIXJhbmdlKQ0K
ICAgICAgICAgICAgICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCiANCi0gICAgICAgICAgICByZXR1
cm4gW3Byb3RlY3RlZFNlbGYgX2NvbnZlcnRUb05TUmFuZ2U6KnJhbmdlXS5sb2NhdGlvbjsNCisg
ICAgICAgICAgICByZXR1cm4gbWFrZU5TUmFuZ2UocmFuZ2UpLmxvY2F0aW9uOw0KICAgICAgICAg
fQ0KIA0KICAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQpAQCAtMzgzNSw4ICszODI0LDggQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsNCiAgICAgICAg
IGJhY2tpbmdPYmplY3QtPmZpbmRNYXRjaGluZ09iamVjdHMoJmNyaXRlcmlhLCByZXN1bHRzKTsN
CiAgICAgICAgIGlmICh3aWRnZXRDaGlsZHJlbikNCi0gICAgICAgICAgICByZXR1cm4gW3dpZGdl
dENoaWxkcmVuIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OmNvbnZlcnRUb05TQXJyYXko
cmVzdWx0cyldOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkocmVzdWx0cyk7DQor
ICAgICAgICAgICAgcmV0dXJuIFt3aWRnZXRDaGlsZHJlbiBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zy
b21BcnJheTptYWtlTlNBcnJheShyZXN1bHRzKV07DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJy
YXkocmVzdWx0cyk7DQogICAgIH0NCiANCiAgICAgLy8gVGV4dE1hcmtlciBhdHRyaWJ1dGVzLg0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tDQppbmRleCBkZDRlYjA5
NmZlZTkuLmJhNDc0Zjk2YzBiNiAxMDA2NDQNCi0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0NCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRJT1MubW0NCkBAIC0xMDgsNiArMTA4LDcgQEAgdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWRO
b3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwN
CiAtIChpZClfYWNjZXNzaWJpbGl0eUxpc3RBbmNlc3RvcjsNCiAtIChpZClfYWNjZXNzaWJpbGl0
eVBob3RvRGVzY3JpcHRpb247DQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlJbWFnZU92ZXJs
YXlFbGVtZW50czsNCistIChOU1JhbmdlKWFjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFu
Z2U7DQogDQogLy8gVGV4dE1hcmtlciByZWxhdGVkDQogLSAoTlNBcnJheSAqKXRleHRNYXJrZXJS
YW5nZTsNCkBAIC0zOTQsNiArMzk1LDkgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQ0KIA0KIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdEZXNjcmlwdGlvbk9mQXR0cmli
dXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQ0KIHsNCisgICAgaWYgKEpTU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcoYXR0cmlidXRlLCAiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSkN
CisgICAgICAgIHJldHVybiBbTlNTdHJpbmdGcm9tUmFuZ2UoW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlXSkgY3JlYXRlSlNTdHJpbmdSZWZdOw0KKw0KICAgICBy
ZXR1cm4gY3JlYXRlSlNTdHJpbmcoKTsNCiB9DQogDQo=
</data>
<flag name="commit-queue"
          id="470011"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444916</attachid>
            <date>2021-11-20 22:05:10 -0800</date>
            <delta_ts>2021-11-20 22:55:32 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>51530</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZDIwNDhjNGZhMmY2Li5kYzVjYTZlNzQ4MzcgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
NyBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11
bGF0b3IvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4NCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQ6
IEFkZGVkLg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdl
Lmh0bWw6IEFkZGVkLg0KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoN
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOg0KKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoNCisNCiAyMDIxLTExLTE5ICBLaWV0IEhv
ICA8dGhvMjJAYXBwbGUuY29tPg0KIA0KICAgICAgICAgSW50ZWdyYXRlIG1vdGlvbiBwYXRoIHRy
YW5zZm9ybXMgaW4gdHJhbnNmb3JtYXRpb24gcGlwZWxpbmUNCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL3Zp
c2libGUtY2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQN
CmluZGV4IDAwMDAwMDAwMDAwMC4uNjc4MDNkYjgxNzcwDQotLS0gL2Rldi9udWxsDQorKysgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvdmlzaWJsZS1jaGFyYWN0ZXIt
cmFuZ2UtZXhwZWN0ZWQudHh0DQpAQCAtMCwwICsxLDEyIEBADQorVGhpcyB0ZXN0cyB0aGF0IHZp
c2libGVDaGFyYWN0ZXJSYW5nZSByZXR1cm5zIGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxl
IG1vZGlmeWluZyBvYnNjdXJlZCBjb250ZW50Lg0KKw0KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4NCisNCisNCitWaXNpYmxlIHJhbmdlOiBOU1JhbmdlOiB7MCwgMzkwMH0NCitWaXNpYmxlIHJh
bmdlICg1MDAsIDIwMCk6IE5TUmFuZ2U6IHswLCAyNzB9DQorVmlzaWJsZSByYW5nZSwgb2Zmc2V0
OiAyMDAgKDIwMCwgNTAwKTogTlNSYW5nZTogezAsIDczNX0NCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlDQorDQorVEVTVCBDT01QTEVURQ0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3Rl
ZC50eHQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLmNkYmI4YzQy
MmRhNw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNp
YmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQNCkBAIC0wLDAgKzEsMTIgQEANCitUaGlz
IHRlc3RzIHRoYXQgdmlzaWJsZUNoYXJhY3RlclJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJs
ZSByYW5nZXMgd2hpbGUgbW9kaWZ5aW5nIG9ic2N1cmVkIGNvbnRlbnQuDQorDQorT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLg0KKw0KKw0KK1Zpc2libGUgcmFuZ2U6IE5TUmFuZ2U6IHswLCA0MjA1
fQ0KK1Zpc2libGUgcmFuZ2UgKDUwMCwgMjAwKTogTlNSYW5nZTogezAsIDM2MH0NCitWaXNpYmxl
IHJhbmdlLCBvZmZzZXQ6IDIwMCAoMjAwLCA1MDApOiBOU1JhbmdlOiB7MCwgNjkwfQ0KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUNCisNCitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5o
dG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5o
dG1sDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi4zOWQzMmRiZDIw
MzMNCi0tLSAvZGV2L251bGwNCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJs
ZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0KQEAgLTAsMCArMSw3MyBAQA0KKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4NCis8aHRtbD4NCis8aGVhZD4NCis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8
Ym9keSBpZD0iYm9keSI+DQorDQorPGRpdiBpZD0iZ3JvdXAiPg0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QN
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0K
K3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQor
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQorPC9kaXY+DQor
DQorPHNjcmlwdD4NCisNCisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB2aXNpYmxl
Q2hhcmFjdGVyUmFuZ2UgcmV0dXJucyBleHBlY3RlZCB2aXNpYmxlIHJhbmdlcyB3aGlsZSBtb2Rp
Znlpbmcgb2JzY3VyZWQgY29udGVudC4iKTsNCisNCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgew0KKyAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImdyb3VwIikuY2hpbGRBdEluZGV4KDApOw0KKyAg
ICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2U6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZB
dHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAgICAgICB0
ZXN0UnVubmVyLnNldFZpZXdTaXplKDUwMCwgMjAwKTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxl
IHJhbmdlICg1MDAsIDIwMCk6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVW
YWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAgICAgICBkb2N1bWVudC5i
b2R5LnNjcm9sbFRvcCA9IDIwMDsNCisgICAgICAgIHRlc3RSdW5uZXIuc2V0Vmlld1NpemUoMjAw
LCA1MDApOw0KKyAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2UsIG9mZnNldDogMjAwICgyMDAs
IDUwMCk6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNp
YmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZ3JvdXAiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7DQorICAgIH0NCisNCis8L3Nj
cmlwdD4NCisNCis8L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMNCmluZGV4IGE0MmM3MjlmMDdmZi4uYTRiMTA0ZTA1N2JlIDEwMDY0NA0K
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMNCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zDQpAQCAtMjExOCw3ICsyMTE4
LDcgQEAgd2Via2l0Lm9yZy9iLzE0ODgwNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc3ANCiBmYXN0L2RvbS9saW5raWZ5LXBob25lLW51
bWJlcnMuaHRtbCBbIFBhc3MgXQ0KIA0KIGFjY2Vzc2liaWxpdHkvdmlkZW8tZWxlbWVudC11cmwt
YXR0cmlidXRlLmh0bWwgWyBQYXNzIF0NCi0NCithY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFj
dGVyLXJhbmdlLmh0bWwgWyBQYXNzIF0NCiBhY2Nlc3NpYmlsaXR5L2FuY2VzdG9yLWNvbXB1dGF0
aW9uLmh0bWwgWyBQYXNzIF0NCiANCiAjIEVuYWJsZSAiYXJpYS1jdXJyZW50IiB0ZXN0cyBmb3Ig
aU9TLg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucw0K
aW5kZXggOWEwNzQ1ODc5MzU0Li5hNWMzMWZlYzlmMWYgMTAwNjQ0DQotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucw0KQEAgLTYwMSw2ICs2MDEsMTEgQEAgZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1pbnNlcnQtaHRtbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0N
CiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMuaHRtbCBbIEZhaWx1cmUgXQ0KIGVk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdW5pZmllZC1lbXVsYXRpb24uaHRtbCBbIEZhaWx1cmUg
XQ0KIA0KKyMgU2tpcCBkdWUgdG8gbGFjayBvZiBEdW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZG9tSWRlbnRpZmVyYCBpbXBsZW1lbnRhdGlvbi4NCithY2Nlc3NpYmlsaXR5
L21hYy9zZWFyY2gtcHJlZGljYXRlLWZvci1hZGhvYy1yYWRpby1ncm91cHMuaHRtbCBbIFNraXAg
XQ0KKyMgU2tpcCBkdWUgdG8gbGFjayBvZiBEdW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlYCBpbXBsZW1lbnRhdGlv
bi4NCithY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBTa2lwIF0N
CisNCiAjIDxyZGFyOi8vcHJvYmxlbS8yNjA1MDkyMz4gVGhlIHJlc3VsdCBpcyBwcm9iYWJseSBz
dGlsbCBhIHBhc3MsIGJ1dCB3ZSBkb24ndCBoYXZlIGEgd2F5DQogIyB0byBoYXZlIHBsYXRmb3Jt
IHNwZWNpZmljIHJlc3VsdHMgdGhhdCBhcmUgZGlmZmVyZW50IGJldHdlZW4gV0sxIGFuZCBXSzIu
DQogYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBd
DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucw0KaW5kZXggYTcxZTQz
MGViOGU5Li4wZmI5YzM5OTExMGIgMTAwNjQ0DQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9ucw0KKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RF
eHBlY3RhdGlvbnMNCkBAIC0yNzgsNiArMjc4LDcgQEAgYWNjZXNzaWJpbGl0eS9hcmlhLWxpc3Ri
b3gtY2xlYXItc2VsZWN0aW9uLWNyYXNoLmh0bWwgWyBTa2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2xp
c3Rib3gtY2xlYXItc2VsZWN0aW9uLmh0bWwgWyBTa2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2VtYmVk
ZGVkLWltYWdlLWRlc2NyaXB0aW9uLmh0bWwgWyBTa2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2ltZy1u
by1hbHQtbm90LWlnbm9yZWQtd2l0aC10aXRsZS5odG1sIFsgU2tpcCBdDQorYWNjZXNzaWJpbGl0
eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIFsgU2tpcCBdDQogDQogIyBOZWVkIHRvIGlt
cGxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNEb2N1bWVudFJvbGVBbmNlc3Rvcigp
LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yKCksDQog
IyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luRGVzY3JpcHRpb25MaXN0RGV0YWlsKCksIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5EZXNjcmlwdGlvbkxpc3RUZXJtKCksIGFuZA0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZw0KaW5kZXggOGJlYTRmNmZmZDU1Li5iNmMwZjcwMGMzZTcgMTAwNjQ0DQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cNCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KQEAg
LTEsMyArMSw1MSBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4NCisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZp
c2libGUgdGV4dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgSW1wbGVtZW50IHZpc2li
bGVDaGFyYWN0ZXJSYW5nZSBmb3Igc3RhdGljIHRleHQgZWxlbWVudHMgc28gdGhhdCBCb29rcyBj
YW4gZGV0ZXJtaW5lIHRoZSB2aXNpYmxlDQorICAgICAgICBjb250ZW50IG9uIGEgcGFnZS4NCisN
CisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRt
bA0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOg0K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJS
YW5nZSBjb25zdCk6DQorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dW5v
YnNjdXJlZENvbnRlbnRSZWN0IGNvbnN0KToNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0Lmg6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdEludGVyZmFjZS5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlWaXNpYmxlQ29udGVudFJlY3RdKToNCisgICAg
ICAgIChhY2Nlc3NpYmxlRWxlbWVudHNGb3JPYmplY3RzKToNCisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlGaW5kTWF0Y2hpbmdPYmplY3RzOl0p
Og0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcG9zaXRpb25Gb3JU
ZXh0TWFya2VyOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
dGV4dE1hcmtlckZvclBvc2l0aW9uOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgc3RyaW5nRm9yUmFuZ2U6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBmcmFtZUZvclJhbmdlOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eU1hdGhSYWRpY2FuZF0pOg0KKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb05TUmFuZ2U6XSk6
IERlbGV0ZWQuDQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfY29u
dmVydFRvRE9NUmFuZ2U6XSk6IERlbGV0ZWQuDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOg0KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSBjb25zdCk6DQorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6dW5vYnNjdXJlZENvbnRlbnRSZWN0IGNvbnN0KToNCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOg0K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UuaDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLm1tOg0KKyAgICAgICAgKG1ha2VOU0FycmF5KToNCisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNo
YXJhY3RlclJhbmdlXSk6DQorICAgICAgICAobWFrZU5TUmFuZ2UpOg0KKyAgICAgICAgKG1ha2VE
T01SYW5nZSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Ug
YmFzZVVwZGF0ZUJhY2tpbmdTdG9yZV0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlIGxpbmVSZWN0c0FuZFRleHRdKToNCisgICAgICAgIChjb252ZXJ0VG9O
U0FycmF5KTogRGVsZXRlZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBjaGlsZHJlblZlY3RvckFycmF5XSk6DQorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6DQor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfaW5kZXhGb3JUZXh0TWFy
a2VyOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZvclBhcmFtZXRlcjpdKToNCisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0K
Kw0KIDIwMjEtMTEtMTkgIEtpZXQgSG8gIDx0aG8yMkBhcHBsZS5jb20+DQogDQogICAgICAgICBJ
bXBsZW1lbnQgcGFyc2luZyBhbmQgYW5pbWF0aW9uIHN1cHBvcnQgZm9yIHJheSgpIHNoYXBlIGFj
Y2VwdGVkIGJ5IG9mZnNldC1wYXRoDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHANCmluZGV4IDkzODQ4ZTFjYWI3Ni4uNjc0NmY2
Y2JiNDhmIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcA0KQEAgLTcwNCw2ICs3MDQsNTIgQEAgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudFJhbmdlKCkgY29uc3QNCiAg
ICAgcmV0dXJuIEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yTm9kZUNvbnRlbnRzKCpub2RlKTsNCiB9
DQogDQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6dmlz
aWJsZUNoYXJhY3RlclJhbmdlKCkgY29uc3QNCit7DQorICAgIGF1dG8gcmFuZ2UgPSBlbGVtZW50
UmFuZ2UoKTsNCisgICAgaWYgKCFyYW5nZSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
DQorDQorICAgIGF1dG8gY29udGVudFJlY3QgPSB1bm9ic2N1cmVkQ29udGVudFJlY3QoKTsNCisg
ICAgYXV0byBlbGVtZW50UmVjdCA9IHNuYXBwZWRJbnRSZWN0KHRoaXMtPmVsZW1lbnRSZWN0KCkp
Ow0KKyAgICBpZiAoIWNvbnRlbnRSZWN0LmludGVyc2VjdHMoZWxlbWVudFJlY3QpKQ0KKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBv
aW50PiBzdGFydEJvdW5kYXJ5ID0gcmFuZ2UtPnN0YXJ0Ow0KKyAgICBzdGQ6Om9wdGlvbmFsPEJv
dW5kYXJ5UG9pbnQ+IGVuZEJvdW5kYXJ5ID0gcmFuZ2UtPmVuZDsNCisNCisgICAgLy8gT3JpZ2lu
IGlzbid0IGNvbnRhaW5lZCBpbiB2aXNpYmxlIHJlY3QsIHN0YXJ0IG1vdmluZyBmb3J3YXJkIGJ5
IGxpbmUuDQorICAgIHdoaWxlICghY29udGVudFJlY3QuY29udGFpbnMoZWxlbWVudFJlY3QubG9j
YXRpb24oKSkpIHsNCisgICAgICAgIGF1dG8gbmV4dExpbmVQb3NpdGlvbiA9IG5leHRMaW5lRW5k
UG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigqc3Rh
cnRCb3VuZGFyeSkpKTsNCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVz
dFN0YXJ0Qm91bmRhcnkgPSBtYWtlQm91bmRhcnlQb2ludChuZXh0TGluZVBvc2l0aW9uKTsNCisg
ICAgICAgIGlmICghdGVzdFN0YXJ0Qm91bmRhcnkgfHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RT
dGFydEJvdW5kYXJ5KSkNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIA0KKyAgICAgICAg
c3RhcnRCb3VuZGFyeSA9IHRlc3RTdGFydEJvdW5kYXJ5Ow0KKyAgICAgICAgZWxlbWVudFJlY3Qg
PSBib3VuZHNGb3JSYW5nZShTaW1wbGVSYW5nZSgqc3RhcnRCb3VuZGFyeSwgcmFuZ2UtPmVuZCkp
Ow0KKyAgICAgICAgaWYgKGVsZW1lbnRSZWN0LmlzRW1wdHkoKSkNCisgICAgICAgICAgICBicmVh
azsNCisgICAgfQ0KKw0KKyAgICAvLyBFbmQgaXNuJ3QgY29udGFpbmVkIGluIHZpc2libGUgcmVj
dCwgc3RhcnQgbW92aW5nIGJhY2t3YXJkcyBieSBsaW5lLg0KKyAgICB3aGlsZSAoIWNvbnRlbnRS
ZWN0LmNvbnRhaW5zKGVsZW1lbnRSZWN0LmxvY2F0aW9uKCkgKyBlbGVtZW50UmVjdC5zaXplKCkp
KSB7DQorICAgICAgICBhdXRvIHByZXZpb3VzTGluZVBvc2l0aW9uID0gcHJldmlvdXNMaW5lU3Rh
cnRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKCpl
bmRCb3VuZGFyeSkpKTsNCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVz
dEVuZEJvdW5kYXJ5ID0gbWFrZUJvdW5kYXJ5UG9pbnQocHJldmlvdXNMaW5lUG9zaXRpb24pOw0K
KyAgICAgICAgaWYgKCF0ZXN0RW5kQm91bmRhcnkgfHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RF
bmRCb3VuZGFyeSkpDQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICANCisgICAgICAgIGVu
ZEJvdW5kYXJ5ID0gdGVzdEVuZEJvdW5kYXJ5Ow0KKyAgICAgICAgZWxlbWVudFJlY3QgPSBib3Vu
ZHNGb3JSYW5nZSh7ICpzdGFydEJvdW5kYXJ5LCAqZW5kQm91bmRhcnkgfSk7DQorICAgICAgICBp
ZiAoZWxlbWVudFJlY3QuaXNFbXB0eSgpKQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQor
DQorICAgIGlmICghc3RhcnRCb3VuZGFyeSB8fCAhZW5kQm91bmRhcnkpDQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0Ow0KKyAgICANCisgICAgcmV0dXJuIFNpbXBsZVJhbmdlKCpzdGFydEJv
dW5kYXJ5LCAqZW5kQm91bmRhcnkpOw0KK30NCisNCiBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaW5kVGV4dFJhbmdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBzZWFyY2hTdHJpbmdzLCBjb25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlT
ZWFyY2hUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QNCiB7DQogICAgIHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IGZvdW5kOw0KQEAgLTMxODIsNiArMzIyOCwxNCBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgSW50
UmVjdCYgc3ViZm9jdQ0KICAgICAgICAgc2Nyb2xsUGFyZW50LT5zY3JvbGxUb01ha2VWaXNpYmxl
V2l0aFN1YkZvY3VzKG5ld1N1YmZvY3VzKTsNCiB9DQogDQorRmxvYXRSZWN0IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OnVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0DQorew0KKyAgICBhdXRvIGRv
Y3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsNCisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1l
bnQtPnZpZXcoKSkNCisgICAgICAgIHJldHVybiB7IH07DQorICAgIHJldHVybiBGbG9hdFJlY3Qo
c25hcHBlZEludFJlY3QoZG9jdW1lbnQtPnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkp
KTsNCit9DQorDQogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb0dsb2JhbFBvaW50
KGNvbnN0IEludFBvaW50JiBnbG9iYWxQb2ludCkgY29uc3QNCiB7DQogICAgIC8vIFNlYXJjaCB1
cCB0aGUgcGFyZW50IGNoYWluIGFuZCBjcmVhdGUgYSB2ZWN0b3Igb2YgYWxsIHNjcm9sbGFibGUg
cGFyZW50IG9iamVjdHMNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oDQppbmRleCAyMWZmNGEyOGE1YTYuLjU5Y2VhNGY0YjM5NyAxMDA2
NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaA0KQEAgLTgwOCw3ICs4MDgsNyBAQCBwcm90ZWN0ZWQ6DQogICAgIHZvaWQgYXJpYUVsZW1l
bnRzRnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImLCBjb25zdCBRdWFs
aWZpZWROYW1lJikgY29uc3Q7DQogICAgIHZvaWQgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0
cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdDsNCiAgICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0NCi0NCisgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVj
dCgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByYWRpb0dyb3Vw
QW5jZXN0b3IoKSBjb25zdDsNCiANCiAgICAgYm9vbCBhbGxvd3NUZXh0UmFuZ2VzKCkgY29uc3Q7
DQpAQCAtODIxLDYgKzgyMSw3IEBAIHByaXZhdGU6DQogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IHJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW9uKGNvbnN0IFNpbXBs
ZVJhbmdlJiwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKSBjb25zdDsNCiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VsZWN0aW9uUmFu
Z2UoKSBjb25zdDsNCiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZmluZFRleHRSYW5n
ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoU3RyaW5ncywgY29uc3QgU2ltcGxlUmFuZ2Um
IHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbikgY29uc3Q7DQorICAgIHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0IG92
ZXJyaWRlOw0KIA0KIHByb3RlY3RlZDogLy8gRklYTUU6IE1ha2UgdGhlIGRhdGEgbWVtYmVycyBw
cml2YXRlLg0KICAgICBib29sIGNoaWxkcmVuSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBt
X2NoaWxkcmVuSW5pdGlhbGl6ZWQ7IH0NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQppbmRleCBlMTU5
NjIxYzg1NDkuLjE2NzlmMDFjNTFkZiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaA0KQEAgLTk4
OCw2ICs5ODgsNyBAQCBwdWJsaWM6DQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0V4cGFuZGVkKGJv
b2wpID0gMDsNCiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0ID0g
MDsNCiAgICAgdmlydHVhbCBGbG9hdFJlY3QgY29udmVydEZyYW1lVG9TcGFjZShjb25zdCBGbG9h
dFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCA9IDA7DQorICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0ID0gMDsNCiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzQ2hlY2tlZFN0YXRlKCkgY29uc3QgPSAwOw0KICAgICANCiAg
ICAgLy8gSW4gYSBtdWx0aS1zZWxlY3QgbGlzdCwgbWFueSBpdGVtcyBjYW4gYmUgc2VsZWN0ZWQg
YnV0IG9ubHkgb25lIGlzIGFjdGl2ZSBhdCBhIHRpbWUuDQpAQCAtOTk3LDYgKzk5OCw3IEBAIHB1
YmxpYzoNCiAgICAgdmlydHVhbCBib29sIGhhc0l0YWxpY0ZvbnQoKSBjb25zdCA9IDA7DQogICAg
IHZpcnR1YWwgYm9vbCBoYXNNaXNzcGVsbGluZygpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlKGNvbnN0IFNpbXBsZVJh
bmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3QgPSAwOw0KKyAg
ICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHZpc2libGVDaGFyYWN0ZXJSYW5n
ZSgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0ID0g
MDsNCiAgICAgdmlydHVhbCBib29sIGhhc1NhbWVGb250KGNvbnN0IEFYQ29yZU9iamVjdCYpIGNv
bnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIGhhc1NhbWVGb250Q29sb3IoY29uc3QgQVhDb3Jl
T2JqZWN0JikgY29uc3QgPSAwOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0NCmluZGV4IDVlMGM4YzhlYmM2Ny4uOTg5MzQxYWZjMjEyIDEwMDY0NA0KLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0NCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tDQpAQCAtNTIsNiArNTIsNyBAQA0KICNpbXBvcnQgIlNW
R0VsZW1lbnRJbmxpbmVzLmgiDQogI2ltcG9ydCAiU1ZHTmFtZXMuaCINCiAjaW1wb3J0ICJTZWxl
Y3Rpb25HZW9tZXRyeS5oIg0KKyNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiDQogI2ltcG9ydCAiVGV4
dEl0ZXJhdG9yLmgiDQogI2ltcG9ydCAiV0FLU2Nyb2xsVmlldy5oIg0KICNpbXBvcnQgIldBS1dp
bmRvdy5oIg0KQEAgLTE2OTQsMTIgKzE2OTUsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdU
b1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmluZykNCiB7DQog
ICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQogICAgICAgICByZXR1
cm4gQ0dSZWN0WmVybzsNCi0gICAgDQotICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2lu
Z09iamVjdC0+ZG9jdW1lbnQoKTsNCi0gICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZp
ZXcoKSkNCi0gICAgICAgIHJldHVybiBDR1JlY3RaZXJvOw0KLSAgICBhdXRvIHJlY3QgPSBGbG9h
dFJlY3Qoc25hcHBlZEludFJlY3QoZG9jdW1lbnQtPnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRS
ZWN0KCkpKTsNCi0gICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpyZWN0IHNwYWNl
OkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl07DQorICAgIHJldHVybiBbc2Vs
ZiBjb252ZXJ0UmVjdFRvU3BhY2U6c2VsZi5heEJhY2tpbmdPYmplY3QtPnVub2JzY3VyZWRDb250
ZW50UmVjdCgpIHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl07DQog
fQ0KIA0KIC8vIFRoZSAiY2VudGVyIHBvaW50IiBpcyB3aGVyZSBWb2ljZU92ZXIgd2lsbCAicHJl
c3MiIGFuIG9iamVjdC4gVGhpcyBtYXkgbm90IGJlIHRoZSBhY3R1YWwNCkBAIC0xOTE1LDcgKzE5
MTEsNyBAQCBzdGF0aWMgTlNBcnJheSAqYWNjZXNzaWJsZUVsZW1lbnRzRm9yT2JqZWN0cyhjb25z
dCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaA0KICAgICAgICAgfSk7DQogICAgIH0NCiAN
Ci0gICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYWNjZXNzaWJsZUVsZW1lbnRzKTsNCisgICAg
cmV0dXJuIG1ha2VOU0FycmF5KGFjY2Vzc2libGVFbGVtZW50cyk7DQogfQ0KIA0KIC0gKE5TQXJy
YXkgKilhY2Nlc3NpYmlsaXR5RGV0YWlsc0VsZW1lbnRzDQpAQCAtMjEwNCw3ICsyMTAwLDcgQEAg
c3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAg
IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBjcml0ZXJpYSA9IGFjY2Vzc2liaWxpdHlTZWFy
Y2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUocGFyYW1l
dGVycyk7DQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciByZXN1bHRzOw0KICAgICBzZWxmLmF4QmFja2luZ09iamVjdC0+ZmluZE1hdGNoaW5nT2Jq
ZWN0cygmY3JpdGVyaWEsIHJlc3VsdHMpOw0KLSAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShy
ZXN1bHRzKTsNCisgICAgcmV0dXJuIG1ha2VOU0FycmF5KHJlc3VsdHMpOw0KIH0NCiANCiAtICh2
b2lkKWFjY2Vzc2liaWxpdHlNb2RpZnlTZWxlY3Rpb246KFRleHRHcmFudWxhcml0eSlncmFudWxh
cml0eSBpbmNyZWFzZTooQk9PTClpbmNyZWFzZQ0KQEAgLTIyMDksNDcgKzIyMDUsNiBAQCBzdGF0
aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgcmV0
dXJuIHJhbmdlID8gW3NlbGYgY29udGVudEZvclNpbXBsZVJhbmdlOipyYW5nZSBhdHRyaWJ1dGVk
OmF0dHJpYnV0ZWRdIDogbmlsOw0KIH0NCiANCi0vLyBGSVhNRTogTm8gcmVhc29uIGZvciB0aGlz
IHRvIGJlIGEgbWV0aG9kIGluc3RlYWQgb2YgYSBmdW5jdGlvbi4NCi0tIChOU1JhbmdlKV9jb252
ZXJ0VG9OU1JhbmdlOihjb25zdCBTaW1wbGVSYW5nZSYpcmFuZ2UNCi17DQotICAgIGF1dG8mIGRv
Y3VtZW50ID0gcmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKTsNCi0gICAgYXV0byogZnJhbWUgPSBkb2N1
bWVudC5mcmFtZSgpOw0KLSAgICBpZiAoIWZyYW1lKQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJh
bmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICBhdXRvKiByb290RWRpdGFibGVFbGVtZW50ID0g
ZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCi0g
ICAgYXV0byogc2NvcGUgPSByb290RWRpdGFibGVFbGVtZW50ID8gcm9vdEVkaXRhYmxlRWxlbWVu
dCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOw0KLSAgICBpZiAoIXNjb3BlKQ0KLSAgICAg
ICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICAvLyBNb3VzZSBl
dmVudHMgbWF5IGNhdXNlIFRTTSB0byBhdHRlbXB0IHRvIGNyZWF0ZSBhbiBOU1JhbmdlIGZvciBh
IHBvcnRpb24gb2YgdGhlIHZpZXcNCi0gICAgLy8gdGhhdCBpcyBub3QgaW5zaWRlIHRoZSBjdXJy
ZW50IGVkaXRhYmxlIHJlZ2lvbi4gVGhlc2UgY2hlY2tzIGVuc3VyZSB3ZSBkb24ndCBwcm9kdWNl
DQotICAgIC8vIHBvdGVudGlhbGx5IGludmFsaWQgZGF0YSB3aGVuIHJlc3BvbmRpbmcgdG8gc3Vj
aCByZXF1ZXN0cy4NCi0gICAgaWYgKCFzY29wZS0+Y29udGFpbnMocmFuZ2Uuc3RhcnQuY29udGFp
bmVyLnB0cigpKSB8fCAhc2NvcGUtPmNvbnRhaW5zKHJhbmdlLmVuZC5jb250YWluZXIucHRyKCkp
KQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICBy
ZXR1cm4gTlNNYWtlUmFuZ2UoY2hhcmFjdGVyQ291bnQoeyB7ICpzY29wZSwgMCB9LCByYW5nZS5z
dGFydCB9KSwgY2hhcmFjdGVyQ291bnQocmFuZ2UpKTsNCi19DQotDQotLSAoc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlDQotew0KLSAg
ICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkNCi0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7DQotDQotICAgIC8vIG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2Ug
YXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdA0KLSAgICAvLyBjb25jZW50cmF0
ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uDQotICAgIC8vIFdlIGhh
dmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBE
T00gZm9yIHRob3NlIGlzIG5vdA0KLSAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9N
LCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMNCi0gICAg
Ly8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFy
dCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLg0KLSAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQn
cyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuDQotICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4
QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCi0gICAgYXV0byBzZWxlY3Rpb25Sb290ID0gZG9j
dW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1l
bnQoKTsNCi0gICAgYXV0byBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDog
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOw0KLSAgICBpZiAoIXNjb3BlKQ0KLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsNCi0NCi0gICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5n
ZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgcmFuZ2UpOw0KLX0NCiAN
CiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byB0YWtlIGEgdGV4dCBtYXJrZXIgcmVwcmVz
ZW50aW5nIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCBjb252ZXJ0IGl0DQogLy8gaW50byBhIG5vcm1h
bGl6ZWQgbG9jYXRpb24gd2l0aGluIHRoZSBkb2N1bWVudC4NCkBAIC0yMjY3LDcgKzIyMjIsNyBA
QCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAg
ICAgICAgIGF1dG8gcmFuZ2UgPSBjYWNoZS0+cmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZz
ZXRzKGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyT2Zmc2V0KTsNCiAgICAgICAgIGlmICghcmFu
Z2UpDQogICAgICAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQotICAgICAgICByZXR1cm4gW3Nl
bGYgX2NvbnZlcnRUb05TUmFuZ2U6KnJhbmdlXS5sb2NhdGlvbjsNCisgICAgICAgIHJldHVybiBt
YWtlTlNSYW5nZShyYW5nZSkubG9jYXRpb247DQogICAgIH0NCiAgICAgcmV0dXJuIE5TTm90Rm91
bmQ7DQogfQ0KQEAgLTIzNDYsNyArMjMwMSw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNz
aWJpbGl0eUNhbGxdKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiANCi0gICAgYXV0byByYW5nZSA9
IFtzZWxmIF9jb252ZXJ0VG9ET01SYW5nZTpOU01ha2VSYW5nZShwb3NpdGlvbiwgMCldOw0KKyAg
ICBhdXRvIHJhbmdlID0gbWFrZURPTVJhbmdlKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVu
dCgpLCBOU01ha2VSYW5nZShwb3NpdGlvbiwgMCkpOw0KICAgICBpZiAoIXJhbmdlKQ0KICAgICAg
ICAgcmV0dXJuIG5pbDsNCiANCkBAIC0yNDE0LDcgKzIzNjksNyBAQCBzdGF0aWMgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiB7DQogICAgIGlmICghW3NlbGYg
X3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQogICAgICAgICByZXR1cm4gbmlsOw0KLSAgICBh
dXRvIHdlYlJhbmdlID0gW3NlbGYgX2NvbnZlcnRUb0RPTVJhbmdlOnJhbmdlXTsNCisgICAgYXV0
byB3ZWJSYW5nZSA9IG1ha2VET01SYW5nZShzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQo
KSwgcmFuZ2UpOw0KICAgICBpZiAoIXdlYlJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiAg
ICAgcmV0dXJuIHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zdHJpbmdGb3JSYW5nZSgqd2ViUmFuZ2Up
Ow0KQEAgLTI2MDAsNiArMjU1NSwxNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZv
clZpZXcoV0FLVmlldyogdmlldykNCiAgICAgcmV0dXJuIFtzZWxmIHByZXZpb3VzTWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0OnN0YXJ0XTsNCiB9DQogDQorLSAoQ0dSZWN0KWZyYW1lRm9yUmFuZ2U6
KE5TUmFuZ2UpcmFuZ2UNCit7DQorICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5
Q2FsbF0pDQorICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCisgICAgYXV0byB3ZWJSYW5nZSA9
IG1ha2VET01SYW5nZShzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKSwgcmFuZ2UpOw0K
KyAgICBpZiAoIXdlYlJhbmdlKQ0KKyAgICAgICAgcmV0dXJuIENHUmVjdFplcm87DQorICAgIGF1
dG8gcmVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5ib3VuZHNGb3JSYW5nZSgqd2ViUmFuZ2Up
Ow0KKyAgICByZXR1cm4gW3NlbGYgY29udmVydFJlY3RUb1NwYWNlOnJlY3Qgc3BhY2U6QWNjZXNz
aWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6U2NyZWVuXTsNCit9DQorDQogLy8gVGhpcyBtZXRob2Qg
aXMgaW50ZW5kZWQgdG8gcmV0dXJuIHRoZSBib3VuZHMgb2YgYSB0ZXh0IG1hcmtlciByYW5nZSBp
biBzY3JlZW4gY29vcmRpbmF0ZXMuDQogLSAoQ0dSZWN0KWZyYW1lRm9yVGV4dE1hcmtlcnM6KE5T
QXJyYXkgKilhcnJheQ0KIHsNCkBAIC0yOTMxLDcgKzI4OTcsNyBAQCBzdGF0aWMgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgICAgIHJldHVybiBuaWw7
DQogDQogICAgIGF1dG8gcmFkaWNhbmQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+bWF0aFJhZGlj
YW5kKCk7DQotICAgIHJldHVybiByYWRpY2FuZCA/IGNvbnZlcnRUb05TQXJyYXkoKnJhZGljYW5k
KSA6IG5pbDsNCisgICAgcmV0dXJuIHJhZGljYW5kID8gbWFrZU5TQXJyYXkoKnJhZGljYW5kKSA6
IG5pbDsNCiB9DQogDQogLSAoV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKilhY2Nlc3Np
YmlsaXR5TWF0aE51bWVyYXRvck9iamVjdA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCmlu
ZGV4IDExYTc5YjEyMTcyZC4uMzY5NTJmOTQwOGZiIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwDQpAQCAtOTkyLDYgKzk5MiwxMyBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnVwZGF0
ZUJhY2tpbmdTdG9yZSgpDQogICAgICAgICB0cmVlLT5hcHBseVBlbmRpbmdDaGFuZ2VzKCk7DQog
fQ0KIA0KK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnZpc2li
bGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0DQorew0KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
Ow0KKyAgICBhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0ZWRBWE9iamVjdCgpOw0KKyAgICByZXR1
cm4gYXhPYmplY3QgPyBheE9iamVjdC0+dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgOiBzdGQ6Om51
bGxvcHQ7DQorfQ0KKw0KIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmpl
Y3Q6OnJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmIGF4UmFuZ2Up
IGNvbnN0DQogew0KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOw0KQEAgLTE0NzAsNiArMTQ3
NywxNSBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9u
UmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZw0KICAgICAgICAgb2JqZWN0LT5zZXRTZWxl
Y3RlZFZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NpdGlvblJhbmdlKTsNCiB9DQogDQor
RmxvYXRSZWN0IEFYSXNvbGF0ZWRPYmplY3Q6OnVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0
DQorew0KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhy
ZWFkPEZsb2F0UmVjdD4oW3RoaXNdICgpIC0+IEZsb2F0UmVjdCB7DQorICAgICAgICBpZiAoYXV0
byogb2JqZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0KCkpDQorICAgICAgICAgICAgcmV0dXJuIG9i
amVjdC0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7DQorICAgICAgICByZXR1cm4geyB9Ow0KKyAg
ICB9KTsNCit9DQorDQogc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJc29sYXRlZE9iamVj
dDo6ZWxlbWVudFJhbmdlKCkgY29uc3QNCiB7DQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oDQppbmRleCAzYjRlZWExZmJiNTguLmJhNjNkYzI3MjFk
MiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRPYmplY3QuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oDQpAQCAtNDQxLDkgKzQ0MSwxMSBAQCBwcml2
YXRlOg0KICAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsNCiAgICAgaW50IGxpbmVGb3JQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsNCiAgICAgUGxh
aW5UZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBW
aXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOw0KKyAgICBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCiAg
ICAgaW50IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOw0KICAg
ICB2b2lkIGxpbmVCcmVha3MoVmVjdG9yPGludD4mKSBjb25zdCBvdmVycmlkZTsNCi0NCisgICAg
RmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOw0KKyAgICAN
CiAgICAgLy8gQXR0cmlidXRlIHNldHRlcnMuDQogICAgIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9v
bCkgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSBvdmVycmlkZTsNCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oDQppbmRleCBlZWEzZTY5ZGVkOTMu
LmFjMmJkYmZlMmFjNSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oDQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
aA0KQEAgLTM0LDYgKzM0LDcgQEANCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogc3RydWN0IEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYTsNCitjbGFzcyBEb2N1bWVudDsNCiBjbGFzcyBJbnRS
ZWN0Ow0KIGNsYXNzIEZsb2F0UG9pbnQ7DQogY2xhc3MgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ7DQpAQCAtMTExLDExICsxMTIsMTUgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nl
c3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWwNCiAtIChO
U0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0UGFpcnM7DQogLSAoTlNBcnJheSAq
KWFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0UGFpcnM7DQogDQorLSAoTlNSYW5nZSlhY2Nlc3Np
YmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlOw0KKw0KIC0gKE5TRGljdGlvbmFyeTxOU1N0cmlu
ZyAqLCBpZD4gKiliYXNlQWNjZXNzaWJpbGl0eVJlc29sdmVkRWRpdGluZ1N0eWxlczsNCiANCiBl
eHRlcm4gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGFjY2Vzc2liaWxpdHlT
ZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoY29u
c3QgTlNEaWN0aW9uYXJ5ICopOw0KIA0KLWV4dGVybiBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5
KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
Jik7DQorZXh0ZXJuIE5TQXJyYXkgKm1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7DQorZXh0ZXJuIE5TUmFuZ2UgbWFr
ZU5TUmFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4pOw0KK2V4dGVybiBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBtYWtlRE9NUmFuZ2UoV2ViQ29yZTo6
RG9jdW1lbnQqLCBOU1JhbmdlKTsNCiANCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkNCiAtIChp
ZClfYWNjZXNzaWJpbGl0eVdlYkRvY3VtZW50VmlldzsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckJhc2UubW0NCmluZGV4IDFlNTY5MWQxOWY5Mi4uNWY3YWQyODY5ZTc0IDEwMDY0
NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLm1tDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0NCkBAIC0yNjEsNyArMjYx
LDcgQEAgc3RhdGljIE5TQXJyYXkgKmNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkoY29uc3QgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGkNCiAgICAgfSkuYXV0b3JlbGVhc2UoKTsNCiB9
DQogDQotTlNBcnJheSAqY29udmVydFRvTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pDQorTlNBcnJheSAqbWFr
ZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIGNoaWxkcmVuKQ0KIHsNCiAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoY2hpbGRy
ZW4sIFtdIChjb25zdCBhdXRvJiBjaGlsZCkgLT4gaWQgew0KICAgICAgICAgYXV0byB3cmFwcGVy
ID0gY2hpbGQtPndyYXBwZXIoKTsNCkBAIC00NjIsNiArNDYyLDI3IEBAIHN0YXRpYyB2b2lkIGNv
bnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9uKFBhdGhDb252ZXJzaW9uSW5mbyYgY29udmVy
c2lvbiwgY29uDQogICAgIHJldHVybiBjb252ZXJ0ZWRQYXRoLmF1dG9yZWxlYXNlKCk7DQogfQ0K
IA0KKy8vIERldGVybWluZSB0aGUgdmlzaWJsZSByYW5nZSBieSBjaGVja2luZyBpbnRlcnNlY3Rp
b24gb2YgdW5vYnNjdXJlZENvbnRlbnRSZWN0IGFuZCBhIHJhbmdlIG9mIHRleHQgYnkNCisvLyBh
ZHZhbmNpbmcgZm9yd2FyZCBieSBsaW5lIGZyb20gdG9wIGFuZCBiYWNrd2FyZHMgYnkgbGluZSBm
cm9tIHRoZSBib3R0b20sIHVudGlsIHdlIGhhdmUgYSB2aXNpYmxlIHJhbmdlLg0KKy0gKE5TUmFu
Z2UpYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZQ0KK3sNCisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxOU1JhbmdlPihbcHJvdGVj
dGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gTlNSYW5nZSB7DQorICAgICAgICBhdXRv
IGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmJhc2VVcGRhdGVCYWNraW5nU3Rv
cmU7DQorICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpDQorICAgICAgICAgICAgcmV0dXJuIE5T
TWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICAgICAgYXV0byBlbGVtZW50UmFuZ2Ug
PSBtYWtlTlNSYW5nZShiYWNraW5nT2JqZWN0LT5lbGVtZW50UmFuZ2UoKSk7DQorICAgICAgICBp
ZiAoZWxlbWVudFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpDQorICAgICAgICAgICAgcmV0
dXJuIGVsZW1lbnRSYW5nZTsNCisgICAgICAgIA0KKyAgICAgICAgYXV0byB2aXNpYmxlUmFuZ2Ug
PSBtYWtlTlNSYW5nZShiYWNraW5nT2JqZWN0LT52aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSk7DQor
ICAgICAgICBpZiAodmlzaWJsZVJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpDQorICAgICAg
ICAgICAgcmV0dXJuIHZpc2libGVSYW5nZTsNCisNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5n
ZSh2aXNpYmxlUmFuZ2UubG9jYXRpb24gLSBlbGVtZW50UmFuZ2UubG9jYXRpb24sIHZpc2libGVS
YW5nZS5sZW5ndGgpOw0KKyAgICB9KTsNCit9DQorDQogLSAoaWQpX2FjY2Vzc2liaWxpdHlXZWJE
b2N1bWVudFZpZXcNCiB7DQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOw0KQEAgLTYyMyw2ICs2
NDQsNTAgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLA0KICAgICBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dExhbmd1YWdlKGF0dHJTdHJpbmcsIG5vZGUtPnJlbmRlcmVyKCksIGF0dHJTdHJpbmdSYW5nZSk7
DQogfQ0KIA0KKw0KK05TUmFuZ2UgbWFrZU5TUmFuZ2Uoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gcmFuZ2UpDQorew0KKyAgICBpZiAoIXJhbmdlKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJh
bmdlKE5TTm90Rm91bmQsIDApOw0KKyAgICANCisgICAgYXV0byYgZG9jdW1lbnQgPSByYW5nZS0+
c3RhcnQuZG9jdW1lbnQoKTsNCisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOw0K
KyAgICBpZiAoIWZyYW1lKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQs
IDApOw0KKw0KKyAgICBhdXRvKiByb290RWRpdGFibGVFbGVtZW50ID0gZnJhbWUtPnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCisgICAgYXV0byogc2NvcGUg
PSByb290RWRpdGFibGVFbGVtZW50ID8gcm9vdEVkaXRhYmxlRWxlbWVudCA6IGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudCgpOw0KKyAgICBpZiAoIXNjb3BlKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFr
ZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICAvLyBNb3VzZSBldmVudHMgbWF5IGNhdXNl
IFRTTSB0byBhdHRlbXB0IHRvIGNyZWF0ZSBhbiBOU1JhbmdlIGZvciBhIHBvcnRpb24gb2YgdGhl
IHZpZXcNCisgICAgLy8gdGhhdCBpcyBub3QgaW5zaWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJl
Z2lvbi4gVGhlc2UgY2hlY2tzIGVuc3VyZSB3ZSBkb24ndCBwcm9kdWNlDQorICAgIC8vIHBvdGVu
dGlhbGx5IGludmFsaWQgZGF0YSB3aGVuIHJlc3BvbmRpbmcgdG8gc3VjaCByZXF1ZXN0cy4NCisg
ICAgaWYgKCFzY29wZS0+Y29udGFpbnMocmFuZ2UtPnN0YXJ0LmNvbnRhaW5lci5wdHIoKSkgfHwg
IXNjb3BlLT5jb250YWlucyhyYW5nZS0+ZW5kLmNvbnRhaW5lci5wdHIoKSkpDQorICAgICAgICBy
ZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQorDQorICAgIHJldHVybiBOU01ha2VS
YW5nZShjaGFyYWN0ZXJDb3VudCh7IHsgKnNjb3BlLCAwIH0sIHJhbmdlLT5zdGFydCB9KSwgY2hh
cmFjdGVyQ291bnQoKnJhbmdlKSk7DQorfQ0KKw0KK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IG1ha2VET01SYW5nZShEb2N1bWVudCogZG9jdW1lbnQsIE5TUmFuZ2UgcmFuZ2UpDQorew0KKyAg
ICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkNCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7DQorDQorICAgIC8vIG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2Ug
YXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdA0KKyAgICAvLyBjb25jZW50cmF0
ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uDQorICAgIC8vIFdlIGhh
dmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBE
T00gZm9yIHRob3NlIGlzIG5vdA0KKyAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9N
LCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMNCisgICAg
Ly8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFy
dCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLg0KKyAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQn
cyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuDQorICAgIGF1dG8gc2VsZWN0aW9uUm9vdCA9IGRv
Y3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVt
ZW50KCk7DQorICAgIGF1dG8gc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6
IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsNCisgICAgaWYgKCFzY29wZSkNCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFu
Z2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIHJhbmdlKTsNCit9DQor
DQogLy8gUmV0dXJucyBhbiBhcnJheSBvZiBzdHJpbmdzIGFuZCBBWE9iamVjdCB3cmFwcGVycyBj
b3JyZXNwb25kaW5nIHRvIHRoZSB0ZXh0DQogLy8gcnVucyBhbmQgcmVwbGFjZW1lbnQgbm9kZXMg
aW5jbHVkZWQgaW4gdGhlIGdpdmVuIHJhbmdlLg0KIC0gKE5TQXJyYXkgKiljb250ZW50Rm9yU2lt
cGxlUmFuZ2U6KGNvbnN0IFNpbXBsZVJhbmdlJilyYW5nZSBhdHRyaWJ1dGVkOihCT09MKWF0dHJp
YnV0ZWQNCkBAIC02NzYsMTggKzc0MSwyNiBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZWRTdHJp
bmdBcHBlbmRUZXh0KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsDQogICAg
IHJldHVybiBhcnJheS5hdXRvcmVsZWFzZSgpOw0KIH0NCiANCi0tIChOU0FycmF5PE5TRGljdGlv
bmFyeSAqPiAqKWxpbmVSZWN0c0FuZFRleHQNCistIChXZWJDb3JlOjpBWENvcmVPYmplY3QqKWJh
c2VVcGRhdGVCYWNraW5nU3RvcmUNCiB7DQogI2lmIFBMQVRGT1JNKE1BQykNCiAgICAgYXV0byog
YmFja2luZ09iamVjdCA9IHNlbGYudXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlOw0KICAgICBpZiAo
IWJhY2tpbmdPYmplY3QpDQotICAgICAgICByZXR1cm4gbmlsOw0KKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7DQogI2Vsc2UNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxs
XSkNCi0gICAgICAgIHJldHVybiBuaWw7DQorICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICAg
YXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0Ow0KICNlbmRpZg0KKyAg
ICByZXR1cm4gYmFja2luZ09iamVjdDsNCit9DQogDQorLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkg
Kj4gKilsaW5lUmVjdHNBbmRUZXh0DQorew0KKyAgICBhdXRvIGJhY2tpbmdPYmplY3QgPSBzZWxm
LmJhc2VVcGRhdGVCYWNraW5nU3RvcmU7DQorICAgIGlmICghYmFja2luZ09iamVjdCkNCisgICAg
ICAgIHJldHVybiBuaWw7DQorICAgIA0KICAgICBhdXRvIHJhbmdlID0gYmFja2luZ09iamVjdC0+
ZWxlbWVudFJhbmdlKCk7DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm4gbmlsOw0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCmluZGV4IDcwMDRjNDZiNjQz
OS4uZDY5NDFmODJmMTIyIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tDQpAQCAtMTc5NSw3ICsxNzk1LDcgQEAgc3RhdGljIHZvaWQgV2ViVHJhbnNmb3JtQ0dQYXRo
VG9OU0JlemllclBhdGgodm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCAqZWwNCiANCiAt
IChOU0FycmF5PFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICo+ICopY2hpbGRyZW5WZWN0
b3JBcnJheQ0KIHsNCi0gICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZi5heEJhY2tpbmdP
YmplY3QtPmNoaWxkcmVuKCkpOw0KKyAgICByZXR1cm4gbWFrZU5TQXJyYXkoc2VsZi5heEJhY2tp
bmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KIH0NCiANCiAtIChOU1ZhbHVlICopcG9zaXRpb24NCkBA
IC0yMjAzLDcgKzIyMDMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQN
CiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkpIHsNCiAgICAgICAgICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udGVu
dENvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYVRyZWVJdGVtQ29udGVudChj
b250ZW50Q29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoY29udGVu
dENvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShjb250ZW50Q29weSk7DQog
ICAgICAgICB9DQogDQogICAgICAgICByZXR1cm4gc2VsZi5jaGlsZHJlblZlY3RvckFycmF5Ow0K
QEAgLTIyMTMsNyArMjIxMyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkp
IHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbkNvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVj
dC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuQ29weSk7DQotICAgICAgICAgICAg
cmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KKyAgICAgICAg
ICAgIHJldHVybiBtYWtlTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQogICAgICAgICB9
DQogICAgICAgICByZXR1cm4gbmlsOw0KICAgICB9DQpAQCAtMjIyMiw3ICsyMjIyLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoYmFja2luZ09i
amVjdC0+aXNMaXN0Qm94KCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdmlzaWJsZUNoaWxkcmVuQ29weTsNCiAgICAgICAg
ICAgICBiYWNraW5nT2JqZWN0LT52aXNpYmxlQ2hpbGRyZW4odmlzaWJsZUNoaWxkcmVuQ29weSk7
DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodmlzaWJsZUNoaWxkcmVuQ29w
eSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHZpc2libGVDaGlsZHJlbkNvcHkp
Ow0KICAgICAgICAgfQ0KIA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTGlzdCgpKQ0K
QEAgLTIyMzQsNyArMjIzNCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RA0KIA0KICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNXZWJBcmVhKCkpIHsNCiAgICAgICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExpbmtVSUVsZW1lbnRzIl0pDQot
ICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+ZG9jdW1l
bnRMaW5rcygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVj
dC0+ZG9jdW1lbnRMaW5rcygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6QCJBWExvYWRlZCJdKQ0KICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVjdC0+aXNMb2FkZWQoKV07DQpAQCAtMjI2NywxNiAr
MjI2NywyMSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAg
ICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZFRl
eHRSYW5nZSgpOw0KICAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpO
U01ha2VSYW5nZSh0ZXh0UmFuZ2Uuc3RhcnQsIHRleHRSYW5nZS5sZW5ndGgpXTsNCiAgICAgICAg
IH0NCi0gICAgICAgIC8vIFRPRE86IEdldCBhY3R1YWwgdmlzaWJsZSByYW5nZS4gPHJkYXI6Ly9w
cm9ibGVtLzQ3MTIxMDE+DQotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQ0KLSAg
ICAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSA/IG5pbCA6
IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOiBOU01ha2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0LT50
ZXh0TGVuZ3RoKCkpXTsNCi0NCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRlXSkg
ew0KICAgICAgICAgICAgIGludCBsaW5lTnVtYmVyID0gYmFja2luZ09iamVjdC0+aW5zZXJ0aW9u
UG9pbnRMaW5lTnVtYmVyKCk7DQogICAgICAgICAgICAgcmV0dXJuIGxpbmVOdW1iZXIgPj0gMCA/
IEAobGluZU51bWJlcikgOiBuaWw7DQogICAgICAgICB9DQogICAgIH0NCiANCisgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJh
Y3RlclJhbmdlQXR0cmlidXRlXSkgew0KKyAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUGFz
c3dvcmRGaWVsZCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBuaWw7DQorICAgICAgICAvLyBUT0RP
OiBHZXQgYWN0dWFsIHZpc2libGUgcmFuZ2UuIDxyZGFyOi8vcHJvYmxlbS80NzEyMTAxPg0KKyAg
ICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGV4dENvbnRyb2woKSkNCisgICAgICAgICAgICBy
ZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgYmFja2luZ09iamVj
dC0+dGV4dExlbmd0aCgpKV07DQorICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFu
Z2U6W3NlbGYgYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZV1dOw0KKyAgICB9DQor
DQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0
eVVSTEF0dHJpYnV0ZV0pIHsNCiAgICAgICAgIFVSTCB1cmwgPSBiYWNraW5nT2JqZWN0LT51cmwo
KTsNCiAgICAgICAgIGlmICh1cmwuaXNOdWxsKCkpDQpAQCAtMjM4MCw3ICsyMzg1LDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogDQogICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW1hZ2VPdmVybGF5RWxlbWVudHNB
dHRyaWJ1dGVdKSB7DQogICAgICAgICBhdXRvIGltYWdlT3ZlcmxheUVsZW1lbnRzID0gYmFja2lu
Z09iamVjdC0+aW1hZ2VPdmVybGF5RWxlbWVudHMoKTsNCi0gICAgICAgIHJldHVybiBpbWFnZU92
ZXJsYXlFbGVtZW50cyA/IGNvbnZlcnRUb05TQXJyYXkoKmltYWdlT3ZlcmxheUVsZW1lbnRzKSA6
IG5pbDsNCisgICAgICAgIHJldHVybiBpbWFnZU92ZXJsYXlFbGVtZW50cyA/IG1ha2VOU0FycmF5
KCppbWFnZU92ZXJsYXlFbGVtZW50cykgOiBuaWw7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlFbWJlZGRlZEltYWdlRGVz
Y3JpcHRpb25BdHRyaWJ1dGVdKQ0KQEAgLTI0MDQsMjkgKzI0MDksMjkgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNU
YWJMaXN0KCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgdGFic0NoaWxkcmVuOw0KICAgICAgICAgICAgIGJhY2tpbmdPYmpl
Y3QtPnRhYkNoaWxkcmVuKHRhYnNDaGlsZHJlbik7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZl
cnRUb05TQXJyYXkodGFic0NoaWxkcmVuKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJy
YXkodGFic0NoaWxkcmVuKTsNCiAgICAgICAgIH0NCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRl
XSkNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbnRl
bnRzKCkpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbnRl
bnRzKCkpOw0KIA0KICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZSgpICYmIGJhY2tpbmdP
YmplY3QtPmlzRXhwb3NhYmxlKCkpIHsNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAg
cmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+cm93cygpKTsNCisgICAgICAg
ICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+cm93cygpKTsNCiANCiAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Vmlz
aWJsZVJvd3NBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5
KGJhY2tpbmdPYmplY3QtPnZpc2libGVSb3dzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtl
TlNBcnJheShiYWNraW5nT2JqZWN0LT52aXNpYmxlUm93cygpKTsNCiANCiAgICAgICAgIC8vIFRP
RE86IGRpc3Rpbmd1aXNoIGJldHdlZW4gdmlzaWJsZSBhbmQgbm9uLXZpc2libGUgY29sdW1ucw0K
ICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlDb2x1bW5zQXR0cmlidXRlXQ0KICAgICAgICAgICAgIHx8IFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ29sdW1uc0F0dHJpYnV0ZV0pDQotICAg
ICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1ucygp
KTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1u
cygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxk
cmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNl
bGVjdGVkQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5
KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIC8vIEhUTUwg
dGFibGVzIGRvbid0IHN1cHBvcnQgdGhlc2UgYXR0cmlidXRlcy4NCkBAIC0yNDM1LDcgKzI0NDAs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICBy
ZXR1cm4gbmlsOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAg
ICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFk
ZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5j
b2x1bW5IZWFkZXJzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAg
YXV0byogaGVhZGVyQ29udGFpbmVyID0gYmFja2luZ09iamVjdC0+aGVhZGVyQ29udGFpbmVyKCk7
DQpAQCAtMjQ0MywxMCArMjQ0OCwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19FTkQNCiAgICAgICAgIH0NCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pDQot
ICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVh
ZGVycygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+
cm93SGVhZGVycygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNlbGxzQXR0cmlidXRlXSkNCi0gICAgICAgICAg
ICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jZWxscygpKTsNCisgICAg
ICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y2VsbHMoKSk7DQogDQog
ICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eUNvbHVtbkNvdW50QXR0cmlidXRlXSkNCiAgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2Jq
ZWN0LT5jb2x1bW5Db3VudCgpKTsNCkBAIC0yNDY4LDcgKzI0NzMsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIC8vIHJvd3MgYXR0cmlidXRlIGZvciBh
IGNvbHVtbiBpcyB0aGUgbGlzdCBvZiBhbGwgdGhlIGVsZW1lbnRzIGluIHRoYXQgY29sdW1uIGF0
IGVhY2ggcm93DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdDQogICAgICAgICAgICAgfHwgW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRlXSkN
Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGls
ZHJlbigpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+
Y2hpbGRyZW4oKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBhdXRv
KiBoZWFkZXIgPSBiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXIoKTsNCkBAIC0yNDg4LDEwICsy
NDkzLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAg
fQ0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICBy
ZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0K
KyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFk
ZXJzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAg
ICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0K
KyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJz
KCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlBUklBQ29sdW1uSW5kZXhBdHRyaWJ1dGVdKQ0KICAgICAgICAgICAgIHJldHVy
biBAKGJhY2tpbmdPYmplY3QtPmF4Q29sdW1uSW5kZXgoKSk7DQpAQCAtMjUwNCwxMiArMjUwOSwx
MiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dz
QXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsNCiAgICAgICAgICAgICBi
YWNraW5nT2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCi0g
ICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7
DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsN
CiAgICAgICAgIH0NCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHk7DQogICAgICAg
ICAgICAgYmFja2luZ09iamVjdC0+YXJpYVRyZWVSb3dzKHJvd3NDb3B5KTsNCi0gICAgICAgICAg
ICByZXR1cm4gY29udmVydFRvTlNBcnJheShyb3dzQ29weSk7DQorICAgICAgICAgICAgcmV0dXJu
IG1ha2VOU0FycmF5KHJvd3NDb3B5KTsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIC8vIFRyZWVS
b2xlcyBkbyBub3Qgc3VwcG9ydCBjb2x1bW5zLCBidXQgTWFjIEFYIGV4cGVjdHMgdG8gYmUgYWJs
ZSB0byBhc2sgYWJvdXQgY29sdW1ucyBhdCB0aGUgbGVhc3QuDQpAQCAtMjU0NCw3ICsyNTQ5LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIC8vIFRoZSByb3dz
IHRoYXQgYXJlIGNvbnNpZGVyZWQgaW5zaWRlIHRoaXMgcm93Lg0KICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1
dGVdKSB7DQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpIHx8IGJhY2tp
bmdPYmplY3QtPmlzQVJJQVRyZWVHcmlkUm93KCkpDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZl
cnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+ZGlzY2xvc2VkUm93cygpKTsNCisgICAgICAgICAg
ICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+ZGlzY2xvc2VkUm93cygpKTsNCiAg
ICAgfQ0KIA0KICAgICAvLyBUaGUgcm93IHRoYXQgY29udGFpbnMgdGhpcyByb3cuIEl0IHNob3Vs
ZCBiZSB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgcGFyZW50IHRoYXQgaXMgYSB0cmVlaXRlbS4NCkBA
IC0yNjEyLDcgKzI2MTcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQN
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5
TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBsaW5rZWRVSUVsZW1lbnRzOw0KICAgICAg
ICAgYmFja2luZ09iamVjdC0+bGlua2VkVUlFbGVtZW50cyhsaW5rZWRVSUVsZW1lbnRzKTsNCi0g
ICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGxpbmtlZFVJRWxlbWVudHMpOw0KKyAgICAg
ICAgcmV0dXJuIG1ha2VOU0FycmF5KGxpbmtlZFVJRWxlbWVudHMpOw0KICAgICB9DQogDQogICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVj
dGVkQXR0cmlidXRlXSkNCkBAIC0yNjg1LDcgKzI2OTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlXSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFPd25zOw0KICAgICAgICAg
YmFja2luZ09iamVjdC0+YXJpYU93bnNFbGVtZW50cyhhcmlhT3ducyk7DQotICAgICAgICByZXR1
cm4gY29udmVydFRvTlNBcnJheShhcmlhT3ducyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJy
YXkoYXJpYU93bnMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQVBvc0luU2V0QXR0cmlidXRlXSkNCkBAIC0yNzUx
LDcgKzI3NTYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiANCiAg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
TWF0aFJvb3RSYWRpY2FuZEF0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBhdXRvIHJhZGljYW5k
ID0gYmFja2luZ09iamVjdC0+bWF0aFJhZGljYW5kKCk7DQotICAgICAgICAgICAgcmV0dXJuIHJh
ZGljYW5kID8gY29udmVydFRvTlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KKyAgICAgICAgICAg
IHJldHVybiByYWRpY2FuZCA/IG1ha2VOU0FycmF5KCpyYWRpY2FuZCkgOiBuaWw7DQogICAgICAg
ICB9DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eU1hdGhGcmFjdGlvbk51bWVyYXRvckF0dHJpYnV0ZV0pDQpAQCAtMjg0NSw3ICsy
ODUwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWERldGFpbHNFbGVtZW50cyJdKSB7DQog
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
ZGV0YWlsczsNCiAgICAgICAgIGJhY2tpbmdPYmplY3QtPmFyaWFEZXRhaWxzRWxlbWVudHMoZGV0
YWlscyk7DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShkZXRhaWxzKTsNCisgICAg
ICAgIHJldHVybiBtYWtlTlNBcnJheShkZXRhaWxzKTsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUJyYWlsbGVMYWJlbEF0
dHJpYnV0ZV0pDQpAQCAtMjg2MCw3ICsyODY1LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5EDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJB
WEVycm9yTWVzc2FnZUVsZW1lbnRzIl0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJvck1lc3NhZ2VzOw0KICAgICAgICAgYmFj
a2luZ09iamVjdC0+YXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKGVycm9yTWVzc2FnZXMpOw0KLSAg
ICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoZXJyb3JNZXNzYWdlcyk7DQorICAgICAgICBy
ZXR1cm4gbWFrZU5TQXJyYXkoZXJyb3JNZXNzYWdlcyk7DQogICAgIH0NCiANCiAgICAgLy8gTXVs
dGktc2VsZWN0YWJsZQ0KQEAgLTI4NzgsNyArMjg4Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUFyaWFDb250cm9sc0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhQ29udHJvbHM7
DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhQ29udHJvbHNFbGVtZW50cyhhcmlhQ29udHJv
bHMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYXJpYUNvbnRyb2xzKTsNCisg
ICAgICAgIHJldHVybiBtYWtlTlNBcnJheShhcmlhQ29udHJvbHMpOw0KICAgICB9DQogDQogICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNh
YmxlQW5jZXN0b3JBdHRyaWJ1dGVdKSB7DQpAQCAtMzQyOCwyMiArMzQzMyw2IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICB9KTsNCiB9DQogDQotLy8gRklYTUU6
IE5vIHJlYXNvbiBmb3IgdGhpcyB0byBiZSBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rpb247
IGNhbiBnZXQgZG9jdW1lbnQgZnJvbSByYW5nZS4NCi0tIChOU1JhbmdlKV9jb252ZXJ0VG9OU1Jh
bmdlOihjb25zdCBTaW1wbGVSYW5nZSYpcmFuZ2UNCi17DQotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7DQotICAgIA0KLSAgICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3Qt
PmRvY3VtZW50KCk7DQotICAgIGlmICghZG9jdW1lbnQpDQotICAgICAgICByZXR1cm4gTlNNYWtl
UmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gZG9j
dW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOw0KLSAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkNCi0g
ICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgcmV0dXJu
IGNoYXJhY3RlclJhbmdlKG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRlbnRzKCpkb2N1
bWVudEVsZW1lbnQpLCByYW5nZSk7DQotfQ0KLQ0KIC0gKE5TSW50ZWdlcilfaW5kZXhGb3JUZXh0
TWFya2VyOihBWFRleHRNYXJrZXJSZWYpbWFya2VyDQogew0KICAgICBpZiAoIW1hcmtlcikNCkBA
IC0zNDYwLDcgKzM0NDksNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQN
CiAgICAgICAgICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgICAgICAgICByZXR1cm4gTlNOb3RG
b3VuZDsNCiANCi0gICAgICAgICAgICByZXR1cm4gW3Byb3RlY3RlZFNlbGYgX2NvbnZlcnRUb05T
UmFuZ2U6KnJhbmdlXS5sb2NhdGlvbjsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TUmFuZ2Uo
cmFuZ2UpLmxvY2F0aW9uOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgcmV0dXJuIE5TTm90Rm91
bmQ7DQpAQCAtMzgzNSw4ICszODI0LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5EDQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3IgcmVzdWx0czsNCiAgICAgICAgIGJhY2tpbmdPYmplY3QtPmZpbmRNYXRjaGluZ09i
amVjdHMoJmNyaXRlcmlhLCByZXN1bHRzKTsNCiAgICAgICAgIGlmICh3aWRnZXRDaGlsZHJlbikN
Ci0gICAgICAgICAgICByZXR1cm4gW3dpZGdldENoaWxkcmVuIGFycmF5QnlBZGRpbmdPYmplY3Rz
RnJvbUFycmF5OmNvbnZlcnRUb05TQXJyYXkocmVzdWx0cyldOw0KLSAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkocmVzdWx0cyk7DQorICAgICAgICAgICAgcmV0dXJuIFt3aWRnZXRDaGls
ZHJlbiBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTptYWtlTlNBcnJheShyZXN1bHRzKV07
DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkocmVzdWx0cyk7DQogICAgIH0NCiANCiAgICAg
Ly8gVGV4dE1hcmtlciBhdHRyaWJ1dGVzLg0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50SU9TLm1tDQppbmRleCBkZDRlYjA5NmZlZTkuLmJhNDc0Zjk2YzBiNiAxMDA2NDQNCi0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRJT1MubW0NCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0NCkBAIC0xMDgsNiArMTA4LDcg
QEAgdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVu
dCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwNCiAtIChpZClfYWNjZXNzaWJpbGl0eUxpc3RBbmNl
c3RvcjsNCiAtIChpZClfYWNjZXNzaWJpbGl0eVBob3RvRGVzY3JpcHRpb247DQogLSAoTlNBcnJh
eSAqKWFjY2Vzc2liaWxpdHlJbWFnZU92ZXJsYXlFbGVtZW50czsNCistIChOU1JhbmdlKWFjY2Vz
c2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2U7DQogDQogLy8gVGV4dE1hcmtlciByZWxhdGVk
DQogLSAoTlNBcnJheSAqKXRleHRNYXJrZXJSYW5nZTsNCkBAIC0zOTQsNiArMzk1LDkgQEAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0
ZXMoKQ0KIA0KIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdHJpbmdEZXNjcmlwdGlvbk9mQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRl
KQ0KIHsNCisgICAgaWYgKEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoYXR0cmlidXRlLCAi
QVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSkNCisgICAgICAgIHJldHVybiBbTlNTdHJpbmdGcm9t
UmFuZ2UoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlXSkgY3Jl
YXRlSlNTdHJpbmdSZWZdOw0KKw0KICAgICByZXR1cm4gY3JlYXRlSlNTdHJpbmcoKTsNCiB9DQog
DQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444917</attachid>
            <date>2021-11-20 22:55:32 -0800</date>
            <delta_ts>2021-11-20 23:37:11 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>51500</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZDIwNDhjNGZhMmY2Li5kYzVjYTZlNzQ4MzcgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
NyBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11
bGF0b3IvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4NCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQ6
IEFkZGVkLg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdl
Lmh0bWw6IEFkZGVkLg0KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoN
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOg0KKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoNCisNCiAyMDIxLTExLTE5ICBLaWV0IEhv
ICA8dGhvMjJAYXBwbGUuY29tPg0KIA0KICAgICAgICAgSW50ZWdyYXRlIG1vdGlvbiBwYXRoIHRy
YW5zZm9ybXMgaW4gdHJhbnNmb3JtYXRpb24gcGlwZWxpbmUNCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy92aXNpYmxlLWNoYXJhY3Rlci1yYW5n
ZS1leHBlY3RlZC50eHQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAu
LjY3ODAzZGI4MTc3MA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9pb3MvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0DQpAQCAtMCwwICsx
LDEyIEBADQorVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVDaGFyYWN0ZXJSYW5nZSByZXR1cm5zIGV4
cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlmeWluZyBvYnNjdXJlZCBjb250ZW50Lg0K
Kw0KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4NCisNCisNCitWaXNpYmxlIHJhbmdlOiBOU1Jh
bmdlOiB7MCwgMzkwMH0NCitWaXNpYmxlIHJhbmdlICg1MDAsIDIwMCk6IE5TUmFuZ2U6IHswLCAy
NzB9DQorVmlzaWJsZSByYW5nZSwgb2Zmc2V0OiAyMDAgKDIwMCwgNTAwKTogTlNSYW5nZTogezAs
IDczNX0NCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlDQorDQorVEVTVCBDT01QTEVU
RQ0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFy
YWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNp
YmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQpp
bmRleCAwMDAwMDAwMDAwMDAuLmNkYmI4YzQyMmRhNw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50
eHQNCkBAIC0wLDAgKzEsMTIgQEANCitUaGlzIHRlc3RzIHRoYXQgdmlzaWJsZUNoYXJhY3RlclJh
bmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSByYW5nZXMgd2hpbGUgbW9kaWZ5aW5nIG9ic2N1
cmVkIGNvbnRlbnQuDQorDQorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLg0KKw0KKw0KK1Zpc2li
bGUgcmFuZ2U6IE5TUmFuZ2U6IHswLCA0MjA1fQ0KK1Zpc2libGUgcmFuZ2UgKDUwMCwgMjAwKTog
TlNSYW5nZTogezAsIDM2MH0NCitWaXNpYmxlIHJhbmdlLCBvZmZzZXQ6IDIwMCAoMjAwLCA1MDAp
OiBOU1JhbmdlOiB7MCwgNjkwfQ0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUNCisN
CitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5k
ZXggMDAwMDAwMDAwMDAwLi4zOWQzMmRiZDIwMzMNCi0tLSAvZGV2L251bGwNCisrKyBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0KQEAgLTAs
MCArMSw3MyBAQA0KKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4NCis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keSBpZD0iYm9keSI+DQorDQorPGRpdiBpZD0i
Z3JvdXAiPg0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QN
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0K
K3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQor
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0DQorPC9kaXY+DQorDQorPHNjcmlwdD4NCisNCisgICAgZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgdGhhdCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgcmV0dXJucyBleHBlY3Rl
ZCB2aXNpYmxlIHJhbmdlcyB3aGlsZSBtb2RpZnlpbmcgb2JzY3VyZWQgY29udGVudC4iKTsNCisN
CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgew0KKyAgICAgICAgdmFy
IHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImdy
b3VwIikuY2hpbGRBdEluZGV4KDApOw0KKyAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2U6ICIg
KyB0ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFj
dGVyUmFuZ2UiKSk7DQorDQorICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdTaXplKDUwMCwgMjAw
KTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxlIHJhbmdlICg1MDAsIDIwMCk6ICIgKyB0ZXh0LnN0
cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2Ui
KSk7DQorDQorICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDIwMDsNCisgICAgICAg
IHRlc3RSdW5uZXIuc2V0Vmlld1NpemUoMjAwLCA1MDApOw0KKyAgICAgICAgZGVidWcoIlZpc2li
bGUgcmFuZ2UsIG9mZnNldDogMjAwICgyMDAsIDUwMCk6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0
aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7DQorICAgIH0NCisNCis8L3NjcmlwdD4NCisNCis8L2JvZHk+DQorPC9odG1sPg0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMNCmluZGV4IGE0MmM3Mjlm
MDdmZi4uYTRiMTA0ZTA1N2JlIDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zDQpAQCAtMjExOCw3ICsyMTE4LDcgQEAgd2Via2l0Lm9yZy9iLzE0ODgwNiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc3AN
CiBmYXN0L2RvbS9saW5raWZ5LXBob25lLW51bWJlcnMuaHRtbCBbIFBhc3MgXQ0KIA0KIGFjY2Vz
c2liaWxpdHkvdmlkZW8tZWxlbWVudC11cmwtYXR0cmlidXRlLmh0bWwgWyBQYXNzIF0NCi0NCith
Y2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBQYXNzIF0NCiBhY2Nl
c3NpYmlsaXR5L2FuY2VzdG9yLWNvbXB1dGF0aW9uLmh0bWwgWyBQYXNzIF0NCiANCiAjIEVuYWJs
ZSAiYXJpYS1jdXJyZW50IiB0ZXN0cyBmb3IgaU9TLg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9ucw0KaW5kZXggOWEwNzQ1ODc5MzU0Li5hNWMzMWZlYzlm
MWYgMTAwNjQ0DQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cw0KQEAgLTYwMSw2ICs2MDEsMTEgQEAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1pbnNlcnQt
aHRtbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0NCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2st
YXN5bmMuaHRtbCBbIEZhaWx1cmUgXQ0KIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdW5pZmll
ZC1lbXVsYXRpb24uaHRtbCBbIEZhaWx1cmUgXQ0KIA0KKyMgU2tpcCBkdWUgdG8gbGFjayBvZiBE
dW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9tSWRlbnRpZmVyYCBpbXBs
ZW1lbnRhdGlvbi4NCithY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZvci1hZGhv
Yy1yYWRpby1ncm91cHMuaHRtbCBbIFNraXAgXQ0KKyMgU2tpcCBkdWUgdG8gbGFjayBvZiBEdW1w
UmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRGVzY3JpcHRpb25PZkF0
dHJpYnV0ZVZhbHVlYCBpbXBsZW1lbnRhdGlvbi4NCithY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hh
cmFjdGVyLXJhbmdlLmh0bWwgWyBTa2lwIF0NCisNCiAjIDxyZGFyOi8vcHJvYmxlbS8yNjA1MDky
Mz4gVGhlIHJlc3VsdCBpcyBwcm9iYWJseSBzdGlsbCBhIHBhc3MsIGJ1dCB3ZSBkb24ndCBoYXZl
IGEgd2F5DQogIyB0byBoYXZlIHBsYXRmb3JtIHNwZWNpZmljIHJlc3VsdHMgdGhhdCBhcmUgZGlm
ZmVyZW50IGJldHdlZW4gV0sxIGFuZCBXSzIuDQogYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQt
YXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBdDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucw0KaW5kZXggYTcxZTQzMGViOGU5Li4wZmI5YzM5OTExMGIgMTAwNjQ0DQot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucw0KKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMNCkBAIC0yNzgsNiArMjc4LDcg
QEAgYWNjZXNzaWJpbGl0eS9hcmlhLWxpc3Rib3gtY2xlYXItc2VsZWN0aW9uLWNyYXNoLmh0bWwg
WyBTa2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2xpc3Rib3gtY2xlYXItc2VsZWN0aW9uLmh0bWwgWyBT
a2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2VtYmVkZGVkLWltYWdlLWRlc2NyaXB0aW9uLmh0bWwgWyBT
a2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2ltZy1uby1hbHQtbm90LWlnbm9yZWQtd2l0aC10aXRsZS5o
dG1sIFsgU2tpcCBdDQorYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1s
IFsgU2tpcCBdDQogDQogIyBOZWVkIHRvIGltcGxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpoYXNEb2N1bWVudFJvbGVBbmNlc3RvcigpLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNX
ZWJBcHBsaWNhdGlvbkFuY2VzdG9yKCksDQogIyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lu
RGVzY3JpcHRpb25MaXN0RGV0YWlsKCksIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5EZXNj
cmlwdGlvbkxpc3RUZXJtKCksIGFuZA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KaW5kZXggOGJlYTRmNmZmZDU1Li5iNmMw
ZjcwMGMzZTcgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KQEAgLTEsMyArMSw1MSBAQA0KKzIwMjEtMTEtMTkgIENo
cmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4NCisNCisgICAgICAgIEFYOiBXZWJL
aXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4dCBhbmQgZnJhbWUgb2YgYW4gZWxl
bWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0K
Kw0KKyAgICAgICAgSW1wbGVtZW50IHZpc2libGVDaGFyYWN0ZXJSYW5nZSBmb3Igc3RhdGljIHRl
eHQgZWxlbWVudHMgc28gdGhhdCBCb29rcyBjYW4gZGV0ZXJtaW5lIHRoZSB2aXNpYmxlDQorICAg
ICAgICBjb250ZW50IG9uIGEgcGFnZS4NCisNCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkv
dmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOg0KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSBjb25zdCk6DQorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dW5vYnNjdXJlZENvbnRlbnRSZWN0IGNvbnN0KToNCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6DQorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOg0KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToN
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlW
aXNpYmxlQ29udGVudFJlY3RdKToNCisgICAgICAgIChhY2Nlc3NpYmxlRWxlbWVudHNGb3JPYmpl
Y3RzKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2li
aWxpdHlGaW5kTWF0Y2hpbmdPYmplY3RzOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgcG9zaXRpb25Gb3JUZXh0TWFya2VyOl0pOg0KKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlckZvclBvc2l0aW9uOl0pOg0KKyAg
ICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3RyaW5nRm9yUmFuZ2U6XSk6
DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBmcmFtZUZvclJhbmdl
Ol0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJp
bGl0eU1hdGhSYWRpY2FuZF0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgX2NvbnZlcnRUb05TUmFuZ2U6XSk6IERlbGV0ZWQuDQorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfY29udmVydFRvRE9NUmFuZ2U6XSk6IERlbGV0ZWQuDQor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3Bw
Og0KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJS
YW5nZSBjb25zdCk6DQorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6dW5vYnNj
dXJlZENvbnRlbnRSZWN0IGNvbnN0KToNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaDoNCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOg0KKyAgICAgICAg
KG1ha2VOU0FycmF5KToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZSBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlXSk6DQorICAgICAgICAobWFr
ZU5TUmFuZ2UpOg0KKyAgICAgICAgKG1ha2VET01SYW5nZSk6DQorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgYmFzZVVwZGF0ZUJhY2tpbmdTdG9yZV0pOg0KKyAg
ICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGxpbmVSZWN0c0FuZFRl
eHRdKToNCisgICAgICAgIChjb252ZXJ0VG9OU0FycmF5KTogRGVsZXRlZC4NCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06DQor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjaGlsZHJlblZlY3RvckFy
cmF5XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBfaW5kZXhGb3JUZXh0TWFya2VyOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZvclBhcmFt
ZXRlcjpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9jb252
ZXJ0VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0KKw0KIDIwMjEtMTEtMTkgIEtpZXQgSG8gIDx0aG8y
MkBhcHBsZS5jb20+DQogDQogICAgICAgICBJbXBsZW1lbnQgcGFyc2luZyBhbmQgYW5pbWF0aW9u
IHN1cHBvcnQgZm9yIHJheSgpIHNoYXBlIGFjY2VwdGVkIGJ5IG9mZnNldC1wYXRoDQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAN
CmluZGV4IDkzODQ4ZTFjYWI3Ni4uNjc0NmY2Y2JiNDhmIDEwMDY0NA0KLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcA0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcA0KQEAgLTcwNCw2
ICs3MDQsNTIgQEAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVj
dDo6ZWxlbWVudFJhbmdlKCkgY29uc3QNCiAgICAgcmV0dXJuIEFYT2JqZWN0Q2FjaGU6OnJhbmdl
Rm9yTm9kZUNvbnRlbnRzKCpub2RlKTsNCiB9DQogDQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgY29uc3QNCit7
DQorICAgIGF1dG8gcmFuZ2UgPSBlbGVtZW50UmFuZ2UoKTsNCisgICAgaWYgKCFyYW5nZSkNCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIGF1dG8gY29udGVudFJlY3QgPSB1
bm9ic2N1cmVkQ29udGVudFJlY3QoKTsNCisgICAgYXV0byBlbGVtZW50UmVjdCA9IHNuYXBwZWRJ
bnRSZWN0KHRoaXMtPmVsZW1lbnRSZWN0KCkpOw0KKyAgICBpZiAoIWNvbnRlbnRSZWN0LmludGVy
c2VjdHMoZWxlbWVudFJlY3QpKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisg
ICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBzdGFydEJvdW5kYXJ5ID0gcmFuZ2UtPnN0
YXJ0Ow0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IGVuZEJvdW5kYXJ5ID0gcmFu
Z2UtPmVuZDsNCisNCisgICAgLy8gT3JpZ2luIGlzbid0IGNvbnRhaW5lZCBpbiB2aXNpYmxlIHJl
Y3QsIHN0YXJ0IG1vdmluZyBmb3J3YXJkIGJ5IGxpbmUuDQorICAgIHdoaWxlICghY29udGVudFJl
Y3QuY29udGFpbnMoZWxlbWVudFJlY3QubG9jYXRpb24oKSkpIHsNCisgICAgICAgIGF1dG8gbmV4
dExpbmVQb3NpdGlvbiA9IG5leHRMaW5lRW5kUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1ha2VD
b250YWluZXJPZmZzZXRQb3NpdGlvbigqc3RhcnRCb3VuZGFyeSkpKTsNCisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVzdFN0YXJ0Qm91bmRhcnkgPSBtYWtlQm91bmRhcnlQ
b2ludChuZXh0TGluZVBvc2l0aW9uKTsNCisgICAgICAgIGlmICghdGVzdFN0YXJ0Qm91bmRhcnkg
fHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RTdGFydEJvdW5kYXJ5KSkNCisgICAgICAgICAgICBi
cmVhazsNCisgICAgICAgIA0KKyAgICAgICAgc3RhcnRCb3VuZGFyeSA9IHRlc3RTdGFydEJvdW5k
YXJ5Ow0KKyAgICAgICAgZWxlbWVudFJlY3QgPSBib3VuZHNGb3JSYW5nZShTaW1wbGVSYW5nZSgq
c3RhcnRCb3VuZGFyeSwgcmFuZ2UtPmVuZCkpOw0KKyAgICAgICAgaWYgKGVsZW1lbnRSZWN0Lmlz
RW1wdHkoKSkNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKw0KKyAgICAvLyBFbmQgaXNu
J3QgY29udGFpbmVkIGluIHZpc2libGUgcmVjdCwgc3RhcnQgbW92aW5nIGJhY2t3YXJkcyBieSBs
aW5lLg0KKyAgICB3aGlsZSAoIWNvbnRlbnRSZWN0LmNvbnRhaW5zKGVsZW1lbnRSZWN0LmxvY2F0
aW9uKCkgKyBlbGVtZW50UmVjdC5zaXplKCkpKSB7DQorICAgICAgICBhdXRvIHByZXZpb3VzTGlu
ZVBvc2l0aW9uID0gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obWFr
ZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKCplbmRCb3VuZGFyeSkpKTsNCisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVzdEVuZEJvdW5kYXJ5ID0gbWFrZUJvdW5kYXJ5UG9p
bnQocHJldmlvdXNMaW5lUG9zaXRpb24pOw0KKyAgICAgICAgaWYgKCF0ZXN0RW5kQm91bmRhcnkg
fHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RFbmRCb3VuZGFyeSkpDQorICAgICAgICAgICAgYnJl
YWs7DQorICAgICAgICANCisgICAgICAgIGVuZEJvdW5kYXJ5ID0gdGVzdEVuZEJvdW5kYXJ5Ow0K
KyAgICAgICAgZWxlbWVudFJlY3QgPSBib3VuZHNGb3JSYW5nZSh7ICpzdGFydEJvdW5kYXJ5LCAq
ZW5kQm91bmRhcnkgfSk7DQorICAgICAgICBpZiAoZWxlbWVudFJlY3QuaXNFbXB0eSgpKQ0KKyAg
ICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAgIGlmICghc3RhcnRCb3VuZGFyeSB8fCAh
ZW5kQm91bmRhcnkpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KKyAgICANCisgICAg
cmV0dXJuIFNpbXBsZVJhbmdlKCpzdGFydEJvdW5kYXJ5LCAqZW5kQm91bmRhcnkpOw0KK30NCisN
CiBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaW5kVGV4
dFJhbmdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hTdHJpbmdzLCBjb25zdCBTaW1wbGVS
YW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikg
Y29uc3QNCiB7DQogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZvdW5kOw0KQEAgLTMx
ODIsNiArMzIyOCwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZp
c2libGVXaXRoU3ViRm9jdXMoY29uc3QgSW50UmVjdCYgc3ViZm9jdQ0KICAgICAgICAgc2Nyb2xs
UGFyZW50LT5zY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKG5ld1N1YmZvY3VzKTsNCiB9
DQogDQorRmxvYXRSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnVub2JzY3VyZWRDb250ZW50UmVj
dCgpIGNvbnN0DQorew0KKyAgICBhdXRvIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsNCisg
ICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkNCisgICAgICAgIHJldHVybiB7
IH07DQorICAgIHJldHVybiBGbG9hdFJlY3Qoc25hcHBlZEludFJlY3QoZG9jdW1lbnQtPnZpZXco
KS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpKTsNCit9DQorDQogdm9pZCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50JiBnbG9iYWxQb2ludCkg
Y29uc3QNCiB7DQogICAgIC8vIFNlYXJjaCB1cCB0aGUgcGFyZW50IGNoYWluIGFuZCBjcmVhdGUg
YSB2ZWN0b3Igb2YgYWxsIHNjcm9sbGFibGUgcGFyZW50IG9iamVjdHMNCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oDQppbmRleCAyMWZm
NGEyOGE1YTYuLjU5Y2VhNGY0YjM5NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KQEAgLTgwOCw3ICs4MDgsNyBAQCBwcm90
ZWN0ZWQ6DQogICAgIHZvaWQgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7DQogICAgIHZvaWQg
YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsNCiAgICAgdmlydHVhbCBib29sIGV4
cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0NCi0NCisgICAgRmxv
YXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiByYWRpb0dyb3VwQW5jZXN0b3IoKSBjb25zdDsNCiANCiAgICAgYm9v
bCBhbGxvd3NUZXh0UmFuZ2VzKCkgY29uc3Q7DQpAQCAtODIxLDYgKzgyMSw3IEBAIHByaXZhdGU6
DQogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9S
YW5nZUluRGlyZWN0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiwgQWNjZXNzaWJpbGl0eVNlYXJjaERp
cmVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsNCiAgICAgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gc2VsZWN0aW9uUmFuZ2UoKSBjb25zdDsNCiAgICAgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gZmluZFRleHRSYW5nZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNo
U3RyaW5ncywgY29uc3QgU2ltcGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4
dERpcmVjdGlvbikgY29uc3Q7DQorICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHZpc2li
bGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KIHByb3RlY3RlZDogLy8gRklY
TUU6IE1ha2UgdGhlIGRhdGEgbWVtYmVycyBwcml2YXRlLg0KICAgICBib29sIGNoaWxkcmVuSW5p
dGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuSW5pdGlhbGl6ZWQ7IH0NCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJ
bnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oDQppbmRleCBlMTU5NjIxYzg1NDkuLjE2NzlmMDFjNTFkZiAxMDA2NDQN
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2UuaA0KQEAgLTk4OCw2ICs5ODgsNyBAQCBwdWJsaWM6DQogICAgIHZp
cnR1YWwgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpID0gMDsNCiAgICAgdmlydHVhbCBGbG9hdFJl
Y3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBGbG9hdFJlY3QgY29u
dmVydEZyYW1lVG9TcGFjZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lv
blNwYWNlKSBjb25zdCA9IDA7DQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250
ZW50UmVjdCgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ2hlY2tlZFN0
YXRlKCkgY29uc3QgPSAwOw0KICAgICANCiAgICAgLy8gSW4gYSBtdWx0aS1zZWxlY3QgbGlzdCwg
bWFueSBpdGVtcyBjYW4gYmUgc2VsZWN0ZWQgYnV0IG9ubHkgb25lIGlzIGFjdGl2ZSBhdCBhIHRp
bWUuDQpAQCAtOTk3LDYgKzk5OCw3IEBAIHB1YmxpYzoNCiAgICAgdmlydHVhbCBib29sIGhhc0l0
YWxpY0ZvbnQoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBoYXNNaXNzcGVsbGluZygp
IGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtaXNz
cGVsbGluZ1JhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJj
aERpcmVjdGlvbikgY29uc3QgPSAwOw0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IHZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBi
b29sIGhhc1BsYWluVGV4dCgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIGhhc1NhbWVG
b250KGNvbnN0IEFYQ29yZU9iamVjdCYpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIGhh
c1NhbWVGb250Q29sb3IoY29uc3QgQVhDb3JlT2JqZWN0JikgY29uc3QgPSAwOw0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCmluZGV4IDVlMGM4YzhlYmM2Ny4uOTg5MzQx
YWZjMjEyIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tDQpAQCAt
NTIsNiArNTIsNyBAQA0KICNpbXBvcnQgIlNWR0VsZW1lbnRJbmxpbmVzLmgiDQogI2ltcG9ydCAi
U1ZHTmFtZXMuaCINCiAjaW1wb3J0ICJTZWxlY3Rpb25HZW9tZXRyeS5oIg0KKyNpbXBvcnQgIlNp
bXBsZVJhbmdlLmgiDQogI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiDQogI2ltcG9ydCAiV0FLU2Ny
b2xsVmlldy5oIg0KICNpbXBvcnQgIldBS1dpbmRvdy5oIg0KQEAgLTE2OTQsMTIgKzE2OTUsNyBA
QCBzdGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3Vs
dCwgTlNTdHJpbmcgKnN0cmluZykNCiB7DQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3Np
YmlsaXR5Q2FsbF0pDQogICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCi0gICAgDQotICAgIGF1
dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCi0gICAgaWYg
KCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkNCi0gICAgICAgIHJldHVybiBDR1JlY3Ra
ZXJvOw0KLSAgICBhdXRvIHJlY3QgPSBGbG9hdFJlY3Qoc25hcHBlZEludFJlY3QoZG9jdW1lbnQt
PnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpKTsNCi0gICAgcmV0dXJuIFtzZWxmIGNv
bnZlcnRSZWN0VG9TcGFjZTpyZWN0IHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6
OlNjcmVlbl07DQorICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6c2VsZi5heEJh
Y2tpbmdPYmplY3QtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpIHNwYWNlOkFjY2Vzc2liaWxpdHlD
b252ZXJzaW9uU3BhY2U6OlNjcmVlbl07DQogfQ0KIA0KIC8vIFRoZSAiY2VudGVyIHBvaW50IiBp
cyB3aGVyZSBWb2ljZU92ZXIgd2lsbCAicHJlc3MiIGFuIG9iamVjdC4gVGhpcyBtYXkgbm90IGJl
IHRoZSBhY3R1YWwNCkBAIC0xOTE1LDcgKzE5MTEsNyBAQCBzdGF0aWMgTlNBcnJheSAqYWNjZXNz
aWJsZUVsZW1lbnRzRm9yT2JqZWN0cyhjb25zdCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aA0KICAgICAgICAgfSk7DQogICAgIH0NCiANCi0gICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXko
YWNjZXNzaWJsZUVsZW1lbnRzKTsNCisgICAgcmV0dXJuIG1ha2VOU0FycmF5KGFjY2Vzc2libGVF
bGVtZW50cyk7DQogfQ0KIA0KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5RGV0YWlsc0VsZW1l
bnRzDQpAQCAtMjEwNCw3ICsyMTAwLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJG
b3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBj
cml0ZXJpYSA9IGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUocGFyYW1ldGVycyk7DQogICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOw0KICAgICBzZWxmLmF4QmFj
a2luZ09iamVjdC0+ZmluZE1hdGNoaW5nT2JqZWN0cygmY3JpdGVyaWEsIHJlc3VsdHMpOw0KLSAg
ICByZXR1cm4gY29udmVydFRvTlNBcnJheShyZXN1bHRzKTsNCisgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KHJlc3VsdHMpOw0KIH0NCiANCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlNb2RpZnlTZWxlY3Rp
b246KFRleHRHcmFudWxhcml0eSlncmFudWxhcml0eSBpbmNyZWFzZTooQk9PTClpbmNyZWFzZQ0K
QEAgLTIyMDksNDcgKzIyMDUsNiBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZp
ZXcoV0FLVmlldyogdmlldykNCiAgICAgcmV0dXJuIHJhbmdlID8gW3NlbGYgY29udGVudEZvclNp
bXBsZVJhbmdlOipyYW5nZSBhdHRyaWJ1dGVkOmF0dHJpYnV0ZWRdIDogbmlsOw0KIH0NCiANCi0v
LyBGSVhNRTogTm8gcmVhc29uIGZvciB0aGlzIHRvIGJlIGEgbWV0aG9kIGluc3RlYWQgb2YgYSBm
dW5jdGlvbi4NCi0tIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihjb25zdCBTaW1wbGVSYW5n
ZSYpcmFuZ2UNCi17DQotICAgIGF1dG8mIGRvY3VtZW50ID0gcmFuZ2Uuc3RhcnQuZG9jdW1lbnQo
KTsNCi0gICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOw0KLSAgICBpZiAoIWZyYW1l
KQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICBh
dXRvKiByb290RWRpdGFibGVFbGVtZW50ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCi0gICAgYXV0byogc2NvcGUgPSByb290RWRpdGFibGVF
bGVtZW50ID8gcm9vdEVkaXRhYmxlRWxlbWVudCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgp
Ow0KLSAgICBpZiAoIXNjb3BlKQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91
bmQsIDApOw0KLQ0KLSAgICAvLyBNb3VzZSBldmVudHMgbWF5IGNhdXNlIFRTTSB0byBhdHRlbXB0
IHRvIGNyZWF0ZSBhbiBOU1JhbmdlIGZvciBhIHBvcnRpb24gb2YgdGhlIHZpZXcNCi0gICAgLy8g
dGhhdCBpcyBub3QgaW5zaWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lvbi4gVGhlc2UgY2hl
Y2tzIGVuc3VyZSB3ZSBkb24ndCBwcm9kdWNlDQotICAgIC8vIHBvdGVudGlhbGx5IGludmFsaWQg
ZGF0YSB3aGVuIHJlc3BvbmRpbmcgdG8gc3VjaCByZXF1ZXN0cy4NCi0gICAgaWYgKCFzY29wZS0+
Y29udGFpbnMocmFuZ2Uuc3RhcnQuY29udGFpbmVyLnB0cigpKSB8fCAhc2NvcGUtPmNvbnRhaW5z
KHJhbmdlLmVuZC5jb250YWluZXIucHRyKCkpKQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdl
KE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICByZXR1cm4gTlNNYWtlUmFuZ2UoY2hhcmFjdGVyQ291
bnQoeyB7ICpzY29wZSwgMCB9LCByYW5nZS5zdGFydCB9KSwgY2hhcmFjdGVyQ291bnQocmFuZ2Up
KTsNCi19DQotDQotLSAoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4pX2NvbnZlcnRUb0RPTVJh
bmdlOihOU1JhbmdlKXJhbmdlDQotew0KLSAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RG
b3VuZCkNCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQotDQotICAgIC8vIG91ciBjcml0
aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhv
ZHMgdGhhdA0KLSAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0
aGUgc2VsZWN0aW9uDQotICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQg
ZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdA0KLSAgICAvLyBk
aXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1h
dGljLiBPdXIgc29sdXRpb24gaXMNCi0gICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVs
ZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLg0KLSAg
ICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuDQot
ICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCi0g
ICAgYXV0byBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCi0gICAgYXV0byBzY29wZSA9IHNlbGVj
dGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOw0K
LSAgICBpZiAoIXNjb3BlKQ0KLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCi0NCi0gICAg
cmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVu
dHMoKnNjb3BlKSwgcmFuZ2UpOw0KLX0NCiANCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0
byB0YWtlIGEgdGV4dCBtYXJrZXIgcmVwcmVzZW50aW5nIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCBj
b252ZXJ0IGl0DQogLy8gaW50byBhIG5vcm1hbGl6ZWQgbG9jYXRpb24gd2l0aGluIHRoZSBkb2N1
bWVudC4NCkBAIC0yMjY3LDcgKzIyMjIsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYWNoZS0+cmFu
Z2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVy
T2Zmc2V0KTsNCiAgICAgICAgIGlmICghcmFuZ2UpDQogICAgICAgICAgICAgcmV0dXJuIE5TTm90
Rm91bmQ7DQotICAgICAgICByZXR1cm4gW3NlbGYgX2NvbnZlcnRUb05TUmFuZ2U6KnJhbmdlXS5s
b2NhdGlvbjsNCisgICAgICAgIHJldHVybiBtYWtlTlNSYW5nZShyYW5nZSkubG9jYXRpb247DQog
ICAgIH0NCiAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQogfQ0KQEAgLTIzNDYsNyArMjMwMSw3IEBA
IHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAg
ICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KICAgICAgICAgcmV0dXJu
IG5pbDsNCiANCi0gICAgYXV0byByYW5nZSA9IFtzZWxmIF9jb252ZXJ0VG9ET01SYW5nZTpOU01h
a2VSYW5nZShwb3NpdGlvbiwgMCldOw0KKyAgICBhdXRvIHJhbmdlID0gbWFrZURPTVJhbmdlKHNl
bGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpLCBOU01ha2VSYW5nZShwb3NpdGlvbiwgMCkp
Ow0KICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiANCkBAIC0yNDE0LDcg
KzIzNjksNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyog
dmlldykNCiB7DQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQog
ICAgICAgICByZXR1cm4gbmlsOw0KLSAgICBhdXRvIHdlYlJhbmdlID0gW3NlbGYgX2NvbnZlcnRU
b0RPTVJhbmdlOnJhbmdlXTsNCisgICAgYXV0byB3ZWJSYW5nZSA9IG1ha2VET01SYW5nZShzZWxm
LmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKSwgcmFuZ2UpOw0KICAgICBpZiAoIXdlYlJhbmdl
KQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiAgICAgcmV0dXJuIHNlbGYuYXhCYWNraW5nT2JqZWN0
LT5zdHJpbmdGb3JSYW5nZSgqd2ViUmFuZ2UpOw0KQEAgLTI2MDAsNiArMjU1NSwxNyBAQCBzdGF0
aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgcmV0
dXJuIFtzZWxmIHByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OnN0YXJ0XTsNCiB9DQog
DQorLSAoQ0dSZWN0KWZyYW1lRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UNCit7DQorICAgIGlmICgh
W3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQorICAgICAgICByZXR1cm4gQ0dSZWN0
WmVybzsNCisgICAgYXV0byB3ZWJSYW5nZSA9IG1ha2VET01SYW5nZShzZWxmLmF4QmFja2luZ09i
amVjdC0+ZG9jdW1lbnQoKSwgcmFuZ2UpOw0KKyAgICBpZiAoIXdlYlJhbmdlKQ0KKyAgICAgICAg
cmV0dXJuIENHUmVjdFplcm87DQorICAgIGF1dG8gcmVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0
LT5ib3VuZHNGb3JSYW5nZSgqd2ViUmFuZ2UpOw0KKyAgICByZXR1cm4gW3NlbGYgY29udmVydFJl
Y3RUb1NwYWNlOnJlY3Qgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6U2NyZWVu
XTsNCit9DQorDQogLy8gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gcmV0dXJuIHRoZSBib3Vu
ZHMgb2YgYSB0ZXh0IG1hcmtlciByYW5nZSBpbiBzY3JlZW4gY29vcmRpbmF0ZXMuDQogLSAoQ0dS
ZWN0KWZyYW1lRm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKilhcnJheQ0KIHsNCkBAIC0yOTMxLDcg
KzI4OTcsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyog
dmlldykNCiAgICAgICAgIHJldHVybiBuaWw7DQogDQogICAgIGF1dG8gcmFkaWNhbmQgPSBzZWxm
LmF4QmFja2luZ09iamVjdC0+bWF0aFJhZGljYW5kKCk7DQotICAgIHJldHVybiByYWRpY2FuZCA/
IGNvbnZlcnRUb05TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCisgICAgcmV0dXJuIHJhZGljYW5k
ID8gbWFrZU5TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCiB9DQogDQogLSAoV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgKilhY2Nlc3NpYmlsaXR5TWF0aE51bWVyYXRvck9iamVjdA0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCmluZGV4IDExYTc5YjEyMTcyZC4uMzY5NTJmOTQwOGZi
IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5jcHANCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQpAQCAtOTkyLDYgKzk5MiwxMyBAQCB2
b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpDQogICAgICAgICB0cmVl
LT5hcHBseVBlbmRpbmdDaGFuZ2VzKCk7DQogfQ0KIA0KK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0DQorew0K
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOw0KKyAgICBhdXRvKiBheE9iamVjdCA9IGFzc29j
aWF0ZWRBWE9iamVjdCgpOw0KKyAgICByZXR1cm4gYXhPYmplY3QgPyBheE9iamVjdC0+dmlzaWJs
ZUNoYXJhY3RlclJhbmdlKCkgOiBzdGQ6Om51bGxvcHQ7DQorfQ0KKw0KIHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29u
c3QgUGxhaW5UZXh0UmFuZ2UmIGF4UmFuZ2UpIGNvbnN0DQogew0KICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOw0KQEAgLTE0NzAsNiArMTQ3NywxNSBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6
OnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFu
Zw0KICAgICAgICAgb2JqZWN0LT5zZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKHZpc2li
bGVQb3NpdGlvblJhbmdlKTsNCiB9DQogDQorRmxvYXRSZWN0IEFYSXNvbGF0ZWRPYmplY3Q6OnVu
b2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0DQorew0KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPEZsb2F0UmVjdD4oW3RoaXNdICgpIC0+IEZs
b2F0UmVjdCB7DQorICAgICAgICBpZiAoYXV0byogb2JqZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0
KCkpDQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7
DQorICAgICAgICByZXR1cm4geyB9Ow0KKyAgICB9KTsNCit9DQorDQogc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudFJhbmdlKCkgY29uc3QNCiB7DQog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oDQppbmRl
eCAzYjRlZWExZmJiNTguLmJhNjNkYzI3MjFkMiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaA0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5o
DQpAQCAtNDQxLDkgKzQ0MSwxMSBAQCBwcml2YXRlOg0KICAgICBBWENvcmVPYmplY3QqIGFjY2Vz
c2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBv
dmVycmlkZTsNCiAgICAgaW50IGxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZTsNCiAgICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2VGb3JW
aXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92
ZXJyaWRlOw0KKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiB2aXNpYmxlQ2hhcmFjdGVy
UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCiAgICAgaW50IGluZGV4KGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0IG92ZXJyaWRlOw0KICAgICB2b2lkIGxpbmVCcmVha3MoVmVjdG9yPGludD4m
KSBjb25zdCBvdmVycmlkZTsNCi0NCisgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVj
dCgpIGNvbnN0IG92ZXJyaWRlOw0KKyAgICANCiAgICAgLy8gQXR0cmlidXRlIHNldHRlcnMuDQog
ICAgIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0SXNF
eHBhbmRlZChib29sKSBvdmVycmlkZTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5oDQppbmRleCBlZWEzZTY5ZGVkOTMuLmFjMmJkYmZlMmFjNSAxMDA2NDQNCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaA0KQEAgLTM0LDYgKzM0LDcgQEANCiANCiBuYW1l
c3BhY2UgV2ViQ29yZSB7DQogc3RydWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYTsNCitj
bGFzcyBEb2N1bWVudDsNCiBjbGFzcyBJbnRSZWN0Ow0KIGNsYXNzIEZsb2F0UG9pbnQ7DQogY2xh
c3MgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ7DQpAQCAtMTExLDExICsxMTIsMTUgQEAgc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VD
b2RlID0gQCJVSUFjY2Vzc2liaWwNCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQb3N0
c2NyaXB0UGFpcnM7DQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0UGFp
cnM7DQogDQorLSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlOw0K
Kw0KIC0gKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKiliYXNlQWNjZXNzaWJpbGl0eVJl
c29sdmVkRWRpdGluZ1N0eWxlczsNCiANCiBleHRlcm4gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNl
YXJjaENyaXRlcmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0
ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoY29uc3QgTlNEaWN0aW9uYXJ5ICopOw0KIA0KLWV4dGVy
biBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7DQorZXh0ZXJuIE5TQXJyYXkgKm1ha2VOU0Fy
cmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJik7DQorZXh0ZXJuIE5TUmFuZ2UgbWFrZU5TUmFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4pOw0KK2V4dGVybiBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiBtYWtlRE9NUmFuZ2UoV2ViQ29yZTo6RG9jdW1lbnQqLCBOU1JhbmdlKTsNCiANCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkNCiAtIChpZClfYWNjZXNzaWJpbGl0eVdlYkRvY3VtZW50Vmll
dzsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0NCmluZGV4IDFlNTY5
MWQxOWY5Mi4uNWY3YWQyODY5ZTc0IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tDQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckJhc2UubW0NCkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIE5TQXJyYXkgKmNvbnZlcnRN
YXRoUGFpcnNUb05TQXJyYXkoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGkN
CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsNCiB9DQogDQotTlNBcnJheSAqY29udmVydFRvTlNBcnJh
eShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgY2hpbGRyZW4pDQorTlNBcnJheSAqbWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3Jl
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKQ0KIHsNCiAgICAg
cmV0dXJuIGNyZWF0ZU5TQXJyYXkoY2hpbGRyZW4sIFtdIChjb25zdCBhdXRvJiBjaGlsZCkgLT4g
aWQgew0KICAgICAgICAgYXV0byB3cmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsNCkBAIC00NjIs
NiArNDYyLDI3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9u
KFBhdGhDb252ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uDQogICAgIHJldHVybiBjb252ZXJ0
ZWRQYXRoLmF1dG9yZWxlYXNlKCk7DQogfQ0KIA0KKy8vIERldGVybWluZSB0aGUgdmlzaWJsZSBy
YW5nZSBieSBjaGVja2luZyBpbnRlcnNlY3Rpb24gb2YgdW5vYnNjdXJlZENvbnRlbnRSZWN0IGFu
ZCBhIHJhbmdlIG9mIHRleHQgYnkNCisvLyBhZHZhbmNpbmcgZm9yd2FyZCBieSBsaW5lIGZyb20g
dG9wIGFuZCBiYWNrd2FyZHMgYnkgbGluZSBmcm9tIHRoZSBib3R0b20sIHVudGlsIHdlIGhhdmUg
YSB2aXNpYmxlIHJhbmdlLg0KKy0gKE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0
ZXJSYW5nZQ0KK3sNCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9t
TWFpblRocmVhZDxOU1JhbmdlPihbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkg
LT4gTlNSYW5nZSB7DQorICAgICAgICBhdXRvIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxm
LmdldCgpLmJhc2VVcGRhdGVCYWNraW5nU3RvcmU7DQorICAgICAgICBpZiAoIWJhY2tpbmdPYmpl
Y3QpDQorICAgICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0K
KyAgICAgICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlTlNSYW5nZShiYWNraW5nT2JqZWN0LT5l
bGVtZW50UmFuZ2UoKSk7DQorICAgICAgICBpZiAoZWxlbWVudFJhbmdlLmxvY2F0aW9uID09IE5T
Tm90Rm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRSYW5nZTsNCisgICAgICAgIA0K
KyAgICAgICAgYXV0byB2aXNpYmxlUmFuZ2UgPSBtYWtlTlNSYW5nZShiYWNraW5nT2JqZWN0LT52
aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSk7DQorICAgICAgICBpZiAodmlzaWJsZVJhbmdlLmxvY2F0
aW9uID09IE5TTm90Rm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIHZpc2libGVSYW5nZTsNCisN
CisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZSh2aXNpYmxlUmFuZ2UubG9jYXRpb24gLSBlbGVt
ZW50UmFuZ2UubG9jYXRpb24sIHZpc2libGVSYW5nZS5sZW5ndGgpOw0KKyAgICB9KTsNCit9DQor
DQogLSAoaWQpX2FjY2Vzc2liaWxpdHlXZWJEb2N1bWVudFZpZXcNCiB7DQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOw0KQEAgLTYyMyw2ICs2NDQsNTAgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1
dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5n
LA0KICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldExhbmd1YWdlKGF0dHJTdHJpbmcsIG5vZGUtPnJl
bmRlcmVyKCksIGF0dHJTdHJpbmdSYW5nZSk7DQogfQ0KIA0KKw0KK05TUmFuZ2UgbWFrZU5TUmFu
Z2Uoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2UpDQorew0KKyAgICBpZiAoIXJhbmdl
KQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKyAgICANCisg
ICAgYXV0byYgZG9jdW1lbnQgPSByYW5nZS0+c3RhcnQuZG9jdW1lbnQoKTsNCisgICAgYXV0byog
ZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOw0KKyAgICBpZiAoIWZyYW1lKQ0KKyAgICAgICAgcmV0
dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICBhdXRvKiByb290RWRpdGFi
bGVFbGVtZW50ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKTsNCisgICAgYXV0byogc2NvcGUgPSByb290RWRpdGFibGVFbGVtZW50ID8gcm9vdEVk
aXRhYmxlRWxlbWVudCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOw0KKyAgICBpZiAoIXNj
b3BlKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAg
ICAvLyBNb3VzZSBldmVudHMgbWF5IGNhdXNlIFRTTSB0byBhdHRlbXB0IHRvIGNyZWF0ZSBhbiBO
U1JhbmdlIGZvciBhIHBvcnRpb24gb2YgdGhlIHZpZXcNCisgICAgLy8gdGhhdCBpcyBub3QgaW5z
aWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lvbi4gVGhlc2UgY2hlY2tzIGVuc3VyZSB3ZSBk
b24ndCBwcm9kdWNlDQorICAgIC8vIHBvdGVudGlhbGx5IGludmFsaWQgZGF0YSB3aGVuIHJlc3Bv
bmRpbmcgdG8gc3VjaCByZXF1ZXN0cy4NCisgICAgaWYgKCFzY29wZS0+Y29udGFpbnMocmFuZ2Ut
PnN0YXJ0LmNvbnRhaW5lci5wdHIoKSkgfHwgIXNjb3BlLT5jb250YWlucyhyYW5nZS0+ZW5kLmNv
bnRhaW5lci5wdHIoKSkpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwg
MCk7DQorDQorICAgIHJldHVybiBOU01ha2VSYW5nZShjaGFyYWN0ZXJDb3VudCh7IHsgKnNjb3Bl
LCAwIH0sIHJhbmdlLT5zdGFydCB9KSwgY2hhcmFjdGVyQ291bnQoKnJhbmdlKSk7DQorfQ0KKw0K
K3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VET01SYW5nZShEb2N1bWVudCogZG9jdW1l
bnQsIE5TUmFuZ2UgcmFuZ2UpDQorew0KKyAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RG
b3VuZCkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIC8vIG91ciBjcml0
aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhv
ZHMgdGhhdA0KKyAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0
aGUgc2VsZWN0aW9uDQorICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQg
ZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdA0KKyAgICAvLyBk
aXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1h
dGljLiBPdXIgc29sdXRpb24gaXMNCisgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVs
ZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLg0KKyAg
ICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuDQor
ICAgIGF1dG8gc2VsZWN0aW9uUm9vdCA9IGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQorICAgIGF1dG8gc2NvcGUgPSBzZWxl
Y3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsN
CisgICAgaWYgKCFzY29wZSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAg
IHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKCpzY29wZSksIHJhbmdlKTsNCit9DQorDQogLy8gUmV0dXJucyBhbiBhcnJheSBvZiBzdHJp
bmdzIGFuZCBBWE9iamVjdCB3cmFwcGVycyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0ZXh0DQogLy8g
cnVucyBhbmQgcmVwbGFjZW1lbnQgbm9kZXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIHJhbmdlLg0K
IC0gKE5TQXJyYXkgKiljb250ZW50Rm9yU2ltcGxlUmFuZ2U6KGNvbnN0IFNpbXBsZVJhbmdlJily
YW5nZSBhdHRyaWJ1dGVkOihCT09MKWF0dHJpYnV0ZWQNCkBAIC02NzYsMTggKzc0MSwyNiBAQCBz
dGF0aWMgdm9pZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5TTXV0YWJsZUF0dHJpYnV0
ZWRTdHJpbmcqIGF0dHJTdHJpbmcsDQogICAgIHJldHVybiBhcnJheS5hdXRvcmVsZWFzZSgpOw0K
IH0NCiANCi0tIChOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKWxpbmVSZWN0c0FuZFRleHQNCist
IChXZWJDb3JlOjpBWENvcmVPYmplY3QqKWJhc2VVcGRhdGVCYWNraW5nU3RvcmUNCiB7DQogI2lm
IFBMQVRGT1JNKE1BQykNCiAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYudXBkYXRlT2Jq
ZWN0QmFja2luZ1N0b3JlOw0KICAgICBpZiAoIWJhY2tpbmdPYmplY3QpDQotICAgICAgICByZXR1
cm4gbmlsOw0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogI2Vsc2UNCiAgICAgaWYgKCFbc2Vs
ZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCi0gICAgICAgIHJldHVybiBuaWw7DQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhC
YWNraW5nT2JqZWN0Ow0KICNlbmRpZg0KKyAgICByZXR1cm4gYmFja2luZ09iamVjdDsNCit9DQog
DQorLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilsaW5lUmVjdHNBbmRUZXh0DQorew0KKyAg
ICBhdXRvIGJhY2tpbmdPYmplY3QgPSBzZWxmLmJhc2VVcGRhdGVCYWNraW5nU3RvcmU7DQorICAg
IGlmICghYmFja2luZ09iamVjdCkNCisgICAgICAgIHJldHVybiBuaWw7DQorICAgIA0KICAgICBh
dXRvIHJhbmdlID0gYmFja2luZ09iamVjdC0+ZWxlbWVudFJhbmdlKCk7DQogICAgIGlmICghcmFu
Z2UpDQogICAgICAgICByZXR1cm4gbmlsOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0NCmluZGV4IDcwMDRjNDZiNjQzOS4uZDY5NDFmODJmMTIyIDEwMDY0NA0KLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0NCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tDQpAQCAtMTc5NSw3ICsxNzk1LDcgQEAgc3Rh
dGljIHZvaWQgV2ViVHJhbnNmb3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9pZCogaW5mbywgY29u
c3QgQ0dQYXRoRWxlbWVudCAqZWwNCiANCiAtIChOU0FycmF5PFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyICo+ICopY2hpbGRyZW5WZWN0b3JBcnJheQ0KIHsNCi0gICAgcmV0dXJuIGNvbnZl
cnRUb05TQXJyYXkoc2VsZi5heEJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KKyAgICByZXR1
cm4gbWFrZU5TQXJyYXkoc2VsZi5heEJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KIH0NCiAN
CiAtIChOU1ZhbHVlICopcG9zaXRpb24NCkBAIC0yMjAzLDcgKzIyMDMsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5p
c1RyZWVJdGVtKCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udGVudENvcHk7DQogICAgICAgICAgICAgYmFja2luZ09i
amVjdC0+YXJpYVRyZWVJdGVtQ29udGVudChjb250ZW50Q29weSk7DQotICAgICAgICAgICAgcmV0
dXJuIGNvbnZlcnRUb05TQXJyYXkoY29udGVudENvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBt
YWtlTlNBcnJheShjb250ZW50Q29weSk7DQogICAgICAgICB9DQogDQogICAgICAgICByZXR1cm4g
c2VsZi5jaGlsZHJlblZlY3RvckFycmF5Ow0KQEAgLTIyMTMsNyArMjIxMyw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3Qt
PmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbkNvcHk7
DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENo
aWxkcmVuQ29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZWN0
ZWRDaGlsZHJlbkNvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShzZWxlY3Rl
ZENoaWxkcmVuQ29weSk7DQogICAgICAgICB9DQogICAgICAgICByZXR1cm4gbmlsOw0KICAgICB9
DQpAQCAtMjIyMiw3ICsyMjIyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5EDQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNMaXN0Qm94KCkpIHsNCiAgICAgICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igdmlz
aWJsZUNoaWxkcmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT52aXNpYmxlQ2hp
bGRyZW4odmlzaWJsZUNoaWxkcmVuQ29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkodmlzaWJsZUNoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VO
U0FycmF5KHZpc2libGVDaGlsZHJlbkNvcHkpOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgaWYg
KGJhY2tpbmdPYmplY3QtPmlzTGlzdCgpKQ0KQEAgLTIyMzQsNyArMjIzNCw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KIA0KICAgICBpZiAoYmFja2luZ09iamVjdC0+
aXNXZWJBcmVhKCkpIHsNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6QCJBWExpbmtVSUVsZW1lbnRzIl0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05T
QXJyYXkoYmFja2luZ09iamVjdC0+ZG9jdW1lbnRMaW5rcygpKTsNCisgICAgICAgICAgICByZXR1
cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+ZG9jdW1lbnRMaW5rcygpKTsNCiANCiAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExvYWRlZCJdKQ0KICAg
ICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVjdC0+
aXNMb2FkZWQoKV07DQpAQCAtMjI2NywxNiArMjI2NywyMSBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2Ug
PSBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZFRleHRSYW5nZSgpOw0KICAgICAgICAgICAgIHJldHVy
biBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0UmFuZ2Uuc3RhcnQsIHRl
eHRSYW5nZS5sZW5ndGgpXTsNCiAgICAgICAgIH0NCi0gICAgICAgIC8vIFRPRE86IEdldCBhY3R1
YWwgdmlzaWJsZSByYW5nZS4gPHJkYXI6Ly9wcm9ibGVtLzQ3MTIxMDE+DQotICAgICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hh
cmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0
LT5pc1Bhc3N3b3JkRmllbGQoKSA/IG5pbCA6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOiBOU01h
a2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0LT50ZXh0TGVuZ3RoKCkpXTsNCi0NCiAgICAgICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5zZXJ0aW9u
UG9pbnRMaW5lTnVtYmVyQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIGludCBsaW5lTnVtYmVy
ID0gYmFja2luZ09iamVjdC0+aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCk7DQogICAgICAgICAg
ICAgcmV0dXJuIGxpbmVOdW1iZXIgPj0gMCA/IEAobGluZU51bWJlcikgOiBuaWw7DQogICAgICAg
ICB9DQogICAgIH0NCiANCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzog
TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRlXSkgew0KKyAgICAg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpKQ0KKyAgICAgICAgICAgIHJl
dHVybiBuaWw7DQorICAgICAgICAvLyBUT0RPOiBHZXQgYWN0dWFsIHZpc2libGUgcmFuZ2UuIDxy
ZGFyOi8vcHJvYmxlbS80NzEyMTAxPg0KKyAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGV4
dENvbnRyb2woKSkNCisgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgYmFja2luZ09iamVjdC0+dGV4dExlbmd0aCgpKV07DQorICAgICAgICBy
ZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6W3NlbGYgYWNjZXNzaWJpbGl0eVZpc2libGVD
aGFyYWN0ZXJSYW5nZV1dOw0KKyAgICB9DQorDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV0pIHsNCiAgICAgICAgIFVS
TCB1cmwgPSBiYWNraW5nT2JqZWN0LT51cmwoKTsNCiAgICAgICAgIGlmICh1cmwuaXNOdWxsKCkp
DQpAQCAtMjM4MCw3ICsyMzg1LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5EDQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5SW1hZ2VPdmVybGF5RWxlbWVudHNBdHRyaWJ1dGVdKSB7DQogICAgICAgICBhdXRvIGlt
YWdlT3ZlcmxheUVsZW1lbnRzID0gYmFja2luZ09iamVjdC0+aW1hZ2VPdmVybGF5RWxlbWVudHMo
KTsNCi0gICAgICAgIHJldHVybiBpbWFnZU92ZXJsYXlFbGVtZW50cyA/IGNvbnZlcnRUb05TQXJy
YXkoKmltYWdlT3ZlcmxheUVsZW1lbnRzKSA6IG5pbDsNCisgICAgICAgIHJldHVybiBpbWFnZU92
ZXJsYXlFbGVtZW50cyA/IG1ha2VOU0FycmF5KCppbWFnZU92ZXJsYXlFbGVtZW50cykgOiBuaWw7
DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlFbWJlZGRlZEltYWdlRGVzY3JpcHRpb25BdHRyaWJ1dGVdKQ0KQEAgLTI0MDQs
MjkgKzI0MDksMjkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAg
ICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJMaXN0KCkpIHsNCiAgICAgICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFic0NoaWxkcmVu
Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnRhYkNoaWxkcmVuKHRhYnNDaGlsZHJlbik7
DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodGFic0NoaWxkcmVuKTsNCisg
ICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkodGFic0NoaWxkcmVuKTsNCiAgICAgICAgIH0N
CiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXSkNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbnRlbnRzKCkpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VO
U0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbnRlbnRzKCkpOw0KIA0KICAgICBpZiAoYmFja2luZ09i
amVjdC0+aXNUYWJsZSgpICYmIGJhY2tpbmdPYmplY3QtPmlzRXhwb3NhYmxlKCkpIHsNCiAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93
c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2lu
Z09iamVjdC0+cm93cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2lu
Z09iamVjdC0+cm93cygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdKQ0KLSAgICAgICAg
ICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPnZpc2libGVSb3dzKCkp
Ow0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT52aXNpYmxl
Um93cygpKTsNCiANCiAgICAgICAgIC8vIFRPRE86IGRpc3Rpbmd1aXNoIGJldHdlZW4gdmlzaWJs
ZSBhbmQgbm9uLXZpc2libGUgY29sdW1ucw0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXQ0KICAgICAgICAg
ICAgIHx8IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNp
YmxlQ29sdW1uc0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJy
YXkoYmFja2luZ09iamVjdC0+Y29sdW1ucygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5T
QXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1ucygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmli
dXRlXSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5n
T2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAg
ICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQorICAg
ICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCiAgICAg
ICAgIH0NCiANCiAgICAgICAgIC8vIEhUTUwgdGFibGVzIGRvbid0IHN1cHBvcnQgdGhlc2UgYXR0
cmlidXRlcy4NCkBAIC0yNDM1LDcgKzI0NDAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQNCiAgICAgICAgICAgICByZXR1cm4gbmlsOw0KIA0KICAgICAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5IZWFkZXJV
SUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBt
YWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KIA0KICAgICAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlIZWFkZXJB
dHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgYXV0byogaGVhZGVyQ29udGFpbmVyID0gYmFja2lu
Z09iamVjdC0+aGVhZGVyQ29udGFpbmVyKCk7DQpAQCAtMjQ0MywxMCArMjQ0OCwxMCBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIH0NCiANCiAgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93SGVh
ZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05T
QXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCisgICAgICAgICAgICByZXR1cm4g
bWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCiANCiAgICAgICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNl
bGxzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNr
aW5nT2JqZWN0LT5jZWxscygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFj
a2luZ09iamVjdC0+Y2VsbHMoKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkNvdW50QXR0cmlidXRlXSkNCiAgICAg
ICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5jb2x1bW5Db3VudCgpKTsNCkBAIC0yNDY4
LDcgKzI0NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAg
ICAgIC8vIHJvd3MgYXR0cmlidXRlIGZvciBhIGNvbHVtbiBpcyB0aGUgbGlzdCBvZiBhbGwgdGhl
IGVsZW1lbnRzIGluIHRoYXQgY29sdW1uIGF0IGVhY2ggcm93DQogICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdDQog
ICAgICAgICAgICAgfHwgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eVZpc2libGVSb3dzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRv
TlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpKTsNCisgICAgICAgICAgICByZXR1cm4g
bWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7DQogDQogICAgICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJp
YnV0ZV0pIHsNCiAgICAgICAgICAgICBhdXRvKiBoZWFkZXIgPSBiYWNraW5nT2JqZWN0LT5jb2x1
bW5IZWFkZXIoKTsNCkBAIC0yNDg4LDEwICsyNDkzLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgfQ0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1lbnRz
QXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5n
T2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJh
eShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVsZW1l
bnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNr
aW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJh
eShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBQ29sdW1uSW5kZXhBdHRy
aWJ1dGVdKQ0KICAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmF4Q29sdW1uSW5k
ZXgoKSk7DQpAQCAtMjUwNCwxMiArMjUwOSwxMiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENo
aWxkcmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZENoaWxkcmVu
KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNB
cnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCiAgICAgICAgIH0NCiAgICAgICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0p
IHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3Igcm93c0NvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYVRyZWVS
b3dzKHJvd3NDb3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShyb3dz
Q29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHJvd3NDb3B5KTsNCiAgICAg
ICAgIH0NCiANCiAgICAgICAgIC8vIFRyZWVSb2xlcyBkbyBub3Qgc3VwcG9ydCBjb2x1bW5zLCBi
dXQgTWFjIEFYIGV4cGVjdHMgdG8gYmUgYWJsZSB0byBhc2sgYWJvdXQgY29sdW1ucyBhdCB0aGUg
bGVhc3QuDQpAQCAtMjU0NCw3ICsyNTQ5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5EDQogICAgIC8vIFRoZSByb3dzIHRoYXQgYXJlIGNvbnNpZGVyZWQgaW5zaWRlIHRo
aXMgcm93Lg0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdKSB7DQogICAgICAgICBpZiAoYmFja2luZ09i
amVjdC0+aXNUcmVlSXRlbSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzQVJJQVRyZWVHcmlkUm93KCkp
DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+ZGlz
Y2xvc2VkUm93cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09i
amVjdC0+ZGlzY2xvc2VkUm93cygpKTsNCiAgICAgfQ0KIA0KICAgICAvLyBUaGUgcm93IHRoYXQg
Y29udGFpbnMgdGhpcyByb3cuIEl0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgcGFy
ZW50IHRoYXQgaXMgYSB0cmVlaXRlbS4NCkBAIC0yNjEyLDcgKzI2MTcsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV0pIHsN
CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBsaW5rZWRVSUVsZW1lbnRzOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+bGlua2VkVUlFbGVt
ZW50cyhsaW5rZWRVSUVsZW1lbnRzKTsNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5
KGxpbmtlZFVJRWxlbWVudHMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGxpbmtlZFVJ
RWxlbWVudHMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQXR0cmlidXRlXSkNCkBAIC0yNjg1LDcgKzI2
OTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRl
XSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIGFyaWFPd25zOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYU93bnNFbGVtZW50
cyhhcmlhT3ducyk7DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShhcmlhT3ducyk7
DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYXJpYU93bnMpOw0KICAgICB9DQogDQogICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQVBv
c0luU2V0QXR0cmlidXRlXSkNCkBAIC0yNzUxLDcgKzI3NTYsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RSYWRpY2FuZEF0dHJpYnV0ZV0pIHsN
CiAgICAgICAgICAgICBhdXRvIHJhZGljYW5kID0gYmFja2luZ09iamVjdC0+bWF0aFJhZGljYW5k
KCk7DQotICAgICAgICAgICAgcmV0dXJuIHJhZGljYW5kID8gY29udmVydFRvTlNBcnJheSgqcmFk
aWNhbmQpIDogbmlsOw0KKyAgICAgICAgICAgIHJldHVybiByYWRpY2FuZCA/IG1ha2VOU0FycmF5
KCpyYWRpY2FuZCkgOiBuaWw7DQogICAgICAgICB9DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlvbk51bWVyYXRv
ckF0dHJpYnV0ZV0pDQpAQCAtMjg0NSw3ICsyODUwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5EDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
QCJBWERldGFpbHNFbGVtZW50cyJdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGV0YWlsczsNCiAgICAgICAgIGJhY2tpbmdPYmpl
Y3QtPmFyaWFEZXRhaWxzRWxlbWVudHMoZGV0YWlscyk7DQotICAgICAgICByZXR1cm4gY29udmVy
dFRvTlNBcnJheShkZXRhaWxzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShkZXRhaWxz
KTsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eUJyYWlsbGVMYWJlbEF0dHJpYnV0ZV0pDQpAQCAtMjg2MCw3ICsyODY1LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEVycm9yTWVzc2FnZUVsZW1lbnRzIl0pIHsNCiAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBl
cnJvck1lc3NhZ2VzOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYUVycm9yTWVzc2FnZUVs
ZW1lbnRzKGVycm9yTWVzc2FnZXMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXko
ZXJyb3JNZXNzYWdlcyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoZXJyb3JNZXNzYWdl
cyk7DQogICAgIH0NCiANCiAgICAgLy8gTXVsdGktc2VsZWN0YWJsZQ0KQEAgLTI4NzgsNyArMjg4
Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFyaWFDb250cm9sc0F0
dHJpYnV0ZV0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBhcmlhQ29udHJvbHM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlh
Q29udHJvbHNFbGVtZW50cyhhcmlhQ29udHJvbHMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkoYXJpYUNvbnRyb2xzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShhcmlh
Q29udHJvbHMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNhYmxlQW5jZXN0b3JBdHRyaWJ1dGVdKSB7DQpAQCAt
MzQyOCwyMiArMzQzMyw2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0K
ICAgICB9KTsNCiB9DQogDQotLy8gRklYTUU6IE5vIHJlYXNvbiBmb3IgdGhpcyB0byBiZSBhIG1l
dGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rpb247IGNhbiBnZXQgZG9jdW1lbnQgZnJvbSByYW5nZS4N
Ci0tIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihjb25zdCBTaW1wbGVSYW5nZSYpcmFuZ2UN
Ci17DQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7DQotICAgIA0KLSAgICBhdXRvIGRvY3Vt
ZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7DQotICAgIGlmICghZG9jdW1l
bnQpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAg
IGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOw0KLSAg
ICBpZiAoIWRvY3VtZW50RWxlbWVudCkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05v
dEZvdW5kLCAwKTsNCi0NCi0gICAgcmV0dXJuIGNoYXJhY3RlclJhbmdlKG1ha2VCb3VuZGFyeVBv
aW50QmVmb3JlTm9kZUNvbnRlbnRzKCpkb2N1bWVudEVsZW1lbnQpLCByYW5nZSk7DQotfQ0KLQ0K
IC0gKE5TSW50ZWdlcilfaW5kZXhGb3JUZXh0TWFya2VyOihBWFRleHRNYXJrZXJSZWYpbWFya2Vy
DQogew0KICAgICBpZiAoIW1hcmtlcikNCkBAIC0zNDYwLDcgKzM0NDksNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICBpZiAoIXJhbmdlKQ0KICAg
ICAgICAgICAgICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCiANCi0gICAgICAgICAgICByZXR1cm4g
W3Byb3RlY3RlZFNlbGYgX2NvbnZlcnRUb05TUmFuZ2U6KnJhbmdlXS5sb2NhdGlvbjsNCisgICAg
ICAgICAgICByZXR1cm4gbWFrZU5TUmFuZ2UocmFuZ2UpLmxvY2F0aW9uOw0KICAgICAgICAgfQ0K
IA0KICAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQpAQCAtMzgzNSw4ICszODI0LDggQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsNCiAgICAgICAgIGJh
Y2tpbmdPYmplY3QtPmZpbmRNYXRjaGluZ09iamVjdHMoJmNyaXRlcmlhLCByZXN1bHRzKTsNCiAg
ICAgICAgIGlmICh3aWRnZXRDaGlsZHJlbikNCi0gICAgICAgICAgICByZXR1cm4gW3dpZGdldENo
aWxkcmVuIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OmNvbnZlcnRUb05TQXJyYXkocmVz
dWx0cyldOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkocmVzdWx0cyk7DQorICAg
ICAgICAgICAgcmV0dXJuIFt3aWRnZXRDaGlsZHJlbiBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21B
cnJheTptYWtlTlNBcnJheShyZXN1bHRzKV07DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
cmVzdWx0cyk7DQogICAgIH0NCiANCiAgICAgLy8gVGV4dE1hcmtlciBhdHRyaWJ1dGVzLg0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tDQppbmRleCBkZDRlYjA5NmZl
ZTkuLmJhNDc0Zjk2YzBiNiAxMDA2NDQNCi0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0NCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRJT1MubW0NCkBAIC0xMDgsNiArMTA4LDcgQEAgdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3Rp
ZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwNCiAt
IChpZClfYWNjZXNzaWJpbGl0eUxpc3RBbmNlc3RvcjsNCiAtIChpZClfYWNjZXNzaWJpbGl0eVBo
b3RvRGVzY3JpcHRpb247DQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlJbWFnZU92ZXJsYXlF
bGVtZW50czsNCistIChOU1JhbmdlKWFjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2U7
DQogDQogLy8gVGV4dE1hcmtlciByZWxhdGVkDQogLSAoTlNBcnJheSAqKXRleHRNYXJrZXJSYW5n
ZTsNCkBAIC0zOTQsNiArMzk1LDkgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQ0KIA0KIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdEZXNjcmlwdGlvbk9mQXR0cmlidXRl
VmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQ0KIHsNCisgICAgaWYgKEpTU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoYXR0cmlidXRlLCAiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSkNCisg
ICAgICAgIHJldHVybiBbTlNTdHJpbmdGcm9tUmFuZ2UoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
VmlzaWJsZUNoYXJhY3RlclJhbmdlXSkgY3JlYXRlSlNTdHJpbmdSZWZdOw0KKw0KICAgICByZXR1
cm4gY3JlYXRlSlNTdHJpbmcoKTsNCiB9DQogDQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444918</attachid>
            <date>2021-11-20 23:37:11 -0800</date>
            <delta_ts>2021-11-21 21:34:51 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>51512</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZDIwNDhjNGZhMmY2Li5kYzVjYTZlNzQ4MzcgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
NyBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11
bGF0b3IvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4NCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQ6
IEFkZGVkLg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdl
Lmh0bWw6IEFkZGVkLg0KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoN
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOg0KKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoNCisNCiAyMDIxLTExLTE5ICBLaWV0IEhv
ICA8dGhvMjJAYXBwbGUuY29tPg0KIA0KICAgICAgICAgSW50ZWdyYXRlIG1vdGlvbiBwYXRoIHRy
YW5zZm9ybXMgaW4gdHJhbnNmb3JtYXRpb24gcGlwZWxpbmUNCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy92aXNpYmxlLWNoYXJhY3Rlci1yYW5n
ZS1leHBlY3RlZC50eHQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAu
LjY3ODAzZGI4MTc3MA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9pb3MvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0DQpAQCAtMCwwICsx
LDEyIEBADQorVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVDaGFyYWN0ZXJSYW5nZSByZXR1cm5zIGV4
cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlmeWluZyBvYnNjdXJlZCBjb250ZW50Lg0K
Kw0KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4NCisNCisNCitWaXNpYmxlIHJhbmdlOiBOU1Jh
bmdlOiB7MCwgMzkwMH0NCitWaXNpYmxlIHJhbmdlICg1MDAsIDIwMCk6IE5TUmFuZ2U6IHswLCAy
NzB9DQorVmlzaWJsZSByYW5nZSwgb2Zmc2V0OiAyMDAgKDIwMCwgNTAwKTogTlNSYW5nZTogezAs
IDczNX0NCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlDQorDQorVEVTVCBDT01QTEVU
RQ0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUt
Y2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dA0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uY2RiYjhjNDIyZGE3DQotLS0gL2Rldi9udWxsDQor
KysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLWNoYXJhY3Rlci1yYW5n
ZS1leHBlY3RlZC50eHQNCkBAIC0wLDAgKzEsMTIgQEANCitUaGlzIHRlc3RzIHRoYXQgdmlzaWJs
ZUNoYXJhY3RlclJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSByYW5nZXMgd2hpbGUgbW9k
aWZ5aW5nIG9ic2N1cmVkIGNvbnRlbnQuDQorDQorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLg0K
Kw0KKw0KK1Zpc2libGUgcmFuZ2U6IE5TUmFuZ2U6IHswLCA0MjA1fQ0KK1Zpc2libGUgcmFuZ2Ug
KDUwMCwgMjAwKTogTlNSYW5nZTogezAsIDM2MH0NCitWaXNpYmxlIHJhbmdlLCBvZmZzZXQ6IDIw
MCAoMjAwLCA1MDApOiBOU1JhbmdlOiB7MCwgNjkwfQ0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUNCisNCitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sDQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi4zOWQzMmRiZDIwMzMNCi0tLSAvZGV2L251bGwN
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2Uu
aHRtbA0KQEAgLTAsMCArMSw3MyBAQA0KKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4NCis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keSBpZD0iYm9keSI+DQor
DQorPGRpdiBpZD0iZ3JvdXAiPg0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QN
Cit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQorPC9kaXY+DQorDQorPHNjcmlwdD4NCisNCisg
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgcmV0
dXJucyBleHBlY3RlZCB2aXNpYmxlIHJhbmdlcyB3aGlsZSBtb2RpZnlpbmcgb2JzY3VyZWQgY29u
dGVudC4iKTsNCisNCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgew0K
KyAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImdyb3VwIikuY2hpbGRBdEluZGV4KDApOw0KKyAgICAgICAgZGVidWcoIlZpc2li
bGUgcmFuZ2U6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhW
aXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAgICAgICB0ZXN0UnVubmVyLnNldFZpZXdT
aXplKDUwMCwgMjAwKTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxlIHJhbmdlICg1MDAsIDIwMCk6
ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hh
cmFjdGVyUmFuZ2UiKSk7DQorDQorICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDIw
MDsNCisgICAgICAgIHRlc3RSdW5uZXIuc2V0Vmlld1NpemUoMjAwLCA1MDApOw0KKyAgICAgICAg
ZGVidWcoIlZpc2libGUgcmFuZ2UsIG9mZnNldDogMjAwICgyMDAsIDUwMCk6ICIgKyB0ZXh0LnN0
cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2Ui
KSk7DQorDQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAiKS5zdHlsZS52
aXNpYmlsaXR5ID0gImhpZGRlbiI7DQorICAgIH0NCisNCis8L3NjcmlwdD4NCisNCis8L2JvZHk+
DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMNCmlu
ZGV4IGE0MmM3MjlmMDdmZi4uYTRiMTA0ZTA1N2JlIDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy9UZXN0RXhwZWN0YXRpb25zDQpAQCAtMjExOCw3ICsyMTE4LDcgQEAgd2Via2l0Lm9yZy9i
LzE0ODgwNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wv
bXVsdGljb2wtc3ANCiBmYXN0L2RvbS9saW5raWZ5LXBob25lLW51bWJlcnMuaHRtbCBbIFBhc3Mg
XQ0KIA0KIGFjY2Vzc2liaWxpdHkvdmlkZW8tZWxlbWVudC11cmwtYXR0cmlidXRlLmh0bWwgWyBQ
YXNzIF0NCi0NCithY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBQ
YXNzIF0NCiBhY2Nlc3NpYmlsaXR5L2FuY2VzdG9yLWNvbXB1dGF0aW9uLmh0bWwgWyBQYXNzIF0N
CiANCiAjIEVuYWJsZSAiYXJpYS1jdXJyZW50IiB0ZXN0cyBmb3IgaU9TLg0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucw0KaW5kZXggOWEwNzQ1ODc5MzU0
Li5hNWMzMWZlYzlmMWYgMTAwNjQ0DQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucw0KQEAgLTYwMSw2ICs2MDEsMTEgQEAgZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1pbnNlcnQtaHRtbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0NCiBlZGl0aW5nL3NwZWxsaW5n
L3NwZWxsY2hlY2stYXN5bmMuaHRtbCBbIEZhaWx1cmUgXQ0KIGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctdW5pZmllZC1lbXVsYXRpb24uaHRtbCBbIEZhaWx1cmUgXQ0KIA0KKyMgU2tpcCBkdWUg
dG8gbGFjayBvZiBEdW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9tSWRl
bnRpZmVyYCBpbXBsZW1lbnRhdGlvbi4NCithY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGlj
YXRlLWZvci1hZGhvYy1yYWRpby1ncm91cHMuaHRtbCBbIFNraXAgXQ0KKyMgU2tpcCBkdWUgdG8g
bGFjayBvZiBEdW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRGVz
Y3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlYCBpbXBsZW1lbnRhdGlvbi4NCithY2Nlc3NpYmlsaXR5
L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBTa2lwIF0NCisNCiAjIDxyZGFyOi8vcHJv
YmxlbS8yNjA1MDkyMz4gVGhlIHJlc3VsdCBpcyBwcm9iYWJseSBzdGlsbCBhIHBhc3MsIGJ1dCB3
ZSBkb24ndCBoYXZlIGEgd2F5DQogIyB0byBoYXZlIHBsYXRmb3JtIHNwZWNpZmljIHJlc3VsdHMg
dGhhdCBhcmUgZGlmZmVyZW50IGJldHdlZW4gV0sxIGFuZCBXSzIuDQogYWNjZXNzaWJpbGl0eS9t
YWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBdDQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucw0KaW5kZXggYTcxZTQzMGViOGU5Li4wZmI5YzM5OTEx
MGIgMTAwNjQ0DQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9u
cw0KKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMNCkBAIC0y
NzgsNiArMjc4LDcgQEAgYWNjZXNzaWJpbGl0eS9hcmlhLWxpc3Rib3gtY2xlYXItc2VsZWN0aW9u
LWNyYXNoLmh0bWwgWyBTa2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2xpc3Rib3gtY2xlYXItc2VsZWN0
aW9uLmh0bWwgWyBTa2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2VtYmVkZGVkLWltYWdlLWRlc2NyaXB0
aW9uLmh0bWwgWyBTa2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2ltZy1uby1hbHQtbm90LWlnbm9yZWQt
d2l0aC10aXRsZS5odG1sIFsgU2tpcCBdDQorYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rl
ci1yYW5nZS5odG1sIFsgU2tpcCBdDQogDQogIyBOZWVkIHRvIGltcGxlbWVudCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoYXNEb2N1bWVudFJvbGVBbmNlc3RvcigpLCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpoYXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yKCksDQogIyBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0luRGVzY3JpcHRpb25MaXN0RGV0YWlsKCksIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzSW5EZXNjcmlwdGlvbkxpc3RUZXJtKCksIGFuZA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KaW5kZXggOGJlYTRm
NmZmZDU1Li5iNmMwZjcwMGMzZTcgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cNCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KQEAgLTEsMyArMSw1MSBAQA0KKzIw
MjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4NCisNCisgICAg
ICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4dCBhbmQgZnJh
bWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLg0KKw0KKyAgICAgICAgSW1wbGVtZW50IHZpc2libGVDaGFyYWN0ZXJSYW5nZSBm
b3Igc3RhdGljIHRleHQgZWxlbWVudHMgc28gdGhhdCBCb29rcyBjYW4gZGV0ZXJtaW5lIHRoZSB2
aXNpYmxlDQorICAgICAgICBjb250ZW50IG9uIGEgcGFnZS4NCisNCisgICAgICAgIFRlc3Q6IGFj
Y2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0KKw0KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOg0KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSBjb25zdCk6DQorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dW5vYnNjdXJlZENvbnRlbnRSZWN0
IGNvbnN0KToNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6
DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5o
Og0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlWaXNpYmxlQ29udGVudFJlY3RdKToNCisgICAgICAgIChhY2Nlc3NpYmxlRWxl
bWVudHNGb3JPYmplY3RzKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGFjY2Vzc2liaWxpdHlGaW5kTWF0Y2hpbmdPYmplY3RzOl0pOg0KKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcG9zaXRpb25Gb3JUZXh0TWFya2VyOl0pOg0KKyAg
ICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlckZvclBvc2l0
aW9uOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3RyaW5n
Rm9yUmFuZ2U6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBm
cmFtZUZvclJhbmdlOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgYWNjZXNzaWJpbGl0eU1hdGhSYWRpY2FuZF0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb05TUmFuZ2U6XSk6IERlbGV0ZWQuDQorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfY29udmVydFRvRE9NUmFuZ2U6XSk6
IERlbGV0ZWQuDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuY3BwOg0KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnZpc2li
bGVDaGFyYWN0ZXJSYW5nZSBjb25zdCk6DQorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9i
amVjdDo6dW5vYnNjdXJlZENvbnRlbnRSZWN0IGNvbnN0KToNCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOg0KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaDoNCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1t
Og0KKyAgICAgICAgKG1ha2VOU0FycmF5KToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlXSk6DQor
ICAgICAgICAobWFrZU5TUmFuZ2UpOg0KKyAgICAgICAgKG1ha2VET01SYW5nZSk6DQorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgYmFzZVVwZGF0ZUJhY2tpbmdT
dG9yZV0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGxp
bmVSZWN0c0FuZFRleHRdKToNCisgICAgICAgIChjb252ZXJ0VG9OU0FycmF5KTogRGVsZXRlZC4N
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW06DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjaGls
ZHJlblZlY3RvckFycmF5XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6DQorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfaW5kZXhGb3JUZXh0TWFya2VyOl0pOg0KKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOmZvclBhcmFtZXRlcjpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIF9jb252ZXJ0VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0KKw0KIDIwMjEtMTEtMTkgIEtp
ZXQgSG8gIDx0aG8yMkBhcHBsZS5jb20+DQogDQogICAgICAgICBJbXBsZW1lbnQgcGFyc2luZyBh
bmQgYW5pbWF0aW9uIHN1cHBvcnQgZm9yIHJheSgpIHNoYXBlIGFjY2VwdGVkIGJ5IG9mZnNldC1w
YXRoDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHANCmluZGV4IDkzODQ4ZTFjYWI3Ni4uNjc0NmY2Y2JiNDhmIDEwMDY0NA0KLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcA0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cA0KQEAgLTcwNCw2ICs3MDQsNTIgQEAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNz
aWJpbGl0eU9iamVjdDo6ZWxlbWVudFJhbmdlKCkgY29uc3QNCiAgICAgcmV0dXJuIEFYT2JqZWN0
Q2FjaGU6OnJhbmdlRm9yTm9kZUNvbnRlbnRzKCpub2RlKTsNCiB9DQogDQorc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZUNoYXJhY3RlclJhbmdl
KCkgY29uc3QNCit7DQorICAgIGF1dG8gcmFuZ2UgPSBlbGVtZW50UmFuZ2UoKTsNCisgICAgaWYg
KCFyYW5nZSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIGF1dG8gY29u
dGVudFJlY3QgPSB1bm9ic2N1cmVkQ29udGVudFJlY3QoKTsNCisgICAgYXV0byBlbGVtZW50UmVj
dCA9IHNuYXBwZWRJbnRSZWN0KHRoaXMtPmVsZW1lbnRSZWN0KCkpOw0KKyAgICBpZiAoIWNvbnRl
bnRSZWN0LmludGVyc2VjdHMoZWxlbWVudFJlY3QpKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsNCisNCisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBzdGFydEJvdW5kYXJ5
ID0gcmFuZ2UtPnN0YXJ0Ow0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IGVuZEJv
dW5kYXJ5ID0gcmFuZ2UtPmVuZDsNCisNCisgICAgLy8gT3JpZ2luIGlzbid0IGNvbnRhaW5lZCBp
biB2aXNpYmxlIHJlY3QsIHN0YXJ0IG1vdmluZyBmb3J3YXJkIGJ5IGxpbmUuDQorICAgIHdoaWxl
ICghY29udGVudFJlY3QuY29udGFpbnMoZWxlbWVudFJlY3QubG9jYXRpb24oKSkpIHsNCisgICAg
ICAgIGF1dG8gbmV4dExpbmVQb3NpdGlvbiA9IG5leHRMaW5lRW5kUG9zaXRpb24oVmlzaWJsZVBv
c2l0aW9uKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigqc3RhcnRCb3VuZGFyeSkpKTsNCisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVzdFN0YXJ0Qm91bmRhcnkgPSBt
YWtlQm91bmRhcnlQb2ludChuZXh0TGluZVBvc2l0aW9uKTsNCisgICAgICAgIGlmICghdGVzdFN0
YXJ0Qm91bmRhcnkgfHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RTdGFydEJvdW5kYXJ5KSkNCisg
ICAgICAgICAgICBicmVhazsNCisgICAgICAgIA0KKyAgICAgICAgc3RhcnRCb3VuZGFyeSA9IHRl
c3RTdGFydEJvdW5kYXJ5Ow0KKyAgICAgICAgZWxlbWVudFJlY3QgPSBib3VuZHNGb3JSYW5nZShT
aW1wbGVSYW5nZSgqc3RhcnRCb3VuZGFyeSwgcmFuZ2UtPmVuZCkpOw0KKyAgICAgICAgaWYgKGVs
ZW1lbnRSZWN0LmlzRW1wdHkoKSkNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKw0KKyAg
ICAvLyBFbmQgaXNuJ3QgY29udGFpbmVkIGluIHZpc2libGUgcmVjdCwgc3RhcnQgbW92aW5nIGJh
Y2t3YXJkcyBieSBsaW5lLg0KKyAgICB3aGlsZSAoIWNvbnRlbnRSZWN0LmNvbnRhaW5zKGVsZW1l
bnRSZWN0LmxvY2F0aW9uKCkgKyBlbGVtZW50UmVjdC5zaXplKCkpKSB7DQorICAgICAgICBhdXRv
IHByZXZpb3VzTGluZVBvc2l0aW9uID0gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihWaXNpYmxl
UG9zaXRpb24obWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKCplbmRCb3VuZGFyeSkpKTsNCisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVzdEVuZEJvdW5kYXJ5ID0gbWFr
ZUJvdW5kYXJ5UG9pbnQocHJldmlvdXNMaW5lUG9zaXRpb24pOw0KKyAgICAgICAgaWYgKCF0ZXN0
RW5kQm91bmRhcnkgfHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RFbmRCb3VuZGFyeSkpDQorICAg
ICAgICAgICAgYnJlYWs7DQorICAgICAgICANCisgICAgICAgIGVuZEJvdW5kYXJ5ID0gdGVzdEVu
ZEJvdW5kYXJ5Ow0KKyAgICAgICAgZWxlbWVudFJlY3QgPSBib3VuZHNGb3JSYW5nZSh7ICpzdGFy
dEJvdW5kYXJ5LCAqZW5kQm91bmRhcnkgfSk7DQorICAgICAgICBpZiAoZWxlbWVudFJlY3QuaXNF
bXB0eSgpKQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAgIGlmICghc3RhcnRC
b3VuZGFyeSB8fCAhZW5kQm91bmRhcnkpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0K
KyAgICANCisgICAgcmV0dXJuIFNpbXBsZVJhbmdlKCpzdGFydEJvdW5kYXJ5LCAqZW5kQm91bmRh
cnkpOw0KK30NCisNCiBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpmaW5kVGV4dFJhbmdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hTdHJpbmdzLCBj
b25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbikgY29uc3QNCiB7DQogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZv
dW5kOw0KQEAgLTMxODIsNiArMzIyOCwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNj
cm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgSW50UmVjdCYgc3ViZm9jdQ0KICAg
ICAgICAgc2Nyb2xsUGFyZW50LT5zY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKG5ld1N1
YmZvY3VzKTsNCiB9DQogDQorRmxvYXRSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnVub2JzY3Vy
ZWRDb250ZW50UmVjdCgpIGNvbnN0DQorew0KKyAgICBhdXRvIGRvY3VtZW50ID0gdGhpcy0+ZG9j
dW1lbnQoKTsNCisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkNCisgICAg
ICAgIHJldHVybiB7IH07DQorICAgIHJldHVybiBGbG9hdFJlY3Qoc25hcHBlZEludFJlY3QoZG9j
dW1lbnQtPnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpKTsNCit9DQorDQogdm9pZCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb2ludCkgY29uc3QNCiB7DQogICAgIC8vIFNlYXJjaCB1cCB0aGUgcGFyZW50IGNoYWlu
IGFuZCBjcmVhdGUgYSB2ZWN0b3Igb2YgYWxsIHNjcm9sbGFibGUgcGFyZW50IG9iamVjdHMNCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
DQppbmRleCAyMWZmNGEyOGE1YTYuLjU5Y2VhNGY0YjM5NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oDQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KQEAgLTgwOCw3ICs4
MDgsNyBAQCBwcm90ZWN0ZWQ6DQogICAgIHZvaWQgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7
DQogICAgIHZvaWQgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsNCiAgICAgdmly
dHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0N
Ci0NCisgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRl
Ow0KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByYWRpb0dyb3VwQW5jZXN0b3IoKSBjb25zdDsN
CiANCiAgICAgYm9vbCBhbGxvd3NUZXh0UmFuZ2VzKCkgY29uc3Q7DQpAQCAtODIxLDYgKzgyMSw3
IEBAIHByaXZhdGU6DQogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlT2ZTdHJp
bmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiwgQWNjZXNzaWJp
bGl0eVNlYXJjaERpcmVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsNCiAgICAg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VsZWN0aW9uUmFuZ2UoKSBjb25zdDsNCiAgICAg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZmluZFRleHRSYW5nZShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgc2VhcmNoU3RyaW5ncywgY29uc3QgU2ltcGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmls
aXR5U2VhcmNoVGV4dERpcmVjdGlvbikgY29uc3Q7DQorICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IHZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KIHByb3Rl
Y3RlZDogLy8gRklYTUU6IE1ha2UgdGhlIGRhdGEgbWVtYmVycyBwcml2YXRlLg0KICAgICBib29s
IGNoaWxkcmVuSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuSW5pdGlhbGl6
ZWQ7IH0NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQppbmRleCBlMTU5NjIxYzg1NDkuLjE2NzlmMDFj
NTFkZiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZS5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaA0KQEAgLTk4OCw2ICs5ODgsNyBAQCBwdWJs
aWM6DQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpID0gMDsNCiAgICAgdmly
dHVhbCBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBG
bG9hdFJlY3QgY29udmVydEZyYW1lVG9TcGFjZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmls
aXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCA9IDA7DQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IHVu
b2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzQ2hlY2tlZFN0YXRlKCkgY29uc3QgPSAwOw0KICAgICANCiAgICAgLy8gSW4gYSBtdWx0aS1z
ZWxlY3QgbGlzdCwgbWFueSBpdGVtcyBjYW4gYmUgc2VsZWN0ZWQgYnV0IG9ubHkgb25lIGlzIGFj
dGl2ZSBhdCBhIHRpbWUuDQpAQCAtOTk3LDYgKzk5OCw3IEBAIHB1YmxpYzoNCiAgICAgdmlydHVh
bCBib29sIGhhc0l0YWxpY0ZvbnQoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBoYXNN
aXNzcGVsbGluZygpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNz
aWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3QgPSAwOw0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IHZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0ID0gMDsNCiAg
ICAgdmlydHVhbCBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBi
b29sIGhhc1NhbWVGb250KGNvbnN0IEFYQ29yZU9iamVjdCYpIGNvbnN0ID0gMDsNCiAgICAgdmly
dHVhbCBib29sIGhhc1NhbWVGb250Q29sb3IoY29uc3QgQVhDb3JlT2JqZWN0JikgY29uc3QgPSAw
Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCmluZGV4IDVlMGM4Yzhl
YmM2Ny4uOTg5MzQxYWZjMjEyIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tDQpAQCAtNTIsNiArNTIsNyBAQA0KICNpbXBvcnQgIlNWR0VsZW1lbnRJbmxpbmVzLmgi
DQogI2ltcG9ydCAiU1ZHTmFtZXMuaCINCiAjaW1wb3J0ICJTZWxlY3Rpb25HZW9tZXRyeS5oIg0K
KyNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiDQogI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiDQogI2lt
cG9ydCAiV0FLU2Nyb2xsVmlldy5oIg0KICNpbXBvcnQgIldBS1dpbmRvdy5oIg0KQEAgLTE2OTQs
MTIgKzE2OTUsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVT
dHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmluZykNCiB7DQogICAgIGlmICghW3NlbGYgX3By
ZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQogICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCi0g
ICAgDQotICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQo
KTsNCi0gICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkNCi0gICAgICAgIHJl
dHVybiBDR1JlY3RaZXJvOw0KLSAgICBhdXRvIHJlY3QgPSBGbG9hdFJlY3Qoc25hcHBlZEludFJl
Y3QoZG9jdW1lbnQtPnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpKTsNCi0gICAgcmV0
dXJuIFtzZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpyZWN0IHNwYWNlOkFjY2Vzc2liaWxpdHlDb252
ZXJzaW9uU3BhY2U6OlNjcmVlbl07DQorICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdFRvU3Bh
Y2U6c2VsZi5heEJhY2tpbmdPYmplY3QtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpIHNwYWNlOkFj
Y2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl07DQogfQ0KIA0KIC8vIFRoZSAiY2Vu
dGVyIHBvaW50IiBpcyB3aGVyZSBWb2ljZU92ZXIgd2lsbCAicHJlc3MiIGFuIG9iamVjdC4gVGhp
cyBtYXkgbm90IGJlIHRoZSBhY3R1YWwNCkBAIC0xOTE1LDcgKzE5MTEsNyBAQCBzdGF0aWMgTlNB
cnJheSAqYWNjZXNzaWJsZUVsZW1lbnRzRm9yT2JqZWN0cyhjb25zdCBBWENvcmVPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaA0KICAgICAgICAgfSk7DQogICAgIH0NCiANCi0gICAgcmV0dXJuIGNvbnZl
cnRUb05TQXJyYXkoYWNjZXNzaWJsZUVsZW1lbnRzKTsNCisgICAgcmV0dXJuIG1ha2VOU0FycmF5
KGFjY2Vzc2libGVFbGVtZW50cyk7DQogfQ0KIA0KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5
RGV0YWlsc0VsZW1lbnRzDQpAQCAtMjEwNCw3ICsyMTAwLDcgQEAgc3RhdGljIFJlbmRlck9iamVj
dCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgIEFjY2Vzc2liaWxpdHlTZWFy
Y2hDcml0ZXJpYSBjcml0ZXJpYSA9IGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJj
aFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUocGFyYW1ldGVycyk7DQogICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOw0KICAg
ICBzZWxmLmF4QmFja2luZ09iamVjdC0+ZmluZE1hdGNoaW5nT2JqZWN0cygmY3JpdGVyaWEsIHJl
c3VsdHMpOw0KLSAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShyZXN1bHRzKTsNCisgICAgcmV0
dXJuIG1ha2VOU0FycmF5KHJlc3VsdHMpOw0KIH0NCiANCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlN
b2RpZnlTZWxlY3Rpb246KFRleHRHcmFudWxhcml0eSlncmFudWxhcml0eSBpbmNyZWFzZTooQk9P
TClpbmNyZWFzZQ0KQEAgLTIyMDksNDcgKzIyMDUsNiBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgcmV0dXJuIHJhbmdlID8gW3NlbGYg
Y29udGVudEZvclNpbXBsZVJhbmdlOipyYW5nZSBhdHRyaWJ1dGVkOmF0dHJpYnV0ZWRdIDogbmls
Ow0KIH0NCiANCi0vLyBGSVhNRTogTm8gcmVhc29uIGZvciB0aGlzIHRvIGJlIGEgbWV0aG9kIGlu
c3RlYWQgb2YgYSBmdW5jdGlvbi4NCi0tIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihjb25z
dCBTaW1wbGVSYW5nZSYpcmFuZ2UNCi17DQotICAgIGF1dG8mIGRvY3VtZW50ID0gcmFuZ2Uuc3Rh
cnQuZG9jdW1lbnQoKTsNCi0gICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOw0KLSAg
ICBpZiAoIWZyYW1lKQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDAp
Ow0KLQ0KLSAgICBhdXRvKiByb290RWRpdGFibGVFbGVtZW50ID0gZnJhbWUtPnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCi0gICAgYXV0byogc2NvcGUgPSBy
b290RWRpdGFibGVFbGVtZW50ID8gcm9vdEVkaXRhYmxlRWxlbWVudCA6IGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudCgpOw0KLSAgICBpZiAoIXNjb3BlKQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJh
bmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICAvLyBNb3VzZSBldmVudHMgbWF5IGNhdXNlIFRT
TSB0byBhdHRlbXB0IHRvIGNyZWF0ZSBhbiBOU1JhbmdlIGZvciBhIHBvcnRpb24gb2YgdGhlIHZp
ZXcNCi0gICAgLy8gdGhhdCBpcyBub3QgaW5zaWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lv
bi4gVGhlc2UgY2hlY2tzIGVuc3VyZSB3ZSBkb24ndCBwcm9kdWNlDQotICAgIC8vIHBvdGVudGlh
bGx5IGludmFsaWQgZGF0YSB3aGVuIHJlc3BvbmRpbmcgdG8gc3VjaCByZXF1ZXN0cy4NCi0gICAg
aWYgKCFzY29wZS0+Y29udGFpbnMocmFuZ2Uuc3RhcnQuY29udGFpbmVyLnB0cigpKSB8fCAhc2Nv
cGUtPmNvbnRhaW5zKHJhbmdlLmVuZC5jb250YWluZXIucHRyKCkpKQ0KLSAgICAgICAgcmV0dXJu
IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICByZXR1cm4gTlNNYWtlUmFuZ2Uo
Y2hhcmFjdGVyQ291bnQoeyB7ICpzY29wZSwgMCB9LCByYW5nZS5zdGFydCB9KSwgY2hhcmFjdGVy
Q291bnQocmFuZ2UpKTsNCi19DQotDQotLSAoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4pX2Nv
bnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlDQotew0KLSAgICBpZiAocmFuZ2UubG9jYXRp
b24gPT0gTlNOb3RGb3VuZCkNCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQotDQotICAg
IC8vIG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5
IGlucHV0IG1ldGhvZHMgdGhhdA0KLSAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEg
Y29udGFpbmluZyB0aGUgc2VsZWN0aW9uDQotICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNh
dXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5v
dA0KLSAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9u
IGlzIHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMNCi0gICAgLy8gdG8gdXNlIHRoZSByb290
IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25h
bCBiYXNlLg0KLSAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0
IGNvbnRleHQuDQotICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9j
dW1lbnQoKTsNCi0gICAgYXV0byBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCi0gICAgYXV0byBz
Y29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpOw0KLSAgICBpZiAoIXNjb3BlKQ0KLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsNCi0NCi0gICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMoKnNjb3BlKSwgcmFuZ2UpOw0KLX0NCiANCiAvLyBUaGlzIG1ldGhvZCBp
cyBpbnRlbmRlZCB0byB0YWtlIGEgdGV4dCBtYXJrZXIgcmVwcmVzZW50aW5nIGEgVmlzaWJsZVBv
c2l0aW9uIGFuZCBjb252ZXJ0IGl0DQogLy8gaW50byBhIG5vcm1hbGl6ZWQgbG9jYXRpb24gd2l0
aGluIHRoZSBkb2N1bWVudC4NCkBAIC0yMjY3LDcgKzIyMjIsNyBAQCBzdGF0aWMgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgICAgIGF1dG8gcmFuZ2Ug
PSBjYWNoZS0+cmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNoYXJhY3Rlck9mZnNl
dCwgY2hhcmFjdGVyT2Zmc2V0KTsNCiAgICAgICAgIGlmICghcmFuZ2UpDQogICAgICAgICAgICAg
cmV0dXJuIE5TTm90Rm91bmQ7DQotICAgICAgICByZXR1cm4gW3NlbGYgX2NvbnZlcnRUb05TUmFu
Z2U6KnJhbmdlXS5sb2NhdGlvbjsNCisgICAgICAgIHJldHVybiBtYWtlTlNSYW5nZShyYW5nZSku
bG9jYXRpb247DQogICAgIH0NCiAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQogfQ0KQEAgLTIzNDYs
NyArMjMwMSw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3
KiB2aWV3KQ0KICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KICAg
ICAgICAgcmV0dXJuIG5pbDsNCiANCi0gICAgYXV0byByYW5nZSA9IFtzZWxmIF9jb252ZXJ0VG9E
T01SYW5nZTpOU01ha2VSYW5nZShwb3NpdGlvbiwgMCldOw0KKyAgICBhdXRvIHJhbmdlID0gbWFr
ZURPTVJhbmdlKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpLCBOU01ha2VSYW5nZShw
b3NpdGlvbiwgMCkpOw0KICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiAN
CkBAIC0yNDE0LDcgKzIzNjksNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZp
ZXcoV0FLVmlldyogdmlldykNCiB7DQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmls
aXR5Q2FsbF0pDQogICAgICAgICByZXR1cm4gbmlsOw0KLSAgICBhdXRvIHdlYlJhbmdlID0gW3Nl
bGYgX2NvbnZlcnRUb0RPTVJhbmdlOnJhbmdlXTsNCisgICAgYXV0byB3ZWJSYW5nZSA9IG1ha2VE
T01SYW5nZShzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKSwgcmFuZ2UpOw0KICAgICBp
ZiAoIXdlYlJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiAgICAgcmV0dXJuIHNlbGYuYXhC
YWNraW5nT2JqZWN0LT5zdHJpbmdGb3JSYW5nZSgqd2ViUmFuZ2UpOw0KQEAgLTI2MDAsNiArMjU1
NSwxNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmll
dykNCiAgICAgcmV0dXJuIFtzZWxmIHByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OnN0
YXJ0XTsNCiB9DQogDQorLSAoQ0dSZWN0KWZyYW1lRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UNCit7
DQorICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQorICAgICAgICBy
ZXR1cm4gQ0dSZWN0WmVybzsNCisgICAgYXV0byB3ZWJSYW5nZSA9IG1ha2VET01SYW5nZShzZWxm
LmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKSwgcmFuZ2UpOw0KKyAgICBpZiAoIXdlYlJhbmdl
KQ0KKyAgICAgICAgcmV0dXJuIENHUmVjdFplcm87DQorICAgIGF1dG8gcmVjdCA9IHNlbGYuYXhC
YWNraW5nT2JqZWN0LT5ib3VuZHNGb3JSYW5nZSgqd2ViUmFuZ2UpOw0KKyAgICByZXR1cm4gW3Nl
bGYgY29udmVydFJlY3RUb1NwYWNlOnJlY3Qgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25T
cGFjZTo6U2NyZWVuXTsNCit9DQorDQogLy8gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gcmV0
dXJuIHRoZSBib3VuZHMgb2YgYSB0ZXh0IG1hcmtlciByYW5nZSBpbiBzY3JlZW4gY29vcmRpbmF0
ZXMuDQogLSAoQ0dSZWN0KWZyYW1lRm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKilhcnJheQ0KIHsN
CkBAIC0yOTMxLDcgKzI4OTcsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZp
ZXcoV0FLVmlldyogdmlldykNCiAgICAgICAgIHJldHVybiBuaWw7DQogDQogICAgIGF1dG8gcmFk
aWNhbmQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+bWF0aFJhZGljYW5kKCk7DQotICAgIHJldHVy
biByYWRpY2FuZCA/IGNvbnZlcnRUb05TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCisgICAgcmV0
dXJuIHJhZGljYW5kID8gbWFrZU5TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCiB9DQogDQogLSAo
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKilhY2Nlc3NpYmlsaXR5TWF0aE51bWVyYXRv
ck9iamVjdA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCmluZGV4IDExYTc5YjEyMTcyZC4u
MzY5NTJmOTQwOGZiIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQpAQCAtOTkyLDYg
Kzk5MiwxMyBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpDQog
ICAgICAgICB0cmVlLT5hcHBseVBlbmRpbmdDaGFuZ2VzKCk7DQogfQ0KIA0KK3N0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSgp
IGNvbnN0DQorew0KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOw0KKyAgICBhdXRvKiBheE9i
amVjdCA9IGFzc29jaWF0ZWRBWE9iamVjdCgpOw0KKyAgICByZXR1cm4gYXhPYmplY3QgPyBheE9i
amVjdC0+dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgOiBzdGQ6Om51bGxvcHQ7DQorfQ0KKw0KIHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnJhbmdlRm9yUGxhaW5U
ZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmIGF4UmFuZ2UpIGNvbnN0DQogew0KICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOw0KQEAgLTE0NzAsNiArMTQ3NywxNSBAQCB2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uUmFuZw0KICAgICAgICAgb2JqZWN0LT5zZXRTZWxlY3RlZFZpc2libGVQb3NpdGlv
blJhbmdlKHZpc2libGVQb3NpdGlvblJhbmdlKTsNCiB9DQogDQorRmxvYXRSZWN0IEFYSXNvbGF0
ZWRPYmplY3Q6OnVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0DQorew0KKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPEZsb2F0UmVjdD4oW3Ro
aXNdICgpIC0+IEZsb2F0UmVjdCB7DQorICAgICAgICBpZiAoYXV0byogb2JqZWN0ID0gYXNzb2Np
YXRlZEFYT2JqZWN0KCkpDQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+dW5vYnNjdXJlZENv
bnRlbnRSZWN0KCk7DQorICAgICAgICByZXR1cm4geyB9Ow0KKyAgICB9KTsNCit9DQorDQogc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudFJhbmdlKCkg
Y29uc3QNCiB7DQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7DQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oDQppbmRleCAzYjRlZWExZmJiNTguLmJhNjNkYzI3MjFkMiAxMDA2NDQNCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
aA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oDQpAQCAtNDQxLDkgKzQ0MSwxMSBAQCBwcml2YXRlOg0KICAgICBBWENvcmVP
YmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCBvdmVycmlkZTsNCiAgICAgaW50IGxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsNCiAgICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5U
ZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5n
ZSYpIGNvbnN0IG92ZXJyaWRlOw0KKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiB2aXNp
YmxlQ2hhcmFjdGVyUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCiAgICAgaW50IGluZGV4KGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOw0KICAgICB2b2lkIGxpbmVCcmVha3Mo
VmVjdG9yPGludD4mKSBjb25zdCBvdmVycmlkZTsNCi0NCisgICAgRmxvYXRSZWN0IHVub2JzY3Vy
ZWRDb250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOw0KKyAgICANCiAgICAgLy8gQXR0cmlidXRl
IHNldHRlcnMuDQogICAgIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgb3ZlcnJpZGU7DQogICAg
IHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSBvdmVycmlkZTsNCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5oDQppbmRleCBlZWEzZTY5ZGVkOTMuLmFjMmJkYmZlMmFjNSAxMDA2
NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaA0KQEAgLTM0LDYgKzM0LDcg
QEANCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogc3RydWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hD
cml0ZXJpYTsNCitjbGFzcyBEb2N1bWVudDsNCiBjbGFzcyBJbnRSZWN0Ow0KIGNsYXNzIEZsb2F0
UG9pbnQ7DQogY2xhc3MgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ7DQpAQCAtMTExLDExICsx
MTIsMTUgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENv
bnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWwNCiAtIChOU0FycmF5ICopYWNjZXNzaWJp
bGl0eU1hdGhQb3N0c2NyaXB0UGFpcnM7DQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlNYXRo
UHJlc2NyaXB0UGFpcnM7DQogDQorLSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJh
Y3RlclJhbmdlOw0KKw0KIC0gKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKiliYXNlQWNj
ZXNzaWJpbGl0eVJlc29sdmVkRWRpdGluZ1N0eWxlczsNCiANCiBleHRlcm4gV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNl
YXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoY29uc3QgTlNEaWN0aW9uYXJ5ICop
Ow0KIA0KLWV4dGVybiBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFY
Q29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7DQorZXh0ZXJuIE5TQXJy
YXkgKm1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJik7DQorZXh0ZXJuIE5TUmFuZ2UgbWFrZU5TUmFuZ2Uoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4pOw0KK2V4dGVybiBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiBtYWtlRE9NUmFuZ2UoV2ViQ29yZTo6RG9jdW1lbnQqLCBOU1Jhbmdl
KTsNCiANCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkNCiAtIChpZClfYWNjZXNzaWJpbGl0eVdl
YkRvY3VtZW50VmlldzsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0N
CmluZGV4IDFlNTY5MWQxOWY5Mi4uNWY3YWQyODY5ZTc0IDEwMDY0NA0KLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
Lm1tDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlckJhc2UubW0NCkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIE5TQXJy
YXkgKmNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6
QWNjZXNzaWJpbGkNCiAgICAgfSkuYXV0b3JlbGVhc2UoKTsNCiB9DQogDQotTlNBcnJheSAqY29u
dmVydFRvTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYgY2hpbGRyZW4pDQorTlNBcnJheSAqbWFrZU5TQXJyYXkoY29uc3QgV2Vi
Q29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVu
KQ0KIHsNCiAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoY2hpbGRyZW4sIFtdIChjb25zdCBhdXRv
JiBjaGlsZCkgLT4gaWQgew0KICAgICAgICAgYXV0byB3cmFwcGVyID0gY2hpbGQtPndyYXBwZXIo
KTsNCkBAIC00NjIsNiArNDYyLDI3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5T
cGFjZUZ1bmN0aW9uKFBhdGhDb252ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uDQogICAgIHJl
dHVybiBjb252ZXJ0ZWRQYXRoLmF1dG9yZWxlYXNlKCk7DQogfQ0KIA0KKy8vIERldGVybWluZSB0
aGUgdmlzaWJsZSByYW5nZSBieSBjaGVja2luZyBpbnRlcnNlY3Rpb24gb2YgdW5vYnNjdXJlZENv
bnRlbnRSZWN0IGFuZCBhIHJhbmdlIG9mIHRleHQgYnkNCisvLyBhZHZhbmNpbmcgZm9yd2FyZCBi
eSBsaW5lIGZyb20gdG9wIGFuZCBiYWNrd2FyZHMgYnkgbGluZSBmcm9tIHRoZSBib3R0b20sIHVu
dGlsIHdlIGhhdmUgYSB2aXNpYmxlIHJhbmdlLg0KKy0gKE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVZp
c2libGVDaGFyYWN0ZXJSYW5nZQ0KK3sNCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJp
ZXZlVmFsdWVGcm9tTWFpblRocmVhZDxOU1JhbmdlPihbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0
cihzZWxmKV0gKCkgLT4gTlNSYW5nZSB7DQorICAgICAgICBhdXRvIGJhY2tpbmdPYmplY3QgPSBw
cm90ZWN0ZWRTZWxmLmdldCgpLmJhc2VVcGRhdGVCYWNraW5nU3RvcmU7DQorICAgICAgICBpZiAo
IWJhY2tpbmdPYmplY3QpDQorICAgICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91
bmQsIDApOw0KKw0KKyAgICAgICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlTlNSYW5nZShiYWNr
aW5nT2JqZWN0LT5lbGVtZW50UmFuZ2UoKSk7DQorICAgICAgICBpZiAoZWxlbWVudFJhbmdlLmxv
Y2F0aW9uID09IE5TTm90Rm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRSYW5nZTsN
CisgICAgICAgIA0KKyAgICAgICAgYXV0byB2aXNpYmxlUmFuZ2UgPSBtYWtlTlNSYW5nZShiYWNr
aW5nT2JqZWN0LT52aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSk7DQorICAgICAgICBpZiAodmlzaWJs
ZVJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIHZpc2li
bGVSYW5nZTsNCisNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZSh2aXNpYmxlUmFuZ2UubG9j
YXRpb24gLSBlbGVtZW50UmFuZ2UubG9jYXRpb24sIHZpc2libGVSYW5nZS5sZW5ndGgpOw0KKyAg
ICB9KTsNCit9DQorDQogLSAoaWQpX2FjY2Vzc2liaWxpdHlXZWJEb2N1bWVudFZpZXcNCiB7DQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOw0KQEAgLTYyMyw2ICs2NDQsNTAgQEAgc3RhdGljIHZv
aWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
KiBhdHRyU3RyaW5nLA0KICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldExhbmd1YWdlKGF0dHJTdHJp
bmcsIG5vZGUtPnJlbmRlcmVyKCksIGF0dHJTdHJpbmdSYW5nZSk7DQogfQ0KIA0KKw0KK05TUmFu
Z2UgbWFrZU5TUmFuZ2Uoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2UpDQorew0KKyAg
ICBpZiAoIXJhbmdlKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDAp
Ow0KKyAgICANCisgICAgYXV0byYgZG9jdW1lbnQgPSByYW5nZS0+c3RhcnQuZG9jdW1lbnQoKTsN
CisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOw0KKyAgICBpZiAoIWZyYW1lKQ0K
KyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICBhdXRv
KiByb290RWRpdGFibGVFbGVtZW50ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJv
b3RFZGl0YWJsZUVsZW1lbnQoKTsNCisgICAgYXV0byogc2NvcGUgPSByb290RWRpdGFibGVFbGVt
ZW50ID8gcm9vdEVkaXRhYmxlRWxlbWVudCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOw0K
KyAgICBpZiAoIXNjb3BlKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQs
IDApOw0KKw0KKyAgICAvLyBNb3VzZSBldmVudHMgbWF5IGNhdXNlIFRTTSB0byBhdHRlbXB0IHRv
IGNyZWF0ZSBhbiBOU1JhbmdlIGZvciBhIHBvcnRpb24gb2YgdGhlIHZpZXcNCisgICAgLy8gdGhh
dCBpcyBub3QgaW5zaWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lvbi4gVGhlc2UgY2hlY2tz
IGVuc3VyZSB3ZSBkb24ndCBwcm9kdWNlDQorICAgIC8vIHBvdGVudGlhbGx5IGludmFsaWQgZGF0
YSB3aGVuIHJlc3BvbmRpbmcgdG8gc3VjaCByZXF1ZXN0cy4NCisgICAgaWYgKCFzY29wZS0+Y29u
dGFpbnMocmFuZ2UtPnN0YXJ0LmNvbnRhaW5lci5wdHIoKSkgfHwgIXNjb3BlLT5jb250YWlucyhy
YW5nZS0+ZW5kLmNvbnRhaW5lci5wdHIoKSkpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2Uo
TlNOb3RGb3VuZCwgMCk7DQorDQorICAgIHJldHVybiBOU01ha2VSYW5nZShjaGFyYWN0ZXJDb3Vu
dCh7IHsgKnNjb3BlLCAwIH0sIHJhbmdlLT5zdGFydCB9KSwgY2hhcmFjdGVyQ291bnQoKnJhbmdl
KSk7DQorfQ0KKw0KK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VET01SYW5nZShEb2N1
bWVudCogZG9jdW1lbnQsIE5TUmFuZ2UgcmFuZ2UpDQorew0KKyAgICBpZiAocmFuZ2UubG9jYXRp
b24gPT0gTlNOb3RGb3VuZCkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAg
IC8vIG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5
IGlucHV0IG1ldGhvZHMgdGhhdA0KKyAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEg
Y29udGFpbmluZyB0aGUgc2VsZWN0aW9uDQorICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNh
dXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5v
dA0KKyAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9u
IGlzIHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMNCisgICAgLy8gdG8gdXNlIHRoZSByb290
IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25h
bCBiYXNlLg0KKyAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0
IGNvbnRleHQuDQorICAgIGF1dG8gc2VsZWN0aW9uUm9vdCA9IGRvY3VtZW50LT5mcmFtZSgpLT5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQorICAgIGF1dG8g
c2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGRvY3VtZW50LT5kb2N1bWVu
dEVsZW1lbnQoKTsNCisgICAgaWYgKCFzY29wZSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7DQorDQorICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIHJhbmdlKTsNCit9DQorDQogLy8gUmV0dXJucyBhbiBh
cnJheSBvZiBzdHJpbmdzIGFuZCBBWE9iamVjdCB3cmFwcGVycyBjb3JyZXNwb25kaW5nIHRvIHRo
ZSB0ZXh0DQogLy8gcnVucyBhbmQgcmVwbGFjZW1lbnQgbm9kZXMgaW5jbHVkZWQgaW4gdGhlIGdp
dmVuIHJhbmdlLg0KIC0gKE5TQXJyYXkgKiljb250ZW50Rm9yU2ltcGxlUmFuZ2U6KGNvbnN0IFNp
bXBsZVJhbmdlJilyYW5nZSBhdHRyaWJ1dGVkOihCT09MKWF0dHJpYnV0ZWQNCkBAIC02NzYsMTgg
Kzc0MSwyNiBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsDQogICAgIHJldHVybiBhcnJheS5hdXRv
cmVsZWFzZSgpOw0KIH0NCiANCi0tIChOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKWxpbmVSZWN0
c0FuZFRleHQNCistIChXZWJDb3JlOjpBWENvcmVPYmplY3QqKWJhc2VVcGRhdGVCYWNraW5nU3Rv
cmUNCiB7DQogI2lmIFBMQVRGT1JNKE1BQykNCiAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHNl
bGYudXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlOw0KICAgICBpZiAoIWJhY2tpbmdPYmplY3QpDQot
ICAgICAgICByZXR1cm4gbmlsOw0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogI2Vsc2UNCiAg
ICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCi0gICAgICAgIHJldHVy
biBuaWw7DQorICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICAgYXV0byogYmFja2luZ09iamVj
dCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0Ow0KICNlbmRpZg0KKyAgICByZXR1cm4gYmFja2luZ09i
amVjdDsNCit9DQogDQorLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilsaW5lUmVjdHNBbmRU
ZXh0DQorew0KKyAgICBhdXRvIGJhY2tpbmdPYmplY3QgPSBzZWxmLmJhc2VVcGRhdGVCYWNraW5n
U3RvcmU7DQorICAgIGlmICghYmFja2luZ09iamVjdCkNCisgICAgICAgIHJldHVybiBuaWw7DQor
ICAgIA0KICAgICBhdXRvIHJhbmdlID0gYmFja2luZ09iamVjdC0+ZWxlbWVudFJhbmdlKCk7DQog
ICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm4gbmlsOw0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0NCmluZGV4IDcwMDRjNDZiNjQzOS4uZDY5NDFmODJmMTIyIDEw
MDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tDQpAQCAtMTc5NSw3ICsx
Nzk1LDcgQEAgc3RhdGljIHZvaWQgV2ViVHJhbnNmb3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9p
ZCogaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCAqZWwNCiANCiAtIChOU0FycmF5PFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyICo+ICopY2hpbGRyZW5WZWN0b3JBcnJheQ0KIHsNCi0gICAg
cmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZi5heEJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkp
Ow0KKyAgICByZXR1cm4gbWFrZU5TQXJyYXkoc2VsZi5heEJhY2tpbmdPYmplY3QtPmNoaWxkcmVu
KCkpOw0KIH0NCiANCiAtIChOU1ZhbHVlICopcG9zaXRpb24NCkBAIC0yMjAzLDcgKzIyMDMsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChiYWNr
aW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udGVudENvcHk7DQogICAgICAgICAg
ICAgYmFja2luZ09iamVjdC0+YXJpYVRyZWVJdGVtQ29udGVudChjb250ZW50Q29weSk7DQotICAg
ICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoY29udGVudENvcHkpOw0KKyAgICAgICAg
ICAgIHJldHVybiBtYWtlTlNBcnJheShjb250ZW50Q29weSk7DQogICAgICAgICB9DQogDQogICAg
ICAgICByZXR1cm4gc2VsZi5jaGlsZHJlblZlY3RvckFycmF5Ow0KQEAgLTIyMTMsNyArMjIxMyw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKGJh
Y2tpbmdPYmplY3QtPmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkpIHsNCiAgICAgICAgICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRD
aGlsZHJlbkNvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+c2VsZWN0ZWRDaGlsZHJl
bihzZWxlY3RlZENoaWxkcmVuQ29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05T
QXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNB
cnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQogICAgICAgICB9DQogICAgICAgICByZXR1cm4g
bmlsOw0KICAgICB9DQpAQCAtMjIyMiw3ICsyMjIyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNMaXN0Qm94KCkp
IHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3IgdmlzaWJsZUNoaWxkcmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0
LT52aXNpYmxlQ2hpbGRyZW4odmlzaWJsZUNoaWxkcmVuQ29weSk7DQotICAgICAgICAgICAgcmV0
dXJuIGNvbnZlcnRUb05TQXJyYXkodmlzaWJsZUNoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VOU0FycmF5KHZpc2libGVDaGlsZHJlbkNvcHkpOw0KICAgICAgICAgfQ0KIA0K
ICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTGlzdCgpKQ0KQEAgLTIyMzQsNyArMjIzNCw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KIA0KICAgICBpZiAoYmFj
a2luZ09iamVjdC0+aXNXZWJBcmVhKCkpIHsNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6QCJBWExpbmtVSUVsZW1lbnRzIl0pDQotICAgICAgICAgICAgcmV0dXJu
IGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+ZG9jdW1lbnRMaW5rcygpKTsNCisgICAg
ICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+ZG9jdW1lbnRMaW5rcygp
KTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExv
YWRlZCJdKQ0KICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YmFj
a2luZ09iamVjdC0+aXNMb2FkZWQoKV07DQpAQCAtMjI2NywxNiArMjI2NywyMSBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICBQbGFpblRleHRSYW5n
ZSB0ZXh0UmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZFRleHRSYW5nZSgpOw0KICAgICAg
ICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0UmFu
Z2Uuc3RhcnQsIHRleHRSYW5nZS5sZW5ndGgpXTsNCiAgICAgICAgIH0NCi0gICAgICAgIC8vIFRP
RE86IEdldCBhY3R1YWwgdmlzaWJsZSByYW5nZS4gPHJkYXI6Ly9wcm9ibGVtLzQ3MTIxMDE+DQot
ICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxp
dHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBi
YWNraW5nT2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSA/IG5pbCA6IFtOU1ZhbHVlIHZhbHVlV2l0
aFJhbmdlOiBOU01ha2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0LT50ZXh0TGVuZ3RoKCkpXTsNCi0N
CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5SW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIGlu
dCBsaW5lTnVtYmVyID0gYmFja2luZ09iamVjdC0+aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCk7
DQogICAgICAgICAgICAgcmV0dXJuIGxpbmVOdW1iZXIgPj0gMCA/IEAobGluZU51bWJlcikgOiBu
aWw7DQogICAgICAgICB9DQogICAgIH0NCiANCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRl
XSkgew0KKyAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpKQ0KKyAg
ICAgICAgICAgIHJldHVybiBuaWw7DQorICAgICAgICAvLyBUT0RPOiBHZXQgYWN0dWFsIHZpc2li
bGUgcmFuZ2UuIDxyZGFyOi8vcHJvYmxlbS80NzEyMTAxPg0KKyAgICAgICAgaWYgKGJhY2tpbmdP
YmplY3QtPmlzVGV4dENvbnRyb2woKSkNCisgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFs
dWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgYmFja2luZ09iamVjdC0+dGV4dExlbmd0aCgpKV07
DQorICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6W3NlbGYgYWNjZXNzaWJp
bGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZV1dOw0KKyAgICB9DQorDQogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV0pIHsN
CiAgICAgICAgIFVSTCB1cmwgPSBiYWNraW5nT2JqZWN0LT51cmwoKTsNCiAgICAgICAgIGlmICh1
cmwuaXNOdWxsKCkpDQpAQCAtMjM4MCw3ICsyMzg1LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5EDQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5SW1hZ2VPdmVybGF5RWxlbWVudHNBdHRyaWJ1dGVdKSB7DQogICAg
ICAgICBhdXRvIGltYWdlT3ZlcmxheUVsZW1lbnRzID0gYmFja2luZ09iamVjdC0+aW1hZ2VPdmVy
bGF5RWxlbWVudHMoKTsNCi0gICAgICAgIHJldHVybiBpbWFnZU92ZXJsYXlFbGVtZW50cyA/IGNv
bnZlcnRUb05TQXJyYXkoKmltYWdlT3ZlcmxheUVsZW1lbnRzKSA6IG5pbDsNCisgICAgICAgIHJl
dHVybiBpbWFnZU92ZXJsYXlFbGVtZW50cyA/IG1ha2VOU0FycmF5KCppbWFnZU92ZXJsYXlFbGVt
ZW50cykgOiBuaWw7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlFbWJlZGRlZEltYWdlRGVzY3JpcHRpb25BdHRyaWJ1dGVd
KQ0KQEAgLTI0MDQsMjkgKzI0MDksMjkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5EDQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJMaXN0KCkpIHsNCiAgICAg
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
dGFic0NoaWxkcmVuOw0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnRhYkNoaWxkcmVuKHRh
YnNDaGlsZHJlbik7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodGFic0No
aWxkcmVuKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkodGFic0NoaWxkcmVuKTsN
CiAgICAgICAgIH0NCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXSkNCi0gICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbnRlbnRzKCkpOw0KKyAgICAgICAg
cmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbnRlbnRzKCkpOw0KIA0KICAgICBp
ZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZSgpICYmIGJhY2tpbmdPYmplY3QtPmlzRXhwb3NhYmxl
KCkpIHsNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05T
QXJyYXkoYmFja2luZ09iamVjdC0+cm93cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5T
QXJyYXkoYmFja2luZ09iamVjdC0+cm93cygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVd
KQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPnZp
c2libGVSb3dzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2Jq
ZWN0LT52aXNpYmxlUm93cygpKTsNCiANCiAgICAgICAgIC8vIFRPRE86IGRpc3Rpbmd1aXNoIGJl
dHdlZW4gdmlzaWJsZSBhbmQgbm9uLXZpc2libGUgY29sdW1ucw0KICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRl
XQ0KICAgICAgICAgICAgIHx8IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlWaXNpYmxlQ29sdW1uc0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1ucygpKTsNCisgICAgICAgICAgICBy
ZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1ucygpKTsNCiANCiAgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0
ZWRSb3dzQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsNCiAgICAgICAg
ICAgICBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5
KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShzZWxlY3RlZENoaWxkcmVu
Q29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5D
b3B5KTsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIC8vIEhUTUwgdGFibGVzIGRvbid0IHN1cHBv
cnQgdGhlc2UgYXR0cmlidXRlcy4NCkBAIC0yNDM1LDcgKzI0NDAsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICByZXR1cm4gbmlsOw0KIA0KICAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlD
b2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29u
dmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KKyAgICAgICAg
ICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0K
IA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlIZWFkZXJBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgYXV0byogaGVhZGVyQ29udGFp
bmVyID0gYmFja2luZ09iamVjdC0+aGVhZGVyQ29udGFpbmVyKCk7DQpAQCAtMjQ0MywxMCArMjQ0
OCwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIH0N
CiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJu
IGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCisgICAgICAg
ICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCiAN
CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5VmlzaWJsZUNlbGxzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRv
TlNBcnJheShiYWNraW5nT2JqZWN0LT5jZWxscygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFr
ZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y2VsbHMoKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkNvdW50QXR0cmli
dXRlXSkNCiAgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5jb2x1bW5Db3VudCgp
KTsNCkBAIC0yNDY4LDcgKzI0NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19FTkQNCiAgICAgICAgIC8vIHJvd3MgYXR0cmlidXRlIGZvciBhIGNvbHVtbiBpcyB0aGUgbGlz
dCBvZiBhbGwgdGhlIGVsZW1lbnRzIGluIHRoYXQgY29sdW1uIGF0IGVhY2ggcm93DQogICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NB
dHRyaWJ1dGVdDQogICAgICAgICAgICAgfHwgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1
cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpKTsNCisgICAgICAg
ICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7DQogDQog
ICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eUhlYWRlckF0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBhdXRvKiBoZWFkZXIgPSBiYWNraW5n
T2JqZWN0LT5jb2x1bW5IZWFkZXIoKTsNCkBAIC0yNDg4LDEwICsyNDkzLDEwIEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgfQ0KIA0KICAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5IZWFk
ZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNB
cnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVy
biBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KIA0KICAgICAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dI
ZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRv
TlNBcnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVy
biBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KIA0KICAgICAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBQ29s
dW1uSW5kZXhBdHRyaWJ1dGVdKQ0KICAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3Qt
PmF4Q29sdW1uSW5kZXgoKSk7DQpAQCAtMjUwNCwxMiArMjUwOSwxMiBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXSkgew0KICAg
ICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBzZWxlY3RlZENoaWxkcmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5zZWxl
Y3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1cm4g
Y29udmVydFRvTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0
dXJuIG1ha2VOU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCiAgICAgICAgIH0NCiAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93
c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVj
dC0+YXJpYVRyZWVSb3dzKHJvd3NDb3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRv
TlNBcnJheShyb3dzQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHJvd3ND
b3B5KTsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIC8vIFRyZWVSb2xlcyBkbyBub3Qgc3VwcG9y
dCBjb2x1bW5zLCBidXQgTWFjIEFYIGV4cGVjdHMgdG8gYmUgYWJsZSB0byBhc2sgYWJvdXQgY29s
dW1ucyBhdCB0aGUgbGVhc3QuDQpAQCAtMjU0NCw3ICsyNTQ5LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIC8vIFRoZSByb3dzIHRoYXQgYXJlIGNvbnNpZGVy
ZWQgaW5zaWRlIHRoaXMgcm93Lg0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdKSB7DQogICAgICAgICBp
ZiAoYmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzQVJJQVRy
ZWVHcmlkUm93KCkpDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2lu
Z09iamVjdC0+ZGlzY2xvc2VkUm93cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJy
YXkoYmFja2luZ09iamVjdC0+ZGlzY2xvc2VkUm93cygpKTsNCiAgICAgfQ0KIA0KICAgICAvLyBU
aGUgcm93IHRoYXQgY29udGFpbnMgdGhpcyByb3cuIEl0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0
aGUgZmlyc3QgcGFyZW50IHRoYXQgaXMgYSB0cmVlaXRlbS4NCkBAIC0yNjEyLDcgKzI2MTcsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0
dHJpYnV0ZV0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBsaW5rZWRVSUVsZW1lbnRzOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+
bGlua2VkVUlFbGVtZW50cyhsaW5rZWRVSUVsZW1lbnRzKTsNCi0gICAgICAgIHJldHVybiBjb252
ZXJ0VG9OU0FycmF5KGxpbmtlZFVJRWxlbWVudHMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGxpbmtlZFVJRWxlbWVudHMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQXR0cmlidXRlXSkNCkBA
IC0yNjg1LDcgKzI2OTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQN
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlP
d25zQXR0cmlidXRlXSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFPd25zOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+YXJp
YU93bnNFbGVtZW50cyhhcmlhT3ducyk7DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eShhcmlhT3ducyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYXJpYU93bnMpOw0KICAg
ICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5QVJJQVBvc0luU2V0QXR0cmlidXRlXSkNCkBAIC0yNzUxLDcgKzI3NTYsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiANCiAgICAgICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RSYWRpY2FuZEF0
dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBhdXRvIHJhZGljYW5kID0gYmFja2luZ09iamVjdC0+
bWF0aFJhZGljYW5kKCk7DQotICAgICAgICAgICAgcmV0dXJuIHJhZGljYW5kID8gY29udmVydFRv
TlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KKyAgICAgICAgICAgIHJldHVybiByYWRpY2FuZCA/
IG1ha2VOU0FycmF5KCpyYWRpY2FuZCkgOiBuaWw7DQogICAgICAgICB9DQogDQogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhGcmFj
dGlvbk51bWVyYXRvckF0dHJpYnV0ZV0pDQpAQCAtMjg0NSw3ICsyODUwLDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6QCJBWERldGFpbHNFbGVtZW50cyJdKSB7DQogICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGV0YWlsczsNCiAgICAgICAg
IGJhY2tpbmdPYmplY3QtPmFyaWFEZXRhaWxzRWxlbWVudHMoZGV0YWlscyk7DQotICAgICAgICBy
ZXR1cm4gY29udmVydFRvTlNBcnJheShkZXRhaWxzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNB
cnJheShkZXRhaWxzKTsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUJyYWlsbGVMYWJlbEF0dHJpYnV0ZV0pDQpAQCAtMjg2
MCw3ICsyODY1LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEVycm9yTWVzc2FnZUVsZW1l
bnRzIl0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBlcnJvck1lc3NhZ2VzOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYUVy
cm9yTWVzc2FnZUVsZW1lbnRzKGVycm9yTWVzc2FnZXMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZl
cnRUb05TQXJyYXkoZXJyb3JNZXNzYWdlcyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
ZXJyb3JNZXNzYWdlcyk7DQogICAgIH0NCiANCiAgICAgLy8gTXVsdGktc2VsZWN0YWJsZQ0KQEAg
LTI4NzgsNyArMjg4Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0K
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFy
aWFDb250cm9sc0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhQ29udHJvbHM7DQogICAgICAgICBiYWNraW5n
T2JqZWN0LT5hcmlhQ29udHJvbHNFbGVtZW50cyhhcmlhQ29udHJvbHMpOw0KLSAgICAgICAgcmV0
dXJuIGNvbnZlcnRUb05TQXJyYXkoYXJpYUNvbnRyb2xzKTsNCisgICAgICAgIHJldHVybiBtYWtl
TlNBcnJheShhcmlhQ29udHJvbHMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNhYmxlQW5jZXN0b3JBdHRyaWJ1
dGVdKSB7DQpAQCAtMzQyOCwyMiArMzQzMyw2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORA0KICAgICB9KTsNCiB9DQogDQotLy8gRklYTUU6IE5vIHJlYXNvbiBmb3IgdGhp
cyB0byBiZSBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rpb247IGNhbiBnZXQgZG9jdW1lbnQg
ZnJvbSByYW5nZS4NCi0tIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihjb25zdCBTaW1wbGVS
YW5nZSYpcmFuZ2UNCi17DQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7DQotICAgIA0KLSAg
ICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7DQotICAg
IGlmICghZG9jdW1lbnQpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwg
MCk7DQotDQotICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxl
bWVudCgpOw0KLSAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkNCi0gICAgICAgIHJldHVybiBOU01h
a2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgcmV0dXJuIGNoYXJhY3RlclJhbmdlKG1h
a2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRlbnRzKCpkb2N1bWVudEVsZW1lbnQpLCByYW5n
ZSk7DQotfQ0KLQ0KIC0gKE5TSW50ZWdlcilfaW5kZXhGb3JUZXh0TWFya2VyOihBWFRleHRNYXJr
ZXJSZWYpbWFya2VyDQogew0KICAgICBpZiAoIW1hcmtlcikNCkBAIC0zNDYwLDcgKzM0NDksNyBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICBpZiAo
IXJhbmdlKQ0KICAgICAgICAgICAgICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCiANCi0gICAgICAg
ICAgICByZXR1cm4gW3Byb3RlY3RlZFNlbGYgX2NvbnZlcnRUb05TUmFuZ2U6KnJhbmdlXS5sb2Nh
dGlvbjsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TUmFuZ2UocmFuZ2UpLmxvY2F0aW9uOw0K
ICAgICAgICAgfQ0KIA0KICAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQpAQCAtMzgzNSw4ICsz
ODI0LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsN
CiAgICAgICAgIGJhY2tpbmdPYmplY3QtPmZpbmRNYXRjaGluZ09iamVjdHMoJmNyaXRlcmlhLCBy
ZXN1bHRzKTsNCiAgICAgICAgIGlmICh3aWRnZXRDaGlsZHJlbikNCi0gICAgICAgICAgICByZXR1
cm4gW3dpZGdldENoaWxkcmVuIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OmNvbnZlcnRU
b05TQXJyYXkocmVzdWx0cyldOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkocmVz
dWx0cyk7DQorICAgICAgICAgICAgcmV0dXJuIFt3aWRnZXRDaGlsZHJlbiBhcnJheUJ5QWRkaW5n
T2JqZWN0c0Zyb21BcnJheTptYWtlTlNBcnJheShyZXN1bHRzKV07DQorICAgICAgICByZXR1cm4g
bWFrZU5TQXJyYXkocmVzdWx0cyk7DQogICAgIH0NCiANCiAgICAgLy8gVGV4dE1hcmtlciBhdHRy
aWJ1dGVzLg0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tDQppbmRl
eCBkZDRlYjA5NmZlZTkuLmJhNDc0Zjk2YzBiNiAxMDA2NDQNCi0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0N
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRJT1MubW0NCkBAIC0xMDgsNiArMTA4LDcgQEAgdHlwZWRlZiB2b2lkICgq
QVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlm
aWNhdGlvbiwNCiAtIChpZClfYWNjZXNzaWJpbGl0eUxpc3RBbmNlc3RvcjsNCiAtIChpZClfYWNj
ZXNzaWJpbGl0eVBob3RvRGVzY3JpcHRpb247DQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlJ
bWFnZU92ZXJsYXlFbGVtZW50czsNCistIChOU1JhbmdlKWFjY2Vzc2liaWxpdHlWaXNpYmxlQ2hh
cmFjdGVyUmFuZ2U7DQogDQogLy8gVGV4dE1hcmtlciByZWxhdGVkDQogLSAoTlNBcnJheSAqKXRl
eHRNYXJrZXJSYW5nZTsNCkBAIC0zOTQsNiArMzk1LDkgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQ0KIA0KIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdEZXNjcmlwdGlv
bk9mQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQ0KIHsNCisgICAgaWYgKEpT
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoYXR0cmlidXRlLCAiQVhWaXNpYmxlQ2hhcmFjdGVy
UmFuZ2UiKSkNCisgICAgICAgIHJldHVybiBbTlNTdHJpbmdGcm9tUmFuZ2UoW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlXSkgY3JlYXRlSlNTdHJpbmdSZWZdOw0K
Kw0KICAgICByZXR1cm4gY3JlYXRlSlNTdHJpbmcoKTsNCiB9DQogDQo=
</data>
<flag name="commit-queue"
          id="470037"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444940</attachid>
            <date>2021-11-21 21:34:51 -0800</date>
            <delta_ts>2021-11-21 21:37:10 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>51566</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZDIwNDhjNGZhMmY2Li5kYzVjYTZlNzQ4MzcgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
NyBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11
bGF0b3IvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4NCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQ6
IEFkZGVkLg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdl
Lmh0bWw6IEFkZGVkLg0KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoN
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOg0KKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoNCisNCiAyMDIxLTExLTE5ICBLaWV0IEhv
ICA8dGhvMjJAYXBwbGUuY29tPg0KIA0KICAgICAgICAgSW50ZWdyYXRlIG1vdGlvbiBwYXRoIHRy
YW5zZm9ybXMgaW4gdHJhbnNmb3JtYXRpb24gcGlwZWxpbmUNCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwNCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjM5ZDMyZGJkMjAzMw0KLS0tIC9kZXYv
bnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1y
YW5nZS5odG1sDQpAQCAtMCwwICsxLDczIEBADQorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPg0KKzxodG1sPg0KKzxoZWFkPg0KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5IGlkPSJib2R5
Ij4NCisNCis8ZGl2IGlkPSJncm91cCI+DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCis8L2Rpdj4NCisNCis8c2NyaXB0Pg0K
Kw0KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVDaGFyYWN0ZXJSYW5n
ZSByZXR1cm5zIGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlmeWluZyBvYnNjdXJl
ZCBjb250ZW50LiIpOw0KKw0KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7DQorICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgiZ3JvdXAiKS5jaGlsZEF0SW5kZXgoMCk7DQorICAgICAgICBkZWJ1Zygi
VmlzaWJsZSByYW5nZTogIiArIHRleHQuc3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVl
KCJBWFZpc2libGVDaGFyYWN0ZXJSYW5nZSIpKTsNCisNCisgICAgICAgIHRlc3RSdW5uZXIuc2V0
Vmlld1NpemUoNTAwLCAyMDApOw0KKyAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2UgKDUwMCwg
MjAwKTogIiArIHRleHQuc3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlKCJBWFZpc2li
bGVDaGFyYWN0ZXJSYW5nZSIpKTsNCisNCisgICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9w
ID0gMjAwOw0KKyAgICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3U2l6ZSgyMDAsIDUwMCk7DQorICAg
ICAgICBkZWJ1ZygiVmlzaWJsZSByYW5nZSwgb2Zmc2V0OiAyMDAgKDIwMCwgNTAwKTogIiArIHRl
eHQuc3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlKCJBWFZpc2libGVDaGFyYWN0ZXJS
YW5nZSIpKTsNCisNCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncm91cCIpLnN0
eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsNCisgICAgfQ0KKw0KKzwvc2NyaXB0Pg0KKw0KKzwv
Ym9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9u
cw0KaW5kZXggYTQyYzcyOWYwN2ZmLi5hNGIxMDRlMDU3YmUgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucw0KKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMNCkBAIC0yMTE4LDcgKzIxMTgsNyBAQCB3ZWJraXQu
b3JnL2IvMTQ4ODA2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0
aWNvbC9tdWx0aWNvbC1zcA0KIGZhc3QvZG9tL2xpbmtpZnktcGhvbmUtbnVtYmVycy5odG1sIFsg
UGFzcyBdDQogDQogYWNjZXNzaWJpbGl0eS92aWRlby1lbGVtZW50LXVybC1hdHRyaWJ1dGUuaHRt
bCBbIFBhc3MgXQ0KLQ0KK2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRt
bCBbIFBhc3MgXQ0KIGFjY2Vzc2liaWxpdHkvYW5jZXN0b3ItY29tcHV0YXRpb24uaHRtbCBbIFBh
c3MgXQ0KIA0KICMgRW5hYmxlICJhcmlhLWN1cnJlbnQiIHRlc3RzIGZvciBpT1MuDQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFy
YWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2FjY2Vz
c2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0DQpuZXcgZmlsZSBt
b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi42NzgwM2RiODE3NzANCi0tLSAvZGV2L251
bGwNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUt
Y2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dA0KQEAgLTAsMCArMSwxMiBAQA0KK1RoaXMgdGVz
dHMgdGhhdCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgcmV0dXJucyBleHBlY3RlZCB2aXNpYmxlIHJh
bmdlcyB3aGlsZSBtb2RpZnlpbmcgb2JzY3VyZWQgY29udGVudC4NCisNCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuDQorDQorDQorVmlzaWJsZSByYW5nZTogTlNSYW5nZTogezAsIDM5MDB9DQor
VmlzaWJsZSByYW5nZSAoNTAwLCAyMDApOiBOU1JhbmdlOiB7MCwgMjcwfQ0KK1Zpc2libGUgcmFu
Z2UsIG9mZnNldDogMjAwICgyMDAsIDUwMCk6IE5TUmFuZ2U6IHswLCA3MzV9DQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQ0KKw0KK1RFU1QgQ09NUExFVEUNCisNCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMNCmluZGV4IDlhMDc0NTg3OTM1
NC4uYTVjMzFmZWM5ZjFmIDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zDQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMNCkBAIC02MDEsNiArNjAxLDExIEBAIGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctaW5zZXJ0LWh0bWwuaHRtbCBbIFBhc3MgVGltZW91dCBdDQogZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwgWyBGYWlsdXJlIF0NCiBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLXVuaWZpZWQtZW11bGF0aW9uLmh0bWwgWyBGYWlsdXJlIF0NCiANCisjIFNraXAgZHVl
IHRvIGxhY2sgb2YgRHVtcFJlbmRlclRyZWUgYEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvbUlk
ZW50aWZlcmAgaW1wbGVtZW50YXRpb24uDQorYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRp
Y2F0ZS1mb3ItYWRob2MtcmFkaW8tZ3JvdXBzLmh0bWwgWyBTa2lwIF0NCisjIFNraXAgZHVlIHRv
IGxhY2sgb2YgRHVtcFJlbmRlclRyZWUgYEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Rl
c2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZWAgaW1wbGVtZW50YXRpb24uDQorYWNjZXNzaWJpbGl0
eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIFsgU2tpcCBdDQorDQogIyA8cmRhcjovL3By
b2JsZW0vMjYwNTA5MjM+IFRoZSByZXN1bHQgaXMgcHJvYmFibHkgc3RpbGwgYSBwYXNzLCBidXQg
d2UgZG9uJ3QgaGF2ZSBhIHdheQ0KICMgdG8gaGF2ZSBwbGF0Zm9ybSBzcGVjaWZpYyByZXN1bHRz
IHRoYXQgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIFdLMSBhbmQgV0syLg0KIGFjY2Vzc2liaWxpdHkv
bWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbCBbIEZhaWx1cmUgXQ0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJh
bmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dA0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uY2RiYjhjNDIyZGE3DQotLS0gL2Rldi9udWxsDQorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rl
ci1yYW5nZS1leHBlY3RlZC50eHQNCkBAIC0wLDAgKzEsMTIgQEANCitUaGlzIHRlc3RzIHRoYXQg
dmlzaWJsZUNoYXJhY3RlclJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSByYW5nZXMgd2hp
bGUgbW9kaWZ5aW5nIG9ic2N1cmVkIGNvbnRlbnQuDQorDQorT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLg0KKw0KKw0KK1Zpc2libGUgcmFuZ2U6IE5TUmFuZ2U6IHswLCA0MjA1fQ0KK1Zpc2libGUg
cmFuZ2UgKDUwMCwgMjAwKTogTlNSYW5nZTogezAsIDM2MH0NCitWaXNpYmxlIHJhbmdlLCBvZmZz
ZXQ6IDIwMCAoMjAwLCA1MDApOiBOU1JhbmdlOiB7MCwgNjkwfQ0KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUNCisNCitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vVGVzdEV4cGVjdGF0aW9ucw0KaW5kZXggYTcxZTQzMGViOGU5Li4wZmI5YzM5OTExMGIg
MTAwNjQ0DQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucw0K
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMNCkBAIC0yNzgs
NiArMjc4LDcgQEAgYWNjZXNzaWJpbGl0eS9hcmlhLWxpc3Rib3gtY2xlYXItc2VsZWN0aW9uLWNy
YXNoLmh0bWwgWyBTa2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2xpc3Rib3gtY2xlYXItc2VsZWN0aW9u
Lmh0bWwgWyBTa2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2VtYmVkZGVkLWltYWdlLWRlc2NyaXB0aW9u
Lmh0bWwgWyBTa2lwIF0NCiBhY2Nlc3NpYmlsaXR5L2ltZy1uby1hbHQtbm90LWlnbm9yZWQtd2l0
aC10aXRsZS5odG1sIFsgU2tpcCBdDQorYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1y
YW5nZS5odG1sIFsgU2tpcCBdDQogDQogIyBOZWVkIHRvIGltcGxlbWVudCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpoYXNEb2N1bWVudFJvbGVBbmNlc3RvcigpLCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpoYXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yKCksDQogIyBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc0luRGVzY3JpcHRpb25MaXN0RGV0YWlsKCksIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzSW5EZXNjcmlwdGlvbkxpc3RUZXJtKCksIGFuZA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KaW5kZXggOGJlYTRmNmZm
ZDU1Li5iNmMwZjcwMGMzZTcgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cN
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KQEAgLTEsMyArMSw1MSBAQA0KKzIwMjEt
MTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4NCisNCisgICAgICAg
IEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4dCBhbmQgZnJhbWUg
b2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLg0KKw0KKyAgICAgICAgSW1wbGVtZW50IHZpc2libGVDaGFyYWN0ZXJSYW5nZSBmb3Ig
c3RhdGljIHRleHQgZWxlbWVudHMgc28gdGhhdCBCb29rcyBjYW4gZGV0ZXJtaW5lIHRoZSB2aXNp
YmxlDQorICAgICAgICBjb250ZW50IG9uIGEgcGFnZS4NCisNCisgICAgICAgIFRlc3Q6IGFjY2Vz
c2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRtbA0KKw0KKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOg0KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSBjb25zdCk6DQorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dW5vYnNjdXJlZENvbnRlbnRSZWN0IGNv
bnN0KToNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6DQor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOg0K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlWaXNpYmxlQ29udGVudFJlY3RdKToNCisgICAgICAgIChhY2Nlc3NpYmxlRWxlbWVu
dHNGb3JPYmplY3RzKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlGaW5kTWF0Y2hpbmdPYmplY3RzOl0pOg0KKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcG9zaXRpb25Gb3JUZXh0TWFya2VyOl0pOg0KKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlckZvclBvc2l0aW9u
Ol0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3RyaW5nRm9y
UmFuZ2U6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBmcmFt
ZUZvclJhbmdlOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YWNjZXNzaWJpbGl0eU1hdGhSYWRpY2FuZF0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb05TUmFuZ2U6XSk6IERlbGV0ZWQuDQorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfY29udmVydFRvRE9NUmFuZ2U6XSk6IERl
bGV0ZWQuDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuY3BwOg0KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnZpc2libGVD
aGFyYWN0ZXJSYW5nZSBjb25zdCk6DQorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6dW5vYnNjdXJlZENvbnRlbnRSZWN0IGNvbnN0KToNCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaDoNCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOg0K
KyAgICAgICAgKG1ha2VOU0FycmF5KToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlXSk6DQorICAg
ICAgICAobWFrZU5TUmFuZ2UpOg0KKyAgICAgICAgKG1ha2VET01SYW5nZSk6DQorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgYmFzZVVwZGF0ZUJhY2tpbmdTdG9y
ZV0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGxpbmVS
ZWN0c0FuZFRleHRdKToNCisgICAgICAgIChjb252ZXJ0VG9OU0FycmF5KTogRGVsZXRlZC4NCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW06DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjaGlsZHJl
blZlY3RvckFycmF5XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBfaW5kZXhGb3JUZXh0TWFya2VyOl0pOg0KKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OmZvclBhcmFtZXRlcjpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIF9jb252ZXJ0VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0KKw0KIDIwMjEtMTEtMTkgIEtpZXQg
SG8gIDx0aG8yMkBhcHBsZS5jb20+DQogDQogICAgICAgICBJbXBsZW1lbnQgcGFyc2luZyBhbmQg
YW5pbWF0aW9uIHN1cHBvcnQgZm9yIHJheSgpIHNoYXBlIGFjY2VwdGVkIGJ5IG9mZnNldC1wYXRo
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHANCmluZGV4IDkzODQ4ZTFjYWI3Ni4uNjc0NmY2Y2JiNDhmIDEwMDY0NA0KLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcA0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcA0K
QEAgLTcwNCw2ICs3MDQsNTIgQEAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJp
bGl0eU9iamVjdDo6ZWxlbWVudFJhbmdlKCkgY29uc3QNCiAgICAgcmV0dXJuIEFYT2JqZWN0Q2Fj
aGU6OnJhbmdlRm9yTm9kZUNvbnRlbnRzKCpub2RlKTsNCiB9DQogDQorc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkg
Y29uc3QNCit7DQorICAgIGF1dG8gcmFuZ2UgPSBlbGVtZW50UmFuZ2UoKTsNCisgICAgaWYgKCFy
YW5nZSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIGF1dG8gY29udGVu
dFJlY3QgPSB1bm9ic2N1cmVkQ29udGVudFJlY3QoKTsNCisgICAgYXV0byBlbGVtZW50UmVjdCA9
IHNuYXBwZWRJbnRSZWN0KHRoaXMtPmVsZW1lbnRSZWN0KCkpOw0KKyAgICBpZiAoIWNvbnRlbnRS
ZWN0LmludGVyc2VjdHMoZWxlbWVudFJlY3QpKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsNCisNCisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBzdGFydEJvdW5kYXJ5ID0g
cmFuZ2UtPnN0YXJ0Ow0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IGVuZEJvdW5k
YXJ5ID0gcmFuZ2UtPmVuZDsNCisNCisgICAgLy8gT3JpZ2luIGlzbid0IGNvbnRhaW5lZCBpbiB2
aXNpYmxlIHJlY3QsIHN0YXJ0IG1vdmluZyBmb3J3YXJkIGJ5IGxpbmUuDQorICAgIHdoaWxlICgh
Y29udGVudFJlY3QuY29udGFpbnMoZWxlbWVudFJlY3QubG9jYXRpb24oKSkpIHsNCisgICAgICAg
IGF1dG8gbmV4dExpbmVQb3NpdGlvbiA9IG5leHRMaW5lRW5kUG9zaXRpb24oVmlzaWJsZVBvc2l0
aW9uKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigqc3RhcnRCb3VuZGFyeSkpKTsNCisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVzdFN0YXJ0Qm91bmRhcnkgPSBtYWtl
Qm91bmRhcnlQb2ludChuZXh0TGluZVBvc2l0aW9uKTsNCisgICAgICAgIGlmICghdGVzdFN0YXJ0
Qm91bmRhcnkgfHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RTdGFydEJvdW5kYXJ5KSkNCisgICAg
ICAgICAgICBicmVhazsNCisgICAgICAgIA0KKyAgICAgICAgc3RhcnRCb3VuZGFyeSA9IHRlc3RT
dGFydEJvdW5kYXJ5Ow0KKyAgICAgICAgZWxlbWVudFJlY3QgPSBib3VuZHNGb3JSYW5nZShTaW1w
bGVSYW5nZSgqc3RhcnRCb3VuZGFyeSwgcmFuZ2UtPmVuZCkpOw0KKyAgICAgICAgaWYgKGVsZW1l
bnRSZWN0LmlzRW1wdHkoKSkNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKw0KKyAgICAv
LyBFbmQgaXNuJ3QgY29udGFpbmVkIGluIHZpc2libGUgcmVjdCwgc3RhcnQgbW92aW5nIGJhY2t3
YXJkcyBieSBsaW5lLg0KKyAgICB3aGlsZSAoIWNvbnRlbnRSZWN0LmNvbnRhaW5zKGVsZW1lbnRS
ZWN0LmxvY2F0aW9uKCkgKyBlbGVtZW50UmVjdC5zaXplKCkpKSB7DQorICAgICAgICBhdXRvIHBy
ZXZpb3VzTGluZVBvc2l0aW9uID0gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihWaXNpYmxlUG9z
aXRpb24obWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKCplbmRCb3VuZGFyeSkpKTsNCisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gdGVzdEVuZEJvdW5kYXJ5ID0gbWFrZUJv
dW5kYXJ5UG9pbnQocHJldmlvdXNMaW5lUG9zaXRpb24pOw0KKyAgICAgICAgaWYgKCF0ZXN0RW5k
Qm91bmRhcnkgfHwgIWNvbnRhaW5zKCpyYW5nZSwgKnRlc3RFbmRCb3VuZGFyeSkpDQorICAgICAg
ICAgICAgYnJlYWs7DQorICAgICAgICANCisgICAgICAgIGVuZEJvdW5kYXJ5ID0gdGVzdEVuZEJv
dW5kYXJ5Ow0KKyAgICAgICAgZWxlbWVudFJlY3QgPSBib3VuZHNGb3JSYW5nZSh7ICpzdGFydEJv
dW5kYXJ5LCAqZW5kQm91bmRhcnkgfSk7DQorICAgICAgICBpZiAoZWxlbWVudFJlY3QuaXNFbXB0
eSgpKQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAgIGlmICghc3RhcnRCb3Vu
ZGFyeSB8fCAhZW5kQm91bmRhcnkpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KKyAg
ICANCisgICAgcmV0dXJuIFNpbXBsZVJhbmdlKCpzdGFydEJvdW5kYXJ5LCAqZW5kQm91bmRhcnkp
Ow0KK30NCisNCiBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpmaW5kVGV4dFJhbmdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hTdHJpbmdzLCBjb25z
dCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbikgY29uc3QNCiB7DQogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZvdW5k
Ow0KQEAgLTMxODIsNiArMzIyOCwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9s
bFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgSW50UmVjdCYgc3ViZm9jdQ0KICAgICAg
ICAgc2Nyb2xsUGFyZW50LT5zY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKG5ld1N1YmZv
Y3VzKTsNCiB9DQogDQorRmxvYXRSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnVub2JzY3VyZWRD
b250ZW50UmVjdCgpIGNvbnN0DQorew0KKyAgICBhdXRvIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1l
bnQoKTsNCisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkNCisgICAgICAg
IHJldHVybiB7IH07DQorICAgIHJldHVybiBGbG9hdFJlY3Qoc25hcHBlZEludFJlY3QoZG9jdW1l
bnQtPnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpKTsNCit9DQorDQogdm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb2ludCkgY29uc3QNCiB7DQogICAgIC8vIFNlYXJjaCB1cCB0aGUgcGFyZW50IGNoYWluIGFu
ZCBjcmVhdGUgYSB2ZWN0b3Igb2YgYWxsIHNjcm9sbGFibGUgcGFyZW50IG9iamVjdHMNCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oDQpp
bmRleCAyMWZmNGEyOGE1YTYuLjU5Y2VhNGY0YjM5NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oDQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KQEAgLTgwOCw3ICs4MDgs
NyBAQCBwcm90ZWN0ZWQ6DQogICAgIHZvaWQgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7DQog
ICAgIHZvaWQgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsNCiAgICAgdmlydHVh
bCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0NCi0N
CisgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOw0K
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByYWRpb0dyb3VwQW5jZXN0b3IoKSBjb25zdDsNCiAN
CiAgICAgYm9vbCBhbGxvd3NUZXh0UmFuZ2VzKCkgY29uc3Q7DQpAQCAtODIxLDYgKzgyMSw3IEBA
IHByaXZhdGU6DQogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlT2ZTdHJpbmdD
bG9zZXN0VG9SYW5nZUluRGlyZWN0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiwgQWNjZXNzaWJpbGl0
eVNlYXJjaERpcmVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsNCiAgICAgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VsZWN0aW9uUmFuZ2UoKSBjb25zdDsNCiAgICAgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZmluZFRleHRSYW5nZShjb25zdCBWZWN0b3I8U3RyaW5n
PiYgc2VhcmNoU3RyaW5ncywgY29uc3QgU2ltcGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5
U2VhcmNoVGV4dERpcmVjdGlvbikgY29uc3Q7DQorICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IHZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KIHByb3RlY3Rl
ZDogLy8gRklYTUU6IE1ha2UgdGhlIGRhdGEgbWVtYmVycyBwcml2YXRlLg0KICAgICBib29sIGNo
aWxkcmVuSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuSW5pdGlhbGl6ZWQ7
IH0NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQppbmRleCBlMTU5NjIxYzg1NDkuLjE2NzlmMDFjNTFk
ZiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdEludGVyZmFjZS5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaA0KQEAgLTk4OCw2ICs5ODgsNyBAQCBwdWJsaWM6
DQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpID0gMDsNCiAgICAgdmlydHVh
bCBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBGbG9h
dFJlY3QgY29udmVydEZyYW1lVG9TcGFjZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5
Q29udmVyc2lvblNwYWNlKSBjb25zdCA9IDA7DQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IHVub2Jz
Y3VyZWRDb250ZW50UmVjdCgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
Q2hlY2tlZFN0YXRlKCkgY29uc3QgPSAwOw0KICAgICANCiAgICAgLy8gSW4gYSBtdWx0aS1zZWxl
Y3QgbGlzdCwgbWFueSBpdGVtcyBjYW4gYmUgc2VsZWN0ZWQgYnV0IG9ubHkgb25lIGlzIGFjdGl2
ZSBhdCBhIHRpbWUuDQpAQCAtOTk3LDYgKzk5OCw3IEBAIHB1YmxpYzoNCiAgICAgdmlydHVhbCBi
b29sIGhhc0l0YWxpY0ZvbnQoKSBjb25zdCA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBoYXNNaXNz
cGVsbGluZygpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBtaXNzcGVsbGluZ1JhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJp
bGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3QgPSAwOw0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IHZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0ID0gMDsNCiAgICAg
dmlydHVhbCBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29s
IGhhc1NhbWVGb250KGNvbnN0IEFYQ29yZU9iamVjdCYpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVh
bCBib29sIGhhc1NhbWVGb250Q29sb3IoY29uc3QgQVhDb3JlT2JqZWN0JikgY29uc3QgPSAwOw0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCmluZGV4IDVlMGM4YzhlYmM2
Ny4uOTg5MzQxYWZjMjEyIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0NCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tDQpAQCAtNTIsNiArNTIsNyBAQA0KICNpbXBvcnQgIlNWR0VsZW1lbnRJbmxpbmVzLmgiDQog
I2ltcG9ydCAiU1ZHTmFtZXMuaCINCiAjaW1wb3J0ICJTZWxlY3Rpb25HZW9tZXRyeS5oIg0KKyNp
bXBvcnQgIlNpbXBsZVJhbmdlLmgiDQogI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiDQogI2ltcG9y
dCAiV0FLU2Nyb2xsVmlldy5oIg0KICNpbXBvcnQgIldBS1dpbmRvdy5oIg0KQEAgLTE2OTQsMTIg
KzE2OTUsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJp
bmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmluZykNCiB7DQogICAgIGlmICghW3NlbGYgX3ByZXBh
cmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQogICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCi0gICAg
DQotICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsN
Ci0gICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkNCi0gICAgICAgIHJldHVy
biBDR1JlY3RaZXJvOw0KLSAgICBhdXRvIHJlY3QgPSBGbG9hdFJlY3Qoc25hcHBlZEludFJlY3Qo
ZG9jdW1lbnQtPnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpKTsNCi0gICAgcmV0dXJu
IFtzZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpyZWN0IHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJz
aW9uU3BhY2U6OlNjcmVlbl07DQorICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6
c2VsZi5heEJhY2tpbmdPYmplY3QtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpIHNwYWNlOkFjY2Vz
c2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl07DQogfQ0KIA0KIC8vIFRoZSAiY2VudGVy
IHBvaW50IiBpcyB3aGVyZSBWb2ljZU92ZXIgd2lsbCAicHJlc3MiIGFuIG9iamVjdC4gVGhpcyBt
YXkgbm90IGJlIHRoZSBhY3R1YWwNCkBAIC0xOTE1LDcgKzE5MTEsNyBAQCBzdGF0aWMgTlNBcnJh
eSAqYWNjZXNzaWJsZUVsZW1lbnRzRm9yT2JqZWN0cyhjb25zdCBBWENvcmVPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaA0KICAgICAgICAgfSk7DQogICAgIH0NCiANCi0gICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkoYWNjZXNzaWJsZUVsZW1lbnRzKTsNCisgICAgcmV0dXJuIG1ha2VOU0FycmF5KGFj
Y2Vzc2libGVFbGVtZW50cyk7DQogfQ0KIA0KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5RGV0
YWlsc0VsZW1lbnRzDQpAQCAtMjEwNCw3ICsyMTAwLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCog
cmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcpDQogICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hD
cml0ZXJpYSBjcml0ZXJpYSA9IGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFBy
ZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUocGFyYW1ldGVycyk7DQogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOw0KICAgICBz
ZWxmLmF4QmFja2luZ09iamVjdC0+ZmluZE1hdGNoaW5nT2JqZWN0cygmY3JpdGVyaWEsIHJlc3Vs
dHMpOw0KLSAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShyZXN1bHRzKTsNCisgICAgcmV0dXJu
IG1ha2VOU0FycmF5KHJlc3VsdHMpOw0KIH0NCiANCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlNb2Rp
ZnlTZWxlY3Rpb246KFRleHRHcmFudWxhcml0eSlncmFudWxhcml0eSBpbmNyZWFzZTooQk9PTClp
bmNyZWFzZQ0KQEAgLTIyMDksNDcgKzIyMDUsNiBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgcmV0dXJuIHJhbmdlID8gW3NlbGYgY29u
dGVudEZvclNpbXBsZVJhbmdlOipyYW5nZSBhdHRyaWJ1dGVkOmF0dHJpYnV0ZWRdIDogbmlsOw0K
IH0NCiANCi0vLyBGSVhNRTogTm8gcmVhc29uIGZvciB0aGlzIHRvIGJlIGEgbWV0aG9kIGluc3Rl
YWQgb2YgYSBmdW5jdGlvbi4NCi0tIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihjb25zdCBT
aW1wbGVSYW5nZSYpcmFuZ2UNCi17DQotICAgIGF1dG8mIGRvY3VtZW50ID0gcmFuZ2Uuc3RhcnQu
ZG9jdW1lbnQoKTsNCi0gICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOw0KLSAgICBp
ZiAoIWZyYW1lKQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0K
LQ0KLSAgICBhdXRvKiByb290RWRpdGFibGVFbGVtZW50ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCi0gICAgYXV0byogc2NvcGUgPSByb290
RWRpdGFibGVFbGVtZW50ID8gcm9vdEVkaXRhYmxlRWxlbWVudCA6IGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudCgpOw0KLSAgICBpZiAoIXNjb3BlKQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdl
KE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICAvLyBNb3VzZSBldmVudHMgbWF5IGNhdXNlIFRTTSB0
byBhdHRlbXB0IHRvIGNyZWF0ZSBhbiBOU1JhbmdlIGZvciBhIHBvcnRpb24gb2YgdGhlIHZpZXcN
Ci0gICAgLy8gdGhhdCBpcyBub3QgaW5zaWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lvbi4g
VGhlc2UgY2hlY2tzIGVuc3VyZSB3ZSBkb24ndCBwcm9kdWNlDQotICAgIC8vIHBvdGVudGlhbGx5
IGludmFsaWQgZGF0YSB3aGVuIHJlc3BvbmRpbmcgdG8gc3VjaCByZXF1ZXN0cy4NCi0gICAgaWYg
KCFzY29wZS0+Y29udGFpbnMocmFuZ2Uuc3RhcnQuY29udGFpbmVyLnB0cigpKSB8fCAhc2NvcGUt
PmNvbnRhaW5zKHJhbmdlLmVuZC5jb250YWluZXIucHRyKCkpKQ0KLSAgICAgICAgcmV0dXJuIE5T
TWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICByZXR1cm4gTlNNYWtlUmFuZ2UoY2hh
cmFjdGVyQ291bnQoeyB7ICpzY29wZSwgMCB9LCByYW5nZS5zdGFydCB9KSwgY2hhcmFjdGVyQ291
bnQocmFuZ2UpKTsNCi19DQotDQotLSAoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4pX2NvbnZl
cnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlDQotew0KLSAgICBpZiAocmFuZ2UubG9jYXRpb24g
PT0gTlNOb3RGb3VuZCkNCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQotDQotICAgIC8v
IG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlu
cHV0IG1ldGhvZHMgdGhhdA0KLSAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29u
dGFpbmluZyB0aGUgc2VsZWN0aW9uDQotICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNl
IG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdA0K
LSAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlz
IHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMNCi0gICAgLy8gdG8gdXNlIHRoZSByb290IGVk
aXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBi
YXNlLg0KLSAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNv
bnRleHQuDQotICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1l
bnQoKTsNCi0gICAgYXV0byBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCi0gICAgYXV0byBzY29w
ZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxl
bWVudCgpOw0KLSAgICBpZiAoIXNjb3BlKQ0KLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsN
Ci0NCi0gICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMoKnNjb3BlKSwgcmFuZ2UpOw0KLX0NCiANCiAvLyBUaGlzIG1ldGhvZCBpcyBp
bnRlbmRlZCB0byB0YWtlIGEgdGV4dCBtYXJrZXIgcmVwcmVzZW50aW5nIGEgVmlzaWJsZVBvc2l0
aW9uIGFuZCBjb252ZXJ0IGl0DQogLy8gaW50byBhIG5vcm1hbGl6ZWQgbG9jYXRpb24gd2l0aGlu
IHRoZSBkb2N1bWVudC4NCkBAIC0yMjY3LDcgKzIyMjIsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0
KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBj
YWNoZS0+cmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNoYXJhY3Rlck9mZnNldCwg
Y2hhcmFjdGVyT2Zmc2V0KTsNCiAgICAgICAgIGlmICghcmFuZ2UpDQogICAgICAgICAgICAgcmV0
dXJuIE5TTm90Rm91bmQ7DQotICAgICAgICByZXR1cm4gW3NlbGYgX2NvbnZlcnRUb05TUmFuZ2U6
KnJhbmdlXS5sb2NhdGlvbjsNCisgICAgICAgIHJldHVybiBtYWtlTlNSYW5nZShyYW5nZSkubG9j
YXRpb247DQogICAgIH0NCiAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQogfQ0KQEAgLTIzNDYsNyAr
MjMwMSw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2
aWV3KQ0KICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KICAgICAg
ICAgcmV0dXJuIG5pbDsNCiANCi0gICAgYXV0byByYW5nZSA9IFtzZWxmIF9jb252ZXJ0VG9ET01S
YW5nZTpOU01ha2VSYW5nZShwb3NpdGlvbiwgMCldOw0KKyAgICBhdXRvIHJhbmdlID0gbWFrZURP
TVJhbmdlKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpLCBOU01ha2VSYW5nZShwb3Np
dGlvbiwgMCkpOw0KICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiANCkBA
IC0yNDE0LDcgKzIzNjksNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXco
V0FLVmlldyogdmlldykNCiB7DQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5
Q2FsbF0pDQogICAgICAgICByZXR1cm4gbmlsOw0KLSAgICBhdXRvIHdlYlJhbmdlID0gW3NlbGYg
X2NvbnZlcnRUb0RPTVJhbmdlOnJhbmdlXTsNCisgICAgYXV0byB3ZWJSYW5nZSA9IG1ha2VET01S
YW5nZShzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKSwgcmFuZ2UpOw0KICAgICBpZiAo
IXdlYlJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiAgICAgcmV0dXJuIHNlbGYuYXhCYWNr
aW5nT2JqZWN0LT5zdHJpbmdGb3JSYW5nZSgqd2ViUmFuZ2UpOw0KQEAgLTI2MDAsNiArMjU1NSwx
NyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykN
CiAgICAgcmV0dXJuIFtzZWxmIHByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OnN0YXJ0
XTsNCiB9DQogDQorLSAoQ0dSZWN0KWZyYW1lRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UNCit7DQor
ICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQorICAgICAgICByZXR1
cm4gQ0dSZWN0WmVybzsNCisgICAgYXV0byB3ZWJSYW5nZSA9IG1ha2VET01SYW5nZShzZWxmLmF4
QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKSwgcmFuZ2UpOw0KKyAgICBpZiAoIXdlYlJhbmdlKQ0K
KyAgICAgICAgcmV0dXJuIENHUmVjdFplcm87DQorICAgIGF1dG8gcmVjdCA9IHNlbGYuYXhCYWNr
aW5nT2JqZWN0LT5ib3VuZHNGb3JSYW5nZSgqd2ViUmFuZ2UpOw0KKyAgICByZXR1cm4gW3NlbGYg
Y29udmVydFJlY3RUb1NwYWNlOnJlY3Qgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFj
ZTo6U2NyZWVuXTsNCit9DQorDQogLy8gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gcmV0dXJu
IHRoZSBib3VuZHMgb2YgYSB0ZXh0IG1hcmtlciByYW5nZSBpbiBzY3JlZW4gY29vcmRpbmF0ZXMu
DQogLSAoQ0dSZWN0KWZyYW1lRm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKilhcnJheQ0KIHsNCkBA
IC0yOTMxLDcgKzI4OTcsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXco
V0FLVmlldyogdmlldykNCiAgICAgICAgIHJldHVybiBuaWw7DQogDQogICAgIGF1dG8gcmFkaWNh
bmQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+bWF0aFJhZGljYW5kKCk7DQotICAgIHJldHVybiBy
YWRpY2FuZCA/IGNvbnZlcnRUb05TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCisgICAgcmV0dXJu
IHJhZGljYW5kID8gbWFrZU5TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCiB9DQogDQogLSAoV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKilhY2Nlc3NpYmlsaXR5TWF0aE51bWVyYXRvck9i
amVjdA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCmluZGV4IDExYTc5YjEyMTcyZC4uMzY5
NTJmOTQwOGZiIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQpAQCAtOTkyLDYgKzk5
MiwxMyBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpDQogICAg
ICAgICB0cmVlLT5hcHBseVBlbmRpbmdDaGFuZ2VzKCk7DQogfQ0KIA0KK3N0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNv
bnN0DQorew0KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOw0KKyAgICBhdXRvKiBheE9iamVj
dCA9IGFzc29jaWF0ZWRBWE9iamVjdCgpOw0KKyAgICByZXR1cm4gYXhPYmplY3QgPyBheE9iamVj
dC0+dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgOiBzdGQ6Om51bGxvcHQ7DQorfQ0KKw0KIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnJhbmdlRm9yUGxhaW5UZXh0
UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmIGF4UmFuZ2UpIGNvbnN0DQogew0KICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOw0KQEAgLTE0NzAsNiArMTQ3NywxNSBAQCB2b2lkIEFYSXNvbGF0
ZWRPYmplY3Q6OnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBv
c2l0aW9uUmFuZw0KICAgICAgICAgb2JqZWN0LT5zZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJh
bmdlKHZpc2libGVQb3NpdGlvblJhbmdlKTsNCiB9DQogDQorRmxvYXRSZWN0IEFYSXNvbGF0ZWRP
YmplY3Q6OnVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0DQorew0KKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPEZsb2F0UmVjdD4oW3RoaXNd
ICgpIC0+IEZsb2F0UmVjdCB7DQorICAgICAgICBpZiAoYXV0byogb2JqZWN0ID0gYXNzb2NpYXRl
ZEFYT2JqZWN0KCkpDQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+dW5vYnNjdXJlZENvbnRl
bnRSZWN0KCk7DQorICAgICAgICByZXR1cm4geyB9Ow0KKyAgICB9KTsNCit9DQorDQogc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudFJhbmdlKCkgY29u
c3QNCiB7DQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7DQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5oDQppbmRleCAzYjRlZWExZmJiNTguLmJhNjNkYzI3MjFkMiAxMDA2NDQNCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaA0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5oDQpAQCAtNDQxLDkgKzQ0MSwxMSBAQCBwcml2YXRlOg0KICAgICBBWENvcmVPYmpl
Y3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZTsNCiAgICAgaW50IGxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsNCiAgICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0
UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYp
IGNvbnN0IG92ZXJyaWRlOw0KKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiB2aXNpYmxl
Q2hhcmFjdGVyUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCiAgICAgaW50IGluZGV4KGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOw0KICAgICB2b2lkIGxpbmVCcmVha3MoVmVj
dG9yPGludD4mKSBjb25zdCBvdmVycmlkZTsNCi0NCisgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRD
b250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOw0KKyAgICANCiAgICAgLy8gQXR0cmlidXRlIHNl
dHRlcnMuDQogICAgIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgb3ZlcnJpZGU7DQogICAgIHZv
aWQgc2V0SXNFeHBhbmRlZChib29sKSBvdmVycmlkZTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZS5oDQppbmRleCBlZWEzZTY5ZGVkOTMuLmFjMmJkYmZlMmFjNSAxMDA2NDQN
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaA0KQEAgLTM0LDYgKzM0LDcgQEAN
CiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogc3RydWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0
ZXJpYTsNCitjbGFzcyBEb2N1bWVudDsNCiBjbGFzcyBJbnRSZWN0Ow0KIGNsYXNzIEZsb2F0UG9p
bnQ7DQogY2xhc3MgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ7DQpAQCAtMTExLDExICsxMTIs
MTUgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRl
eHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWwNCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0
eU1hdGhQb3N0c2NyaXB0UGFpcnM7DQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlNYXRoUHJl
c2NyaXB0UGFpcnM7DQogDQorLSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3Rl
clJhbmdlOw0KKw0KIC0gKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKiliYXNlQWNjZXNz
aWJpbGl0eVJlc29sdmVkRWRpdGluZ1N0eWxlczsNCiANCiBleHRlcm4gV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVNlYXJjaENyaXRlcmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJj
aFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoY29uc3QgTlNEaWN0aW9uYXJ5ICopOw0K
IA0KLWV4dGVybiBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29y
ZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7DQorZXh0ZXJuIE5TQXJyYXkg
Km1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJik7DQorZXh0ZXJuIE5TUmFuZ2UgbWFrZU5TUmFuZ2Uoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4pOw0KK2V4dGVybiBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiBtYWtlRE9NUmFuZ2UoV2ViQ29yZTo6RG9jdW1lbnQqLCBOU1JhbmdlKTsN
CiANCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkNCiAtIChpZClfYWNjZXNzaWJpbGl0eVdlYkRv
Y3VtZW50VmlldzsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0NCmlu
ZGV4IDFlNTY5MWQxOWY5Mi4uNWY3YWQyODY5ZTc0IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1t
DQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UubW0NCkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIE5TQXJyYXkg
KmNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGkNCiAgICAgfSkuYXV0b3JlbGVhc2UoKTsNCiB9DQogDQotTlNBcnJheSAqY29udmVy
dFRvTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgY2hpbGRyZW4pDQorTlNBcnJheSAqbWFrZU5TQXJyYXkoY29uc3QgV2ViQ29y
ZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKQ0K
IHsNCiAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoY2hpbGRyZW4sIFtdIChjb25zdCBhdXRvJiBj
aGlsZCkgLT4gaWQgew0KICAgICAgICAgYXV0byB3cmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsN
CkBAIC00NjIsNiArNDYyLDI3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFj
ZUZ1bmN0aW9uKFBhdGhDb252ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uDQogICAgIHJldHVy
biBjb252ZXJ0ZWRQYXRoLmF1dG9yZWxlYXNlKCk7DQogfQ0KIA0KKy8vIERldGVybWluZSB0aGUg
dmlzaWJsZSByYW5nZSBieSBjaGVja2luZyBpbnRlcnNlY3Rpb24gb2YgdW5vYnNjdXJlZENvbnRl
bnRSZWN0IGFuZCBhIHJhbmdlIG9mIHRleHQgYnkNCisvLyBhZHZhbmNpbmcgZm9yd2FyZCBieSBs
aW5lIGZyb20gdG9wIGFuZCBiYWNrd2FyZHMgYnkgbGluZSBmcm9tIHRoZSBib3R0b20sIHVudGls
IHdlIGhhdmUgYSB2aXNpYmxlIHJhbmdlLg0KKy0gKE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVZpc2li
bGVDaGFyYWN0ZXJSYW5nZQ0KK3sNCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZl
VmFsdWVGcm9tTWFpblRocmVhZDxOU1JhbmdlPihbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihz
ZWxmKV0gKCkgLT4gTlNSYW5nZSB7DQorICAgICAgICBhdXRvIGJhY2tpbmdPYmplY3QgPSBwcm90
ZWN0ZWRTZWxmLmdldCgpLmJhc2VVcGRhdGVCYWNraW5nU3RvcmU7DQorICAgICAgICBpZiAoIWJh
Y2tpbmdPYmplY3QpDQorICAgICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQs
IDApOw0KKw0KKyAgICAgICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlTlNSYW5nZShiYWNraW5n
T2JqZWN0LT5lbGVtZW50UmFuZ2UoKSk7DQorICAgICAgICBpZiAoZWxlbWVudFJhbmdlLmxvY2F0
aW9uID09IE5TTm90Rm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRSYW5nZTsNCisg
ICAgICAgIA0KKyAgICAgICAgYXV0byB2aXNpYmxlUmFuZ2UgPSBtYWtlTlNSYW5nZShiYWNraW5n
T2JqZWN0LT52aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSk7DQorICAgICAgICBpZiAodmlzaWJsZVJh
bmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIHZpc2libGVS
YW5nZTsNCisNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZSh2aXNpYmxlUmFuZ2UubG9jYXRp
b24gLSBlbGVtZW50UmFuZ2UubG9jYXRpb24sIHZpc2libGVSYW5nZS5sZW5ndGgpOw0KKyAgICB9
KTsNCit9DQorDQogLSAoaWQpX2FjY2Vzc2liaWxpdHlXZWJEb2N1bWVudFZpZXcNCiB7DQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOw0KQEAgLTYyMyw2ICs2NDQsNTAgQEAgc3RhdGljIHZvaWQg
QVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBh
dHRyU3RyaW5nLA0KICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldExhbmd1YWdlKGF0dHJTdHJpbmcs
IG5vZGUtPnJlbmRlcmVyKCksIGF0dHJTdHJpbmdSYW5nZSk7DQogfQ0KIA0KKw0KK05TUmFuZ2Ug
bWFrZU5TUmFuZ2Uoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2UpDQorew0KKyAgICBp
ZiAoIXJhbmdlKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0K
KyAgICANCisgICAgYXV0byYgZG9jdW1lbnQgPSByYW5nZS0+c3RhcnQuZG9jdW1lbnQoKTsNCisg
ICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOw0KKyAgICBpZiAoIWZyYW1lKQ0KKyAg
ICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICBhdXRvKiBy
b290RWRpdGFibGVFbGVtZW50ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsNCisgICAgYXV0byogc2NvcGUgPSByb290RWRpdGFibGVFbGVtZW50
ID8gcm9vdEVkaXRhYmxlRWxlbWVudCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOw0KKyAg
ICBpZiAoIXNjb3BlKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDAp
Ow0KKw0KKyAgICAvLyBNb3VzZSBldmVudHMgbWF5IGNhdXNlIFRTTSB0byBhdHRlbXB0IHRvIGNy
ZWF0ZSBhbiBOU1JhbmdlIGZvciBhIHBvcnRpb24gb2YgdGhlIHZpZXcNCisgICAgLy8gdGhhdCBp
cyBub3QgaW5zaWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lvbi4gVGhlc2UgY2hlY2tzIGVu
c3VyZSB3ZSBkb24ndCBwcm9kdWNlDQorICAgIC8vIHBvdGVudGlhbGx5IGludmFsaWQgZGF0YSB3
aGVuIHJlc3BvbmRpbmcgdG8gc3VjaCByZXF1ZXN0cy4NCisgICAgaWYgKCFzY29wZS0+Y29udGFp
bnMocmFuZ2UtPnN0YXJ0LmNvbnRhaW5lci5wdHIoKSkgfHwgIXNjb3BlLT5jb250YWlucyhyYW5n
ZS0+ZW5kLmNvbnRhaW5lci5wdHIoKSkpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNO
b3RGb3VuZCwgMCk7DQorDQorICAgIHJldHVybiBOU01ha2VSYW5nZShjaGFyYWN0ZXJDb3VudCh7
IHsgKnNjb3BlLCAwIH0sIHJhbmdlLT5zdGFydCB9KSwgY2hhcmFjdGVyQ291bnQoKnJhbmdlKSk7
DQorfQ0KKw0KK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VET01SYW5nZShEb2N1bWVu
dCogZG9jdW1lbnQsIE5TUmFuZ2UgcmFuZ2UpDQorew0KKyAgICBpZiAocmFuZ2UubG9jYXRpb24g
PT0gTlNOb3RGb3VuZCkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIC8v
IG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlu
cHV0IG1ldGhvZHMgdGhhdA0KKyAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29u
dGFpbmluZyB0aGUgc2VsZWN0aW9uDQorICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNl
IG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdA0K
KyAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlz
IHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMNCisgICAgLy8gdG8gdXNlIHRoZSByb290IGVk
aXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBi
YXNlLg0KKyAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNv
bnRleHQuDQorICAgIGF1dG8gc2VsZWN0aW9uUm9vdCA9IGRvY3VtZW50LT5mcmFtZSgpLT5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7DQorICAgIGF1dG8gc2Nv
cGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGRvY3VtZW50LT5kb2N1bWVudEVs
ZW1lbnQoKTsNCisgICAgaWYgKCFzY29wZSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
DQorDQorICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKCpzY29wZSksIHJhbmdlKTsNCit9DQorDQogLy8gUmV0dXJucyBhbiBhcnJh
eSBvZiBzdHJpbmdzIGFuZCBBWE9iamVjdCB3cmFwcGVycyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0
ZXh0DQogLy8gcnVucyBhbmQgcmVwbGFjZW1lbnQgbm9kZXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVu
IHJhbmdlLg0KIC0gKE5TQXJyYXkgKiljb250ZW50Rm9yU2ltcGxlUmFuZ2U6KGNvbnN0IFNpbXBs
ZVJhbmdlJilyYW5nZSBhdHRyaWJ1dGVkOihCT09MKWF0dHJpYnV0ZWQNCkBAIC02NzYsMTggKzc0
MSwyNiBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsDQogICAgIHJldHVybiBhcnJheS5hdXRvcmVs
ZWFzZSgpOw0KIH0NCiANCi0tIChOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKWxpbmVSZWN0c0Fu
ZFRleHQNCistIChXZWJDb3JlOjpBWENvcmVPYmplY3QqKWJhc2VVcGRhdGVCYWNraW5nU3RvcmUN
CiB7DQogI2lmIFBMQVRGT1JNKE1BQykNCiAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYu
dXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlOw0KICAgICBpZiAoIWJhY2tpbmdPYmplY3QpDQotICAg
ICAgICByZXR1cm4gbmlsOw0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogI2Vsc2UNCiAgICAg
aWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCi0gICAgICAgIHJldHVybiBu
aWw7DQorICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICAgYXV0byogYmFja2luZ09iamVjdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0Ow0KICNlbmRpZg0KKyAgICByZXR1cm4gYmFja2luZ09iamVj
dDsNCit9DQogDQorLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilsaW5lUmVjdHNBbmRUZXh0
DQorew0KKyAgICBhdXRvIGJhY2tpbmdPYmplY3QgPSBzZWxmLmJhc2VVcGRhdGVCYWNraW5nU3Rv
cmU7DQorICAgIGlmICghYmFja2luZ09iamVjdCkNCisgICAgICAgIHJldHVybiBuaWw7DQorICAg
IA0KICAgICBhdXRvIHJhbmdlID0gYmFja2luZ09iamVjdC0+ZWxlbWVudFJhbmdlKCk7DQogICAg
IGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm4gbmlsOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0NCmluZGV4IDcwMDRjNDZiNjQzOS4uZDY5NDFmODJmMTIyIDEwMDY0
NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0NCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tDQpAQCAtMTc5NSw3ICsxNzk1
LDcgQEAgc3RhdGljIHZvaWQgV2ViVHJhbnNmb3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9pZCog
aW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCAqZWwNCiANCiAtIChOU0FycmF5PFdlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyICo+ICopY2hpbGRyZW5WZWN0b3JBcnJheQ0KIHsNCi0gICAgcmV0
dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZi5heEJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0K
KyAgICByZXR1cm4gbWFrZU5TQXJyYXkoc2VsZi5heEJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkp
Ow0KIH0NCiANCiAtIChOU1ZhbHVlICopcG9zaXRpb24NCkBAIC0yMjAzLDcgKzIyMDMsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChiYWNraW5n
T2JqZWN0LT5pc1RyZWVJdGVtKCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udGVudENvcHk7DQogICAgICAgICAgICAg
YmFja2luZ09iamVjdC0+YXJpYVRyZWVJdGVtQ29udGVudChjb250ZW50Q29weSk7DQotICAgICAg
ICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoY29udGVudENvcHkpOw0KKyAgICAgICAgICAg
IHJldHVybiBtYWtlTlNBcnJheShjb250ZW50Q29weSk7DQogICAgICAgICB9DQogDQogICAgICAg
ICByZXR1cm4gc2VsZi5jaGlsZHJlblZlY3RvckFycmF5Ow0KQEAgLTIyMTMsNyArMjIxMyw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKGJhY2tp
bmdPYmplY3QtPmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkpIHsNCiAgICAgICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGls
ZHJlbkNvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihz
ZWxlY3RlZENoaWxkcmVuQ29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJy
YXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJh
eShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQogICAgICAgICB9DQogICAgICAgICByZXR1cm4gbmls
Ow0KICAgICB9DQpAQCAtMjIyMiw3ICsyMjIyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNMaXN0Qm94KCkpIHsN
CiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgdmlzaWJsZUNoaWxkcmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT52
aXNpYmxlQ2hpbGRyZW4odmlzaWJsZUNoaWxkcmVuQ29weSk7DQotICAgICAgICAgICAgcmV0dXJu
IGNvbnZlcnRUb05TQXJyYXkodmlzaWJsZUNoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0
dXJuIG1ha2VOU0FycmF5KHZpc2libGVDaGlsZHJlbkNvcHkpOw0KICAgICAgICAgfQ0KIA0KICAg
ICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTGlzdCgpKQ0KQEAgLTIyMzQsNyArMjIzNCw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KIA0KICAgICBpZiAoYmFja2lu
Z09iamVjdC0+aXNXZWJBcmVhKCkpIHsNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6QCJBWExpbmtVSUVsZW1lbnRzIl0pDQotICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+ZG9jdW1lbnRMaW5rcygpKTsNCisgICAgICAg
ICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+ZG9jdW1lbnRMaW5rcygpKTsN
CiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExvYWRl
ZCJdKQ0KICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YmFja2lu
Z09iamVjdC0+aXNMb2FkZWQoKV07DQpAQCAtMjI2NywxNiArMjI2NywyMSBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICBQbGFpblRleHRSYW5nZSB0
ZXh0UmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZFRleHRSYW5nZSgpOw0KICAgICAgICAg
ICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0UmFuZ2Uu
c3RhcnQsIHRleHRSYW5nZS5sZW5ndGgpXTsNCiAgICAgICAgIH0NCi0gICAgICAgIC8vIFRPRE86
IEdldCBhY3R1YWwgdmlzaWJsZSByYW5nZS4gPHJkYXI6Ly9wcm9ibGVtLzQ3MTIxMDE+DQotICAg
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlW
aXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBiYWNr
aW5nT2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSA/IG5pbCA6IFtOU1ZhbHVlIHZhbHVlV2l0aFJh
bmdlOiBOU01ha2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0LT50ZXh0TGVuZ3RoKCkpXTsNCi0NCiAg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
SW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIGludCBs
aW5lTnVtYmVyID0gYmFja2luZ09iamVjdC0+aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCk7DQog
ICAgICAgICAgICAgcmV0dXJuIGxpbmVOdW1iZXIgPj0gMCA/IEAobGluZU51bWJlcikgOiBuaWw7
DQogICAgICAgICB9DQogICAgIH0NCiANCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRlXSkg
ew0KKyAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpKQ0KKyAgICAg
ICAgICAgIHJldHVybiBuaWw7DQorICAgICAgICAvLyBUT0RPOiBHZXQgYWN0dWFsIHZpc2libGUg
cmFuZ2UuIDxyZGFyOi8vcHJvYmxlbS80NzEyMTAxPg0KKyAgICAgICAgaWYgKGJhY2tpbmdPYmpl
Y3QtPmlzVGV4dENvbnRyb2woKSkNCisgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVX
aXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgYmFja2luZ09iamVjdC0+dGV4dExlbmd0aCgpKV07DQor
ICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6W3NlbGYgYWNjZXNzaWJpbGl0
eVZpc2libGVDaGFyYWN0ZXJSYW5nZV1dOw0KKyAgICB9DQorDQogICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV0pIHsNCiAg
ICAgICAgIFVSTCB1cmwgPSBiYWNraW5nT2JqZWN0LT51cmwoKTsNCiAgICAgICAgIGlmICh1cmwu
aXNOdWxsKCkpDQpAQCAtMjM4MCw3ICsyMzg1LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5EDQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5SW1hZ2VPdmVybGF5RWxlbWVudHNBdHRyaWJ1dGVdKSB7DQogICAgICAg
ICBhdXRvIGltYWdlT3ZlcmxheUVsZW1lbnRzID0gYmFja2luZ09iamVjdC0+aW1hZ2VPdmVybGF5
RWxlbWVudHMoKTsNCi0gICAgICAgIHJldHVybiBpbWFnZU92ZXJsYXlFbGVtZW50cyA/IGNvbnZl
cnRUb05TQXJyYXkoKmltYWdlT3ZlcmxheUVsZW1lbnRzKSA6IG5pbDsNCisgICAgICAgIHJldHVy
biBpbWFnZU92ZXJsYXlFbGVtZW50cyA/IG1ha2VOU0FycmF5KCppbWFnZU92ZXJsYXlFbGVtZW50
cykgOiBuaWw7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlFbWJlZGRlZEltYWdlRGVzY3JpcHRpb25BdHRyaWJ1dGVdKQ0K
QEAgLTI0MDQsMjkgKzI0MDksMjkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5EDQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJMaXN0KCkpIHsNCiAgICAgICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFi
c0NoaWxkcmVuOw0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnRhYkNoaWxkcmVuKHRhYnND
aGlsZHJlbik7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodGFic0NoaWxk
cmVuKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkodGFic0NoaWxkcmVuKTsNCiAg
ICAgICAgIH0NCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXSkNCi0gICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbnRlbnRzKCkpOw0KKyAgICAgICAgcmV0
dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbnRlbnRzKCkpOw0KIA0KICAgICBpZiAo
YmFja2luZ09iamVjdC0+aXNUYWJsZSgpICYmIGJhY2tpbmdPYmplY3QtPmlzRXhwb3NhYmxlKCkp
IHsNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5Um93c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJy
YXkoYmFja2luZ09iamVjdC0+cm93cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJy
YXkoYmFja2luZ09iamVjdC0+cm93cygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdKQ0K
LSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPnZpc2li
bGVSb3dzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0
LT52aXNpYmxlUm93cygpKTsNCiANCiAgICAgICAgIC8vIFRPRE86IGRpc3Rpbmd1aXNoIGJldHdl
ZW4gdmlzaWJsZSBhbmQgbm9uLXZpc2libGUgY29sdW1ucw0KICAgICAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXQ0K
ICAgICAgICAgICAgIHx8IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlWaXNpYmxlQ29sdW1uc0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZl
cnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1ucygpKTsNCisgICAgICAgICAgICByZXR1
cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1ucygpKTsNCiANCiAgICAgICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRS
b3dzQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsNCiAgICAgICAgICAg
ICBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsN
Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29w
eSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5
KTsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIC8vIEhUTUwgdGFibGVzIGRvbid0IHN1cHBvcnQg
dGhlc2UgYXR0cmlidXRlcy4NCkBAIC0yNDM1LDcgKzI0NDAsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICByZXR1cm4gbmlsOw0KIA0KICAgICAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1
bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVy
dFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KKyAgICAgICAgICAg
IHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KIA0K
ICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlIZWFkZXJBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgYXV0byogaGVhZGVyQ29udGFpbmVy
ID0gYmFja2luZ09iamVjdC0+aGVhZGVyQ29udGFpbmVyKCk7DQpAQCAtMjQ0MywxMCArMjQ0OCwx
MCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIH0NCiAN
CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCisgICAgICAgICAg
ICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+cm93SGVhZGVycygpKTsNCiANCiAg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
VmlzaWJsZUNlbGxzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNB
cnJheShiYWNraW5nT2JqZWN0LT5jZWxscygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5T
QXJyYXkoYmFja2luZ09iamVjdC0+Y2VsbHMoKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkNvdW50QXR0cmlidXRl
XSkNCiAgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5jb2x1bW5Db3VudCgpKTsN
CkBAIC0yNDY4LDcgKzI0NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQNCiAgICAgICAgIC8vIHJvd3MgYXR0cmlidXRlIGZvciBhIGNvbHVtbiBpcyB0aGUgbGlzdCBv
ZiBhbGwgdGhlIGVsZW1lbnRzIGluIHRoYXQgY29sdW1uIGF0IGVhY2ggcm93DQogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRy
aWJ1dGVdDQogICAgICAgICAgICAgfHwgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4g
Y29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpKTsNCisgICAgICAgICAg
ICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7DQogDQogICAg
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhl
YWRlckF0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBhdXRvKiBoZWFkZXIgPSBiYWNraW5nT2Jq
ZWN0LT5jb2x1bW5IZWFkZXIoKTsNCkBAIC0yNDg4LDEwICsyNDkzLDEwIEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgfQ0KIA0KICAgICAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5IZWFkZXJV
SUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBt
YWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOw0KIA0KICAgICAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dIZWFk
ZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNB
cnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBt
YWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KIA0KICAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBQ29sdW1u
SW5kZXhBdHRyaWJ1dGVdKQ0KICAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmF4
Q29sdW1uSW5kZXgoKSk7DQpAQCAtMjUwNCwxMiArMjUwOSwxMiBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXSkgew0KICAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBz
ZWxlY3RlZENoaWxkcmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5zZWxlY3Rl
ZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29u
dmVydFRvTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0dXJu
IG1ha2VOU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCiAgICAgICAgIH0NCiAgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0
dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+
YXJpYVRyZWVSb3dzKHJvd3NDb3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNB
cnJheShyb3dzQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHJvd3NDb3B5
KTsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIC8vIFRyZWVSb2xlcyBkbyBub3Qgc3VwcG9ydCBj
b2x1bW5zLCBidXQgTWFjIEFYIGV4cGVjdHMgdG8gYmUgYWJsZSB0byBhc2sgYWJvdXQgY29sdW1u
cyBhdCB0aGUgbGVhc3QuDQpAQCAtMjU0NCw3ICsyNTQ5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EDQogICAgIC8vIFRoZSByb3dzIHRoYXQgYXJlIGNvbnNpZGVyZWQg
aW5zaWRlIHRoaXMgcm93Lg0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdKSB7DQogICAgICAgICBpZiAo
YmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzQVJJQVRyZWVH
cmlkUm93KCkpDQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09i
amVjdC0+ZGlzY2xvc2VkUm93cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
YmFja2luZ09iamVjdC0+ZGlzY2xvc2VkUm93cygpKTsNCiAgICAgfQ0KIA0KICAgICAvLyBUaGUg
cm93IHRoYXQgY29udGFpbnMgdGhpcyByb3cuIEl0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUg
Zmlyc3QgcGFyZW50IHRoYXQgaXMgYSB0cmVlaXRlbS4NCkBAIC0yNjEyLDcgKzI2MTcsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJp
YnV0ZV0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBsaW5rZWRVSUVsZW1lbnRzOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+bGlu
a2VkVUlFbGVtZW50cyhsaW5rZWRVSUVsZW1lbnRzKTsNCi0gICAgICAgIHJldHVybiBjb252ZXJ0
VG9OU0FycmF5KGxpbmtlZFVJRWxlbWVudHMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5
KGxpbmtlZFVJRWxlbWVudHMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQXR0cmlidXRlXSkNCkBAIC0y
Njg1LDcgKzI2OTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlPd25z
QXR0cmlidXRlXSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGFyaWFPd25zOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYU93
bnNFbGVtZW50cyhhcmlhT3ducyk7DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShh
cmlhT3ducyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYXJpYU93bnMpOw0KICAgICB9
DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5QVJJQVBvc0luU2V0QXR0cmlidXRlXSkNCkBAIC0yNzUxLDcgKzI3NTYsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RSYWRpY2FuZEF0dHJp
YnV0ZV0pIHsNCiAgICAgICAgICAgICBhdXRvIHJhZGljYW5kID0gYmFja2luZ09iamVjdC0+bWF0
aFJhZGljYW5kKCk7DQotICAgICAgICAgICAgcmV0dXJuIHJhZGljYW5kID8gY29udmVydFRvTlNB
cnJheSgqcmFkaWNhbmQpIDogbmlsOw0KKyAgICAgICAgICAgIHJldHVybiByYWRpY2FuZCA/IG1h
a2VOU0FycmF5KCpyYWRpY2FuZCkgOiBuaWw7DQogICAgICAgICB9DQogDQogICAgICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlv
bk51bWVyYXRvckF0dHJpYnV0ZV0pDQpAQCAtMjg0NSw3ICsyODUwLDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6QCJBWERldGFpbHNFbGVtZW50cyJdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGV0YWlsczsNCiAgICAgICAgIGJh
Y2tpbmdPYmplY3QtPmFyaWFEZXRhaWxzRWxlbWVudHMoZGV0YWlscyk7DQotICAgICAgICByZXR1
cm4gY29udmVydFRvTlNBcnJheShkZXRhaWxzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJh
eShkZXRhaWxzKTsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUJyYWlsbGVMYWJlbEF0dHJpYnV0ZV0pDQpAQCAtMjg2MCw3
ICsyODY1LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEVycm9yTWVzc2FnZUVsZW1lbnRz
Il0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBlcnJvck1lc3NhZ2VzOw0KICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYUVycm9y
TWVzc2FnZUVsZW1lbnRzKGVycm9yTWVzc2FnZXMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkoZXJyb3JNZXNzYWdlcyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoZXJy
b3JNZXNzYWdlcyk7DQogICAgIH0NCiANCiAgICAgLy8gTXVsdGktc2VsZWN0YWJsZQ0KQEAgLTI4
NzgsNyArMjg4Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFyaWFD
b250cm9sc0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhQ29udHJvbHM7DQogICAgICAgICBiYWNraW5nT2Jq
ZWN0LT5hcmlhQ29udHJvbHNFbGVtZW50cyhhcmlhQ29udHJvbHMpOw0KLSAgICAgICAgcmV0dXJu
IGNvbnZlcnRUb05TQXJyYXkoYXJpYUNvbnRyb2xzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNB
cnJheShhcmlhQ29udHJvbHMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNhYmxlQW5jZXN0b3JBdHRyaWJ1dGVd
KSB7DQpAQCAtMzQyOCwyMiArMzQzMyw2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORA0KICAgICB9KTsNCiB9DQogDQotLy8gRklYTUU6IE5vIHJlYXNvbiBmb3IgdGhpcyB0
byBiZSBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rpb247IGNhbiBnZXQgZG9jdW1lbnQgZnJv
bSByYW5nZS4NCi0tIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihjb25zdCBTaW1wbGVSYW5n
ZSYpcmFuZ2UNCi17DQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7DQotICAgIA0KLSAgICBh
dXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7DQotICAgIGlm
ICghZG9jdW1lbnQpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7
DQotDQotICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpOw0KLSAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkNCi0gICAgICAgIHJldHVybiBOU01ha2VS
YW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgcmV0dXJuIGNoYXJhY3RlclJhbmdlKG1ha2VC
b3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRlbnRzKCpkb2N1bWVudEVsZW1lbnQpLCByYW5nZSk7
DQotfQ0KLQ0KIC0gKE5TSW50ZWdlcilfaW5kZXhGb3JUZXh0TWFya2VyOihBWFRleHRNYXJrZXJS
ZWYpbWFya2VyDQogew0KICAgICBpZiAoIW1hcmtlcikNCkBAIC0zNDYwLDcgKzM0NDksNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAgICBpZiAoIXJh
bmdlKQ0KICAgICAgICAgICAgICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCiANCi0gICAgICAgICAg
ICByZXR1cm4gW3Byb3RlY3RlZFNlbGYgX2NvbnZlcnRUb05TUmFuZ2U6KnJhbmdlXS5sb2NhdGlv
bjsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TUmFuZ2UocmFuZ2UpLmxvY2F0aW9uOw0KICAg
ICAgICAgfQ0KIA0KICAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQpAQCAtMzgzNSw4ICszODI0
LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsNCiAg
ICAgICAgIGJhY2tpbmdPYmplY3QtPmZpbmRNYXRjaGluZ09iamVjdHMoJmNyaXRlcmlhLCByZXN1
bHRzKTsNCiAgICAgICAgIGlmICh3aWRnZXRDaGlsZHJlbikNCi0gICAgICAgICAgICByZXR1cm4g
W3dpZGdldENoaWxkcmVuIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OmNvbnZlcnRUb05T
QXJyYXkocmVzdWx0cyldOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkocmVzdWx0
cyk7DQorICAgICAgICAgICAgcmV0dXJuIFt3aWRnZXRDaGlsZHJlbiBhcnJheUJ5QWRkaW5nT2Jq
ZWN0c0Zyb21BcnJheTptYWtlTlNBcnJheShyZXN1bHRzKV07DQorICAgICAgICByZXR1cm4gbWFr
ZU5TQXJyYXkocmVzdWx0cyk7DQogICAgIH0NCiANCiAgICAgLy8gVGV4dE1hcmtlciBhdHRyaWJ1
dGVzLg0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
aW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tDQppbmRleCBk
ZDRlYjA5NmZlZTkuLmJhNDc0Zjk2YzBiNiAxMDA2NDQNCi0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0NCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRJT1MubW0NCkBAIC0xMDgsNiArMTA4LDcgQEAgdHlwZWRlZiB2b2lkICgqQVhQ
b3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNh
dGlvbiwNCiAtIChpZClfYWNjZXNzaWJpbGl0eUxpc3RBbmNlc3RvcjsNCiAtIChpZClfYWNjZXNz
aWJpbGl0eVBob3RvRGVzY3JpcHRpb247DQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlJbWFn
ZU92ZXJsYXlFbGVtZW50czsNCistIChOU1JhbmdlKWFjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFj
dGVyUmFuZ2U7DQogDQogLy8gVGV4dE1hcmtlciByZWxhdGVkDQogLSAoTlNBcnJheSAqKXRleHRN
YXJrZXJSYW5nZTsNCkBAIC0zOTQsNiArMzk1LDkgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQ0KIA0KIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdEZXNjcmlwdGlvbk9m
QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQ0KIHsNCisgICAgaWYgKEpTU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoYXR0cmlidXRlLCAiQVhWaXNpYmxlQ2hhcmFjdGVyUmFu
Z2UiKSkNCisgICAgICAgIHJldHVybiBbTlNTdHJpbmdGcm9tUmFuZ2UoW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlXSkgY3JlYXRlSlNTdHJpbmdSZWZdOw0KKw0K
ICAgICByZXR1cm4gY3JlYXRlSlNTdHJpbmcoKTsNCiB9DQogDQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444941</attachid>
            <date>2021-11-21 21:37:10 -0800</date>
            <delta_ts>2021-11-21 21:38:26 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>51397</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZDIwNDhjNGZhMmY2Li5kYzVjYTZlNzQ4MzcgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
NyBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11
bGF0b3IvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4NCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQ6
IEFkZGVkLg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdl
Lmh0bWw6IEFkZGVkLg0KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoN
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOg0KKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoNCisNCiAyMDIxLTExLTE5ICBLaWV0IEhv
ICA8dGhvMjJAYXBwbGUuY29tPg0KIA0KICAgICAgICAgSW50ZWdyYXRlIG1vdGlvbiBwYXRoIHRy
YW5zZm9ybXMgaW4gdHJhbnNmb3JtYXRpb24gcGlwZWxpbmUNCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwNCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjM5ZDMyZGJkMjAzMw0KLS0tIC9kZXYv
bnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1y
YW5nZS5odG1sDQpAQCAtMCwwICsxLDczIEBADQorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPg0KKzxodG1sPg0KKzxoZWFkPg0KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5IGlkPSJib2R5
Ij4NCisNCis8ZGl2IGlkPSJncm91cCI+DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCis8L2Rpdj4NCisNCis8c2NyaXB0Pg0K
Kw0KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVDaGFyYWN0ZXJSYW5n
ZSByZXR1cm5zIGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlmeWluZyBvYnNjdXJl
ZCBjb250ZW50LiIpOw0KKw0KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7DQorICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgiZ3JvdXAiKS5jaGlsZEF0SW5kZXgoMCk7DQorICAgICAgICBkZWJ1Zygi
VmlzaWJsZSByYW5nZTogIiArIHRleHQuc3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVl
KCJBWFZpc2libGVDaGFyYWN0ZXJSYW5nZSIpKTsNCisNCisgICAgICAgIHRlc3RSdW5uZXIuc2V0
Vmlld1NpemUoNTAwLCAyMDApOw0KKyAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2UgKDUwMCwg
MjAwKTogIiArIHRleHQuc3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlKCJBWFZpc2li
bGVDaGFyYWN0ZXJSYW5nZSIpKTsNCisNCisgICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9w
ID0gMjAwOw0KKyAgICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3U2l6ZSgyMDAsIDUwMCk7DQorICAg
ICAgICBkZWJ1ZygiVmlzaWJsZSByYW5nZSwgb2Zmc2V0OiAyMDAgKDIwMCwgNTAwKTogIiArIHRl
eHQuc3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlKCJBWFZpc2libGVDaGFyYWN0ZXJS
YW5nZSIpKTsNCisNCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncm91cCIpLnN0
eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsNCisgICAgfQ0KKw0KKzwvc2NyaXB0Pg0KKw0KKzwv
Ym9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9u
cw0KaW5kZXggYTQyYzcyOWYwN2ZmLi5hNGIxMDRlMDU3YmUgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucw0KKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMNCkBAIC0yMTE4LDcgKzIxMTgsNyBAQCB3ZWJraXQu
b3JnL2IvMTQ4ODA2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0
aWNvbC9tdWx0aWNvbC1zcA0KIGZhc3QvZG9tL2xpbmtpZnktcGhvbmUtbnVtYmVycy5odG1sIFsg
UGFzcyBdDQogDQogYWNjZXNzaWJpbGl0eS92aWRlby1lbGVtZW50LXVybC1hdHRyaWJ1dGUuaHRt
bCBbIFBhc3MgXQ0KLQ0KK2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRt
bCBbIFBhc3MgXQ0KIGFjY2Vzc2liaWxpdHkvYW5jZXN0b3ItY29tcHV0YXRpb24uaHRtbCBbIFBh
c3MgXQ0KIA0KICMgRW5hYmxlICJhcmlhLWN1cnJlbnQiIHRlc3RzIGZvciBpT1MuDQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFy
YWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2FjY2Vz
c2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0DQpuZXcgZmlsZSBt
b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi42NzgwM2RiODE3NzANCi0tLSAvZGV2L251
bGwNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUt
Y2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dA0KQEAgLTAsMCArMSwxMiBAQA0KK1RoaXMgdGVz
dHMgdGhhdCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgcmV0dXJucyBleHBlY3RlZCB2aXNpYmxlIHJh
bmdlcyB3aGlsZSBtb2RpZnlpbmcgb2JzY3VyZWQgY29udGVudC4NCisNCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuDQorDQorDQorVmlzaWJsZSByYW5nZTogTlNSYW5nZTogezAsIDM5MDB9DQor
VmlzaWJsZSByYW5nZSAoNTAwLCAyMDApOiBOU1JhbmdlOiB7MCwgMjcwfQ0KK1Zpc2libGUgcmFu
Z2UsIG9mZnNldDogMjAwICgyMDAsIDUwMCk6IE5TUmFuZ2U6IHswLCA3MzV9DQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQ0KKw0KK1RFU1QgQ09NUExFVEUNCisNCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMNCmluZGV4IDlhMDc0NTg3OTM1
NC4uODQ3MWYyMjJjNTMzIDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zDQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMNCkBAIC02MDEsNiArNjAxLDkgQEAgZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1pbnNlcnQtaHRtbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0NCiBlZGl0aW5nL3NwZWxsaW5n
L3NwZWxsY2hlY2stYXN5bmMuaHRtbCBbIEZhaWx1cmUgXQ0KIGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctdW5pZmllZC1lbXVsYXRpb24uaHRtbCBbIEZhaWx1cmUgXQ0KIA0KKyMgU2tpcCBkdWUg
dG8gbGFjayBvZiBEdW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5n
RGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlYCBpbXBsZW1lbnRhdGlvbi4NCithY2Nlc3NpYmls
aXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBTa2lwIF0NCisNCiAjIDxyZGFyOi8v
cHJvYmxlbS8yNjA1MDkyMz4gVGhlIHJlc3VsdCBpcyBwcm9iYWJseSBzdGlsbCBhIHBhc3MsIGJ1
dCB3ZSBkb24ndCBoYXZlIGEgd2F5DQogIyB0byBoYXZlIHBsYXRmb3JtIHNwZWNpZmljIHJlc3Vs
dHMgdGhhdCBhcmUgZGlmZmVyZW50IGJldHdlZW4gV0sxIGFuZCBXSzIuDQogYWNjZXNzaWJpbGl0
eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBdDQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXIt
cmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0DQpuZXcgZmlsZSBtb2RlIDEw
MDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5jZGJiOGM0MjJkYTcNCi0tLSAvZGV2L251bGwNCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFj
dGVyLXJhbmdlLWV4cGVjdGVkLnR4dA0KQEAgLTAsMCArMSwxMiBAQA0KK1RoaXMgdGVzdHMgdGhh
dCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgcmV0dXJucyBleHBlY3RlZCB2aXNpYmxlIHJhbmdlcyB3
aGlsZSBtb2RpZnlpbmcgb2JzY3VyZWQgY29udGVudC4NCisNCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuDQorDQorDQorVmlzaWJsZSByYW5nZTogTlNSYW5nZTogezAsIDQyMDV9DQorVmlzaWJs
ZSByYW5nZSAoNTAwLCAyMDApOiBOU1JhbmdlOiB7MCwgMzYwfQ0KK1Zpc2libGUgcmFuZ2UsIG9m
ZnNldDogMjAwICgyMDAsIDUwMCk6IE5TUmFuZ2U6IHswLCA2OTB9DQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQ0KKw0KK1RFU1QgQ09NUExFVEUNCisNCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zDQppbmRleCBhNzFlNDMwZWI4ZTkuLjBmYjljMzk5MTEw
YiAxMDA2NDQNCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
DQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucw0KQEAgLTI3
OCw2ICsyNzgsNyBAQCBhY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdGJveC1jbGVhci1zZWxlY3Rpb24t
Y3Jhc2guaHRtbCBbIFNraXAgXQ0KIGFjY2Vzc2liaWxpdHkvbGlzdGJveC1jbGVhci1zZWxlY3Rp
b24uaHRtbCBbIFNraXAgXQ0KIGFjY2Vzc2liaWxpdHkvZW1iZWRkZWQtaW1hZ2UtZGVzY3JpcHRp
b24uaHRtbCBbIFNraXAgXQ0KIGFjY2Vzc2liaWxpdHkvaW1nLW5vLWFsdC1ub3QtaWdub3JlZC13
aXRoLXRpdGxlLmh0bWwgWyBTa2lwIF0NCithY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVy
LXJhbmdlLmh0bWwgWyBTa2lwIF0NCiANCiAjIE5lZWQgdG8gaW1wbGVtZW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Omhhc0RvY3VtZW50Um9sZUFuY2VzdG9yKCksIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Omhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3IoKSwNCiAjIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwoKSwgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNJbkRlc2NyaXB0aW9uTGlzdFRlcm0oKSwgYW5kDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQppbmRleCA4YmVhNGY2
ZmZkNTUuLmI2YzBmNzAwYzNlNyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zw0KKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQpAQCAtMSwzICsxLDUxIEBADQorMjAy
MS0xMS0xOSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPg0KKw0KKyAgICAg
ICAgQVg6IFdlYktpdDogbmVlZCBhIG1ldGhvZCB0byBnZXQgdmlzaWJsZSB0ZXh0IGFuZCBmcmFt
ZSBvZiBhbiBlbGVtZW50IG9uIHNjcmVlbg0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzMzNg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuDQorDQorICAgICAgICBJbXBsZW1lbnQgdmlzaWJsZUNoYXJhY3RlclJhbmdlIGZv
ciBzdGF0aWMgdGV4dCBlbGVtZW50cyBzbyB0aGF0IEJvb2tzIGNhbiBkZXRlcm1pbmUgdGhlIHZp
c2libGUNCisgICAgICAgIGNvbnRlbnQgb24gYSBwYWdlLg0KKw0KKyAgICAgICAgVGVzdDogYWNj
ZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sDQorDQorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZUNoYXJhY3RlclJhbmdlIGNvbnN0KToNCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1bm9ic2N1cmVkQ29udGVudFJlY3Qg
Y29uc3QpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoN
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg6
DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eVZpc2libGVDb250ZW50UmVjdF0pOg0KKyAgICAgICAgKGFjY2Vzc2libGVFbGVt
ZW50c0Zvck9iamVjdHMpOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgYWNjZXNzaWJpbGl0eUZpbmRNYXRjaGluZ09iamVjdHM6XSk6DQorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBwb3NpdGlvbkZvclRleHRNYXJrZXI6XSk6DQorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0ZXh0TWFya2VyRm9yUG9zaXRp
b246XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzdHJpbmdG
b3JSYW5nZTpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGZy
YW1lRm9yUmFuZ2U6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBhY2Nlc3NpYmlsaXR5TWF0aFJhZGljYW5kXSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBfY29udmVydFRvTlNSYW5nZTpdKTogRGVsZXRlZC4NCisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0VG9ET01SYW5nZTpdKTog
RGVsZXRlZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6dmlzaWJs
ZUNoYXJhY3RlclJhbmdlIGNvbnN0KToNCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0Ojp1bm9ic2N1cmVkQ29udGVudFJlY3QgY29uc3QpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6DQorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oOg0KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06
DQorICAgICAgICAobWFrZU5TQXJyYXkpOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlIGFjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VdKToNCisg
ICAgICAgIChtYWtlTlNSYW5nZSk6DQorICAgICAgICAobWFrZURPTVJhbmdlKToNCisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBiYXNlVXBkYXRlQmFja2luZ1N0
b3JlXSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgbGlu
ZVJlY3RzQW5kVGV4dF0pOg0KKyAgICAgICAgKGNvbnZlcnRUb05TQXJyYXkpOiBEZWxldGVkLg0K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNoaWxk
cmVuVmVjdG9yQXJyYXldKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToNCisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIF9pbmRleEZvclRleHRNYXJrZXI6XSk6DQorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6Zm9yUGFyYW1ldGVyOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgX2NvbnZlcnRUb05TUmFuZ2U6XSk6IERlbGV0ZWQuDQorDQogMjAyMS0xMS0xOSAgS2ll
dCBIbyAgPHRobzIyQGFwcGxlLmNvbT4NCiANCiAgICAgICAgIEltcGxlbWVudCBwYXJzaW5nIGFu
ZCBhbmltYXRpb24gc3VwcG9ydCBmb3IgcmF5KCkgc2hhcGUgYWNjZXB0ZWQgYnkgb2Zmc2V0LXBh
dGgNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcA0KaW5kZXggOTM4NDhlMWNhYjc2Li42NzQ2ZjZjYmI0OGYgMTAwNjQ0DQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwDQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
DQpAQCAtNzA0LDYgKzcwNCw1MiBAQCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjplbGVtZW50UmFuZ2UoKSBjb25zdA0KICAgICByZXR1cm4gQVhPYmplY3RD
YWNoZTo6cmFuZ2VGb3JOb2RlQ29udGVudHMoKm5vZGUpOw0KIH0NCiANCitzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlQ2hhcmFjdGVyUmFuZ2Uo
KSBjb25zdA0KK3sNCisgICAgYXV0byByYW5nZSA9IGVsZW1lbnRSYW5nZSgpOw0KKyAgICBpZiAo
IXJhbmdlKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgYXV0byBjb250
ZW50UmVjdCA9IHVub2JzY3VyZWRDb250ZW50UmVjdCgpOw0KKyAgICBhdXRvIGVsZW1lbnRSZWN0
ID0gc25hcHBlZEludFJlY3QodGhpcy0+ZWxlbWVudFJlY3QoKSk7DQorICAgIGlmICghY29udGVu
dFJlY3QuaW50ZXJzZWN0cyhlbGVtZW50UmVjdCkpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0Ow0KKw0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IHN0YXJ0Qm91bmRhcnkg
PSByYW5nZS0+c3RhcnQ7DQorICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gZW5kQm91
bmRhcnkgPSByYW5nZS0+ZW5kOw0KKw0KKyAgICAvLyBPcmlnaW4gaXNuJ3QgY29udGFpbmVkIGlu
IHZpc2libGUgcmVjdCwgc3RhcnQgbW92aW5nIGZvcndhcmQgYnkgbGluZS4NCisgICAgd2hpbGUg
KCFjb250ZW50UmVjdC5jb250YWlucyhlbGVtZW50UmVjdC5sb2NhdGlvbigpKSkgew0KKyAgICAg
ICAgYXV0byBuZXh0TGluZVBvc2l0aW9uID0gbmV4dExpbmVFbmRQb3NpdGlvbihWaXNpYmxlUG9z
aXRpb24obWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKCpzdGFydEJvdW5kYXJ5KSkpOw0KKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiB0ZXN0U3RhcnRCb3VuZGFyeSA9IG1h
a2VCb3VuZGFyeVBvaW50KG5leHRMaW5lUG9zaXRpb24pOw0KKyAgICAgICAgaWYgKCF0ZXN0U3Rh
cnRCb3VuZGFyeSB8fCAhY29udGFpbnMoKnJhbmdlLCAqdGVzdFN0YXJ0Qm91bmRhcnkpKQ0KKyAg
ICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgDQorICAgICAgICBzdGFydEJvdW5kYXJ5ID0gdGVz
dFN0YXJ0Qm91bmRhcnk7DQorICAgICAgICBlbGVtZW50UmVjdCA9IGJvdW5kc0ZvclJhbmdlKFNp
bXBsZVJhbmdlKCpzdGFydEJvdW5kYXJ5LCByYW5nZS0+ZW5kKSk7DQorICAgICAgICBpZiAoZWxl
bWVudFJlY3QuaXNFbXB0eSgpKQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAg
IC8vIEVuZCBpc24ndCBjb250YWluZWQgaW4gdmlzaWJsZSByZWN0LCBzdGFydCBtb3ZpbmcgYmFj
a3dhcmRzIGJ5IGxpbmUuDQorICAgIHdoaWxlICghY29udGVudFJlY3QuY29udGFpbnMoZWxlbWVu
dFJlY3QubG9jYXRpb24oKSArIGVsZW1lbnRSZWN0LnNpemUoKSkpIHsNCisgICAgICAgIGF1dG8g
cHJldmlvdXNMaW5lUG9zaXRpb24gPSBwcmV2aW91c0xpbmVTdGFydFBvc2l0aW9uKFZpc2libGVQ
b3NpdGlvbihtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oKmVuZEJvdW5kYXJ5KSkpOw0KKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiB0ZXN0RW5kQm91bmRhcnkgPSBtYWtl
Qm91bmRhcnlQb2ludChwcmV2aW91c0xpbmVQb3NpdGlvbik7DQorICAgICAgICBpZiAoIXRlc3RF
bmRCb3VuZGFyeSB8fCAhY29udGFpbnMoKnJhbmdlLCAqdGVzdEVuZEJvdW5kYXJ5KSkNCisgICAg
ICAgICAgICBicmVhazsNCisgICAgICAgIA0KKyAgICAgICAgZW5kQm91bmRhcnkgPSB0ZXN0RW5k
Qm91bmRhcnk7DQorICAgICAgICBlbGVtZW50UmVjdCA9IGJvdW5kc0ZvclJhbmdlKHsgKnN0YXJ0
Qm91bmRhcnksICplbmRCb3VuZGFyeSB9KTsNCisgICAgICAgIGlmIChlbGVtZW50UmVjdC5pc0Vt
cHR5KCkpDQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgaWYgKCFzdGFydEJv
dW5kYXJ5IHx8ICFlbmRCb3VuZGFyeSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQor
ICAgIA0KKyAgICByZXR1cm4gU2ltcGxlUmFuZ2UoKnN0YXJ0Qm91bmRhcnksICplbmRCb3VuZGFy
eSk7DQorfQ0KKw0KIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmZpbmRUZXh0UmFuZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaFN0cmluZ3MsIGNv
bnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uKSBjb25zdA0KIHsNCiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZm91
bmQ7DQpAQCAtMzE4Miw2ICszMjI4LDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Ny
b2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JiBzdWJmb2N1DQogICAg
ICAgICBzY3JvbGxQYXJlbnQtPnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMobmV3U3Vi
Zm9jdXMpOw0KIH0NCiANCitGbG9hdFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6dW5vYnNjdXJl
ZENvbnRlbnRSZWN0KCkgY29uc3QNCit7DQorICAgIGF1dG8gZG9jdW1lbnQgPSB0aGlzLT5kb2N1
bWVudCgpOw0KKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQ0KKyAgICAg
ICAgcmV0dXJuIHsgfTsNCisgICAgcmV0dXJuIEZsb2F0UmVjdChzbmFwcGVkSW50UmVjdChkb2N1
bWVudC0+dmlldygpLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKSkpOw0KK30NCisNCiB2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvaW50KSBjb25zdA0KIHsNCiAgICAgLy8gU2VhcmNoIHVwIHRoZSBwYXJlbnQgY2hhaW4g
YW5kIGNyZWF0ZSBhIHZlY3RvciBvZiBhbGwgc2Nyb2xsYWJsZSBwYXJlbnQgb2JqZWN0cw0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgN
CmluZGV4IDIxZmY0YTI4YTVhNi4uNTljZWE0ZjRiMzk3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgNCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oDQpAQCAtODA4LDcgKzgw
OCw3IEBAIHByb3RlY3RlZDoNCiAgICAgdm9pZCBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsN
CiAgICAgdm9pZCBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Ow0KICAgICB2aXJ0
dWFsIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQ0K
LQ0KKyAgICBGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7
DQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJhZGlvR3JvdXBBbmNlc3RvcigpIGNvbnN0Ow0K
IA0KICAgICBib29sIGFsbG93c1RleHRSYW5nZXMoKSBjb25zdDsNCkBAIC04MjEsNiArODIxLDcg
QEAgcHJpdmF0ZToNCiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VPZlN0cmlu
Z0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmLCBBY2Nlc3NpYmls
aXR5U2VhcmNoRGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Ow0KICAgICBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzZWxlY3Rpb25SYW5nZSgpIGNvbnN0Ow0KICAgICBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmaW5kVGV4dFJhbmdlKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBzZWFyY2hTdHJpbmdzLCBjb25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxp
dHlTZWFyY2hUZXh0RGlyZWN0aW9uKSBjb25zdDsNCisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gdmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7DQogDQogcHJvdGVj
dGVkOiAvLyBGSVhNRTogTWFrZSB0aGUgZGF0YSBtZW1iZXJzIHByaXZhdGUuDQogICAgIGJvb2wg
Y2hpbGRyZW5Jbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5Jbml0aWFsaXpl
ZDsgfQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgNCmluZGV4IGUxNTk2MjFjODU0OS4uMTY3OWYwMWM1
MWRmIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlLmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQpAQCAtOTg4LDYgKzk4OCw3IEBAIHB1Ymxp
YzoNCiAgICAgdmlydHVhbCB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgPSAwOw0KICAgICB2aXJ0
dWFsIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIEZs
b2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxp
dHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0ID0gMDsNCisgICAgdmlydHVhbCBGbG9hdFJlY3QgdW5v
YnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNDaGVja2VkU3RhdGUoKSBjb25zdCA9IDA7DQogICAgIA0KICAgICAvLyBJbiBhIG11bHRpLXNl
bGVjdCBsaXN0LCBtYW55IGl0ZW1zIGNhbiBiZSBzZWxlY3RlZCBidXQgb25seSBvbmUgaXMgYWN0
aXZlIGF0IGEgdGltZS4NCkBAIC05OTcsNiArOTk4LDcgQEAgcHVibGljOg0KICAgICB2aXJ0dWFs
IGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIGhhc01p
c3NwZWxsaW5nKCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3Np
YmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCA9IDA7DQorICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4gdmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgY29uc3QgPSAwOw0KICAg
ICB2aXJ0dWFsIGJvb2wgaGFzUGxhaW5UZXh0KCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIGJv
b2wgaGFzU2FtZUZvbnQoY29uc3QgQVhDb3JlT2JqZWN0JikgY29uc3QgPSAwOw0KICAgICB2aXJ0
dWFsIGJvb2wgaGFzU2FtZUZvbnRDb2xvcihjb25zdCBBWENvcmVPYmplY3QmKSBjb25zdCA9IDA7
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQ0KaW5kZXggNWUwYzhjOGVi
YzY3Li45ODkzNDFhZmMyMTIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQ0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0NCkBAIC01Miw2ICs1Miw3IEBADQogI2ltcG9ydCAiU1ZHRWxlbWVudElubGluZXMuaCIN
CiAjaW1wb3J0ICJTVkdOYW1lcy5oIg0KICNpbXBvcnQgIlNlbGVjdGlvbkdlb21ldHJ5LmgiDQor
I2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCINCiAjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCINCiAjaW1w
b3J0ICJXQUtTY3JvbGxWaWV3LmgiDQogI2ltcG9ydCAiV0FLV2luZG93LmgiDQpAQCAtMTY5NCwx
MiArMTY5NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0
cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQ0KIHsNCiAgICAgaWYgKCFbc2VsZiBfcHJl
cGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCiAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOw0KLSAg
ICANCi0gICAgYXV0byBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgp
Ow0KLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQ0KLSAgICAgICAgcmV0
dXJuIENHUmVjdFplcm87DQotICAgIGF1dG8gcmVjdCA9IEZsb2F0UmVjdChzbmFwcGVkSW50UmVj
dChkb2N1bWVudC0+dmlldygpLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKSkpOw0KLSAgICByZXR1
cm4gW3NlbGYgY29udmVydFJlY3RUb1NwYWNlOnJlY3Qgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZl
cnNpb25TcGFjZTo6U2NyZWVuXTsNCisgICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0VG9TcGFj
ZTpzZWxmLmF4QmFja2luZ09iamVjdC0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgc3BhY2U6QWNj
ZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6U2NyZWVuXTsNCiB9DQogDQogLy8gVGhlICJjZW50
ZXIgcG9pbnQiIGlzIHdoZXJlIFZvaWNlT3ZlciB3aWxsICJwcmVzcyIgYW4gb2JqZWN0LiBUaGlz
IG1heSBub3QgYmUgdGhlIGFjdHVhbA0KQEAgLTE5MTUsNyArMTkxMSw3IEBAIHN0YXRpYyBOU0Fy
cmF5ICphY2Nlc3NpYmxlRWxlbWVudHNGb3JPYmplY3RzKGNvbnN0IEFYQ29yZU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoDQogICAgICAgICB9KTsNCiAgICAgfQ0KIA0KLSAgICByZXR1cm4gY29udmVy
dFRvTlNBcnJheShhY2Nlc3NpYmxlRWxlbWVudHMpOw0KKyAgICByZXR1cm4gbWFrZU5TQXJyYXko
YWNjZXNzaWJsZUVsZW1lbnRzKTsNCiB9DQogDQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlE
ZXRhaWxzRWxlbWVudHMNCkBAIC0yMTA0LDcgKzIxMDAsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0
KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgQWNjZXNzaWJpbGl0eVNlYXJj
aENyaXRlcmlhIGNyaXRlcmlhID0gYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNo
UHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShwYXJhbWV0ZXJzKTsNCiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdHM7DQogICAg
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5maW5kTWF0Y2hpbmdPYmplY3RzKCZjcml0ZXJpYSwgcmVz
dWx0cyk7DQotICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHJlc3VsdHMpOw0KKyAgICByZXR1
cm4gbWFrZU5TQXJyYXkocmVzdWx0cyk7DQogfQ0KIA0KIC0gKHZvaWQpYWNjZXNzaWJpbGl0eU1v
ZGlmeVNlbGVjdGlvbjooVGV4dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5IGluY3JlYXNlOihCT09M
KWluY3JlYXNlDQpAQCAtMjIwOSw0NyArMjIwNSw2IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICByZXR1cm4gcmFuZ2UgPyBbc2VsZiBj
b250ZW50Rm9yU2ltcGxlUmFuZ2U6KnJhbmdlIGF0dHJpYnV0ZWQ6YXR0cmlidXRlZF0gOiBuaWw7
DQogfQ0KIA0KLS8vIEZJWE1FOiBObyByZWFzb24gZm9yIHRoaXMgdG8gYmUgYSBtZXRob2QgaW5z
dGVhZCBvZiBhIGZ1bmN0aW9uLg0KLS0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNvbnN0
IFNpbXBsZVJhbmdlJilyYW5nZQ0KLXsNCi0gICAgYXV0byYgZG9jdW1lbnQgPSByYW5nZS5zdGFy
dC5kb2N1bWVudCgpOw0KLSAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7DQotICAg
IGlmICghZnJhbWUpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7
DQotDQotICAgIGF1dG8qIHJvb3RFZGl0YWJsZUVsZW1lbnQgPSBmcmFtZS0+c2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOw0KLSAgICBhdXRvKiBzY29wZSA9IHJv
b3RFZGl0YWJsZUVsZW1lbnQgPyByb290RWRpdGFibGVFbGVtZW50IDogZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50KCk7DQotICAgIGlmICghc2NvcGUpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFu
Z2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIC8vIE1vdXNlIGV2ZW50cyBtYXkgY2F1c2UgVFNN
IHRvIGF0dGVtcHQgdG8gY3JlYXRlIGFuIE5TUmFuZ2UgZm9yIGEgcG9ydGlvbiBvZiB0aGUgdmll
dw0KLSAgICAvLyB0aGF0IGlzIG5vdCBpbnNpZGUgdGhlIGN1cnJlbnQgZWRpdGFibGUgcmVnaW9u
LiBUaGVzZSBjaGVja3MgZW5zdXJlIHdlIGRvbid0IHByb2R1Y2UNCi0gICAgLy8gcG90ZW50aWFs
bHkgaW52YWxpZCBkYXRhIHdoZW4gcmVzcG9uZGluZyB0byBzdWNoIHJlcXVlc3RzLg0KLSAgICBp
ZiAoIXNjb3BlLT5jb250YWlucyhyYW5nZS5zdGFydC5jb250YWluZXIucHRyKCkpIHx8ICFzY29w
ZS0+Y29udGFpbnMocmFuZ2UuZW5kLmNvbnRhaW5lci5wdHIoKSkpDQotICAgICAgICByZXR1cm4g
TlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIHJldHVybiBOU01ha2VSYW5nZShj
aGFyYWN0ZXJDb3VudCh7IHsgKnNjb3BlLCAwIH0sIHJhbmdlLnN0YXJ0IH0pLCBjaGFyYWN0ZXJD
b3VudChyYW5nZSkpOw0KLX0NCi0NCi0tIChzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPilfY29u
dmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UNCi17DQotICAgIGlmIChyYW5nZS5sb2NhdGlv
biA9PSBOU05vdEZvdW5kKQ0KLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCi0NCi0gICAg
Ly8gb3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB3ZSBhcmUgb25seSBjYWxsZWQgYnkg
aW5wdXQgbWV0aG9kcyB0aGF0DQotICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBj
b250YWluaW5nIHRoZSBzZWxlY3Rpb24NCi0gICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1
c2Ugb2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90
DQotICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24g
aXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBpcw0KLSAgICAvLyB0byB1c2UgdGhlIHJvb3Qg
ZWRpdGFibGUgZWxlbWVudCBvZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFs
IGJhc2UuDQotICAgIC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQg
Y29udGV4dC4NCi0gICAgYXV0byBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1
bWVudCgpOw0KLSAgICBhdXRvIHNlbGVjdGlvblJvb3QgPSBkb2N1bWVudC0+ZnJhbWUoKS0+c2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOw0KLSAgICBhdXRvIHNj
b3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBkb2N1bWVudC0+ZG9jdW1lbnRF
bGVtZW50KCk7DQotICAgIGlmICghc2NvcGUpDQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
Ow0KLQ0KLSAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cygqc2NvcGUpLCByYW5nZSk7DQotfQ0KIA0KIC8vIFRoaXMgbWV0aG9kIGlz
IGludGVuZGVkIHRvIHRha2UgYSB0ZXh0IG1hcmtlciByZXByZXNlbnRpbmcgYSBWaXNpYmxlUG9z
aXRpb24gYW5kIGNvbnZlcnQgaXQNCiAvLyBpbnRvIGEgbm9ybWFsaXplZCBsb2NhdGlvbiB3aXRo
aW4gdGhlIGRvY3VtZW50Lg0KQEAgLTIyNjcsNyArMjIyMiw3IEBAIHN0YXRpYyBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICAgICAgYXV0byByYW5nZSA9
IGNhY2hlLT5yYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY2hhcmFjdGVyT2Zmc2V0
LCBjaGFyYWN0ZXJPZmZzZXQpOw0KICAgICAgICAgaWYgKCFyYW5nZSkNCiAgICAgICAgICAgICBy
ZXR1cm4gTlNOb3RGb3VuZDsNCi0gICAgICAgIHJldHVybiBbc2VsZiBfY29udmVydFRvTlNSYW5n
ZToqcmFuZ2VdLmxvY2F0aW9uOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU1JhbmdlKHJhbmdlKS5s
b2NhdGlvbjsNCiAgICAgfQ0KICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCiB9DQpAQCAtMjM0Niw3
ICsyMzAxLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcq
IHZpZXcpDQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQogICAg
ICAgICByZXR1cm4gbmlsOw0KIA0KLSAgICBhdXRvIHJhbmdlID0gW3NlbGYgX2NvbnZlcnRUb0RP
TVJhbmdlOk5TTWFrZVJhbmdlKHBvc2l0aW9uLCAwKV07DQorICAgIGF1dG8gcmFuZ2UgPSBtYWtl
RE9NUmFuZ2Uoc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCksIE5TTWFrZVJhbmdlKHBv
c2l0aW9uLCAwKSk7DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm4gbmlsOw0KIA0K
QEAgLTI0MTQsNyArMjM2OSw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmll
dyhXQUtWaWV3KiB2aWV3KQ0KIHsNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxp
dHlDYWxsXSkNCiAgICAgICAgIHJldHVybiBuaWw7DQotICAgIGF1dG8gd2ViUmFuZ2UgPSBbc2Vs
ZiBfY29udmVydFRvRE9NUmFuZ2U6cmFuZ2VdOw0KKyAgICBhdXRvIHdlYlJhbmdlID0gbWFrZURP
TVJhbmdlKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpLCByYW5nZSk7DQogICAgIGlm
ICghd2ViUmFuZ2UpDQogICAgICAgICByZXR1cm4gbmlsOw0KICAgICByZXR1cm4gc2VsZi5heEJh
Y2tpbmdPYmplY3QtPnN0cmluZ0ZvclJhbmdlKCp3ZWJSYW5nZSk7DQpAQCAtMjYwMCw2ICsyNTU1
LDE3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3
KQ0KICAgICByZXR1cm4gW3NlbGYgcHJldmlvdXNNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6c3Rh
cnRdOw0KIH0NCiANCistIChDR1JlY3QpZnJhbWVGb3JSYW5nZTooTlNSYW5nZSlyYW5nZQ0KK3sN
CisgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCisgICAgICAgIHJl
dHVybiBDR1JlY3RaZXJvOw0KKyAgICBhdXRvIHdlYlJhbmdlID0gbWFrZURPTVJhbmdlKHNlbGYu
YXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpLCByYW5nZSk7DQorICAgIGlmICghd2ViUmFuZ2Up
DQorICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCisgICAgYXV0byByZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmJvdW5kc0ZvclJhbmdlKCp3ZWJSYW5nZSk7DQorICAgIHJldHVybiBbc2Vs
ZiBjb252ZXJ0UmVjdFRvU3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNw
YWNlOjpTY3JlZW5dOw0KK30NCisNCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byByZXR1
cm4gdGhlIGJvdW5kcyBvZiBhIHRleHQgbWFya2VyIHJhbmdlIGluIHNjcmVlbiBjb29yZGluYXRl
cy4NCiAtIChDR1JlY3QpZnJhbWVGb3JUZXh0TWFya2VyczooTlNBcnJheSAqKWFycmF5DQogew0K
QEAgLTI5MzEsNyArMjg5Nyw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmll
dyhXQUtWaWV3KiB2aWV3KQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiANCiAgICAgYXV0byByYWRp
Y2FuZCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5tYXRoUmFkaWNhbmQoKTsNCi0gICAgcmV0dXJu
IHJhZGljYW5kID8gY29udmVydFRvTlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KKyAgICByZXR1
cm4gcmFkaWNhbmQgPyBtYWtlTlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KIH0NCiANCiAtIChX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqKWFjY2Vzc2liaWxpdHlNYXRoTnVtZXJhdG9y
T2JqZWN0DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0KaW5kZXggMTFhNzliMTIxNzJkLi4z
Njk1MmY5NDA4ZmIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCkBAIC05OTIsNiAr
OTkyLDEzIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkNCiAg
ICAgICAgIHRyZWUtPmFwcGx5UGVuZGluZ0NoYW5nZXMoKTsNCiB9DQogDQorc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gQVhJc29sYXRlZE9iamVjdDo6dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkg
Y29uc3QNCit7DQorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7DQorICAgIGF1dG8qIGF4T2Jq
ZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0KCk7DQorICAgIHJldHVybiBheE9iamVjdCA/IGF4T2Jq
ZWN0LT52aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSA6IHN0ZDo6bnVsbG9wdDsNCit9DQorDQogc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJc29sYXRlZE9iamVjdDo6cmFuZ2VGb3JQbGFpblRl
eHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYgYXhSYW5nZSkgY29uc3QNCiB7DQogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7DQpAQCAtMTQ3MCw2ICsxNDc3LDE1IEBAIHZvaWQgQVhJc29s
YXRlZE9iamVjdDo6c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxl
UG9zaXRpb25SYW5nDQogICAgICAgICBvYmplY3QtPnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9u
UmFuZ2UodmlzaWJsZVBvc2l0aW9uUmFuZ2UpOw0KIH0NCiANCitGbG9hdFJlY3QgQVhJc29sYXRl
ZE9iamVjdDo6dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3QNCit7DQorICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8RmxvYXRSZWN0PihbdGhp
c10gKCkgLT4gRmxvYXRSZWN0IHsNCisgICAgICAgIGlmIChhdXRvKiBvYmplY3QgPSBhc3NvY2lh
dGVkQVhPYmplY3QoKSkNCisgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT51bm9ic2N1cmVkQ29u
dGVudFJlY3QoKTsNCisgICAgICAgIHJldHVybiB7IH07DQorICAgIH0pOw0KK30NCisNCiBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50UmFuZ2UoKSBj
b25zdA0KIHsNCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmgNCmluZGV4IDNiNGVlYTFmYmI1OC4uYmE2M2RjMjcyMWQyIDEwMDY0NA0KLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5o
DQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmgNCkBAIC00NDEsOSArNDQxLDExIEBAIHByaXZhdGU6DQogICAgIEFYQ29yZU9i
amVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBpbnQgbGluZUZvclBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBQbGFpblRleHRSYW5nZSBwbGFpblRl
eHRSYW5nZUZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdl
JikgY29uc3Qgb3ZlcnJpZGU7DQorICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHZpc2li
bGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBpbnQgaW5kZXgoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7DQogICAgIHZvaWQgbGluZUJyZWFrcyhW
ZWN0b3I8aW50PiYpIGNvbnN0IG92ZXJyaWRlOw0KLQ0KKyAgICBGbG9hdFJlY3QgdW5vYnNjdXJl
ZENvbnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7DQorICAgIA0KICAgICAvLyBBdHRyaWJ1dGUg
c2V0dGVycy4NCiAgICAgdm9pZCBzZXRBUklBR3JhYmJlZChib29sKSBvdmVycmlkZTsNCiAgICAg
dm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIG92ZXJyaWRlOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLmgNCmluZGV4IGVlYTNlNjlkZWQ5My4uYWMyYmRiZmUyYWM1IDEwMDY0
NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oDQpAQCAtMzQsNiArMzQsNyBA
QA0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiBzdHJ1Y3QgQWNjZXNzaWJpbGl0eVNlYXJjaENy
aXRlcmlhOw0KK2NsYXNzIERvY3VtZW50Ow0KIGNsYXNzIEludFJlY3Q7DQogY2xhc3MgRmxvYXRQ
b2ludDsNCiBjbGFzcyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDsNCkBAIC0xMTEsMTEgKzEx
MiwxNSBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlUZXh0dWFsQ29u
dGV4dFNvdXJjZUNvZGUgPSBAIlVJQWNjZXNzaWJpbA0KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmls
aXR5TWF0aFBvc3RzY3JpcHRQYWlyczsNCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQ
cmVzY3JpcHRQYWlyczsNCiANCistIChOU1JhbmdlKWFjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFj
dGVyUmFuZ2U7DQorDQogLSAoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWJhc2VBY2Nl
c3NpYmlsaXR5UmVzb2x2ZWRFZGl0aW5nU3R5bGVzOw0KIA0KIGV4dGVybiBXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2Vh
cmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShjb25zdCBOU0RpY3Rpb25hcnkgKik7
DQogDQotZXh0ZXJuIE5TQXJyYXkgKmNvbnZlcnRUb05TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhD
b3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsNCitleHRlcm4gTlNBcnJh
eSAqbWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKTsNCitleHRlcm4gTlNSYW5nZSBtYWtlTlNSYW5nZShzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPik7DQorZXh0ZXJuIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+IG1ha2VET01SYW5nZShXZWJDb3JlOjpEb2N1bWVudCosIE5TUmFuZ2Up
Ow0KIA0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQ0KIC0gKGlkKV9hY2Nlc3NpYmlsaXR5V2Vi
RG9jdW1lbnRWaWV3Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQ0K
aW5kZXggMWU1NjkxZDE5ZjkyLi41ZjdhZDI4NjllNzQgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
bW0NCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbQ0KQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgTlNBcnJh
eSAqY29udmVydE1hdGhQYWlyc1RvTlNBcnJheShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaQ0KICAgICB9KS5hdXRvcmVsZWFzZSgpOw0KIH0NCiANCi1OU0FycmF5ICpjb252
ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBjaGlsZHJlbikNCitOU0FycmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJD
b3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4p
DQogew0KICAgICByZXR1cm4gY3JlYXRlTlNBcnJheShjaGlsZHJlbiwgW10gKGNvbnN0IGF1dG8m
IGNoaWxkKSAtPiBpZCB7DQogICAgICAgICBhdXRvIHdyYXBwZXIgPSBjaGlsZC0+d3JhcHBlcigp
Ow0KQEAgLTQ2Miw2ICs0NjIsMjcgQEAgc3RhdGljIHZvaWQgY29udmVydFBhdGhUb1NjcmVlblNw
YWNlRnVuY3Rpb24oUGF0aENvbnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBjb24NCiAgICAgcmV0
dXJuIGNvbnZlcnRlZFBhdGguYXV0b3JlbGVhc2UoKTsNCiB9DQogDQorLy8gRGV0ZXJtaW5lIHRo
ZSB2aXNpYmxlIHJhbmdlIGJ5IGNoZWNraW5nIGludGVyc2VjdGlvbiBvZiB1bm9ic2N1cmVkQ29u
dGVudFJlY3QgYW5kIGEgcmFuZ2Ugb2YgdGV4dCBieQ0KKy8vIGFkdmFuY2luZyBmb3J3YXJkIGJ5
IGxpbmUgZnJvbSB0b3AgYW5kIGJhY2t3YXJkcyBieSBsaW5lIGZyb20gdGhlIGJvdHRvbSwgdW50
aWwgd2UgaGF2ZSBhIHZpc2libGUgcmFuZ2UuDQorLSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5Vmlz
aWJsZUNoYXJhY3RlclJhbmdlDQorew0KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmll
dmVWYWx1ZUZyb21NYWluVGhyZWFkPE5TUmFuZ2U+KFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpXSAoKSAtPiBOU1JhbmdlIHsNCisgICAgICAgIGF1dG8gYmFja2luZ09iamVjdCA9IHBy
b3RlY3RlZFNlbGYuZ2V0KCkuYmFzZVVwZGF0ZUJhY2tpbmdTdG9yZTsNCisgICAgICAgIGlmICgh
YmFja2luZ09iamVjdCkNCisgICAgICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3Vu
ZCwgMCk7DQorDQorICAgICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VOU1JhbmdlKGJhY2tp
bmdPYmplY3QtPmVsZW1lbnRSYW5nZSgpKTsNCisgICAgICAgIGlmIChlbGVtZW50UmFuZ2UubG9j
YXRpb24gPT0gTlNOb3RGb3VuZCkNCisgICAgICAgICAgICByZXR1cm4gZWxlbWVudFJhbmdlOw0K
KyAgICAgICAgDQorICAgICAgICBhdXRvIHZpc2libGVSYW5nZSA9IG1ha2VOU1JhbmdlKGJhY2tp
bmdPYmplY3QtPnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpKTsNCisgICAgICAgIGlmICh2aXNpYmxl
UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkNCisgICAgICAgICAgICByZXR1cm4gdmlzaWJs
ZVJhbmdlOw0KKw0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKHZpc2libGVSYW5nZS5sb2Nh
dGlvbiAtIGVsZW1lbnRSYW5nZS5sb2NhdGlvbiwgdmlzaWJsZVJhbmdlLmxlbmd0aCk7DQorICAg
IH0pOw0KK30NCisNCiAtIChpZClfYWNjZXNzaWJpbGl0eVdlYkRvY3VtZW50Vmlldw0KIHsNCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7DQpAQCAtNjIzLDYgKzY0NCw1MCBAQCBzdGF0aWMgdm9p
ZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcq
IGF0dHJTdHJpbmcsDQogICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TGFuZ3VhZ2UoYXR0clN0cmlu
Zywgbm9kZS0+cmVuZGVyZXIoKSwgYXR0clN0cmluZ1JhbmdlKTsNCiB9DQogDQorDQorTlNSYW5n
ZSBtYWtlTlNSYW5nZShzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZSkNCit7DQorICAg
IGlmICghcmFuZ2UpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7
DQorICAgIA0KKyAgICBhdXRvJiBkb2N1bWVudCA9IHJhbmdlLT5zdGFydC5kb2N1bWVudCgpOw0K
KyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7DQorICAgIGlmICghZnJhbWUpDQor
ICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQorDQorICAgIGF1dG8q
IHJvb3RFZGl0YWJsZUVsZW1lbnQgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9v
dEVkaXRhYmxlRWxlbWVudCgpOw0KKyAgICBhdXRvKiBzY29wZSA9IHJvb3RFZGl0YWJsZUVsZW1l
bnQgPyByb290RWRpdGFibGVFbGVtZW50IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCk7DQor
ICAgIGlmICghc2NvcGUpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwg
MCk7DQorDQorICAgIC8vIE1vdXNlIGV2ZW50cyBtYXkgY2F1c2UgVFNNIHRvIGF0dGVtcHQgdG8g
Y3JlYXRlIGFuIE5TUmFuZ2UgZm9yIGEgcG9ydGlvbiBvZiB0aGUgdmlldw0KKyAgICAvLyB0aGF0
IGlzIG5vdCBpbnNpZGUgdGhlIGN1cnJlbnQgZWRpdGFibGUgcmVnaW9uLiBUaGVzZSBjaGVja3Mg
ZW5zdXJlIHdlIGRvbid0IHByb2R1Y2UNCisgICAgLy8gcG90ZW50aWFsbHkgaW52YWxpZCBkYXRh
IHdoZW4gcmVzcG9uZGluZyB0byBzdWNoIHJlcXVlc3RzLg0KKyAgICBpZiAoIXNjb3BlLT5jb250
YWlucyhyYW5nZS0+c3RhcnQuY29udGFpbmVyLnB0cigpKSB8fCAhc2NvcGUtPmNvbnRhaW5zKHJh
bmdlLT5lbmQuY29udGFpbmVyLnB0cigpKSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShO
U05vdEZvdW5kLCAwKTsNCisNCisgICAgcmV0dXJuIE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50
KHsgeyAqc2NvcGUsIDAgfSwgcmFuZ2UtPnN0YXJ0IH0pLCBjaGFyYWN0ZXJDb3VudCgqcmFuZ2Up
KTsNCit9DQorDQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFrZURPTVJhbmdlKERvY3Vt
ZW50KiBkb2N1bWVudCwgTlNSYW5nZSByYW5nZSkNCit7DQorICAgIGlmIChyYW5nZS5sb2NhdGlv
biA9PSBOU05vdEZvdW5kKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAg
Ly8gb3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB3ZSBhcmUgb25seSBjYWxsZWQgYnkg
aW5wdXQgbWV0aG9kcyB0aGF0DQorICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBj
b250YWluaW5nIHRoZSBzZWxlY3Rpb24NCisgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1
c2Ugb2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90
DQorICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24g
aXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBpcw0KKyAgICAvLyB0byB1c2UgdGhlIHJvb3Qg
ZWRpdGFibGUgZWxlbWVudCBvZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFs
IGJhc2UuDQorICAgIC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQg
Y29udGV4dC4NCisgICAgYXV0byBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCisgICAgYXV0byBz
Y29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpOw0KKyAgICBpZiAoIXNjb3BlKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsNCisNCisgICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMoKnNjb3BlKSwgcmFuZ2UpOw0KK30NCisNCiAvLyBSZXR1cm5zIGFuIGFy
cmF5IG9mIHN0cmluZ3MgYW5kIEFYT2JqZWN0IHdyYXBwZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhl
IHRleHQNCiAvLyBydW5zIGFuZCByZXBsYWNlbWVudCBub2RlcyBpbmNsdWRlZCBpbiB0aGUgZ2l2
ZW4gcmFuZ2UuDQogLSAoTlNBcnJheSAqKWNvbnRlbnRGb3JTaW1wbGVSYW5nZTooY29uc3QgU2lt
cGxlUmFuZ2UmKXJhbmdlIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmlidXRlZA0KQEAgLTY3NiwxOCAr
NzQxLDI2IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRh
YmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywNCiAgICAgcmV0dXJuIGFycmF5LmF1dG9y
ZWxlYXNlKCk7DQogfQ0KIA0KLS0gKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopbGluZVJlY3Rz
QW5kVGV4dA0KKy0gKFdlYkNvcmU6OkFYQ29yZU9iamVjdCopYmFzZVVwZGF0ZUJhY2tpbmdTdG9y
ZQ0KIHsNCiAjaWYgUExBVEZPUk0oTUFDKQ0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2Vs
Zi51cGRhdGVPYmplY3RCYWNraW5nU3RvcmU7DQogICAgIGlmICghYmFja2luZ09iamVjdCkNCi0g
ICAgICAgIHJldHVybiBuaWw7DQorICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAjZWxzZQ0KICAg
ICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KLSAgICAgICAgcmV0dXJu
IG5pbDsNCisgICAgICAgIHJldHVybiBudWxscHRyOw0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0
ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7DQogI2VuZGlmDQorICAgIHJldHVybiBiYWNraW5nT2Jq
ZWN0Ow0KK30NCiANCistIChOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKWxpbmVSZWN0c0FuZFRl
eHQNCit7DQorICAgIGF1dG8gYmFja2luZ09iamVjdCA9IHNlbGYuYmFzZVVwZGF0ZUJhY2tpbmdT
dG9yZTsNCisgICAgaWYgKCFiYWNraW5nT2JqZWN0KQ0KKyAgICAgICAgcmV0dXJuIG5pbDsNCisg
ICAgDQogICAgIGF1dG8gcmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5lbGVtZW50UmFuZ2UoKTsNCiAg
ICAgaWYgKCFyYW5nZSkNCiAgICAgICAgIHJldHVybiBuaWw7DQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQ0KaW5kZXggNzAwNGM0NmI2NDM5Li5kNjk0MWY4MmYxMjIgMTAw
NjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQ0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCkBAIC0xNzk1LDcgKzE3
OTUsNyBAQCBzdGF0aWMgdm9pZCBXZWJUcmFuc2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lk
KiBpbmZvLCBjb25zdCBDR1BhdGhFbGVtZW50ICplbA0KIA0KIC0gKE5TQXJyYXk8V2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgKj4gKiljaGlsZHJlblZlY3RvckFycmF5DQogew0KLSAgICBy
ZXR1cm4gY29udmVydFRvTlNBcnJheShzZWxmLmF4QmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7
DQorICAgIHJldHVybiBtYWtlTlNBcnJheShzZWxmLmF4QmFja2luZ09iamVjdC0+Y2hpbGRyZW4o
KSk7DQogfQ0KIA0KIC0gKE5TVmFsdWUgKilwb3NpdGlvbg0KQEAgLTIyMDMsNyArMjIwMyw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKGJhY2tp
bmdPYmplY3QtPmlzVHJlZUl0ZW0oKSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250ZW50Q29weTsNCiAgICAgICAgICAg
ICBiYWNraW5nT2JqZWN0LT5hcmlhVHJlZUl0ZW1Db250ZW50KGNvbnRlbnRDb3B5KTsNCi0gICAg
ICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShjb250ZW50Q29weSk7DQorICAgICAgICAg
ICAgcmV0dXJuIG1ha2VOU0FycmF5KGNvbnRlbnRDb3B5KTsNCiAgICAgICAgIH0NCiANCiAgICAg
ICAgIHJldHVybiBzZWxmLmNoaWxkcmVuVmVjdG9yQXJyYXk7DQpAQCAtMjIxMyw3ICsyMjEzLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoYmFj
a2luZ09iamVjdC0+Y2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4oKSkgew0KICAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENo
aWxkcmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZENoaWxkcmVu
KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNB
cnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCiAgICAgICAgIH0NCiAgICAgICAgIHJldHVybiBu
aWw7DQogICAgIH0NCkBAIC0yMjIyLDcgKzIyMjIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0xpc3RCb3goKSkg
ew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciB2aXNpYmxlQ2hpbGRyZW5Db3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3Qt
PnZpc2libGVDaGlsZHJlbih2aXNpYmxlQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1
cm4gY29udmVydFRvTlNBcnJheSh2aXNpYmxlQ2hpbGRyZW5Db3B5KTsNCisgICAgICAgICAgICBy
ZXR1cm4gbWFrZU5TQXJyYXkodmlzaWJsZUNoaWxkcmVuQ29weSk7DQogICAgICAgICB9DQogDQog
ICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNMaXN0KCkpDQpAQCAtMjIzNCw3ICsyMjM0LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogDQogICAgIGlmIChiYWNr
aW5nT2JqZWN0LT5pc1dlYkFyZWEoKSkgew0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpAIkFYTGlua1VJRWxlbWVudHMiXSkNCi0gICAgICAgICAgICByZXR1cm4g
Y29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5kb2N1bWVudExpbmtzKCkpOw0KKyAgICAg
ICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5kb2N1bWVudExpbmtzKCkp
Ow0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYTG9h
ZGVkIl0pDQogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpiYWNr
aW5nT2JqZWN0LT5pc0xvYWRlZCgpXTsNCkBAIC0yMjY3LDE2ICsyMjY3LDIxIEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIFBsYWluVGV4dFJhbmdl
IHRleHRSYW5nZSA9IGJhY2tpbmdPYmplY3QtPnNlbGVjdGVkVGV4dFJhbmdlKCk7DQogICAgICAg
ICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHRleHRSYW5n
ZS5zdGFydCwgdGV4dFJhbmdlLmxlbmd0aCldOw0KICAgICAgICAgfQ0KLSAgICAgICAgLy8gVE9E
TzogR2V0IGFjdHVhbCB2aXNpYmxlIHJhbmdlLiA8cmRhcjovL3Byb2JsZW0vNDcxMjEwMT4NCi0g
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0
eVZpc2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGJh
Y2tpbmdPYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpID8gbmlsIDogW05TVmFsdWUgdmFsdWVXaXRo
UmFuZ2U6IE5TTWFrZVJhbmdlKDAsIGJhY2tpbmdPYmplY3QtPnRleHRMZW5ndGgoKSldOw0KLQ0K
ICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlJbnNlcnRpb25Qb2ludExpbmVOdW1iZXJBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgaW50
IGxpbmVOdW1iZXIgPSBiYWNraW5nT2JqZWN0LT5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXIoKTsN
CiAgICAgICAgICAgICByZXR1cm4gbGluZU51bWJlciA+PSAwID8gQChsaW5lTnVtYmVyKSA6IG5p
bDsNCiAgICAgICAgIH0NCiAgICAgfQ0KIA0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVd
KSB7DQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkpDQorICAg
ICAgICAgICAgcmV0dXJuIG5pbDsNCisgICAgICAgIC8vIFRPRE86IEdldCBhY3R1YWwgdmlzaWJs
ZSByYW5nZS4gPHJkYXI6Ly9wcm9ibGVtLzQ3MTIxMDE+DQorICAgICAgICBpZiAoYmFja2luZ09i
amVjdC0+aXNUZXh0Q29udHJvbCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1
ZVdpdGhSYW5nZTpOU01ha2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0LT50ZXh0TGVuZ3RoKCkpXTsN
CisgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpbc2VsZiBhY2Nlc3NpYmls
aXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlXV07DQorICAgIH0NCisNCiAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXSkgew0K
ICAgICAgICAgVVJMIHVybCA9IGJhY2tpbmdPYmplY3QtPnVybCgpOw0KICAgICAgICAgaWYgKHVy
bC5pc051bGwoKSkNCkBAIC0yMzgwLDcgKzIzODUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQNCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlJbWFnZU92ZXJsYXlFbGVtZW50c0F0dHJpYnV0ZV0pIHsNCiAgICAg
ICAgIGF1dG8gaW1hZ2VPdmVybGF5RWxlbWVudHMgPSBiYWNraW5nT2JqZWN0LT5pbWFnZU92ZXJs
YXlFbGVtZW50cygpOw0KLSAgICAgICAgcmV0dXJuIGltYWdlT3ZlcmxheUVsZW1lbnRzID8gY29u
dmVydFRvTlNBcnJheSgqaW1hZ2VPdmVybGF5RWxlbWVudHMpIDogbmlsOw0KKyAgICAgICAgcmV0
dXJuIGltYWdlT3ZlcmxheUVsZW1lbnRzID8gbWFrZU5TQXJyYXkoKmltYWdlT3ZlcmxheUVsZW1l
bnRzKSA6IG5pbDsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbkF0dHJpYnV0ZV0p
DQpAQCAtMjQwNCwyOSArMjQwOSwyOSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19FTkQNCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYkxpc3QoKSkgew0KICAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB0
YWJzQ2hpbGRyZW47DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+dGFiQ2hpbGRyZW4odGFi
c0NoaWxkcmVuKTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheSh0YWJzQ2hp
bGRyZW4pOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheSh0YWJzQ2hpbGRyZW4pOw0K
ICAgICAgICAgfQ0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgcmV0dXJu
IGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y29udGVudHMoKSk7DQorICAgICAgICBy
ZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29udGVudHMoKSk7DQogDQogICAgIGlm
IChiYWNraW5nT2JqZWN0LT5pc1RhYmxlKCkgJiYgYmFja2luZ09iamVjdC0+aXNFeHBvc2FibGUo
KSkgew0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlSb3dzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNB
cnJheShiYWNraW5nT2JqZWN0LT5yb3dzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNB
cnJheShiYWNraW5nT2JqZWN0LT5yb3dzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0p
DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+dmlz
aWJsZVJvd3MoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmpl
Y3QtPnZpc2libGVSb3dzKCkpOw0KIA0KICAgICAgICAgLy8gVE9ETzogZGlzdGluZ3Vpc2ggYmV0
d2VlbiB2aXNpYmxlIGFuZCBub24tdmlzaWJsZSBjb2x1bW5zDQogICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVd
DQogICAgICAgICAgICAgfHwgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVZpc2libGVDb2x1bW5zQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29u
dmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5zKCkpOw0KKyAgICAgICAgICAgIHJl
dHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5zKCkpOw0KIA0KICAgICAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3Rl
ZFJvd3NBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW5Db3B5Ow0KICAgICAgICAg
ICAgIGJhY2tpbmdPYmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbkNvcHkp
Ow0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5D
b3B5KTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNv
cHkpOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgLy8gSFRNTCB0YWJsZXMgZG9uJ3Qgc3VwcG9y
dCB0aGVzZSBhdHRyaWJ1dGVzLg0KQEAgLTI0MzUsNyArMjQ0MCw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIHJldHVybiBuaWw7DQogDQogICAg
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNv
bHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252
ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQorICAgICAgICAg
ICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQog
DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eUhlYWRlckF0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBhdXRvKiBoZWFkZXJDb250YWlu
ZXIgPSBiYWNraW5nT2JqZWN0LT5oZWFkZXJDb250YWluZXIoKTsNCkBAIC0yNDQzLDEwICsyNDQ4
LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgfQ0K
IA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4g
Y29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KKyAgICAgICAg
ICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KIA0K
ICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlWaXNpYmxlQ2VsbHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KGJhY2tpbmdPYmplY3QtPmNlbGxzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtl
TlNBcnJheShiYWNraW5nT2JqZWN0LT5jZWxscygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uQ291bnRBdHRyaWJ1
dGVdKQ0KICAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmNvbHVtbkNvdW50KCkp
Ow0KQEAgLTI0NjgsNyArMjQ3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORA0KICAgICAgICAgLy8gcm93cyBhdHRyaWJ1dGUgZm9yIGEgY29sdW1uIGlzIHRoZSBsaXN0
IG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhhdCBjb2x1bW4gYXQgZWFjaCByb3cNCiAgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0
dHJpYnV0ZV0NCiAgICAgICAgICAgICB8fCBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KKyAgICAgICAg
ICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpKTsNCiANCiAg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
SGVhZGVyQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIGF1dG8qIGhlYWRlciA9IGJhY2tpbmdP
YmplY3QtPmNvbHVtbkhlYWRlcigpOw0KQEAgLTI0ODgsMTAgKzI0OTMsMTAgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICB9DQogDQogICAgICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkhlYWRl
clVJRWxlbWVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQorICAgICAgICAgICAgcmV0dXJu
IG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQogDQogICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd0hl
YWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7DQorICAgICAgICAgICAgcmV0dXJu
IG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7DQogDQogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFSSUFDb2x1
bW5JbmRleEF0dHJpYnV0ZV0pDQogICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+
YXhDb2x1bW5JbmRleCgpKTsNCkBAIC0yNTA0LDEyICsyNTA5LDEyIEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdKSB7DQogICAg
ICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IHNlbGVjdGVkQ2hpbGRyZW5Db3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnNlbGVj
dGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KLSAgICAgICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCisgICAgICAgICAgICByZXR1
cm4gbWFrZU5TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KICAgICAgICAgfQ0KICAgICAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dz
QXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciByb3dzQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0
LT5hcmlhVHJlZVJvd3Mocm93c0NvcHkpOw0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KHJvd3NDb3B5KTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkocm93c0Nv
cHkpOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgLy8gVHJlZVJvbGVzIGRvIG5vdCBzdXBwb3J0
IGNvbHVtbnMsIGJ1dCBNYWMgQVggZXhwZWN0cyB0byBiZSBhYmxlIHRvIGFzayBhYm91dCBjb2x1
bW5zIGF0IHRoZSBsZWFzdC4NCkBAIC0yNTQ0LDcgKzI1NDksNyBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgLy8gVGhlIHJvd3MgdGhhdCBhcmUgY29uc2lkZXJl
ZCBpbnNpZGUgdGhpcyByb3cuDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIGlm
IChiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkgfHwgYmFja2luZ09iamVjdC0+aXNBUklBVHJl
ZUdyaWRSb3coKSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5n
T2JqZWN0LT5kaXNjbG9zZWRSb3dzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJh
eShiYWNraW5nT2JqZWN0LT5kaXNjbG9zZWRSb3dzKCkpOw0KICAgICB9DQogDQogICAgIC8vIFRo
ZSByb3cgdGhhdCBjb250YWlucyB0aGlzIHJvdy4gSXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRo
ZSBmaXJzdCBwYXJlbnQgdGhhdCBpcyBhIHRyZWVpdGVtLg0KQEAgLTI2MTIsNyArMjYxNyw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0
cmlidXRlXSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGxpbmtlZFVJRWxlbWVudHM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5s
aW5rZWRVSUVsZW1lbnRzKGxpbmtlZFVJRWxlbWVudHMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZl
cnRUb05TQXJyYXkobGlua2VkVUlFbGVtZW50cyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJy
YXkobGlua2VkVUlFbGVtZW50cyk7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1dGVdKQ0KQEAg
LTI2ODUsNyArMjY5MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0K
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU93
bnNBdHRyaWJ1dGVdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlh
T3duc0VsZW1lbnRzKGFyaWFPd25zKTsNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5
KGFyaWFPd25zKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShhcmlhT3ducyk7DQogICAg
IH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlBUklBUG9zSW5TZXRBdHRyaWJ1dGVdKQ0KQEAgLTI3NTEsNyArMjc1Niw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoUm9vdFJhZGljYW5kQXR0
cmlidXRlXSkgew0KICAgICAgICAgICAgIGF1dG8gcmFkaWNhbmQgPSBiYWNraW5nT2JqZWN0LT5t
YXRoUmFkaWNhbmQoKTsNCi0gICAgICAgICAgICByZXR1cm4gcmFkaWNhbmQgPyBjb252ZXJ0VG9O
U0FycmF5KCpyYWRpY2FuZCkgOiBuaWw7DQorICAgICAgICAgICAgcmV0dXJuIHJhZGljYW5kID8g
bWFrZU5TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aEZyYWN0
aW9uTnVtZXJhdG9yQXR0cmlidXRlXSkNCkBAIC0yODQ1LDcgKzI4NTAsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpAIkFYRGV0YWlsc0VsZW1lbnRzIl0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXRhaWxzOw0KICAgICAgICAg
YmFja2luZ09iamVjdC0+YXJpYURldGFpbHNFbGVtZW50cyhkZXRhaWxzKTsNCi0gICAgICAgIHJl
dHVybiBjb252ZXJ0VG9OU0FycmF5KGRldGFpbHMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGRldGFpbHMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QnJhaWxsZUxhYmVsQXR0cmlidXRlXSkNCkBAIC0yODYw
LDcgKzI4NjUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYRXJyb3JNZXNzYWdlRWxlbWVu
dHMiXSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGVycm9yTWVzc2FnZXM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhRXJy
b3JNZXNzYWdlRWxlbWVudHMoZXJyb3JNZXNzYWdlcyk7DQotICAgICAgICByZXR1cm4gY29udmVy
dFRvTlNBcnJheShlcnJvck1lc3NhZ2VzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShl
cnJvck1lc3NhZ2VzKTsNCiAgICAgfQ0KIA0KICAgICAvLyBNdWx0aS1zZWxlY3RhYmxlDQpAQCAt
Mjg3OCw3ICsyODgzLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QXJp
YUNvbnRyb2xzQXR0cmlidXRlXSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFDb250cm9sczsNCiAgICAgICAgIGJhY2tpbmdP
YmplY3QtPmFyaWFDb250cm9sc0VsZW1lbnRzKGFyaWFDb250cm9scyk7DQotICAgICAgICByZXR1
cm4gY29udmVydFRvTlNBcnJheShhcmlhQ29udHJvbHMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VO
U0FycmF5KGFyaWFDb250cm9scyk7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlGb2N1c2FibGVBbmNlc3RvckF0dHJpYnV0
ZV0pIHsNCkBAIC0zNDI4LDIyICszNDMzLDYgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5EDQogICAgIH0pOw0KIH0NCiANCi0vLyBGSVhNRTogTm8gcmVhc29uIGZvciB0aGlz
IHRvIGJlIGEgbWV0aG9kIGluc3RlYWQgb2YgYSBmdW5jdGlvbjsgY2FuIGdldCBkb2N1bWVudCBm
cm9tIHJhbmdlLg0KLS0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNvbnN0IFNpbXBsZVJh
bmdlJilyYW5nZQ0KLXsNCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsNCi0gICAgDQotICAg
IGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCi0gICAg
aWYgKCFkb2N1bWVudCkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAw
KTsNCi0NCi0gICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVt
ZW50KCk7DQotICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQ0KLSAgICAgICAgcmV0dXJuIE5TTWFr
ZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICByZXR1cm4gY2hhcmFjdGVyUmFuZ2UobWFr
ZUJvdW5kYXJ5UG9pbnRCZWZvcmVOb2RlQ29udGVudHMoKmRvY3VtZW50RWxlbWVudCksIHJhbmdl
KTsNCi19DQotDQogLSAoTlNJbnRlZ2VyKV9pbmRleEZvclRleHRNYXJrZXI6KEFYVGV4dE1hcmtl
clJlZiltYXJrZXINCiB7DQogICAgIGlmICghbWFya2VyKQ0KQEAgLTM0NjAsNyArMzQ0OSw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIGlmICgh
cmFuZ2UpDQogICAgICAgICAgICAgICAgIHJldHVybiBOU05vdEZvdW5kOw0KIA0KLSAgICAgICAg
ICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiBfY29udmVydFRvTlNSYW5nZToqcmFuZ2VdLmxvY2F0
aW9uOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNSYW5nZShyYW5nZSkubG9jYXRpb247DQog
ICAgICAgICB9DQogDQogICAgICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCkBAIC0zODM1LDggKzM4
MjQsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOw0K
ICAgICAgICAgYmFja2luZ09iamVjdC0+ZmluZE1hdGNoaW5nT2JqZWN0cygmY3JpdGVyaWEsIHJl
c3VsdHMpOw0KICAgICAgICAgaWYgKHdpZGdldENoaWxkcmVuKQ0KLSAgICAgICAgICAgIHJldHVy
biBbd2lkZ2V0Q2hpbGRyZW4gYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6Y29udmVydFRv
TlNBcnJheShyZXN1bHRzKV07DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShyZXN1
bHRzKTsNCisgICAgICAgICAgICByZXR1cm4gW3dpZGdldENoaWxkcmVuIGFycmF5QnlBZGRpbmdP
YmplY3RzRnJvbUFycmF5Om1ha2VOU0FycmF5KHJlc3VsdHMpXTsNCisgICAgICAgIHJldHVybiBt
YWtlTlNBcnJheShyZXN1bHRzKTsNCiAgICAgfQ0KIA0KICAgICAvLyBUZXh0TWFya2VyIGF0dHJp
YnV0ZXMuDQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0NCmluZGV4
IGRkNGViMDk2ZmVlOS4uYmE0NzRmOTZjMGI2IDEwMDY0NA0KLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQ0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudElPUy5tbQ0KQEAgLTEwOCw2ICsxMDgsNyBAQCB0eXBlZGVmIHZvaWQgKCpB
WFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZp
Y2F0aW9uLA0KIC0gKGlkKV9hY2Nlc3NpYmlsaXR5TGlzdEFuY2VzdG9yOw0KIC0gKGlkKV9hY2Nl
c3NpYmlsaXR5UGhvdG9EZXNjcmlwdGlvbjsNCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUlt
YWdlT3ZlcmxheUVsZW1lbnRzOw0KKy0gKE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVZpc2libGVDaGFy
YWN0ZXJSYW5nZTsNCiANCiAvLyBUZXh0TWFya2VyIHJlbGF0ZWQNCiAtIChOU0FycmF5ICopdGV4
dE1hcmtlclJhbmdlOw0KQEAgLTM5NCw2ICszOTUsOSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcygpDQogDQogSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Rlc2NyaXB0aW9u
T2ZBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpDQogew0KKyAgICBpZiAoSlNT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhhdHRyaWJ1dGUsICJBWFZpc2libGVDaGFyYWN0ZXJS
YW5nZSIpKQ0KKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZ0Zyb21SYW5nZShbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VdKSBjcmVhdGVKU1N0cmluZ1JlZl07DQor
DQogICAgIHJldHVybiBjcmVhdGVKU1N0cmluZygpOw0KIH0NCiANCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444942</attachid>
            <date>2021-11-21 21:38:26 -0800</date>
            <delta_ts>2021-11-22 07:41:00 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>51394</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZDIwNDhjNGZhMmY2Li5kYzVjYTZlNzQ4MzcgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
NyBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11
bGF0b3IvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4NCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQ6
IEFkZGVkLg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdl
Lmh0bWw6IEFkZGVkLg0KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoN
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOg0KKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoNCisNCiAyMDIxLTExLTE5ICBLaWV0IEhv
ICA8dGhvMjJAYXBwbGUuY29tPg0KIA0KICAgICAgICAgSW50ZWdyYXRlIG1vdGlvbiBwYXRoIHRy
YW5zZm9ybXMgaW4gdHJhbnNmb3JtYXRpb24gcGlwZWxpbmUNCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwNCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjM5ZDMyZGJkMjAzMw0KLS0tIC9kZXYv
bnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1y
YW5nZS5odG1sDQpAQCAtMCwwICsxLDczIEBADQorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPg0KKzxodG1sPg0KKzxoZWFkPg0KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5IGlkPSJib2R5
Ij4NCisNCis8ZGl2IGlkPSJncm91cCI+DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCis8L2Rpdj4NCisNCis8c2NyaXB0Pg0K
Kw0KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHZpc2libGVDaGFyYWN0ZXJSYW5n
ZSByZXR1cm5zIGV4cGVjdGVkIHZpc2libGUgcmFuZ2VzIHdoaWxlIG1vZGlmeWluZyBvYnNjdXJl
ZCBjb250ZW50LiIpOw0KKw0KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7DQorICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgiZ3JvdXAiKS5jaGlsZEF0SW5kZXgoMCk7DQorICAgICAgICBkZWJ1Zygi
VmlzaWJsZSByYW5nZTogIiArIHRleHQuc3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVl
KCJBWFZpc2libGVDaGFyYWN0ZXJSYW5nZSIpKTsNCisNCisgICAgICAgIHRlc3RSdW5uZXIuc2V0
Vmlld1NpemUoNTAwLCAyMDApOw0KKyAgICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2UgKDUwMCwg
MjAwKTogIiArIHRleHQuc3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlKCJBWFZpc2li
bGVDaGFyYWN0ZXJSYW5nZSIpKTsNCisNCisgICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9w
ID0gMjAwOw0KKyAgICAgICAgdGVzdFJ1bm5lci5zZXRWaWV3U2l6ZSgyMDAsIDUwMCk7DQorICAg
ICAgICBkZWJ1ZygiVmlzaWJsZSByYW5nZSwgb2Zmc2V0OiAyMDAgKDIwMCwgNTAwKTogIiArIHRl
eHQuc3RyaW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlKCJBWFZpc2libGVDaGFyYWN0ZXJS
YW5nZSIpKTsNCisNCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncm91cCIpLnN0
eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsNCisgICAgfQ0KKw0KKzwvc2NyaXB0Pg0KKw0KKzwv
Ym9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9u
cw0KaW5kZXggYTQyYzcyOWYwN2ZmLi5hNGIxMDRlMDU3YmUgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucw0KKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMNCkBAIC0yMTE4LDcgKzIxMTgsNyBAQCB3ZWJraXQu
b3JnL2IvMTQ4ODA2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0
aWNvbC9tdWx0aWNvbC1zcA0KIGZhc3QvZG9tL2xpbmtpZnktcGhvbmUtbnVtYmVycy5odG1sIFsg
UGFzcyBdDQogDQogYWNjZXNzaWJpbGl0eS92aWRlby1lbGVtZW50LXVybC1hdHRyaWJ1dGUuaHRt
bCBbIFBhc3MgXQ0KLQ0KK2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UuaHRt
bCBbIFBhc3MgXQ0KIGFjY2Vzc2liaWxpdHkvYW5jZXN0b3ItY29tcHV0YXRpb24uaHRtbCBbIFBh
c3MgXQ0KIA0KICMgRW5hYmxlICJhcmlhLWN1cnJlbnQiIHRlc3RzIGZvciBpT1MuDQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFy
YWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2FjY2Vz
c2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0DQpuZXcgZmlsZSBt
b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi42NzgwM2RiODE3NzANCi0tLSAvZGV2L251
bGwNCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUt
Y2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dA0KQEAgLTAsMCArMSwxMiBAQA0KK1RoaXMgdGVz
dHMgdGhhdCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgcmV0dXJucyBleHBlY3RlZCB2aXNpYmxlIHJh
bmdlcyB3aGlsZSBtb2RpZnlpbmcgb2JzY3VyZWQgY29udGVudC4NCisNCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuDQorDQorDQorVmlzaWJsZSByYW5nZTogTlNSYW5nZTogezAsIDM5MDB9DQor
VmlzaWJsZSByYW5nZSAoNTAwLCAyMDApOiBOU1JhbmdlOiB7MCwgMjcwfQ0KK1Zpc2libGUgcmFu
Z2UsIG9mZnNldDogMjAwICgyMDAsIDUwMCk6IE5TUmFuZ2U6IHswLCA3MzV9DQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQ0KKw0KK1RFU1QgQ09NUExFVEUNCisNCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMNCmluZGV4IDlhMDc0NTg3OTM1
NC4uODQ3MWYyMjJjNTMzIDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zDQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMNCkBAIC02MDEsNiArNjAxLDkgQEAgZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1pbnNlcnQtaHRtbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0NCiBlZGl0aW5nL3NwZWxsaW5n
L3NwZWxsY2hlY2stYXN5bmMuaHRtbCBbIEZhaWx1cmUgXQ0KIGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctdW5pZmllZC1lbXVsYXRpb24uaHRtbCBbIEZhaWx1cmUgXQ0KIA0KKyMgU2tpcCBkdWUg
dG8gbGFjayBvZiBEdW1wUmVuZGVyVHJlZSBgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5n
RGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbHVlYCBpbXBsZW1lbnRhdGlvbi4NCithY2Nlc3NpYmls
aXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0bWwgWyBTa2lwIF0NCisNCiAjIDxyZGFyOi8v
cHJvYmxlbS8yNjA1MDkyMz4gVGhlIHJlc3VsdCBpcyBwcm9iYWJseSBzdGlsbCBhIHBhc3MsIGJ1
dCB3ZSBkb24ndCBoYXZlIGEgd2F5DQogIyB0byBoYXZlIHBsYXRmb3JtIHNwZWNpZmljIHJlc3Vs
dHMgdGhhdCBhcmUgZGlmZmVyZW50IGJldHdlZW4gV0sxIGFuZCBXSzIuDQogYWNjZXNzaWJpbGl0
eS9tYWMvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBdDQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXIt
cmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0DQpuZXcgZmlsZSBtb2RlIDEw
MDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5jZGJiOGM0MjJkYTcNCi0tLSAvZGV2L251bGwNCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFj
dGVyLXJhbmdlLWV4cGVjdGVkLnR4dA0KQEAgLTAsMCArMSwxMiBAQA0KK1RoaXMgdGVzdHMgdGhh
dCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgcmV0dXJucyBleHBlY3RlZCB2aXNpYmxlIHJhbmdlcyB3
aGlsZSBtb2RpZnlpbmcgb2JzY3VyZWQgY29udGVudC4NCisNCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuDQorDQorDQorVmlzaWJsZSByYW5nZTogTlNSYW5nZTogezAsIDQyMDV9DQorVmlzaWJs
ZSByYW5nZSAoNTAwLCAyMDApOiBOU1JhbmdlOiB7MCwgMzYwfQ0KK1Zpc2libGUgcmFuZ2UsIG9m
ZnNldDogMjAwICgyMDAsIDUwMCk6IE5TUmFuZ2U6IHswLCA2OTB9DQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQ0KKw0KK1RFU1QgQ09NUExFVEUNCisNCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zDQppbmRleCBhNzFlNDMwZWI4ZTkuLjBmYjljMzk5MTEw
YiAxMDA2NDQNCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
DQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucw0KQEAgLTI3
OCw2ICsyNzgsNyBAQCBhY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdGJveC1jbGVhci1zZWxlY3Rpb24t
Y3Jhc2guaHRtbCBbIFNraXAgXQ0KIGFjY2Vzc2liaWxpdHkvbGlzdGJveC1jbGVhci1zZWxlY3Rp
b24uaHRtbCBbIFNraXAgXQ0KIGFjY2Vzc2liaWxpdHkvZW1iZWRkZWQtaW1hZ2UtZGVzY3JpcHRp
b24uaHRtbCBbIFNraXAgXQ0KIGFjY2Vzc2liaWxpdHkvaW1nLW5vLWFsdC1ub3QtaWdub3JlZC13
aXRoLXRpdGxlLmh0bWwgWyBTa2lwIF0NCithY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVy
LXJhbmdlLmh0bWwgWyBTa2lwIF0NCiANCiAjIE5lZWQgdG8gaW1wbGVtZW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Omhhc0RvY3VtZW50Um9sZUFuY2VzdG9yKCksIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Omhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3IoKSwNCiAjIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwoKSwgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNJbkRlc2NyaXB0aW9uTGlzdFRlcm0oKSwgYW5kDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQppbmRleCA4YmVhNGY2
ZmZkNTUuLmI2YzBmNzAwYzNlNyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zw0KKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQpAQCAtMSwzICsxLDUxIEBADQorMjAy
MS0xMS0xOSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPg0KKw0KKyAgICAg
ICAgQVg6IFdlYktpdDogbmVlZCBhIG1ldGhvZCB0byBnZXQgdmlzaWJsZSB0ZXh0IGFuZCBmcmFt
ZSBvZiBhbiBlbGVtZW50IG9uIHNjcmVlbg0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzMzNg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuDQorDQorICAgICAgICBJbXBsZW1lbnQgdmlzaWJsZUNoYXJhY3RlclJhbmdlIGZv
ciBzdGF0aWMgdGV4dCBlbGVtZW50cyBzbyB0aGF0IEJvb2tzIGNhbiBkZXRlcm1pbmUgdGhlIHZp
c2libGUNCisgICAgICAgIGNvbnRlbnQgb24gYSBwYWdlLg0KKw0KKyAgICAgICAgVGVzdDogYWNj
ZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sDQorDQorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZUNoYXJhY3RlclJhbmdlIGNvbnN0KToNCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1bm9ic2N1cmVkQ29udGVudFJlY3Qg
Y29uc3QpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoN
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg6
DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eVZpc2libGVDb250ZW50UmVjdF0pOg0KKyAgICAgICAgKGFjY2Vzc2libGVFbGVt
ZW50c0Zvck9iamVjdHMpOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgYWNjZXNzaWJpbGl0eUZpbmRNYXRjaGluZ09iamVjdHM6XSk6DQorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBwb3NpdGlvbkZvclRleHRNYXJrZXI6XSk6DQorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0ZXh0TWFya2VyRm9yUG9zaXRp
b246XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzdHJpbmdG
b3JSYW5nZTpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGZy
YW1lRm9yUmFuZ2U6XSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBhY2Nlc3NpYmlsaXR5TWF0aFJhZGljYW5kXSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBfY29udmVydFRvTlNSYW5nZTpdKTogRGVsZXRlZC4NCisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0VG9ET01SYW5nZTpdKTog
RGVsZXRlZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6dmlzaWJs
ZUNoYXJhY3RlclJhbmdlIGNvbnN0KToNCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0Ojp1bm9ic2N1cmVkQ29udGVudFJlY3QgY29uc3QpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6DQorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oOg0KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06
DQorICAgICAgICAobWFrZU5TQXJyYXkpOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlIGFjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VdKToNCisg
ICAgICAgIChtYWtlTlNSYW5nZSk6DQorICAgICAgICAobWFrZURPTVJhbmdlKToNCisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBiYXNlVXBkYXRlQmFja2luZ1N0
b3JlXSk6DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgbGlu
ZVJlY3RzQW5kVGV4dF0pOg0KKyAgICAgICAgKGNvbnZlcnRUb05TQXJyYXkpOiBEZWxldGVkLg0K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNoaWxk
cmVuVmVjdG9yQXJyYXldKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToNCisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIF9pbmRleEZvclRleHRNYXJrZXI6XSk6DQorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6Zm9yUGFyYW1ldGVyOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgX2NvbnZlcnRUb05TUmFuZ2U6XSk6IERlbGV0ZWQuDQorDQogMjAyMS0xMS0xOSAgS2ll
dCBIbyAgPHRobzIyQGFwcGxlLmNvbT4NCiANCiAgICAgICAgIEltcGxlbWVudCBwYXJzaW5nIGFu
ZCBhbmltYXRpb24gc3VwcG9ydCBmb3IgcmF5KCkgc2hhcGUgYWNjZXB0ZWQgYnkgb2Zmc2V0LXBh
dGgNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcA0KaW5kZXggOTM4NDhlMWNhYjc2Li42NzQ2ZjZjYmI0OGYgMTAwNjQ0DQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwDQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
DQpAQCAtNzA0LDYgKzcwNCw1MiBAQCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjplbGVtZW50UmFuZ2UoKSBjb25zdA0KICAgICByZXR1cm4gQVhPYmplY3RD
YWNoZTo6cmFuZ2VGb3JOb2RlQ29udGVudHMoKm5vZGUpOw0KIH0NCiANCitzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlQ2hhcmFjdGVyUmFuZ2Uo
KSBjb25zdA0KK3sNCisgICAgYXV0byByYW5nZSA9IGVsZW1lbnRSYW5nZSgpOw0KKyAgICBpZiAo
IXJhbmdlKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgYXV0byBjb250
ZW50UmVjdCA9IHVub2JzY3VyZWRDb250ZW50UmVjdCgpOw0KKyAgICBhdXRvIGVsZW1lbnRSZWN0
ID0gc25hcHBlZEludFJlY3QodGhpcy0+ZWxlbWVudFJlY3QoKSk7DQorICAgIGlmICghY29udGVu
dFJlY3QuaW50ZXJzZWN0cyhlbGVtZW50UmVjdCkpDQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0Ow0KKw0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IHN0YXJ0Qm91bmRhcnkg
PSByYW5nZS0+c3RhcnQ7DQorICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gZW5kQm91
bmRhcnkgPSByYW5nZS0+ZW5kOw0KKw0KKyAgICAvLyBPcmlnaW4gaXNuJ3QgY29udGFpbmVkIGlu
IHZpc2libGUgcmVjdCwgc3RhcnQgbW92aW5nIGZvcndhcmQgYnkgbGluZS4NCisgICAgd2hpbGUg
KCFjb250ZW50UmVjdC5jb250YWlucyhlbGVtZW50UmVjdC5sb2NhdGlvbigpKSkgew0KKyAgICAg
ICAgYXV0byBuZXh0TGluZVBvc2l0aW9uID0gbmV4dExpbmVFbmRQb3NpdGlvbihWaXNpYmxlUG9z
aXRpb24obWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKCpzdGFydEJvdW5kYXJ5KSkpOw0KKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiB0ZXN0U3RhcnRCb3VuZGFyeSA9IG1h
a2VCb3VuZGFyeVBvaW50KG5leHRMaW5lUG9zaXRpb24pOw0KKyAgICAgICAgaWYgKCF0ZXN0U3Rh
cnRCb3VuZGFyeSB8fCAhY29udGFpbnMoKnJhbmdlLCAqdGVzdFN0YXJ0Qm91bmRhcnkpKQ0KKyAg
ICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgDQorICAgICAgICBzdGFydEJvdW5kYXJ5ID0gdGVz
dFN0YXJ0Qm91bmRhcnk7DQorICAgICAgICBlbGVtZW50UmVjdCA9IGJvdW5kc0ZvclJhbmdlKFNp
bXBsZVJhbmdlKCpzdGFydEJvdW5kYXJ5LCByYW5nZS0+ZW5kKSk7DQorICAgICAgICBpZiAoZWxl
bWVudFJlY3QuaXNFbXB0eSgpKQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAg
IC8vIEVuZCBpc24ndCBjb250YWluZWQgaW4gdmlzaWJsZSByZWN0LCBzdGFydCBtb3ZpbmcgYmFj
a3dhcmRzIGJ5IGxpbmUuDQorICAgIHdoaWxlICghY29udGVudFJlY3QuY29udGFpbnMoZWxlbWVu
dFJlY3QubG9jYXRpb24oKSArIGVsZW1lbnRSZWN0LnNpemUoKSkpIHsNCisgICAgICAgIGF1dG8g
cHJldmlvdXNMaW5lUG9zaXRpb24gPSBwcmV2aW91c0xpbmVTdGFydFBvc2l0aW9uKFZpc2libGVQ
b3NpdGlvbihtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oKmVuZEJvdW5kYXJ5KSkpOw0KKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiB0ZXN0RW5kQm91bmRhcnkgPSBtYWtl
Qm91bmRhcnlQb2ludChwcmV2aW91c0xpbmVQb3NpdGlvbik7DQorICAgICAgICBpZiAoIXRlc3RF
bmRCb3VuZGFyeSB8fCAhY29udGFpbnMoKnJhbmdlLCAqdGVzdEVuZEJvdW5kYXJ5KSkNCisgICAg
ICAgICAgICBicmVhazsNCisgICAgICAgIA0KKyAgICAgICAgZW5kQm91bmRhcnkgPSB0ZXN0RW5k
Qm91bmRhcnk7DQorICAgICAgICBlbGVtZW50UmVjdCA9IGJvdW5kc0ZvclJhbmdlKHsgKnN0YXJ0
Qm91bmRhcnksICplbmRCb3VuZGFyeSB9KTsNCisgICAgICAgIGlmIChlbGVtZW50UmVjdC5pc0Vt
cHR5KCkpDQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgaWYgKCFzdGFydEJv
dW5kYXJ5IHx8ICFlbmRCb3VuZGFyeSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQor
ICAgIA0KKyAgICByZXR1cm4gU2ltcGxlUmFuZ2UoKnN0YXJ0Qm91bmRhcnksICplbmRCb3VuZGFy
eSk7DQorfQ0KKw0KIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmZpbmRUZXh0UmFuZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaFN0cmluZ3MsIGNv
bnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uKSBjb25zdA0KIHsNCiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZm91
bmQ7DQpAQCAtMzE4Miw2ICszMjI4LDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Ny
b2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JiBzdWJmb2N1DQogICAg
ICAgICBzY3JvbGxQYXJlbnQtPnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMobmV3U3Vi
Zm9jdXMpOw0KIH0NCiANCitGbG9hdFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6dW5vYnNjdXJl
ZENvbnRlbnRSZWN0KCkgY29uc3QNCit7DQorICAgIGF1dG8gZG9jdW1lbnQgPSB0aGlzLT5kb2N1
bWVudCgpOw0KKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQ0KKyAgICAg
ICAgcmV0dXJuIHsgfTsNCisgICAgcmV0dXJuIEZsb2F0UmVjdChzbmFwcGVkSW50UmVjdChkb2N1
bWVudC0+dmlldygpLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKSkpOw0KK30NCisNCiB2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvaW50KSBjb25zdA0KIHsNCiAgICAgLy8gU2VhcmNoIHVwIHRoZSBwYXJlbnQgY2hhaW4g
YW5kIGNyZWF0ZSBhIHZlY3RvciBvZiBhbGwgc2Nyb2xsYWJsZSBwYXJlbnQgb2JqZWN0cw0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgN
CmluZGV4IDIxZmY0YTI4YTVhNi4uNTljZWE0ZjRiMzk3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgNCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oDQpAQCAtODA4LDcgKzgw
OCw3IEBAIHByb3RlY3RlZDoNCiAgICAgdm9pZCBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsN
CiAgICAgdm9pZCBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Ow0KICAgICB2aXJ0
dWFsIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQ0K
LQ0KKyAgICBGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7
DQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJhZGlvR3JvdXBBbmNlc3RvcigpIGNvbnN0Ow0K
IA0KICAgICBib29sIGFsbG93c1RleHRSYW5nZXMoKSBjb25zdDsNCkBAIC04MjEsNiArODIxLDcg
QEAgcHJpdmF0ZToNCiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VPZlN0cmlu
Z0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmLCBBY2Nlc3NpYmls
aXR5U2VhcmNoRGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Ow0KICAgICBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzZWxlY3Rpb25SYW5nZSgpIGNvbnN0Ow0KICAgICBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmaW5kVGV4dFJhbmdlKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBzZWFyY2hTdHJpbmdzLCBjb25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxp
dHlTZWFyY2hUZXh0RGlyZWN0aW9uKSBjb25zdDsNCisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gdmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7DQogDQogcHJvdGVj
dGVkOiAvLyBGSVhNRTogTWFrZSB0aGUgZGF0YSBtZW1iZXJzIHByaXZhdGUuDQogICAgIGJvb2wg
Y2hpbGRyZW5Jbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5Jbml0aWFsaXpl
ZDsgfQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgNCmluZGV4IGUxNTk2MjFjODU0OS4uMTY3OWYwMWM1
MWRmIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlLmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQpAQCAtOTg4LDYgKzk4OCw3IEBAIHB1Ymxp
YzoNCiAgICAgdmlydHVhbCB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgPSAwOw0KICAgICB2aXJ0
dWFsIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIEZs
b2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxp
dHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0ID0gMDsNCisgICAgdmlydHVhbCBGbG9hdFJlY3QgdW5v
YnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNDaGVja2VkU3RhdGUoKSBjb25zdCA9IDA7DQogICAgIA0KICAgICAvLyBJbiBhIG11bHRpLXNl
bGVjdCBsaXN0LCBtYW55IGl0ZW1zIGNhbiBiZSBzZWxlY3RlZCBidXQgb25seSBvbmUgaXMgYWN0
aXZlIGF0IGEgdGltZS4NCkBAIC05OTcsNiArOTk4LDcgQEAgcHVibGljOg0KICAgICB2aXJ0dWFs
IGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIGhhc01p
c3NwZWxsaW5nKCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3Np
YmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCA9IDA7DQorICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4gdmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgY29uc3QgPSAwOw0KICAg
ICB2aXJ0dWFsIGJvb2wgaGFzUGxhaW5UZXh0KCkgY29uc3QgPSAwOw0KICAgICB2aXJ0dWFsIGJv
b2wgaGFzU2FtZUZvbnQoY29uc3QgQVhDb3JlT2JqZWN0JikgY29uc3QgPSAwOw0KICAgICB2aXJ0
dWFsIGJvb2wgaGFzU2FtZUZvbnRDb2xvcihjb25zdCBBWENvcmVPYmplY3QmKSBjb25zdCA9IDA7
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQ0KaW5kZXggNWUwYzhjOGVi
YzY3Li45ODkzNDFhZmMyMTIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQ0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0NCkBAIC01Miw2ICs1Miw3IEBADQogI2ltcG9ydCAiU1ZHRWxlbWVudElubGluZXMuaCIN
CiAjaW1wb3J0ICJTVkdOYW1lcy5oIg0KICNpbXBvcnQgIlNlbGVjdGlvbkdlb21ldHJ5LmgiDQor
I2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCINCiAjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCINCiAjaW1w
b3J0ICJXQUtTY3JvbGxWaWV3LmgiDQogI2ltcG9ydCAiV0FLV2luZG93LmgiDQpAQCAtMTY5NCwx
MiArMTY5NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0
cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQ0KIHsNCiAgICAgaWYgKCFbc2VsZiBfcHJl
cGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCiAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOw0KLSAg
ICANCi0gICAgYXV0byBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgp
Ow0KLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQ0KLSAgICAgICAgcmV0
dXJuIENHUmVjdFplcm87DQotICAgIGF1dG8gcmVjdCA9IEZsb2F0UmVjdChzbmFwcGVkSW50UmVj
dChkb2N1bWVudC0+dmlldygpLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKSkpOw0KLSAgICByZXR1
cm4gW3NlbGYgY29udmVydFJlY3RUb1NwYWNlOnJlY3Qgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZl
cnNpb25TcGFjZTo6U2NyZWVuXTsNCisgICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0VG9TcGFj
ZTpzZWxmLmF4QmFja2luZ09iamVjdC0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgc3BhY2U6QWNj
ZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6U2NyZWVuXTsNCiB9DQogDQogLy8gVGhlICJjZW50
ZXIgcG9pbnQiIGlzIHdoZXJlIFZvaWNlT3ZlciB3aWxsICJwcmVzcyIgYW4gb2JqZWN0LiBUaGlz
IG1heSBub3QgYmUgdGhlIGFjdHVhbA0KQEAgLTE5MTUsNyArMTkxMSw3IEBAIHN0YXRpYyBOU0Fy
cmF5ICphY2Nlc3NpYmxlRWxlbWVudHNGb3JPYmplY3RzKGNvbnN0IEFYQ29yZU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoDQogICAgICAgICB9KTsNCiAgICAgfQ0KIA0KLSAgICByZXR1cm4gY29udmVy
dFRvTlNBcnJheShhY2Nlc3NpYmxlRWxlbWVudHMpOw0KKyAgICByZXR1cm4gbWFrZU5TQXJyYXko
YWNjZXNzaWJsZUVsZW1lbnRzKTsNCiB9DQogDQogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlE
ZXRhaWxzRWxlbWVudHMNCkBAIC0yMTA0LDcgKzIxMDAsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0
KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgQWNjZXNzaWJpbGl0eVNlYXJj
aENyaXRlcmlhIGNyaXRlcmlhID0gYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNo
UHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShwYXJhbWV0ZXJzKTsNCiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdHM7DQogICAg
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5maW5kTWF0Y2hpbmdPYmplY3RzKCZjcml0ZXJpYSwgcmVz
dWx0cyk7DQotICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHJlc3VsdHMpOw0KKyAgICByZXR1
cm4gbWFrZU5TQXJyYXkocmVzdWx0cyk7DQogfQ0KIA0KIC0gKHZvaWQpYWNjZXNzaWJpbGl0eU1v
ZGlmeVNlbGVjdGlvbjooVGV4dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5IGluY3JlYXNlOihCT09M
KWluY3JlYXNlDQpAQCAtMjIwOSw0NyArMjIwNSw2IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICByZXR1cm4gcmFuZ2UgPyBbc2VsZiBj
b250ZW50Rm9yU2ltcGxlUmFuZ2U6KnJhbmdlIGF0dHJpYnV0ZWQ6YXR0cmlidXRlZF0gOiBuaWw7
DQogfQ0KIA0KLS8vIEZJWE1FOiBObyByZWFzb24gZm9yIHRoaXMgdG8gYmUgYSBtZXRob2QgaW5z
dGVhZCBvZiBhIGZ1bmN0aW9uLg0KLS0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNvbnN0
IFNpbXBsZVJhbmdlJilyYW5nZQ0KLXsNCi0gICAgYXV0byYgZG9jdW1lbnQgPSByYW5nZS5zdGFy
dC5kb2N1bWVudCgpOw0KLSAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7DQotICAg
IGlmICghZnJhbWUpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7
DQotDQotICAgIGF1dG8qIHJvb3RFZGl0YWJsZUVsZW1lbnQgPSBmcmFtZS0+c2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOw0KLSAgICBhdXRvKiBzY29wZSA9IHJv
b3RFZGl0YWJsZUVsZW1lbnQgPyByb290RWRpdGFibGVFbGVtZW50IDogZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50KCk7DQotICAgIGlmICghc2NvcGUpDQotICAgICAgICByZXR1cm4gTlNNYWtlUmFu
Z2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIC8vIE1vdXNlIGV2ZW50cyBtYXkgY2F1c2UgVFNN
IHRvIGF0dGVtcHQgdG8gY3JlYXRlIGFuIE5TUmFuZ2UgZm9yIGEgcG9ydGlvbiBvZiB0aGUgdmll
dw0KLSAgICAvLyB0aGF0IGlzIG5vdCBpbnNpZGUgdGhlIGN1cnJlbnQgZWRpdGFibGUgcmVnaW9u
LiBUaGVzZSBjaGVja3MgZW5zdXJlIHdlIGRvbid0IHByb2R1Y2UNCi0gICAgLy8gcG90ZW50aWFs
bHkgaW52YWxpZCBkYXRhIHdoZW4gcmVzcG9uZGluZyB0byBzdWNoIHJlcXVlc3RzLg0KLSAgICBp
ZiAoIXNjb3BlLT5jb250YWlucyhyYW5nZS5zdGFydC5jb250YWluZXIucHRyKCkpIHx8ICFzY29w
ZS0+Y29udGFpbnMocmFuZ2UuZW5kLmNvbnRhaW5lci5wdHIoKSkpDQotICAgICAgICByZXR1cm4g
TlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIHJldHVybiBOU01ha2VSYW5nZShj
aGFyYWN0ZXJDb3VudCh7IHsgKnNjb3BlLCAwIH0sIHJhbmdlLnN0YXJ0IH0pLCBjaGFyYWN0ZXJD
b3VudChyYW5nZSkpOw0KLX0NCi0NCi0tIChzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPilfY29u
dmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UNCi17DQotICAgIGlmIChyYW5nZS5sb2NhdGlv
biA9PSBOU05vdEZvdW5kKQ0KLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCi0NCi0gICAg
Ly8gb3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB3ZSBhcmUgb25seSBjYWxsZWQgYnkg
aW5wdXQgbWV0aG9kcyB0aGF0DQotICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBj
b250YWluaW5nIHRoZSBzZWxlY3Rpb24NCi0gICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1
c2Ugb2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90
DQotICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24g
aXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBpcw0KLSAgICAvLyB0byB1c2UgdGhlIHJvb3Qg
ZWRpdGFibGUgZWxlbWVudCBvZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFs
IGJhc2UuDQotICAgIC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQg
Y29udGV4dC4NCi0gICAgYXV0byBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1
bWVudCgpOw0KLSAgICBhdXRvIHNlbGVjdGlvblJvb3QgPSBkb2N1bWVudC0+ZnJhbWUoKS0+c2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOw0KLSAgICBhdXRvIHNj
b3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBkb2N1bWVudC0+ZG9jdW1lbnRF
bGVtZW50KCk7DQotICAgIGlmICghc2NvcGUpDQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
Ow0KLQ0KLSAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cygqc2NvcGUpLCByYW5nZSk7DQotfQ0KIA0KIC8vIFRoaXMgbWV0aG9kIGlz
IGludGVuZGVkIHRvIHRha2UgYSB0ZXh0IG1hcmtlciByZXByZXNlbnRpbmcgYSBWaXNpYmxlUG9z
aXRpb24gYW5kIGNvbnZlcnQgaXQNCiAvLyBpbnRvIGEgbm9ybWFsaXplZCBsb2NhdGlvbiB3aXRo
aW4gdGhlIGRvY3VtZW50Lg0KQEAgLTIyNjcsNyArMjIyMiw3IEBAIHN0YXRpYyBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICAgICAgYXV0byByYW5nZSA9
IGNhY2hlLT5yYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY2hhcmFjdGVyT2Zmc2V0
LCBjaGFyYWN0ZXJPZmZzZXQpOw0KICAgICAgICAgaWYgKCFyYW5nZSkNCiAgICAgICAgICAgICBy
ZXR1cm4gTlNOb3RGb3VuZDsNCi0gICAgICAgIHJldHVybiBbc2VsZiBfY29udmVydFRvTlNSYW5n
ZToqcmFuZ2VdLmxvY2F0aW9uOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU1JhbmdlKHJhbmdlKS5s
b2NhdGlvbjsNCiAgICAgfQ0KICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCiB9DQpAQCAtMjM0Niw3
ICsyMzAxLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcq
IHZpZXcpDQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQogICAg
ICAgICByZXR1cm4gbmlsOw0KIA0KLSAgICBhdXRvIHJhbmdlID0gW3NlbGYgX2NvbnZlcnRUb0RP
TVJhbmdlOk5TTWFrZVJhbmdlKHBvc2l0aW9uLCAwKV07DQorICAgIGF1dG8gcmFuZ2UgPSBtYWtl
RE9NUmFuZ2Uoc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCksIE5TTWFrZVJhbmdlKHBv
c2l0aW9uLCAwKSk7DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm4gbmlsOw0KIA0K
QEAgLTI0MTQsNyArMjM2OSw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmll
dyhXQUtWaWV3KiB2aWV3KQ0KIHsNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxp
dHlDYWxsXSkNCiAgICAgICAgIHJldHVybiBuaWw7DQotICAgIGF1dG8gd2ViUmFuZ2UgPSBbc2Vs
ZiBfY29udmVydFRvRE9NUmFuZ2U6cmFuZ2VdOw0KKyAgICBhdXRvIHdlYlJhbmdlID0gbWFrZURP
TVJhbmdlKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpLCByYW5nZSk7DQogICAgIGlm
ICghd2ViUmFuZ2UpDQogICAgICAgICByZXR1cm4gbmlsOw0KICAgICByZXR1cm4gc2VsZi5heEJh
Y2tpbmdPYmplY3QtPnN0cmluZ0ZvclJhbmdlKCp3ZWJSYW5nZSk7DQpAQCAtMjYwMCw2ICsyNTU1
LDE3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3
KQ0KICAgICByZXR1cm4gW3NlbGYgcHJldmlvdXNNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6c3Rh
cnRdOw0KIH0NCiANCistIChDR1JlY3QpZnJhbWVGb3JSYW5nZTooTlNSYW5nZSlyYW5nZQ0KK3sN
CisgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkNCisgICAgICAgIHJl
dHVybiBDR1JlY3RaZXJvOw0KKyAgICBhdXRvIHdlYlJhbmdlID0gbWFrZURPTVJhbmdlKHNlbGYu
YXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpLCByYW5nZSk7DQorICAgIGlmICghd2ViUmFuZ2Up
DQorICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCisgICAgYXV0byByZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmJvdW5kc0ZvclJhbmdlKCp3ZWJSYW5nZSk7DQorICAgIHJldHVybiBbc2Vs
ZiBjb252ZXJ0UmVjdFRvU3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNw
YWNlOjpTY3JlZW5dOw0KK30NCisNCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byByZXR1
cm4gdGhlIGJvdW5kcyBvZiBhIHRleHQgbWFya2VyIHJhbmdlIGluIHNjcmVlbiBjb29yZGluYXRl
cy4NCiAtIChDR1JlY3QpZnJhbWVGb3JUZXh0TWFya2VyczooTlNBcnJheSAqKWFycmF5DQogew0K
QEAgLTI5MzEsNyArMjg5Nyw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmll
dyhXQUtWaWV3KiB2aWV3KQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiANCiAgICAgYXV0byByYWRp
Y2FuZCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5tYXRoUmFkaWNhbmQoKTsNCi0gICAgcmV0dXJu
IHJhZGljYW5kID8gY29udmVydFRvTlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KKyAgICByZXR1
cm4gcmFkaWNhbmQgPyBtYWtlTlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KIH0NCiANCiAtIChX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqKWFjY2Vzc2liaWxpdHlNYXRoTnVtZXJhdG9y
T2JqZWN0DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0KaW5kZXggMTFhNzliMTIxNzJkLi4z
Njk1MmY5NDA4ZmIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCkBAIC05OTIsNiAr
OTkyLDEzIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkNCiAg
ICAgICAgIHRyZWUtPmFwcGx5UGVuZGluZ0NoYW5nZXMoKTsNCiB9DQogDQorc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gQVhJc29sYXRlZE9iamVjdDo6dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkg
Y29uc3QNCit7DQorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7DQorICAgIGF1dG8qIGF4T2Jq
ZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0KCk7DQorICAgIHJldHVybiBheE9iamVjdCA/IGF4T2Jq
ZWN0LT52aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSA6IHN0ZDo6bnVsbG9wdDsNCit9DQorDQogc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJc29sYXRlZE9iamVjdDo6cmFuZ2VGb3JQbGFpblRl
eHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYgYXhSYW5nZSkgY29uc3QNCiB7DQogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7DQpAQCAtMTQ3MCw2ICsxNDc3LDE1IEBAIHZvaWQgQVhJc29s
YXRlZE9iamVjdDo6c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxl
UG9zaXRpb25SYW5nDQogICAgICAgICBvYmplY3QtPnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9u
UmFuZ2UodmlzaWJsZVBvc2l0aW9uUmFuZ2UpOw0KIH0NCiANCitGbG9hdFJlY3QgQVhJc29sYXRl
ZE9iamVjdDo6dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3QNCit7DQorICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8RmxvYXRSZWN0PihbdGhp
c10gKCkgLT4gRmxvYXRSZWN0IHsNCisgICAgICAgIGlmIChhdXRvKiBvYmplY3QgPSBhc3NvY2lh
dGVkQVhPYmplY3QoKSkNCisgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT51bm9ic2N1cmVkQ29u
dGVudFJlY3QoKTsNCisgICAgICAgIHJldHVybiB7IH07DQorICAgIH0pOw0KK30NCisNCiBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50UmFuZ2UoKSBj
b25zdA0KIHsNCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmgNCmluZGV4IDNiNGVlYTFmYmI1OC4uYmE2M2RjMjcyMWQyIDEwMDY0NA0KLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5o
DQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmgNCkBAIC00NDEsOSArNDQxLDExIEBAIHByaXZhdGU6DQogICAgIEFYQ29yZU9i
amVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBpbnQgbGluZUZvclBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBQbGFpblRleHRSYW5nZSBwbGFpblRl
eHRSYW5nZUZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdl
JikgY29uc3Qgb3ZlcnJpZGU7DQorICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHZpc2li
bGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBpbnQgaW5kZXgoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7DQogICAgIHZvaWQgbGluZUJyZWFrcyhW
ZWN0b3I8aW50PiYpIGNvbnN0IG92ZXJyaWRlOw0KLQ0KKyAgICBGbG9hdFJlY3QgdW5vYnNjdXJl
ZENvbnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7DQorICAgIA0KICAgICAvLyBBdHRyaWJ1dGUg
c2V0dGVycy4NCiAgICAgdm9pZCBzZXRBUklBR3JhYmJlZChib29sKSBvdmVycmlkZTsNCiAgICAg
dm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIG92ZXJyaWRlOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLmgNCmluZGV4IGVlYTNlNjlkZWQ5My4uYWMyYmRiZmUyYWM1IDEwMDY0
NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oDQpAQCAtMzQsNiArMzQsNyBA
QA0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiBzdHJ1Y3QgQWNjZXNzaWJpbGl0eVNlYXJjaENy
aXRlcmlhOw0KK2NsYXNzIERvY3VtZW50Ow0KIGNsYXNzIEludFJlY3Q7DQogY2xhc3MgRmxvYXRQ
b2ludDsNCiBjbGFzcyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDsNCkBAIC0xMTEsMTEgKzEx
MiwxNSBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlUZXh0dWFsQ29u
dGV4dFNvdXJjZUNvZGUgPSBAIlVJQWNjZXNzaWJpbA0KIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmls
aXR5TWF0aFBvc3RzY3JpcHRQYWlyczsNCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQ
cmVzY3JpcHRQYWlyczsNCiANCistIChOU1JhbmdlKWFjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFj
dGVyUmFuZ2U7DQorDQogLSAoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWJhc2VBY2Nl
c3NpYmlsaXR5UmVzb2x2ZWRFZGl0aW5nU3R5bGVzOw0KIA0KIGV4dGVybiBXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2Vh
cmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShjb25zdCBOU0RpY3Rpb25hcnkgKik7
DQogDQotZXh0ZXJuIE5TQXJyYXkgKmNvbnZlcnRUb05TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhD
b3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsNCitleHRlcm4gTlNBcnJh
eSAqbWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKTsNCitleHRlcm4gTlNSYW5nZSBtYWtlTlNSYW5nZShzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPik7DQorZXh0ZXJuIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+IG1ha2VET01SYW5nZShXZWJDb3JlOjpEb2N1bWVudCosIE5TUmFuZ2Up
Ow0KIA0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQ0KIC0gKGlkKV9hY2Nlc3NpYmlsaXR5V2Vi
RG9jdW1lbnRWaWV3Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQ0K
aW5kZXggMWU1NjkxZDE5ZjkyLi4wOGUxYjRkZjNlYzQgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
bW0NCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbQ0KQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgTlNBcnJh
eSAqY29udmVydE1hdGhQYWlyc1RvTlNBcnJheShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaQ0KICAgICB9KS5hdXRvcmVsZWFzZSgpOw0KIH0NCiANCi1OU0FycmF5ICpjb252
ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBjaGlsZHJlbikNCitOU0FycmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJD
b3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4p
DQogew0KICAgICByZXR1cm4gY3JlYXRlTlNBcnJheShjaGlsZHJlbiwgW10gKGNvbnN0IGF1dG8m
IGNoaWxkKSAtPiBpZCB7DQogICAgICAgICBhdXRvIHdyYXBwZXIgPSBjaGlsZC0+d3JhcHBlcigp
Ow0KQEAgLTQ2Miw2ICs0NjIsMjcgQEAgc3RhdGljIHZvaWQgY29udmVydFBhdGhUb1NjcmVlblNw
YWNlRnVuY3Rpb24oUGF0aENvbnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBjb24NCiAgICAgcmV0
dXJuIGNvbnZlcnRlZFBhdGguYXV0b3JlbGVhc2UoKTsNCiB9DQogDQorLy8gRGV0ZXJtaW5lIHRo
ZSB2aXNpYmxlIHJhbmdlIGJ5IGNoZWNraW5nIGludGVyc2VjdGlvbiBvZiB1bm9ic2N1cmVkQ29u
dGVudFJlY3QgYW5kIGEgcmFuZ2Ugb2YgdGV4dCBieQ0KKy8vIGFkdmFuY2luZyBmb3J3YXJkIGJ5
IGxpbmUgZnJvbSB0b3AgYW5kIGJhY2t3YXJkcyBieSBsaW5lIGZyb20gdGhlIGJvdHRvbSwgdW50
aWwgd2UgaGF2ZSBhIHZpc2libGUgcmFuZ2UuDQorLSAoTlNSYW5nZSlhY2Nlc3NpYmlsaXR5Vmlz
aWJsZUNoYXJhY3RlclJhbmdlDQorew0KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmll
dmVWYWx1ZUZyb21NYWluVGhyZWFkPE5TUmFuZ2U+KFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpXSAoKSAtPiBOU1JhbmdlIHsNCisgICAgICAgIGF1dG8gYmFja2luZ09iamVjdCA9IHBy
b3RlY3RlZFNlbGYuZ2V0KCkuYmFzZVVwZGF0ZUJhY2tpbmdTdG9yZTsNCisgICAgICAgIGlmICgh
YmFja2luZ09iamVjdCkNCisgICAgICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3Vu
ZCwgMCk7DQorDQorICAgICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VOU1JhbmdlKGJhY2tp
bmdPYmplY3QtPmVsZW1lbnRSYW5nZSgpKTsNCisgICAgICAgIGlmIChlbGVtZW50UmFuZ2UubG9j
YXRpb24gPT0gTlNOb3RGb3VuZCkNCisgICAgICAgICAgICByZXR1cm4gZWxlbWVudFJhbmdlOw0K
KyAgICAgICAgDQorICAgICAgICBhdXRvIHZpc2libGVSYW5nZSA9IG1ha2VOU1JhbmdlKGJhY2tp
bmdPYmplY3QtPnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpKTsNCisgICAgICAgIGlmICh2aXNpYmxl
UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkNCisgICAgICAgICAgICByZXR1cm4gdmlzaWJs
ZVJhbmdlOw0KKw0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKHZpc2libGVSYW5nZS5sb2Nh
dGlvbiAtIGVsZW1lbnRSYW5nZS5sb2NhdGlvbiwgdmlzaWJsZVJhbmdlLmxlbmd0aCk7DQorICAg
IH0pOw0KK30NCisNCiAtIChpZClfYWNjZXNzaWJpbGl0eVdlYkRvY3VtZW50Vmlldw0KIHsNCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7DQpAQCAtNjIzLDYgKzY0NCw0OSBAQCBzdGF0aWMgdm9p
ZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcq
IGF0dHJTdHJpbmcsDQogICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TGFuZ3VhZ2UoYXR0clN0cmlu
Zywgbm9kZS0+cmVuZGVyZXIoKSwgYXR0clN0cmluZ1JhbmdlKTsNCiB9DQogDQorTlNSYW5nZSBt
YWtlTlNSYW5nZShzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZSkNCit7DQorICAgIGlm
ICghcmFuZ2UpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQor
ICAgIA0KKyAgICBhdXRvJiBkb2N1bWVudCA9IHJhbmdlLT5zdGFydC5kb2N1bWVudCgpOw0KKyAg
ICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7DQorICAgIGlmICghZnJhbWUpDQorICAg
ICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQorDQorICAgIGF1dG8qIHJv
b3RFZGl0YWJsZUVsZW1lbnQgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOw0KKyAgICBhdXRvKiBzY29wZSA9IHJvb3RFZGl0YWJsZUVsZW1lbnQg
PyByb290RWRpdGFibGVFbGVtZW50IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCk7DQorICAg
IGlmICghc2NvcGUpDQorICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7
DQorDQorICAgIC8vIE1vdXNlIGV2ZW50cyBtYXkgY2F1c2UgVFNNIHRvIGF0dGVtcHQgdG8gY3Jl
YXRlIGFuIE5TUmFuZ2UgZm9yIGEgcG9ydGlvbiBvZiB0aGUgdmlldw0KKyAgICAvLyB0aGF0IGlz
IG5vdCBpbnNpZGUgdGhlIGN1cnJlbnQgZWRpdGFibGUgcmVnaW9uLiBUaGVzZSBjaGVja3MgZW5z
dXJlIHdlIGRvbid0IHByb2R1Y2UNCisgICAgLy8gcG90ZW50aWFsbHkgaW52YWxpZCBkYXRhIHdo
ZW4gcmVzcG9uZGluZyB0byBzdWNoIHJlcXVlc3RzLg0KKyAgICBpZiAoIXNjb3BlLT5jb250YWlu
cyhyYW5nZS0+c3RhcnQuY29udGFpbmVyLnB0cigpKSB8fCAhc2NvcGUtPmNvbnRhaW5zKHJhbmdl
LT5lbmQuY29udGFpbmVyLnB0cigpKSkNCisgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05v
dEZvdW5kLCAwKTsNCisNCisgICAgcmV0dXJuIE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KHsg
eyAqc2NvcGUsIDAgfSwgcmFuZ2UtPnN0YXJ0IH0pLCBjaGFyYWN0ZXJDb3VudCgqcmFuZ2UpKTsN
Cit9DQorDQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFrZURPTVJhbmdlKERvY3VtZW50
KiBkb2N1bWVudCwgTlNSYW5nZSByYW5nZSkNCit7DQorICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9
PSBOU05vdEZvdW5kKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisNCisgICAgLy8g
b3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB3ZSBhcmUgb25seSBjYWxsZWQgYnkgaW5w
dXQgbWV0aG9kcyB0aGF0DQorICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250
YWluaW5nIHRoZSBzZWxlY3Rpb24NCisgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ug
b2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90DQor
ICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMg
cHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBpcw0KKyAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRp
dGFibGUgZWxlbWVudCBvZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJh
c2UuDQorICAgIC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29u
dGV4dC4NCisgICAgYXV0byBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCisgICAgYXV0byBzY29w
ZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxl
bWVudCgpOw0KKyAgICBpZiAoIXNjb3BlKQ0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsN
CisNCisgICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMoKnNjb3BlKSwgcmFuZ2UpOw0KK30NCisNCiAvLyBSZXR1cm5zIGFuIGFycmF5
IG9mIHN0cmluZ3MgYW5kIEFYT2JqZWN0IHdyYXBwZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRl
eHQNCiAvLyBydW5zIGFuZCByZXBsYWNlbWVudCBub2RlcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4g
cmFuZ2UuDQogLSAoTlNBcnJheSAqKWNvbnRlbnRGb3JTaW1wbGVSYW5nZTooY29uc3QgU2ltcGxl
UmFuZ2UmKXJhbmdlIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmlidXRlZA0KQEAgLTY3NiwxOCArNzQw
LDI2IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywNCiAgICAgcmV0dXJuIGFycmF5LmF1dG9yZWxl
YXNlKCk7DQogfQ0KIA0KLS0gKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopbGluZVJlY3RzQW5k
VGV4dA0KKy0gKFdlYkNvcmU6OkFYQ29yZU9iamVjdCopYmFzZVVwZGF0ZUJhY2tpbmdTdG9yZQ0K
IHsNCiAjaWYgUExBVEZPUk0oTUFDKQ0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi51
cGRhdGVPYmplY3RCYWNraW5nU3RvcmU7DQogICAgIGlmICghYmFja2luZ09iamVjdCkNCi0gICAg
ICAgIHJldHVybiBuaWw7DQorICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAjZWxzZQ0KICAgICBp
ZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQ0KLSAgICAgICAgcmV0dXJuIG5p
bDsNCisgICAgICAgIHJldHVybiBudWxscHRyOw0KICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0g
c2VsZi5heEJhY2tpbmdPYmplY3Q7DQogI2VuZGlmDQorICAgIHJldHVybiBiYWNraW5nT2JqZWN0
Ow0KK30NCiANCistIChOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKWxpbmVSZWN0c0FuZFRleHQN
Cit7DQorICAgIGF1dG8gYmFja2luZ09iamVjdCA9IHNlbGYuYmFzZVVwZGF0ZUJhY2tpbmdTdG9y
ZTsNCisgICAgaWYgKCFiYWNraW5nT2JqZWN0KQ0KKyAgICAgICAgcmV0dXJuIG5pbDsNCisgICAg
DQogICAgIGF1dG8gcmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5lbGVtZW50UmFuZ2UoKTsNCiAgICAg
aWYgKCFyYW5nZSkNCiAgICAgICAgIHJldHVybiBuaWw7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQ0KaW5kZXggNzAwNGM0NmI2NDM5Li5kNjk0MWY4MmYxMjIgMTAwNjQ0
DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQ0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCkBAIC0xNzk1LDcgKzE3OTUs
NyBAQCBzdGF0aWMgdm9pZCBXZWJUcmFuc2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkKiBp
bmZvLCBjb25zdCBDR1BhdGhFbGVtZW50ICplbA0KIA0KIC0gKE5TQXJyYXk8V2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgKj4gKiljaGlsZHJlblZlY3RvckFycmF5DQogew0KLSAgICByZXR1
cm4gY29udmVydFRvTlNBcnJheShzZWxmLmF4QmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7DQor
ICAgIHJldHVybiBtYWtlTlNBcnJheShzZWxmLmF4QmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7
DQogfQ0KIA0KIC0gKE5TVmFsdWUgKilwb3NpdGlvbg0KQEAgLTIyMDMsNyArMjIwMyw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKGJhY2tpbmdP
YmplY3QtPmlzVHJlZUl0ZW0oKSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250ZW50Q29weTsNCiAgICAgICAgICAgICBi
YWNraW5nT2JqZWN0LT5hcmlhVHJlZUl0ZW1Db250ZW50KGNvbnRlbnRDb3B5KTsNCi0gICAgICAg
ICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShjb250ZW50Q29weSk7DQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VOU0FycmF5KGNvbnRlbnRDb3B5KTsNCiAgICAgICAgIH0NCiANCiAgICAgICAg
IHJldHVybiBzZWxmLmNoaWxkcmVuVmVjdG9yQXJyYXk7DQpAQCAtMjIxMyw3ICsyMjEzLDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoYmFja2lu
Z09iamVjdC0+Y2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4oKSkgew0KICAgICAgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxk
cmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNl
bGVjdGVkQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5
KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCiAgICAgICAgIH0NCiAgICAgICAgIHJldHVybiBuaWw7
DQogICAgIH0NCkBAIC0yMjIyLDcgKzIyMjIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQNCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0xpc3RCb3goKSkgew0K
ICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciB2aXNpYmxlQ2hpbGRyZW5Db3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnZp
c2libGVDaGlsZHJlbih2aXNpYmxlQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1cm4g
Y29udmVydFRvTlNBcnJheSh2aXNpYmxlQ2hpbGRyZW5Db3B5KTsNCisgICAgICAgICAgICByZXR1
cm4gbWFrZU5TQXJyYXkodmlzaWJsZUNoaWxkcmVuQ29weSk7DQogICAgICAgICB9DQogDQogICAg
ICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNMaXN0KCkpDQpAQCAtMjIzNCw3ICsyMjM0LDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogDQogICAgIGlmIChiYWNraW5n
T2JqZWN0LT5pc1dlYkFyZWEoKSkgew0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpAIkFYTGlua1VJRWxlbWVudHMiXSkNCi0gICAgICAgICAgICByZXR1cm4gY29u
dmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5kb2N1bWVudExpbmtzKCkpOw0KKyAgICAgICAg
ICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5kb2N1bWVudExpbmtzKCkpOw0K
IA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYTG9hZGVk
Il0pDQogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpiYWNraW5n
T2JqZWN0LT5pc0xvYWRlZCgpXTsNCkBAIC0yMjY3LDE2ICsyMjY3LDIxIEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHRl
eHRSYW5nZSA9IGJhY2tpbmdPYmplY3QtPnNlbGVjdGVkVGV4dFJhbmdlKCk7DQogICAgICAgICAg
ICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHRleHRSYW5nZS5z
dGFydCwgdGV4dFJhbmdlLmxlbmd0aCldOw0KICAgICAgICAgfQ0KLSAgICAgICAgLy8gVE9ETzog
R2V0IGFjdHVhbCB2aXNpYmxlIHJhbmdlLiA8cmRhcjovL3Byb2JsZW0vNDcxMjEwMT4NCi0gICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZp
c2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZV0pDQotICAgICAgICAgICAgcmV0dXJuIGJhY2tp
bmdPYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpID8gbmlsIDogW05TVmFsdWUgdmFsdWVXaXRoUmFu
Z2U6IE5TTWFrZVJhbmdlKDAsIGJhY2tpbmdPYmplY3QtPnRleHRMZW5ndGgoKSldOw0KLQ0KICAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJ
bnNlcnRpb25Qb2ludExpbmVOdW1iZXJBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgaW50IGxp
bmVOdW1iZXIgPSBiYWNraW5nT2JqZWN0LT5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXIoKTsNCiAg
ICAgICAgICAgICByZXR1cm4gbGluZU51bWJlciA+PSAwID8gQChsaW5lTnVtYmVyKSA6IG5pbDsN
CiAgICAgICAgIH0NCiAgICAgfQ0KIA0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKSB7
DQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkpDQorICAgICAg
ICAgICAgcmV0dXJuIG5pbDsNCisgICAgICAgIC8vIFRPRE86IEdldCBhY3R1YWwgdmlzaWJsZSBy
YW5nZS4gPHJkYXI6Ly9wcm9ibGVtLzQ3MTIxMDE+DQorICAgICAgICBpZiAoYmFja2luZ09iamVj
dC0+aXNUZXh0Q29udHJvbCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdp
dGhSYW5nZTpOU01ha2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0LT50ZXh0TGVuZ3RoKCkpXTsNCisg
ICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpbc2VsZiBhY2Nlc3NpYmlsaXR5
VmlzaWJsZUNoYXJhY3RlclJhbmdlXV07DQorICAgIH0NCisNCiAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXSkgew0KICAg
ICAgICAgVVJMIHVybCA9IGJhY2tpbmdPYmplY3QtPnVybCgpOw0KICAgICAgICAgaWYgKHVybC5p
c051bGwoKSkNCkBAIC0yMzgwLDcgKzIzODUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQNCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlJbWFnZU92ZXJsYXlFbGVtZW50c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAg
IGF1dG8gaW1hZ2VPdmVybGF5RWxlbWVudHMgPSBiYWNraW5nT2JqZWN0LT5pbWFnZU92ZXJsYXlF
bGVtZW50cygpOw0KLSAgICAgICAgcmV0dXJuIGltYWdlT3ZlcmxheUVsZW1lbnRzID8gY29udmVy
dFRvTlNBcnJheSgqaW1hZ2VPdmVybGF5RWxlbWVudHMpIDogbmlsOw0KKyAgICAgICAgcmV0dXJu
IGltYWdlT3ZlcmxheUVsZW1lbnRzID8gbWFrZU5TQXJyYXkoKmltYWdlT3ZlcmxheUVsZW1lbnRz
KSA6IG5pbDsNCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbkF0dHJpYnV0ZV0pDQpA
QCAtMjQwNCwyOSArMjQwOSwyOSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQNCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYkxpc3QoKSkgew0KICAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB0YWJz
Q2hpbGRyZW47DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+dGFiQ2hpbGRyZW4odGFic0No
aWxkcmVuKTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheSh0YWJzQ2hpbGRy
ZW4pOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheSh0YWJzQ2hpbGRyZW4pOw0KICAg
ICAgICAgfQ0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y29udGVudHMoKSk7DQorICAgICAgICByZXR1
cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29udGVudHMoKSk7DQogDQogICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc1RhYmxlKCkgJiYgYmFja2luZ09iamVjdC0+aXNFeHBvc2FibGUoKSkg
ew0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlSb3dzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eShiYWNraW5nT2JqZWN0LT5yb3dzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJh
eShiYWNraW5nT2JqZWN0LT5yb3dzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pDQot
ICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+dmlzaWJs
ZVJvd3MoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3Qt
PnZpc2libGVSb3dzKCkpOw0KIA0KICAgICAgICAgLy8gVE9ETzogZGlzdGluZ3Vpc2ggYmV0d2Vl
biB2aXNpYmxlIGFuZCBub24tdmlzaWJsZSBjb2x1bW5zDQogICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdDQog
ICAgICAgICAgICAgfHwgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eVZpc2libGVDb2x1bW5zQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVy
dFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5zKCkpOw0KKyAgICAgICAgICAgIHJldHVy
biBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5zKCkpOw0KIA0KICAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJv
d3NBdHRyaWJ1dGVdKSB7DQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW5Db3B5Ow0KICAgICAgICAgICAg
IGJhY2tpbmdPYmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0K
LSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5
KTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkp
Ow0KICAgICAgICAgfQ0KIA0KICAgICAgICAgLy8gSFRNTCB0YWJsZXMgZG9uJ3Qgc3VwcG9ydCB0
aGVzZSBhdHRyaWJ1dGVzLg0KQEAgLTI0MzUsNyArMjQ0MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIHJldHVybiBuaWw7DQogDQogICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVt
bkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0
VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQogDQog
ICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eUhlYWRlckF0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBhdXRvKiBoZWFkZXJDb250YWluZXIg
PSBiYWNraW5nT2JqZWN0LT5oZWFkZXJDb250YWluZXIoKTsNCkBAIC0yNDQzLDEwICsyNDQ4LDEw
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgfQ0KIA0K
ICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAgICByZXR1cm4gY29u
dmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KKyAgICAgICAgICAg
IHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOw0KIA0KICAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlW
aXNpYmxlQ2VsbHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KGJhY2tpbmdPYmplY3QtPmNlbGxzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNB
cnJheShiYWNraW5nT2JqZWN0LT5jZWxscygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uQ291bnRBdHRyaWJ1dGVd
KQ0KICAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmNvbHVtbkNvdW50KCkpOw0K
QEAgLTI0NjgsNyArMjQ3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RA0KICAgICAgICAgLy8gcm93cyBhdHRyaWJ1dGUgZm9yIGEgY29sdW1uIGlzIHRoZSBsaXN0IG9m
IGFsbCB0aGUgZWxlbWVudHMgaW4gdGhhdCBjb2x1bW4gYXQgZWFjaCByb3cNCiAgICAgICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJp
YnV0ZV0NCiAgICAgICAgICAgICB8fCBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KKyAgICAgICAgICAg
IHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpKTsNCiANCiAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SGVh
ZGVyQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIGF1dG8qIGhlYWRlciA9IGJhY2tpbmdPYmpl
Y3QtPmNvbHVtbkhlYWRlcigpOw0KQEAgLTI0ODgsMTAgKzI0OTMsMTAgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICB9DQogDQogICAgICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkhlYWRlclVJ
RWxlbWVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5
KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1h
a2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7DQogDQogICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd0hlYWRl
clVJRWxlbWVudHNBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7DQorICAgICAgICAgICAgcmV0dXJuIG1h
a2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7DQogDQogICAgICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFSSUFDb2x1bW5J
bmRleEF0dHJpYnV0ZV0pDQogICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+YXhD
b2x1bW5JbmRleCgpKTsNCkBAIC0yNTA0LDEyICsyNTA5LDEyIEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdKSB7DQogICAgICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNl
bGVjdGVkQ2hpbGRyZW5Db3B5Ow0KICAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPnNlbGVjdGVk
Q2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KLSAgICAgICAgICAgIHJldHVybiBjb252
ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCisgICAgICAgICAgICByZXR1cm4g
bWFrZU5TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KICAgICAgICAgfQ0KICAgICAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0
cmlidXRlXSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciByb3dzQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5h
cmlhVHJlZVJvd3Mocm93c0NvcHkpOw0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KHJvd3NDb3B5KTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkocm93c0NvcHkp
Ow0KICAgICAgICAgfQ0KIA0KICAgICAgICAgLy8gVHJlZVJvbGVzIGRvIG5vdCBzdXBwb3J0IGNv
bHVtbnMsIGJ1dCBNYWMgQVggZXhwZWN0cyB0byBiZSBhYmxlIHRvIGFzayBhYm91dCBjb2x1bW5z
IGF0IHRoZSBsZWFzdC4NCkBAIC0yNTQ0LDcgKzI1NDksNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQNCiAgICAgLy8gVGhlIHJvd3MgdGhhdCBhcmUgY29uc2lkZXJlZCBp
bnNpZGUgdGhpcyByb3cuDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkgfHwgYmFja2luZ09iamVjdC0+aXNBUklBVHJlZUdy
aWRSb3coKSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2Jq
ZWN0LT5kaXNjbG9zZWRSb3dzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShi
YWNraW5nT2JqZWN0LT5kaXNjbG9zZWRSb3dzKCkpOw0KICAgICB9DQogDQogICAgIC8vIFRoZSBy
b3cgdGhhdCBjb250YWlucyB0aGlzIHJvdy4gSXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBm
aXJzdCBwYXJlbnQgdGhhdCBpcyBhIHRyZWVpdGVtLg0KQEAgLTI2MTIsNyArMjYxNyw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmli
dXRlXSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGxpbmtlZFVJRWxlbWVudHM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5saW5r
ZWRVSUVsZW1lbnRzKGxpbmtlZFVJRWxlbWVudHMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkobGlua2VkVUlFbGVtZW50cyk7DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
bGlua2VkVUlFbGVtZW50cyk7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1dGVdKQ0KQEAgLTI2
ODUsNyArMjY5MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU93bnNB
dHRyaWJ1dGVdKSB7DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhT3du
c0VsZW1lbnRzKGFyaWFPd25zKTsNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGFy
aWFPd25zKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShhcmlhT3ducyk7DQogICAgIH0N
CiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlBUklBUG9zSW5TZXRBdHRyaWJ1dGVdKQ0KQEAgLTI3NTEsNyArMjc1Niw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoUm9vdFJhZGljYW5kQXR0cmli
dXRlXSkgew0KICAgICAgICAgICAgIGF1dG8gcmFkaWNhbmQgPSBiYWNraW5nT2JqZWN0LT5tYXRo
UmFkaWNhbmQoKTsNCi0gICAgICAgICAgICByZXR1cm4gcmFkaWNhbmQgPyBjb252ZXJ0VG9OU0Fy
cmF5KCpyYWRpY2FuZCkgOiBuaWw7DQorICAgICAgICAgICAgcmV0dXJuIHJhZGljYW5kID8gbWFr
ZU5TQXJyYXkoKnJhZGljYW5kKSA6IG5pbDsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aEZyYWN0aW9u
TnVtZXJhdG9yQXR0cmlidXRlXSkNCkBAIC0yODQ1LDcgKzI4NTAsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpAIkFYRGV0YWlsc0VsZW1lbnRzIl0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXRhaWxzOw0KICAgICAgICAgYmFj
a2luZ09iamVjdC0+YXJpYURldGFpbHNFbGVtZW50cyhkZXRhaWxzKTsNCi0gICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KGRldGFpbHMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5
KGRldGFpbHMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5QnJhaWxsZUxhYmVsQXR0cmlidXRlXSkNCkBAIC0yODYwLDcg
KzI4NjUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYRXJyb3JNZXNzYWdlRWxlbWVudHMi
XSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIGVycm9yTWVzc2FnZXM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhRXJyb3JN
ZXNzYWdlRWxlbWVudHMoZXJyb3JNZXNzYWdlcyk7DQotICAgICAgICByZXR1cm4gY29udmVydFRv
TlNBcnJheShlcnJvck1lc3NhZ2VzKTsNCisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShlcnJv
ck1lc3NhZ2VzKTsNCiAgICAgfQ0KIA0KICAgICAvLyBNdWx0aS1zZWxlY3RhYmxlDQpAQCAtMjg3
OCw3ICsyODgzLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QXJpYUNv
bnRyb2xzQXR0cmlidXRlXSkgew0KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFDb250cm9sczsNCiAgICAgICAgIGJhY2tpbmdPYmpl
Y3QtPmFyaWFDb250cm9sc0VsZW1lbnRzKGFyaWFDb250cm9scyk7DQotICAgICAgICByZXR1cm4g
Y29udmVydFRvTlNBcnJheShhcmlhQ29udHJvbHMpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGFyaWFDb250cm9scyk7DQogICAgIH0NCiANCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlGb2N1c2FibGVBbmNlc3RvckF0dHJpYnV0ZV0p
IHsNCkBAIC0zNDI4LDIyICszNDMzLDYgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5EDQogICAgIH0pOw0KIH0NCiANCi0vLyBGSVhNRTogTm8gcmVhc29uIGZvciB0aGlzIHRv
IGJlIGEgbWV0aG9kIGluc3RlYWQgb2YgYSBmdW5jdGlvbjsgY2FuIGdldCBkb2N1bWVudCBmcm9t
IHJhbmdlLg0KLS0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNvbnN0IFNpbXBsZVJhbmdl
JilyYW5nZQ0KLXsNCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsNCi0gICAgDQotICAgIGF1
dG8gZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCi0gICAgaWYg
KCFkb2N1bWVudCkNCi0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsN
Ci0NCi0gICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50
KCk7DQotICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJh
bmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICByZXR1cm4gY2hhcmFjdGVyUmFuZ2UobWFrZUJv
dW5kYXJ5UG9pbnRCZWZvcmVOb2RlQ29udGVudHMoKmRvY3VtZW50RWxlbWVudCksIHJhbmdlKTsN
Ci19DQotDQogLSAoTlNJbnRlZ2VyKV9pbmRleEZvclRleHRNYXJrZXI6KEFYVGV4dE1hcmtlclJl
ZiltYXJrZXINCiB7DQogICAgIGlmICghbWFya2VyKQ0KQEAgLTM0NjAsNyArMzQ0OSw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAgICAgICAgIGlmICghcmFu
Z2UpDQogICAgICAgICAgICAgICAgIHJldHVybiBOU05vdEZvdW5kOw0KIA0KLSAgICAgICAgICAg
IHJldHVybiBbcHJvdGVjdGVkU2VsZiBfY29udmVydFRvTlNSYW5nZToqcmFuZ2VdLmxvY2F0aW9u
Ow0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNSYW5nZShyYW5nZSkubG9jYXRpb247DQogICAg
ICAgICB9DQogDQogICAgICAgICByZXR1cm4gTlNOb3RGb3VuZDsNCkBAIC0zODM1LDggKzM4MjQs
OCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOw0KICAg
ICAgICAgYmFja2luZ09iamVjdC0+ZmluZE1hdGNoaW5nT2JqZWN0cygmY3JpdGVyaWEsIHJlc3Vs
dHMpOw0KICAgICAgICAgaWYgKHdpZGdldENoaWxkcmVuKQ0KLSAgICAgICAgICAgIHJldHVybiBb
d2lkZ2V0Q2hpbGRyZW4gYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6Y29udmVydFRvTlNB
cnJheShyZXN1bHRzKV07DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShyZXN1bHRz
KTsNCisgICAgICAgICAgICByZXR1cm4gW3dpZGdldENoaWxkcmVuIGFycmF5QnlBZGRpbmdPYmpl
Y3RzRnJvbUFycmF5Om1ha2VOU0FycmF5KHJlc3VsdHMpXTsNCisgICAgICAgIHJldHVybiBtYWtl
TlNBcnJheShyZXN1bHRzKTsNCiAgICAgfQ0KIA0KICAgICAvLyBUZXh0TWFya2VyIGF0dHJpYnV0
ZXMuDQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9p
b3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0NCmluZGV4IGRk
NGViMDk2ZmVlOS4uYmE0NzRmOTZjMGI2IDEwMDY0NA0KLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQ0KKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudElPUy5tbQ0KQEAgLTEwOCw2ICsxMDgsNyBAQCB0eXBlZGVmIHZvaWQgKCpBWFBv
c3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0
aW9uLA0KIC0gKGlkKV9hY2Nlc3NpYmlsaXR5TGlzdEFuY2VzdG9yOw0KIC0gKGlkKV9hY2Nlc3Np
YmlsaXR5UGhvdG9EZXNjcmlwdGlvbjsNCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUltYWdl
T3ZlcmxheUVsZW1lbnRzOw0KKy0gKE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0
ZXJSYW5nZTsNCiANCiAvLyBUZXh0TWFya2VyIHJlbGF0ZWQNCiAtIChOU0FycmF5ICopdGV4dE1h
cmtlclJhbmdlOw0KQEAgLTM5NCw2ICszOTUsOSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcygpDQogDQogSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Rlc2NyaXB0aW9uT2ZB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpDQogew0KKyAgICBpZiAoSlNTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhhdHRyaWJ1dGUsICJBWFZpc2libGVDaGFyYWN0ZXJSYW5n
ZSIpKQ0KKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZ0Zyb21SYW5nZShbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VdKSBjcmVhdGVKU1N0cmluZ1JlZl07DQorDQog
ICAgIHJldHVybiBjcmVhdGVKU1N0cmluZygpOw0KIH0NCiANCg==
</data>
<flag name="review"
          id="470087"
          type_id="1"
          status="+"
          setter="andresg_22"
    />
    <flag name="commit-queue"
          id="470081"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444966</attachid>
            <date>2021-11-22 07:41:00 -0800</date>
            <delta_ts>2021-11-22 12:34:27 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_233336.txt</filename>
            <type>text/plain</type>
            <size>51362</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggZDIwNDhjNGZhMmY2Li4wZDMyYTcyNjU5NDQgMTAwNjQ0DQotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cNCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwx
NyBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4N
CisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRob2QgdG8gZ2V0IHZpc2libGUgdGV4
dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4NCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IEFuZHJlcyBHb256YWxlei4NCisNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3Mtc2lt
dWxhdG9yL3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuDQorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXItcmFuZ2UtZXhwZWN0ZWQudHh0
OiBBZGRlZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5n
ZS5odG1sOiBBZGRlZC4NCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6
DQorICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoNCisgICAgICAg
ICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6DQorDQogMjAyMS0xMS0xOSAgS2lldCBI
byAgPHRobzIyQGFwcGxlLmNvbT4NCiANCiAgICAgICAgIEludGVncmF0ZSBtb3Rpb24gcGF0aCB0
cmFuc2Zvcm1zIGluIHRyYW5zZm9ybWF0aW9uIHBpcGVsaW5lDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sDQpuZXcgZmls
ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi4zOWQzMmRiZDIwMzMNCi0tLSAvZGV2
L251bGwNCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdmlzaWJsZS1jaGFyYWN0ZXIt
cmFuZ2UuaHRtbA0KQEAgLTAsMCArMSw3MyBAQA0KKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4NCis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keSBpZD0iYm9k
eSI+DQorDQorPGRpdiBpZD0iZ3JvdXAiPg0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0DQordGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVz
dCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdA0KK3Rlc3QgdGVzdCB0ZXN0IHRlc3Qg
dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRl
c3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QNCit0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0
IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0
ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0DQorPC9kaXY+DQorDQorPHNjcmlwdD4N
CisNCisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB2aXNpYmxlQ2hhcmFjdGVyUmFu
Z2UgcmV0dXJucyBleHBlY3RlZCB2aXNpYmxlIHJhbmdlcyB3aGlsZSBtb2RpZnlpbmcgb2JzY3Vy
ZWQgY29udGVudC4iKTsNCisNCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgew0KKyAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoImdyb3VwIikuY2hpbGRBdEluZGV4KDApOw0KKyAgICAgICAgZGVidWco
IlZpc2libGUgcmFuZ2U6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1
ZSgiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAgICAgICB0ZXN0UnVubmVyLnNl
dFZpZXdTaXplKDUwMCwgMjAwKTsNCisgICAgICAgIGRlYnVnKCJWaXNpYmxlIHJhbmdlICg1MDAs
IDIwMCk6ICIgKyB0ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNp
YmxlQ2hhcmFjdGVyUmFuZ2UiKSk7DQorDQorICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRv
cCA9IDIwMDsNCisgICAgICAgIHRlc3RSdW5uZXIuc2V0Vmlld1NpemUoMjAwLCA1MDApOw0KKyAg
ICAgICAgZGVidWcoIlZpc2libGUgcmFuZ2UsIG9mZnNldDogMjAwICgyMDAsIDUwMCk6ICIgKyB0
ZXh0LnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlQ2hhcmFjdGVy
UmFuZ2UiKSk7DQorDQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAiKS5z
dHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7DQorICAgIH0NCisNCis8L3NjcmlwdD4NCisNCis8
L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlv
bnMNCmluZGV4IGE0MmM3MjlmMDdmZi4uYTRiMTA0ZTA1N2JlIDEwMDY0NA0KLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMNCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zDQpAQCAtMjExOCw3ICsyMTE4LDcgQEAgd2Via2l0
Lm9yZy9iLzE0ODgwNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVs
dGljb2wvbXVsdGljb2wtc3ANCiBmYXN0L2RvbS9saW5raWZ5LXBob25lLW51bWJlcnMuaHRtbCBb
IFBhc3MgXQ0KIA0KIGFjY2Vzc2liaWxpdHkvdmlkZW8tZWxlbWVudC11cmwtYXR0cmlidXRlLmh0
bWwgWyBQYXNzIF0NCi0NCithY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLmh0
bWwgWyBQYXNzIF0NCiBhY2Nlc3NpYmlsaXR5L2FuY2VzdG9yLWNvbXB1dGF0aW9uLmh0bWwgWyBQ
YXNzIF0NCiANCiAjIEVuYWJsZSAiYXJpYS1jdXJyZW50IiB0ZXN0cyBmb3IgaU9TLg0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hh
cmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9hY2Nl
c3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dA0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uZWY5MGEwN2ViNmJlDQotLS0gL2Rldi9u
dWxsDQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvYWNjZXNzaWJpbGl0eS92aXNpYmxl
LWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQNCkBAIC0wLDAgKzEsMTIgQEANCitUaGlzIHRl
c3RzIHRoYXQgdmlzaWJsZUNoYXJhY3RlclJhbmdlIHJldHVybnMgZXhwZWN0ZWQgdmlzaWJsZSBy
YW5nZXMgd2hpbGUgbW9kaWZ5aW5nIG9ic2N1cmVkIGNvbnRlbnQuDQorDQorT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLg0KKw0KKw0KK1Zpc2libGUgcmFuZ2U6IHswLCAzOTAwfQ0KK1Zpc2libGUg
cmFuZ2UgKDUwMCwgMjAwKTogezAsIDI3MH0NCitWaXNpYmxlIHJhbmdlLCBvZmZzZXQ6IDIwMCAo
MjAwLCA1MDApOiB7MCwgNzM1fQ0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUNCisN
CitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zDQppbmRleCA5YTA3NDU4NzkzNTQuLjg0NzFmMjIyYzUzMyAxMDA2NDQNCi0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucw0KKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zDQpAQCAtNjAxLDYg
KzYwMSw5IEBAIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctaW5zZXJ0LWh0bWwuaHRtbCBbIFBh
c3MgVGltZW91dCBdDQogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwgWyBG
YWlsdXJlIF0NCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXVuaWZpZWQtZW11bGF0aW9uLmh0
bWwgWyBGYWlsdXJlIF0NCiANCisjIFNraXAgZHVlIHRvIGxhY2sgb2YgRHVtcFJlbmRlclRyZWUg
YEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1
ZWAgaW1wbGVtZW50YXRpb24uDQorYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5n
ZS5odG1sIFsgU2tpcCBdDQorDQogIyA8cmRhcjovL3Byb2JsZW0vMjYwNTA5MjM+IFRoZSByZXN1
bHQgaXMgcHJvYmFibHkgc3RpbGwgYSBwYXNzLCBidXQgd2UgZG9uJ3QgaGF2ZSBhIHdheQ0KICMg
dG8gaGF2ZSBwbGF0Zm9ybSBzcGVjaWZpYyByZXN1bHRzIHRoYXQgYXJlIGRpZmZlcmVudCBiZXR3
ZWVuIFdLMSBhbmQgV0syLg0KIGFjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMu
aHRtbCBbIEZhaWx1cmUgXQ0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFjdGVyLXJhbmdl
LWV4cGVjdGVkLnR4dA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4u
Y2RiYjhjNDIyZGE3DQotLS0gL2Rldi9udWxsDQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS1leHBlY3RlZC50eHQNCkBA
IC0wLDAgKzEsMTIgQEANCitUaGlzIHRlc3RzIHRoYXQgdmlzaWJsZUNoYXJhY3RlclJhbmdlIHJl
dHVybnMgZXhwZWN0ZWQgdmlzaWJsZSByYW5nZXMgd2hpbGUgbW9kaWZ5aW5nIG9ic2N1cmVkIGNv
bnRlbnQuDQorDQorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLg0KKw0KKw0KK1Zpc2libGUgcmFu
Z2U6IE5TUmFuZ2U6IHswLCA0MjA1fQ0KK1Zpc2libGUgcmFuZ2UgKDUwMCwgMjAwKTogTlNSYW5n
ZTogezAsIDM2MH0NCitWaXNpYmxlIHJhbmdlLCBvZmZzZXQ6IDIwMCAoMjAwLCA1MDApOiBOU1Jh
bmdlOiB7MCwgNjkwfQ0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUNCisNCitURVNU
IENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucw0K
aW5kZXggYTcxZTQzMGViOGU5Li4wZmI5YzM5OTExMGIgMTAwNjQ0DQotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucw0KKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMNCkBAIC0yNzgsNiArMjc4LDcgQEAgYWNjZXNzaWJpbGl0
eS9hcmlhLWxpc3Rib3gtY2xlYXItc2VsZWN0aW9uLWNyYXNoLmh0bWwgWyBTa2lwIF0NCiBhY2Nl
c3NpYmlsaXR5L2xpc3Rib3gtY2xlYXItc2VsZWN0aW9uLmh0bWwgWyBTa2lwIF0NCiBhY2Nlc3Np
YmlsaXR5L2VtYmVkZGVkLWltYWdlLWRlc2NyaXB0aW9uLmh0bWwgWyBTa2lwIF0NCiBhY2Nlc3Np
YmlsaXR5L2ltZy1uby1hbHQtbm90LWlnbm9yZWQtd2l0aC10aXRsZS5odG1sIFsgU2tpcCBdDQor
YWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJhY3Rlci1yYW5nZS5odG1sIFsgU2tpcCBdDQogDQog
IyBOZWVkIHRvIGltcGxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNEb2N1bWVudFJv
bGVBbmNlc3RvcigpLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNXZWJBcHBsaWNhdGlvbkFu
Y2VzdG9yKCksDQogIyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luRGVzY3JpcHRpb25MaXN0
RGV0YWlsKCksIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5EZXNjcmlwdGlvbkxpc3RUZXJt
KCksIGFuZA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZw0KaW5kZXggOGJlYTRmNmZmZDU1Li4xM2ZjOGExNzk3YTEgMTAwNjQ0
DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZw0KQEAgLTEsMyArMSw1MSBAQA0KKzIwMjEtMTEtMTkgIENocmlzIEZsZWl6YWNoICA8
Y2ZsZWl6YWNoQGFwcGxlLmNvbT4NCisNCisgICAgICAgIEFYOiBXZWJLaXQ6IG5lZWQgYSBtZXRo
b2QgdG8gZ2V0IHZpc2libGUgdGV4dCBhbmQgZnJhbWUgb2YgYW4gZWxlbWVudCBvbiBzY3JlZW4N
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMzYN
CisNCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlcyBHb256YWxlei4NCisNCisgICAgICAgIElt
cGxlbWVudCB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgZm9yIHN0YXRpYyB0ZXh0IGVsZW1lbnRzIHNv
IHRoYXQgQm9va3MgY2FuIGRldGVybWluZSB0aGUgdmlzaWJsZQ0KKyAgICAgICAgY29udGVudCBv
biBhIHBhZ2UuDQorDQorICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUtY2hhcmFj
dGVyLXJhbmdlLmh0bWwNCisNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNp
YmxlQ2hhcmFjdGVyUmFuZ2UgY29uc3QpOg0KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnVub2JzY3VyZWRDb250ZW50UmVjdCBjb25zdCk6DQorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06DQorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNvbnRlbnRS
ZWN0XSk6DQorICAgICAgICAoYWNjZXNzaWJsZUVsZW1lbnRzRm9yT2JqZWN0cyk6DQorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5RmluZE1hdGNo
aW5nT2JqZWN0czpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IHBvc2l0aW9uRm9yVGV4dE1hcmtlcjpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIHRleHRNYXJrZXJGb3JQb3NpdGlvbjpdKToNCisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHN0cmluZ0ZvclJhbmdlOl0pOg0KKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZnJhbWVGb3JSYW5nZTpdKToNCisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlNYXRoUmFkaWNh
bmRdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0
VG9OU1JhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgX2NvbnZlcnRUb0RPTVJhbmdlOl0pOiBEZWxldGVkLg0KKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoNCisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UgY29uc3QpOg0K
KyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnVub2JzY3VyZWRDb250ZW50UmVj
dCBjb25zdCk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuaDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLmg6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToNCisgICAgICAgIChtYWtlTlNBcnJheSk6
DQorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgYWNjZXNzaWJp
bGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZV0pOg0KKyAgICAgICAgKG1ha2VOU1JhbmdlKToNCisg
ICAgICAgIChtYWtlRE9NUmFuZ2UpOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlIGJhc2VVcGRhdGVCYWNraW5nU3RvcmVdKToNCisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBsaW5lUmVjdHNBbmRUZXh0XSk6DQorICAgICAg
ICAoY29udmVydFRvTlNBcnJheSk6IERlbGV0ZWQuDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOg0KKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2hpbGRyZW5WZWN0b3JBcnJheV0pOg0KKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOl0pOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2lu
ZGV4Rm9yVGV4dE1hcmtlcjpdKToNCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6DQorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfY29udmVydFRvTlNSYW5nZTpd
KTogRGVsZXRlZC4NCisNCiAyMDIxLTExLTE5ICBLaWV0IEhvICA8dGhvMjJAYXBwbGUuY29tPg0K
IA0KICAgICAgICAgSW1wbGVtZW50IHBhcnNpbmcgYW5kIGFuaW1hdGlvbiBzdXBwb3J0IGZvciBy
YXkoKSBzaGFwZSBhY2NlcHRlZCBieSBvZmZzZXQtcGF0aA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwDQppbmRleCA5Mzg0OGUx
Y2FiNzYuLjEwYmE5Zjk3NmQzYyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHANCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHANCkBAIC03MDQsNiArNzA0LDUyIEBAIHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRSYW5n
ZSgpIGNvbnN0DQogICAgIHJldHVybiBBWE9iamVjdENhY2hlOjpyYW5nZUZvck5vZGVDb250ZW50
cygqbm9kZSk7DQogfQ0KIA0KK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0DQorew0KKyAgICBhdXRvIHJh
bmdlID0gZWxlbWVudFJhbmdlKCk7DQorICAgIGlmICghcmFuZ2UpDQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0Ow0KKw0KKyAgICBhdXRvIGNvbnRlbnRSZWN0ID0gdW5vYnNjdXJlZENvbnRl
bnRSZWN0KCk7DQorICAgIGF1dG8gZWxlbWVudFJlY3QgPSBzbmFwcGVkSW50UmVjdCh0aGlzLT5l
bGVtZW50UmVjdCgpKTsNCisgICAgaWYgKCFjb250ZW50UmVjdC5pbnRlcnNlY3RzKGVsZW1lbnRS
ZWN0KSkNCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIHN0ZDo6b3B0aW9u
YWw8Qm91bmRhcnlQb2ludD4gc3RhcnRCb3VuZGFyeSA9IHJhbmdlLT5zdGFydDsNCisgICAgc3Rk
OjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBlbmRCb3VuZGFyeSA9IHJhbmdlLT5lbmQ7DQorDQor
ICAgIC8vIE9yaWdpbiBpc24ndCBjb250YWluZWQgaW4gdmlzaWJsZSByZWN0LCBzdGFydCBtb3Zp
bmcgZm9yd2FyZCBieSBsaW5lLg0KKyAgICB3aGlsZSAoIWNvbnRlbnRSZWN0LmNvbnRhaW5zKGVs
ZW1lbnRSZWN0LmxvY2F0aW9uKCkpKSB7DQorICAgICAgICBhdXRvIG5leHRMaW5lUG9zaXRpb24g
PSBuZXh0TGluZUVuZFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihtYWtlQ29udGFpbmVyT2Zmc2V0
UG9zaXRpb24oKnN0YXJ0Qm91bmRhcnkpKSk7DQorICAgICAgICBzdGQ6Om9wdGlvbmFsPEJvdW5k
YXJ5UG9pbnQ+IHRlc3RTdGFydEJvdW5kYXJ5ID0gbWFrZUJvdW5kYXJ5UG9pbnQobmV4dExpbmVQ
b3NpdGlvbik7DQorICAgICAgICBpZiAoIXRlc3RTdGFydEJvdW5kYXJ5IHx8ICFjb250YWlucygq
cmFuZ2UsICp0ZXN0U3RhcnRCb3VuZGFyeSkpDQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAg
ICANCisgICAgICAgIHN0YXJ0Qm91bmRhcnkgPSB0ZXN0U3RhcnRCb3VuZGFyeTsNCisgICAgICAg
IGVsZW1lbnRSZWN0ID0gYm91bmRzRm9yUmFuZ2UoU2ltcGxlUmFuZ2UoKnN0YXJ0Qm91bmRhcnks
IHJhbmdlLT5lbmQpKTsNCisgICAgICAgIGlmIChlbGVtZW50UmVjdC5pc0VtcHR5KCkpDQorICAg
ICAgICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgLy8gRW5kIGlzbid0IGNvbnRhaW5lZCBp
biB2aXNpYmxlIHJlY3QsIHN0YXJ0IG1vdmluZyBiYWNrd2FyZHMgYnkgbGluZS4NCisgICAgd2hp
bGUgKCFjb250ZW50UmVjdC5jb250YWlucyhlbGVtZW50UmVjdC5sb2NhdGlvbigpICsgZWxlbWVu
dFJlY3Quc2l6ZSgpKSkgew0KKyAgICAgICAgYXV0byBwcmV2aW91c0xpbmVQb3NpdGlvbiA9IHBy
ZXZpb3VzTGluZVN0YXJ0UG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1ha2VDb250YWluZXJPZmZz
ZXRQb3NpdGlvbigqZW5kQm91bmRhcnkpKSk7DQorICAgICAgICBzdGQ6Om9wdGlvbmFsPEJvdW5k
YXJ5UG9pbnQ+IHRlc3RFbmRCb3VuZGFyeSA9IG1ha2VCb3VuZGFyeVBvaW50KHByZXZpb3VzTGlu
ZVBvc2l0aW9uKTsNCisgICAgICAgIGlmICghdGVzdEVuZEJvdW5kYXJ5IHx8ICFjb250YWlucygq
cmFuZ2UsICp0ZXN0RW5kQm91bmRhcnkpKQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAg
DQorICAgICAgICBlbmRCb3VuZGFyeSA9IHRlc3RFbmRCb3VuZGFyeTsNCisgICAgICAgIGVsZW1l
bnRSZWN0ID0gYm91bmRzRm9yUmFuZ2UoeyAqc3RhcnRCb3VuZGFyeSwgKmVuZEJvdW5kYXJ5IH0p
Ow0KKyAgICAgICAgaWYgKGVsZW1lbnRSZWN0LmlzRW1wdHkoKSkNCisgICAgICAgICAgICBicmVh
azsNCisgICAgfQ0KKw0KKyAgICBpZiAoIXN0YXJ0Qm91bmRhcnkgfHwgIWVuZEJvdW5kYXJ5KQ0K
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCisgICAgDQorICAgIHJldHVybiB7eyAqc3Rh
cnRCb3VuZGFyeSwgKmVuZEJvdW5kYXJ5IH19Ow0KK30NCisNCiBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaW5kVGV4dFJhbmdlKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBzZWFyY2hTdHJpbmdzLCBjb25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2li
aWxpdHlTZWFyY2hUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QNCiB7DQogICAgIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZvdW5kOw0KQEAgLTMxODIsNiArMzIyOCwxNCBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29u
c3QgSW50UmVjdCYgc3ViZm9jdQ0KICAgICAgICAgc2Nyb2xsUGFyZW50LT5zY3JvbGxUb01ha2VW
aXNpYmxlV2l0aFN1YkZvY3VzKG5ld1N1YmZvY3VzKTsNCiB9DQogDQorRmxvYXRSZWN0IEFjY2Vz
c2liaWxpdHlPYmplY3Q6OnVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0DQorew0KKyAgICBh
dXRvIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsNCisgICAgaWYgKCFkb2N1bWVudCB8fCAh
ZG9jdW1lbnQtPnZpZXcoKSkNCisgICAgICAgIHJldHVybiB7IH07DQorICAgIHJldHVybiBGbG9h
dFJlY3Qoc25hcHBlZEludFJlY3QoZG9jdW1lbnQtPnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRS
ZWN0KCkpKTsNCit9DQorDQogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb0dsb2Jh
bFBvaW50KGNvbnN0IEludFBvaW50JiBnbG9iYWxQb2ludCkgY29uc3QNCiB7DQogICAgIC8vIFNl
YXJjaCB1cCB0aGUgcGFyZW50IGNoYWluIGFuZCBjcmVhdGUgYSB2ZWN0b3Igb2YgYWxsIHNjcm9s
bGFibGUgcGFyZW50IG9iamVjdHMNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oDQppbmRleCAyMWZmNGEyOGE1YTYuLjU5Y2VhNGY0YjM5
NyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaA0KQEAgLTgwOCw3ICs4MDgsNyBAQCBwcm90ZWN0ZWQ6DQogICAgIHZvaWQgYXJp
YUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImLCBjb25z
dCBRdWFsaWZpZWROYW1lJikgY29uc3Q7DQogICAgIHZvaWQgYXJpYUVsZW1lbnRzUmVmZXJlbmNl
ZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdDsNCiAgICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0NCi0NCisgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250
ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByYWRp
b0dyb3VwQW5jZXN0b3IoKSBjb25zdDsNCiANCiAgICAgYm9vbCBhbGxvd3NUZXh0UmFuZ2VzKCkg
Y29uc3Q7DQpAQCAtODIxLDYgKzgyMSw3IEBAIHByaXZhdGU6DQogICAgIHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IHJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW9uKGNvbnN0
IFNpbXBsZVJhbmdlJiwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mKSBjb25zdDsNCiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VsZWN0
aW9uUmFuZ2UoKSBjb25zdDsNCiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZmluZFRl
eHRSYW5nZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoU3RyaW5ncywgY29uc3QgU2ltcGxl
UmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbikgY29uc3Q7DQor
ICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNv
bnN0IG92ZXJyaWRlOw0KIA0KIHByb3RlY3RlZDogLy8gRklYTUU6IE1ha2UgdGhlIGRhdGEgbWVt
YmVycyBwcml2YXRlLg0KICAgICBib29sIGNoaWxkcmVuSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2NoaWxkcmVuSW5pdGlhbGl6ZWQ7IH0NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQppbmRl
eCBlMTU5NjIxYzg1NDkuLjE2NzlmMDFjNTFkZiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaA0K
QEAgLTk4OCw2ICs5ODgsNyBAQCBwdWJsaWM6DQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0V4cGFu
ZGVkKGJvb2wpID0gMDsNCiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNv
bnN0ID0gMDsNCiAgICAgdmlydHVhbCBGbG9hdFJlY3QgY29udmVydEZyYW1lVG9TcGFjZShjb25z
dCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCA9IDA7DQor
ICAgIHZpcnR1YWwgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0ID0gMDsN
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ2hlY2tlZFN0YXRlKCkgY29uc3QgPSAwOw0KICAg
ICANCiAgICAgLy8gSW4gYSBtdWx0aS1zZWxlY3QgbGlzdCwgbWFueSBpdGVtcyBjYW4gYmUgc2Vs
ZWN0ZWQgYnV0IG9ubHkgb25lIGlzIGFjdGl2ZSBhdCBhIHRpbWUuDQpAQCAtOTk3LDYgKzk5OCw3
IEBAIHB1YmxpYzoNCiAgICAgdmlydHVhbCBib29sIGhhc0l0YWxpY0ZvbnQoKSBjb25zdCA9IDA7
DQogICAgIHZpcnR1YWwgYm9vbCBoYXNNaXNzcGVsbGluZygpIGNvbnN0ID0gMDsNCiAgICAgdmly
dHVhbCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlKGNvbnN0IFNp
bXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3QgPSAw
Ow0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHZpc2libGVDaGFyYWN0
ZXJSYW5nZSgpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIGhhc1BsYWluVGV4dCgpIGNv
bnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIGhhc1NhbWVGb250KGNvbnN0IEFYQ29yZU9iamVj
dCYpIGNvbnN0ID0gMDsNCiAgICAgdmlydHVhbCBib29sIGhhc1NhbWVGb250Q29sb3IoY29uc3Qg
QVhDb3JlT2JqZWN0JikgY29uc3QgPSAwOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0NCmluZGV4IDVlMGM4YzhlYmM2Ny4uOTg5MzQxYWZjMjEyIDEwMDY0NA0KLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0NCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tDQpAQCAtNTIsNiArNTIsNyBAQA0KICNpbXBv
cnQgIlNWR0VsZW1lbnRJbmxpbmVzLmgiDQogI2ltcG9ydCAiU1ZHTmFtZXMuaCINCiAjaW1wb3J0
ICJTZWxlY3Rpb25HZW9tZXRyeS5oIg0KKyNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiDQogI2ltcG9y
dCAiVGV4dEl0ZXJhdG9yLmgiDQogI2ltcG9ydCAiV0FLU2Nyb2xsVmlldy5oIg0KICNpbXBvcnQg
IldBS1dpbmRvdy5oIg0KQEAgLTE2OTQsMTIgKzE2OTUsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRT
dHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmluZykN
CiB7DQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQogICAgICAg
ICByZXR1cm4gQ0dSZWN0WmVybzsNCi0gICAgDQotICAgIGF1dG8gZG9jdW1lbnQgPSBzZWxmLmF4
QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCi0gICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1l
bnQtPnZpZXcoKSkNCi0gICAgICAgIHJldHVybiBDR1JlY3RaZXJvOw0KLSAgICBhdXRvIHJlY3Qg
PSBGbG9hdFJlY3Qoc25hcHBlZEludFJlY3QoZG9jdW1lbnQtPnZpZXcoKS0+dW5vYnNjdXJlZENv
bnRlbnRSZWN0KCkpKTsNCi0gICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpyZWN0
IHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl07DQorICAgIHJldHVy
biBbc2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6c2VsZi5heEJhY2tpbmdPYmplY3QtPnVub2JzY3Vy
ZWRDb250ZW50UmVjdCgpIHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVl
bl07DQogfQ0KIA0KIC8vIFRoZSAiY2VudGVyIHBvaW50IiBpcyB3aGVyZSBWb2ljZU92ZXIgd2ls
bCAicHJlc3MiIGFuIG9iamVjdC4gVGhpcyBtYXkgbm90IGJlIHRoZSBhY3R1YWwNCkBAIC0xOTE1
LDcgKzE5MTEsNyBAQCBzdGF0aWMgTlNBcnJheSAqYWNjZXNzaWJsZUVsZW1lbnRzRm9yT2JqZWN0
cyhjb25zdCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaA0KICAgICAgICAgfSk7DQogICAg
IH0NCiANCi0gICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYWNjZXNzaWJsZUVsZW1lbnRzKTsN
CisgICAgcmV0dXJuIG1ha2VOU0FycmF5KGFjY2Vzc2libGVFbGVtZW50cyk7DQogfQ0KIA0KIC0g
KE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5RGV0YWlsc0VsZW1lbnRzDQpAQCAtMjEwNCw3ICsyMTAw
LDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcqIHZpZXcp
DQogICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBjcml0ZXJpYSA9IGFjY2Vzc2liaWxp
dHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUo
cGFyYW1ldGVycyk7DQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciByZXN1bHRzOw0KICAgICBzZWxmLmF4QmFja2luZ09iamVjdC0+ZmluZE1hdGNo
aW5nT2JqZWN0cygmY3JpdGVyaWEsIHJlc3VsdHMpOw0KLSAgICByZXR1cm4gY29udmVydFRvTlNB
cnJheShyZXN1bHRzKTsNCisgICAgcmV0dXJuIG1ha2VOU0FycmF5KHJlc3VsdHMpOw0KIH0NCiAN
CiAtICh2b2lkKWFjY2Vzc2liaWxpdHlNb2RpZnlTZWxlY3Rpb246KFRleHRHcmFudWxhcml0eSln
cmFudWxhcml0eSBpbmNyZWFzZTooQk9PTClpbmNyZWFzZQ0KQEAgLTIyMDksNDcgKzIyMDUsNiBA
QCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAg
ICAgcmV0dXJuIHJhbmdlID8gW3NlbGYgY29udGVudEZvclNpbXBsZVJhbmdlOipyYW5nZSBhdHRy
aWJ1dGVkOmF0dHJpYnV0ZWRdIDogbmlsOw0KIH0NCiANCi0vLyBGSVhNRTogTm8gcmVhc29uIGZv
ciB0aGlzIHRvIGJlIGEgbWV0aG9kIGluc3RlYWQgb2YgYSBmdW5jdGlvbi4NCi0tIChOU1Jhbmdl
KV9jb252ZXJ0VG9OU1JhbmdlOihjb25zdCBTaW1wbGVSYW5nZSYpcmFuZ2UNCi17DQotICAgIGF1
dG8mIGRvY3VtZW50ID0gcmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKTsNCi0gICAgYXV0byogZnJhbWUg
PSBkb2N1bWVudC5mcmFtZSgpOw0KLSAgICBpZiAoIWZyYW1lKQ0KLSAgICAgICAgcmV0dXJuIE5T
TWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICBhdXRvKiByb290RWRpdGFibGVFbGVt
ZW50ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQo
KTsNCi0gICAgYXV0byogc2NvcGUgPSByb290RWRpdGFibGVFbGVtZW50ID8gcm9vdEVkaXRhYmxl
RWxlbWVudCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOw0KLSAgICBpZiAoIXNjb3BlKQ0K
LSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KLQ0KLSAgICAvLyBN
b3VzZSBldmVudHMgbWF5IGNhdXNlIFRTTSB0byBhdHRlbXB0IHRvIGNyZWF0ZSBhbiBOU1Jhbmdl
IGZvciBhIHBvcnRpb24gb2YgdGhlIHZpZXcNCi0gICAgLy8gdGhhdCBpcyBub3QgaW5zaWRlIHRo
ZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lvbi4gVGhlc2UgY2hlY2tzIGVuc3VyZSB3ZSBkb24ndCBw
cm9kdWNlDQotICAgIC8vIHBvdGVudGlhbGx5IGludmFsaWQgZGF0YSB3aGVuIHJlc3BvbmRpbmcg
dG8gc3VjaCByZXF1ZXN0cy4NCi0gICAgaWYgKCFzY29wZS0+Y29udGFpbnMocmFuZ2Uuc3RhcnQu
Y29udGFpbmVyLnB0cigpKSB8fCAhc2NvcGUtPmNvbnRhaW5zKHJhbmdlLmVuZC5jb250YWluZXIu
cHRyKCkpKQ0KLSAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KLQ0K
LSAgICByZXR1cm4gTlNNYWtlUmFuZ2UoY2hhcmFjdGVyQ291bnQoeyB7ICpzY29wZSwgMCB9LCBy
YW5nZS5zdGFydCB9KSwgY2hhcmFjdGVyQ291bnQocmFuZ2UpKTsNCi19DQotDQotLSAoc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlDQot
ew0KLSAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkNCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7DQotDQotICAgIC8vIG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRo
YXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdA0KLSAgICAvLyBjb25j
ZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uDQotICAgIC8v
IFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMu
IFRoZSBET00gZm9yIHRob3NlIGlzIG5vdA0KLSAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1l
bnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMN
Ci0gICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlv
biBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLg0KLSAgICAvLyBUaGF0IGZpdHMgd2l0aCBB
cHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuDQotICAgIGF1dG8gZG9jdW1lbnQgPSBz
ZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsNCi0gICAgYXV0byBzZWxlY3Rpb25Sb290
ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJs
ZUVsZW1lbnQoKTsNCi0gICAgYXV0byBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25S
b290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOw0KLSAgICBpZiAoIXNjb3BlKQ0KLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCi0NCi0gICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0
ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgcmFuZ2UpOw0K
LX0NCiANCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byB0YWtlIGEgdGV4dCBtYXJrZXIg
cmVwcmVzZW50aW5nIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCBjb252ZXJ0IGl0DQogLy8gaW50byBh
IG5vcm1hbGl6ZWQgbG9jYXRpb24gd2l0aGluIHRoZSBkb2N1bWVudC4NCkBAIC0yMjY3LDcgKzIy
MjIsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmll
dykNCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYWNoZS0+cmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0
ZXJPZmZzZXRzKGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyT2Zmc2V0KTsNCiAgICAgICAgIGlm
ICghcmFuZ2UpDQogICAgICAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7DQotICAgICAgICByZXR1
cm4gW3NlbGYgX2NvbnZlcnRUb05TUmFuZ2U6KnJhbmdlXS5sb2NhdGlvbjsNCisgICAgICAgIHJl
dHVybiBtYWtlTlNSYW5nZShyYW5nZSkubG9jYXRpb247DQogICAgIH0NCiAgICAgcmV0dXJuIE5T
Tm90Rm91bmQ7DQogfQ0KQEAgLTIzNDYsNyArMjMwMSw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQ0KICAgICBpZiAoIVtzZWxmIF9wcmVwYXJl
QWNjZXNzaWJpbGl0eUNhbGxdKQ0KICAgICAgICAgcmV0dXJuIG5pbDsNCiANCi0gICAgYXV0byBy
YW5nZSA9IFtzZWxmIF9jb252ZXJ0VG9ET01SYW5nZTpOU01ha2VSYW5nZShwb3NpdGlvbiwgMCld
Ow0KKyAgICBhdXRvIHJhbmdlID0gbWFrZURPTVJhbmdlKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5k
b2N1bWVudCgpLCBOU01ha2VSYW5nZShwb3NpdGlvbiwgMCkpOw0KICAgICBpZiAoIXJhbmdlKQ0K
ICAgICAgICAgcmV0dXJuIG5pbDsNCiANCkBAIC0yNDE0LDcgKzIzNjksNyBAQCBzdGF0aWMgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiB7DQogICAgIGlmICgh
W3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pDQogICAgICAgICByZXR1cm4gbmlsOw0K
LSAgICBhdXRvIHdlYlJhbmdlID0gW3NlbGYgX2NvbnZlcnRUb0RPTVJhbmdlOnJhbmdlXTsNCisg
ICAgYXV0byB3ZWJSYW5nZSA9IG1ha2VET01SYW5nZShzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9j
dW1lbnQoKSwgcmFuZ2UpOw0KICAgICBpZiAoIXdlYlJhbmdlKQ0KICAgICAgICAgcmV0dXJuIG5p
bDsNCiAgICAgcmV0dXJuIHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zdHJpbmdGb3JSYW5nZSgqd2Vi
UmFuZ2UpOw0KQEAgLTI2MDAsNiArMjU1NSwxNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgcmV0dXJuIFtzZWxmIHByZXZpb3VzTWFy
a2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OnN0YXJ0XTsNCiB9DQogDQorLSAoQ0dSZWN0KWZyYW1lRm9y
UmFuZ2U6KE5TUmFuZ2UpcmFuZ2UNCit7DQorICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3Np
YmlsaXR5Q2FsbF0pDQorICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsNCisgICAgYXV0byB3ZWJS
YW5nZSA9IG1ha2VET01SYW5nZShzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKSwgcmFu
Z2UpOw0KKyAgICBpZiAoIXdlYlJhbmdlKQ0KKyAgICAgICAgcmV0dXJuIENHUmVjdFplcm87DQor
ICAgIGF1dG8gcmVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5ib3VuZHNGb3JSYW5nZSgqd2Vi
UmFuZ2UpOw0KKyAgICByZXR1cm4gW3NlbGYgY29udmVydFJlY3RUb1NwYWNlOnJlY3Qgc3BhY2U6
QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6U2NyZWVuXTsNCit9DQorDQogLy8gVGhpcyBt
ZXRob2QgaXMgaW50ZW5kZWQgdG8gcmV0dXJuIHRoZSBib3VuZHMgb2YgYSB0ZXh0IG1hcmtlciBy
YW5nZSBpbiBzY3JlZW4gY29vcmRpbmF0ZXMuDQogLSAoQ0dSZWN0KWZyYW1lRm9yVGV4dE1hcmtl
cnM6KE5TQXJyYXkgKilhcnJheQ0KIHsNCkBAIC0yOTMxLDcgKzI4OTcsNyBAQCBzdGF0aWMgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykNCiAgICAgICAgIHJldHVy
biBuaWw7DQogDQogICAgIGF1dG8gcmFkaWNhbmQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+bWF0
aFJhZGljYW5kKCk7DQotICAgIHJldHVybiByYWRpY2FuZCA/IGNvbnZlcnRUb05TQXJyYXkoKnJh
ZGljYW5kKSA6IG5pbDsNCisgICAgcmV0dXJuIHJhZGljYW5kID8gbWFrZU5TQXJyYXkoKnJhZGlj
YW5kKSA6IG5pbDsNCiB9DQogDQogLSAoV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKilh
Y2Nlc3NpYmlsaXR5TWF0aE51bWVyYXRvck9iamVjdA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5j
cHANCmluZGV4IDExYTc5YjEyMTcyZC4uMzY5NTJmOTQwOGZiIDEwMDY0NA0KLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAN
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuY3BwDQpAQCAtOTkyLDYgKzk5MiwxMyBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6
OnVwZGF0ZUJhY2tpbmdTdG9yZSgpDQogICAgICAgICB0cmVlLT5hcHBseVBlbmRpbmdDaGFuZ2Vz
KCk7DQogfQ0KIA0KK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6
OnZpc2libGVDaGFyYWN0ZXJSYW5nZSgpIGNvbnN0DQorew0KKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOw0KKyAgICBhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0ZWRBWE9iamVjdCgpOw0KKyAg
ICByZXR1cm4gYXhPYmplY3QgPyBheE9iamVjdC0+dmlzaWJsZUNoYXJhY3RlclJhbmdlKCkgOiBz
dGQ6Om51bGxvcHQ7DQorfQ0KKw0KIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0
ZWRPYmplY3Q6OnJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmIGF4
UmFuZ2UpIGNvbnN0DQogew0KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOw0KQEAgLTE0NzAs
NiArMTQ3NywxNSBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFNlbGVjdGVkVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZw0KICAgICAgICAgb2JqZWN0LT5z
ZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NpdGlvblJhbmdlKTsNCiB9
DQogDQorRmxvYXRSZWN0IEFYSXNvbGF0ZWRPYmplY3Q6OnVub2JzY3VyZWRDb250ZW50UmVjdCgp
IGNvbnN0DQorew0KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21N
YWluVGhyZWFkPEZsb2F0UmVjdD4oW3RoaXNdICgpIC0+IEZsb2F0UmVjdCB7DQorICAgICAgICBp
ZiAoYXV0byogb2JqZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0KCkpDQorICAgICAgICAgICAgcmV0
dXJuIG9iamVjdC0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7DQorICAgICAgICByZXR1cm4geyB9
Ow0KKyAgICB9KTsNCit9DQorDQogc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJc29sYXRl
ZE9iamVjdDo6ZWxlbWVudFJhbmdlKCkgY29uc3QNCiB7DQogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oDQppbmRleCAzYjRlZWExZmJiNTguLmJhNjNk
YzI3MjFkMiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oDQpAQCAtNDQxLDkgKzQ0MSwxMSBA
QCBwcml2YXRlOg0KICAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsNCiAgICAgaW50IGxp
bmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsNCiAg
ICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShj
b25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOw0KKyAgICBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiB2aXNpYmxlQ2hhcmFjdGVyUmFuZ2UoKSBjb25zdCBvdmVycmlk
ZTsNCiAgICAgaW50IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRl
Ow0KICAgICB2b2lkIGxpbmVCcmVha3MoVmVjdG9yPGludD4mKSBjb25zdCBvdmVycmlkZTsNCi0N
CisgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOw0K
KyAgICANCiAgICAgLy8gQXR0cmlidXRlIHNldHRlcnMuDQogICAgIHZvaWQgc2V0QVJJQUdyYWJi
ZWQoYm9vbCkgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSBvdmVycmlk
ZTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oDQppbmRleCBlZWEzZTY5
ZGVkOTMuLmFjMmJkYmZlMmFjNSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oDQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UuaA0KQEAgLTM0LDYgKzM0LDcgQEANCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogc3Ry
dWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYTsNCitjbGFzcyBEb2N1bWVudDsNCiBjbGFz
cyBJbnRSZWN0Ow0KIGNsYXNzIEZsb2F0UG9pbnQ7DQogY2xhc3MgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ7DQpAQCAtMTExLDExICsxMTIsMTUgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
VUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWwN
CiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0UGFpcnM7DQogLSAoTlNB
cnJheSAqKWFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0UGFpcnM7DQogDQorLSAoTlNSYW5nZSlh
Y2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlOw0KKw0KIC0gKE5TRGljdGlvbmFyeTxO
U1N0cmluZyAqLCBpZD4gKiliYXNlQWNjZXNzaWJpbGl0eVJlc29sdmVkRWRpdGluZ1N0eWxlczsN
CiANCiBleHRlcm4gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGFjY2Vzc2li
aWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUoY29uc3QgTlNEaWN0aW9uYXJ5ICopOw0KIA0KLWV4dGVybiBOU0FycmF5ICpjb252ZXJ0VG9O
U0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJik7DQorZXh0ZXJuIE5TQXJyYXkgKm1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFY
Q29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7DQorZXh0ZXJuIE5TUmFu
Z2UgbWFrZU5TUmFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4pOw0KK2V4
dGVybiBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBtYWtlRE9NUmFuZ2UoV2Vi
Q29yZTo6RG9jdW1lbnQqLCBOU1JhbmdlKTsNCiANCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkN
CiAtIChpZClfYWNjZXNzaWJpbGl0eVdlYkRvY3VtZW50VmlldzsNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlckJhc2UubW0NCmluZGV4IDFlNTY5MWQxOWY5Mi4uMDhlMWI0ZGYzZWM0
IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0NCkBAIC0yNjEs
NyArMjYxLDcgQEAgc3RhdGljIE5TQXJyYXkgKmNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGkNCiAgICAgfSkuYXV0b3JlbGVhc2Uo
KTsNCiB9DQogDQotTlNBcnJheSAqY29udmVydFRvTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENv
cmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pDQorTlNBcnJh
eSAqbWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKQ0KIHsNCiAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXko
Y2hpbGRyZW4sIFtdIChjb25zdCBhdXRvJiBjaGlsZCkgLT4gaWQgew0KICAgICAgICAgYXV0byB3
cmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsNCkBAIC00NjIsNiArNDYyLDI3IEBAIHN0YXRpYyB2
b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9uKFBhdGhDb252ZXJzaW9uSW5mbyYg
Y29udmVyc2lvbiwgY29uDQogICAgIHJldHVybiBjb252ZXJ0ZWRQYXRoLmF1dG9yZWxlYXNlKCk7
DQogfQ0KIA0KKy8vIERldGVybWluZSB0aGUgdmlzaWJsZSByYW5nZSBieSBjaGVja2luZyBpbnRl
cnNlY3Rpb24gb2YgdW5vYnNjdXJlZENvbnRlbnRSZWN0IGFuZCBhIHJhbmdlIG9mIHRleHQgYnkN
CisvLyBhZHZhbmNpbmcgZm9yd2FyZCBieSBsaW5lIGZyb20gdG9wIGFuZCBiYWNrd2FyZHMgYnkg
bGluZSBmcm9tIHRoZSBib3R0b20sIHVudGlsIHdlIGhhdmUgYSB2aXNpYmxlIHJhbmdlLg0KKy0g
KE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZQ0KK3sNCisgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxOU1JhbmdlPihb
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gTlNSYW5nZSB7DQorICAgICAg
ICBhdXRvIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmJhc2VVcGRhdGVCYWNr
aW5nU3RvcmU7DQorICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpDQorICAgICAgICAgICAgcmV0
dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICAgICAgYXV0byBlbGVtZW50
UmFuZ2UgPSBtYWtlTlNSYW5nZShiYWNraW5nT2JqZWN0LT5lbGVtZW50UmFuZ2UoKSk7DQorICAg
ICAgICBpZiAoZWxlbWVudFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpDQorICAgICAgICAg
ICAgcmV0dXJuIGVsZW1lbnRSYW5nZTsNCisgICAgICAgIA0KKyAgICAgICAgYXV0byB2aXNpYmxl
UmFuZ2UgPSBtYWtlTlNSYW5nZShiYWNraW5nT2JqZWN0LT52aXNpYmxlQ2hhcmFjdGVyUmFuZ2Uo
KSk7DQorICAgICAgICBpZiAodmlzaWJsZVJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpDQor
ICAgICAgICAgICAgcmV0dXJuIHZpc2libGVSYW5nZTsNCisNCisgICAgICAgIHJldHVybiBOU01h
a2VSYW5nZSh2aXNpYmxlUmFuZ2UubG9jYXRpb24gLSBlbGVtZW50UmFuZ2UubG9jYXRpb24sIHZp
c2libGVSYW5nZS5sZW5ndGgpOw0KKyAgICB9KTsNCit9DQorDQogLSAoaWQpX2FjY2Vzc2liaWxp
dHlXZWJEb2N1bWVudFZpZXcNCiB7DQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOw0KQEAgLTYy
Myw2ICs2NDQsNDkgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLA0KICAgICBBWEF0dHJpYnV0ZVN0
cmluZ1NldExhbmd1YWdlKGF0dHJTdHJpbmcsIG5vZGUtPnJlbmRlcmVyKCksIGF0dHJTdHJpbmdS
YW5nZSk7DQogfQ0KIA0KK05TUmFuZ2UgbWFrZU5TUmFuZ2Uoc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gcmFuZ2UpDQorew0KKyAgICBpZiAoIXJhbmdlKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFr
ZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKyAgICANCisgICAgYXV0byYgZG9jdW1lbnQgPSByYW5n
ZS0+c3RhcnQuZG9jdW1lbnQoKTsNCisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgp
Ow0KKyAgICBpZiAoIWZyYW1lKQ0KKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91
bmQsIDApOw0KKw0KKyAgICBhdXRvKiByb290RWRpdGFibGVFbGVtZW50ID0gZnJhbWUtPnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsNCisgICAgYXV0byogc2Nv
cGUgPSByb290RWRpdGFibGVFbGVtZW50ID8gcm9vdEVkaXRhYmxlRWxlbWVudCA6IGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudCgpOw0KKyAgICBpZiAoIXNjb3BlKQ0KKyAgICAgICAgcmV0dXJuIE5T
TWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOw0KKw0KKyAgICAvLyBNb3VzZSBldmVudHMgbWF5IGNh
dXNlIFRTTSB0byBhdHRlbXB0IHRvIGNyZWF0ZSBhbiBOU1JhbmdlIGZvciBhIHBvcnRpb24gb2Yg
dGhlIHZpZXcNCisgICAgLy8gdGhhdCBpcyBub3QgaW5zaWRlIHRoZSBjdXJyZW50IGVkaXRhYmxl
IHJlZ2lvbi4gVGhlc2UgY2hlY2tzIGVuc3VyZSB3ZSBkb24ndCBwcm9kdWNlDQorICAgIC8vIHBv
dGVudGlhbGx5IGludmFsaWQgZGF0YSB3aGVuIHJlc3BvbmRpbmcgdG8gc3VjaCByZXF1ZXN0cy4N
CisgICAgaWYgKCFzY29wZS0+Y29udGFpbnMocmFuZ2UtPnN0YXJ0LmNvbnRhaW5lci5wdHIoKSkg
fHwgIXNjb3BlLT5jb250YWlucyhyYW5nZS0+ZW5kLmNvbnRhaW5lci5wdHIoKSkpDQorICAgICAg
ICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQorDQorICAgIHJldHVybiBOU01h
a2VSYW5nZShjaGFyYWN0ZXJDb3VudCh7IHsgKnNjb3BlLCAwIH0sIHJhbmdlLT5zdGFydCB9KSwg
Y2hhcmFjdGVyQ291bnQoKnJhbmdlKSk7DQorfQ0KKw0KK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IG1ha2VET01SYW5nZShEb2N1bWVudCogZG9jdW1lbnQsIE5TUmFuZ2UgcmFuZ2UpDQorew0K
KyAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkNCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7DQorDQorICAgIC8vIG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQg
d2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdA0KKyAgICAvLyBjb25jZW50
cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uDQorICAgIC8vIFdl
IGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRo
ZSBET00gZm9yIHRob3NlIGlzIG5vdA0KKyAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQg
RE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMNCisg
ICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBz
dGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLg0KKyAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBL
aXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuDQorICAgIGF1dG8gc2VsZWN0aW9uUm9vdCA9
IGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVF
bGVtZW50KCk7DQorICAgIGF1dG8gc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9v
dCA6IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsNCisgICAgaWYgKCFzY29wZSkNCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQorDQorICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVy
UmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIHJhbmdlKTsNCit9
DQorDQogLy8gUmV0dXJucyBhbiBhcnJheSBvZiBzdHJpbmdzIGFuZCBBWE9iamVjdCB3cmFwcGVy
cyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0ZXh0DQogLy8gcnVucyBhbmQgcmVwbGFjZW1lbnQgbm9k
ZXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIHJhbmdlLg0KIC0gKE5TQXJyYXkgKiljb250ZW50Rm9y
U2ltcGxlUmFuZ2U6KGNvbnN0IFNpbXBsZVJhbmdlJilyYW5nZSBhdHRyaWJ1dGVkOihCT09MKWF0
dHJpYnV0ZWQNCkBAIC02NzYsMTggKzc0MCwyNiBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZWRT
dHJpbmdBcHBlbmRUZXh0KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsDQog
ICAgIHJldHVybiBhcnJheS5hdXRvcmVsZWFzZSgpOw0KIH0NCiANCi0tIChOU0FycmF5PE5TRGlj
dGlvbmFyeSAqPiAqKWxpbmVSZWN0c0FuZFRleHQNCistIChXZWJDb3JlOjpBWENvcmVPYmplY3Qq
KWJhc2VVcGRhdGVCYWNraW5nU3RvcmUNCiB7DQogI2lmIFBMQVRGT1JNKE1BQykNCiAgICAgYXV0
byogYmFja2luZ09iamVjdCA9IHNlbGYudXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlOw0KICAgICBp
ZiAoIWJhY2tpbmdPYmplY3QpDQotICAgICAgICByZXR1cm4gbmlsOw0KKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7DQogI2Vsc2UNCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlD
YWxsXSkNCi0gICAgICAgIHJldHVybiBuaWw7DQorICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAg
ICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0Ow0KICNlbmRpZg0K
KyAgICByZXR1cm4gYmFja2luZ09iamVjdDsNCit9DQogDQorLSAoTlNBcnJheTxOU0RpY3Rpb25h
cnkgKj4gKilsaW5lUmVjdHNBbmRUZXh0DQorew0KKyAgICBhdXRvIGJhY2tpbmdPYmplY3QgPSBz
ZWxmLmJhc2VVcGRhdGVCYWNraW5nU3RvcmU7DQorICAgIGlmICghYmFja2luZ09iamVjdCkNCisg
ICAgICAgIHJldHVybiBuaWw7DQorICAgIA0KICAgICBhdXRvIHJhbmdlID0gYmFja2luZ09iamVj
dC0+ZWxlbWVudFJhbmdlKCk7DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm4gbmls
Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCmluZGV4IDcwMDRjNDZi
NjQzOS4uZDY5NDFmODJmMTIyIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tDQpAQCAtMTc5NSw3ICsxNzk1LDcgQEAgc3RhdGljIHZvaWQgV2ViVHJhbnNmb3JtQ0dQ
YXRoVG9OU0JlemllclBhdGgodm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCAqZWwNCiAN
CiAtIChOU0FycmF5PFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICo+ICopY2hpbGRyZW5W
ZWN0b3JBcnJheQ0KIHsNCi0gICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZi5heEJhY2tp
bmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KKyAgICByZXR1cm4gbWFrZU5TQXJyYXkoc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOw0KIH0NCiANCiAtIChOU1ZhbHVlICopcG9zaXRpb24N
CkBAIC0yMjAzLDcgKzIyMDMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQNCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkpIHsNCiAgICAgICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29u
dGVudENvcHk7DQogICAgICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYVRyZWVJdGVtQ29udGVu
dChjb250ZW50Q29weSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoY29u
dGVudENvcHkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShjb250ZW50Q29weSk7
DQogICAgICAgICB9DQogDQogICAgICAgICByZXR1cm4gc2VsZi5jaGlsZHJlblZlY3RvckFycmF5
Ow0KQEAgLTIyMTMsNyArMjIxMyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmNhbkhhdmVTZWxlY3RlZENoaWxkcmVu
KCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbkNvcHk7DQogICAgICAgICAgICAgYmFja2luZ09i
amVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuQ29weSk7DQotICAgICAgICAg
ICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOw0KKyAgICAg
ICAgICAgIHJldHVybiBtYWtlTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQogICAgICAg
ICB9DQogICAgICAgICByZXR1cm4gbmlsOw0KICAgICB9DQpAQCAtMjIyMiw3ICsyMjIyLDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoYmFja2lu
Z09iamVjdC0+aXNMaXN0Qm94KCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdmlzaWJsZUNoaWxkcmVuQ29weTsNCiAgICAg
ICAgICAgICBiYWNraW5nT2JqZWN0LT52aXNpYmxlQ2hpbGRyZW4odmlzaWJsZUNoaWxkcmVuQ29w
eSk7DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodmlzaWJsZUNoaWxkcmVu
Q29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHZpc2libGVDaGlsZHJlbkNv
cHkpOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTGlzdCgp
KQ0KQEAgLTIyMzQsNyArMjIzNCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORA0KIA0KICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNXZWJBcmVhKCkpIHsNCiAgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExpbmtVSUVsZW1lbnRzIl0p
DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+ZG9j
dW1lbnRMaW5rcygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09i
amVjdC0+ZG9jdW1lbnRMaW5rcygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6QCJBWExvYWRlZCJdKQ0KICAgICAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVjdC0+aXNMb2FkZWQoKV07DQpAQCAtMjI2Nywx
NiArMjI2NywyMSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAg
ICAgICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5zZWxlY3Rl
ZFRleHRSYW5nZSgpOw0KICAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5n
ZTpOU01ha2VSYW5nZSh0ZXh0UmFuZ2Uuc3RhcnQsIHRleHRSYW5nZS5sZW5ndGgpXTsNCiAgICAg
ICAgIH0NCi0gICAgICAgIC8vIFRPRE86IEdldCBhY3R1YWwgdmlzaWJsZSByYW5nZS4gPHJkYXI6
Ly9wcm9ibGVtLzQ3MTIxMDE+DQotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQ0K
LSAgICAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSA/IG5p
bCA6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOiBOU01ha2VSYW5nZSgwLCBiYWNraW5nT2JqZWN0
LT50ZXh0TGVuZ3RoKCkpXTsNCi0NCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRl
XSkgew0KICAgICAgICAgICAgIGludCBsaW5lTnVtYmVyID0gYmFja2luZ09iamVjdC0+aW5zZXJ0
aW9uUG9pbnRMaW5lTnVtYmVyKCk7DQogICAgICAgICAgICAgcmV0dXJuIGxpbmVOdW1iZXIgPj0g
MCA/IEAobGluZU51bWJlcikgOiBuaWw7DQogICAgICAgICB9DQogICAgIH0NCiANCisgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNo
YXJhY3RlclJhbmdlQXR0cmlidXRlXSkgew0KKyAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlz
UGFzc3dvcmRGaWVsZCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBuaWw7DQorICAgICAgICAvLyBU
T0RPOiBHZXQgYWN0dWFsIHZpc2libGUgcmFuZ2UuIDxyZGFyOi8vcHJvYmxlbS80NzEyMTAxPg0K
KyAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGV4dENvbnRyb2woKSkNCisgICAgICAgICAg
ICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgYmFja2luZ09i
amVjdC0+dGV4dExlbmd0aCgpKV07DQorICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRo
UmFuZ2U6W3NlbGYgYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZV1dOw0KKyAgICB9
DQorDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJp
bGl0eVVSTEF0dHJpYnV0ZV0pIHsNCiAgICAgICAgIFVSTCB1cmwgPSBiYWNraW5nT2JqZWN0LT51
cmwoKTsNCiAgICAgICAgIGlmICh1cmwuaXNOdWxsKCkpDQpAQCAtMjM4MCw3ICsyMzg1LDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogDQogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW1hZ2VPdmVybGF5RWxlbWVu
dHNBdHRyaWJ1dGVdKSB7DQogICAgICAgICBhdXRvIGltYWdlT3ZlcmxheUVsZW1lbnRzID0gYmFj
a2luZ09iamVjdC0+aW1hZ2VPdmVybGF5RWxlbWVudHMoKTsNCi0gICAgICAgIHJldHVybiBpbWFn
ZU92ZXJsYXlFbGVtZW50cyA/IGNvbnZlcnRUb05TQXJyYXkoKmltYWdlT3ZlcmxheUVsZW1lbnRz
KSA6IG5pbDsNCisgICAgICAgIHJldHVybiBpbWFnZU92ZXJsYXlFbGVtZW50cyA/IG1ha2VOU0Fy
cmF5KCppbWFnZU92ZXJsYXlFbGVtZW50cykgOiBuaWw7DQogICAgIH0NCiANCiAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlFbWJlZGRlZEltYWdl
RGVzY3JpcHRpb25BdHRyaWJ1dGVdKQ0KQEAgLTI0MDQsMjkgKzI0MDksMjkgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+
aXNUYWJMaXN0KCkpIHsNCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFic0NoaWxkcmVuOw0KICAgICAgICAgICAgIGJhY2tpbmdP
YmplY3QtPnRhYkNoaWxkcmVuKHRhYnNDaGlsZHJlbik7DQotICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkodGFic0NoaWxkcmVuKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5T
QXJyYXkodGFic0NoaWxkcmVuKTsNCiAgICAgICAgIH0NCiAgICAgfQ0KIA0KICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmli
dXRlXSkNCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNv
bnRlbnRzKCkpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNv
bnRlbnRzKCkpOw0KIA0KICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZSgpICYmIGJhY2tp
bmdPYmplY3QtPmlzRXhwb3NhYmxlKCkpIHsNCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0pDQotICAgICAgICAg
ICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+cm93cygpKTsNCisgICAg
ICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+cm93cygpKTsNCiANCiAg
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
VmlzaWJsZVJvd3NBdHRyaWJ1dGVdKQ0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KGJhY2tpbmdPYmplY3QtPnZpc2libGVSb3dzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBt
YWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT52aXNpYmxlUm93cygpKTsNCiANCiAgICAgICAgIC8v
IFRPRE86IGRpc3Rpbmd1aXNoIGJldHdlZW4gdmlzaWJsZSBhbmQgbm9uLXZpc2libGUgY29sdW1u
cw0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlDb2x1bW5zQXR0cmlidXRlXQ0KICAgICAgICAgICAgIHx8IFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ29sdW1uc0F0dHJpYnV0ZV0pDQot
ICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+Y29sdW1u
cygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29s
dW1ucygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENo
aWxkcmVuQ29weTsNCiAgICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZENoaWxkcmVu
KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNB
cnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIC8vIEhU
TUwgdGFibGVzIGRvbid0IHN1cHBvcnQgdGhlc2UgYXR0cmlidXRlcy4NCkBAIC0yNDM1LDcgKzI0
NDAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgICAg
ICByZXR1cm4gbmlsOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0g
ICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5I
ZWFkZXJzKCkpOw0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0
LT5jb2x1bW5IZWFkZXJzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVdKSB7DQogICAgICAgICAg
ICAgYXV0byogaGVhZGVyQ29udGFpbmVyID0gYmFja2luZ09iamVjdC0+aGVhZGVyQ29udGFpbmVy
KCk7DQpAQCAtMjQ0MywxMCArMjQ0OCwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQNCiAgICAgICAgIH0NCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0p
DQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+cm93
SGVhZGVycygpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVj
dC0+cm93SGVhZGVycygpKTsNCiANCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNlbGxzQXR0cmlidXRlXSkNCi0gICAgICAg
ICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jZWxscygpKTsNCisg
ICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y2VsbHMoKSk7DQog
DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eUNvbHVtbkNvdW50QXR0cmlidXRlXSkNCiAgICAgICAgICAgICByZXR1cm4gQChiYWNraW5n
T2JqZWN0LT5jb2x1bW5Db3VudCgpKTsNCkBAIC0yNDY4LDcgKzI0NzMsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIC8vIHJvd3MgYXR0cmlidXRlIGZv
ciBhIGNvbHVtbiBpcyB0aGUgbGlzdCBvZiBhbGwgdGhlIGVsZW1lbnRzIGluIHRoYXQgY29sdW1u
IGF0IGVhY2ggcm93DQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdDQogICAgICAgICAgICAgfHwgW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRl
XSkNCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5j
aGlsZHJlbigpKTsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVj
dC0+Y2hpbGRyZW4oKSk7DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBh
dXRvKiBoZWFkZXIgPSBiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXIoKTsNCkBAIC0yNDg4LDEw
ICsyNDkzLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICAg
ICAgfQ0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAgICAg
ICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkp
Ow0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5I
ZWFkZXJzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkNCi0gICAgICAg
ICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkp
Ow0KKyAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5yb3dIZWFk
ZXJzKCkpOw0KIA0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlBUklBQ29sdW1uSW5kZXhBdHRyaWJ1dGVdKQ0KICAgICAgICAgICAgIHJl
dHVybiBAKGJhY2tpbmdPYmplY3QtPmF4Q29sdW1uSW5kZXgoKSk7DQpAQCAtMjUwNCwxMiArMjUw
OSwxMiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRS
b3dzQXR0cmlidXRlXSkgew0KICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsNCiAgICAgICAgICAg
ICBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsN
Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29w
eSk7DQorICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5
KTsNCiAgICAgICAgIH0NCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHk7DQogICAg
ICAgICAgICAgYmFja2luZ09iamVjdC0+YXJpYVRyZWVSb3dzKHJvd3NDb3B5KTsNCi0gICAgICAg
ICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShyb3dzQ29weSk7DQorICAgICAgICAgICAgcmV0
dXJuIG1ha2VOU0FycmF5KHJvd3NDb3B5KTsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIC8vIFRy
ZWVSb2xlcyBkbyBub3Qgc3VwcG9ydCBjb2x1bW5zLCBidXQgTWFjIEFYIGV4cGVjdHMgdG8gYmUg
YWJsZSB0byBhc2sgYWJvdXQgY29sdW1ucyBhdCB0aGUgbGVhc3QuDQpAQCAtMjU0NCw3ICsyNTQ5
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIC8vIFRoZSBy
b3dzIHRoYXQgYXJlIGNvbnNpZGVyZWQgaW5zaWRlIHRoaXMgcm93Lg0KICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRy
aWJ1dGVdKSB7DQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpIHx8IGJh
Y2tpbmdPYmplY3QtPmlzQVJJQVRyZWVHcmlkUm93KCkpDQotICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkoYmFja2luZ09iamVjdC0+ZGlzY2xvc2VkUm93cygpKTsNCisgICAgICAg
ICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+ZGlzY2xvc2VkUm93cygpKTsN
CiAgICAgfQ0KIA0KICAgICAvLyBUaGUgcm93IHRoYXQgY29udGFpbnMgdGhpcyByb3cuIEl0IHNo
b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgcGFyZW50IHRoYXQgaXMgYSB0cmVlaXRlbS4N
CkBAIC0yNjEyLDcgKzI2MTcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmls
aXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBsaW5rZWRVSUVsZW1lbnRzOw0KICAg
ICAgICAgYmFja2luZ09iamVjdC0+bGlua2VkVUlFbGVtZW50cyhsaW5rZWRVSUVsZW1lbnRzKTsN
Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGxpbmtlZFVJRWxlbWVudHMpOw0KKyAg
ICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGxpbmtlZFVJRWxlbWVudHMpOw0KICAgICB9DQogDQog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNl
bGVjdGVkQXR0cmlidXRlXSkNCkBAIC0yNjg1LDcgKzI2OTAsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQNCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlXSkgew0KICAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFPd25zOw0KICAgICAg
ICAgYmFja2luZ09iamVjdC0+YXJpYU93bnNFbGVtZW50cyhhcmlhT3ducyk7DQotICAgICAgICBy
ZXR1cm4gY29udmVydFRvTlNBcnJheShhcmlhT3ducyk7DQorICAgICAgICByZXR1cm4gbWFrZU5T
QXJyYXkoYXJpYU93bnMpOw0KICAgICB9DQogDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQVBvc0luU2V0QXR0cmlidXRlXSkNCkBAIC0y
NzUxLDcgKzI3NTYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQNCiAN
CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5TWF0aFJvb3RSYWRpY2FuZEF0dHJpYnV0ZV0pIHsNCiAgICAgICAgICAgICBhdXRvIHJhZGlj
YW5kID0gYmFja2luZ09iamVjdC0+bWF0aFJhZGljYW5kKCk7DQotICAgICAgICAgICAgcmV0dXJu
IHJhZGljYW5kID8gY29udmVydFRvTlNBcnJheSgqcmFkaWNhbmQpIDogbmlsOw0KKyAgICAgICAg
ICAgIHJldHVybiByYWRpY2FuZCA/IG1ha2VOU0FycmF5KCpyYWRpY2FuZCkgOiBuaWw7DQogICAg
ICAgICB9DQogDQogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlvbk51bWVyYXRvckF0dHJpYnV0ZV0pDQpAQCAtMjg0NSw3
ICsyODUwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EDQogICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWERldGFpbHNFbGVtZW50cyJdKSB7
DQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgZGV0YWlsczsNCiAgICAgICAgIGJhY2tpbmdPYmplY3QtPmFyaWFEZXRhaWxzRWxlbWVudHMo
ZGV0YWlscyk7DQotICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShkZXRhaWxzKTsNCisg
ICAgICAgIHJldHVybiBtYWtlTlNBcnJheShkZXRhaWxzKTsNCiAgICAgfQ0KIA0KICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUJyYWlsbGVMYWJl
bEF0dHJpYnV0ZV0pDQpAQCAtMjg2MCw3ICsyODY1LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5EDQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
QCJBWEVycm9yTWVzc2FnZUVsZW1lbnRzIl0pIHsNCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJvck1lc3NhZ2VzOw0KICAgICAgICAg
YmFja2luZ09iamVjdC0+YXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKGVycm9yTWVzc2FnZXMpOw0K
LSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoZXJyb3JNZXNzYWdlcyk7DQorICAgICAg
ICByZXR1cm4gbWFrZU5TQXJyYXkoZXJyb3JNZXNzYWdlcyk7DQogICAgIH0NCiANCiAgICAgLy8g
TXVsdGktc2VsZWN0YWJsZQ0KQEAgLTI4NzgsNyArMjg4Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORA0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUFyaWFDb250cm9sc0F0dHJpYnV0ZV0pIHsNCiAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhQ29udHJv
bHM7DQogICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhQ29udHJvbHNFbGVtZW50cyhhcmlhQ29u
dHJvbHMpOw0KLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYXJpYUNvbnRyb2xzKTsN
CisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShhcmlhQ29udHJvbHMpOw0KICAgICB9DQogDQog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Rm9j
dXNhYmxlQW5jZXN0b3JBdHRyaWJ1dGVdKSB7DQpAQCAtMzQyOCwyMiArMzQzMyw2IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORA0KICAgICB9KTsNCiB9DQogDQotLy8gRklY
TUU6IE5vIHJlYXNvbiBmb3IgdGhpcyB0byBiZSBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rp
b247IGNhbiBnZXQgZG9jdW1lbnQgZnJvbSByYW5nZS4NCi0tIChOU1JhbmdlKV9jb252ZXJ0VG9O
U1JhbmdlOihjb25zdCBTaW1wbGVSYW5nZSYpcmFuZ2UNCi17DQotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7DQotICAgIA0KLSAgICBhdXRvIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmpl
Y3QtPmRvY3VtZW50KCk7DQotICAgIGlmICghZG9jdW1lbnQpDQotICAgICAgICByZXR1cm4gTlNN
YWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7DQotDQotICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0g
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOw0KLSAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkN
Ci0gICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsNCi0NCi0gICAgcmV0
dXJuIGNoYXJhY3RlclJhbmdlKG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRlbnRzKCpk
b2N1bWVudEVsZW1lbnQpLCByYW5nZSk7DQotfQ0KLQ0KIC0gKE5TSW50ZWdlcilfaW5kZXhGb3JU
ZXh0TWFya2VyOihBWFRleHRNYXJrZXJSZWYpbWFya2VyDQogew0KICAgICBpZiAoIW1hcmtlcikN
CkBAIC0zNDYwLDcgKzM0NDksNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQNCiAgICAgICAgICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgICAgICAgICByZXR1cm4gTlNO
b3RGb3VuZDsNCiANCi0gICAgICAgICAgICByZXR1cm4gW3Byb3RlY3RlZFNlbGYgX2NvbnZlcnRU
b05TUmFuZ2U6KnJhbmdlXS5sb2NhdGlvbjsNCisgICAgICAgICAgICByZXR1cm4gbWFrZU5TUmFu
Z2UocmFuZ2UpLmxvY2F0aW9uOw0KICAgICAgICAgfQ0KIA0KICAgICAgICAgcmV0dXJuIE5TTm90
Rm91bmQ7DQpAQCAtMzgzNSw4ICszODI0LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5EDQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgcmVzdWx0czsNCiAgICAgICAgIGJhY2tpbmdPYmplY3QtPmZpbmRNYXRjaGlu
Z09iamVjdHMoJmNyaXRlcmlhLCByZXN1bHRzKTsNCiAgICAgICAgIGlmICh3aWRnZXRDaGlsZHJl
bikNCi0gICAgICAgICAgICByZXR1cm4gW3dpZGdldENoaWxkcmVuIGFycmF5QnlBZGRpbmdPYmpl
Y3RzRnJvbUFycmF5OmNvbnZlcnRUb05TQXJyYXkocmVzdWx0cyldOw0KLSAgICAgICAgcmV0dXJu
IGNvbnZlcnRUb05TQXJyYXkocmVzdWx0cyk7DQorICAgICAgICAgICAgcmV0dXJuIFt3aWRnZXRD
aGlsZHJlbiBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTptYWtlTlNBcnJheShyZXN1bHRz
KV07DQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkocmVzdWx0cyk7DQogICAgIH0NCiANCiAg
ICAgLy8gVGV4dE1hcmtlciBhdHRyaWJ1dGVzLg0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50SU9TLm1tDQppbmRleCBkZDRlYjA5NmZlZTkuLmJhNDc0Zjk2YzBiNiAxMDA2NDQN
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRJT1MubW0NCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0NCkBAIC0xMDgsNiArMTA4
LDcgQEAgdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxl
bWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwNCiAtIChpZClfYWNjZXNzaWJpbGl0eUxpc3RB
bmNlc3RvcjsNCiAtIChpZClfYWNjZXNzaWJpbGl0eVBob3RvRGVzY3JpcHRpb247DQogLSAoTlNB
cnJheSAqKWFjY2Vzc2liaWxpdHlJbWFnZU92ZXJsYXlFbGVtZW50czsNCistIChOU1JhbmdlKWFj
Y2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2U7DQogDQogLy8gVGV4dE1hcmtlciByZWxh
dGVkDQogLSAoTlNBcnJheSAqKXRleHRNYXJrZXJSYW5nZTsNCkBAIC0zOTQsNiArMzk1LDkgQEAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJp
YnV0ZXMoKQ0KIA0KIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdHJpbmdEZXNjcmlwdGlvbk9mQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmli
dXRlKQ0KIHsNCisgICAgaWYgKEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoYXR0cmlidXRl
LCAiQVhWaXNpYmxlQ2hhcmFjdGVyUmFuZ2UiKSkNCisgICAgICAgIHJldHVybiBbTlNTdHJpbmdG
cm9tUmFuZ2UoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlXSkg
Y3JlYXRlSlNTdHJpbmdSZWZdOw0KKw0KICAgICByZXR1cm4gY3JlYXRlSlNTdHJpbmcoKTsNCiB9
DQogDQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>