<?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>130397</bug_id>
          
          <creation_ts>2014-03-18 09:02:25 -0700</creation_ts>
          <short_desc>Add CSS Custom Property Support (in preparation for CSS variables)</short_desc>
          <delta_ts>2015-12-04 18:19:42 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dev.w3.org/csswg/css-variables/#defining-variables</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="Dirk Schulze">krit</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hyatt</cc>
    
    <cc>jonlee</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>991681</commentid>
    <comment_count>0</comment_count>
      <attachid>227055</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-03-18 09:02:25 -0700</bug_when>
    <thetext>Created attachment 227055
Patch from old custom property code w/o var()

I looked at the old custom properties implementation that was removed a couple of weeks ago. I reduced the old implementation and removed support for the var() function.

There are certain things to notice:
* There is no real prefix check. From looking at the code, every unknown property might be a custom property. We check just the length in CSSParser.
* We use a Map in RenderStyle to store all property names and the values. We must store Strings of the passed value. This is unfortunate since abstractions can be much more memory efficient. We use Vectors for transform operations and filter functions. So I am not sure if Maps themselves are a problem though.
* All custom properties are mapped to the CSSPropertyID CSSPropertyCustom. This has effects on getting element style or computed style. It is not possible to map back from CSSPropertyCustom to the requested custom property. ComputedStyleExtractor::propertyValue(CSSPropertyID propertyID...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024343</commentid>
    <comment_count>1</comment_count>
      <attachid>235381</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2014-07-23 14:43:43 -0700</bug_when>
    <thetext>Created attachment 235381
Patch r? for feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128400</commentid>
    <comment_count>2</comment_count>
      <attachid>261846</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-09-23 16:22:40 -0700</bug_when>
    <thetext>Created attachment 261846
Patch just to get EWS feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128402</commentid>
    <comment_count>3</comment_count>
      <attachid>261848</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-09-23 16:27:25 -0700</bug_when>
    <thetext>Created attachment 261848
Patch just to get EWS feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128403</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-23 16:29:58 -0700</bug_when>
    <thetext>Attachment 261848 did not pass style-queue:


ERROR: Source/WebCore/css/StyleResolver.cpp:2671:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/rendering/style/StyleCustomPropertyData.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/style/StyleCustomPropertyData.h:48:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/CSSParser.cpp:11968:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WebCore/css/CSSParser.cpp:11969:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128508</commentid>
    <comment_count>5</comment_count>
      <attachid>261870</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-09-24 09:52:01 -0700</bug_when>
    <thetext>Created attachment 261870
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128509</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-24 09:53:29 -0700</bug_when>
    <thetext>Attachment 261870 did not pass style-queue:


ERROR: Source/WebCore/rendering/style/StyleCustomPropertyData.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/style/StyleCustomPropertyData.h:49:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128510</commentid>
    <comment_count>7</comment_count>
      <attachid>261871</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-09-24 09:57:51 -0700</bug_when>
    <thetext>Created attachment 261871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128511</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-24 10:00:50 -0700</bug_when>
    <thetext>Attachment 261871 did not pass style-queue:


ERROR: Source/WebCore/rendering/style/StyleCustomPropertyData.h:48:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/style/StyleCustomPropertyData.h:51:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/style/StyleCustomPropertyData.h:52:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 3 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128516</commentid>
    <comment_count>9</comment_count>
      <attachid>261872</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-09-24 10:13:35 -0700</bug_when>
    <thetext>Created attachment 261872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128525</commentid>
    <comment_count>10</comment_count>
      <attachid>261872</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-09-24 10:42:49 -0700</bug_when>
    <thetext>Comment on attachment 261872
Patch

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

Looks good r=me

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:3598
&gt; +    const HashMap&lt;AtomicString, String&gt;* customProperties = style-&gt;customProperties();

Could be auto*

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:3620
&gt; +    const HashMap&lt;AtomicString, String&gt;* customProperties = style-&gt;customProperties();

auto*

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:3709
&gt; +    Node* styledNode = this-&gt;styledNode();
&gt; +    if (styledNode) {

if (auto* styledNode = this-&gt;styledNode())

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:3711
&gt; +        RefPtr&lt;RenderStyle&gt; style = computeRenderStyleForProperty(styledNode, m_pseudoElementSpecifier, CSSPropertyCustom);
&gt; +        if (style) {

similarly

&gt; Source/WebCore/css/StyleProperties.cpp:1260
&gt; +    // Convert the propertyID into an uint16_t to compare it with the metadata&apos;s m_propertyID to avoid
&gt; +    // the compiler converting it to an int multiple times in the loop.
&gt; +    uint16_t id = static_cast&lt;uint16_t&gt;(CSSPropertyCustom);

Probably unnecessary. Compiler will likely figure this out.

&gt; Source/WebCore/css/StyleProperties.cpp:1278
&gt; +    // Convert the propertyID into an uint16_t to compare it with the metadata&apos;s m_propertyID to avoid
&gt; +    // the compiler converting it to an int multiple times in the loop.
&gt; +    uint16_t id = static_cast&lt;uint16_t&gt;(CSSPropertyCustom);

Probably unnecessary. Compiler will likely figure this out.

&gt; Source/WebCore/css/StyleProperties.h:95
&gt; +    PassRefPtr&lt;CSSValue&gt; getCustomPropertyCSSValue(const String&amp; propertyName) const;

Just use RefPtr instead. PassRefPtr is obsolete since we got C++11 move semantics.

&gt; Source/WebCore/css/StyleResolver.cpp:854
&gt; +    // Resolve variables first.

&quot;Resolve custom properties first&quot; (though the code is clear and the comment might not be needed in the first place.

&gt; Source/WebCore/css/StyleResolver.cpp:1022
&gt; +    // Resolve variables first.

and here

&gt; Source/WebCore/css/StyleResolver.cpp:1701
&gt; +        // Resolve variables first.

etc

&gt; Source/WebCore/css/StyleResolver.cpp:2559
&gt; +            memset(property.cssValue, 0, sizeof(property.cssValue));

I think you can just say property.cssValue = {} these days.

&gt; Source/WebCore/rendering/style/StyleRareInheritedData.h:82
&gt; +    DataRef&lt;StyleCustomPropertyData&gt; m_customProperties;

I think it is slightly wrong that these are in RenderStyle. RenderStyle is supposed to be the input data structure for rendering yet custom properties by definition are something rendering doesn&apos;t know about. It would be nice to generalize StyleResolver so that it could compute things other than RenderStyles. 

Still, this is clearly the right thing to do to get this going.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128535</commentid>
    <comment_count>11</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-09-24 11:16:23 -0700</bug_when>
    <thetext>Landed in r190209.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129294</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-09-29 10:54:14 -0700</bug_when>
    <thetext>This change *may* have introduced Windows regressions (see https://bugs.webkit.org/show_bug.cgi?id=149632).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146540</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-12-04 18:19:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/23771256&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227055</attachid>
            <date>2014-03-18 09:02:25 -0700</date>
            <delta_ts>2014-07-23 14:43:43 -0700</delta_ts>
            <desc>Patch from old custom property code w/o var()</desc>
            <filename>custom-property.patch</filename>
            <type>text/plain</type>
            <size>59738</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCAwY2UxNzNiLi5hZjNmMDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCkBAIC02Niw2ICs2Niw3IEBAIEVOQUJMRV9DU1MzX0NPTkRJVElPTkFM
X1JVTEVTID0gOwogRU5BQkxFX0NTUzNfVEVYVCA9IDsKIEVOQUJMRV9DU1MzX1RFWFRfTElORV9C
UkVBSyA9IDsKIEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSA9IEVOQUJMRV9DVVJTT1JfVklTSUJJ
TElUWTsKK0VOQUJMRV9DVVNUT01fUFJPUEVSVElFUyA9IDsKIEVOQUJMRV9DVVNUT01fU0NIRU1F
X0hBTkRMRVIgPSA7CiBFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQgPSAkKEVOQUJMRV9EQVNIQk9B
UkRfU1VQUE9SVF8kKFBMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVF9t
YWNvc3ggPSBFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQ7CkBAIC0yMjIsNCArMjIzLDQgQEAgRU5B
QkxFX0ZUTF9KSVRfbWFjb3N4XzEwMTAwMCA9IEVOQUJMRV9GVExfSklUOwogCiBFTkFCTEVfTExJ
TlRfQ19MT09QID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZF
UkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0JMT0IpICQo
RU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxF
X0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9O
RVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01Q
T1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhD
TFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkg
JChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xV
VElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxF
X0NTU19TSEFQRV9JTlNJREUpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxF
X0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkgJChFTkFCTEVfQ1NTM19DT05E
SVRJT05BTF9SVUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElO
RV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hF
TUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNU
X0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNf
RUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VWRU5U
U19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBU
RURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMp
ICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9M
T0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5B
QkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTUFH
RV9DT05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ESUVfVUkp
ICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQo
RU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5TUEVDVE9S
KSAkKEVOQUJMRV9JT1NfQUlSUExBWSkgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORykgJChF
TkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklD
QVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lf
V0VCX0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkg
JChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxF
X01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJf
RUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChF
TkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQo
RU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5B
QkxFX1BMVUdJTl9QUk9YWV9GT1JfVklERU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQo
RU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJM
SUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9N
RURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAk
KEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxF
X1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxF
X1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9V
Q0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxF
Q1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJ
RVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9O
UykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJf
U09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5B
QkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0xMSU5UX0NfTE9PUCkgJChGRUFU
VVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJM
RV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVf
QUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQo
RU5BQkxFX0JMT0IpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFT
X1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcp
ICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQo
RU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAk
KEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NT
U19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9D
U1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19T
SEFQRVMpICQoRU5BQkxFX0NTU19TSEFQRV9JTlNJREUpICQoRU5BQkxFX0NTU19TVElDS1lfUE9T
SVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkgJChF
TkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJM
RV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5B
QkxFX0NVU1RPTV9QUk9QRVJUSUVTKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQo
RU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVO
QUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5B
QkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1Ip
ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAk
KEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxM
U0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9ISUdIX0RQSV9D
QU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfQ09OVFJPTFMpICQo
RU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBV
VF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NB
TCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOU1BFQ1RPUikgJChFTkFCTEVfSU9T
X0FJUlBMQVkpICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0xFR0FDWV9D
U1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChF
TkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhN
TCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0Up
ICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5B
QkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRP
Ul9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJ
U0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QTFVHSU5fUFJP
WFlfRk9SX1ZJREVPKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9QUk9NSVNF
UykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNU
KSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5B
QkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQo
RU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxF
X1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1VCUElY
RUxfTEFZT1VUKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQo
RU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1QTEFURV9FTEVN
RU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChF
TkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFC
TEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01F
RElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dF
Ql9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5B
QkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVO
QUJMRV9GVExfSklUKSAkKEVOQUJMRV9MTElOVF9DX0xPT1ApICQoRkVBVFVSRV9ERUZJTkVTXyQo
UExBVEZPUk1fTkFNRSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmlu
ZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggOGNjYTI2Ni4uYTM0
NWRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC00MDQsNiArNDA0LDEwIEBACiAjZGVm
aW5lIEVOQUJMRV9DVVJTT1JfU1VQUE9SVCAxCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJM
RV9DVVNUT01fUFJPUEVSVElFUykKKyNkZWZpbmUgRU5BQkxFX0NVU1RPTV9QUk9QRVJUSUVTIDEK
KyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikKICNk
ZWZpbmUgRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUiAwCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5k
ZXggMGNlMTczYi4uYWYzZjA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTY2LDYgKzY2LDcgQEAgRU5BQkxF
X0NTUzNfQ09ORElUSU9OQUxfUlVMRVMgPSA7CiBFTkFCTEVfQ1NTM19URVhUID0gOwogRU5BQkxF
X0NTUzNfVEVYVF9MSU5FX0JSRUFLID0gOwogRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZID0gRU5B
QkxFX0NVUlNPUl9WSVNJQklMSVRZOworRU5BQkxFX0NVU1RPTV9QUk9QRVJUSUVTID0gOwogRU5B
QkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUiA9IDsKIEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCA9
ICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUXyQoUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0RB
U0hCT0FSRF9TVVBQT1JUX21hY29zeCA9IEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVDsKQEAgLTIy
Miw0ICsyMjMsNCBAQCBFTkFCTEVfRlRMX0pJVF9tYWNvc3hfMTAxMDAwID0gRU5BQkxFX0ZUTF9K
SVQ7CiAKIEVOQUJMRV9MTElOVF9DX0xPT1AgPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJM
RV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykg
JChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5W
QVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykg
JChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04p
ICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVf
Q1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxF
X0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NT
X1NIQVBFUykgJChFTkFCTEVfQ1NTX1NIQVBFX0lOU0lERSkgJChFTkFCTEVfQ1NTX1NUSUNLWV9Q
T1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAk
KEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5B
QkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChF
TkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkg
JChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykg
JChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQo
RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEp
ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVf
Rk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQ
QUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJf
VEhST1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJB
U0UpICQoRU5BQkxFX0lNQUdFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAk
KEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lO
UFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9O
VEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAk
KEVOQUJMRV9JTlNQRUNUT1IpICQoRU5BQkxFX0lPU19BSVJQTEFZKSAkKEVOQUJMRV9JT1NfVEVY
VF9BVVRPU0laSU5HKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFC
TEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMp
ICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJM
RV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xT
X1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNT
KSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0Vf
Q1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVf
Tk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUERG
S0lUX1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTykgJChFTkFCTEVfUFJP
R1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVO
VFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxF
X1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVO
QUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQo
RU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJM
RV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1VCVExF
X0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RF
VEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0la
SU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykg
JChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19U
UkFDSykgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5B
QkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBM
QVkpICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9Y
SFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfTExJ
TlRfQ19MT09QKSAkKEZFQVRVUkVfREVGSU5FU18kKFBMQVRGT1JNX05BTUUpKTsKK0ZFQVRVUkVf
REVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRf
Q0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxF
X0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5H
KSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVD
T1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVW
SUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklM
VEVSUykgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9O
UykgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTX1NIQVBFX0lOU0lERSkgJChFTkFC
TEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9O
U19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9D
U1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1Jf
VklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1BST1BFUlRJRVMpICQoRU5BQkxFX0NVU1RPTV9T
Q0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFM
SVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJ
TFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VW
RU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNS
WVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVO
VFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9H
RU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQo
RU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9J
TUFHRV9DT05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ESUVf
VUkpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChF
TkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5TUEVD
VE9SKSAkKEVOQUJMRV9JT1NfQUlSUExBWSkgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORykg
JChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJ
RklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdB
Q1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRD
SCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5B
QkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVU
RVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkg
JChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMp
ICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQo
RU5BQkxFX1BMVUdJTl9QUk9YWV9GT1JfVklERU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQp
ICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9Q
VUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1B
VElPTl9GUkFNRSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElP
Tl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFSRURf
V09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNF
KSAkKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5B
QkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5B
QkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVf
VE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJT
RUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxF
X1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQU5JTUFU
SU9OUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9X
RUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQo
RU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0xMSU5UX0NfTE9PUCkgJChG
RUFUVVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA0MGQ0NGMzLi5mZjZlYWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTI1NTAsNiArMjU1MCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdl
VmFsdWUuaCBcCisJU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCBc
CiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuaCBcCiAJU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjYTY4NTY4Li5mNzZhMTMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC02MjAwLDYgKzYyMDAsNyBAQAogCQlGQUJFNzJGRDEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1M
RWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkFCRTcyRkIxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5
LmNwcCAqLzsgfTsKIAkJRkFCRTcyRkUxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkZD
MTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgKi87IH07CiAJCUZCMkMxNUMzMTY1
RDY0OUQwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkIyQzE1QzIxNjVENjQ5MDAwMzlD
OUY4IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkIyREU5NEQxOEQ4N0REQzAwOTFGNzdBIC8q
IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGQjJERTk0QzE4RDg3REQzMDA5MUY3N0EgLyogU3R5bGVDdXN0b21Q
cm9wZXJ0eURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGQjMwNTZDMjE2OUU1REFDMDA5NkEyMzIgLyogQ1NTR3JvdXBpbmdSdWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjMwNTZDMTE2OUU1
REFDMDA5NkEyMzIgLyogQ1NTR3JvdXBpbmdSdWxlLmggKi87IH07CiAJCUZCNDg0RjRDMTcxRjgy
MUUwMDA0MDc1NSAvKiBUcmFuc2Zvcm1GdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI0ODRGNEExNzFGODIxRTAwMDQwNzU1IC8qIFRy
YW5zZm9ybUZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCUZCNDg0RjREMTcxRjgyMUUwMDA0MDc1NSAv
KiBUcmFuc2Zvcm1GdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZCNDg0RjRCMTcxRjgyMUUwMDA0MDc1NSAvKiBUcmFuc2Zvcm1GdW5jdGlv
bnMuaCAqLzsgfTsKQEAgLTYyMjMsNiArNjIyNCw3IEBACiAJCUZCREI2MTlEMTZENjAzNDYwMEJC
MzM5NCAvKiBQYWdlUnVsZUNvbGxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQkRCNjE5QzE2RDYwMzQ2MDBCQjMzOTQgLyogUGFnZVJ1bGVD
b2xsZWN0b3IuY3BwICovOyB9OwogCQlGQkRCNjE5RjE2RDYwMzY1MDBCQjMzOTQgLyogRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZCREI2MTlFMTZENjAzNjUwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5o
ICovOyB9OwogCQlGQkRCNjFBMTE2RDYwMzdFMDBCQjMzOTQgLyogUGFnZVJ1bGVDb2xsZWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCREI2MUEw
MTZENjAzN0UwMEJCMzM5NCAvKiBQYWdlUnVsZUNvbGxlY3Rvci5oICovOyB9OworCQlGQkVFMEFC
MDE4RDg0N0FCMDAwMjg1RDEgLyogQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkJFRTBBQUYxOEQ4NDdBQjAwMDI4
NUQxIC8qIENTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGQkY4OTA0NTE2OUU5RjFGMDA1MkQ4NkUgLyogQ1NT
R3JvdXBpbmdSdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZCRjg5MDQ0MTY5RTlGMUYwMDUyRDg2RSAvKiBDU1NHcm91cGluZ1J1bGUuY3BwICov
OyB9OwogCQlGQzU0RDA1NzE2QTc2NzMxMDA1NzVFNEQgLyogQ1NTU3VwcG9ydHNSdWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQzYzQkRCMTE2N0FB
QkFDMDBGOTM4MEYgLyogQ1NTU3VwcG9ydHNSdWxlLmggKi87IH07CiAJCUZDNTREMDU4MTZBNzY3
NkUwMDU3NUU0RCAvKiBKU0NTU1N1cHBvcnRzUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkM4NDgwMkUxNjdBQjQ0NDAwOENEMTAwIC8qIEpTQ1NT
U3VwcG9ydHNSdWxlLmggKi87IH07CkBAIC0xMzU5MSw2ICsxMzU5Myw3IEBACiAJCUZBQkU3MkZC
MTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkZDMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRo
TUxOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxO
YW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCMkMxNUMyMTY1RDY0OTAw
MDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGQjJERTk0QzE4RDg3REQzMDA5MUY3N0EgLyogU3R5bGVDdXN0
b21Qcm9wZXJ0eURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGEuaDsgcGF0aCA9IHN0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCMzA1NkMxMTY5RTVEQUMwMDk2QTIz
MiAvKiBDU1NHcm91cGluZ1J1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q1NTR3JvdXBpbmdSdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCNDg0RjRB
MTcxRjgyMUUwMDA0MDc1NSAvKiBUcmFuc2Zvcm1GdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNmb3JtRnVuY3Rpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI0ODRGNEIxNzFGODIxRTAwMDQwNzU1IC8qIFRyYW5zZm9y
bUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2Zvcm1G
dW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNjE1LDYgKzEzNjE4
LDcgQEAKIAkJRkJEQjYxOUMxNkQ2MDM0NjAwQkIzMzk0IC8qIFBhZ2VSdWxlQ29sbGVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VSdWxlQ29sbGVjdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkJEQjYxOUUxNkQ2MDM2NTAwQkIz
Mzk0IC8qIEVsZW1lbnRSdWxlQ29sbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEVsZW1lbnRSdWxlQ29sbGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZCREI2MUEwMTZENjAzN0UwMEJCMzM5NCAvKiBQYWdlUnVsZUNvbGxlY3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlUnVsZUNvbGxlY3Rvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGQkVFMEFBRjE4RDg0N0FCMDAwMjg1RDEgLyogQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCRjg5
MDQ0MTY5RTlGMUYwMDUyRDg2RSAvKiBDU1NHcm91cGluZ1J1bGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTR3JvdXBpbmdSdWxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkM2M0JEQjExNjdBQUJBQzAwRjkzODBGIC8qIENTU1N1cHBvcnRz
UnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NTdXBwb3J0c1J1bGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkM2M0JEQjIxNjdBQUJBQzAwRjkzODBG
IC8qIENTU1N1cHBvcnRzUnVsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTU3VwcG9y
dHNSdWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNTY5LDYgKzIwNTcz
LDcgQEAKIAkJCQlCQ0VGNDQ0QzBFNjc0NjI4MDAxQzEyODcgLyogU3R5bGVDYWNoZWRJbWFnZS5o
ICovLAogCQkJCTkzOTNFNjAyMTUxQTlBMTgwMDA2NkYwNiAvKiBTdHlsZUNhY2hlZEltYWdlU2V0
LmNwcCAqLywKIAkJCQk5MzkzRTYwMzE1MUE5QTE4MDAwNjZGMDYgLyogU3R5bGVDYWNoZWRJbWFn
ZVNldC5oICovLAorCQkJCUZCMkRFOTRDMThEODdERDMwMDkxRjc3QSAvKiBTdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YS5oICovLAogCQkJCUJDNUVCNjdFMEU4MUQ0QTcwMEIyNTk2NSAvKiBTdHlsZURh
c2hib2FyZFJlZ2lvbi5oICovLAogCQkJCUJDNUVCOEI2MEU4MjAxQkQwMEIyNTk2NSAvKiBTdHls
ZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuY3BwICovLAogCQkJCUJDNUVCOEI3MEU4MjAxQkQw
MEIyNTk2NSAvKiBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaCAqLywKQEAgLTIxNDg0
LDYgKzIxNDg5LDcgQEAKIAkJCQkyRDhGRUJEQjE0M0UzRUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3Nm
YWRlVmFsdWUuaCAqLywKIAkJCQlBQTA5NzhFRDBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29y
SW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJQUEwOTc4RUUwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1
cnNvckltYWdlVmFsdWUuaCAqLywKKwkJCQlGQkVFMEFBRjE4RDg0N0FCMDAwMjg1RDEgLyogQ1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZS5oICovLAogCQkJCTRBOUNDODE1MTZCQjlBQzYwMEVDNjQ1QSAv
KiBDU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwICovLAogCQkJCTRBOUNDODE2MTZCQjlBQzYwMEVD
NjQ1QSAvKiBDU1NEZWZhdWx0U3R5bGVTaGVldHMuaCAqLywKIAkJCQlGQjk2NUI4MjE3QkJCNjJD
MDBFODM1QjkgLyogQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAgKi8sCkBAIC0yMzQ3OCw2ICsyMzQ4
NCw3IEBACiAJCQkJODVFNzExQ0MwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxUYWJsZVJvd0Vs
ZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVERjgyMjUwQUE3ODQ5RTAwNDg2
QUQ3IC8qIERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NUU3MTFDRDBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkJFRTBBQjAxOEQ4NDdBQjAwMDI4NUQxIC8qIENT
U0N1c3RvbVByb3BlcnR5VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RjMyQUYyMEFBNjNC
ODcwMEZGMzE4NCAvKiBET01IVE1MVGV4dEFyZWFFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NUU3MTFDRTBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTFRleHRBcmVhRWxlbWVudEludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUM3OTcxRDE4ODNFNTFGMDAwRjVFMUYgLyogRE9N
SFRNTFRleHRBcmVhRWxlbWVudFByaXZhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjQwNzMsNiAr
MjQwODAsNyBAQAogCQkJCUYzRjVDRjExMTJFRDgxQTgwMDg0QzU2OSAvKiBJbnNwZWN0b3JDb25z
b2xlSW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQjk1QTBFOTczMzA4
MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODJB
QjE3NDQxMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQlGQjJERTk0RDE4RDg3RERDMDA5MUY3N0EgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBOUNDODIxMTZCRjlCQjQwMEVDNjQ1QSAvKiBJbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUIwQjFDMTEyMTFBNjIy
MDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RjNGNUNGMTMxMkVEODFCMzAwODRDNTY5IC8qIEluc3BlY3RvckRhdGFiYXNlSW5zdHJ1bWVudGF0
aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNTMyZTU1ZS4uNTc2MGQ2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAg
LTE2OTMsOCArMTY5MywxMSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogCiAgICAgc3dpdGNo
IChwcm9wZXJ0eUlEKSB7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlJbnZhbGlkOgorI2lmIEVO
QUJMRShDVVNUT01fUFJPUEVSVElFUykKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1c3RvbToK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNlZW1zIHRvIGJlIHRoZSBpbXBvcnRhbnQgcGFy
dC4gV2h5IGlzIGl0IG1pc3Npbmc/CiAgICAgICAgICAgICBicmVhazsKLQorI2VuZGlmCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6CiAgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sKCkuY3JlYXRlQ29sb3JWYWx1ZShtX2FsbG93VmlzaXRlZFN0eWxlPyBzdHls
ZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5yZ2Io
KSA6IHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKS5yZ2IoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kSW1hZ2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3Bl
cnR5VmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2NmMjBiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFs
dWUuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlX2gK
KyNkZWZpbmUgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZV9oCisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BS
T1BFUlRJRVMpCisKKyNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKKyNpbmNsdWRlICJDU1NQ
cm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5h
bWUsIHZhbHVlKSk7CisgICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0N1c3RvbVByb3Bl
cnR5VmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX25hbWUgPT0gb3RoZXIubV9uYW1lICYm
IG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsgfQorCitwcml2YXRlOgorICAgIENTU0N1c3RvbVBy
b3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQorICAgICAgICA6IENTU1ZhbHVlKEN1c3RvbVByb3BlcnR5Q2xhc3MpCisgICAgICAgICwgbV9u
YW1lKG5hbWUpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAg
Y29uc3QgQXRvbWljU3RyaW5nIG1fbmFtZTsKKyAgICBjb25zdCBTdHJpbmcgbV92YWx1ZTsKK307
CisKK0NTU19WQUxVRV9UWVBFX0NBU1RTKENTU0N1c3RvbVByb3BlcnR5VmFsdWUsIGlzQ3VzdG9t
UHJvcGVydHlWYWx1ZSgpKQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoQ1VTVE9NX1BST1BFUlRJRVMpCisjZW5kaWYgLy8gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgppbmRleCA5MWI1MzU2Li40MWU1OWE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KQEAgLTE3OCw2ICsxNzgsOCBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaXNDU1NUb2tlbkFTdHJpbmcoaW50IHl5dHlwZSkKICV0b2tlbiA8c3RyaW5n
PiBNSU5GVU5DVElPTgogJXRva2VuIDxzdHJpbmc+IE1BWEZVTkNUSU9OCiAKKyV0b2tlbiA8c3Ry
aW5nPiBDVVNUT01fREVGSU5JVElPTgorCiAldG9rZW4gPHN0cmluZz4gVU5JQ09ERVJBTkdFCiAK
ICV1bmlvbiB7IENTU1NlbGVjdG9yOjpSZWxhdGlvbiByZWxhdGlvbjsgfQpAQCAtMTMxNyw3ICsx
MzE5LDE3IEBAIGRlY2xfbGlzdF9yZWNvdmVyeToKICAgICA7CiAKIGRlY2xhcmF0aW9uOgotICAg
IHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBleHByIHByaW9yaXR5IHsKKyAgICBDVVNUT01fREVG
SU5JVElPTiBtYXliZV9zcGFjZSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvcml0eSB7CisjaWYg
RU5BQkxFX0NVU1RPTV9QUk9QRVJUSUVTCisgICAgICAgIHBhcnNlci0+c3RvcmVDdXN0b21Qcm9w
ZXJ0eURlY2xhcmF0aW9uKCQxLCBhZG9wdFB0cigkNSksICQ2KTsKKyAgICAgICAgJCQgPSB0cnVl
OworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZCgkNiwgdHJ1ZSk7CisjZWxzZQorICAg
ICAgICBkZWxldGUgJDU7CisgICAgICAgICQkID0gZmFsc2U7CisjZW5kaWYKKyAgICB9CisgICAg
fCBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvcml0eSB7CiAgICAgICAgICQkID0g
ZmFsc2U7CiAgICAgICAgIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCA9IGZhbHNlOwogICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyVmFsdWVMaXN0PiBwcm9wZXJ0eVZhbHVlKCQ0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggZTY2YzdjOS4uYTAyMWZmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDU1NDYW52YXNWYWx1
ZS5oIgogI2luY2x1ZGUgIkNTU0Nyb3NzZmFkZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Vyc29y
SW1hZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCIKICNpbmNs
dWRlICJDU1NGaWx0ZXJJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmgi
CiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIgpAQCAtMTQ4NCwxMyArMTQ4NSwyMyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFRdWVyeT4gQ1NTUGFyc2VyOjpwYXJzZU1lZGlhUXVlcnko
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHN0ZDo6bW92ZShtX21lZGlhUXVlcnkp
OwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgZmlsdGVyUHJvcGVydGllcyhib29sIGltcG9ydGFu
dCwgY29uc3QgQ1NTUGFyc2VyOjpQYXJzZWRQcm9wZXJ0eVZlY3RvciYgaW5wdXQsIFZlY3RvcjxD
U1NQcm9wZXJ0eSwgMjU2PiYgb3V0cHV0LCBzaXplX3QmIHVudXNlZEVudHJpZXMsIHN0ZDo6Yml0
c2V0PG51bUNTU1Byb3BlcnRpZXM+JiBzZWVuUHJvcGVydGllcykKK3N0YXRpYyBpbmxpbmUgdm9p
ZCBmaWx0ZXJQcm9wZXJ0aWVzKGJvb2wgaW1wb3J0YW50LCBjb25zdCBDU1NQYXJzZXI6OlBhcnNl
ZFByb3BlcnR5VmVjdG9yJiBpbnB1dCwgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+JiBvdXRwdXQs
IHNpemVfdCYgdW51c2VkRW50cmllcywgc3RkOjpiaXRzZXQ8bnVtQ1NTUHJvcGVydGllcz4mIHNl
ZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5DdXN0b21Qcm9wZXJ0aWVz
KQogewogICAgIC8vIEFkZCBwcm9wZXJ0aWVzIGluIHJldmVyc2Ugb3JkZXIgc28gdGhhdCBoaWdo
ZXN0IHByaW9yaXR5IGRlZmluaXRpb25zIGFyZSByZWFjaGVkIGZpcnN0LiBEdXBsaWNhdGUgZGVm
aW5pdGlvbnMgY2FuIHRoZW4gYmUgaWdub3JlZCB3aGVuIGZvdW5kLgogICAgIGZvciAoaW50IGkg
PSBpbnB1dC5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewogICAgICAgICBjb25zdCBDU1NQcm9w
ZXJ0eSYgcHJvcGVydHkgPSBpbnB1dFtpXTsKICAgICAgICAgaWYgKHByb3BlcnR5LmlzSW1wb3J0
YW50KCkgIT0gaW1wb3J0YW50KQogICAgICAgICAgICAgY29udGludWU7CisjaWYgRU5BQkxFKENV
U1RPTV9QUk9QRVJUSUVTKQorICAgICAgICBpZiAocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0
eUN1c3RvbSkgeworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gdG9DU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlKHByb3BlcnR5LnZhbHVlKCkpLT5uYW1lKCk7CisgICAgICAgICAg
ICBpZiAoc2VlbkN1c3RvbVByb3BlcnRpZXMuY29udGFpbnMobmFtZSkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBzZWVuQ3VzdG9tUHJvcGVydGllcy5hZGQobmFtZSk7
CisgICAgICAgICAgICBvdXRwdXRbLS11bnVzZWRFbnRyaWVzXSA9IHByb3BlcnR5OworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBwcm9wZXJ0eUlESW5kZXggPSBwcm9wZXJ0eS5pZCgpIC0gZmlyc3RDU1NQcm9wZXJ0eTsKICAg
ICAgICAgaWYgKHNlZW5Qcm9wZXJ0aWVzLnRlc3QocHJvcGVydHlJREluZGV4KSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtMTUwNiw4ICsxNTE3LDE0IEBAIFBhc3NSZWY8SW1tdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUHJvcGVydGllcygpCiAgICAgVmVj
dG9yPENTU1Byb3BlcnR5LCAyNTY+IHJlc3VsdHModW51c2VkRW50cmllcyk7CiAKICAgICAvLyBJ
bXBvcnRhbnQgcHJvcGVydGllcyBoYXZlIGhpZ2hlciBwcmlvcml0eSwgc28gYWRkIHRoZW0gZmly
c3QuIER1cGxpY2F0ZSBkZWZpbml0aW9ucyBjYW4gdGhlbiBiZSBpZ25vcmVkIHdoZW4gZm91bmQu
CisjaWYgRU5BQkxFKENVU1RPTV9QUk9QRVJUSUVTKQorICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5n
PiBzZWVuQ3VzdG9tUHJvcGVydGllczsKKyAgICBmaWx0ZXJQcm9wZXJ0aWVzKHRydWUsIG1fcGFy
c2VkUHJvcGVydGllcywgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRpZXMsIHNl
ZW5DdXN0b21Qcm9wZXJ0aWVzKTsKKyAgICBmaWx0ZXJQcm9wZXJ0aWVzKGZhbHNlLCBtX3BhcnNl
ZFByb3BlcnRpZXMsIHJlc3VsdHMsIHVudXNlZEVudHJpZXMsIHNlZW5Qcm9wZXJ0aWVzLCBzZWVu
Q3VzdG9tUHJvcGVydGllcyk7CisjZWxzZQogICAgIGZpbHRlclByb3BlcnRpZXModHJ1ZSwgbV9w
YXJzZWRQcm9wZXJ0aWVzLCByZXN1bHRzLCB1bnVzZWRFbnRyaWVzLCBzZWVuUHJvcGVydGllcyk7
CiAgICAgZmlsdGVyUHJvcGVydGllcyhmYWxzZSwgbV9wYXJzZWRQcm9wZXJ0aWVzLCByZXN1bHRz
LCB1bnVzZWRFbnRyaWVzLCBzZWVuUHJvcGVydGllcyk7CisjZW5kaWYKICAgICBpZiAodW51c2Vk
RW50cmllcykKICAgICAgICAgcmVzdWx0cy5yZW1vdmUoMCwgdW51c2VkRW50cmllcyk7CiAKQEAg
LTI5NDQsNiArMjk2MSw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5n
OgogICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZToKICAgICBjYXNlIENTU1Byb3BlcnR5
Q2xlYXI6CisjaWYgRU5BQkxFKENVU1RPTV9QUk9QRVJUSUVTKQorICAgIGNhc2UgQ1NTUHJvcGVy
dHlDdXN0b206CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgogICAgIGNh
c2UgQ1NTUHJvcGVydHlEaXNwbGF5OgogICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOgpA
QCAtMzI1Nyw2ICszMjc3LDQ1IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZpbGxTaG9ydGhhbmQo
Q1NTUHJvcGVydHlJRCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHByCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1BFUlRJRVMpCisvLyBGSVhNRTogSXMg
dGhlcmUgYW55IGJldHRlciB3YXkgdG8gY2hlY2sgcHJlZml4ZXM/IERvbid0IHdlIGhhdmUgYSBk
aWZmZXJlbnQKKy8vIHdheSBmb3IgLWtodG1sLSwgLWFwcGxlLSBhbmQgLXdlYmtpdC0/CisvLyBX
aHkgaXMgaXQgaGVyZSBhbmQgbm90IGluIENTU1BhcnNlclZhbHVlLmNwcD8gRGVmaW50aW9uIGlz
IGluIENTU1BhcnNlclZhbHVlLmguCitBdG9taWNTdHJpbmcgQ1NTUGFyc2VyU3RyaW5nOjpzdWJz
dHJpbmcodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKK3sKKyAgICBB
U1NFUlQobV9sZW5ndGggPj0gcG9zaXRpb24gKyBsZW5ndGgpOworCisgICAgaWYgKGlzOEJpdCgp
KQorICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKGNoYXJhY3RlcnM4KCkgKyBwb3NpdGlvbiwg
bGVuZ3RoKTsKKyAgICByZXR1cm4gQXRvbWljU3RyaW5nKGNoYXJhY3RlcnMxNigpICsgcG9zaXRp
b24sIGxlbmd0aCk7Cit9CisKK3ZvaWQgQ1NTUGFyc2VyOjpzdG9yZUN1c3RvbVByb3BlcnR5RGVj
bGFyYXRpb24oY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPENTU1BhcnNl
clZhbHVlTGlzdD4gdmFsdWUsIGJvb2wgaW1wb3J0YW50KQoreworICAgIC8vIFdoZW4gQ1NTR3Jh
bW1hci55IGVuY291bnRlcnMgYW4gaW52YWxpZCBkZWNsYXJhdGlvbiBpdCBwYXNzZXMgbnVsbCBm
b3IgdGhlIENTU1BhcnNlclZhbHVlTGlzdCwganVzdCBiYWlsLgorICAgIGlmICghdmFsdWUpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICAvLyBGSVhNRTogV2h5IGRvIHdlIGp1c3QgY29tcGFy
ZSB0aGUgcHJlZml4IGxlbmd0aCBhbmQgZG9uJ3QgY2hlY2sgdGhlIHByZWZpeAorICAgIC8vIGl0
ZXNlbGY/IEdyYW1tYXIueS5pbiBkb2Vzbid0IHNlZW0gdG8gY2hlY2sgZWl0aGVyLgorICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSBzaXplb2YoIi13ZWJraXQtdmFyLSIp
IC0gMTsKKyAgICAKKyAgICBBU1NFUlQobmFtZS5sZW5ndGgoKSA+IHByZWZpeExlbmd0aCk7Cisg
ICAgQXRvbWljU3RyaW5nIGN1c3RvbVByb3BlcnR5TmFtZSA9IG5hbWUuc3Vic3RyaW5nKHByZWZp
eExlbmd0aCwgbmFtZS5sZW5ndGgoKSAtIHByZWZpeExlbmd0aCk7CisKKyAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IHZhbHVlLT5zaXpl
KCk7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKGkpCisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnICcpOworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlID0gdmFsdWUt
PnZhbHVlQXQoaSktPmNyZWF0ZUNTU1ZhbHVlKCk7CisgICAgICAgIGlmICghY3NzVmFsdWUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNzc1ZhbHVlLT5jc3NU
ZXh0KCkpOworICAgIH0KKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKGN1c3RvbVByb3BlcnR5TmFtZSwgYnVpbGRlci50b1N0
cmluZygpLmxvd2VyKCkpLCBpbXBvcnRhbnQsIGZhbHNlKTsKK30KKyNlbmRpZgorCiB2b2lkIENT
U1BhcnNlcjo6YWRkQW5pbWF0aW9uVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gcnZhbCkKIHsKICAgICBpZiAobHZhbCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCmluZGV4IDc3YWQ0MzQuLjk3ODUwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTEw
OCw2ICsxMDgsMTAgQEAgcHVibGljOgogICAgIGJvb2wgcGFyc2VDb250ZW50KENTU1Byb3BlcnR5
SUQsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlUXVvdGVzKENTU1Byb3BlcnR5SUQs
IGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlQWx0KENTU1Byb3BlcnR5SUQsIGJvb2wg
aW1wb3J0YW50KTsKKworI2lmIEVOQUJMRShDVVNUT01fUFJPUEVSVElFUykKKyAgICB2b2lkIHN0
b3JlQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbihjb25zdCBDU1NQYXJzZXJTdHJpbmcmLCBQYXNz
T3duUHRyPENTU1BhcnNlclZhbHVlTGlzdD4sIGJvb2wgaW1wb3J0YW50KTsKKyNlbmRpZgogICAg
IAogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQXR0cihDU1NQYXJzZXJWYWx1ZUxpc3Qq
IGFyZ3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5kZXggNmIxYjA5ZC4u
OWRmOTMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtOTUsNiArOTUs
MTAgQEAgc3RydWN0IENTU1BhcnNlclN0cmluZyB7CiAgICAgb3BlcmF0b3IgU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gaXM4Qml0KCkgPyBTdHJpbmcobV9kYXRhLmNoYXJhY3RlcnM4LCBtX2xlbmd0
aCkgOiBTdHJpbmcobV9kYXRhLmNoYXJhY3RlcnMxNiwgbV9sZW5ndGgpOyB9CiAgICAgb3BlcmF0
b3IgQXRvbWljU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gaXM4Qml0KCkgPyBBdG9taWNTdHJpbmco
bV9kYXRhLmNoYXJhY3RlcnM4LCBtX2xlbmd0aCkgOiBBdG9taWNTdHJpbmcobV9kYXRhLmNoYXJh
Y3RlcnMxNiwgbV9sZW5ndGgpOyB9CiAKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1BFUlRJRVMpCisg
ICAgQXRvbWljU3RyaW5nIHN1YnN0cmluZyh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVu
Z3RoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgdW5pb24gewogICAgICAgICBMQ2hhciogY2hhcmFj
dGVyczg7CiAgICAgICAgIFVDaGFyKiBjaGFyYWN0ZXJzMTY7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNw
cAppbmRleCBiMGY3MTRmLi44MjJkMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDU1NDYW52YXNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0Ny
b3NzZmFkZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCIKICNpbmNsdWRlICJDU1NGaWx0ZXJJbWFnZVZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0Zv
bnRGZWF0dXJlVmFsdWUuaCIKQEAgLTE2OCw2ICsxNjksMTAgQEAgYm9vbCBDU1NWYWx1ZTo6ZXF1
YWxzKGNvbnN0IENTU1ZhbHVlJiBvdGhlcikgY29uc3QKICAgICAgICAgICAgIHJldHVybiBjb21w
YXJlQ1NTVmFsdWVzPENTU0NhbnZhc1ZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNl
IEN1cnNvckltYWdlQ2xhc3M6CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxD
U1NDdXJzb3JJbWFnZVZhbHVlPigqdGhpcywgb3RoZXIpOworI2lmIEVOQUJMRShDVVNUT01fUFJP
UEVSVElFUykKKyAgICAgICAgY2FzZSBDdXN0b21Qcm9wZXJ0eUNsYXNzOgorICAgICAgICAgICAg
cmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnRoaXMsIG90
aGVyKTsKKyNlbmRpZgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICAgICAgY2FzZSBGaWx0
ZXJJbWFnZUNsYXNzOgogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTRmls
dGVySW1hZ2VWYWx1ZT4oKnRoaXMsIG90aGVyKTsKQEAgLTI1Niw2ICsyNjEsMTAgQEAgU3RyaW5n
IENTU1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRvQ1NTQ2FudmFzVmFs
dWUodGhpcyktPmN1c3RvbUNTU1RleHQoKTsKICAgICBjYXNlIEN1cnNvckltYWdlQ2xhc3M6CiAg
ICAgICAgIHJldHVybiB0b0NTU0N1cnNvckltYWdlVmFsdWUodGhpcyktPmN1c3RvbUNTU1RleHQo
KTsKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1BFUlRJRVMpCisgICAgY2FzZSBDdXN0b21Qcm9wZXJ0
eUNsYXNzOgorICAgICAgICByZXR1cm4gdG9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKHRoaXMpLT52
YWx1ZSgpOworI2VuZGlmCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGNhc2UgRmlsdGVy
SW1hZ2VDbGFzczoKICAgICAgICAgcmV0dXJuIHRvQ1NTRmlsdGVySW1hZ2VWYWx1ZSh0aGlzKS0+
Y3VzdG9tQ1NTVGV4dCgpOwpAQCAtMzQzLDYgKzM1MiwxMSBAQCB2b2lkIENTU1ZhbHVlOjpkZXN0
cm95KCkKICAgICBjYXNlIEN1cnNvckltYWdlQ2xhc3M6CiAgICAgICAgIGRlbGV0ZSB0b0NTU0N1
cnNvckltYWdlVmFsdWUodGhpcyk7CiAgICAgICAgIHJldHVybjsKKyNpZiBFTkFCTEUoQ1VTVE9N
X1BST1BFUlRJRVMpCisgICAgY2FzZSBDdXN0b21Qcm9wZXJ0eUNsYXNzOgorICAgICAgICBkZWxl
dGUgdG9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKHRoaXMpOworICAgICAgICByZXR1cm47CisjZW5k
aWYKICAgICBjYXNlIEZvbnRDbGFzczoKICAgICAgICAgZGVsZXRlIHRvQ1NTRm9udFZhbHVlKHRo
aXMpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDhhMDAwZDAuLjEw
NTNiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC03MSw2ICs3MSw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzQ2FudmFzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDYW52
YXNDbGFzczsgfQogICAgIGJvb2wgaXNDcm9zc2ZhZGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xhc3NUeXBlID09IENyb3NzZmFkZUNsYXNzOyB9CiAgICAgYm9vbCBpc0N1cnNvckltYWdlVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDdXJzb3JJbWFnZUNsYXNzOyB9Cisj
aWYgRU5BQkxFKENVU1RPTV9QUk9QRVJUSUVTKQorICAgIGJvb2wgaXNDdXN0b21Qcm9wZXJ0eVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gQ3VzdG9tUHJvcGVydHlDbGFzczsg
fQorI2VuZGlmCiAgICAgYm9vbCBpc0Z1bmN0aW9uVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Ns
YXNzVHlwZSA9PSBGdW5jdGlvbkNsYXNzOyB9CiAgICAgYm9vbCBpc0ZvbnRGZWF0dXJlVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBGb250RmVhdHVyZUNsYXNzOyB9CiAgICAg
Ym9vbCBpc0ZvbnRGYWNlU3JjVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBG
b250RmFjZVNyY0NsYXNzOyB9CkBAIC0xNTQsNiArMTU3LDkgQEAgcHJvdGVjdGVkOgogICAgICAg
ICBJbmhlcml0ZWRDbGFzcywKICAgICAgICAgSW5pdGlhbENsYXNzLAogCisjaWYgRU5BQkxFKENV
U1RPTV9QUk9QRVJUSUVTKQorICAgICAgICBDdXN0b21Qcm9wZXJ0eUNsYXNzLAorI2VuZGlmCiAg
ICAgICAgIFJlZmxlY3RDbGFzcywKICAgICAgICAgU2hhZG93Q2xhc3MsCiAgICAgICAgIFVuaWNv
ZGVSYW5nZUNsYXNzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCA5
ZGZjODM3Li5iOGE5MDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApA
QCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogCiAjaW5jbHVk
ZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1ZhbHVl
S2V5d29yZHMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKQEAgLTc5Miw2ICs3OTMsMTMg
QEAgU3RyaW5nIFN0eWxlUHJvcGVydGllczo6YXNUZXh0KCkgY29uc3QKICAgICAgICAgU3RyaW5n
IHZhbHVlOwogCiAgICAgICAgIHN3aXRjaCAocHJvcGVydHlJRCkgeworI2lmIEVOQUJMRShDVVNU
T01fUFJPUEVSVElFUykKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1c3RvbToKKyAgICAgICAg
ICAgIGlmIChudW1EZWNscysrKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocHJvcGVydHkuY3NzVGV4dCgpKTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UG9zaXRpb25YOgogICAgICAgICAgICAgcG9zaXRpb25YUHJvcGVydHlJbmRleCA9IG47CiAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTEyNzMsNiArMTI4MSwxNCBAQCBQYXNzUmVmPE11dGFibGVT
dHlsZVByb3BlcnRpZXM+IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShjb25zdCBDU1NQ
cm9wZXJ0eQogCiBTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpQcm9wZXJ0eVJlZmVyZW5jZTo6Y3Nz
TmFtZSgpIGNvbnN0CiB7CisjaWYgRU5BQkxFKENVU1RPTV9QUk9QRVJUSUVTKQorICAgIGlmIChp
ZCgpID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7CisgICAgICAgIEFTU0VSVChwcm9wZXJ0eVZhbHVl
KCktPmlzQ3VzdG9tUHJvcGVydHlWYWx1ZSgpKTsKKyAgICAgICAgaWYgKCFwcm9wZXJ0eVZhbHVl
KCktPmlzQ3VzdG9tUHJvcGVydHlWYWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7IC8vIFNob3VsZCBub3QgaGFwcGVuLCBidXQgaWYgaXQgZG9lcywgYXZvaWQgYSBiYWQg
Y2FzdC4KKyAgICAgICAgcmV0dXJuICItd2Via2l0LXZhci0iICsgdG9DU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlKHByb3BlcnR5VmFsdWUoKSktPm5hbWUoKTsKKyAgICB9CisjZW5kaWYKICAgICByZXR1
cm4gZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGlkKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKaW5kZXggOWJhZDdiOC4uYWFkYWU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdl
LmgiCiAjaW5jbHVkZSAiQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNv
ckltYWdlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmgiCiAjaW5jbHVkZSAiQ1NTRmlsdGVySW1hZ2VW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlUnVsZS5oIgpAQCAtMjU2Miw2ICsyNTYzLDE1
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSogdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFC
TEUoQ1NTX1ZBUklBQkxFUykKKyAgICBjYXNlIENTU1Byb3BlcnR5Q3VzdG9tOiB7CisgICAgICAg
ICBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKiBjdXN0b21Qcm9wZXJ0eSA9IHRvQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZSh2YWx1ZSk7CisgICAgICAgICBBU1NFUlQoIWN1c3RvbVByb3BlcnR5LT5uYW1l
KCkuaXNFbXB0eSgpKTsKKyAgICAgICAgIEFTU0VSVCghY3VzdG9tUHJvcGVydHktPnZhbHVlKCku
aXNFbXB0eSgpKTsKKyAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEN1c3RvbVByb3BlcnR5KGN1
c3RvbVByb3BlcnR5LT5uYW1lKCksIGN1c3RvbVByb3BlcnR5LT52YWx1ZSgpKTsKKyAgICAgICAg
IHJldHVybjsKKyAgICAgfQorI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRT
dHJva2VXaWR0aDogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0U3Ry
b2tlV2lkdGgsIFRleHRTdHJva2VXaWR0aCkKICAgICAgICAgZmxvYXQgd2lkdGggPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dlYkNvcmUv
Y3NzL21ha2Vwcm9wLnBsCmluZGV4IDcyNmExOTQuLmEwZDc1YTkgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXBy
b3AucGwKQEAgLTM3LDcgKzM3LDcgQEAgZGllICJXZSd2ZSByZWFjaGVkIG1vcmUgdGhhbiAxMDI0
IENTUyBwcm9wZXJ0aWVzLCBwbGVhc2UgbWFrZSBzdXJlIHRvIHVwZGF0ZSBDU1MKIG15ICVuYW1l
c0hhc2g7CiBteSBAZHVwbGljYXRlcyA9ICgpOwogCi1teSAkbnVtUHJlZGVmaW5lZFByb3BlcnRp
ZXMgPSAxOworbXkgJG51bVByZWRlZmluZWRQcm9wZXJ0aWVzID0gMjsKIG15IEBuYW1lcyA9ICgp
OwogbXkgJW5hbWVJc0luaGVyaXRlZDsKIG15ICVuYW1lVG9JZDsKQEAgLTIwNSw2ICsyMDUsNyBA
QCBTdHJpbmcgZ2V0SlNQcm9wZXJ0eU5hbWUoQ1NTUHJvcGVydHlJRCBpZCkKIAogc3RhdGljIGNv
bnN0IGJvb2wgaXNJbmhlcml0ZWRQcm9wZXJ0eVRhYmxlW251bUNTU1Byb3BlcnRpZXMgKyAkbnVt
UHJlZGVmaW5lZFByb3BlcnRpZXNdID0gewogICAgIGZhbHNlLCAvLyBDU1NQcm9wZXJ0eUludmFs
aWQKKyAgICBmYWxzZSwgLy8gQ1NTUHJvcGVydHlDdXN0b20KIEVPRgogCiBmb3JlYWNoIG15ICRu
YW1lIChAbmFtZXMpIHsKQEAgLTI1MCw2ICsyNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGVudW0gQ1NTUHJvcGVydHlJRCB7CiAgICAgQ1NTUHJvcGVydHlJbnZhbGlkID0gMCwKKyAgICBD
U1NQcm9wZXJ0eUN1c3RvbSA9IDEsCiBFT0YKIAogbXkgJGZpcnN0ID0gJG51bVByZWRlZmluZWRQ
cm9wZXJ0aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAppbmRleCAxZmMyMDQzLi4zNjdmMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMzY5LDYgKzM2OSwxMSBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBQc2V1ZG9TdHlsZUNhY2hlKiBjYWNoZWRQc2V1ZG9TdHlsZXMoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlZFBzZXVkb1N0eWxlcy5nZXQoKTsgfQogCisjaWYgRU5BQkxFKENVU1RPTV9QUk9Q
RVJUSUVTKQorICAgIHZvaWQgc2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSB7IHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X2N1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCktPnNldEN1c3RvbVByb3BlcnR5KG5hbWUsIHZhbHVl
KTsgfQorICAgIGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+KiBjdXN0b21Qcm9w
ZXJ0aWVzKCkgeyByZXR1cm4gJihyYXJlSW5oZXJpdGVkRGF0YS0+bV9jdXN0b21Qcm9wZXJ0aWVz
LT5tX2RhdGEpOyB9CisjZW5kaWYKKwogICAgIGJvb2wgYWZmZWN0ZWRCeUhvdmVyKCkgY29uc3Qg
eyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmFmZmVjdGVkQnlIb3ZlcigpOyB9CiAgICAgYm9v
bCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmFm
ZmVjdGVkQnlBY3RpdmUoKTsgfQogICAgIGJvb2wgYWZmZWN0ZWRCeURyYWcoKSBjb25zdCB7IHJl
dHVybiBub25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeURyYWcoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmI0MDcxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgU3R5bGVDdXN0b21Qcm9wZXJ0eURh
dGFfaAorI2RlZmluZSBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YV9oCisjaWYgRU5BQkxFKENVU1RP
TV9QUk9QRVJUSUVTKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVDdXN0b21Qcm9w
ZXJ0eURhdGE+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YSgpKTsgfQorICAgIFBhc3NSZWY8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+IGNvcHko
KSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKCp0
aGlzKSk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5
RGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLm1fZGF0YSA9PSBtX2RhdGE7IH0KKyAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG90aGVyKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgdm9pZCBzZXRDdXN0b21Q
cm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIHsg
bV9kYXRhLnNldChuYW1lLCB2YWx1ZSk7IH0KKworICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBT
dHJpbmc+IG1fZGF0YTsKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU3R5bGVDdXN0b21Qcm9wZXJ0
eURhdGEoKSA6IFJlZkNvdW50ZWQ8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+KCkgeyB9CisgICAg
U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEoY29uc3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG90
aGVyKSA6IFJlZkNvdW50ZWQ8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+KCksIG1fZGF0YShIYXNo
TWFwPEF0b21pY1N0cmluZywgU3RyaW5nPihvdGhlci5tX2RhdGEpKSB7IH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJPUEVSVElFUykK
KyNlbmRpZiAvLyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5k
ZXggODJhM2E5MS4uMmRiYmJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAtNjAsNiArNjAsMTEg
QEAgc3RydWN0IEdyZWF0ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSA6
IHB1YmxpYyBSZWZDb3VudGVkPEdyZWF0ZXIKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAg
IENvbG9yIHRhcEhpZ2hsaWdodENvbG9yOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BS
T1BFUlRJRVMpCisgICAgLy8gRklYTUU6IEF2b2lkIHZvaWQqLgorICAgIHZvaWQqIGN1c3RvbVBy
b3BlcnR5RGF0YVJlZnNbMV07CisjZW5kaWYKIH07CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihT
dHlsZVJhcmVJbmhlcml0ZWREYXRhKSA8PSBzaXplb2YoR3JlYXRlclRoYW5PclNhbWVTaXplQXNT
dHlsZVJhcmVJbmhlcml0ZWREYXRhKSwgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YV9zaG91bGRfYml0
X3BhY2spOwpAQCAtMTMzLDYgKzEzOCw5IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxl
UmFyZUluaGVyaXRlZERhdGEoKQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLCB0YXBI
aWdobGlnaHRDb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkpCiAj
ZW5kaWYKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1BFUlRJRVMpCisgICAgLCBtX2N1c3RvbVByb3Bl
cnRpZXMoU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OmNyZWF0ZSgpKQorI2VuZGlmCiB7CiB9CiAK
QEAgLTIxNyw2ICsyMjUsOSBAQCBpbmxpbmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVS
YXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYQogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAgICAgLCB0YXBIaWdobGlnaHRDb2xvcihvLnRhcEhpZ2hsaWdodENvbG9y
KQogI2VuZGlmCisjaWYgRU5BQkxFKENVU1RPTV9QUk9QRVJUSUVTKQorICAgICwgbV9jdXN0b21Q
cm9wZXJ0aWVzKG8ubV9jdXN0b21Qcm9wZXJ0aWVzKQorI2VuZGlmCiB7CiB9CiAKQEAgLTMyMyw2
ICszMzQsOSBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3Qg
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKICAgICAgICAgJiYgbV90ZXh0VW5kZXJs
aW5lUG9zaXRpb24gPT0gby5tX3RleHRVbmRlcmxpbmVQb3NpdGlvbgogICAgICAgICAmJiBtX3J1
YnlQb3NpdGlvbiA9PSBvLm1fcnVieVBvc2l0aW9uCiAgICAgICAgICYmIG1fbGluZVNuYXAgPT0g
by5tX2xpbmVTbmFwCisjaWYgRU5BQkxFKENVU1RPTV9QUk9QRVJUSUVTKQorICAgICAgICAmJiBt
X2N1c3RvbVByb3BlcnRpZXMgPT0gby5tX2N1c3RvbVByb3BlcnRpZXMKKyNlbmRpZgogICAgICAg
ICAmJiBtX2xpbmVBbGlnbiA9PSBvLm1fbGluZUFsaWduCiAgICAgICAgICYmIFN0eWxlSW1hZ2U6
OmltYWdlc0VxdWl2YWxlbnQobGlzdFN0eWxlSW1hZ2UuZ2V0KCksIG8ubGlzdFN0eWxlSW1hZ2Uu
Z2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZUluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKaW5kZXggN2U5YzYwZS4uZWNjZTlhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5oCkBAIC0zMSw2ICszMSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoQ1VTVE9NX1BS
T1BFUlRJRVMpCisjaW5jbHVkZSAiRGF0YVJlZi5oIgorI2luY2x1ZGUgIlN0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQog
I2luY2x1ZGUgIlRleHRTaXplQWRqdXN0bWVudC5oIgogI2VuZGlmCkBAIC0xNTcsNiArMTYyLDEw
IEBAIHB1YmxpYzoKICAgICBDb2xvciB0YXBIaWdobGlnaHRDb2xvcjsKICNlbmRpZgogCisjaWYg
RU5BQkxFKENVU1RPTV9QUk9QRVJUSUVTKQorICAgIERhdGFSZWY8U3R5bGVDdXN0b21Qcm9wZXJ0
eURhdGE+IG1fY3VzdG9tUHJvcGVydGllczsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFN0eWxl
UmFyZUluaGVyaXRlZERhdGEoKTsKICAgICBTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0
eWxlUmFyZUluaGVyaXRlZERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggMGNlMTczYi4uYWYz
ZjA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTY2LDYgKzY2LDcgQEAgRU5BQkxFX0NTUzNfQ09O
RElUSU9OQUxfUlVMRVMgPSA7CiBFTkFCTEVfQ1NTM19URVhUID0gOwogRU5BQkxFX0NTUzNfVEVY
VF9MSU5FX0JSRUFLID0gOwogRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZID0gRU5BQkxFX0NVUlNP
Ul9WSVNJQklMSVRZOworRU5BQkxFX0NVU1RPTV9QUk9QRVJUSUVTID0gOwogRU5BQkxFX0NVU1RP
TV9TQ0hFTUVfSEFORExFUiA9IDsKIEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCA9ICQoRU5BQkxF
X0RBU0hCT0FSRF9TVVBQT1JUXyQoUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0RBU0hCT0FSRF9T
VVBQT1JUX21hY29zeCA9IEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVDsKQEAgLTIyMiw0ICsyMjMs
NCBAQCBFTkFCTEVfRlRMX0pJVF9tYWNvc3hfMTAxMDAwID0gRU5BQkxFX0ZUTF9KSVQ7CiAKIEVO
QUJMRV9MTElOVF9DX0xPT1AgPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JF
TkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVS
QVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVf
QkxPQikgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkg
JChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVf
Q1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxF
X0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0dSSURf
TEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFH
RV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQVBFUykg
JChFTkFCTEVfQ1NTX1NIQVBFX0lOU0lERSkgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikg
JChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAkKEVOQUJMRV9D
U1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNf
VEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VT
VE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVf
REFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVf
REVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RP
TTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRk9OVF9MT0FE
X0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5B
QkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElO
RykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5B
QkxFX0lNQUdFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9J
TkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9S
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVf
REFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5B
QkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9J
TlNQRUNUT1IpICQoRU5BQkxFX0lPU19BSVJQTEFZKSAkKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0la
SU5HKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZ
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxF
X0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BS
RUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkg
JChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJM
RV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1ND
QUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUERGS0lUX1BMVUdJ
TikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTykgJChFTkFCTEVfUFJPR1JFU1NfRUxF
TUVOVCkgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5B
QkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNP
TFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NI
QVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFU
QUJBU0UpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykg
JChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikg
JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVO
QUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVf
VVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChF
TkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9B
TklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5B
QkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9YSFJfVElNRU9V
VCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfTExJTlRfQ19MT09Q
KSAkKEZFQVRVUkVfREVGSU5FU18kKFBMQVRGT1JNX05BTUUpKTsKK0ZFQVRVUkVfREVGSU5FUyA9
ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAk
KEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBU
SU9OUykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJM
RV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01F
U1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9C
UkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBU
QVRJT04pICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChF
TkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQo
RU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFC
TEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTX1NIQVBFX0lOU0lERSkgJChFTkFCTEVfQ1NTX1NU
SUNLWV9QT1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJ
WEVEKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQp
ICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElU
WSkgJChFTkFCTEVfQ1VTVE9NX1BST1BFUlRJRVMpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFO
RExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1F
TlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVO
VCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05T
VFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVE
SUFfVjIpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5B
QkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElP
TikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJ
R0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9DT05U
Uk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5B
QkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxF
X0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
VElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5TUEVDVE9SKSAkKEVO
QUJMRV9JT1NfQUlSUExBWSkgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVf
TEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FV
RElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFC
TEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElB
X1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVO
VCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVf
TkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxF
X1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BM
VUdJTl9QUk9YWV9GT1JfVklERU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxF
X1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VG
RklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFN
RSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9R
VUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykg
JChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJM
RV9TVUJQSVhFTF9MQVlPVVQpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19G
T05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFTVBM
QVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZF
TlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxM
KSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJRVdfTU9E
RV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChF
TkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09DS0VU
UykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hT
TFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0xMSU5UX0NfTE9PUCkgJChGRUFUVVJFX0RF
RklORVNfJChQTEFURk9STV9OQU1FKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDBjZTE3M2IuLmFmM2YwODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCkBAIC02Niw2ICs2Niw3IEBAIEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JV
TEVTID0gOwogRU5BQkxFX0NTUzNfVEVYVCA9IDsKIEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVB
SyA9IDsKIEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSA9IEVOQUJMRV9DVVJTT1JfVklTSUJJTElU
WTsKK0VOQUJMRV9DVVNUT01fUFJPUEVSVElFUyA9IDsKIEVOQUJMRV9DVVNUT01fU0NIRU1FX0hB
TkRMRVIgPSA7CiBFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQgPSAkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVF8kKFBMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVF9tYWNv
c3ggPSBFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQ7CkBAIC0yMjIsNCArMjIzLDQgQEAgRU5BQkxF
X0ZUTF9KSVRfbWFjb3N4XzEwMTAwMCA9IEVOQUJMRV9GVExfSklUOwogCiBFTkFCTEVfTExJTlRf
Q19MT09QID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQo
RU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZM
T1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0JMT0IpICQoRU5B
QkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NB
TlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhU
KSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJ
VElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhDTFVT
SU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChF
TkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElP
TikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NT
U19TSEFQRV9JTlNJREUpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NT
U19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkgJChFTkFCTEVfQ1NTM19DT05ESVRJ
T05BTF9SVUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9C
UkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVf
SEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VM
RU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxF
TUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VWRU5UU19D
T05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURf
TUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQo
RU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NB
VElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxF
X0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9D
T05UUk9MUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ESUVfVUkpICQo
RU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9E
QVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5TUEVDVE9SKSAk
KEVOQUJMRV9JT1NfQUlSUExBWSkgJChFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORykgJChFTkFC
TEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJ
T05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VC
X0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChF
TkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01F
RElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxF
TUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFC
TEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxF
X1BMVUdJTl9QUk9YWV9GT1JfVklERU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5B
QkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNf
U1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9G
UkFNRSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJ
QV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFSRURfV09SS0VS
UykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVO
QUJMRV9TVUJQSVhFTF9MQVlPVVQpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NW
R19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RF
TVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hf
RVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1Rf
QUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJRVdf
TU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykg
JChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfU09D
S0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxF
X1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0xMSU5UX0NfTE9PUCkgJChGRUFUVVJF
X0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8z
RF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUND
RUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5B
QkxFX0JMT0IpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BB
VEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQo
RU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5B
QkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVO
QUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19H
UklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1Nf
SU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFQ
RVMpICQoRU5BQkxFX0NTU19TSEFQRV9JTlNJREUpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJ
T04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkgJChFTkFC
TEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9D
U1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxF
X0NVU1RPTV9QUk9QRVJUSUVTKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5B
QkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJM
RV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxF
X0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQo
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVO
QUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NS
RUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxF
X0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5W
QVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfQ09OVFJPTFMpICQoRU5B
QkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9T
UEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09M
T1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOU1BFQ1RPUikgJChFTkFCTEVfSU9TX0FJ
UlBMQVkpICQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0xFR0FDWV9DU1Nf
VkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVf
TEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFC
TEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkg
JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQo
RU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxF
X01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9D
T05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lC
SUxJVFlfQVBJKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QTFVHSU5fUFJPWFlf
Rk9SX1ZJREVPKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9QUk9NSVNFUykg
JChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAk
KEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxF
X1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5B
QkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NQ
RUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1VCUElYRUxf
TEFZT1VUKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5B
QkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5U
KSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFC
TEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVf
VklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElB
KSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9B
VURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxF
X1dFQl9USU1JTkcpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJM
RV9GVExfSklUKSAkKEVOQUJMRV9MTElOVF9DX0xPT1ApICQoRkVBVFVSRV9ERUZJTkVTXyQoUExB
VEZPUk1fTkFNRSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlY29uZmlnLmguY21ha2UgYi9T
b3VyY2UvY21ha2Vjb25maWcuaC5jbWFrZQppbmRleCBiMzgyMTRjLi45M2ZkMzg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2Vjb25maWcuaC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Vjb25maWcu
aC5jbWFrZQpAQCAtMzEsNiArMzEsNyBAQAogI2NtYWtlZGVmaW5lMDEgRU5BQkxFX0NTU19TVElD
S1lfUE9TSVRJT04KICNjbWFrZWRlZmluZTAxIEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJ
T05TX1VOUFJFRklYRUQKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JV
TEVTCisjY21ha2VkZWZpbmUwMSBFTkFCTEVfQ1VTVE9NX1BST1BFUlRJRVMKICNjbWFrZWRlZmlu
ZTAxIEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9E
QVRBTElTVF9FTEVNRU5UCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVN
Uwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235381</attachid>
            <date>2014-07-23 14:43:43 -0700</date>
            <delta_ts>2015-09-23 16:22:40 -0700</delta_ts>
            <desc>Patch r? for feedback</desc>
            <filename>july23.up.patch</filename>
            <type>text/plain</type>
            <size>72432</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxODgyNWM5Li4xZWM1NGRm
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTQtMDctMjMgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQ3VzdG9tIFByb3BlcnR5IGltcGxlbWVudGF0aW9uIHcvbyB2YXIoKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzk3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9u
c0VmbC5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZToKKyAg
ICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6CisgICAgICAgICogU291
cmNlL2NtYWtlY29uZmlnLmguY21ha2U6CisKIDIwMTQtMDctMjMgIEJlbSBKb25lcy1CZXkgIDxi
am9uZXNiZUBhZG9iZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENTU19FWENMVVNJT05TIGNvbXBp
bGUgZmxhZyBhbmQgbGVmdG92ZXIgY29kZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU1NDNkMTYuLmQ1MjQ0YmMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxNC0wNy0yMyAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBDdXN0b20gUHJvcGVydHkgaW1wbGVtZW50YXRpb24gdy9vIHZh
cigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAz
OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvY3NzL2N1c3RvbXByb3BlcnRpZXMvZGVmaW5pbmctY3VzdG9tLXByb3BlcnRpZXMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jdXN0b21wcm9wZXJ0aWVzL2RlZmlu
aW5nLWN1c3RvbS1wcm9wZXJ0aWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTQtMDctMjMgIEJlbSBKb25lcy1CZXkgIDxiam9uZXNiZUBhZG9iZS5jb20+
CiAKICAgICAgICAgRW5zdXJlIHdlIGNvbXB1dGUgdGhlIG1pbiBhbmQgbWF4IGhlaWdodCBvZiBy
ZXBsYWNlZCBlbGVtZW50cyB0byAnbm9uZScgb3IgMCB3aGVuIGFwcHJvcHJpYXRlLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggYmVmM2FiOS4uNmE0MGYxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
MzIsMyArMTMyLDUgQEAgd2Via2l0Lm9yZy9iLzEzNDc2OSBmYXN0L2RvbS9IVE1MSW1hZ2VFbGVt
ZW50L3NpemVzL2ltYWdlLXNpemVzLWpzLWNoYW5nZS5odG1sIFsKIAogd2Via2l0Lm9yZy9iLzEy
ODczNiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1kZmcuaHRtbCBb
IEZhaWx1cmUgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTM0OTgyIGluc3BlY3Rvci1wcm90b2NvbC9k
ZWJ1Z2dlci9zZXRCcmVha3BvaW50LWRmZy1hbmQtbW9kaWZ5LWxvY2FsLmh0bWwgWyBGYWlsdXJl
IFBhc3MgXQorCit3ZWJraXQub3JnL2IvMTMwMzk3IGZhc3QvY3NzL2N1c3RvbXByb3BlcnRpZXMg
WyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbXByb3BlcnRp
ZXMvZGVmaW5pbmctY3VzdG9tLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvY3VzdG9tcHJvcGVydGllcy9kZWZpbmluZy1jdXN0b20tcHJvcGVydGllcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM4MzEzMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbXByb3BlcnRpZXMvZGVm
aW5pbmctY3VzdG9tLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rl
c3RpbmcgcGFyc2luZyBvZiB0aGUgQ1NTIEN1c3RvbSBQcm9wZXJ0aWVzLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBUZXN0aW5nIGN1c3RvbSBwcm9wZXJ0eTogLS1jdXN0
b206IHByb3BlcnR5VmFsdWUKK1BBU1MgVGVzdGluZyBjdXN0b20gcHJvcGVydHk6IC0tZm9vOiBi
YXIKK1BBU1MgVGVzdGluZyBjdXN0b20gcHJvcGVydHk6IC0tZm9vOiBncmVlbgorUEFTUyBUZXN0
aW5nIGludmFsaWQgY3VzdG9tIHByb3BlcnR5OiAtY3VzdG9tOiBwcm9wZXJ0eVZhbHVlCitQQVNT
IFRlc3RpbmcgaW52YWxpZCBjdXN0b20gcHJvcGVydHk6IC0tLWN1c3RvbTogcHJvcGVydHlWYWx1
ZQorUEFTUyBUZXN0aW5nIGludmFsaWQgY3VzdG9tIHByb3BlcnR5OiBmb286IGJhcgorUEFTUyBU
ZXN0aW5nIGludmFsaWQgY3VzdG9tIHByb3BlcnR5OiBmb286CitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvY3VzdG9tcHJvcGVydGllcy9kZWZpbmluZy1jdXN0b20tcHJvcGVydGllcy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tcHJvcGVydGllcy9kZWZpbmluZy1jdXN0b20t
cHJvcGVydGllcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMmY5
M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b21wcm9wZXJ0
aWVzL2RlZmluaW5nLWN1c3RvbS1wcm9wZXJ0aWVzLmh0bWwKQEAgLTAsMCArMSw2NCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbignVGVzdGluZyBwYXJzaW5nIG9mIHRoZSBDU1MgQ3VzdG9tIFByb3BlcnRp
ZXMuJyk7CisKK3ZhciB2YWxpZEN1c3RvbVByb3BlcnRpZXMgPSBbCisgICAgIi0tY3VzdG9tOiBw
cm9wZXJ0eVZhbHVlIiwKKyAgICAiLS1mb286IGJhciIsCisgICAgIi0tZm9vOiBncmVlbiIKK107
CisKK3ZhciBpblZhbGlkQ3VzdG9tUHJvcGVydGllcyA9IFsKKyAgICAiLWN1c3RvbTogcHJvcGVy
dHlWYWx1ZSIsCisgICAgIi0tLWN1c3RvbTogcHJvcGVydHlWYWx1ZSIsCisgICAgImZvbzogYmFy
IiwKKyAgICAiZm9vOiIKK107CisKK2Z1bmN0aW9uIGdldENTU1RleHQoY3VzdG9tUHJvcGVydHlE
ZWZpbml0aW9uKQoreworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgZWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gY3VzdG9tUHJvcGVydHlEZWZpbml0
aW9uOworICAgIHJldHVybiBlbGVtZW50LnN0eWxlLmNzc1RleHQ7Cit9CisKK2Z1bmN0aW9uIGlz
U3RyaW5nRXF1YWwoYSwgYikKK3sKKyAgICBpZiAodHlwZW9mIGEgIT0gInN0cmluZyIgfHwgdHlw
ZW9mIGIgIT0gInN0cmluZyIpCisgICAgICAgIGRlYnVnKCJXQVJOOiBpc1N0cmluZ0VxdWFsKCkg
ZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRzIik7CisgICAgcmV0dXJuIGEgPT0gYjsKK30KKworZnVu
Y3Rpb24gdGVzdEN1c3RvbVByb3BlcnR5KGN1c3RvbVByb3BlcnR5RGVmaW5pdGlvbiwgZXhwZWN0
ZWRWYWx1ZSwgZGVzY3JpcHRpb24pCit7CisgICAgaWYgKGlzU3RyaW5nRXF1YWwoY3VzdG9tUHJv
cGVydHlEZWZpbml0aW9uLCBleHBlY3RlZFZhbHVlKSkKKyAgICAgICAgdGVzdFBhc3NlZChkZXNj
cmlwdGlvbik7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKGRlc2NyaXB0aW9uICsgIiBF
WFBFQ1RFRDogIiArIGV4cGVjdGVkVmFsdWUgKyAiIFdBUzogIiArIGN1c3RvbVByb3BlcnR5RGVm
aW5pdGlvbik7Cit9CisKK3ZhbGlkQ3VzdG9tUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uKHZh
bHVlLCBpLCBhKSB7CisgICAgdmFyIGN1c3RvbVByb3BlcnR5VGV4dCA9IHZhbHVlOworICAgIHZh
ciBjdXN0b21Qcm9wZXJ0eUNTU1RleHQgPSBnZXRDU1NUZXh0KGN1c3RvbVByb3BlcnR5VGV4dCk7
CisgICAgdmFyIGV4cGVjdGVkVmFsdWUgPSB2YWx1ZSArICI7IjsKKyAgICB2YXIgZGVzY3JpcHRp
b24gPSAiVGVzdGluZyBjdXN0b20gcHJvcGVydHk6ICIgKyBjdXN0b21Qcm9wZXJ0eVRleHQ7Cisg
ICAgdGVzdEN1c3RvbVByb3BlcnR5KGN1c3RvbVByb3BlcnR5Q1NTVGV4dCwgZXhwZWN0ZWRWYWx1
ZSwgZGVzY3JpcHRpb24pOworfSk7CisKK2luVmFsaWRDdXN0b21Qcm9wZXJ0aWVzLmZvckVhY2go
ZnVuY3Rpb24odmFsdWUsIGksIGEpIHsKKyAgICB2YXIgY3VzdG9tUHJvcGVydHlDU1NUZXh0ID0g
Z2V0Q1NTVGV4dCh2YWx1ZSk7CisgICAgdmFyIGRlc2NyaXB0aW9uID0gIlRlc3RpbmcgaW52YWxp
ZCBjdXN0b20gcHJvcGVydHk6ICIgKyB2YWx1ZTsKKyAgICB0ZXN0Q3VzdG9tUHJvcGVydHkoY3Vz
dG9tUHJvcGVydHlDU1NUZXh0LCAiIiwgZGVzY3JpcHRpb24pOworfSk7CisKK2lzU3VjY2Vzc2Z1
bGx5UGFyc2VkKCk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNmI3MTI2MC4uMWIyZGFjNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDctMjMgIFpvbHRhbiBIb3J2
YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ3VzdG9tIFByb3BlcnR5IGltcGxl
bWVudGF0aW9uIHcvbyB2YXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTMwMzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwog
MjAxNC0wNy0yMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBCdWlsZCBmaXggYWZ0ZXIgcjE3MTQ4Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCAx
N2M5MTBhLi44MDA4NWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC02Miw2ICs2Miw3
IEBAIEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTID0gRU5BQkxFX0NTUzNfQ09ORElUSU9O
QUxfUlVMRVM7CiBFTkFCTEVfQ1NTM19URVhUID0gOwogRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JS
RUFLID0gOwogRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZID0gRU5BQkxFX0NVUlNPUl9WSVNJQklM
SVRZOworRU5BQkxFX0NVU1RPTV9QUk9QRVJUSUVTID0gOwogRU5BQkxFX0NVU1RPTV9TQ0hFTUVf
SEFORExFUiA9IDsKIEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCA9ICQoRU5BQkxFX0RBU0hCT0FS
RF9TVVBQT1JUXyQoUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUX21h
Y29zeCA9IEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVDsKQEAgLTI0OCw0ICsyNDksNCBAQCBFTkFC
TEVfRlRMX0pJVF9pcGhvbmVzaW11bGF0b3IgPSA7CiAKIEVOQUJMRV9MTElOVF9DX0xPT1AgPSA7
CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUND
RUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJ
TkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAk
KEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JB
VElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNF
X0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlP
VVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JF
U09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVO
QUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VOUFJFRklYRUQpICQoRU5BQkxFX0NTUzNf
Q09ORElUSU9OQUxfUlVMRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhU
X0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01f
U0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRB
TElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRB
SUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9NNF9F
VkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5D
UllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GT05UX0xPQURfRVZF
TlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVf
R0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVO
X1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9J
TkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQo
RU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5Q
VVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQo
RU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05U
SCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQo
RU5BQkxFX0lOU1BFQ1RPUikgJChFTkFCTEVfSU9TX0FJUlBMQVkpICQoRU5BQkxFX0lPU19URVhU
X0FVVE9TSVpJTkcpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJM
RV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykg
JChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxF
X0xJTktfTE9OR19QUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1M
KSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkg
JChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFC
TEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9S
X0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJM
RV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVS
X0xPQ0spICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVO
QUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVT
T0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9T
SEFSRURfV09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RB
VEFCQVNFKSAkKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8p
ICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04p
ICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChF
TkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxF
X1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQo
RU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5B
QkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5B
QkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9QSUNUVVJFX1NJWkVTKSAkKEVOQUJMRV9XRUJfVElN
SU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5B
QkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0xMSU5UX0NfTE9PUCkgJChGRUFU
VVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJM
RV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVf
QUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQo
RU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxF
X0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9O
RVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01Q
T1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRklM
VEVSUykgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9O
UykgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9O
U19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9D
U1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1Jf
VklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1BST1BFUlRJRVMpICQoRU5BQkxFX0NVU1RPTV9T
Q0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFM
SVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJ
TFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VW
RU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNS
WVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVO
VFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9H
QU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5f
UEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVO
QUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChF
TkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChF
TkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRI
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChF
TkFCTEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9JT1NfQUlSUExBWSkgJChFTkFCTEVfSU9TX1RFWFRf
QVVUT1NJWklORykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxF
X0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAk
KEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVf
TElOS19MT05HX1BSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJM
RV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1Jf
Q09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxF
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJf
TE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5B
QkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNP
TFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NI
QVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFU
QUJBU0UpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykg
JChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikg
JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVO
QUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVf
VVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChF
TkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFC
TEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFC
TEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1BJQ1RVUkVfU0laRVMpICQoRU5BQkxFX1dFQl9USU1J
TkcpICQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFC
TEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfTExJTlRfQ19MT09QKSAkKEZFQVRV
UkVfREVGSU5FU18kKFBMQVRGT1JNX05BTUUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDMzYmQxOC4uNTI2Njk0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAxNC0wNy0yMyAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBDdXN0b20gUHJvcGVydHkgaW1wbGVtZW50YXRpb24gdy9vIHZh
cigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAz
OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9GZWF0dXJlRGVmaW5lcy5oOgorCiAyMDE0LTA3LTIzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVzZSBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IG9uIFdpbmRvd3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5o
IGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAppbmRleCBjZWY3YjZmLi41NWE5NjM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTQwNCw2ICs0MDQsMTAgQEAKICNkZWZpbmUg
RU5BQkxFX0NVUlNPUl9TVVBQT1JUIDEKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0NV
U1RPTV9QUk9QRVJUSUVTKQorI2RlZmluZSBFTkFCTEVfQ1VTVE9NX1BST1BFUlRJRVMgMAorI2Vu
ZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKQogI2RlZmlu
ZSBFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU5
NWU4OGUuLmUxOTRmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxNC0wNy0yMyAg
Wm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBDdXN0b20gUHJv
cGVydHkgaW1wbGVtZW50YXRpb24gdy9vIHZhcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBcyBhIGZpcnN0IHN0ZXAgb2YgdGhlIEN1c3RvbSBQcm9w
ZXJ0aWVzIGltcGxlbWVudGF0aW9uMiwgdGhpcyBwYXRjaCBhZGRzCisgICAgICAgIHN1cHBvcnQg
Zm9yIGRlZmluaW5nIENTUyBDdXN0b20gUHJvcGVydGllcyBbMV0gd2l0aG91dCBhZGRpbmcgc3Vw
cG9ydAorICAgICAgICBmb3IgdXNpbmcgaXQgYXMgdmFsdWVzIGZvciBvdGhlciBDU1MgcHJvcGVy
dGllcy4KKyAgICAgICAgVGhlIGZlYXR1cmUgYW5kIHRoZSB0ZXN0cyBhcmUgZGlzYWJsZWQgYnkg
ZGVmYXVsdCwgeW91IG5lZWQgdG8gdXNlCisgICAgICAgIC0tY3VzdG9tLXByb3BlcnRpZXMgYXJn
dW1lbnQgZm9yIGJ1aWxkaW5nLCAtLWZvcmNlIGFyZ3VtZW50IGZvciB0ZXN0aW5nIGl0LgorCisg
ICAgICAgIFsxXSBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtdmFyaWFibGVzLworCisgICAg
ICAgIFRlc3Q6IGZhc3QvY3NzL2N1c3RvbXByb3BlcnRpZXMvZGVmaW5pbmctY3VzdG9tLXByb3Bl
cnRpZXMuaHRtbAorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWc6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6CisgICAgICAgICog
Y3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6c3RvcmVDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBj
c3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3Bl
cnR5VmFsdWU6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFs
dWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgor
ICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyUHJv
cGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1
ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6ZGVzdHJveSk6CisgICAg
ICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNDdXN0
b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6YXNUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUHJvcGVydGllczo6UHJvcGVydHlSZWZlcmVuY2U6OmNzc05hbWUpOgorICAgICAg
ICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpjb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpvcGVyYXRvciE9KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpzZXRDdXN0b21Qcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6U3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJl
SW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZUluaGVyaXRlZERhdGEuaDoKKwogMjAxNC0wNy0yMyAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENvbXBpbGUgd2luZG93LWluYWN0
aXZlIGFuZCBmdWxsc2NyZWVuIHBzZXVkb2NsYXNzZXMgaW4gY3NzIHNlbGVjdG9ycy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKaW5kZXggMTdjOTEwYS4uODAwODVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTYyLDYgKzYyLDcgQEAg
RU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMgPSBFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9S
VUxFUzsKIEVOQUJMRV9DU1MzX1RFWFQgPSA7CiBFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUsg
PSA7CiBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkgPSBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFk7
CitFTkFCTEVfQ1VTVE9NX1BST1BFUlRJRVMgPSA7CiBFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5E
TEVSID0gOwogRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUID0gJChFTkFCTEVfREFTSEJPQVJEX1NV
UFBPUlRfJChQTEFURk9STV9OQU1FKSk7CiBFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlRfbWFjb3N4
ID0gRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUOwpAQCAtMjQ4LDQgKzI0OSw0IEBAIEVOQUJMRV9G
VExfSklUX2lwaG9uZXNpbXVsYXRvciA9IDsKIAogRU5BQkxFX0xMSU5UX0NfTE9PUCA9IDsKIAot
RkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVS
QVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykg
JChFTkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5B
QkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9O
X0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURB
UFRBVElPTikgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkg
JChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xV
VElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxF
X0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkgJChFTkFCTEVfQ1NTM19DT05E
SVRJT05BTF9SVUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElO
RV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hF
TUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNU
X0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNf
RUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VWRU5U
U19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBU
RURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMp
ICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1F
UEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFH
RV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFC
TEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFC
TEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9JT1NfQUlSUExBWSkgJChFTkFCTEVfSU9TX1RFWFRfQVVU
T1NJWklORykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
R0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVO
QUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElO
S19MT05HX1BSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQo
RU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVO
QUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9N
SFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09O
VEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9D
SykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxF
X1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVU
SU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQVJF
RF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJB
U0UpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChF
TkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJM
RV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNF
UlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFC
TEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVf
V0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVf
V0VCX1NPQ0tFVFMpICQoRU5BQkxFX1BJQ1RVUkVfU0laRVMpICQoRU5BQkxFX1dFQl9USU1JTkcp
ICQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVf
WFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfTExJTlRfQ19MT09QKSAkKEZFQVRVUkVf
REVGSU5FU18kKFBMQVRGT1JNX05BTUUpKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNE
X1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NF
TEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFC
TEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FO
VkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lU
SU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19GSUxURVJT
KSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElP
TikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAk
KEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VO
UFJFRklYRUQpICQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpICQoRU5BQkxFX0NTUzNf
VEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJ
QklMSVRZKSAkKEVOQUJMRV9DVVNUT01fUFJPUEVSVElFUykgJChFTkFCTEVfQ1VTVE9NX1NDSEVN
RV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1Rf
RUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19F
TEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTTRfRVZFTlRT
X0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMikgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykg
JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dBTUVQ
QURfREVQUkVDQVRFRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdF
X0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxF
X0lDT05EQVRBQkFTRSkgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJM
RV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQo
RU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJM
RV9JTlNQRUNUT1IpICQoRU5BQkxFX0lPU19BSVJQTEFZKSAkKEVOQUJMRV9JT1NfVEVYVF9BVVRP
U0laSU5HKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5B
QkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5L
X0xPTkdfUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChF
TkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5B
QkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01I
VE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05U
RU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSkgJChFTkFCTEVfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NL
KSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVf
UFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJ
T05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBUkVE
X1dPUktFUlMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NRTF9EQVRBQkFT
RSkgJChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVO
QUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVO
QUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxF
X1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VS
U0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJM
RV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9X
RUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9X
RUJfU09DS0VUUykgJChFTkFCTEVfUElDVFVSRV9TSVpFUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9Y
U0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9MTElOVF9DX0xPT1ApICQoRkVBVFVSRV9E
RUZJTkVTXyQoUExBVEZPUk1fTkFNRSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVmNmM5ZmUuLmU0NTEzNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIy
MTYsNiArMjIxNiw5IEBACiAJCTY1REYzMjYxMDlEMUUxOTkwMDBCRTMyNSAvKiBVc2VyQWdlbnRT
dHlsZVNoZWV0c0RhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjU2NTgxQUYwOUQxNEVFNjAwMEU2MUQ3IC8qIFVzZXJBZ2VudFN0eWxlU2hlZXRz
RGF0YS5jcHAgKi87IH07CiAJCTY1RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBw
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTBF
OTQzMTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIg
LyogUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgKi87IH07CisJCTY3ODgzRDAw
MTk3NkQ2QkMwMDJBRUNBQiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY3ODgzQ0ZFMTk3NkQ2QkMwMDJB
RUNBQiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcCAqLzsgfTsKKwkJNjc4ODNEMDExOTc2
RDZCQzAwMkFFQ0FCIC8qIENTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY3ODgzQ0ZGMTk3NkQ2QkMwMDJBRUNBQiAv
KiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmggKi87IH07CisJCTY3ODgzRDAzMTk3NkQ3MjUwMDJB
RUNBQiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjc4ODNEMDIxOTc2RDcyNTAwMkFFQ0FCIC8qIFN0eWxl
Q3VzdG9tUHJvcGVydHlEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNkIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIE5hdGl2ZUltYWdlUHRy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjM0ODA5
MjBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NUE5NkNDRUU1MEM4Qzk0NkMg
LyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8qIENh
Y2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NkE5NkNDRUU1MEM4Qzk0NkMgLyogQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgKi87IH07CkBAIC05MzQ2LDYgKzkzNDksOSBA
QAogCQk2NUUwRTk0MzExMzNDODlGMDBCNENCMTAgLyogSlNET01XcmFwcGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogQmxvY2tFeGNlcHRpb25z
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQmxvY2tFeGNlcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBh
Z2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Nzg4M0NGRTE5NzZENkJDMDAyQUVDQUIgLyog
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNjc4ODNDRkYxOTc2RDZCQzAwMkFFQ0FCIC8qIENTU0N1c3RvbVByb3BlcnR5VmFs
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Nzg4M0QwMjE5NzZENzI1MDAy
QUVDQUIgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaDsgcGF0aCA9IHN0eWxlL1N0eWxl
Q3VzdG9tUHJvcGVydHlEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCMzQ4
MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZVB0ci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVz
dEluaXRpYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJl
c291cmNlUmVxdWVzdEluaXRpYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkM2Mzg4OTRBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJlc291
cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjA5ODksNiArMjA5OTUsNyBAQAogCQlCQzhDOEZBQTBERENEMkYyMDBCNTkyRjQgLyogc3R5bGUg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTY3ODgzRDAy
MTk3NkQ3MjUwMDJBRUNBQiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oICovLAogCQkJCUZC
RDZBRjgyMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8sCiAJCQkJRkJENkFG
ODMxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8sCiAJCQkJQkM1RUI1RTAwRTgx
QkU4NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEuaCAqLywKQEAgLTIxOTQzLDYgKzIxOTUwLDggQEAK
IAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNjc4ODNDRkUxOTc2RDZCQzAwMkFFQ0FCIC8qIENT
U0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwICovLAorCQkJCTY3ODgzQ0ZGMTk3NkQ2QkMwMDJBRUNB
QiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmggKi8sCiAJCQkJQ0Q3REJCMjYxOENBMTFGRjAw
QzExMDY2IC8qIENTU0dyaWRMaW5lTmFtZXNWYWx1ZS5jcHAgKi8sCiAJCQkJQ0Q3REJCMjcxOENB
MTFGRjAwQzExMDY2IC8qIENTU0dyaWRMaW5lTmFtZXNWYWx1ZS5oICovLAogCQkJCUZCRDZBRjg0
MTVFRjIxRDQwMDhCNzExMCAvKiBCYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCAqLywKQEAgLTIzODA0
LDYgKzIzODEzLDcgQEAKIAkJCQk4NTAzMkRENzBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTQ2hh
cnNldFJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTA5Q0RDMEFDQzdBN0UwMERGMDFGMSAv
KiBET01DU1NDaGFyc2V0UnVsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMkRE
OTBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTRm9udEZhY2VSdWxlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk2Nzg4M0QwMzE5NzZENzI1MDAyQUVDQUIgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTA5Q0REMEFDQzdBN0UwMERGMDFGMSAvKiBET01DU1NG
b250RmFjZVJ1bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzJEREIwQUE4QzlC
RTAwN0QzQjdEIC8qIERPTUNTU0ltcG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTA5
Q0RFMEFDQzdBN0UwMERGMDFGMSAvKiBET01DU1NJbXBvcnRSdWxlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjQ3MzMsNiArMjQ3NDMsNyBAQAogCQkJCUE5RDI0ODA3MEQ3NTdFN0QwMEZE
Rjk1OSAvKiBKU0RPTU1pbWVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQyNDgwOTBENzU3
RTdEMDBGREY5NTkgLyogSlNET01NaW1lVHlwZUFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MkNDQTlFMzE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQk2Nzg4M0QwMTE5NzZENkJDMDAyQUVDQUIgLyogQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRTUzRTAwQThEMTg4MTAwMjI5NDdE
IC8qIEpTRE9NUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQjkxMzkyQTE2QUU0RkMwMDAx
RkU2ODIgLyogSlNET01QYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQyNDdGRjBENzU3RTY5
MDBGREY5NTkgLyogSlNET01QbHVnaW4uaCBpbiBIZWFkZXJzICovLApAQCAtMjkyNjMsNiArMjky
NzQsNyBAQAogCQkJCTA3OEUwOTExMTdEMTRDRUUwMDQyMEFBMSAvKiBSVENWb2lkUmVxdWVzdElt
cGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc5QkFEQTExNjFFN0YzRjAwQzJFNjUyIC8qIFJ1
bGVGZWF0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OUJBREEzMTYxRTdGM0YwMEMyRTY1
MiAvKiBSdWxlU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY3ODgzRDAwMTk3NkQ2QkMwMDJB
RUNBQiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
NTY5RDFFMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNTY5RDIwMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX21ldGhvZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTU2OUQyMjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGQ0NDAzNmUuLjc4YTY0NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBA
IC0xNjg3LDYgKzE2ODcsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogCiAgICAgc3dpdGNo
IChwcm9wZXJ0eUlEKSB7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlJbnZhbGlkOgorICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5Q3VzdG9tOgogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45ZTE3NjE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1
c3RvbVByb3BlcnR5VmFsdWUuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgorCisjaW5jbHVkZSAiQ1NT
UGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCisjaWYgRU5B
QkxFKENVU1RPTV9QUk9QRVJUSUVTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgQ1NT
UGFyc2VyOjpzdG9yZUN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oY29uc3QgQ1NTUGFyc2VyU3Ry
aW5nJiBuYW1lLCBQYXNzT3duUHRyPENTU1BhcnNlclZhbHVlTGlzdD4gdmFsdWUpCit7CisgICAg
Ly8gV2hlbiBDU1NHcmFtbWFyLnkgZW5jb3VudGVycyBhbiBpbnZhbGlkIGRlY2xhcmF0aW9uIGl0
IHBhc3NlcyBudWxsIGZvciB0aGUgQ1NTUGFyc2VyVmFsdWVMaXN0LCBqdXN0IGJhaWwuCisgICAg
aWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIHByb3BlcnR5TmFtZSA9
IG5hbWU7CisKKyAgICBpZiAoIXByb3BlcnR5TmFtZS5zdGFydHNXaXRoKCItIikpCisgICAgICAg
IHJldHVybjsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSAxOwor
ICAgIEF0b21pY1N0cmluZyBjdXN0b21Qcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWUuc3Vic3Ry
aW5nKHByZWZpeExlbmd0aCwgcHJvcGVydHlOYW1lLmxlbmd0aCgpIC0gcHJlZml4TGVuZ3RoKTsK
KworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBz
aXplID0gdmFsdWUtPnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBpZiAoaSkKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
Y3NzVmFsdWUgPSB2YWx1ZS0+dmFsdWVBdChpKS0+Y3JlYXRlQ1NTVmFsdWUoKTsKKyAgICAgICAg
aWYgKCFjc3NWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoY3NzVmFsdWUtPmNzc1RleHQoKSk7CisgICAgfQorICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5Q3VzdG9tLCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoY3VzdG9tUHJvcGVydHlO
YW1lLCBidWlsZGVyLnRvU3RyaW5nKCkpLCBmYWxzZSk7Cit9CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi40N2NmMjBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaApAQCAtMCwwICsxLDY5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlX2gKKyNkZWZpbmUgQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZV9oCisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1BFUlRJRVMpCisKKyNpbmNsdWRlICJDU1NQ
YXJzZXJWYWx1ZXMuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAi
Q1NTVmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHZhbHVlKSk7CisgICAgfQorCisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAg
Y29uc3QgU3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIGJv
b2wgZXF1YWxzKGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX25hbWUgPT0gb3RoZXIubV9uYW1lICYmIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsg
fQorCitwcml2YXRlOgorICAgIENTU0N1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgICAgICA6IENTU1ZhbHVlKEN1c3Rv
bVByb3BlcnR5Q2xhc3MpCisgICAgICAgICwgbV9uYW1lKG5hbWUpCisgICAgICAgICwgbV92YWx1
ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fbmFtZTsK
KyAgICBjb25zdCBTdHJpbmcgbV92YWx1ZTsKK307CisKK0NTU19WQUxVRV9UWVBFX0NBU1RTKENT
U0N1c3RvbVByb3BlcnR5VmFsdWUsIGlzQ3VzdG9tUHJvcGVydHlWYWx1ZSgpKQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1BFUlRJRVMpCisj
ZW5kaWYgLy8gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eS5pbgppbmRleCA4NjkzZmVjLi4yN2Q1ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnku
aW4KQEAgLTEzODMsNyArMTM4MywxNyBAQCBkZWNsX2xpc3RfcmVjb3Zlcnk6CiAgICAgOwogCiBk
ZWNsYXJhdGlvbjoKLSAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvcml0eSB7
CisgICAgJy0nIElERU5UIG1heWJlX3NwYWNlICc6JyBtYXliZV9zcGFjZSBleHByIHByaW9yaXR5
IHsKKyNpZiBFTkFCTEVfQ1VTVE9NX1BST1BFUlRJRVMKKyAgICAgICAgcGFyc2VyLT5zdG9yZUN1
c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oJDIsIGFkb3B0UHRyKCQ2KSk7CisgICAgICAgICQkID0g
dHJ1ZTsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoJDcsIHRydWUpOworI2Vsc2UK
KyAgICAgICAgZGVsZXRlICQ2OworICAgICAgICAkJCA9IGZhbHNlOworI2VuZGlmCisgICAgIH0K
KyAgICAgfCBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvcml0eSB7CiAgICAgICAg
ICQkID0gZmFsc2U7CiAgICAgICAgIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCA9IGZhbHNlOwogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyVmFsdWVMaXN0PiBwcm9wZXJ0eVZhbHVlKCQ0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggMTI1MjY3ZS4uOWJjOTc4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDU1NDYW52
YXNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0Nyb3NzZmFkZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NGaWx0ZXJJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VS
dWxlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIgpAQCAtMTQ2OSwxNCArMTQ3
MCwyNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U291cmNlU2l6ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VT
aXplc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIHN0cgogICAgIHJldHVybiBXVEY6Om1vdmUobV9z
b3VyY2VTaXplTGlzdCk7CiB9CiAjZW5kaWYKLQorI2lmIEVOQUJMRShDVVNUT01fUFJPUEVSVElF
UykKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJvb2wgaW1wb3J0YW50LCBj
b25zdCBDU1NQYXJzZXI6OlBhcnNlZFByb3BlcnR5VmVjdG9yJiBpbnB1dCwgVmVjdG9yPENTU1By
b3BlcnR5LCAyNTY+JiBvdXRwdXQsIHNpemVfdCYgdW51c2VkRW50cmllcywgc3RkOjpiaXRzZXQ8
bnVtQ1NTUHJvcGVydGllcz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4m
IHNlZW5DdXN0b21Qcm9wZXJ0aWVzKQorI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQ
cm9wZXJ0aWVzKGJvb2wgaW1wb3J0YW50LCBjb25zdCBDU1NQYXJzZXI6OlBhcnNlZFByb3BlcnR5
VmVjdG9yJiBpbnB1dCwgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+JiBvdXRwdXQsIHNpemVfdCYg
dW51c2VkRW50cmllcywgc3RkOjpiaXRzZXQ8bnVtQ1NTUHJvcGVydGllcz4mIHNlZW5Qcm9wZXJ0
aWVzKQorI2VuZGlmCiB7CiAgICAgLy8gQWRkIHByb3BlcnRpZXMgaW4gcmV2ZXJzZSBvcmRlciBz
byB0aGF0IGhpZ2hlc3QgcHJpb3JpdHkgZGVmaW5pdGlvbnMgYXJlIHJlYWNoZWQgZmlyc3QuIER1
cGxpY2F0ZSBkZWZpbml0aW9ucyBjYW4gdGhlbiBiZSBpZ25vcmVkIHdoZW4gZm91bmQuCiAgICAg
Zm9yIChpbnQgaSA9IGlucHV0LnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIGNv
bnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9IGlucHV0W2ldOwogICAgICAgICBpZiAocHJvcGVy
dHkuaXNJbXBvcnRhbnQoKSAhPSBpbXBvcnRhbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKKyNp
ZiBFTkFCTEUoQ1VTVE9NX1BST1BFUlRJRVMpCisgICAgICAgIGlmIChwcm9wZXJ0eS5pZCgpID09
IENTU1Byb3BlcnR5Q3VzdG9tKSB7CisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUgPSB0b0NTU0N1c3RvbVByb3BlcnR5VmFsdWUocHJvcGVydHkudmFsdWUoKSktPm5hbWUoKTsK
KyAgICAgICAgICAgIGlmIChzZWVuQ3VzdG9tUHJvcGVydGllcy5jb250YWlucyhuYW1lKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHNlZW5DdXN0b21Qcm9wZXJ0aWVz
LmFkZChuYW1lKTsKKyAgICAgICAgICAgIG91dHB1dFstLXVudXNlZEVudHJpZXNdID0gcHJvcGVy
dHk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHByb3BlcnR5SURJbmRleCA9IHByb3BlcnR5LmlkKCkgLSBmaXJzdENTU1By
b3BlcnR5OwogICAgICAgICBBU1NFUlQocHJvcGVydHlJREluZGV4IDwgc2VlblByb3BlcnRpZXMu
c2l6ZSgpKTsKICAgICAgICAgaWYgKHNlZW5Qcm9wZXJ0aWVzW3Byb3BlcnR5SURJbmRleF0pCkBA
IC0xNDkzLDggKzE1MDcsMTQgQEAgUGFzc1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IENT
U1BhcnNlcjo6Y3JlYXRlU3R5bGVQcm9wZXJ0aWVzKCkKICAgICBWZWN0b3I8Q1NTUHJvcGVydHks
IDI1Nj4gcmVzdWx0cyh1bnVzZWRFbnRyaWVzKTsKIAogICAgIC8vIEltcG9ydGFudCBwcm9wZXJ0
aWVzIGhhdmUgaGlnaGVyIHByaW9yaXR5LCBzbyBhZGQgdGhlbSBmaXJzdC4gRHVwbGljYXRlIGRl
ZmluaXRpb25zIGNhbiB0aGVuIGJlIGlnbm9yZWQgd2hlbiBmb3VuZC4KKyNpZiBFTkFCTEUoQ1VT
VE9NX1BST1BFUlRJRVMpCisgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHNlZW5DdXN0b21Qcm9w
ZXJ0aWVzOworICAgIGZpbHRlclByb3BlcnRpZXModHJ1ZSwgbV9wYXJzZWRQcm9wZXJ0aWVzLCBy
ZXN1bHRzLCB1bnVzZWRFbnRyaWVzLCBzZWVuUHJvcGVydGllcywgc2VlbkN1c3RvbVByb3BlcnRp
ZXMpOworICAgIGZpbHRlclByb3BlcnRpZXMoZmFsc2UsIG1fcGFyc2VkUHJvcGVydGllcywgcmVz
dWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRpZXMsIHNlZW5DdXN0b21Qcm9wZXJ0aWVz
KTsKKyNlbHNlCiAgICAgZmlsdGVyUHJvcGVydGllcyh0cnVlLCBtX3BhcnNlZFByb3BlcnRpZXMs
IHJlc3VsdHMsIHVudXNlZEVudHJpZXMsIHNlZW5Qcm9wZXJ0aWVzKTsKICAgICBmaWx0ZXJQcm9w
ZXJ0aWVzKGZhbHNlLCBtX3BhcnNlZFByb3BlcnRpZXMsIHJlc3VsdHMsIHVudXNlZEVudHJpZXMs
IHNlZW5Qcm9wZXJ0aWVzKTsKKyNlbmRpZgogICAgIGlmICh1bnVzZWRFbnRyaWVzKQogICAgICAg
ICByZXN1bHRzLnJlbW92ZSgwLCB1bnVzZWRFbnRyaWVzKTsKIApAQCAtMjkzMSw2ICsyOTUxLDkg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUNhcHRpb25TaWRlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVhcjoKKyNpZiBFTkFC
TEUoQ1VTVE9NX1BST1BFUlRJRVMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eUN1c3RvbToKKyNlbmRp
ZgogICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246CiAgICAgY2FzZSBDU1NQcm9wZXJ0eURp
c3BsYXk6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKaW5kZXggYWVkOTM3NC4uZDk4MmFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMTE3
LDcgKzExNywxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBwYXJzZUNvbnRlbnQoQ1NTUHJvcGVydHlJ
RCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VRdW90ZXMoQ1NTUHJvcGVydHlJRCwg
Ym9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VBbHQoQ1NTUHJvcGVydHlJRCwgYm9vbCBp
bXBvcnRhbnQpOwotICAgIAorCisjaWYgRU5BQkxFKENVU1RPTV9QUk9QRVJUSUVTKQorICAgIHZv
aWQgc3RvcmVDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKGNvbnN0IENTU1BhcnNlclN0cmluZyYs
IFBhc3NPd25QdHI8Q1NTUGFyc2VyVmFsdWVMaXN0Pik7CisjZW5kaWYKKwogICAgIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IHBhcnNlQXR0cihDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MpOwogCiAgICAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VCYWNrZ3JvdW5kQ29sb3IoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwCmluZGV4IDQ2YjA4N2YuLjc4MjZiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNTU0NhbnZhc1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiQ1NTQ3Jvc3NmYWRlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgi
CisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZpbHRl
ckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250RmFjZVNyY1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgpAQCAtMTY5LDYgKzE3MCwxMCBAQCBib29sIENTU1Zh
bHVlOjplcXVhbHMoY29uc3QgQ1NTVmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0
dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTQ2FudmFzVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAg
ICAgIGNhc2UgQ3Vyc29ySW1hZ2VDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NT
VmFsdWVzPENTU0N1cnNvckltYWdlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisjaWYgRU5BQkxFKENV
U1RPTV9QUk9QRVJUSUVTKQorICAgICAgICBjYXNlIEN1c3RvbVByb3BlcnR5Q2xhc3M6CisgICAg
ICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigq
dGhpcywgb3RoZXIpOworI2VuZGlmCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgICAgICBj
YXNlIEZpbHRlckltYWdlQ2xhc3M6CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVl
czxDU1NGaWx0ZXJJbWFnZVZhbHVlPigqdGhpcywgb3RoZXIpOwpAQCAtMjU5LDYgKzI2NCwxMCBA
QCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gdG9DU1ND
YW52YXNWYWx1ZSh0aGlzKS0+Y3VzdG9tQ1NTVGV4dCgpOwogICAgIGNhc2UgQ3Vyc29ySW1hZ2VD
bGFzczoKICAgICAgICAgcmV0dXJuIHRvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSh0aGlzKS0+Y3VzdG9t
Q1NTVGV4dCgpOworI2lmIEVOQUJMRShDVVNUT01fUFJPUEVSVElFUykKKyAgICBjYXNlIEN1c3Rv
bVByb3BlcnR5Q2xhc3M6CisgICAgICAgIHJldHVybiB0b0NTU0N1c3RvbVByb3BlcnR5VmFsdWUo
dGhpcyktPnZhbHVlKCk7CisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgY2Fz
ZSBGaWx0ZXJJbWFnZUNsYXNzOgogICAgICAgICByZXR1cm4gdG9DU1NGaWx0ZXJJbWFnZVZhbHVl
KHRoaXMpLT5jdXN0b21DU1NUZXh0KCk7CkBAIC0zNDgsNiArMzU3LDExIEBAIHZvaWQgQ1NTVmFs
dWU6OmRlc3Ryb3koKQogICAgIGNhc2UgQ3Vyc29ySW1hZ2VDbGFzczoKICAgICAgICAgZGVsZXRl
IHRvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSh0aGlzKTsKICAgICAgICAgcmV0dXJuOworI2lmIEVOQUJM
RShDVVNUT01fUFJPUEVSVElFUykKKyAgICBjYXNlIEN1c3RvbVByb3BlcnR5Q2xhc3M6CisgICAg
ICAgIGRlbGV0ZSB0b0NTU0N1c3RvbVByb3BlcnR5VmFsdWUodGhpcyk7CisgICAgICAgIHJldHVy
bjsKKyNlbmRpZgogICAgIGNhc2UgRm9udENsYXNzOgogICAgICAgICBkZWxldGUgdG9DU1NGb250
VmFsdWUodGhpcyk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXggZDQx
MzY2Mi4uMWUyZTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAgLTcxLDYgKzcxLDkgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNDYW52YXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBl
ID09IENhbnZhc0NsYXNzOyB9CiAgICAgYm9vbCBpc0Nyb3NzZmFkZVZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGFzc1R5cGUgPT0gQ3Jvc3NmYWRlQ2xhc3M7IH0KICAgICBib29sIGlzQ3Vyc29y
SW1hZ2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEN1cnNvckltYWdlQ2xh
c3M7IH0KKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1BFUlRJRVMpCisgICAgYm9vbCBpc0N1c3RvbVBy
b3BlcnR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDdXN0b21Qcm9wZXJ0
eUNsYXNzOyB9CisjZW5kaWYKICAgICBib29sIGlzRnVuY3Rpb25WYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xhc3NUeXBlID09IEZ1bmN0aW9uQ2xhc3M7IH0KICAgICBib29sIGlzRm9udEZlYXR1
cmVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEZvbnRGZWF0dXJlQ2xhc3M7
IH0KICAgICBib29sIGlzRm9udEZhY2VTcmNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NU
eXBlID09IEZvbnRGYWNlU3JjQ2xhc3M7IH0KQEAgLTE1NCw3ICsxNTcsOSBAQCBwcm90ZWN0ZWQ6
CiAKICAgICAgICAgSW5oZXJpdGVkQ2xhc3MsCiAgICAgICAgIEluaXRpYWxDbGFzcywKLQorI2lm
IEVOQUJMRShDVVNUT01fUFJPUEVSVElFUykKKyAgICAgICAgQ3VzdG9tUHJvcGVydHlDbGFzcywK
KyNlbmRpZgogICAgICAgICBSZWZsZWN0Q2xhc3MsCiAgICAgICAgIFNoYWRvd0NsYXNzLAogICAg
ICAgICBVbmljb2RlUmFuZ2VDbGFzcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5j
cHAKaW5kZXggOTA4MGQwNy4uOTdlOTQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dGllcy5jcHAKQEAgLTI0LDYgKzI0LDkgQEAKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIK
IAogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgorI2lmIEVOQUJMRShD
VVNUT01fUFJPUEVSVElFUykKKyNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCisj
ZW5kaWYKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRz
LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCkBAIC04NDAsNiArODQzLDEzIEBAIFN0cmlu
ZyBTdHlsZVByb3BlcnRpZXM6OmFzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoIXNob3J0
aGFuZFByb3BlcnR5SUQpCiAgICAgICAgICAgICAgICAgc2hvcnRoYW5kUHJvcGVydHlJRCA9IGJv
cmRlckZhbGxiYWNrU2hvcnRoYW5kUHJvcGVydHk7CiAgICAgICAgICAgICBicmVhazsKKyNpZiBF
TkFCTEUoQ1VTVE9NX1BST1BFUlRJRVMpCisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDdXN0b206
CisgICAgICAgICAgICBpZiAobnVtRGVjbHMrKykKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgJyk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHByb3BlcnR5LmNzc1RleHQoKSk7
CisgICAgICAgICAgICBjb250aW51ZTsKKyNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmc6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmc6CiAgICAgICAgICAgICBzaG9ydGhhbmRQcm9wZXJ0
eUlEID0gQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nOwpAQCAtMTI0OSw2ICsxMjU5LDE0IEBAIFBh
c3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3Jl
YXRlKGNvbnN0IENTU1Byb3BlcnR5CiAKIFN0cmluZyBTdHlsZVByb3BlcnRpZXM6OlByb3BlcnR5
UmVmZXJlbmNlOjpjc3NOYW1lKCkgY29uc3QKIHsKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1BFUlRJ
RVMpCisgICAgaWYgKGlkKCkgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKKyAgICAgICAgQVNTRVJU
KHByb3BlcnR5VmFsdWUoKS0+aXNDdXN0b21Qcm9wZXJ0eVZhbHVlKCkpOworICAgICAgICBpZiAo
IXByb3BlcnR5VmFsdWUoKS0+aXNDdXN0b21Qcm9wZXJ0eVZhbHVlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsgLy8gU2hvdWxkIG5vdCBoYXBwZW4sIGJ1dCBpZiBpdCBkb2Vz
LCBhdm9pZCBhIGJhZCBjYXN0LgorICAgICAgICByZXR1cm4gIi0tIiArIHRvQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZShwcm9wZXJ0eVZhbHVlKCkpLT5uYW1lKCk7CisgICAgfQorI2VuZGlmCiAgICAg
cmV0dXJuIGdldFByb3BlcnR5TmFtZVN0cmluZyhpZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9w
LnBsCmluZGV4IDcyNmExOTQuLmVmNDVhZmEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKQEAgLTM3
LDcgKzM3LDcgQEAgZGllICJXZSd2ZSByZWFjaGVkIG1vcmUgdGhhbiAxMDI0IENTUyBwcm9wZXJ0
aWVzLCBwbGVhc2UgbWFrZSBzdXJlIHRvIHVwZGF0ZSBDU1MKIG15ICVuYW1lc0hhc2g7CiBteSBA
ZHVwbGljYXRlcyA9ICgpOwogCi1teSAkbnVtUHJlZGVmaW5lZFByb3BlcnRpZXMgPSAxOworbXkg
JG51bVByZWRlZmluZWRQcm9wZXJ0aWVzID0gMjsKIG15IEBuYW1lcyA9ICgpOwogbXkgJW5hbWVJ
c0luaGVyaXRlZDsKIG15ICVuYW1lVG9JZDsKQEAgLTIwNSw2ICsyMDUsNyBAQCBTdHJpbmcgZ2V0
SlNQcm9wZXJ0eU5hbWUoQ1NTUHJvcGVydHlJRCBpZCkKIAogc3RhdGljIGNvbnN0IGJvb2wgaXNJ
bmhlcml0ZWRQcm9wZXJ0eVRhYmxlW251bUNTU1Byb3BlcnRpZXMgKyAkbnVtUHJlZGVmaW5lZFBy
b3BlcnRpZXNdID0gewogICAgIGZhbHNlLCAvLyBDU1NQcm9wZXJ0eUludmFsaWQKKyAgICBmYWxz
ZSwgLy8gQ1NTUHJvcGVydHlDdXN0b20KIEVPRgogCiBmb3JlYWNoIG15ICRuYW1lIChAbmFtZXMp
IHsKQEAgLTI1MCw2ICsyNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gQ1NTUHJv
cGVydHlJRCB7CiAgICAgQ1NTUHJvcGVydHlJbnZhbGlkID0gMCwKKyAgICBDU1NQcm9wZXJ0eUN1
c3RvbSA9IDEsCiBFT0YKIAogbXkgJGZpcnN0ID0gJG51bVByZWRlZmluZWRQcm9wZXJ0aWVzOwpA
QCAtMjYyLDEyICsyNjQsMTEgQEAgZm9yZWFjaCBteSAkbmFtZSAoQG5hbWVzKSB7CiAgICAgJG1h
eExlbiA9IGxlbmd0aCgkbmFtZSk7CiAgIH0KIH0KLW15ICRudW0gPSAkaSAtICRmaXJzdDsKIG15
ICRsYXN0ID0gJGkgLSAxOwogCiBwcmludCBIRUFERVIgIn07XG5cbiI7CiBwcmludCBIRUFERVIg
ImNvbnN0IGludCBmaXJzdENTU1Byb3BlcnR5ID0gJGZpcnN0O1xuIjsKLXByaW50IEhFQURFUiAi
Y29uc3QgaW50IG51bUNTU1Byb3BlcnRpZXMgPSAkbnVtO1xuIjsKK3ByaW50IEhFQURFUiAiY29u
c3QgaW50IG51bUNTU1Byb3BlcnRpZXMgPSAkbGFzdDtcbiI7CiBwcmludCBIRUFERVIgImNvbnN0
IGludCBsYXN0Q1NTUHJvcGVydHkgPSAkbGFzdDtcbiI7CiBwcmludCBIRUFERVIgImNvbnN0IHNp
emVfdCBtYXhDU1NQcm9wZXJ0eU5hbWVMZW5ndGggPSAkbWF4TGVuO1xuIjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBhYzI3ZjViLi41ODFk
Y2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApA
QCAtNTEzLDYgKzUxMywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNWaWV3cG9ydFVuaXRz
KGJvb2wgaGFzVmlld3BvcnRVbml0cyA9IHRydWUpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEhh
c1ZpZXdwb3J0VW5pdHMoaGFzVmlld3BvcnRVbml0cyk7IH0KICAgICBib29sIGhhc1ZpZXdwb3J0
VW5pdHMoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaGFzVmlld3BvcnRVbml0
cygpOyB9CiAKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1BFUlRJRVMpCisgICAgdm9pZCBzZXRDdXN0
b21Qcm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
IHsgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY3VzdG9tUHJvcGVydGllcy5hY2Nlc3Mo
KS0+c2V0Q3VzdG9tUHJvcGVydHkobmFtZSwgdmFsdWUpOyB9CisgICAgY29uc3QgSGFzaE1hcDxB
dG9taWNTdHJpbmcsIFN0cmluZz4qIGN1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiAmKHJhcmVJ
bmhlcml0ZWREYXRhLT5tX2N1c3RvbVByb3BlcnRpZXMtPm1fZGF0YSk7IH0KKyNlbmRpZgorCiAg
ICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxh
Z3MuYWZmZWN0ZWRCeUhvdmVyKCk7IH0KICAgICBib29sIGFmZmVjdGVkQnlBY3RpdmUoKSBjb25z
dCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeUFjdGl2ZSgpOyB9CiAgICAg
Ym9vbCBhZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5h
ZmZlY3RlZEJ5RHJhZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjRlMzAxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaApAQCAtMCwwICsxLDY0IEBA
CisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyoKKyogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiBkaXN0cmli
dXRpb24uCisqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBTdHlsZUN1c3RvbVByb3BlcnR5
RGF0YV9oCisjZGVmaW5lIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhX2gKKworI2lmIEVOQUJMRShD
VVNUT01fUFJPUEVSVElFUykKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlQ3VzdG9t
UHJvcGVydHlEYXRhPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWY8U3R5bGVDdXN0b21Q
cm9wZXJ0eURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVDdXN0b21Q
cm9wZXJ0eURhdGEoKSk7IH0KKyAgICBQYXNzUmVmPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPiBj
b3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0
YSgqdGhpcykpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVDdXN0b21Qcm9w
ZXJ0eURhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5tX2RhdGEgPT0gbV9kYXRhOyB9
CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgIHZvaWQgc2V0Q3Vz
dG9tUHJvcGVydHkoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
KSB7IG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpOyB9CisKKyAgICBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgU3RyaW5nPiBtX2RhdGE7Citwcml2YXRlOgorICAgIGV4cGxpY2l0IFN0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhKCkKKyAgICAgICAgOiBSZWZDb3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRh
PigpIHsgfQorICAgIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKGNvbnN0IFN0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhJiBvdGhlcikKKyAgICAgICAgOiBSZWZDb3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhPigpLCBtX2RhdGEoSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4ob3RoZXIubV9k
YXRhKSkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQ1VTVE9NX1BST1BFUlRJRVMpCisjZW5kaWYgLy8gU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGFf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IDgyYTNhOTEuLjQ1NjU5OTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5jcHAKQEAgLTYwLDYgKzYwLDEwIEBAIHN0cnVjdCBHcmVhdGVyVGhhbk9yU2FtZVNpemVBc1N0
eWxlUmFyZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmVhdGVyCiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKICAgICBDb2xvciB0YXBIaWdobGlnaHRDb2xvcjsKICNlbmRpZgor
CisjaWYgRU5BQkxFKENVU1RPTV9QUk9QRVJUSUVTKQorICAgIHZvaWQqIGN1c3RvbVByb3BlcnR5
RGF0YVJlZnNbMV07CisjZW5kaWYKIH07CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihTdHlsZVJh
cmVJbmhlcml0ZWREYXRhKSA8PSBzaXplb2YoR3JlYXRlclRoYW5PclNhbWVTaXplQXNTdHlsZVJh
cmVJbmhlcml0ZWREYXRhKSwgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YV9zaG91bGRfYml0X3BhY2sp
OwpAQCAtMTMzLDYgKzEzNyw5IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUlu
aGVyaXRlZERhdGEoKQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLCB0YXBIaWdobGln
aHRDb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkpCiAjZW5kaWYK
KyNpZiBFTkFCTEUoQ1VTVE9NX1BST1BFUlRJRVMpCisgICAgLCBtX2N1c3RvbVByb3BlcnRpZXMo
U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OmNyZWF0ZSgpKQorI2VuZGlmCiB7CiB9CiAKQEAgLTIx
Nyw2ICsyMjQsOSBAQCBpbmxpbmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYQogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCiAgICAgLCB0YXBIaWdobGlnaHRDb2xvcihvLnRhcEhpZ2hsaWdodENvbG9yKQogI2Vu
ZGlmCisjaWYgRU5BQkxFKENVU1RPTV9QUk9QRVJUSUVTKQorICAgICwgbV9jdXN0b21Qcm9wZXJ0
aWVzKG8ubV9jdXN0b21Qcm9wZXJ0aWVzKQorI2VuZGlmCiB7CiB9CiAKQEAgLTMyNCw2ICszMzQs
OSBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKICAgICAgICAgJiYgbV9ydWJ5UG9zaXRpb24gPT0g
by5tX3J1YnlQb3NpdGlvbgogICAgICAgICAmJiBtX2xpbmVTbmFwID09IG8ubV9saW5lU25hcAog
ICAgICAgICAmJiBtX2xpbmVBbGlnbiA9PSBvLm1fbGluZUFsaWduCisjaWYgRU5BQkxFKENVU1RP
TV9QUk9QRVJUSUVTKQorICAgICAgICAmJiBtX2N1c3RvbVByb3BlcnRpZXMgPT0gby5tX2N1c3Rv
bVByb3BlcnRpZXMKKyNlbmRpZgogICAgICAgICAmJiBTdHlsZUltYWdlOjppbWFnZXNFcXVpdmFs
ZW50KGxpc3RTdHlsZUltYWdlLmdldCgpLCBvLmxpc3RTdHlsZUltYWdlLmdldCgpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVy
aXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhl
cml0ZWREYXRhLmgKaW5kZXggN2U5YzYwZS4uZWNjZTlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC0z
MSw2ICszMSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1BFUlRJRVMpCisj
aW5jbHVkZSAiRGF0YVJlZi5oIgorI2luY2x1ZGUgIlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgi
CisjZW5kaWYKKwogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQogI2luY2x1ZGUgIlRl
eHRTaXplQWRqdXN0bWVudC5oIgogI2VuZGlmCkBAIC0xNTcsNiArMTYyLDEwIEBAIHB1YmxpYzoK
ICAgICBDb2xvciB0YXBIaWdobGlnaHRDb2xvcjsKICNlbmRpZgogCisjaWYgRU5BQkxFKENVU1RP
TV9QUk9QRVJUSUVTKQorICAgIERhdGFSZWY8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+IG1fY3Vz
dG9tUHJvcGVydGllczsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFN0eWxlUmFyZUluaGVyaXRl
ZERhdGEoKTsKICAgICBTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVy
aXRlZERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAwYmNjZGU5Li45ZjNhMGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDctMjMgIFpvbHRhbiBIb3J2YXRoICA8
em9sdGFuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ3VzdG9tIFByb3BlcnR5IGltcGxlbWVudGF0
aW9uIHcvbyB2YXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMwMzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxNC0w
Ny0yMyAgQmVtIEpvbmVzLUJleSAgPGJqb25lc2JlQGFkb2JlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgQ1NTX0VYQ0xVU0lPTlMgY29tcGlsZSBmbGFnIGFuZCBsZWZ0b3ZlciBjb2RlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCmluZGV4IDE3YzkxMGEuLjgwMDg1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC02Miw2
ICs2Miw3IEBAIEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTID0gRU5BQkxFX0NTUzNfQ09O
RElUSU9OQUxfUlVMRVM7CiBFTkFCTEVfQ1NTM19URVhUID0gOwogRU5BQkxFX0NTUzNfVEVYVF9M
SU5FX0JSRUFLID0gOwogRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZID0gRU5BQkxFX0NVUlNPUl9W
SVNJQklMSVRZOworRU5BQkxFX0NVU1RPTV9QUk9QRVJUSUVTID0gOwogRU5BQkxFX0NVU1RPTV9T
Q0hFTUVfSEFORExFUiA9IDsKIEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCA9ICQoRU5BQkxFX0RB
U0hCT0FSRF9TVVBQT1JUXyQoUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0RBU0hCT0FSRF9TVVBQ
T1JUX21hY29zeCA9IEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVDsKQEAgLTI0OCw0ICsyNDksNCBA
QCBFTkFCTEVfRlRMX0pJVF9pcGhvbmVzaW11bGF0b3IgPSA7CiAKIEVOQUJMRV9MTElOVF9DX0xP
T1AgPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFC
TEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19T
Q1JPTExJTkcpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9O
SU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hf
REVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1Nf
REVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfR1JJ
RF9MQVlPVVQpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lN
QUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBUEVT
KSAkKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VOUFJFRklYRUQpICQoRU5BQkxF
X0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NT
M19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9D
VVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJM
RV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJM
RV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVf
RE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFC
TEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GT05UX0xP
QURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChF
TkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVf
SElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZB
UykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVO
QUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktF
UlMpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lO
UFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExF
VEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dF
RUspICQoRU5BQkxFX0lOU1BFQ1RPUikgJChFTkFCTEVfSU9TX0FJUlBMQVkpICQoRU5BQkxFX0lP
U19URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAk
KEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVG
SVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQo
RU5BQkxFX0xJTktfTE9OR19QUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVf
TUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NP
VVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkg
JChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFW
SUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAk
KEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9Q
T0lOVEVSX0xPQ0spICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRT
KSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9S
RVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFC
TEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVO
QUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVf
U1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpICQoRU5BQkxFX1NVQlRMRV9D
UllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRF
Q1RJT04pICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklO
RykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQo
RU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJB
Q0spICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEp
ICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkp
ICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9QSUNUVVJFX1NJWkVTKSAkKEVOQUJMRV9X
RUJfVElNSU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVPVVQp
ICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0xMSU5UX0NfTE9PUCkg
JChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CitGRUFUVVJFX0RFRklORVMgPSAk
KEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChF
TkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElP
TlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQo
RU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxF
X0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NT
U19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9D
U1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0Vf
T1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1Nf
UkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5J
TUFUSU9OU19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVO
QUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9D
VVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1BST1BFUlRJRVMpICQoRU5BQkxFX0NV
U1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxF
X0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxF
X0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9E
T000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJM
RV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9B
RF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVO
QUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9I
SURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFT
KSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5B
QkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VS
UykgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVU
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VF
SykgJChFTkFCTEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9JT1NfQUlSUExBWSkgJChFTkFCTEVfSU9T
X1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQo
RU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJ
WEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChF
TkFCTEVfTElOS19MT05HX1BSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09V
UkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAk
KEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJ
R0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQo
RU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BP
SU5URVJfTE9DSykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMp
ICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJM
RV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5B
QkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9T
UUxfREFUQUJBU0UpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1VCVExFX0NS
WVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVD
VElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5H
KSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChF
TkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFD
SykgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkg
JChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkg
JChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1BJQ1RVUkVfU0laRVMpICQoRU5BQkxFX1dF
Ql9USU1JTkcpICQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkg
JChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfTExJTlRfQ19MT09QKSAk
KEZFQVRVUkVfREVGSU5FU18kKFBMQVRGT1JNX05BTUUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxNDBhMjg5
Li45NWUwMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDctMjMgIFpvbHRh
biBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ3VzdG9tIFByb3BlcnR5
IGltcGxlbWVudGF0aW9uIHcvbyB2YXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZzoKKwogMjAxNC0wNy0yMyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xNzc4MjYyMz4gW2lPU10gQ2xpZW50LWNlcnRpZmljYXRlIGF1
dGhlbnRpY2F0aW9uIGlzbuKAmXQgd29ya2luZyB3aXRoIHNvbWUgY2VydGlmaWNhdGVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCmluZGV4IDE3YzkxMGEuLjgwMDg1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC02Miw2ICs2Miw3IEBA
IEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTID0gRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxf
UlVMRVM7CiBFTkFCTEVfQ1NTM19URVhUID0gOwogRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFL
ID0gOwogRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZID0gRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZ
OworRU5BQkxFX0NVU1RPTV9QUk9QRVJUSUVTID0gOwogRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFO
RExFUiA9IDsKIEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCA9ICQoRU5BQkxFX0RBU0hCT0FSRF9T
VVBQT1JUXyQoUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUX21hY29z
eCA9IEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVDsKQEAgLTI0OCw0ICsyNDksNCBAQCBFTkFCTEVf
RlRMX0pJVF9pcGhvbmVzaW11bGF0b3IgPSA7CiAKIEVOQUJMRV9MTElOVF9DX0xPT1AgPSA7CiAK
LUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxF
UkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcp
ICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVO
QUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVM
X01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElP
Tl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FE
QVBUQVRJT04pICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQp
ICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09M
VVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJM
RV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VOUFJFRklYRUQpICQoRU5BQkxFX0NTUzNfQ09O
RElUSU9OQUxfUlVMRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJ
TkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NI
RU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElT
VF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxT
X0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9NNF9FVkVO
VFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQ
VEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRT
KSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0FN
RVBBRF9ERVBSRUNBVEVEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BB
R0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFC
TEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRF
WEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5B
QkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5B
QkxFX0lOU1BFQ1RPUikgJChFTkFCTEVfSU9TX0FJUlBMQVkpICQoRU5BQkxFX0lPU19URVhUX0FV
VE9TSVpJTkcpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9M
RUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChF
TkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJ
TktfTE9OR19QUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChF
TkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVf
TUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NP
TlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xP
Q0spICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJM
RV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FO
SU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xV
VElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFC
QVNFKSAkKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQo
RU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQo
RU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFC
TEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VT
RVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5B
QkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxF
X1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5BQkxF
X1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9QSUNUVVJFX1NJWkVTKSAkKEVOQUJMRV9XRUJfVElNSU5H
KSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxF
X1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0xMSU5UX0NfTE9PUCkgJChGRUFUVVJF
X0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8z
RF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUND
RUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5B
QkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NB
TlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhU
KSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJ
VElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRklMVEVS
UykgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykg
JChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19V
TlBSRUZJWEVEKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1Mz
X1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklT
SUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1BST1BFUlRJRVMpICQoRU5BQkxFX0NVU1RPTV9TQ0hF
TUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNU
X0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNf
RUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET000X0VWRU5U
U19DT05TVFJVQ1RPUikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBU
RURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMp
ICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1F
UEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFH
RV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFC
TEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFC
TEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9JT1NfQUlSUExBWSkgJChFTkFCTEVfSU9TX1RFWFRfQVVU
T1NJWklORykgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
R0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVO
QUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElO
S19MT05HX1BSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQo
RU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVO
QUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9N
SFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09O
VEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9D
SykgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxF
X1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVU
SU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQVJF
RF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJB
U0UpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChF
TkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJM
RV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNF
UlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFC
TEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVf
V0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JFUExBWSkgJChFTkFCTEVf
V0VCX1NPQ0tFVFMpICQoRU5BQkxFX1BJQ1RVUkVfU0laRVMpICQoRU5BQkxFX1dFQl9USU1JTkcp
ICQoRU5BQkxFX1dFQlZUVF9SRUdJT05TKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVf
WFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfTExJTlRfQ19MT09QKSAkKEZFQVRVUkVf
REVGSU5FU18kKFBMQVRGT1JNX05BTUUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKaW5kZXggMWNiYjU0
ZS4uMGY2MjIwYyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysr
IGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTU2LDYgKzU2LDcgQEAgV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NTU19GSUxURVJTIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NTU19HUklEX0xBWU9VVCBPRkYpCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQ1NTX0lNQUdFX1NFVCBPTikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DU1NfUkVHSU9OUyBPTikK
K1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DVVNUT01fUFJPUEVSVElF
UyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQ1VTVE9NX1ND
SEVNRV9IQU5ETEVSIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X0RBVEFMSVNUX0VMRU1FTlQgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4
IDJmN2ZhMmQuLmI0MmI0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNt
YWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC05Niw2ICs5Niw3IEBA
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQg
T0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NTU19JTUFHRV9T
RVQgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NTU19SRUdJ
T05TIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NTU19UUkFO
U0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfQ1VTVE9NX1BST1BFUlRJRVMgT0ZGKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUiBPRkYpCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCBPRkYp
CiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRE9XTkxPQURfQVRUUklC
VVRFIE9GRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBi
L1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCA0MjMxYzA5Li5iZWI5NGY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC00MCw2ICs0MCw3IEBAIG1hY3JvKFdF
QktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0NTU19S
RUdJT05TICJUb2dnbGUgQ1NTIHJlZ2lvbnMgc3VwcG9ydCIgT0ZGKQogICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9DU1NfU0hBUEVTICJUb2dnbGUgQ1NTIFNoYXBlcyBzdXBwb3J0IiBP
RkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1B
VElPTlNfVU5QUkVGSVhFRCAiVG9nZ2xlIHN1cHBvcnQgZm9yIHVucHJlZml4ZWQgQ1NTIGFuaW1h
dGlvbnMgYW5kIHRyYW5zZm9ybXMiIE9OKQorICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJM
RV9DVVNUT01fUFJPUEVSVElFUyAiVG9nZ2xlIEN1c3RvbSBDU1MgUHJvcGVydGllcyBzdXBwb3J0
IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFO
RExFUiAiVG9nZ2xlIEN1c3RvbSBTY2hlbWUgSGFuZGxlciBzdXBwb3J0IiBPRkYpCiAgICAgV0VC
S0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQgIlRvZ2dsZSBIVE1MNSBk
YXRhbGlzdCBzdXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0RB
VEFfVFJBTlNGRVJfSVRFTVMgIlRvZ2dsZSBIVE1MNSBkYXRhIHRyYW5zZmVyIGl0ZW1zIHN1cHBv
cnQiIE9GRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlIGIvU291cmNl
L2NtYWtlY29uZmlnLmguY21ha2UKaW5kZXggZGM0ZGY1OC4uZTUwNzE1YSAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlY29uZmlnLmguY21ha2UKKysrIGIvU291cmNlL2NtYWtlY29uZmlnLmguY21h
a2UKQEAgLTI3LDYgKzI3LDcgQEAKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9DU1NfU0hBUEVTCiAj
Y21ha2VkZWZpbmUwMSBFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVE
CiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUworI2NtYWtlZGVm
aW5lMDEgRU5BQkxFX0NVU1RPTV9QUk9QRVJUSUVTCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfQ1VT
VE9NX1NDSEVNRV9IQU5ETEVSCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfREFUQUxJU1RfRUxFTUVO
VAogI2NtYWtlZGVmaW5lMDEgRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NzVkODc1Li41NGEzZDg4
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTQtMDctMjMgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgQ3VzdG9tIFByb3BlcnR5IGltcGxlbWVudGF0aW9uIHcvbyB2YXIoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzk3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTQtMDctMjMgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGlPUyBidWlsZCBm
aXggYWZ0ZXIgcjE3MTM1NS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9G
ZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpp
bmRleCA4MzgzZDY3Li43NjcxNGMwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVM
aXN0LnBtCkBAIC00OSw2ICs0OSw3IEBAIG15ICgKICAgICAkY2FudmFzUHJveHlTdXBwb3J0LAog
ICAgICRjaGFubmVsTWVzc2FnaW5nU3VwcG9ydCwKICAgICAkY3NwTmV4dFN1cHBvcnQsCisgICAg
JGNzc0N1c3RvbVByb3BlcnRpZXMsCiAgICAgJGNzczNDb25kaXRpb25hbFJ1bGVzU3VwcG9ydCwK
ICAgICAkY3NzM1RleHRTdXBwb3J0LAogICAgICRjc3MzVGV4dExpbmVCcmVha1N1cHBvcnQsCkBA
IC0xNzIsNiArMTczLDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJjc3At
bmV4dCIsIGRlc2MgPT4gIlRvZ2dsZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAxLjEgc3VwcG9y
dCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9DU1BfTkVYVCIsIGRlZmF1bHQgPT4gaXNHdGso
KSwgdmFsdWUgPT4gXCRjc3BOZXh0U3VwcG9ydCB9LAogCisgICAgeyBvcHRpb24gPT4gImN1c3Rv
bS1wcm9wZXJ0aWVzIiwgZGVzYyA9PiAiVG9nZ2xlIENTUyBDdXN0b20gUHJvcGVydGllcyBTdXBw
b3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0NVU1RPTV9QUk9QRVJUSUVTIiwgZGVmYXVs
dCA9PiAwLCB2YWx1ZSA9PiBcJGNzc0N1c3RvbVByb3BlcnRpZXMgfSwKKwogICAgIHsgb3B0aW9u
ID0+ICJjc3MtZGV2aWNlLWFkYXB0YXRpb24iLCBkZXNjID0+ICJUb2dnbGUgQ1NTIERldmljZSBB
ZGFwdGF0aW9uIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfQ1NTX0RFVklDRV9B
REFQVEFUSU9OIiwgZGVmYXVsdCA9PiBpc0VmbCgpLCB2YWx1ZSA9PiBcJGNzc0RldmljZUFkYXB0
YXRpb24gfSwKIApkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBiL1dlYktp
dExpYnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggMTExYjMzMC4uMzQzYTIxNyAxMDA2NDQKLS0tIGEv
V2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDctMjMgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQ3VzdG9tIFByb3BlcnR5IGltcGxlbWVudGF0aW9uIHcvbyB2
YXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMw
Mzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wczoKKwogMjAxNC0wNy0yMyAgQmVt
IEpvbmVzLUJleSAgPGJqb25lc2JlQGFkb2JlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ1NTX0VY
Q0xVU0lPTlMgY29tcGlsZSBmbGFnIGFuZCBsZWZ0b3ZlciBjb2RlCmRpZmYgLS1naXQgYS9XZWJL
aXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMgYi9XZWJL
aXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKaW5kZXgg
NmVkZGRmNy4uZTQ0NmZjNiAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92
c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9v
bHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwpAQCAtMjAsNiArMjAsNyBAQAogICAgIDxF
TkFCTEVfQ1NTX1NIQVBFUz5FTkFCTEVfQ1NTX1NIQVBFUzwvRU5BQkxFX0NTU19TSEFQRVM+CiAg
ICAgPEVOQUJMRV9DU1NfU0hBUEVfSU5TSURFPkVOQUJMRV9DU1NfU0hBUEVfSU5TSURFPC9FTkFC
TEVfQ1NTX1NIQVBFX0lOU0lERT4KICAgICA8RU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElP
TlNfVFJBTlNJVElPTlNfVU5QUkVGSVhFRD5FTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9O
U19UUkFOU0lUSU9OU19VTlBSRUZJWEVEPC9FTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9O
U19UUkFOU0lUSU9OU19VTlBSRUZJWEVEPgorICAgIDxFTkFCTEVfQ1VTVE9NX1BST1BFUlRJRVMg
Lz4KICAgICA8RU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUiAvPgogICAgIDxFTkFCTEVfREFU
QUdSSUQgLz4KICAgICA8RU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQgLz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261846</attachid>
            <date>2015-09-23 16:22:40 -0700</date>
            <delta_ts>2015-09-23 16:27:25 -0700</delta_ts>
            <desc>Patch just to get EWS feedback</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>76167</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE5MDEyNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTQzNCw2ICs1NDM0LDggQEAK
IAkJQkM3NzJDNUUwQzRFQjM0NDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnlNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc3MkM1RDBDNEVC
MzQ0MDA4MzI4NUYgLyogTUlNRVR5cGVSZWdpc3RyeU1hYy5tbSAqLzsgfTsKIAkJQkM3NzJFMTMx
MzMxNjIwQzAwMUVDOUNFIC8qIENTU0xpbmVCb3hDb250YWluVmFsdWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzcyRTEyMTMzMTYyMEMwMDFFQzlD
RSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM3NzJFMTYxMzMxNjJDMjAwMUVDOUNFIC8qIENTU0xp
bmVCb3hDb250YWluVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM3NzJFMTUxMzMxNjJDMjAwMUVDOUNFIC8qIENTU0xpbmVCb3hDb250YWlu
VmFsdWUuY3BwICovOyB9OworCQlCQzc3OUUxNDFCQjIxNUJCMDBDQUE4QkYgLyogQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM3NzlFMTMxQkIyMTVCQjAwQ0FBOEJGIC8qIENTU0N1c3RvbVByb3BlcnR5VmFsdWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzc3
OUUxNzFCQjIyN0NBMDBDQUE4QkYgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzc5RTE1MUJCMjI2QTIw
MENBQThCRiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDN0Y0NEE4MEI5RTMyNEUwMEE5RDA4MSAv
KiBJbWFnZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDN0ZBNjIwMEQx
RjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2MUUwRDFGMENCRDAwREIyMkE5IC8qIExpdmVO
b2RlTGlzdC5jcHAgKi87IH07CiAJCUJDN0ZBNjIxMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9k
ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
N0ZBNjFGMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuaCAqLzsgfTsKQEAgLTEwMTUw
LDggKzEwMTUyLDggQEAKIAkJODNDMUQ0MjQxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdN
b3ZldG9SZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNlZ01v
dmV0b1JlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0QyNkQzQzFBRkRDQzUw
MDAxQjM4NzMgLyogQ2hpbGROb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDaGlsZE5vZGUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4M0QyNkQzRDFBRkRDQzUwMDAxQjM4NzMgLyogUGFyZW50Tm9k
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUGFyZW50Tm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTgzRTM1OUEwMUJCMTAzMUQwMDJDRUI5OCAvKiBKU0hUTUxUaW1lRWxlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0hUTUxUaW1lRWxlbWVudC5oOyBwYXRoID0gIkpT
SFRNTFRpbWVFbGVtZW50LmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0UzNTlB
MTFCQjEwMzFEMDAyQ0VCOTggLyogSlNIVE1MVGltZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNIVE1MVGltZUVsZW1lbnQuY3BwOyBwYXRoID0gIkpT
SFRNTFRpbWVFbGVtZW50LmNwcCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRTM1
OUEwMUJCMTAzMUQwMDJDRUI5OCAvKiBKU0hUTUxUaW1lRWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxUaW1lRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4M0UzNTlBMTFCQjEwMzFEMDAyQ0VCOTggLyogSlNIVE1MVGltZUVsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MVGltZUVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0U5NTlFMTFCOEJDMjJC
MDA0RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOYXRpdmVOb2RlRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzRjEyMDZBMUI4QzEwMzYwMEQ3NUY2MyAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQxOUQyQTQxMjBEOTJEMDAwMTQxRjhGIC8q
IFNWR1BhdGhCeXRlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1BhdGhCeXRlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzA2NCw2
ICsxMzA2Niw4IEBACiAJCUJDNzcyQzVEMEM0RUIzNDQwMDgzMjg1RiAvKiBNSU1FVHlwZVJlZ2lz
dHJ5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1JTUVU
eXBlUmVnaXN0cnlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzcyRTEy
MTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0xpbmVCb3hDb250YWluVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3NzJFMTUxMzMxNjJDMjAwMUVDOUNFIC8qIENTU0xpbmVC
b3hDb250YWluVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDNzc5RTEzMUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3NzlFMTUxQkIyMjZBMjAwQ0FBOEJGIC8q
IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDN0IyQUY4MDQ1MDgyNDEwMEE4MDAwRiAvKiBTY3JvbGxiYXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsYmFyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlCQzdG
NDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzdGQTYxRTBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpdmVOb2RlTGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTc4MCw2ICsyMTc4NCw3IEBACiAJCQkJOTM5M0U2
MDIxNTFBOUExODAwMDY2RjA2IC8qIFN0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwICovLAogCQkJCTkz
OTNFNjAzMTUxQTlBMTgwMDA2NkYwNiAvKiBTdHlsZUNhY2hlZEltYWdlU2V0LmggKi8sCiAJCQkJ
OURBQzdDNTYxQUYyQ0I2NDAwNDM3QzQ0IC8qIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEuaCAq
LywKKwkJCQlCQzc3OUUxNTFCQjIyNkEyMDBDQUE4QkYgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURh
dGEuaCAqLywKIAkJCQlCQzVFQjY3RTBFODFENEE3MDBCMjU5NjUgLyogU3R5bGVEYXNoYm9hcmRS
ZWdpb24uaCAqLywKIAkJCQlCQzVFQjhCNjBFODIwMUJEMDBCMjU5NjUgLyogU3R5bGVEZXByZWNh
dGVkRmxleGlibGVCb3hEYXRhLmNwcCAqLywKIAkJCQlCQzVFQjhCNzBFODIwMUJEMDBCMjU5NjUg
LyogU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmggKi8sCkBAIC0yMjczOCw2ICsyMjc0
Myw3IEBACiAJCQkJMkQ4RkVCREIxNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFkZVZhbHVl
LmggKi8sCiAJCQkJQUEwOTc4RUQwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFs
dWUuY3BwICovLAogCQkJCUFBMDk3OEVFMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1NDdXJzb3JJbWFn
ZVZhbHVlLmggKi8sCisJCQkJQkM3NzlFMTMxQkIyMTVCQjAwQ0FBOEJGIC8qIENTU0N1c3RvbVBy
b3BlcnR5VmFsdWUuaCAqLywKIAkJCQk0QTlDQzgxNTE2QkI5QUM2MDBFQzY0NUEgLyogQ1NTRGVm
YXVsdFN0eWxlU2hlZXRzLmNwcCAqLywKIAkJCQk0QTlDQzgxNjE2QkI5QUM2MDBFQzY0NUEgLyog
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzLmggKi8sCiAJCQkJRkI5NjVCODIxN0JCQjYyQzAwRTgzNUI5
IC8qIENTU0ZpbHRlckltYWdlVmFsdWUuY3BwICovLApAQCAtMjUxMDUsNiArMjUxMTEsNyBAQAog
CQkJCUE4Q0ZGMDRGMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzA3M0JBQTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252ZXJzaW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QTUyOEU4NDE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRp
bmdPYmplY3RzLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzc3OUUxNzFCQjIyN0NBMDBDQUE4QkYg
LyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNjk5ODcy
MTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyNzUzNTY5MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkUyN0NBMDBCMEYyQjA5MDBGMTdDN0IgLyogRmxvYXRQb2ludDNELmgg
aW4gSGVhZGVycyAqLywKQEAgLTI2MDg4LDYgKzI2MDk1LDcgQEAKIAkJCQkxNDFEQzA1MzE2NDgz
NEI5MDAzNzFFNUEgLyogTGF5b3V0UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyNTM4RDQx
M0Y5QjYwQTAwMDI0NzU0IC8qIExheW91dFJlcGFpbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQxREMwNTQxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFNpemUuaCBpbiBIZWFkZXJzICovLAor
CQkJCUJDNzc5RTE0MUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3Rh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MURDMDQ4MTY0ODM0OEYwMDM3MUU1QSAvKiBMYXlv
dXRVbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEMzQjFGQTBGMEU0MTYxMDA5NjkzRjYgLyog
TGVnYWN5VGlsZUNhY2hlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxOTAx
MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU0FzcGVjdFJh
dGlvVmFsdWUuaCIKICNpbmNsdWRlICJDU1NCYXNpY1NoYXBlcy5oIgogI2luY2x1ZGUgIkNTU0Jv
cmRlckltYWdlLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250VmFsdWUuaCIKICNp
bmNsdWRlICJDU1NGdW5jdGlvblZhbHVlLmgiCkBAIC0xOTA0LDYgKzE5MDUsMjAgQEAgaW5saW5l
IHN0YXRpYyBib29sIGlzRmxleE9yR3JpZChDb250YWluZQogICAgIHJldHVybiBlbGVtZW50ICYm
IGVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKSAmJiBlbGVtZW50LT5jb21wdXRlZFN0eWxlKCktPmlz
RGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KCk7CiB9CiAKK1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSkgY29uc3QKK3sKKyAgICBOb2RlKiBzdHlsZWROb2RlID0gdGhpcy0+c3R5bGVkTm9k
ZSgpOworICAgIGlmICghc3R5bGVkTm9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gY29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVy
dHkoc3R5bGVkTm9kZSwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyLCBDU1NQcm9wZXJ0eUN1c3Rv
bSk7CisgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmhhc0N1c3RvbVByb3BlcnR5KHByb3BlcnR5
TmFtZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5nIHJlc3VsdCA9IHN0
eWxlLT5nZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIENT
U0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZShwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7Cit9CisK
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBjb25z
dAogewogICAgIE5vZGUqIHN0eWxlZE5vZGUgPSB0aGlzLT5zdHlsZWROb2RlKCk7CkBAIC0zMzY5
LDYgKzMzODQsOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXcml0aW5nTW9kZToKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFN2Z1NoYWRvdzoKICAgICAgICAgICAgIHJldHVybiBzdmdQcm9wZXJ0eVZhbHVl
KHByb3BlcnR5SUQsIERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUN1c3RvbToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgbG9nVW5pbXBsZW1lbnRlZFByb3BlcnR5SUQo
cHJvcGVydHlJRCk7CkBAIC0zMzkzLDE1ICszNDExLDM1IEBAIHVuc2lnbmVkIENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6bGUKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHJldHVybiBudW1Db21wdXRlZFByb3BlcnRpZXM7CisgICAgY29uc3QgSGFzaE1hcDxB
dG9taWNTdHJpbmcsIFN0cmluZz4qIGN1c3RvbVByb3BlcnRpZXMgPSBzdHlsZS0+Y3VzdG9tUHJv
cGVydGllcygpOworICAgIHJldHVybiBudW1Db21wdXRlZFByb3BlcnRpZXMgKyAoY3VzdG9tUHJv
cGVydGllcyA/IGN1c3RvbVByb3BlcnRpZXMtPnNpemUoKSA6IDApOwogfQogCiBTdHJpbmcgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtKHVuc2lnbmVkIGkpIGNvbnN0CiB7CiAgICAg
aWYgKGkgPj0gbGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIAor
ICAgIGlmIChpIDwgbnVtQ29tcHV0ZWRQcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm4gZ2V0UHJv
cGVydHlOYW1lU3RyaW5nKGNvbXB1dGVkUHJvcGVydGllc1tpXSk7CisgICAgCisgICAgTm9kZSog
bm9kZSA9IG1fbm9kZS5nZXQoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCi0gICAgcmV0dXJuIGdldFByb3BlcnR5TmFtZVN0cmluZyhjb21wdXRlZFBy
b3BlcnRpZXNbaV0pOworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG5vZGUtPmNvbXB1dGVkU3R5
bGUobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKKyAgICBpZiAoIXN0eWxlKQorICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBpbmRleCA9IGkgLSBudW1D
b21wdXRlZFByb3BlcnRpZXM7CisgICAgCisgICAgY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcs
IFN0cmluZz4qIGN1c3RvbVByb3BlcnRpZXMgPSBzdHlsZS0+Y3VzdG9tUHJvcGVydGllcygpOwor
ICAgIGlmICghY3VzdG9tUHJvcGVydGllcyB8fCBpbmRleCA+PSBjdXN0b21Qcm9wZXJ0aWVzLT5z
aXplKCkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIAorICAgIFZlY3RvcjxT
dHJpbmcsIDQ+IHJlc3VsdHM7CisgICAgY29weUtleXNUb1ZlY3RvcigqY3VzdG9tUHJvcGVydGll
cywgcmVzdWx0cyk7CisgICAgcmV0dXJuIHJlc3VsdHMuYXQoaW5kZXgpOwogfQogCiBib29sIENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5TWF0Y2hlcyhDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQsIGNvbnN0IENTU1ZhbHVlKiB2YWx1ZSkgY29uc3QKQEAgLTM0ODIsNiArMzUyMCwyMiBA
QCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsCiAgICAgICAgIGlmICh2
YWx1ZSkKICAgICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUu
cmVsZWFzZSgpLCBmYWxzZSkpOwogICAgIH0KKyAgICAKKyAgICBOb2RlKiBzdHlsZWROb2RlID0g
dGhpcy0+c3R5bGVkTm9kZSgpOworICAgIGlmIChzdHlsZWROb2RlKSB7CisgICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eShzdHls
ZWROb2RlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIsIENTU1Byb3BlcnR5Q3VzdG9tKTsKKyAg
ICAgICAgaWYgKHN0eWxlKSB7CisgICAgICAgICAgICBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgU3RyaW5nPiogY3VzdG9tUHJvcGVydGllcyA9IHN0eWxlLT5jdXN0b21Qcm9wZXJ0aWVzKCk7
CisgICAgICAgICAgICBpZiAoY3VzdG9tUHJvcGVydGllcykgeworICAgICAgICAgICAgICAgIEhh
c2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjdXN0b21Q
cm9wZXJ0aWVzLT5lbmQoKTsKKyAgICAgICAgICAgICAgICBmb3IgKEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGN1c3RvbVByb3BlcnRpZXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZT4gdmFsdWUgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUo
aXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlDdXN0b20sIHZhbHVlLnJlbGVhc2UoKSwgZmFsc2UpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCiAg
ICAgcmV0dXJuIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlz
dC5zaXplKCkpOwogfQogCkBAIC0zNDkwLDggKzM1NDQsMTggQEAgQ1NTUnVsZSogQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpwYQogICAgIHJldHVybiBudWxscHRyOwogfQogCitzdGF0aWMg
Ym9vbCBpc0N1c3RvbVByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKK3sK
KyAgICByZXR1cm4gcHJvcGVydHlOYW1lLmxlbmd0aCgpID4gMiAmJiBwcm9wZXJ0eU5hbWUuY2hh
cmFjdGVyQXQoMCkgPT0gJy0nICYmIHByb3BlcnR5TmFtZS5jaGFyYWN0ZXJBdCgxKSA9PSAnLSc7
Cit9CisKIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQ
cm9wZXJ0eUNTU1ZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogeworICAgIGlmIChp
c0N1c3RvbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZT4gdmFsdWUgPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKG1fbm9kZSwgbV9hbGxvd1Zpc2l0
ZWRTdHlsZSwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKS5jdXN0b21Qcm9wZXJ0eVZhbHVlKHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLT5jbG9uZUZvckNTU09N
KCkgOiBudWxscHRyOworICAgIH0KKwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNz
c1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SUQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMzUwMSw2ICszNTY1LDEzIEBAIFJlZlB0cjxDU1NWYWx1ZT4g
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmEKIAogU3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcgJnByb3BlcnR5TmFtZSkKIHsKKyAg
ICBpZiAoaXNDdXN0b21Qcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgeworICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihtX25vZGUsIG1fYWxs
b3dWaXNpdGVkU3R5bGUsIG1fcHNldWRvRWxlbWVudFNwZWNpZmllcikuY3VzdG9tUHJvcGVydHlW
YWx1ZShwcm9wZXJ0eU5hbWUpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0
dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4gdmFsdWUtPmNzc1RleHQoKTsKKyAgICB9CisK
ICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFt
ZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
CShyZXZpc2lvbiAxOTAxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgog
ICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IoUGFzc1JlZlB0cjxOb2RlPiwgYm9vbCBhbGxvd1Zp
c2l0ZWRTdHlsZSA9IGZhbHNlLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKIAogICAgIFJlZlB0cjxD
U1NWYWx1ZT4gcHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0ID0gVXBk
YXRlTGF5b3V0KSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGN1c3RvbVByb3BlcnR5VmFs
dWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAgICAgLy8gSGVscGVyIG1l
dGhvZHMgZm9yIEhUTUwgZWRpdGluZy4KICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVuc2lnbmVkIGxl
bmd0aCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENTU0N1c3RvbVByb3Bl
cnR5VmFsdWVfaAorI2RlZmluZSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlX2gKKworI2luY2x1ZGUg
IkNTU1ZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCB2YWx1ZSkpOworICAgIH0KKyAgICAKKyAgICBi
b29sIGVxdWFscyhjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV9uYW1lID09IG90aGVyLm1fbmFtZSAmJiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7
IH0KKworICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsg
fQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1l
OyB9CisgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
KyAgICAKK3ByaXZhdGU6CisgICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgICAgIDogQ1NTVmFsdWUoQ3Vz
dG9tUHJvcGVydHlDbGFzcykKKyAgICAgICAgLCBtX25hbWUobmFtZSkKKyAgICAgICAgLCBtX3Zh
bHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcgbV9uYW1l
OworICAgIGNvbnN0IFN0cmluZyBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxVRShDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlLCBpc0N1c3RvbVByb3BlcnR5VmFsdWUoKSkKKworI2VuZGlmIC8vIENTU0N1c3RvbVByb3Bl
cnR5VmFsdWVfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCShyZXZpc2lvbiAx
OTAxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw2ICs4OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NTU1Rva2VuQVN0cmlu
ZyhpbnQKICAgICBjYXNlIERJUkZVTkNUSU9OOgogICAgIGNhc2UgUk9MRUZVTkNUSU9OOgogI2Vu
ZGlmCisgICAgY2FzZSBDVVNUT01fUFJPUEVSVFk6CiAgICAgY2FzZSBVTklDT0RFUkFOR0U6CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CkBAIC0yNDQsNiArMjQ1LDggQEAgc3Rh
dGljIGJvb2wgc2VsZWN0b3JMaXN0RG9lc05vdE1hdGNoQW55UAogJXRva2VuIDxzdHJpbmc+IFJP
TEVGVU5DVElPTgogI2VuZGlmCiAKKyV0b2tlbiA8c3RyaW5nPiBDVVNUT01fUFJPUEVSVFkKKwog
JXRva2VuIDxzdHJpbmc+IFVOSUNPREVSQU5HRQogCiAldHlwZSA8cmVsYXRpb24+IGNvbWJpbmF0
b3IKQEAgLTE1MzUsNyArMTUzOCwxMyBAQCBkZWNsX2xpc3RfcmVjb3Zlcnk6CiAgICAgOwogCiBk
ZWNsYXJhdGlvbjoKLSAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvcml0eSB7
CisgICAgQ1VTVE9NX1BST1BFUlRZIG1heWJlX3NwYWNlICc6JyBtYXliZV9zcGFjZSBleHByIHBy
aW9yaXR5IHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclZhbHVlTGlzdD4gcHJv
cGVydHlWYWx1ZSgkNSk7CisgICAgICAgIHBhcnNlci0+YWRkQ3VzdG9tUHJvcGVydHlEZWNsYXJh
dGlvbigkMSwgcHJvcGVydHlWYWx1ZS5nZXQoKSwgJDYpOworICAgICAgICAkJCA9IHRydWU7Cisg
ICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKCQ2LCB0cnVlKTsKKyAgICB9CisgICAgfCBw
cm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvcml0eSB7CiAgICAgICAgICQkID0gZmFs
c2U7CiAgICAgICAgIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCA9IGZhbHNlOwogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyVmFsdWVMaXN0PiBwcm9wZXJ0eVZhbHVlKCQ0KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiAxOTAxMjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIkNTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0Ny
b3NzZmFkZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCIKICNpbmNsdWRlICJDU1NGaWx0ZXJJbWFnZVZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZh
Y2VTcmNWYWx1ZS5oIgpAQCAtMTU2MCwxMyArMTU2MSwyMyBAQCBDU1NQYXJzZXI6OlNvdXJjZVNp
emUgQ1NTUGFyc2VyOjpzb3VyY2VTCiAgICAgcmV0dXJuIFNvdXJjZVNpemUoV1RGOjptb3ZlKGV4
cHJlc3Npb24pLCBXVEY6Om1vdmUodmFsdWUpKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGZp
bHRlclByb3BlcnRpZXMoYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlcjo6UGFyc2VkUHJv
cGVydHlWZWN0b3ImIGlucHV0LCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4mIG91dHB1dCwgc2l6
ZV90JiB1bnVzZWRFbnRyaWVzLCBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzPiYgc2VlblBy
b3BlcnRpZXMpCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsdGVyUHJvcGVydGllcyhib29sIGltcG9y
dGFudCwgY29uc3QgQ1NTUGFyc2VyOjpQYXJzZWRQcm9wZXJ0eVZlY3RvciYgaW5wdXQsIFZlY3Rv
cjxDU1NQcm9wZXJ0eSwgMjU2PiYgb3V0cHV0LCBzaXplX3QmIHVudXNlZEVudHJpZXMsIHN0ZDo6
Yml0c2V0PG51bUNTU1Byb3BlcnRpZXM+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxBdG9taWNT
dHJpbmc+JiBzZWVuQ3VzdG9tUHJvcGVydGllcykKIHsKICAgICAvLyBBZGQgcHJvcGVydGllcyBp
biByZXZlcnNlIG9yZGVyIHNvIHRoYXQgaGlnaGVzdCBwcmlvcml0eSBkZWZpbml0aW9ucyBhcmUg
cmVhY2hlZCBmaXJzdC4gRHVwbGljYXRlIGRlZmluaXRpb25zIGNhbiB0aGVuIGJlIGlnbm9yZWQg
d2hlbiBmb3VuZC4KICAgICBmb3IgKGludCBpID0gaW5wdXQuc2l6ZSgpIC0gMTsgaSA+PSAwOyAt
LWkpIHsKICAgICAgICAgY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5ID0gaW5wdXRbaV07CiAg
ICAgICAgIGlmIChwcm9wZXJ0eS5pc0ltcG9ydGFudCgpICE9IGltcG9ydGFudCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgaWYgKHByb3BlcnR5LmlkKCkgPT0gQ1NT
UHJvcGVydHlDdXN0b20pIHsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9
IGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS52YWx1ZSgpKS5uYW1l
KCk7CisgICAgICAgICAgICBpZiAoc2VlbkN1c3RvbVByb3BlcnRpZXMuY29udGFpbnMobmFtZSkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBzZWVuQ3VzdG9tUHJvcGVy
dGllcy5hZGQobmFtZSk7CisgICAgICAgICAgICBvdXRwdXRbLS11bnVzZWRFbnRyaWVzXSA9IHBy
b3BlcnR5OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBjb25z
dCB1bnNpZ25lZCBwcm9wZXJ0eUlESW5kZXggPSBwcm9wZXJ0eS5pZCgpIC0gZmlyc3RDU1NQcm9w
ZXJ0eTsKICAgICAgICAgQVNTRVJUKHByb3BlcnR5SURJbmRleCA8IHNlZW5Qcm9wZXJ0aWVzLnNp
emUoKSk7CiAgICAgICAgIGlmIChzZWVuUHJvcGVydGllc1twcm9wZXJ0eUlESW5kZXhdKQpAQCAt
MTU4Myw4ICsxNTk0LDkgQEAgUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ1NTUGFyc2Vy
OgogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiByZXN1bHRzKHVudXNlZEVudHJpZXMpOwog
CiAgICAgLy8gSW1wb3J0YW50IHByb3BlcnRpZXMgaGF2ZSBoaWdoZXIgcHJpb3JpdHksIHNvIGFk
ZCB0aGVtIGZpcnN0LiBEdXBsaWNhdGUgZGVmaW5pdGlvbnMgY2FuIHRoZW4gYmUgaWdub3JlZCB3
aGVuIGZvdW5kLgotICAgIGZpbHRlclByb3BlcnRpZXModHJ1ZSwgbV9wYXJzZWRQcm9wZXJ0aWVz
LCByZXN1bHRzLCB1bnVzZWRFbnRyaWVzLCBzZWVuUHJvcGVydGllcyk7Ci0gICAgZmlsdGVyUHJv
cGVydGllcyhmYWxzZSwgbV9wYXJzZWRQcm9wZXJ0aWVzLCByZXN1bHRzLCB1bnVzZWRFbnRyaWVz
LCBzZWVuUHJvcGVydGllcyk7CisgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHNlZW5DdXN0b21Q
cm9wZXJ0aWVzOworICAgIGZpbHRlclByb3BlcnRpZXModHJ1ZSwgbV9wYXJzZWRQcm9wZXJ0aWVz
LCByZXN1bHRzLCB1bnVzZWRFbnRyaWVzLCBzZWVuUHJvcGVydGllcywgc2VlbkN1c3RvbVByb3Bl
cnRpZXMpOworICAgIGZpbHRlclByb3BlcnRpZXMoZmFsc2UsIG1fcGFyc2VkUHJvcGVydGllcywg
cmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRpZXMsIHNlZW5DdXN0b21Qcm9wZXJ0
aWVzKTsKICAgICBpZiAodW51c2VkRW50cmllcykKICAgICAgICAgcmVzdWx0cy5yZW1vdmUoMCwg
dW51c2VkRW50cmllcyk7CiAKQEAgLTQwOTcsNyArNDEwOSwyOSBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VBbHQoQ1NTUHJvcGVydHlJRCBwCiAKICAgICByZXR1cm4gZmFsc2U7CiB9Ci0gICAgCisK
K3ZvaWQgQ1NTUGFyc2VyOjphZGRDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKGNvbnN0IENTU1Bh
cnNlclN0cmluZyYgbmFtZSwgQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZSwgYm9vbCBpbXBvcnRh
bnQpCit7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIGN1
c3RvbSBwcm9wZXJ0eSBjb21lcyBpbiBhcyBhIHBhcnNlZCBzZXQgb2YgQ1NTUGFyc2VyVmFsdWVz
IGNvbGxlY3RlZCBpbnRvIGEgbGlzdC4KKyAgICAvLyBGb3IgQ1NTIHZhcmlhYmxlcywgd2UganVz
dCB3YW50IHRvIHRyZWF0IHRoZSBlbnRpcmUgc2V0IG9mIHZhbHVlcyBhcyBhIHN0cmluZywgc28g
d2hhdCB3ZSBkbworICAgIC8vIGlzIGJ1aWxkIHVwIGEgc2V0IG9mIENTU1ZhbHVlcyBhbmQgc2Vy
aWFsaXplIHRoZW0gdXNpbmcgY3NzVGV4dCwgc2VwYXJhdGluZyBtdWx0aXBsZSB2YWx1ZXMKKyAg
ICAvLyB3aXRoIHNwYWNlcy4KKyAgICBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1lID0gbmFtZTsK
KyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHZhbHVlLT5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAoaSkKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUgPSB2YWx1
ZS0+dmFsdWVBdChpKS0+Y3JlYXRlQ1NTVmFsdWUoKTsKKyAgICAgICAgaWYgKCFjc3NWYWx1ZSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoY3NzVmFsdWUtPmNz
c1RleHQoKSk7CisgICAgfQorICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Q3VzdG9tLCBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUocHJvcGVydHlOYW1lLCBidWlsZGVyLnRvU3RyaW5n
KCkubG93ZXIoKSksIGltcG9ydGFudCwgZmFsc2UpOworfQorCiAvLyBbIDxzdHJpbmc+IHwgPHVy
aT4gfCA8Y291bnRlcj4gfCBhdHRyKFgpIHwgb3Blbi1xdW90ZSB8IGNsb3NlLXF1b3RlIHwgbm8t
b3Blbi1xdW90ZSB8IG5vLWNsb3NlLXF1b3RlIF0rIHwgaW5oZXJpdAogLy8gaW4gQ1NTIDIuMSB0
aGlzIGdvdCBzb21ld2hhdCByZWR1Y2VkOgogLy8gWyA8c3RyaW5nPiB8IGF0dHIoWCkgfCBvcGVu
LXF1b3RlIHwgY2xvc2UtcXVvdGUgfCBuby1vcGVuLXF1b3RlIHwgbm8tY2xvc2UtcXVvdGUgXSsg
fCBpbmhlcml0CkBAIC0xMDc0Nyw2ICsxMDc4MSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJ
ZGVudGlmaWVyU3RhcnRBZnRlCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgorc3RhdGljIGlubGluZSBib29sIGlzQ3VzdG9tUHJvcGVydHlJZGVudGlmaWVyKENoYXJhY3Rl
clR5cGUqIGN1cnJlbnRDaGFyYWN0ZXIpCit7CisgICAgcmV0dXJuIGlzQVNDSUlBbHBoYShjdXJy
ZW50Q2hhcmFjdGVyWzBdKSB8fCBjdXJyZW50Q2hhcmFjdGVyWzBdID09ICdfJyB8fCBjdXJyZW50
Q2hhcmFjdGVyWzBdID49IDEyOAorICAgICAgICB8fCAoY3VycmVudENoYXJhY3RlclswXSA9PSAn
XFwnICYmIGlzQ1NTRXNjYXBlKGN1cnJlbnRDaGFyYWN0ZXJbMV0pKTsKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIGJvb2wgaXNFcXVhbFRvQ1NT
SWRlbnRpZmllcihDaGFyYWN0ZXJUeXBlKiBjc3NTdHJpbmcsIGNvbnN0IGNoYXIqIGNvbnN0YW50
U3RyaW5nKQogewogICAgIC8vIENvbXBhcmUgYW4gY2hhcmFjdGVyIG1lbW9yeSBkYXRhIHdpdGgg
YSB6ZXJvIHRlcm1pbmF0ZWQgc3RyaW5nLgpAQCAtMTA5ODUsMTAgKzExMDI2LDYgQEAgaW5saW5l
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUlkZW50aWZpZXJJbgogdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CiBpbmxpbmUgdm9pZCBDU1NQYXJzZXI6OnBhcnNlSWRlbnRpZmllcihDaGFy
YWN0ZXJUeXBlKiYgcmVzdWx0LCBDU1NQYXJzZXJTdHJpbmcmIHJlc3VsdFN0cmluZywgYm9vbCYg
aGFzRXNjYXBlKQogewotICAgIC8vIElmIGEgdmFsaWQgaWRlbnRpZmllciBzdGFydCBpcyBmb3Vu
ZCwgd2UgY2FuIHNhZmVseQotICAgIC8vIHBhcnNlIHRoZSBpZGVudGlmaWVyIHVudGlsIHRoZSBu
ZXh0IGludmFsaWQgY2hhcmFjdGVyLgotICAgIEFTU0VSVChpc0lkZW50aWZpZXJTdGFydDxDaGFy
YWN0ZXJUeXBlPigpKTsKLQogICAgIENoYXJhY3RlclR5cGUqIHN0YXJ0ID0gY3VycmVudENoYXJh
Y3RlcjxDaGFyYWN0ZXJUeXBlPigpOwogICAgIGlmIChVTkxJS0VMWSghcGFyc2VJZGVudGlmaWVy
SW50ZXJuYWwoY3VycmVudENoYXJhY3RlcjxDaGFyYWN0ZXJUeXBlPigpLCByZXN1bHQsIGhhc0Vz
Y2FwZSkpKSB7CiAgICAgICAgIC8vIEZvdW5kIGFuIGVzY2FwZSB3ZSBjb3VsZG4ndCBoYW5kbGUg
d2l0aCA4IGJpdHMsIGNvcHkgd2hhdCBoYXMgYmVlbiByZWNvZ25pemVkIGFuZCBjb250aW51ZQpA
QCAtMTE5MjgsNiArMTE5NjUsMTIgQEAgcmVzdGFydEFmdGVyQ29tbWVudDoKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJlc3VsdFN0cmluZy5zZXRMZW5ndGgocmVzdWx0IC0gdG9rZW5TdGFy
dDxTcmNDaGFyYWN0ZXJUeXBlPigpKTsKICAgICAgICAgICAgIHl5bHZhbC0+c3RyaW5nID0gcmVz
dWx0U3RyaW5nOworICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFj
dGVyVHlwZT4oKVswXSA9PSAnLScgJiYKKyAgICAgICAgICAgICAgICAgIGlzSWRlbnRpZmllclN0
YXJ0QWZ0ZXJEYXNoKGN1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKSArIDEpKSB7
CisgICAgICAgICAgICAtLWN1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKTsKKyAg
ICAgICAgICAgIHBhcnNlSWRlbnRpZmllcihyZXN1bHQsIHJlc3VsdFN0cmluZywgaGFzRXNjYXBl
KTsKKyAgICAgICAgICAgIG1fdG9rZW4gPSBDVVNUT01fUFJPUEVSVFk7CisgICAgICAgICAgICB5
eWx2YWwtPnN0cmluZyA9IHJlc3VsdFN0cmluZzsKICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50
Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KClbMF0gPT0gJy0nICYmIGN1cnJlbnRDaGFyYWN0
ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKVsxXSA9PSAnPicpIHsKICAgICAgICAgICAgIGN1cnJlbnRD
aGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKSArPSAyOwogICAgICAgICAgICAgbV90b2tlbiA9
IFNHTUxfQ0Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCShyZXZpc2lvbiAxOTAxMjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2
ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBwYXJzZVF1b3RlcyhDU1NQcm9wZXJ0eUlELCBi
b29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUFsdChDU1NQcm9wZXJ0eUlELCBib29sIGlt
cG9ydGFudCk7CiAgICAgCisgICAgdm9pZCBhZGRDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKGNv
bnN0IENTU1BhcnNlclN0cmluZyYsIENTU1BhcnNlclZhbHVlTGlzdCosIGJvb2wgaW1wb3J0YW50
KTsKKyAgICAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQXR0cihDU1NQYXJzZXJWYWx1ZUxp
c3QmIGFyZ3MpOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUJhY2tncm91bmRDb2xvcigp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCShyZXZpc2lvbiAxOTAxMjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSAiQ1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTQ3Jvc3NmYWRlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCisj
aW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZpbHRlcklt
YWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250RmFjZVNyY1ZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTRm9udEZlYXR1cmVWYWx1ZS5oIgpAQCAtMjM2LDYgKzIzNyw5IEBAIGJvb2wgQ1NTVmFsdWU6
OmVxdWFscyhjb25zdCBDU1NWYWx1ZSYgb3QKICNlbmRpZgogICAgICAgICBjYXNlIENTU0NvbnRl
bnREaXN0cmlidXRpb25DbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVz
PENTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2Fz
ZSBDdXN0b21Qcm9wZXJ0eUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1
ZXM8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgCiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMzMCw3ICszMzQsMTAgQEAgU3RyaW5nIENTU1ZhbHVlOjpj
c3NUZXh0KCkgY29uc3QKICNlbmRpZgogICAgIGNhc2UgQ1NTQ29udGVudERpc3RyaWJ1dGlvbkNs
YXNzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVl
PigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOworICAgIGNhc2UgQ3VzdG9tUHJvcGVydHlDbGFzczoK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCp0aGlzKS5j
dXN0b21DU1NUZXh0KCk7CiAgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQpAQCAtNDUzLDYgKzQ2MCw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRl
c3Ryb3koKQogICAgIGNhc2UgQ1NTQ29udGVudERpc3RyaWJ1dGlvbkNsYXNzOgogICAgICAgICBk
ZWxldGUgZG93bmNhc3Q8Q1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlPih0aGlzKTsKICAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgQ3VzdG9tUHJvcGVydHlDbGFzczoKKyAgICAgICAgZGVsZXRl
IGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KHRoaXMpOworICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmgJKHJldmlzaW9uIDE5MDEyNikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2Fu
dmFzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDYW52YXNDbGFzczsgfQog
ICAgIGJvb2wgaXNDcm9zc2ZhZGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09
IENyb3NzZmFkZUNsYXNzOyB9CiAgICAgYm9vbCBpc0N1cnNvckltYWdlVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDdXJzb3JJbWFnZUNsYXNzOyB9CisgICAgYm9vbCBpc0N1
c3RvbVByb3BlcnR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDdXN0b21Q
cm9wZXJ0eUNsYXNzOyB9CiAgICAgYm9vbCBpc0Z1bmN0aW9uVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2NsYXNzVHlwZSA9PSBGdW5jdGlvbkNsYXNzOyB9CiAgICAgYm9vbCBpc0ZvbnRGZWF0dXJl
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBGb250RmVhdHVyZUNsYXNzOyB9
CiAgICAgYm9vbCBpc0ZvbnRGYWNlU3JjVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlw
ZSA9PSBGb250RmFjZVNyY0NsYXNzOyB9CkBAIC0xNzYsNyArMTc3LDggQEAgcHJvdGVjdGVkOgog
I2VuZGlmCiAKICAgICAgICAgQ1NTQ29udGVudERpc3RyaWJ1dGlvbkNsYXNzLAotCisgICAgICAg
IEN1c3RvbVByb3BlcnR5Q2xhc3MsCisgICAgICAgIAogICAgICAgICAvLyBMaXN0IGNsYXNzIHR5
cGVzIG11c3QgYXBwZWFyIGFmdGVyIFZhbHVlTGlzdENsYXNzLgogICAgICAgICBWYWx1ZUxpc3RD
bGFzcywKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lv
biAxOTAxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogCisj
aW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5o
IgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAg
LTE2MCw4ICsxNjEsMjAgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNl
dAogICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7ICAgIAogfQogCitz
dGF0aWMgYm9vbCBpc0N1c3RvbVByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSkKK3sKKyAgICByZXR1cm4gcHJvcGVydHlOYW1lLmxlbmd0aCgpID4gMiAmJiBwcm9wZXJ0eU5h
bWUuY2hhcmFjdGVyQXQoMCkgPT0gJy0nICYmIHByb3BlcnR5TmFtZS5jaGFyYWN0ZXJBdCgxKSA9
PSAnLSc7Cit9CisKIFJlZlB0cjxDU1NWYWx1ZT4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewor
ICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBtX3Byb3BlcnR5U2V0LT5nZXRDdXN0b21Qcm9wZXJ0eUNT
U1ZhbHVlKHByb3BlcnR5TmFtZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGNsb25lQW5kQ2FjaGVGb3JDU1NPTSh2YWx1
ZS5nZXQoKSk7CisgICAgfQorICAgIAogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNz
c1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SUQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMTcwLDYgKzE4Myw5IEBAIFJlZlB0cjxDU1NWYWx1ZT4gUHJv
cGVydHlTZXRDU1NTdHlsZURlY2wKIAogU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKKyAg
ICBpZiAoaXNDdXN0b21Qcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJu
IG1fcHJvcGVydHlTZXQtPmdldEN1c3RvbVByb3BlcnR5VmFsdWUocHJvcGVydHlOYW1lKTsKKwog
ICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1l
KTsKICAgICBpZiAoIXByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTE3
OCw2ICsxOTQsOSBAQCBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnCiAK
IFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5UHJpb3Jp
dHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CisgICAgaWYgKGlzQ3VzdG9tUHJvcGVy
dHlOYW1lKHByb3BlcnR5TmFtZSkpCisgICAgICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LT5jdXN0
b21Qcm9wZXJ0eUlzSW1wb3J0YW50KHByb3BlcnR5TmFtZSkgPyAiaW1wb3J0YW50IiA6ICIiOwor
CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5h
bWUpOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAt
MjAzLDcgKzIyMiwxMCBAQCBib29sIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6aXNQ
CiB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYg
cHJpb3JpdHksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRp
b25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOworICAgIAogICAgIENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKKyAgICBpZiAoaXNDdXN0b21Q
cm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcHJvcGVydHlJRCA9IENTU1Byb3Bl
cnR5Q3VzdG9tOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0y
MTMsNyArMjM1LDcgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAog
ICAgIGJvb2wgaW1wb3J0YW50ID0gcHJpb3JpdHkuZmluZCgiaW1wb3J0YW50IiwgMCwgZmFsc2Up
ICE9IG5vdEZvdW5kOwogCiAgICAgZWMgPSAwOwotICAgIGJvb2wgY2hhbmdlZCA9IG1fcHJvcGVy
dHlTZXQtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNvbnRleHRT
dHlsZVNoZWV0KCkpOworICAgIGJvb2wgY2hhbmdlZCA9IHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVy
dHlDdXN0b20gPyBtX3Byb3BlcnR5U2V0LT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwg
aW1wb3J0YW50LCBjb250ZXh0U3R5bGVTaGVldCgpKSA6IG1fcHJvcGVydHlTZXQtPnNldEN1c3Rv
bVByb3BlcnR5KHByb3BlcnR5TmFtZSwgdmFsdWUsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hl
ZXQoKSk7CiAKICAgICBkaWRNdXRhdGUoY2hhbmdlZCA/IFByb3BlcnR5Q2hhbmdlZCA6IE5vQ2hh
bmdlcyk7CiAKQEAgLTIyOCw2ICsyNTAsOCBAQCBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uOjpyCiB7CiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9u
U2NvcGUodGhpcyk7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJ
RChwcm9wZXJ0eU5hbWUpOworICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5h
bWUpKQorICAgICAgICBwcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHlDdXN0b207CiAgICAgaWYgKCFw
cm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTIzNiw3ICsyNjAsNyBA
QCBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyCiAKICAgICBlYyA9IDA7
CiAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICBib29sIGNoYW5nZWQgPSBtX3Byb3BlcnR5U2V0LT5y
ZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eUlELCAmcmVzdWx0KTsKKyAgICBib29sIGNoYW5nZWQgPSBw
cm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5Q3VzdG9tID8gbV9wcm9wZXJ0eVNldC0+cmVtb3ZlUHJv
cGVydHkocHJvcGVydHlJRCwgJnJlc3VsdCkgOiBtX3Byb3BlcnR5U2V0LT5yZW1vdmVDdXN0b21Q
cm9wZXJ0eShwcm9wZXJ0eU5hbWUsICZyZXN1bHQpOwogCiAgICAgZGlkTXV0YXRlKGNoYW5nZWQg
PyBQcm9wZXJ0eUNoYW5nZWQgOiBOb0NoYW5nZXMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMTkwMTI2KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAK
ICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKIAogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCIKICNp
bmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5j
bHVkZSAiQ1NTVmFsdWVMaXN0LmgiCkBAIC0yMjAsNiArMjIxLDE0IEBAIFN0cmluZyBTdHlsZVBy
b3BlcnRpZXM6OmdldFByb3BlcnR5VmFsdWUKICAgICB9CiB9CiAKK1N0cmluZyBTdHlsZVByb3Bl
cnRpZXM6OmdldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUp
IGNvbnN0Cit7CisgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldEN1c3RvbVByb3BlcnR5
Q1NTVmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICBpZiAodmFsdWUpCisgICAgICAgIHJldHVybiB2
YWx1ZS0+Y3NzVGV4dCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogU3RyaW5nIFN0eWxl
UHJvcGVydGllczo6Ym9yZGVyU3BhY2luZ1ZhbHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIHNob3J0aGFuZCkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IGhvcml6b250YWxW
YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVswXSk7CkBA
IC01ODcsNiArNTk2LDE0IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IFN0eWxlUHJvcGVydGllczo6
Z2UKICAgICByZXR1cm4gcHJvcGVydHlBdChmb3VuZFByb3BlcnR5SW5kZXgpLnZhbHVlKCk7CiB9
CiAKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+IFN0eWxlUHJvcGVydGllczo6Z2V0Q3VzdG9tUHJvcGVy
dHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBpbnQg
Zm91bmRQcm9wZXJ0eUluZGV4ID0gZmluZEN1c3RvbVByb3BlcnR5SW5kZXgocHJvcGVydHlOYW1l
KTsKKyAgICBpZiAoZm91bmRQcm9wZXJ0eUluZGV4ID09IC0xKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gcHJvcGVydHlBdChmb3VuZFByb3BlcnR5SW5kZXgpLnZhbHVlKCk7
Cit9CisKIGJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6cmVtb3ZlU2hvcnRoYW5kUHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewogICAgIFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQgc2hvcnRoYW5kID0gc2hvcnRoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJRCk7CkBAIC02MzEs
NiArNjQ4LDI1IEBAIGJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6cmVtb3ZlUHJvcGUKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpyZW1vdmVD
dXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgU3RyaW5nKiByZXR1cm5U
ZXh0KQoreworICAgIGludCBmb3VuZFByb3BlcnR5SW5kZXggPSBmaW5kQ3VzdG9tUHJvcGVydHlJ
bmRleChwcm9wZXJ0eU5hbWUpOworICAgIGlmIChmb3VuZFByb3BlcnR5SW5kZXggPT0gLTEpIHsK
KyAgICAgICAgaWYgKHJldHVyblRleHQpCisgICAgICAgICAgICAqcmV0dXJuVGV4dCA9ICIiOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHJldHVyblRleHQpCisgICAg
ICAgICpyZXR1cm5UZXh0ID0gcHJvcGVydHlBdChmb3VuZFByb3BlcnR5SW5kZXgpLnZhbHVlKCkt
PmNzc1RleHQoKTsKKworICAgIC8vIEEgbW9yZSBlZmZpY2llbnQgcmVtb3ZhbCBzdHJhdGVneSB3
b3VsZCBpbnZvbHZlIG1hcmtpbmcgZW50cmllcyBhcyBlbXB0eQorICAgIC8vIGFuZCBzd2VlcGlu
ZyB0aGVtIHdoZW4gdGhlIHZlY3RvciBncm93cyB0b28gYmlnLgorICAgIG1fcHJvcGVydHlWZWN0
b3IucmVtb3ZlKGZvdW5kUHJvcGVydHlJbmRleCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
dm9pZCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpyZW1vdmVQcmVmaXhlZE9yVW5wcmVmaXhlZFBy
b3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICBpbnQgZm91bmRQcm9wZXJ0
eUluZGV4ID0gZmluZFByb3BlcnR5SW5kZXgocHJlZml4aW5nVmFyaWFudEZvclByb3BlcnR5SWQo
cHJvcGVydHlJRCkpOwpAQCAtNjU2LDYgKzY5MiwxNCBAQCBib29sIFN0eWxlUHJvcGVydGllczo6
cHJvcGVydHlJc0ltcG9ydGFuCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgU3R5bGVQcm9w
ZXJ0aWVzOjpjdXN0b21Qcm9wZXJ0eUlzSW1wb3J0YW50KGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lKSBjb25zdAoreworICAgIGludCBmb3VuZFByb3BlcnR5SW5kZXggPSBmaW5kQ3VzdG9tUHJv
cGVydHlJbmRleChwcm9wZXJ0eU5hbWUpOworICAgIGlmIChmb3VuZFByb3BlcnR5SW5kZXggIT0g
LTEpCisgICAgICAgIHJldHVybiBwcm9wZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkuaXNJbXBv
cnRhbnQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFN0cmluZyBTdHlsZVByb3BlcnRpZXM6
OmdldFByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgY29uc3QKIHsK
ICAgICBpbnQgZm91bmRQcm9wZXJ0eUluZGV4ID0gZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHlJ
RCk7CkBAIC02ODQsNiArNzI4LDIxIEBAIGJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0
UHJvcGVydHkKICAgICByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHRoaXMsIHByb3BlcnR5
SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUoKSwgY29udGV4dFN0eWxlU2hlZXQp
ID09IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkNoYW5nZWQ7CiB9CiAKK2Jvb2wgTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6c2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBTdHlsZVNoZWV0Q29udGVu
dHMqIC8qY29udGV4dFN0eWxlU2hlZXQqLykKK3sKKyAgICAvLyBTZXR0aW5nIHRoZSB2YWx1ZSB0
byBhbiBlbXB0eSBzdHJpbmcganVzdCByZW1vdmVzIHRoZSBwcm9wZXJ0eSBpbiBib3RoIElFIGFu
ZCBHZWNrby4KKyAgICAvLyBTZXR0aW5nIGl0IHRvIG51bGwgc2VlbXMgdG8gcHJvZHVjZSBsZXNz
IGNvbnNpc3RlbnQgcmVzdWx0cywgYnV0IHdlIHRyZWF0IGl0IGp1c3QgdGhlIHNhbWUuCisgICAg
aWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHJlbW92ZUN1c3RvbVByb3BlcnR5
KHByb3BlcnR5TmFtZSk7CisKKyAgICAvLyBXaGVuIHJlcGxhY2luZyBhbiBleGlzdGluZyBwcm9w
ZXJ0eSB2YWx1ZSwgdGhpcyBtb3ZlcyB0aGUgcHJvcGVydHkgdG8gdGhlIGVuZCBvZiB0aGUgbGlz
dC4KKyAgICAvLyBGaXJlZm94IHByZXNlcnZlcyB0aGUgcG9zaXRpb24sIGFuZCBNU0lFIG1vdmVz
IHRoZSBwcm9wZXJ0eSB0byB0aGUgYmVnaW5uaW5nLgorICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlPiBjdXN0b21WYWx1ZSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZShw
cm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICBhZGRQYXJzZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eUN1c3RvbSwgY3VzdG9tVmFsdWUsIGltcG9ydGFudCkpOworICAgIAorICAgIHJl
dHVybiB0cnVlOworfQorCiB2b2lkIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcHJwVmFsdWUs
IGJvb2wgaW1wb3J0YW50KQogewogICAgIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQgc2hvcnRoYW5k
ID0gc2hvcnRoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJRCk7CkBAIC03MDIsNyArNzYxLDE1IEBA
IHZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0UHJvcGVydHkKIGJvb2wgTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6c2V0UHJvcGVydHkoY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5LCBD
U1NQcm9wZXJ0eSogc2xvdCkKIHsKICAgICBpZiAoIXJlbW92ZVNob3J0aGFuZFByb3BlcnR5KHBy
b3BlcnR5LmlkKCkpKSB7Ci0gICAgICAgIENTU1Byb3BlcnR5KiB0b1JlcGxhY2UgPSBzbG90ID8g
c2xvdCA6IGZpbmRDU1NQcm9wZXJ0eVdpdGhJRChwcm9wZXJ0eS5pZCgpKTsKKyAgICAgICAgQ1NT
UHJvcGVydHkqIHRvUmVwbGFjZSA9IHNsb3Q7CisgICAgICAgIGlmICghc2xvdCkgeworICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKKyAgICAgICAg
ICAgICAgICBpZiAocHJvcGVydHkudmFsdWUoKSkKKyAgICAgICAgICAgICAgICAgICAgdG9SZXBs
YWNlID0gZmluZEN1c3RvbUNTU1Byb3BlcnR5V2l0aE5hbWUoZG93bmNhc3Q8Q1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZT4oKnByb3BlcnR5LnZhbHVlKCkpLm5hbWUoKSk7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICB0b1JlcGxhY2UgPSBmaW5kQ1NTUHJvcGVydHlXaXRoSUQocHJv
cGVydHkuaWQoKSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmICh0b1JlcGxhY2Up
IHsKICAgICAgICAgICAgIGlmICgqdG9SZXBsYWNlID09IHByb3BlcnR5KQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTc4MSw2ICs4NDgsMTIgQEAgYm9vbCBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjphZGRQYXJzZWRQcgogCiBib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmFk
ZFBhcnNlZFByb3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSkKIHsKKyAgICBpZiAo
cHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkgeworICAgICAgICBpZiAoKHByb3Bl
cnR5LnZhbHVlKCkgJiYgIWN1c3RvbVByb3BlcnR5SXNJbXBvcnRhbnQoZG93bmNhc3Q8Q1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LnZhbHVlKCkpLm5hbWUoKSkpIHx8IHByb3BlcnR5
LmlzSW1wb3J0YW50KCkpCisgICAgICAgICAgICByZXR1cm4gc2V0UHJvcGVydHkocHJvcGVydHkp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAogICAgIC8vIE9ubHkgYWRkIHBy
b3BlcnRpZXMgdGhhdCBoYXZlIG5vICFpbXBvcnRhbnQgY291bnRlcnBhcnQgcHJlc2VudAogICAg
IGlmICghcHJvcGVydHlJc0ltcG9ydGFudChwcm9wZXJ0eS5pZCgpKSB8fCBwcm9wZXJ0eS5pc0lt
cG9ydGFudCgpKQogICAgICAgICByZXR1cm4gc2V0UHJvcGVydHkocHJvcGVydHkpOwpAQCAtOTcz
LDEyICsxMDQ2LDE3IEBAIFN0cmluZyBTdHlsZVByb3BlcnRpZXM6OmFzVGV4dCgpIGNvbnN0CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdmFsdWUgPSBwcm9wZXJ0eS52YWx1ZSgpLT5jc3NU
ZXh0KCk7CiAKLSAgICAgICAgaWYgKHZhbHVlID09ICJpbml0aWFsIiAmJiAhQ1NTUHJvcGVydHk6
OmlzSW5oZXJpdGVkUHJvcGVydHkocHJvcGVydHlJRCkpCisgICAgICAgIGlmIChwcm9wZXJ0eUlE
ICE9IENTU1Byb3BlcnR5Q3VzdG9tICYmIHZhbHVlID09ICJpbml0aWFsIiAmJiAhQ1NTUHJvcGVy
dHk6OmlzSW5oZXJpdGVkUHJvcGVydHkocHJvcGVydHlJRCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICBpZiAobnVtRGVjbHMrKykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAnKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRQcm9wZXJ0eU5hbWUocHJvcGVydHlJRCkp
OworCisgICAgICAgIGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Q3VzdG9tKQorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqcHJv
cGVydHkudmFsdWUoKSkubmFtZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChnZXRQcm9wZXJ0eU5hbWUocHJvcGVydHlJRCkpOworCiAgICAgICAgIHJlc3VsdC5h
cHBlbmRMaXRlcmFsKCI6ICIpOwogICAgICAgICByZXN1bHQuYXBwZW5kKHZhbHVlKTsKICAgICAg
ICAgaWYgKHByb3BlcnR5LmlzSW1wb3J0YW50KCkpCkBAIC0xMTc1LDYgKzEyNTMsNDIgQEAgaW50
IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmZpbmRQcm9wZXJ0eQogICAgIHJldHVybiAtMTsKIH0K
IAoraW50IEltbXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZmluZEN1c3RvbVByb3BlcnR5SW5kZXgo
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Cit7CisgICAgLy8gQ29udmVydCB0aGUg
cHJvcGVydHlJRCBpbnRvIGFuIHVpbnQxNl90IHRvIGNvbXBhcmUgaXQgd2l0aCB0aGUgbWV0YWRh
dGEncyBtX3Byb3BlcnR5SUQgdG8gYXZvaWQKKyAgICAvLyB0aGUgY29tcGlsZXIgY29udmVydGlu
ZyBpdCB0byBhbiBpbnQgbXVsdGlwbGUgdGltZXMgaW4gdGhlIGxvb3AuCisgICAgdWludDE2X3Qg
aWQgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4oQ1NTUHJvcGVydHlDdXN0b20pOworICAgIGZvciAo
aW50IG4gPSBtX2FycmF5U2l6ZSAtIDEgOyBuID49IDA7IC0tbikgeworICAgICAgICBpZiAobWV0
YWRhdGFBcnJheSgpW25dLm1fcHJvcGVydHlJRCA9PSBpZCkgeworICAgICAgICAgICAgLy8gV2Ug
Zm91bmQgYSBjdXN0b20gcHJvcGVydHkuIFNlZSBpZiB0aGUgbmFtZSBtYXRjaGVzLgorICAgICAg
ICAgICAgaWYgKCF2YWx1ZUFycmF5KClbbl0pCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBpZiAoZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnZhbHVlQXJy
YXkoKVtuXSkubmFtZSgpID09IHByb3BlcnR5TmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKworaW50IE11dGFibGVT
dHlsZVByb3BlcnRpZXM6OmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lKSBjb25zdAoreworICAgIC8vIENvbnZlcnQgdGhlIHByb3BlcnR5SUQgaW50byBh
biB1aW50MTZfdCB0byBjb21wYXJlIGl0IHdpdGggdGhlIG1ldGFkYXRhJ3MgbV9wcm9wZXJ0eUlE
IHRvIGF2b2lkCisgICAgLy8gdGhlIGNvbXBpbGVyIGNvbnZlcnRpbmcgaXQgdG8gYW4gaW50IG11
bHRpcGxlIHRpbWVzIGluIHRoZSBsb29wLgorICAgIHVpbnQxNl90IGlkID0gc3RhdGljX2Nhc3Q8
dWludDE2X3Q+KENTU1Byb3BlcnR5Q3VzdG9tKTsKKyAgICBmb3IgKGludCBuID0gbV9wcm9wZXJ0
eVZlY3Rvci5zaXplKCkgLSAxIDsgbiA+PSAwOyAtLW4pIHsKKyAgICAgICAgaWYgKG1fcHJvcGVy
dHlWZWN0b3IuYXQobikubWV0YWRhdGEoKS5tX3Byb3BlcnR5SUQgPT0gaWQpIHsKKyAgICAgICAg
ICAgIC8vIFdlIGZvdW5kIGEgY3VzdG9tIHByb3BlcnR5LiBTZWUgaWYgdGhlIG5hbWUgbWF0Y2hl
cy4KKyAgICAgICAgICAgIGlmICghbV9wcm9wZXJ0eVZlY3Rvci5hdChuKS52YWx1ZSgpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGRvd25jYXN0PENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+KCptX3Byb3BlcnR5VmVjdG9yLmF0KG4pLnZhbHVlKCkpLm5hbWUoKSA9
PSBwcm9wZXJ0eU5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG47CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gLTE7Cit9CisKIENTU1Byb3BlcnR5KiBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpmaW5kQ1NTUHJvcGVydHlXaXRoSUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQog
ewogICAgIGludCBmb3VuZFByb3BlcnR5SW5kZXggPSBmaW5kUHJvcGVydHlJbmRleChwcm9wZXJ0
eUlEKTsKQEAgLTExODMsNiArMTI5NywxNCBAQCBDU1NQcm9wZXJ0eSogTXV0YWJsZVN0eWxlUHJv
cGVydGllczo6ZmluCiAgICAgcmV0dXJuICZtX3Byb3BlcnR5VmVjdG9yLmF0KGZvdW5kUHJvcGVy
dHlJbmRleCk7CiB9CiAKK0NTU1Byb3BlcnR5KiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpmaW5k
Q3VzdG9tQ1NTUHJvcGVydHlXaXRoTmFtZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKK3sK
KyAgICBpbnQgZm91bmRQcm9wZXJ0eUluZGV4ID0gZmluZEN1c3RvbVByb3BlcnR5SW5kZXgocHJv
cGVydHlOYW1lKTsKKyAgICBpZiAoZm91bmRQcm9wZXJ0eUluZGV4ID09IC0xKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gJm1fcHJvcGVydHlWZWN0b3IuYXQoZm91bmRQcm9wZXJ0eUlu
ZGV4KTsKK30KKwogYm9vbCBTdHlsZVByb3BlcnRpZXM6OnByb3BlcnR5TWF0Y2hlcyhDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IENTU1ZhbHVlKiBwcm9wZXJ0eVZhbHVlKSBjb25zdAog
ewogICAgIGludCBmb3VuZFByb3BlcnR5SW5kZXggPSBmaW5kUHJvcGVydHlJbmRleChwcm9wZXJ0
eUlEKTsKQEAgLTEyNjUsNiArMTM4Nyw4IEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBN
dXRhYmxlU3R5bGUKIAogU3RyaW5nIFN0eWxlUHJvcGVydGllczo6UHJvcGVydHlSZWZlcmVuY2U6
OmNzc05hbWUoKSBjb25zdAogeworICAgIGlmIChpZCgpID09IENTU1Byb3BlcnR5Q3VzdG9tKQor
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnZhbHVlKCkp
Lm5hbWUoKTsKICAgICByZXR1cm4gZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGlkKCkpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCShyZXZpc2lvbiAxOTAxMjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkyLDYgKzkyLDEwIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0UHJvcGVydHlTaG9ydGhhbmQo
Q1NTUHJvcGVydHlJRCkgY29uc3Q7CiAgICAgYm9vbCBpc1Byb3BlcnR5SW1wbGljaXQoQ1NTUHJv
cGVydHlJRCkgY29uc3Q7CiAKKyAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRDdXN0b21Qcm9w
ZXJ0eUNTU1ZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBTdHJp
bmcgZ2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29u
c3Q7CisgICAgYm9vbCBjdXN0b21Qcm9wZXJ0eUlzSW1wb3J0YW50KGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lKSBjb25zdDsKKwogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5
QmxvY2tQcm9wZXJ0aWVzKCkgY29uc3Q7CiAKICAgICBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1v
ZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDU1NQYXJzZXJNb2RlPihtX2Nzc1BhcnNl
ck1vZGUpOyB9CkBAIC0xMzIsNyArMTM2LDggQEAgcHJvdGVjdGVkOgogICAgIHsgfQogCiAgICAg
aW50IGZpbmRQcm9wZXJ0eUluZGV4KENTU1Byb3BlcnR5SUQpIGNvbnN0OwotCisgICAgaW50IGZp
bmRDdXN0b21Qcm9wZXJ0eUluZGV4KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBjb25zdDsK
KyAgICAKICAgICB1bnNpZ25lZCBtX2Nzc1BhcnNlck1vZGUgOiAyOwogICAgIG11dGFibGUgdW5z
aWduZWQgbV9pc011dGFibGUgOiAxOwogICAgIHVuc2lnbmVkIG1fYXJyYXlTaXplIDogMjk7CkBA
IC0xNjMsNyArMTY4LDggQEAgcHVibGljOgogICAgIGNvbnN0IENTU1ZhbHVlKiogdmFsdWVBcnJh
eSgpIGNvbnN0OwogICAgIGNvbnN0IFN0eWxlUHJvcGVydHlNZXRhZGF0YSogbWV0YWRhdGFBcnJh
eSgpIGNvbnN0OwogICAgIGludCBmaW5kUHJvcGVydHlJbmRleChDU1NQcm9wZXJ0eUlEKSBjb25z
dDsKLQorICAgIGludCBmaW5kQ3VzdG9tUHJvcGVydHlJbmRleChjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSkgY29uc3Q7CisgICAgCiAgICAgdm9pZCogbV9zdG9yYWdlOwogCiBwcml2YXRlOgpA
QCAtMjIxLDkgKzIyNywxNCBAQCBwdWJsaWM6CiAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogZW5z
dXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihTdHlsZWRFbGVtZW50KiBwYXJlbnRFbGVtZW50
KTsKIAogICAgIGludCBmaW5kUHJvcGVydHlJbmRleChDU1NQcm9wZXJ0eUlEKSBjb25zdDsKLQor
ICAgIGludCBmaW5kQ3VzdG9tUHJvcGVydHlJbmRleChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSkgY29uc3Q7CisgICAgCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCA0PiBtX3Byb3BlcnR5VmVj
dG9yOwogCisgICAgLy8gTWV0aG9kcyBmb3IgcXVlcnlpbmcgYW5kIGFsdGVyaW5nIENTUyBjdXN0
b20gcHJvcGVydGllcy4KKyAgICBib29sIHNldEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCA9IGZhbHNl
LCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0ID0gMCk7CisgICAgYm9vbCBy
ZW1vdmVDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgU3RyaW5nKiBy
ZXR1cm5UZXh0ID0gbnVsbHB0cik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTXV0YWJsZVN0
eWxlUHJvcGVydGllcyhDU1NQYXJzZXJNb2RlKTsKICAgICBleHBsaWNpdCBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydGllcyYpOwpAQCAtMjMxLDYgKzI0Miw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIHJlbW92ZVNob3J0aGFuZFByb3BlcnR5KENTU1Byb3BlcnR5SUQp
OwogICAgIENTU1Byb3BlcnR5KiBmaW5kQ1NTUHJvcGVydHlXaXRoSUQoQ1NTUHJvcGVydHlJRCk7
CisgICAgQ1NTUHJvcGVydHkqIGZpbmRDdXN0b21DU1NQcm9wZXJ0eVdpdGhOYW1lKGNvbnN0IFN0
cmluZyYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24+IG1fY3Nzb21XcmFwcGVyOwogCiAgICAgZnJpZW5kIGNsYXNzIFN0eWxlUHJvcGVydGllczsK
QEAgLTI3OSw2ICsyOTEsMTMgQEAgaW5saW5lIGludCBTdHlsZVByb3BlcnRpZXM6OmZpbmRQcm9w
ZXJ0eQogICAgIHJldHVybiBkb3duY2FzdDxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+KCp0aGlz
KS5maW5kUHJvcGVydHlJbmRleChwcm9wZXJ0eUlEKTsKIH0KIAoraW5saW5lIGludCBTdHlsZVBy
b3BlcnRpZXM6OmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lKSBjb25zdAoreworICAgIGlmIChpczxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPigqdGhpcykp
CisgICAgICAgIHJldHVybiBkb3duY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPigqdGhpcyku
ZmluZEN1c3RvbVByb3BlcnR5SW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gZG93bmNh
c3Q8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPigqdGhpcykuZmluZEN1c3RvbVByb3BlcnR5SW5k
ZXgocHJvcGVydHlOYW1lKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXMpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAxOTAxMjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZS5oIgogI2luY2x1ZGUgIkNT
U0NhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCisj
aW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0RlZmF1bHRT
dHlsZVNoZWV0cy5oIgogI2luY2x1ZGUgIkNTU0ZpbHRlckltYWdlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NGb250RmFjZVJ1bGUuaCIKQEAgLTE0MCw2ICsxNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4K
IAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAjaW5jbHVkZSAiQ1NTR3JpZExpbmVOYW1l
c1ZhbHVlLmgiCkBAIC0xOTAsMTQgKzE5MiwxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5
RGVmZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImKTsKIAorICAgIEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBQcm9wZXJ0eT4mIGN1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBtX2N1c3RvbVBy
b3BlcnRpZXM7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBhZGRTdHlsZVByb3BlcnRpZXMo
Y29uc3QgU3R5bGVQcm9wZXJ0aWVzJiwgU3R5bGVSdWxlJiwgYm9vbCBpc0ltcG9ydGFudCwgYm9v
bCBpbmhlcml0ZWRPbmx5LCBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUsIHVuc2lnbmVkIGxpbmtNYXRj
aFR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHNldFByb3BlcnR5SW50ZXJuYWwoUHJvcGVydHkmLCBD
U1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSYsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUpOwogCi0gICAg
UHJvcGVydHkgbV9wcm9wZXJ0aWVzW251bUNTU1Byb3BlcnRpZXMgKyAxXTsKLSAgICBzdGQ6OmJp
dHNldDxudW1DU1NQcm9wZXJ0aWVzICsgMT4gbV9wcm9wZXJ0eUlzUHJlc2VudDsKKyAgICBQcm9w
ZXJ0eSBtX3Byb3BlcnRpZXNbbnVtQ1NTUHJvcGVydGllcyArIDJdOworICAgIHN0ZDo6Yml0c2V0
PG51bUNTU1Byb3BlcnRpZXMgKyAyPiBtX3Byb3BlcnR5SXNQcmVzZW50OwogCiAgICAgVmVjdG9y
PFByb3BlcnR5LCA4PiBtX2RlZmVycmVkUHJvcGVydGllczsKKyAgICBIYXNoTWFwPEF0b21pY1N0
cmluZywgUHJvcGVydHk+IG1fY3VzdG9tUHJvcGVydGllczsKIAogICAgIFRleHREaXJlY3Rpb24g
bV9kaXJlY3Rpb247CiAgICAgV3JpdGluZ01vZGUgbV93cml0aW5nTW9kZTsKQEAgLTg0OSw2ICs4
NTQsOSBAQCBSZWY8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yCiAgICAgLy8g
ZGVjbCwgdGhlcmUncyBub3RoaW5nIHRvIG92ZXJyaWRlLiBTbyBqdXN0IGFkZCB0aGUgZmlyc3Qg
cHJvcGVydGllcy4KICAgICBDYXNjYWRlZFByb3BlcnRpZXMgY2FzY2FkZShkaXJlY3Rpb24sIHdy
aXRpbmdNb2RlKTsKICAgICBjYXNjYWRlLmFkZE1hdGNoZXMocmVzdWx0LCBmYWxzZSwgMCwgcmVz
dWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKCkuc2l6ZSgpIC0gMSk7CisgICAgCisgICAgLy8gUmVzb2x2
ZSB2YXJpYWJsZXMgZmlyc3QuCisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwg
Q1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tKTsKIAogICAgIGFwcGx5Q2FzY2Fk
ZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdoUHJpb3JpdHlQ
cm9wZXJ0eSk7CiAKQEAgLTEwMTUsNiArMTAyMyw5IEBAIFJlZjxSZW5kZXJTdHlsZT4gU3R5bGVS
ZXNvbHZlcjo6c3R5bGVGb3IKICAgICBDYXNjYWRlZFByb3BlcnRpZXMgY2FzY2FkZShkaXJlY3Rp
b24sIHdyaXRpbmdNb2RlKTsKICAgICBjYXNjYWRlLmFkZE1hdGNoZXMocmVzdWx0LCBmYWxzZSwg
MCwgcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKCkuc2l6ZSgpIC0gMSk7CiAKKyAgICAvLyBSZXNv
bHZlIHZhcmlhYmxlcyBmaXJzdC4KKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRl
LCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20pOworCiAgICAgYXBwbHlDYXNj
YWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0
eVByb3BlcnR5KTsKIAogICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkLCB1cGRhdGUgaXQg
bm93LgpAQCAtMTY5MCw2ICsxNzAxLDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNo
ZWRQcm9wZXJ0aQogCiAgICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENT
U1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlv
bik7CiAgICAgICAgIGFkanVzdFN0eWxlRm9ySW50ZXJDaGFyYWN0ZXJSdWJ5KCk7CisgICAgCisg
ICAgICAgIC8vIFJlc29sdmUgdmFyaWFibGVzIGZpcnN0LgorICAgICAgICBhcHBseUNhc2NhZGVk
UHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20p
OwogCiAgICAgICAgIC8vIFN0YXJ0IGJ5IGFwcGx5aW5nIHByb3BlcnRpZXMgdGhhdCBvdGhlciBw
cm9wZXJ0aWVzIG1heSBkZXBlbmQgb24uCiAgICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVz
KGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSk7CkBA
IC0xNzA1LDYgKzE3MTksOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3Bl
cnRpCiAgICAgY2FzY2FkZS5hZGRNYXRjaGVzKG1hdGNoUmVzdWx0LCB0cnVlLCBtYXRjaFJlc3Vs
dC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1
bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CiAgICAgY2FzY2FkZS5hZGRNYXRjaGVzKG1hdGNoUmVz
dWx0LCB0cnVlLCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVc2VyUnVsZSwgbWF0Y2hSZXN1bHQu
cmFuZ2VzLmxhc3RVc2VyUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKICAgICBjYXNjYWRlLmFk
ZE1hdGNoZXMobWF0Y2hSZXN1bHQsIHRydWUsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVs
ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7Cisg
ICAgCisgICAgLy8gUmVzb2x2ZSB2YXJpYWJsZXMgZmlyc3QuCisgICAgYXBwbHlDYXNjYWRlZFBy
b3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tKTsK
IAogICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5V2Via2l0
UnVieVBvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbik7CiAgICAgCkBAIC0x
ODg1LDYgKzE5MDIsMTIgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1By
bwogCiAgICAgaWYgKGlzSW5oZXJpdCAmJiAhc3RhdGUucGFyZW50U3R5bGUoKS0+aGFzRXhwbGlj
aXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSAmJiAhQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJv
cGVydHkoaWQpKQogICAgICAgICBzdGF0ZS5wYXJlbnRTdHlsZSgpLT5zZXRIYXNFeHBsaWNpdGx5
SW5oZXJpdGVkUHJvcGVydGllcygpOworICAgIAorICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUN1
c3RvbSkgeworICAgICAgICBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKiBjdXN0b21Qcm9wZXJ0eSA9
ICZkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqdmFsdWUpOworICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGN1c3RvbVByb3BlcnR5LT5uYW1lKCks
IGN1c3RvbVByb3BlcnR5LT52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAg
IC8vIFVzZSB0aGUgZ2VuZXJhdGVkIFN0eWxlQnVpbGRlci4KICAgICBTdHlsZUJ1aWxkZXI6OmFw
cGx5UHJvcGVydHkoaWQsICp0aGlzLCAqdmFsdWUsIGlzSW5pdGlhbCwgaXNJbmhlcml0KTsKQEAg
LTI1MzAsNiArMjU1MywyNCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGll
czo6CiAKICAgICBhdXRvJiBwcm9wZXJ0eSA9IG1fcHJvcGVydGllc1tpZF07CiAgICAgQVNTRVJU
KGlkIDwgbV9wcm9wZXJ0eUlzUHJlc2VudC5zaXplKCkpOworICAgIGlmIChpZCA9PSBDU1NQcm9w
ZXJ0eUN1c3RvbSkgeworICAgICAgICBtX3Byb3BlcnR5SXNQcmVzZW50LnNldChpZCk7CisgICAg
ICAgIGNvbnN0IGF1dG8mIGN1c3RvbVZhbHVlID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZT4oY3NzVmFsdWUpOworICAgICAgICBib29sIGhhc1ZhbHVlID0gY3VzdG9tUHJvcGVydGll
cygpLmNvbnRhaW5zKGN1c3RvbVZhbHVlLm5hbWUoKSk7CisgICAgICAgIGlmICghaGFzVmFsdWUp
IHsKKyAgICAgICAgICAgIFByb3BlcnR5IHByb3BlcnR5OworICAgICAgICAgICAgcHJvcGVydHku
aWQgPSBpZDsKKyAgICAgICAgICAgIG1lbXNldChwcm9wZXJ0eS5jc3NWYWx1ZSwgMCwgc2l6ZW9m
KHByb3BlcnR5LmNzc1ZhbHVlKSk7CisgICAgICAgICAgICBzZXRQcm9wZXJ0eUludGVybmFsKHBy
b3BlcnR5LCBpZCwgY3NzVmFsdWUsIGxpbmtNYXRjaFR5cGUpOworICAgICAgICAgICAgY3VzdG9t
UHJvcGVydGllcygpLnNldChjdXN0b21WYWx1ZS5uYW1lKCksIHByb3BlcnR5KTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIFByb3BlcnR5IHByb3BlcnR5ID0gY3VzdG9tUHJvcGVydGll
cygpLmdldChjdXN0b21WYWx1ZS5uYW1lKCkpOworICAgICAgICAgICAgc2V0UHJvcGVydHlJbnRl
cm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBsaW5rTWF0Y2hUeXBlKTsKKyAgICAgICAgICAg
IGN1c3RvbVByb3BlcnRpZXMoKS5zZXQoY3VzdG9tVmFsdWUubmFtZSgpLCBwcm9wZXJ0eSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBpZiAoIW1fcHJvcGVy
dHlJc1ByZXNlbnRbaWRdKQogICAgICAgICBtZW1zZXQocHJvcGVydHkuY3NzVmFsdWUsIDAsIHNp
emVvZihwcm9wZXJ0eS5jc3NWYWx1ZSkpOwogICAgIG1fcHJvcGVydHlJc1ByZXNlbnQuc2V0KGlk
KTsKQEAgLTI2MjcsNiArMjY2OCwxMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2Fk
ZWRQcm9wZXJ0CiAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IHN0YXRpY19jYXN0
PENTU1Byb3BlcnR5SUQ+KGlkKTsKICAgICAgICAgaWYgKCFjYXNjYWRlLmhhc1Byb3BlcnR5KHBy
b3BlcnR5SUQpKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChwcm9wZXJ0eUlE
ID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7CisgICAgICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgQ2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eT46Oml0ZXJhdG9yIGVuZCA9IGNhc2NhZGUu
Y3VzdG9tUHJvcGVydGllcygpLmVuZCgpOworICAgICAgICAgICAgZm9yIChIYXNoTWFwPEF0b21p
Y1N0cmluZywgQ2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eT46Oml0ZXJhdG9yIGl0ID0gY2Fz
Y2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgICAgICAgICAgaXQtPnZhbHVlLmFwcGx5KCp0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAgICAgICAgIGF1dG8mIHByb3BlcnR5ID0gY2Fz
Y2FkZS5wcm9wZXJ0eShwcm9wZXJ0eUlEKTsKICAgICAgICAgQVNTRVJUKCFzaG91bGRBcHBseVBy
b3BlcnR5SW5QYXJzZU9yZGVyKHByb3BlcnR5SUQpKTsKICAgICAgICAgcHJvcGVydHkuYXBwbHko
KnRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAkocmV2aXNpb24gMTkwMTI2KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIGRpZSAiV2UndmUgcmVhY2hlZCBtb3JlIHRoYW4gMTAyNCBDU1MgcHIKIG15ICVuYW1l
c0hhc2g7CiBteSBAZHVwbGljYXRlcyA9ICgpOwogCi1teSAkbnVtUHJlZGVmaW5lZFByb3BlcnRp
ZXMgPSAxOworbXkgJG51bVByZWRlZmluZWRQcm9wZXJ0aWVzID0gMjsKIG15IEBuYW1lcyA9ICgp
OwogbXkgJW5hbWVJc0luaGVyaXRlZDsKIG15ICVwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9w
dGlvbnM7CkBAIC0yMzYsNiArMjM2LDcgQEAgU3RyaW5nIGdldEpTUHJvcGVydHlOYW1lKENTU1By
b3BlcnR5SUQgaQogCiBzdGF0aWMgY29uc3QgYm9vbCBpc0luaGVyaXRlZFByb3BlcnR5VGFibGVb
bnVtQ1NTUHJvcGVydGllcyArICRudW1QcmVkZWZpbmVkUHJvcGVydGllc10gPSB7CiAgICAgZmFs
c2UsIC8vIENTU1Byb3BlcnR5SW52YWxpZAorICAgIGZhbHNlLCAvLyBDU1NQcm9wZXJ0eUN1c3Rv
bQogRU9GCiAKIGZvcmVhY2ggbXkgJG5hbWUgKEBuYW1lcykgewpAQCAtMjgzLDYgKzI4NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBDU1NQcm9wZXJ0eUlEIDogdWludDE2X3Qgewog
ICAgIENTU1Byb3BlcnR5SW52YWxpZCA9IDAsCisgICAgQ1NTUHJvcGVydHlDdXN0b20gPSAxLAog
RU9GCiAKIG15ICRmaXJzdCA9ICRudW1QcmVkZWZpbmVkUHJvcGVydGllczsKQEAgLTMxMyw3ICsz
MTUsNyBAQCBXVEY6OlN0cmluZyBnZXRKU1Byb3BlcnR5TmFtZShDU1NQcm9wZXJ0CiAKIGlubGlu
ZSBDU1NQcm9wZXJ0eUlEIGNvbnZlcnRUb0NTU1Byb3BlcnR5SUQoaW50IHZhbHVlKQogewotICAg
IEFTU0VSVCgodmFsdWUgPj0gZmlyc3RDU1NQcm9wZXJ0eSAmJiB2YWx1ZSA8PSBsYXN0Q1NTUHJv
cGVydHkpIHx8IHZhbHVlID09IENTU1Byb3BlcnR5SW52YWxpZCk7CisgICAgQVNTRVJUKCh2YWx1
ZSA+PSBmaXJzdENTU1Byb3BlcnR5ICYmIHZhbHVlIDw9IGxhc3RDU1NQcm9wZXJ0eSkgfHwgdmFs
dWUgPT0gQ1NTUHJvcGVydHlJbnZhbGlkIHx8IHZhbHVlID09IENTU1Byb3BlcnR5Q3VzdG9tKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4odmFsdWUpOwogfQogCkBAIC04
NzIsNiArODc0LDcgQEAgdm9pZCBTdHlsZUJ1aWxkZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcAog
ewogICAgIHN3aXRjaCAocHJvcGVydHkpIHsKICAgICBjYXNlIENTU1Byb3BlcnR5SW52YWxpZDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Q3VzdG9tOgogICAgICAgICBicmVhazsKIEVPRgogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CShyZXZpc2lvbiAxOTAxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICszNDgsMTQgQEAgYm9vbCBJ
bnNwZWN0b3JTdHlsZTo6Z2V0VGV4dChTdHJpbmcqIHJlcwogICAgIHJldHVybiB0cnVlOwogfQog
CitzdGF0aWMgU3RyaW5nIGxvd2VyY2FzZVByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgLy8gQ3VzdG9tIHByb3BlcnRpZXMgYXJlIGNhc2Utc2Vuc2l0aXZlLgorICAgIGlm
IChuYW1lLmxlbmd0aCgpID4gMiAmJiBuYW1lLmNoYXJhY3RlckF0KDApID09ICctJyAmJiBuYW1l
LmNoYXJhY3RlckF0KDEpID09ICctJykKKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJu
IG5hbWUubG93ZXIoKTsKK30KKwogYm9vbCBJbnNwZWN0b3JTdHlsZTo6cG9wdWxhdGVBbGxQcm9w
ZXJ0aWVzKFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiogcmVzdWx0KSBjb25zdAogewog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBzb3VyY2VQcm9wZXJ0eU5hbWVzOwpAQCAtMzYyLDE2ICszNzAs
MTYgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZTo6cG9wdWxhdGVBbGxQcm9wZXJ0aQogICAgICAgICAg
ICAgSW5zcGVjdG9yU3R5bGVQcm9wZXJ0eSBwKCppdCwgdHJ1ZSwgZmFsc2UpOwogICAgICAgICAg
ICAgcC5zZXRSYXdUZXh0RnJvbVN0eWxlRGVjbGFyYXRpb24oc3R5bGVEZWNsYXJhdGlvbik7CiAg
ICAgICAgICAgICByZXN1bHQtPmFwcGVuZChwKTsKLSAgICAgICAgICAgIHNvdXJjZVByb3BlcnR5
TmFtZXMuYWRkKGl0LT5uYW1lLmxvd2VyKCkpOworICAgICAgICAgICAgc291cmNlUHJvcGVydHlO
YW1lcy5hZGQobG93ZXJjYXNlUHJvcGVydHlOYW1lKGl0LT5uYW1lKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKICAgICBmb3IgKGludCBpID0gMCwgc2l6ZSA9IG1fc3R5bGUtPmxlbmd0aCgpOyBpIDwg
c2l6ZTsgKytpKSB7CiAgICAgICAgIFN0cmluZyBuYW1lID0gbV9zdHlsZS0+aXRlbShpKTsKLSAg
ICAgICAgaWYgKHNvdXJjZVByb3BlcnR5TmFtZXMuY29udGFpbnMobmFtZS5sb3dlcigpKSkKKyAg
ICAgICAgU3RyaW5nIGxvd2VyTmFtZSA9IGxvd2VyY2FzZVByb3BlcnR5TmFtZShuYW1lKTsKKyAg
ICAgICAgaWYgKHNvdXJjZVByb3BlcnR5TmFtZXMuY29udGFpbnMobG93ZXJOYW1lKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHNvdXJjZVByb3BlcnR5TmFtZXMuYWRkKG5hbWUu
bG93ZXIoKSk7CisgICAgICAgIHNvdXJjZVByb3BlcnR5TmFtZXMuYWRkKGxvd2VyTmFtZSk7CiAg
ICAgICAgIHJlc3VsdC0+YXBwZW5kKEluc3BlY3RvclN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlT
b3VyY2VEYXRhKG5hbWUsIG1fc3R5bGUtPmdldFByb3BlcnR5VmFsdWUobmFtZSksICFtX3N0eWxl
LT5nZXRQcm9wZXJ0eVByaW9yaXR5KG5hbWUpLmlzRW1wdHkoKSwgdHJ1ZSwgU291cmNlUmFuZ2Uo
KSksIGZhbHNlLCBmYWxzZSkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDE5MDEyNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NjMsMTIgKzU2
MywxNCBAQCBpbmxpbmUgdm9pZCBJbmxpbmVCaWRpUmVzb2x2ZXI6OmFwcGVuZFJ1CiAgICAgICAg
ICAgICBzdGFydCA9IDA7CiAgICAgICAgICAgICBvYmogPSBiaWRpTmV4dFNraXBwaW5nRW1wdHlJ
bmxpbmVzKCptX3Nvci5yb290KCksIG9iaiwgJmlzb2xhdGVUcmFja2VyKTsKICAgICAgICAgfQor
ICAgICAgICAKICAgICAgICAgaWYgKG9iaikgewogICAgICAgICAgICAgdW5zaWduZWQgcG9zID0g
b2JqID09IG1fZW9yLnJlbmRlcmVyKCkgPyBtX2Vvci5vZmZzZXQoKSA6IFVJTlRfTUFYOwogICAg
ICAgICAgICAgaWYgKG9iaiA9PSBlbmRPZkxpbmUucmVuZGVyZXIoKSAmJiBlbmRPZkxpbmUub2Zm
c2V0KCkgPD0gcG9zKSB7CiAgICAgICAgICAgICAgICAgbV9yZWFjaGVkRW5kT2ZMaW5lID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBwb3MgPSBlbmRPZkxpbmUub2Zmc2V0KCk7CiAgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIC8vIEl0J3MgT0sgdG8gYWRkIHJ1bnMgZm9yIHplcm8tbGVuZ3Ro
IFJlbmRlck9iamVjdHMsIGp1c3QgZG9uJ3QgbWFrZSB0aGUgcnVuIGxhcmdlciB0aGFuIGl0IHNo
b3VsZCBiZQogICAgICAgICAgICAgaW50IGVuZCA9IG9iai0+bGVuZ3RoKCkgPyBwb3MgKyAxIDog
MDsKICAgICAgICAgICAgIGlmIChpc29sYXRlVHJhY2tlci5pbklzb2xhdGUoKSkKQEAgLTU3Niw3
ICs1NzgsMTMgQEAgaW5saW5lIHZvaWQgSW5saW5lQmlkaVJlc29sdmVyOjphcHBlbmRSdQogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIFJlbmRlckJsb2NrRmxvdzo6YXBwZW5kUnVu
c0Zvck9iamVjdCgmbV9ydW5zLCBzdGFydCwgZW5kLCAqb2JqLCAqdGhpcyk7CiAgICAgICAgIH0K
LQorICAgIAorICAgICAgICBpZiAoZW5kT2ZMaW5lLnJlbmRlcmVyKCkgJiYgZW5kT2ZMaW5lLnJl
bmRlcmVyKCktPmlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgeworICAgICAgICAgICAgYXV0byog
cGFyZW50ID0gZW5kT2ZMaW5lLnJlbmRlcmVyKCktPnBhcmVudCgpOworICAgICAgICAgICAgaWYg
KHBhcmVudCAmJiBpczxSZW5kZXJJbmxpbmU+KCpwYXJlbnQpICYmIGRvd25jYXN0PFJlbmRlcklu
bGluZT4oKnBhcmVudCkuaXNDaGlsZEF0U3RhcnRFZGdlKCplbmRPZkxpbmUucmVuZGVyZXIoKSkp
CisgICAgICAgICAgICAgICAgUmVuZGVyQmxvY2tGbG93OjphcHBlbmRSdW5zRm9yT2JqZWN0KCZt
X3J1bnMsIDAsIDAsICpwYXJlbnQsICp0aGlzKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAg
ICAgbV9lb3IuaW5jcmVtZW50KCk7CiAgICAgICAgIG1fc29yID0gbV9lb3I7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9uIDE5
MDEyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTgsNiArMjk4LDM1IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBSZW5k
ZXJJbmxpbmU6OmNvbnQKICAgICByZXR1cm4gbGFzdDsKIH0KIAoraW5saW5lIGJvb2wgaXNBdEVk
Z2UoY29uc3QgUmVuZGVyT2JqZWN0KiBjaGlsZCkKK3sKKyAgICBpZiAoIWNoaWxkKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBXaGVuIGRlY2lkaW5nIHdoZXRoZXIgd2UncmUgYXQgdGhl
IGVkZ2Ugb2YgYW4gaW5saW5lLCBhZGphY2VudCBjb2xsYXBzZWQgd2hpdGVzcGFjZSBpcyB0aGUg
c2FtZSBhcyBubyBzaWJsaW5nIGF0IGFsbC4KKyAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKmNoaWxk
KSAmJiAhZG93bmNhc3Q8UmVuZGVyVGV4dD4oKmNoaWxkKS50ZXh0TGVuZ3RoKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworI2lmIEVOQUJMRShDU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspCisgICAg
aWYgKGlzPFJlbmRlckxpbmVCcmVhaz4oKmNoaWxkKSAmJiBjaGlsZC0+cGFyZW50KCktPnN0eWxl
KCkuYm94RGVjb3JhdGlvbkJyZWFrKCkgPT0gRENMT05FKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJJbmxpbmU6OmlzQ2hp
bGRBdFN0YXJ0RWRnZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKSBjb25zdAoreworICAg
IGF1dG8qIGNoaWxkID0gJnJlbmRlcmVyOworICAgIGRvIHsKKyAgICAgICAgY2hpbGQgPSBjaGls
ZC0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgfSB3aGlsZSAoY2hpbGQgJiYgY2hpbGQtPmlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpKTsKKworICAgIHJldHVybiBpc0F0RWRnZShjaGlsZCk7Cit9CisK
K2Jvb2wgUmVuZGVySW5saW5lOjppc0NoaWxkQXRFbmRFZGdlKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQXRFZGdlKHJlbmRlcmVyLm5leHRTaWJs
aW5nKCkpOworfQorCiB2b2lkIFJlbmRlcklubGluZTo6YWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVh
dGlvbihSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQog
ewogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBhcHBlbmQgdGhpbmdzIGFmdGVyIDphZnRlci1n
ZW5lcmF0ZWQgY29udGVudCBpZiB3ZSBoYXZlIGl0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaAkocmV2aXNpb24gMTkwMTI2KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVC
b3gqLCBpbnQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgb3ZlcnJpZGUgZmlu
YWw7CiAKICAgICBib29sIGhpdFRlc3RDdWxsZWRJbmxpbmUoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
LCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFp
bmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOworICAgIAorICAgIGJv
b2wgaXNDaGlsZEF0U3RhcnRFZGdlKGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGQpIGNvbnN0Owor
ICAgIGJvb2wgaXNDaGlsZEF0RW5kRWRnZShjb25zdCBSZW5kZXJPYmplY3QmIGNoaWxkKSBjb25z
dDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5n
Q29udGV4dC5oCShyZXZpc2lvbiAxOTAxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9CcmVha2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZU91dE9mRmxvd1Bvc2l0aW9uZWQoVmVjdG9yPFJlbmRl
ckJveCo+JiBwb3NpdGlvbmVkT2JqZWN0cyk7CiAgICAgdm9pZCBoYW5kbGVGbG9hdCgpOwogICAg
IHZvaWQgaGFuZGxlRW1wdHlJbmxpbmUoKTsKKyAgICB2b2lkIGhhbmRsZUlubGluZShSZW5kZXJJ
bmxpbmUmIGZsb3dCb3gsIGJvb2wgc3RhcnRFZGdlID0gdHJ1ZSwgYm9vbCBlbmRFZGdlID0gdHJ1
ZSk7CiAgICAgdm9pZCBoYW5kbGVSZXBsYWNlZCgpOwogICAgIGJvb2wgaGFuZGxlVGV4dChXb3Jk
TWVhc3VyZW1lbnRzJiwgYm9vbCYgaHlwaGVuYXRlZCwgdW5zaWduZWQmIGNvbnNlY3V0aXZlSHlw
aGVuYXRlZExpbmVzKTsKICAgICBib29sIGNhbkJyZWFrQXRUaGlzUG9zaXRpb24oKTsKQEAgLTM2
OSwyOCArMzcwLDYgQEAgaW5saW5lIExheW91dFVuaXQgYm9yZGVyUGFkZGluZ01hcmdpbkVuZAog
ICAgIHJldHVybiBjaGlsZC5tYXJnaW5FbmQoKSArIGNoaWxkLnBhZGRpbmdFbmQoKSArIGNoaWxk
LmJvcmRlckVuZCgpOwogfQogCi1pbmxpbmUgYm9vbCBzaG91bGRBZGRCb3JkZXJQYWRkaW5nTWFy
Z2luKFJlbmRlck9iamVjdCogY2hpbGQpCi17Ci0gICAgaWYgKCFjaGlsZCkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgLy8gV2hlbiBkZWNpZGluZyB3aGV0aGVyIHdlJ3JlIGF0IHRoZSBlZGdl
IG9mIGFuIGlubGluZSwgYWRqYWNlbnQgY29sbGFwc2VkIHdoaXRlc3BhY2UgaXMgdGhlIHNhbWUg
YXMgbm8gc2libGluZyBhdCBhbGwuCi0gICAgaWYgKGlzPFJlbmRlclRleHQ+KCpjaGlsZCkgJiYg
IWRvd25jYXN0PFJlbmRlclRleHQ+KCpjaGlsZCkudGV4dExlbmd0aCgpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKQotICAgIGlmIChp
czxSZW5kZXJMaW5lQnJlYWs+KCpjaGlsZCkgJiYgY2hpbGQtPnBhcmVudCgpLT5zdHlsZSgpLmJv
eERlY29yYXRpb25CcmVhaygpID09IERDTE9ORSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5k
aWYKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWlubGluZSBSZW5kZXJPYmplY3QqIHByZXZpb3Vz
SW5GbG93U2libGluZyhSZW5kZXJPYmplY3QqIGNoaWxkKQotewotICAgIGRvIHsKLSAgICAgICAg
Y2hpbGQgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgfSB3aGlsZSAoY2hpbGQgJiYg
Y2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKLSAgICByZXR1cm4gY2hpbGQ7Ci19Ci0K
IGlubGluZSBMYXlvdXRVbml0IGlubGluZUxvZ2ljYWxXaWR0aChSZW5kZXJPYmplY3QqIGNoaWxk
LCBib29sIGNoZWNrU3RhcnRFZGdlID0gdHJ1ZSwgYm9vbCBjaGVja0VuZEVkZ2UgPSB0cnVlKQog
ewogICAgIHVuc2lnbmVkIGxpbmVEZXB0aCA9IDE7CkBAIC0zOTksMTAgKzM3OCwxMCBAQCBpbmxp
bmUgTGF5b3V0VW5pdCBpbmxpbmVMb2dpY2FsV2lkdGgoUmVuCiAgICAgd2hpbGUgKGlzPFJlbmRl
cklubGluZT4oKnBhcmVudCkgJiYgbGluZURlcHRoKysgPCBjTWF4TGluZURlcHRoKSB7CiAgICAg
ICAgIGNvbnN0IGF1dG8mIHBhcmVudEFzUmVuZGVySW5saW5lID0gZG93bmNhc3Q8UmVuZGVySW5s
aW5lPigqcGFyZW50KTsKICAgICAgICAgaWYgKCFpc0VtcHR5SW5saW5lKHBhcmVudEFzUmVuZGVy
SW5saW5lKSkgewotICAgICAgICAgICAgY2hlY2tTdGFydEVkZ2UgPSBjaGVja1N0YXJ0RWRnZSAm
JiBzaG91bGRBZGRCb3JkZXJQYWRkaW5nTWFyZ2luKHByZXZpb3VzSW5GbG93U2libGluZyhjaGls
ZCkpOworICAgICAgICAgICAgY2hlY2tTdGFydEVkZ2UgPSBjaGVja1N0YXJ0RWRnZSAmJiBwYXJl
bnRBc1JlbmRlcklubGluZS5pc0NoaWxkQXRTdGFydEVkZ2UoKmNoaWxkKTsKICAgICAgICAgICAg
IGlmIChjaGVja1N0YXJ0RWRnZSkKICAgICAgICAgICAgICAgICBleHRyYVdpZHRoICs9IGJvcmRl
clBhZGRpbmdNYXJnaW5TdGFydChwYXJlbnRBc1JlbmRlcklubGluZSk7Ci0gICAgICAgICAgICBj
aGVja0VuZEVkZ2UgPSBjaGVja0VuZEVkZ2UgJiYgc2hvdWxkQWRkQm9yZGVyUGFkZGluZ01hcmdp
bihjaGlsZC0+bmV4dFNpYmxpbmcoKSk7CisgICAgICAgICAgICBjaGVja0VuZEVkZ2UgPSBjaGVj
a0VuZEVkZ2UgJiYgcGFyZW50QXNSZW5kZXJJbmxpbmUuaXNDaGlsZEF0RW5kRWRnZSgqY2hpbGQp
OwogICAgICAgICAgICAgaWYgKGNoZWNrRW5kRWRnZSkKICAgICAgICAgICAgICAgICBleHRyYVdp
ZHRoICs9IGJvcmRlclBhZGRpbmdNYXJnaW5FbmQocGFyZW50QXNSZW5kZXJJbmxpbmUpOwogICAg
ICAgICAgICAgaWYgKCFjaGVja1N0YXJ0RWRnZSAmJiAhY2hlY2tFbmRFZGdlKQpAQCAtNDg1LDcg
KzQ2NCwxMiBAQCBpbmxpbmUgdm9pZCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZUVtcHR5CiAKICAg
ICAvLyBUaGlzIHNob3VsZCBvbmx5IGVuZCB1cCBiZWluZyBjYWxsZWQgb24gZW1wdHkgaW5saW5l
cwogICAgIEFTU0VSVChpc0VtcHR5SW5saW5lKGZsb3dCb3gpKTsKKyAgICAKKyAgICBoYW5kbGVJ
bmxpbmUoZmxvd0JveCk7Cit9CiAKK2lubGluZSB2b2lkIEJyZWFraW5nQ29udGV4dDo6aGFuZGxl
SW5saW5lKFJlbmRlcklubGluZSYgZmxvd0JveCwgYm9vbCBzdGFydEVkZ2UsIGJvb2wgZW5kRWRn
ZSkKK3sKICAgICAvLyBOb3cgdGhhdCBzb21lIGlubGluZSBmbG93cyBoYXZlIGxpbmUgYm94ZXMs
IGlmIHdlIGFyZSBhbHJlYWR5IGlnbm9yaW5nIHNwYWNlcywgd2UgbmVlZAogICAgIC8vIHRvIG1h
a2Ugc3VyZSB0aGF0IHdlIHN0b3AgdG8gaW5jbHVkZSB0aGlzIG9iamVjdCBhbmQgdGhlbiBzdGFy
dCBpZ25vcmluZyBzcGFjZXMgYWdhaW4uCiAgICAgLy8gSWYgdGhpcyBvYmplY3QgaXMgYXQgdGhl
IHN0YXJ0IG9mIHRoZSBsaW5lLCB3ZSBuZWVkIHRvIGJlaGF2ZSBsaWtlIGxpc3QgbWFya2VycyBh
bmQKQEAgLTUxMCw3ICs0OTQsNyBAQCBpbmxpbmUgdm9pZCBCcmVha2luZ0NvbnRleHQ6OmhhbmRs
ZUVtcHR5CiAgICAgICAgICAgICBtX3RyYWlsaW5nT2JqZWN0cy5hcHBlbmRCb3hJZk5lZWRlZCgm
Zmxvd0JveCk7CiAgICAgfQogCi0gICAgbV93aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKGlubGlu
ZUxvZ2ljYWxXaWR0aChtX2N1cnJlbnQucmVuZGVyZXIoKSkgKyBib3JkZXJQYWRkaW5nTWFyZ2lu
U3RhcnQoZmxvd0JveCkgKyBib3JkZXJQYWRkaW5nTWFyZ2luRW5kKGZsb3dCb3gpKTsKKyAgICBt
X3dpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoaW5saW5lTG9naWNhbFdpZHRoKG1fY3VycmVudC5y
ZW5kZXJlcigpLCBzdGFydEVkZ2UsIGVuZEVkZ2UpICsgKHN0YXJ0RWRnZSA/IGJvcmRlclBhZGRp
bmdNYXJnaW5TdGFydChmbG93Qm94KSA6IExheW91dFVuaXQoKSkgKyAoZW5kRWRnZSA/IGJvcmRl
clBhZGRpbmdNYXJnaW5FbmQoZmxvd0JveCkgOiBMYXlvdXRVbml0KCkpKTsKIH0KIAogaW5saW5l
IHZvaWQgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVSZXBsYWNlZCgpCkBAIC01MjMsMTAgKzUwNywx
NiBAQCBpbmxpbmUgdm9pZCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVJlcGxhCiAgICAgLy8gQnJl
YWsgb24gcmVwbGFjZWQgZWxlbWVudHMgaWYgZWl0aGVyIGhhcyBub3JtYWwgd2hpdGUtc3BhY2Uu
CiAgICAgaWYgKCgobV9hdXRvV3JhcCB8fCBSZW5kZXJTdHlsZTo6YXV0b1dyYXAobV9sYXN0V1Mp
KSAmJiAoIW1fY3VycmVudC5yZW5kZXJlcigpLT5pc0ltYWdlKCkgfHwgbV9hbGxvd0ltYWdlc1Rv
QnJlYWspCiAgICAgICAgICYmICghbV9jdXJyZW50LnJlbmRlcmVyKCktPmlzUnVieVJ1bigpIHx8
IGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+KG1fY3VycmVudC5yZW5kZXJlcigpKS0+Y2FuQnJlYWtC
ZWZvcmUobV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvcikpKSB8fCByZXBsYWNlZEJv
eC5pc0Fub255bW91c0lubGluZUJsb2NrKCkpIHsKKyAgICAgICAgaWYgKHJlcGxhY2VkQm94Lmlz
QW5vbnltb3VzSW5saW5lQmxvY2soKSAmJiBpczxSZW5kZXJJbmxpbmU+KCpyZXBsYWNlZEJveC5w
YXJlbnQoKSkpIHsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudEFzSW5saW5lID0gZG93bmNhc3Q8
UmVuZGVySW5saW5lPigqcmVwbGFjZWRCb3gucGFyZW50KCkpOworICAgICAgICAgICAgaWYgKHBh
cmVudEFzSW5saW5lLmlzQ2hpbGRBdFN0YXJ0RWRnZShyZXBsYWNlZEJveCkpCisgICAgICAgICAg
ICAgICAgaGFuZGxlSW5saW5lKHBhcmVudEFzSW5saW5lLCB0cnVlKTsKKyAgICAgICAgfQogICAg
ICAgICBjb21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aCgqbV9jdXJyZW50LnJlbmRlcmVyKCkp
OwogICAgICAgICBpZiAobV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICYmIHJlcGxhY2VkQm94Lmlz
QW5vbnltb3VzSW5saW5lQmxvY2soKSkgewogICAgICAgICAgICAgLy8gQWx3YXlzIGZvcmNlIGEg
YnJlYWsgYmVmb3JlIGFuIGFub255bW91cyBpbmxpbmUgYmxvY2sgaWYgdGhlcmUgaXMgY29udGVu
dCBvbiB0aGUgbGluZQogICAgICAgICAgICAgLy8gYWxyZWFkeS4KKyAgICAgICAgICAgIG1fbGlu
ZUluZm8uc2V0RW1wdHkoZmFsc2UsICZtX2Jsb2NrLCAmbV93aWR0aCk7CiAgICAgICAgICAgICBt
X2F0RW5kID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTE2NSwy
MCArMTE1NSwyMiBAQCBpbmxpbmUgVHJhaWxpbmdPYmplY3RzOjpDb2xsYXBzZUZpcnN0U3BhCiBp
bmxpbmUgSW5saW5lSXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVFbmRPZkxpbmUoKQog
ewogICAgIGlmIChtX2xpbmVCcmVha0hpc3RvcnkuY3VycmVudCgpID09IG1fcmVzb2x2ZXIucG9z
aXRpb24oKSkgewotICAgICAgICBpZiAoIW1fbGluZUJyZWFrSGlzdG9yeS5yZW5kZXJlcigpIHx8
ICFtX2xpbmVCcmVha0hpc3RvcnkucmVuZGVyZXIoKS0+aXNCUigpKSB7Ci0gICAgICAgICAgICAv
LyB3ZSBqdXN0IGFkZCBhcyBtdWNoIGFzIHBvc3NpYmxlCi0gICAgICAgICAgICBpZiAobV9ibG9j
a1N0eWxlLndoaXRlU3BhY2UoKSA9PSBQUkUgJiYgIW1fY3VycmVudC5vZmZzZXQoKSkKLSAgICAg
ICAgICAgICAgICBjb21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aCgqbV9sYXN0T2JqZWN0LCBt
X2xhc3RPYmplY3QtPmlzVGV4dCgpID8gbV9sYXN0T2JqZWN0LT5sZW5ndGgoKSA6IDApOwotICAg
ICAgICAgICAgZWxzZSBpZiAobV9saW5lQnJlYWtIaXN0b3J5LnJlbmRlcmVyKCkpIHsKLSAgICAg
ICAgICAgICAgICAvLyBEb24ndCBldmVyIGJyZWFrIGluIHRoZSBtaWRkbGUgb2YgYSB3b3JkIGlm
IHdlIGNhbiBoZWxwIGl0LgotICAgICAgICAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gcm9vbSBhdCBh
bGwuIFdlIGp1c3QgaGF2ZSB0byBiZSBvbiB0aGlzIGxpbmUsCi0gICAgICAgICAgICAgICAgLy8g
ZXZlbiB0aG91Z2ggd2UnbGwgc3BpbGwgb3V0LgotICAgICAgICAgICAgICAgIGNvbW1pdExpbmVC
cmVha0F0Q3VycmVudFdpZHRoKCptX2N1cnJlbnQucmVuZGVyZXIoKSwgbV9jdXJyZW50Lm9mZnNl
dCgpKTsKKyAgICAgICAgaWYgKCFtX2xpbmVCcmVha0hpc3RvcnkucmVuZGVyZXIoKSB8fCAhbV9s
aW5lQnJlYWtIaXN0b3J5LnJlbmRlcmVyKCktPmlzQW5vbnltb3VzSW5saW5lQmxvY2soKSkgewor
ICAgICAgICAgICAgaWYgKCFtX2xpbmVCcmVha0hpc3RvcnkucmVuZGVyZXIoKSB8fCAhbV9saW5l
QnJlYWtIaXN0b3J5LnJlbmRlcmVyKCktPmlzQlIoKSkgeworICAgICAgICAgICAgICAgIC8vIHdl
IGp1c3QgYWRkIGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgICAgICAgICBpZiAobV9ibG9j
a1N0eWxlLndoaXRlU3BhY2UoKSA9PSBQUkUgJiYgIW1fY3VycmVudC5vZmZzZXQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgY29tbWl0TGluZUJyZWFrQXRDdXJyZW50V2lkdGgoKm1fbGFzdE9iamVj
dCwgbV9sYXN0T2JqZWN0LT5pc1RleHQoKSA/IG1fbGFzdE9iamVjdC0+bGVuZ3RoKCkgOiAwKTsK
KyAgICAgICAgICAgICAgICBlbHNlIGlmIChtX2xpbmVCcmVha0hpc3RvcnkucmVuZGVyZXIoKSkg
eworICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBldmVyIGJyZWFrIGluIHRoZSBtaWRkbGUg
b2YgYSB3b3JkIGlmIHdlIGNhbiBoZWxwIGl0LgorICAgICAgICAgICAgICAgICAgICAvLyBUaGVy
ZSdzIG5vIHJvb20gYXQgYWxsLiBXZSBqdXN0IGhhdmUgdG8gYmUgb24gdGhpcyBsaW5lLAorICAg
ICAgICAgICAgICAgICAgICAvLyBldmVuIHRob3VnaCB3ZSdsbCBzcGlsbCBvdXQuCisgICAgICAg
ICAgICAgICAgICAgIGNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKCptX2N1cnJlbnQucmVu
ZGVyZXIoKSwgbV9jdXJyZW50Lm9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2UgY29uc3VtZSBhdCBsZWFzdCBvbmUg
Y2hhci9vYmplY3QuCisgICAgICAgICAgICBpZiAobV9saW5lQnJlYWtIaXN0b3J5LmN1cnJlbnQo
KSA9PSBtX3Jlc29sdmVyLnBvc2l0aW9uKCkpCisgICAgICAgICAgICAgICAgbV9saW5lQnJlYWtI
aXN0b3J5LmluY3JlbWVudCgpOwogICAgICAgICB9Ci0gICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBj
b25zdW1lIGF0IGxlYXN0IG9uZSBjaGFyL29iamVjdC4KLSAgICAgICAgaWYgKG1fbGluZUJyZWFr
SGlzdG9yeS5jdXJyZW50KCkgPT0gbV9yZXNvbHZlci5wb3NpdGlvbigpKQotICAgICAgICAgICAg
bV9saW5lQnJlYWtIaXN0b3J5LmluY3JlbWVudCgpOwogICAgIH0gZWxzZSBpZiAoIW1fY3VycmVu
dC5vZmZzZXQoKSAmJiAhbV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICYmIG1fd2lkdGgudW5jb21t
aXR0ZWRXaWR0aCgpICYmICFtX2hhZFVuY29tbWl0dGVkV2lkdGhCZWZvcmVDdXJyZW50KSB7CiAg
ICAgICAgIC8vIERvIG5vdCBwdXNoIHRoZSBjdXJyZW50IG9iamVjdCB0byB0aGUgbmV4dCBsaW5l
LCB3aGVuIHRoaXMgbGluZSBoYXMgc29tZSBjb250ZW50LCBidXQgaXQgaXMgc3RpbGwgY29uc2lk
ZXJlZCBlbXB0eS4KICAgICAgICAgLy8gRW1wdHkgaW5saW5lIGVsZW1lbnRzIGxpa2UgPHNwYW4+
PC9zcGFuPiBjYW4gcHJvZHVjZSBzdWNoIGxpbmVzIGFuZCBub3cgd2UganVzdCBpZ25vcmUgdGhl
c2UgYnJlYWsgb3Bwb3J0dW5pdGllcwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDE5MDEyNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTMsNiAr
NTEzLDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFBzZXVkb1N0eWxlQ2FjaGUqIGNhY2hlZFBz
ZXVkb1N0eWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHNldWRvU3R5bGVzLmdldCgpOyB9
CiAKKyAgICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSB7IHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X2N1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCktPnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwg
dmFsdWUpOyB9CisgICAgU3RyaW5nIGdldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9jdXN0b21Q
cm9wZXJ0aWVzLT5nZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUpOyB9CisgICAgYm9vbCBoYXND
dXN0b21Qcm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIHJh
cmVJbmhlcml0ZWREYXRhLT5tX2N1c3RvbVByb3BlcnRpZXMtPmhhc0N1c3RvbVByb3BlcnR5KG5h
bWUpOyB9CisgICAgY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4qIGN1c3RvbVBy
b3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiAmKHJhcmVJbmhlcml0ZWREYXRhLT5tX2N1c3RvbVBy
b3BlcnRpZXMtPm1fdmFsdWVzKTsgfQorCiAgICAgdm9pZCBzZXRIYXNWaWV3cG9ydFVuaXRzKGJv
b2wgaGFzVmlld3BvcnRVbml0cyA9IHRydWUpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEhhc1Zp
ZXdwb3J0VW5pdHMoaGFzVmlld3BvcnRVbml0cyk7IH0KICAgICBib29sIGhhc1ZpZXdwb3J0VW5p
dHMoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaGFzVmlld3BvcnRVbml0cygp
OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGFf
aAorI2RlZmluZSBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YV9oCisKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4geworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEpOyB9CisgICAgUmVmPFN0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YSgqdGhpcykpOyB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlcyA9PSBvLm1f
dmFsdWVzOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlE
YXRhICZvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CisgICAgCisgICAgdm9pZCBz
ZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkgeyBtX3ZhbHVlcy5zZXQobmFtZSwgdmFsdWUpOyB9CisgICAgU3RyaW5nIGdl
dEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlcy5nZXQobmFtZSk7IH0KKyAgICBib29sIGhhc0N1c3RvbVByb3BlcnR5KGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuY29udGFpbnMo
bmFtZSk7IH0KKworICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+IG1fdmFsdWVzOwor
ICAgIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSgpOiBS
ZWZDb3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPigpIHsgfQorICAgIFN0eWxlQ3VzdG9t
UHJvcGVydHlEYXRhKGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvdGhlcikgOiBSZWZD
b3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPigpLCBtX3ZhbHVlcyhIYXNoTWFwPEF0b21p
Y1N0cmluZywgU3RyaW5nPihvdGhlci5tX3ZhbHVlcykpIHsgfQorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGFfaApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmNwcAkocmV2aXNpb24gMTkwMTI2KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJTdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgiCiAK
ICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCisjaW5jbHVkZSAiRGF0YVJlZi5oIgogI2luY2x1ZGUg
IlF1b3Rlc0RhdGEuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU2hhZG93RGF0YS5oIgorI2luY2x1ZGUgIlN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC02MCw2ICs2Miw4IEBAIHN0cnVjdCBHcmVhdGVyVGhhbk9yU2Ft
ZVNpemVBc1N0eWxlUmFyZUkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIENvbG9yIHRh
cEhpZ2hsaWdodENvbG9yOwogI2VuZGlmCisKKyAgICB2b2lkKiBjdXN0b21Qcm9wZXJ0eURhdGFS
ZWZzWzFdOwogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFN0eWxlUmFyZUluaGVyaXRlZERh
dGEpIDw9IHNpemVvZihHcmVhdGVyVGhhbk9yU2FtZVNpemVBc1N0eWxlUmFyZUluaGVyaXRlZERh
dGEpLCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhX3Nob3VsZF9iaXRfcGFjayk7CkBAIC02OSw2ICs3
Myw3IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXQKICAgICAsIHRl
eHRTdHJva2VXaWR0aChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRTdHJva2VXaWR0aCgpKQogICAg
ICwgaW5kZW50KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudCgpKQogICAgICwgbV9lZmZl
Y3RpdmVab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQorICAgICwgbV9jdXN0b21Qcm9w
ZXJ0aWVzKFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpjcmVhdGUoKSkKICAgICAsIHdpZG93cyhS
ZW5kZXJTdHlsZTo6aW5pdGlhbFdpZG93cygpKQogICAgICwgb3JwaGFucyhSZW5kZXJTdHlsZTo6
aW5pdGlhbE9ycGhhbnMoKSkKICAgICAsIG1faGFzQXV0b1dpZG93cyh0cnVlKQpAQCAtMTUwLDYg
KzE1NSw3IEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmUKICAgICAs
IGN1cnNvckRhdGEoby5jdXJzb3JEYXRhKQogICAgICwgaW5kZW50KG8uaW5kZW50KQogICAgICwg
bV9lZmZlY3RpdmVab29tKG8ubV9lZmZlY3RpdmVab29tKQorICAgICwgbV9jdXN0b21Qcm9wZXJ0
aWVzKG8ubV9jdXN0b21Qcm9wZXJ0aWVzKQogICAgICwgd2lkb3dzKG8ud2lkb3dzKQogICAgICwg
b3JwaGFucyhvLm9ycGhhbnMpCiAgICAgLCBtX2hhc0F1dG9XaWRvd3Moby5tX2hhc0F1dG9XaWRv
d3MpCkBAIC0zMjQsNiArMzMwLDcgQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVy
YXRvcj09KAogI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdfV09SRCkKICAgICAgICAgJiYgdHJhaWxp
bmdXb3JkID09IG8udHJhaWxpbmdXb3JkCiAjZW5kaWYKKyAgICAgICAgJiYgbV9jdXN0b21Qcm9w
ZXJ0aWVzID09IG8ubV9jdXN0b21Qcm9wZXJ0aWVzCiAgICAgICAgICYmIFN0eWxlSW1hZ2U6Omlt
YWdlc0VxdWl2YWxlbnQobGlzdFN0eWxlSW1hZ2UuZ2V0KCksIG8ubGlzdFN0eWxlSW1hZ2UuZ2V0
KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJKHJldmlzaW9uIDE5MDEyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDkgQEAKICNkZWZpbmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YV9oCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkRhdGFSZWYuaCIKICNpbmNsdWRl
ICJMZW5ndGguaCIKKyNpbmNsdWRlICJTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTc3LDYgKzc5LDggQEAgcHVibGljOgog
ICAgIAogICAgIExlbmd0aCB3b3JkU3BhY2luZzsKIAorICAgIERhdGFSZWY8U3R5bGVDdXN0b21Q
cm9wZXJ0eURhdGE+IG1fY3VzdG9tUHJvcGVydGllczsKKwogICAgIC8vIFBhZ2VkIG1lZGlhIHBy
b3BlcnRpZXMuCiAgICAgc2hvcnQgd2lkb3dzOwogICAgIHNob3J0IG9ycGhhbnM7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHlsZS1hY2Nl
c3MtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0
b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHlsZS1hY2Nlc3MtZXhwZWN0ZWQuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVk
LXN0eWxlLWFjY2Vzcy1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cis6cm9vdCB7IC0tb25lOiAxMHB4OyAtLXR3bzog
MjBweDsgfQorPC9zdHlsZT4KKzxib2R5PgorPHNjcmlwdD4KK2RvY3VtZW50LndyaXRlKGRvY3Vt
ZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoIi0t
b25lIikgKyAiICIgKyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCItLXR3byIpKQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWwuCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHls
ZS1hY2Nlc3MtaW5oZXJpdGVkLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNzLWluaGVy
aXRlZC1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNzLWluaGVyaXRlZC1leHBlY3Rl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c3R5bGU+Cis6cm9vdCB7IC0tb25lOiAxMHB4OyAtLXR3bzogMjBweDsgfQorPC9zdHlsZT4KKzxi
b2R5PgorPHNjcmlwdD4KK2RvY3VtZW50LndyaXRlKGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNz
c1J1bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoIi0tb25lIikgKyAiICIgKyBkb2N1bWVu
dC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCItLXR3
byIpKQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHlsZS1hY2Nlc3MtaW5oZXJpdGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMv
Y29tcHV0ZWQtc3R5bGUtYWNjZXNzLWluaGVyaXRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNz
LWluaGVyaXRlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c3R5bGU+Cis6cm9vdCB7IC0tb25lOiAxMHB4OyAtLWFub3RoZXI6IDIwcHg7IH0K
Kzwvc3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC53cml0ZShnZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoIi0tb25lIikgKyAiICIgKyBnZXRD
b21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoIi0tYW5vdGhlciIp
KQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHlsZS1hY2Nlc3MuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHls
ZS1hY2Nlc3MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3Rv
bS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cis6cm9vdCB7IC0tb25lOiAx
MHB4OyAtLWFub3RoZXI6IDIwcHg7IH0KKzwvc3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1
bWVudC53cml0ZShnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0
UHJvcGVydHlWYWx1ZSgiLS1vbmUiKSArICIgIiArIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCItLWFub3RoZXIiKSkKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXBy
b3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtY3NzLXZhbHVlLWV4cGVjdGVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9w
ZXJ0eS1nZXQtY3NzLXZhbHVlLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LWdldC1jc3MtdmFs
dWUtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgor
PGJvZHk+CisxMHB4IDIwcHgKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktZ2V0LWNzcy12YWx1ZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1
bGUtcHJvcGVydHktZ2V0LWNzcy12YWx1ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtY3NzLXZhbHVl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKzpyb290IHsgLS1vbmU6IDEwcHg7IC0tdHdvOiAyMHB4OyB9Cis8L3N0eWxlPgorPGJv
ZHk+Cis8c2NyaXB0PgorZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3Nz
UnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgiLS1vbmUiKS5jc3NUZXh0ICsgIiAi
ICsgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlD
U1NWYWx1ZSgiLS10d28iKS5jc3NUZXh0KQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWwuCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5
LWdldC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1
c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktZ2V0LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3Bl
cnR5LWdldC1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorPGh0
bWw+Cis8Ym9keT4KKzEwcHggMjBweAorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXBy
b3BlcnR5LWdldC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vz
dG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDExIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorOnJvb3QgeyAtLW9uZTogMTBw
eDsgLS10d286IDIwcHg7IH0KKzwvc3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC53
cml0ZShkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKCItLW9uZSIpICsgIiAiICsgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNb
MF0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS10d28iKSkKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVs
ZS1wcm9wZXJ0eS1wcmlvcml0eS1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktcHJpb3JpdHktZXhw
ZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1w
cm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktcHJpb3JpdHktZXhwZWN0ZWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHk+CisxMHB4IGltcG9ydGFudAorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRp
ZXMvcnVsZS1wcm9wZXJ0eS1wcmlvcml0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktcHJpb3JpdHkuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1
bGUtcHJvcGVydHktcHJpb3JpdHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorOnJvb3QgeyAtLW9uZTogMTBweCAhaW1wb3J0YW50
OyAtLW9uZTo1MHB4OyB9Cis8L3N0eWxlPgorPGJvZHk+Cis8c2NyaXB0PgorZG9jdW1lbnQud3Jp
dGUoZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgiLS1vbmUiKSArICIgIiArIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBd
LnN0eWxlLmdldFByb3BlcnR5UHJpb3JpdHkoIi0tb25lIikpCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1
bGUtcHJvcGVydHktc2V0LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1zZXQtZXhwZWN0ZWQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVz
L3J1bGUtcHJvcGVydHktc2V0LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1IEBACis8aHRtbD4KKzxib2R5PgorNTBweCAzMHB4Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXNl
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0
aWVzL3J1bGUtcHJvcGVydHktc2V0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXNldC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cis6cm9vdCB7
IC0tb25lOiAxMHB4OyAtLXR3bzogMjBweDsgfQorPC9zdHlsZT4KKzxib2R5PgorPHNjcmlwdD4K
K2RvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLnNldFByb3BlcnR5KCIt
LW9uZSIsICI1cHgiKQorZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUu
cmVtb3ZlUHJvcGVydHkoIi0tdHdvIikKK2RvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVz
WzBdLnN0eWxlLnNldFByb3BlcnR5KCItLXR3byIsICIzMHB4IikKK2RvY3VtZW50LnN0eWxlU2hl
ZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLnNldFByb3BlcnR5KCItLW9uZSIsICI1MHB4IikKK2Rv
Y3VtZW50LndyaXRlKGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoIi0tb25lIikgKyAiICIgKyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5j
c3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCItLXR3byIpKQorPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVy
dGllcy9ydWxlLXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXNlcmlhbGl6YXRpb24tZXhw
ZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1w
cm9wZXJ0aWVzL3J1bGUtc2VyaWFsaXphdGlvbi1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4KKzpyb290IHsgLS1vbmU6IDEwcHg7IC0t
dHdvOiAyMHB4OyB9Cis8L2JvZHk+Cis8L2h0bWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXNlcmlhbGl6YXRpb24uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXNlcmlhbGl6YXRp
b24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9w
ZXJ0aWVzL3J1bGUtc2VyaWFsaXphdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cis6cm9vdCB7IC0tb25lOiAxMHB4OyAtLXR3
bzogMjBweDsgfQorPC9zdHlsZT4KKzxib2R5PgorPHNjcmlwdD4KK2RvY3VtZW50LndyaXRlKGRv
Y3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLmNzc1RleHQpCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261848</attachid>
            <date>2015-09-23 16:27:25 -0700</date>
            <delta_ts>2015-09-24 09:52:01 -0700</delta_ts>
            <desc>Patch just to get EWS feedback</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>63179</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE5MDE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTQzNSw2ICs1NDM1LDggQEAK
IAkJQkM3NzJDNUUwQzRFQjM0NDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnlNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc3MkM1RDBDNEVC
MzQ0MDA4MzI4NUYgLyogTUlNRVR5cGVSZWdpc3RyeU1hYy5tbSAqLzsgfTsKIAkJQkM3NzJFMTMx
MzMxNjIwQzAwMUVDOUNFIC8qIENTU0xpbmVCb3hDb250YWluVmFsdWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzcyRTEyMTMzMTYyMEMwMDFFQzlD
RSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM3NzJFMTYxMzMxNjJDMjAwMUVDOUNFIC8qIENTU0xp
bmVCb3hDb250YWluVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM3NzJFMTUxMzMxNjJDMjAwMUVDOUNFIC8qIENTU0xpbmVCb3hDb250YWlu
VmFsdWUuY3BwICovOyB9OworCQlCQzc3OUUxNDFCQjIxNUJCMDBDQUE4QkYgLyogQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM3NzlFMTMxQkIyMTVCQjAwQ0FBOEJGIC8qIENTU0N1c3RvbVByb3BlcnR5VmFsdWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzc3
OUUxNzFCQjIyN0NBMDBDQUE4QkYgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzc5RTE1MUJCMjI2QTIw
MENBQThCRiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDN0Y0NEE4MEI5RTMyNEUwMEE5RDA4MSAv
KiBJbWFnZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDN0ZBNjIwMEQx
RjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2MUUwRDFGMENCRDAwREIyMkE5IC8qIExpdmVO
b2RlTGlzdC5jcHAgKi87IH07CiAJCUJDN0ZBNjIxMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9k
ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
N0ZBNjFGMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuaCAqLzsgfTsKQEAgLTEzMDcw
LDYgKzEzMDcyLDggQEAKIAkJQkM3NzJDNUQwQzRFQjM0NDAwODMyODVGIC8qIE1JTUVUeXBlUmVn
aXN0cnlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTUlN
RVR5cGVSZWdpc3RyeU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3NzJF
MTIxMzMxNjIwQzAwMUVDOUNFIC8qIENTU0xpbmVCb3hDb250YWluVmFsdWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzc3MkUxNTEzMzE2MkMyMDAxRUM5Q0UgLyogQ1NTTGlu
ZUJveENvbnRhaW5WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkM3NzlFMTMxQkIyMTVCQjAwQ0FBOEJGIC8qIENTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzc3OUUxNTFCQjIyNkEyMDBDQUE4QkYg
LyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM3QjJBRjgwNDUwODI0MTAwQTgwMDBGIC8qIFNjcm9sbGJhci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxiYXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUJD
N0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDN0ZBNjFFMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGl2ZU5vZGVMaXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzkxLDYgKzIxNzk1LDcgQEAKIAkJCQk5Mzkz
RTYwMjE1MUE5QTE4MDAwNjZGMDYgLyogU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAgKi8sCiAJCQkJ
OTM5M0U2MDMxNTFBOUExODAwMDY2RjA2IC8qIFN0eWxlQ2FjaGVkSW1hZ2VTZXQuaCAqLywKIAkJ
CQk5REFDN0M1NjFBRjJDQjY0MDA0MzdDNDQgLyogU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YS5o
ICovLAorCQkJCUJDNzc5RTE1MUJCMjI2QTIwMENBQThCRiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5
RGF0YS5oICovLAogCQkJCUJDNUVCNjdFMEU4MUQ0QTcwMEIyNTk2NSAvKiBTdHlsZURhc2hib2Fy
ZFJlZ2lvbi5oICovLAogCQkJCUJDNUVCOEI2MEU4MjAxQkQwMEIyNTk2NSAvKiBTdHlsZURlcHJl
Y2F0ZWRGbGV4aWJsZUJveERhdGEuY3BwICovLAogCQkJCUJDNUVCOEI3MEU4MjAxQkQwMEIyNTk2
NSAvKiBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaCAqLywKQEAgLTIyNzQ5LDYgKzIy
NzU0LDcgQEAKIAkJCQkyRDhGRUJEQjE0M0UzRUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRlVmFs
dWUuaCAqLywKIAkJCQlBQTA5NzhFRDBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5jcHAgKi8sCiAJCQkJQUEwOTc4RUUwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvcklt
YWdlVmFsdWUuaCAqLywKKwkJCQlCQzc3OUUxMzFCQjIxNUJCMDBDQUE4QkYgLyogQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZS5oICovLAogCQkJCTRBOUNDODE1MTZCQjlBQzYwMEVDNjQ1QSAvKiBDU1NE
ZWZhdWx0U3R5bGVTaGVldHMuY3BwICovLAogCQkJCTRBOUNDODE2MTZCQjlBQzYwMEVDNjQ1QSAv
KiBDU1NEZWZhdWx0U3R5bGVTaGVldHMuaCAqLywKIAkJCQlGQjk2NUI4MjE3QkJCNjJDMDBFODM1
QjkgLyogQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAgKi8sCkBAIC0yNTExOCw2ICsyNTEyNCw3IEBA
CiAJCQkJQThDRkYwNEYwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlBNTI4RTg0MTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9h
dGluZ09iamVjdHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNzc5RTE3MUJCMjI3Q0EwMENBQThC
RiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2OTk4
NzIxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjI3NTM1NjkwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyRTI3Q0EwMEIwRjJCMDkwMEYxN0M3QiAvKiBGbG9hdFBvaW50M0Qu
aCBpbiBIZWFkZXJzICovLApAQCAtMjYxMDEsNiArMjYxMDgsNyBAQAogCQkJCTE0MURDMDUzMTY0
ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1MzhE
NDEzRjlCNjBBMDAwMjQ3NTQgLyogTGF5b3V0UmVwYWludGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDFEQzA1NDE2NDgzNEI5MDAzNzFFNUEgLyogTGF5b3V0U2l6ZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQkM3NzlFMTQxQkIyMTVCQjAwQ0FBOEJGIC8qIENTU0N1c3RvbVByb3BlcnR5VmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTA2NjA3MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxREMwNDgxNjQ4MzQ4RjAwMzcxRTVBIC8qIExh
eW91dFVuaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzNCMUZBMEYwRTQxNjEwMDk2OTNGNiAv
KiBMZWdhY3lUaWxlQ2FjaGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDE5
MDE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ1NTQXNwZWN0
UmF0aW9WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0Jhc2ljU2hhcGVzLmgiCiAjaW5jbHVkZSAiQ1NT
Qm9yZGVySW1hZ2UuaCIKKyNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU0Z1bmN0aW9uVmFsdWUuaCIKQEAgLTE5MDQsNiArMTkwNSwyMCBAQCBpbmxp
bmUgc3RhdGljIGJvb2wgaXNGbGV4T3JHcmlkKENvbnRhaW5lCiAgICAgcmV0dXJuIGVsZW1lbnQg
JiYgZWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpICYmIGVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKS0+
aXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3goKTsKIH0KIAorUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lKSBjb25zdAoreworICAgIE5vZGUqIHN0eWxlZE5vZGUgPSB0aGlzLT5zdHlsZWRO
b2RlKCk7CisgICAgaWYgKCFzdHlsZWROb2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9w
ZXJ0eShzdHlsZWROb2RlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIsIENTU1Byb3BlcnR5Q3Vz
dG9tKTsKKyAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+aGFzQ3VzdG9tUHJvcGVydHkocHJvcGVy
dHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTdHJpbmcgcmVzdWx0ID0g
c3R5bGUtPmdldEN1c3RvbVByb3BlcnR5VmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4g
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKHByb3BlcnR5TmFtZSwgcmVzdWx0KTsKK30K
KwogUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCB1cGRhdGVMYXlvdXQpIGNv
bnN0CiB7CiAgICAgTm9kZSogc3R5bGVkTm9kZSA9IHRoaXMtPnN0eWxlZE5vZGUoKTsKQEAgLTMz
NjksNiArMzM4NCw5IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlOgogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0U3ZnU2hhZG93OgogICAgICAgICAgICAgcmV0dXJuIHN2Z1Byb3BlcnR5VmFs
dWUocHJvcGVydHlJRCwgRG9Ob3RVcGRhdGVMYXlvdXQpOworICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Q3VzdG9tOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBsb2dVbmltcGxlbWVudGVkUHJvcGVydHlJ
RChwcm9wZXJ0eUlEKTsKQEAgLTMzOTMsMTUgKzM0MTEsMzUgQEAgdW5zaWduZWQgQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpsZQogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgcmV0dXJuIG51bUNvbXB1dGVkUHJvcGVydGllczsKKyAgICBjb25zdCBIYXNoTWFw
PEF0b21pY1N0cmluZywgU3RyaW5nPiogY3VzdG9tUHJvcGVydGllcyA9IHN0eWxlLT5jdXN0b21Q
cm9wZXJ0aWVzKCk7CisgICAgcmV0dXJuIG51bUNvbXB1dGVkUHJvcGVydGllcyArIChjdXN0b21Q
cm9wZXJ0aWVzID8gY3VzdG9tUHJvcGVydGllcy0+c2l6ZSgpIDogMCk7CiB9CiAKIFN0cmluZyBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Oml0ZW0odW5zaWduZWQgaSkgY29uc3QKIHsKICAg
ICBpZiAoaSA+PSBsZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAg
CisgICAgaWYgKGkgPCBudW1Db21wdXRlZFByb3BlcnRpZXMpCisgICAgICAgIHJldHVybiBnZXRQ
cm9wZXJ0eU5hbWVTdHJpbmcoY29tcHV0ZWRQcm9wZXJ0aWVzW2ldKTsKKyAgICAKKyAgICBOb2Rl
KiBub2RlID0gbV9ub2RlLmdldCgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGNvbXB1dGVk
UHJvcGVydGllc1tpXSk7CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gbm9kZS0+Y29tcHV0ZWRT
dHlsZShtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOworICAgIGlmICghc3R5bGUpCisgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOworICAgIAorICAgIHVuc2lnbmVkIGluZGV4ID0gaSAtIG51
bUNvbXB1dGVkUHJvcGVydGllczsKKyAgICAKKyAgICBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgU3RyaW5nPiogY3VzdG9tUHJvcGVydGllcyA9IHN0eWxlLT5jdXN0b21Qcm9wZXJ0aWVzKCk7
CisgICAgaWYgKCFjdXN0b21Qcm9wZXJ0aWVzIHx8IGluZGV4ID49IGN1c3RvbVByb3BlcnRpZXMt
PnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgCisgICAgVmVjdG9y
PFN0cmluZywgND4gcmVzdWx0czsKKyAgICBjb3B5S2V5c1RvVmVjdG9yKCpjdXN0b21Qcm9wZXJ0
aWVzLCByZXN1bHRzKTsKKyAgICByZXR1cm4gcmVzdWx0cy5hdChpbmRleCk7CiB9CiAKIGJvb2wg
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlNYXRjaGVzKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwgY29uc3QgQ1NTVmFsdWUqIHZhbHVlKSBjb25zdApAQCAtMzQ4Miw2ICszNTIwLDIy
IEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWwKICAgICAgICAgaWYg
KHZhbHVlKQogICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ldLCB2YWx1
ZS5yZWxlYXNlKCksIGZhbHNlKSk7CiAgICAgfQorICAgIAorICAgIE5vZGUqIHN0eWxlZE5vZGUg
PSB0aGlzLT5zdHlsZWROb2RlKCk7CisgICAgaWYgKHN0eWxlZE5vZGUpIHsKKyAgICAgICAgUmVm
UHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IGNvbXB1dGVSZW5kZXJTdHlsZUZvclByb3BlcnR5KHN0
eWxlZE5vZGUsIG1fcHNldWRvRWxlbWVudFNwZWNpZmllciwgQ1NTUHJvcGVydHlDdXN0b20pOwor
ICAgICAgICBpZiAoc3R5bGUpIHsKKyAgICAgICAgICAgIGNvbnN0IEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBTdHJpbmc+KiBjdXN0b21Qcm9wZXJ0aWVzID0gc3R5bGUtPmN1c3RvbVByb3BlcnRpZXMo
KTsKKyAgICAgICAgICAgIGlmIChjdXN0b21Qcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAg
SGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGN1c3Rv
bVByb3BlcnRpZXMtPmVuZCgpOworICAgICAgICAgICAgICAgIGZvciAoSGFzaE1hcDxBdG9taWNT
dHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY3VzdG9tUHJvcGVydGllcy0+YmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPiB2YWx1ZSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0
ZShpdC0+a2V5LCBpdC0+dmFsdWUpOworICAgICAgICAgICAgICAgICAgICBsaXN0LmFwcGVuZChD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUN1c3RvbSwgdmFsdWUucmVsZWFzZSgpLCBmYWxzZSkpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAK
ICAgICByZXR1cm4gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKGxpc3QuZGF0YSgpLCBs
aXN0LnNpemUoKSk7CiB9CiAKQEAgLTM0OTAsOCArMzU0NCwxOCBAQCBDU1NSdWxlKiBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OnBhCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3N0YXRp
YyBib29sIGlzQ3VzdG9tUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQor
eworICAgIHJldHVybiBwcm9wZXJ0eU5hbWUubGVuZ3RoKCkgPiAyICYmIHByb3BlcnR5TmFtZS5j
aGFyYWN0ZXJBdCgwKSA9PSAnLScgJiYgcHJvcGVydHlOYW1lLmNoYXJhY3RlckF0KDEpID09ICct
JzsKK30KKwogUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CisgICAgaWYg
KGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSA9IENvbXB1dGVkU3R5bGVFeHRyYWN0b3IobV9ub2RlLCBtX2FsbG93Vmlz
aXRlZFN0eWxlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIpLmN1c3RvbVByb3BlcnR5VmFsdWUo
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlID8gdmFsdWUtPmNsb25lRm9yQ1NT
T00oKSA6IG51bGxwdHI7CisgICAgfQorCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0g
Y3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTAxLDYgKzM1NjUsMTMgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYQogCiBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyAmcHJvcGVydHlOYW1lKQogewor
ICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKG1fbm9kZSwgbV9h
bGxvd1Zpc2l0ZWRTdHlsZSwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKS5jdXN0b21Qcm9wZXJ0
eVZhbHVlKHByb3BlcnR5TmFtZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB2YWx1ZS0+Y3NzVGV4dCgpOworICAgIH0K
KwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlO
YW1lKTsKICAgICBpZiAoIXByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmgJKHJldmlzaW9uIDE5MDE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6
CiAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihQYXNzUmVmUHRyPE5vZGU+LCBib29sIGFsbG93
VmlzaXRlZFN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gTk9QU0VVRE8pOwogCiAgICAgUmVmUHRy
PENTU1ZhbHVlPiBwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgPSBV
cGRhdGVMYXlvdXQpIGNvbnN0OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3VzdG9tUHJvcGVydHlW
YWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAKICAgICAvLyBIZWxwZXIg
bWV0aG9kcyBmb3IgSFRNTCBlZGl0aW5nLgogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
PiBjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQg
bGVuZ3RoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3Bl
cnR5VmFsdWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZV9oCisjZGVmaW5lIENTU0N1c3RvbVByb3BlcnR5VmFsdWVfaAorCisjaW5jbHVk
ZSAiQ1NTVmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHZhbHVlKSk7CisgICAgfQorICAgIAorICAg
IGJvb2wgZXF1YWxzKGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKSBjb25zdCB7
IHJldHVybiBtX25hbWUgPT0gb3RoZXIubV9uYW1lICYmIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1
ZTsgfQorCisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgp
OyB9CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQorICAgIAorcHJpdmF0ZToKKyAgICBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICAgICAgOiBDU1NWYWx1ZShD
dXN0b21Qcm9wZXJ0eUNsYXNzKQorICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICAsIG1f
dmFsdWUodmFsdWUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyBtX25h
bWU7CisgICAgY29uc3QgU3RyaW5nIG1fdmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX1ZBTFVFKENTU0N1c3RvbVByb3BlcnR5
VmFsdWUsIGlzQ3VzdG9tUHJvcGVydHlWYWx1ZSgpKQorCisjZW5kaWYgLy8gQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4JKHJldmlzaW9u
IDE5MDE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTg4LDYgKzg4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ1NTVG9rZW5BU3Ry
aW5nKGludAogICAgIGNhc2UgRElSRlVOQ1RJT046CiAgICAgY2FzZSBST0xFRlVOQ1RJT046CiAj
ZW5kaWYKKyAgICBjYXNlIENVU1RPTV9QUk9QRVJUWToKICAgICBjYXNlIFVOSUNPREVSQU5HRToK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKQEAgLTI0NCw2ICsyNDUsOCBAQCBz
dGF0aWMgYm9vbCBzZWxlY3Rvckxpc3REb2VzTm90TWF0Y2hBbnlQCiAldG9rZW4gPHN0cmluZz4g
Uk9MRUZVTkNUSU9OCiAjZW5kaWYKIAorJXRva2VuIDxzdHJpbmc+IENVU1RPTV9QUk9QRVJUWQor
CiAldG9rZW4gPHN0cmluZz4gVU5JQ09ERVJBTkdFCiAKICV0eXBlIDxyZWxhdGlvbj4gY29tYmlu
YXRvcgpAQCAtMTUzNSw3ICsxNTM4LDEzIEBAIGRlY2xfbGlzdF9yZWNvdmVyeToKICAgICA7CiAK
IGRlY2xhcmF0aW9uOgotICAgIHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBleHByIHByaW9yaXR5
IHsKKyAgICBDVVNUT01fUFJPUEVSVFkgbWF5YmVfc3BhY2UgJzonIG1heWJlX3NwYWNlIGV4cHIg
cHJpb3JpdHkgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyVmFsdWVMaXN0PiBw
cm9wZXJ0eVZhbHVlKCQ1KTsKKyAgICAgICAgcGFyc2VyLT5hZGRDdXN0b21Qcm9wZXJ0eURlY2xh
cmF0aW9uKCQxLCBwcm9wZXJ0eVZhbHVlLmdldCgpLCAkNik7CisgICAgICAgICQkID0gdHJ1ZTsK
KyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoJDYsIHRydWUpOworICAgIH0KKyAgICB8
IHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBleHByIHByaW9yaXR5IHsKICAgICAgICAgJCQgPSBm
YWxzZTsKICAgICAgICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7CiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJWYWx1ZUxpc3Q+IHByb3BlcnR5VmFsdWUoJDQpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDE5MDE4OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiQ1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
Q3Jvc3NmYWRlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZpbHRlckltYWdl
VmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250RmFjZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NGb250
RmFjZVNyY1ZhbHVlLmgiCkBAIC0xNTYwLDEzICsxNTYxLDIzIEBAIENTU1BhcnNlcjo6U291cmNl
U2l6ZSBDU1NQYXJzZXI6OnNvdXJjZVMKICAgICByZXR1cm4gU291cmNlU2l6ZShXVEY6Om1vdmUo
ZXhwcmVzc2lvbiksIFdURjo6bW92ZSh2YWx1ZSkpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQg
ZmlsdGVyUHJvcGVydGllcyhib29sIGltcG9ydGFudCwgY29uc3QgQ1NTUGFyc2VyOjpQYXJzZWRQ
cm9wZXJ0eVZlY3RvciYgaW5wdXQsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiYgb3V0cHV0LCBz
aXplX3QmIHVudXNlZEVudHJpZXMsIHN0ZDo6Yml0c2V0PG51bUNTU1Byb3BlcnRpZXM+JiBzZWVu
UHJvcGVydGllcykKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJvb2wgaW1w
b3J0YW50LCBjb25zdCBDU1NQYXJzZXI6OlBhcnNlZFByb3BlcnR5VmVjdG9yJiBpbnB1dCwgVmVj
dG9yPENTU1Byb3BlcnR5LCAyNTY+JiBvdXRwdXQsIHNpemVfdCYgdW51c2VkRW50cmllcywgc3Rk
OjpiaXRzZXQ8bnVtQ1NTUHJvcGVydGllcz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21p
Y1N0cmluZz4mIHNlZW5DdXN0b21Qcm9wZXJ0aWVzKQogewogICAgIC8vIEFkZCBwcm9wZXJ0aWVz
IGluIHJldmVyc2Ugb3JkZXIgc28gdGhhdCBoaWdoZXN0IHByaW9yaXR5IGRlZmluaXRpb25zIGFy
ZSByZWFjaGVkIGZpcnN0LiBEdXBsaWNhdGUgZGVmaW5pdGlvbnMgY2FuIHRoZW4gYmUgaWdub3Jl
ZCB3aGVuIGZvdW5kLgogICAgIGZvciAoaW50IGkgPSBpbnB1dC5zaXplKCkgLSAxOyBpID49IDA7
IC0taSkgewogICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eSYgcHJvcGVydHkgPSBpbnB1dFtpXTsK
ICAgICAgICAgaWYgKHByb3BlcnR5LmlzSW1wb3J0YW50KCkgIT0gaW1wb3J0YW50KQogICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAocHJvcGVydHkuaWQoKSA9PSBD
U1NQcm9wZXJ0eUN1c3RvbSkgeworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
ID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LnZhbHVlKCkpLm5h
bWUoKTsKKyAgICAgICAgICAgIGlmIChzZWVuQ3VzdG9tUHJvcGVydGllcy5jb250YWlucyhuYW1l
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHNlZW5DdXN0b21Qcm9w
ZXJ0aWVzLmFkZChuYW1lKTsKKyAgICAgICAgICAgIG91dHB1dFstLXVudXNlZEVudHJpZXNdID0g
cHJvcGVydHk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHByb3BlcnR5SURJbmRleCA9IHByb3BlcnR5LmlkKCkgLSBmaXJzdENTU1By
b3BlcnR5OwogICAgICAgICBBU1NFUlQocHJvcGVydHlJREluZGV4IDwgc2VlblByb3BlcnRpZXMu
c2l6ZSgpKTsKICAgICAgICAgaWYgKHNlZW5Qcm9wZXJ0aWVzW3Byb3BlcnR5SURJbmRleF0pCkBA
IC0xNTgzLDggKzE1OTQsOSBAQCBSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDU1NQYXJz
ZXI6CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+IHJlc3VsdHModW51c2VkRW50cmllcyk7
CiAKICAgICAvLyBJbXBvcnRhbnQgcHJvcGVydGllcyBoYXZlIGhpZ2hlciBwcmlvcml0eSwgc28g
YWRkIHRoZW0gZmlyc3QuIER1cGxpY2F0ZSBkZWZpbml0aW9ucyBjYW4gdGhlbiBiZSBpZ25vcmVk
IHdoZW4gZm91bmQuCi0gICAgZmlsdGVyUHJvcGVydGllcyh0cnVlLCBtX3BhcnNlZFByb3BlcnRp
ZXMsIHJlc3VsdHMsIHVudXNlZEVudHJpZXMsIHNlZW5Qcm9wZXJ0aWVzKTsKLSAgICBmaWx0ZXJQ
cm9wZXJ0aWVzKGZhbHNlLCBtX3BhcnNlZFByb3BlcnRpZXMsIHJlc3VsdHMsIHVudXNlZEVudHJp
ZXMsIHNlZW5Qcm9wZXJ0aWVzKTsKKyAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gc2VlbkN1c3Rv
bVByb3BlcnRpZXM7CisgICAgZmlsdGVyUHJvcGVydGllcyh0cnVlLCBtX3BhcnNlZFByb3BlcnRp
ZXMsIHJlc3VsdHMsIHVudXNlZEVudHJpZXMsIHNlZW5Qcm9wZXJ0aWVzLCBzZWVuQ3VzdG9tUHJv
cGVydGllcyk7CisgICAgZmlsdGVyUHJvcGVydGllcyhmYWxzZSwgbV9wYXJzZWRQcm9wZXJ0aWVz
LCByZXN1bHRzLCB1bnVzZWRFbnRyaWVzLCBzZWVuUHJvcGVydGllcywgc2VlbkN1c3RvbVByb3Bl
cnRpZXMpOwogICAgIGlmICh1bnVzZWRFbnRyaWVzKQogICAgICAgICByZXN1bHRzLnJlbW92ZSgw
LCB1bnVzZWRFbnRyaWVzKTsKIApAQCAtNDA5Nyw3ICs0MTA5LDI5IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZUFsdChDU1NQcm9wZXJ0eUlEIHAKIAogICAgIHJldHVybiBmYWxzZTsKIH0KLSAgICAK
Kwordm9pZCBDU1NQYXJzZXI6OmFkZEN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oY29uc3QgQ1NT
UGFyc2VyU3RyaW5nJiBuYW1lLCBDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlLCBib29sIGltcG9y
dGFudCkKK3sKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUg
Y3VzdG9tIHByb3BlcnR5IGNvbWVzIGluIGFzIGEgcGFyc2VkIHNldCBvZiBDU1NQYXJzZXJWYWx1
ZXMgY29sbGVjdGVkIGludG8gYSBsaXN0LgorICAgIC8vIEZvciBDU1MgdmFyaWFibGVzLCB3ZSBq
dXN0IHdhbnQgdG8gdHJlYXQgdGhlIGVudGlyZSBzZXQgb2YgdmFsdWVzIGFzIGEgc3RyaW5nLCBz
byB3aGF0IHdlIGRvCisgICAgLy8gaXMgYnVpbGQgdXAgYSBzZXQgb2YgQ1NTVmFsdWVzIGFuZCBz
ZXJpYWxpemUgdGhlbSB1c2luZyBjc3NUZXh0LCBzZXBhcmF0aW5nIG11bHRpcGxlIHZhbHVlcwor
ICAgIC8vIHdpdGggc3BhY2VzLgorICAgIEF0b21pY1N0cmluZyBwcm9wZXJ0eU5hbWUgPSBuYW1l
OworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgdmFsdWUtPnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChpKQorICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSA9IHZh
bHVlLT52YWx1ZUF0KGkpLT5jcmVhdGVDU1NWYWx1ZSgpOworICAgICAgICBpZiAoIWNzc1ZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBidWlsZGVyLmFwcGVuZChjc3NWYWx1ZS0+
Y3NzVGV4dCgpKTsKKyAgICB9CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlDdXN0b20sIENT
U0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZShwcm9wZXJ0eU5hbWUsIGJ1aWxkZXIudG9TdHJp
bmcoKS5sb3dlcigpKSwgaW1wb3J0YW50LCBmYWxzZSk7Cit9CisKIC8vIFsgPHN0cmluZz4gfCA8
dXJpPiB8IDxjb3VudGVyPiB8IGF0dHIoWCkgfCBvcGVuLXF1b3RlIHwgY2xvc2UtcXVvdGUgfCBu
by1vcGVuLXF1b3RlIHwgbm8tY2xvc2UtcXVvdGUgXSsgfCBpbmhlcml0CiAvLyBpbiBDU1MgMi4x
IHRoaXMgZ290IHNvbWV3aGF0IHJlZHVjZWQ6CiAvLyBbIDxzdHJpbmc+IHwgYXR0cihYKSB8IG9w
ZW4tcXVvdGUgfCBjbG9zZS1xdW90ZSB8IG5vLW9wZW4tcXVvdGUgfCBuby1jbG9zZS1xdW90ZSBd
KyB8IGluaGVyaXQKQEAgLTEwNzQ3LDYgKzEwNzgxLDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c0lkZW50aWZpZXJTdGFydEFmdGUKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgaXNDdXN0b21Qcm9wZXJ0eUlkZW50aWZpZXIoQ2hhcmFj
dGVyVHlwZSogY3VycmVudENoYXJhY3RlcikKK3sKKyAgICByZXR1cm4gaXNBU0NJSUFscGhhKGN1
cnJlbnRDaGFyYWN0ZXJbMF0pIHx8IGN1cnJlbnRDaGFyYWN0ZXJbMF0gPT0gJ18nIHx8IGN1cnJl
bnRDaGFyYWN0ZXJbMF0gPj0gMTI4CisgICAgICAgIHx8IChjdXJyZW50Q2hhcmFjdGVyWzBdID09
ICdcXCcgJiYgaXNDU1NFc2NhcGUoY3VycmVudENoYXJhY3RlclsxXSkpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0VxdWFsVG9D
U1NJZGVudGlmaWVyKENoYXJhY3RlclR5cGUqIGNzc1N0cmluZywgY29uc3QgY2hhciogY29uc3Rh
bnRTdHJpbmcpCiB7CiAgICAgLy8gQ29tcGFyZSBhbiBjaGFyYWN0ZXIgbWVtb3J5IGRhdGEgd2l0
aCBhIHplcm8gdGVybWluYXRlZCBzdHJpbmcuCkBAIC0xMDk4NSwxMCArMTEwMjYsNiBAQCBpbmxp
bmUgYm9vbCBDU1NQYXJzZXI6OnBhcnNlSWRlbnRpZmllckluCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KIGlubGluZSB2b2lkIENTU1BhcnNlcjo6cGFyc2VJZGVudGlmaWVyKENo
YXJhY3RlclR5cGUqJiByZXN1bHQsIENTU1BhcnNlclN0cmluZyYgcmVzdWx0U3RyaW5nLCBib29s
JiBoYXNFc2NhcGUpCiB7Ci0gICAgLy8gSWYgYSB2YWxpZCBpZGVudGlmaWVyIHN0YXJ0IGlzIGZv
dW5kLCB3ZSBjYW4gc2FmZWx5Ci0gICAgLy8gcGFyc2UgdGhlIGlkZW50aWZpZXIgdW50aWwgdGhl
IG5leHQgaW52YWxpZCBjaGFyYWN0ZXIuCi0gICAgQVNTRVJUKGlzSWRlbnRpZmllclN0YXJ0PENo
YXJhY3RlclR5cGU+KCkpOwotCiAgICAgQ2hhcmFjdGVyVHlwZSogc3RhcnQgPSBjdXJyZW50Q2hh
cmFjdGVyPENoYXJhY3RlclR5cGU+KCk7CiAgICAgaWYgKFVOTElLRUxZKCFwYXJzZUlkZW50aWZp
ZXJJbnRlcm5hbChjdXJyZW50Q2hhcmFjdGVyPENoYXJhY3RlclR5cGU+KCksIHJlc3VsdCwgaGFz
RXNjYXBlKSkpIHsKICAgICAgICAgLy8gRm91bmQgYW4gZXNjYXBlIHdlIGNvdWxkbid0IGhhbmRs
ZSB3aXRoIDggYml0cywgY29weSB3aGF0IGhhcyBiZWVuIHJlY29nbml6ZWQgYW5kIGNvbnRpbnVl
CkBAIC0xMTkyOCw2ICsxMTk2NSwxMiBAQCByZXN0YXJ0QWZ0ZXJDb21tZW50OgogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmVzdWx0U3RyaW5nLnNldExlbmd0aChyZXN1bHQgLSB0b2tlblN0
YXJ0PFNyY0NoYXJhY3RlclR5cGU+KCkpOwogICAgICAgICAgICAgeXlsdmFsLT5zdHJpbmcgPSBy
ZXN1bHRTdHJpbmc7CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudENoYXJhY3RlcjxTcmNDaGFy
YWN0ZXJUeXBlPigpWzBdID09ICctJyAmJgorICAgICAgICAgICAgICAgICAgaXNJZGVudGlmaWVy
U3RhcnRBZnRlckRhc2goY3VycmVudENoYXJhY3RlcjxTcmNDaGFyYWN0ZXJUeXBlPigpICsgMSkp
IHsKKyAgICAgICAgICAgIC0tY3VycmVudENoYXJhY3RlcjxTcmNDaGFyYWN0ZXJUeXBlPigpOwor
ICAgICAgICAgICAgcGFyc2VJZGVudGlmaWVyKHJlc3VsdCwgcmVzdWx0U3RyaW5nLCBoYXNFc2Nh
cGUpOworICAgICAgICAgICAgbV90b2tlbiA9IENVU1RPTV9QUk9QRVJUWTsKKyAgICAgICAgICAg
IHl5bHZhbC0+c3RyaW5nID0gcmVzdWx0U3RyaW5nOwogICAgICAgICB9IGVsc2UgaWYgKGN1cnJl
bnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKVswXSA9PSAnLScgJiYgY3VycmVudENoYXJh
Y3RlcjxTcmNDaGFyYWN0ZXJUeXBlPigpWzFdID09ICc+JykgewogICAgICAgICAgICAgY3VycmVu
dENoYXJhY3RlcjxTcmNDaGFyYWN0ZXJUeXBlPigpICs9IDI7CiAgICAgICAgICAgICBtX3Rva2Vu
ID0gU0dNTF9DRDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHJldmlzaW9uIDE5MDE4OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQz
LDYgKzE0Myw4IEBAIHB1YmxpYzoKICAgICBib29sIHBhcnNlUXVvdGVzKENTU1Byb3BlcnR5SUQs
IGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlQWx0KENTU1Byb3BlcnR5SUQsIGJvb2wg
aW1wb3J0YW50KTsKICAgICAKKyAgICB2b2lkIGFkZEN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24o
Y29uc3QgQ1NTUGFyc2VyU3RyaW5nJiwgQ1NTUGFyc2VyVmFsdWVMaXN0KiwgYm9vbCBpbXBvcnRh
bnQpOworICAgIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBdHRyKENTU1BhcnNlclZhbHVl
TGlzdCYgYXJncyk7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQmFja2dyb3VuZENvbG9y
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAJKHJldmlzaW9uIDE5MDE4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJDU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NDcm9zc2ZhZGVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIK
KyNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NGb250RmVhdHVyZVZhbHVlLmgiCkBAIC0yMzYsNiArMjM3LDkgQEAgYm9vbCBDU1NWYWx1
ZTo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVlJiBvdAogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTQ29u
dGVudERpc3RyaWJ1dGlvbkNsYXNzOgogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1
ZXM8Q1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBj
YXNlIEN1c3RvbVByb3BlcnR5Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1Zh
bHVlczxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICAKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzMwLDcgKzMzNCwxMCBAQCBTdHJpbmcgQ1NTVmFsdWU6
OmNzc1RleHQoKSBjb25zdAogI2VuZGlmCiAgICAgY2FzZSBDU1NDb250ZW50RGlzdHJpYnV0aW9u
Q2xhc3M6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NDb250ZW50RGlzdHJpYnV0aW9uVmFs
dWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CisgICAgY2FzZSBDdXN0b21Qcm9wZXJ0eUNsYXNz
OgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnRoaXMp
LmN1c3RvbUNTU1RleHQoKTsKICAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CkBAIC00NTMsNiArNDYwLDkgQEAgdm9pZCBDU1NWYWx1ZTo6
ZGVzdHJveSgpCiAgICAgY2FzZSBDU1NDb250ZW50RGlzdHJpYnV0aW9uQ2xhc3M6CiAgICAgICAg
IGRlbGV0ZSBkb3duY2FzdDxDU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWU+KHRoaXMpOwogICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBDdXN0b21Qcm9wZXJ0eUNsYXNzOgorICAgICAgICBkZWxl
dGUgZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4odGhpcyk7CisgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuaAkocmV2aXNpb24gMTkwMTg5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXND
YW52YXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IENhbnZhc0NsYXNzOyB9
CiAgICAgYm9vbCBpc0Nyb3NzZmFkZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUg
PT0gQ3Jvc3NmYWRlQ2xhc3M7IH0KICAgICBib29sIGlzQ3Vyc29ySW1hZ2VWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEN1cnNvckltYWdlQ2xhc3M7IH0KKyAgICBib29sIGlz
Q3VzdG9tUHJvcGVydHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEN1c3Rv
bVByb3BlcnR5Q2xhc3M7IH0KICAgICBib29sIGlzRnVuY3Rpb25WYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xhc3NUeXBlID09IEZ1bmN0aW9uQ2xhc3M7IH0KICAgICBib29sIGlzRm9udEZlYXR1
cmVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEZvbnRGZWF0dXJlQ2xhc3M7
IH0KICAgICBib29sIGlzRm9udEZhY2VTcmNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NU
eXBlID09IEZvbnRGYWNlU3JjQ2xhc3M7IH0KQEAgLTE3Niw3ICsxNzcsOCBAQCBwcm90ZWN0ZWQ6
CiAjZW5kaWYKIAogICAgICAgICBDU1NDb250ZW50RGlzdHJpYnV0aW9uQ2xhc3MsCi0KKyAgICAg
ICAgQ3VzdG9tUHJvcGVydHlDbGFzcywKKyAgICAgICAgCiAgICAgICAgIC8vIExpc3QgY2xhc3Mg
dHlwZXMgbXVzdCBhcHBlYXIgYWZ0ZXIgVmFsdWVMaXN0Q2xhc3MuCiAgICAgICAgIFZhbHVlTGlz
dENsYXNzLAogI2lmIEVOQUJMRShDU1NfSU1BR0VfU0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlz
aW9uIDE5MDE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAK
KyNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2Vy
LmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpA
QCAtMTYwLDggKzE2MSwyMCBAQCB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6
c2V0CiAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsgICAgCiB9CiAK
K3N0YXRpYyBib29sIGlzQ3VzdG9tUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lKQoreworICAgIHJldHVybiBwcm9wZXJ0eU5hbWUubGVuZ3RoKCkgPiAyICYmIHByb3BlcnR5
TmFtZS5jaGFyYWN0ZXJBdCgwKSA9PSAnLScgJiYgcHJvcGVydHlOYW1lLmNoYXJhY3RlckF0KDEp
ID09ICctJzsKK30KKwogUmVmUHRyPENTU1ZhbHVlPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7
CisgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAg
UmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IG1fcHJvcGVydHlTZXQtPmdldEN1c3RvbVByb3BlcnR5
Q1NTVmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gY2xvbmVBbmRDYWNoZUZvckNTU09NKHZh
bHVlLmdldCgpKTsKKyAgICB9CisgICAgCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0g
Y3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzAsNiArMTgzLDkgQEAgUmVmUHRyPENTU1ZhbHVlPiBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbAogCiBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewor
ICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKQorICAgICAgICByZXR1
cm4gbV9wcm9wZXJ0eVNldC0+Z2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShwcm9wZXJ0eU5hbWUpOwor
CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5h
bWUpOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAt
MTc4LDYgKzE5NCw5IEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmcK
IAogU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlQcmlv
cml0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKKyAgICBpZiAoaXNDdXN0b21Qcm9w
ZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlTZXQtPmN1
c3RvbVByb3BlcnR5SXNJbXBvcnRhbnQocHJvcGVydHlOYW1lKSA/ICJpbXBvcnRhbnQiIDogIiI7
CisKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5
TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBA
IC0yMDMsNyArMjIyLDEwIEBAIGJvb2wgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpp
c1AKIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5n
JiBwcmlvcml0eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRh
dGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CisgICAgCiAgICAgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOworICAgIGlmIChpc0N1c3Rv
bVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKQorICAgICAgICBwcm9wZXJ0eUlEID0gQ1NTUHJv
cGVydHlDdXN0b207CiAgICAgaWYgKCFwcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm47CiAKQEAg
LTIxMyw3ICsyMzUsNyBAQCB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0
CiAgICAgYm9vbCBpbXBvcnRhbnQgPSBwcmlvcml0eS5maW5kKCJpbXBvcnRhbnQiLCAwLCBmYWxz
ZSkgIT0gbm90Rm91bmQ7CiAKICAgICBlYyA9IDA7Ci0gICAgYm9vbCBjaGFuZ2VkID0gbV9wcm9w
ZXJ0eVNldC0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY29udGV4
dFN0eWxlU2hlZXQoKSk7CisgICAgYm9vbCBjaGFuZ2VkID0gcHJvcGVydHlJRCAhPSBDU1NQcm9w
ZXJ0eUN1c3RvbSA/IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVl
LCBpbXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KCkpIDogbV9wcm9wZXJ0eVNldC0+c2V0Q3Vz
dG9tUHJvcGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBjb250ZXh0U3R5bGVT
aGVldCgpKTsKIAogICAgIGRpZE11dGF0ZShjaGFuZ2VkID8gUHJvcGVydHlDaGFuZ2VkIDogTm9D
aGFuZ2VzKTsKIApAQCAtMjI4LDYgKzI1MCw4IEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb246OnIKIHsKICAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGUgbXV0YXRp
b25TY29wZSh0aGlzKTsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0
eUlEKHByb3BlcnR5TmFtZSk7CisgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3BlcnR5
TmFtZSkpCisgICAgICAgIHByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUN1c3RvbTsKICAgICBpZiAo
IXByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtMjM2LDcgKzI2MCw3
IEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnIKIAogICAgIGVjID0g
MDsKICAgICBTdHJpbmcgcmVzdWx0OwotICAgIGJvb2wgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQt
PnJlbW92ZVByb3BlcnR5KHByb3BlcnR5SUQsICZyZXN1bHQpOworICAgIGJvb2wgY2hhbmdlZCA9
IHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlDdXN0b20gPyBtX3Byb3BlcnR5U2V0LT5yZW1vdmVQ
cm9wZXJ0eShwcm9wZXJ0eUlELCAmcmVzdWx0KSA6IG1fcHJvcGVydHlTZXQtPnJlbW92ZUN1c3Rv
bVByb3BlcnR5KHByb3BlcnR5TmFtZSwgJnJlc3VsdCk7CiAKICAgICBkaWRNdXRhdGUoY2hhbmdl
ZCA/IFByb3BlcnR5Q2hhbmdlZCA6IE5vQ2hhbmdlcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAxOTAxODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBA
QAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNp
bmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKQEAgLTIyMCw2ICsyMjEsMTQgQEAgU3RyaW5nIFN0eWxl
UHJvcGVydGllczo6Z2V0UHJvcGVydHlWYWx1ZQogICAgIH0KIH0KIAorU3RyaW5nIFN0eWxlUHJv
cGVydGllczo6Z2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSkgY29uc3QKK3sKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0Q3VzdG9tUHJvcGVy
dHlDU1NWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgcmV0dXJu
IHZhbHVlLT5jc3NUZXh0KCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBTdHJpbmcgU3R5
bGVQcm9wZXJ0aWVzOjpib3JkZXJTcGFjaW5nVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYgc2hvcnRoYW5kKSBjb25zdAogewogICAgIFJlZlB0cjxDU1NWYWx1ZT4gaG9yaXpvbnRh
bFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpWzBdKTsK
QEAgLTU4Nyw2ICs1OTYsMTQgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVQcm9wZXJ0aWVz
OjpnZQogICAgIHJldHVybiBwcm9wZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkudmFsdWUoKTsK
IH0KIAorUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVQcm9wZXJ0aWVzOjpnZXRDdXN0b21Qcm9w
ZXJ0eUNTU1ZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBjb25zdAoreworICAgIGlu
dCBmb3VuZFByb3BlcnR5SW5kZXggPSBmaW5kQ3VzdG9tUHJvcGVydHlJbmRleChwcm9wZXJ0eU5h
bWUpOworICAgIGlmIChmb3VuZFByb3BlcnR5SW5kZXggPT0gLTEpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBwcm9wZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkudmFsdWUo
KTsKK30KKwogYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpyZW1vdmVTaG9ydGhhbmRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7CiAgICAgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKQEAgLTYz
MSw2ICs2NDgsMjUgQEAgYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpyZW1vdmVQcm9wZQog
ICAgIHJldHVybiB0cnVlOwogfQogCitib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnJlbW92
ZUN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBTdHJpbmcqIHJldHVy
blRleHQpCit7CisgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZpbmRDdXN0b21Qcm9wZXJ0
eUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgaWYgKGZvdW5kUHJvcGVydHlJbmRleCA9PSAtMSkg
eworICAgICAgICBpZiAocmV0dXJuVGV4dCkKKyAgICAgICAgICAgICpyZXR1cm5UZXh0ID0gIiI7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAocmV0dXJuVGV4dCkKKyAg
ICAgICAgKnJldHVyblRleHQgPSBwcm9wZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkudmFsdWUo
KS0+Y3NzVGV4dCgpOworCisgICAgLy8gQSBtb3JlIGVmZmljaWVudCByZW1vdmFsIHN0cmF0ZWd5
IHdvdWxkIGludm9sdmUgbWFya2luZyBlbnRyaWVzIGFzIGVtcHR5CisgICAgLy8gYW5kIHN3ZWVw
aW5nIHRoZW0gd2hlbiB0aGUgdmVjdG9yIGdyb3dzIHRvbyBiaWcuCisgICAgbV9wcm9wZXJ0eVZl
Y3Rvci5yZW1vdmUoZm91bmRQcm9wZXJ0eUluZGV4KTsKKworICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnJlbW92ZVByZWZpeGVkT3JVbnByZWZpeGVk
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewogICAgIGludCBmb3VuZFByb3Bl
cnR5SW5kZXggPSBmaW5kUHJvcGVydHlJbmRleChwcmVmaXhpbmdWYXJpYW50Rm9yUHJvcGVydHlJ
ZChwcm9wZXJ0eUlEKSk7CkBAIC02NTYsNiArNjkyLDE0IEBAIGJvb2wgU3R5bGVQcm9wZXJ0aWVz
Ojpwcm9wZXJ0eUlzSW1wb3J0YW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBTdHlsZVBy
b3BlcnRpZXM6OmN1c3RvbVByb3BlcnR5SXNJbXBvcnRhbnQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0Cit7CisgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZpbmRDdXN0b21Q
cm9wZXJ0eUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgaWYgKGZvdW5kUHJvcGVydHlJbmRleCAh
PSAtMSkKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5QXQoZm91bmRQcm9wZXJ0eUluZGV4KS5pc0lt
cG9ydGFudCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogU3RyaW5nIFN0eWxlUHJvcGVydGll
czo6Z2V0UHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKSBjb25zdAog
ewogICAgIGludCBmb3VuZFByb3BlcnR5SW5kZXggPSBmaW5kUHJvcGVydHlJbmRleChwcm9wZXJ0
eUlEKTsKQEAgLTY4NCw2ICs3MjgsMjEgQEAgYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpz
ZXRQcm9wZXJ0eQogICAgIHJldHVybiBDU1NQYXJzZXI6OnBhcnNlVmFsdWUodGhpcywgcHJvcGVy
dHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSgpLCBjb250ZXh0U3R5bGVTaGVl
dCkgPT0gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q2hhbmdlZDsKIH0KIAorYm9vbCBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjpzZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIFN0eWxlU2hlZXRDb250
ZW50cyogLypjb250ZXh0U3R5bGVTaGVldCovKQoreworICAgIC8vIFNldHRpbmcgdGhlIHZhbHVl
IHRvIGFuIGVtcHR5IHN0cmluZyBqdXN0IHJlbW92ZXMgdGhlIHByb3BlcnR5IGluIGJvdGggSUUg
YW5kIEdlY2tvLgorICAgIC8vIFNldHRpbmcgaXQgdG8gbnVsbCBzZWVtcyB0byBwcm9kdWNlIGxl
c3MgY29uc2lzdGVudCByZXN1bHRzLCBidXQgd2UgdHJlYXQgaXQganVzdCB0aGUgc2FtZS4KKyAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gcmVtb3ZlQ3VzdG9tUHJvcGVy
dHkocHJvcGVydHlOYW1lKTsKKworICAgIC8vIFdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5nIHBy
b3BlcnR5IHZhbHVlLCB0aGlzIG1vdmVzIHRoZSBwcm9wZXJ0eSB0byB0aGUgZW5kIG9mIHRoZSBs
aXN0LgorICAgIC8vIEZpcmVmb3ggcHJlc2VydmVzIHRoZSBwb3NpdGlvbiwgYW5kIE1TSUUgbW92
ZXMgdGhlIHByb3BlcnR5IHRvIHRoZSBiZWdpbm5pbmcuCisgICAgUmVmUHRyPENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU+IGN1c3RvbVZhbHVlID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRl
KHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgIGFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5Q3VzdG9tLCBjdXN0b21WYWx1ZSwgaW1wb3J0YW50KSk7CisgICAgCisgICAg
cmV0dXJuIHRydWU7Cit9CisKIHZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwcnBWYWx1
ZSwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCBzaG9ydGhh
bmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKQEAgLTcwMiw3ICs3NjEsMTUg
QEAgdm9pZCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eQogYm9vbCBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYgcHJvcGVydHks
IENTU1Byb3BlcnR5KiBzbG90KQogewogICAgIGlmICghcmVtb3ZlU2hvcnRoYW5kUHJvcGVydHko
cHJvcGVydHkuaWQoKSkpIHsKLSAgICAgICAgQ1NTUHJvcGVydHkqIHRvUmVwbGFjZSA9IHNsb3Qg
PyBzbG90IDogZmluZENTU1Byb3BlcnR5V2l0aElEKHByb3BlcnR5LmlkKCkpOworICAgICAgICBD
U1NQcm9wZXJ0eSogdG9SZXBsYWNlID0gc2xvdDsKKyAgICAgICAgaWYgKCFzbG90KSB7CisgICAg
ICAgICAgICBpZiAocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkgeworICAgICAg
ICAgICAgICAgIGlmIChwcm9wZXJ0eS52YWx1ZSgpKQorICAgICAgICAgICAgICAgICAgICB0b1Jl
cGxhY2UgPSBmaW5kQ3VzdG9tQ1NTUHJvcGVydHlXaXRoTmFtZShkb3duY2FzdDxDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlPigqcHJvcGVydHkudmFsdWUoKSkubmFtZSgpKTsKKyAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgIHRvUmVwbGFjZSA9IGZpbmRDU1NQcm9wZXJ0eVdpdGhJRChw
cm9wZXJ0eS5pZCgpKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKHRvUmVwbGFj
ZSkgewogICAgICAgICAgICAgaWYgKCp0b1JlcGxhY2UgPT0gcHJvcGVydHkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzgxLDYgKzg0OCwxMiBAQCBib29sIE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmFkZFBhcnNlZFByCiAKIGJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6
YWRkUGFyc2VkUHJvcGVydHkoY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5KQogeworICAgIGlm
IChwcm9wZXJ0eS5pZCgpID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7CisgICAgICAgIGlmICgocHJv
cGVydHkudmFsdWUoKSAmJiAhY3VzdG9tUHJvcGVydHlJc0ltcG9ydGFudChkb3duY2FzdDxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPigqcHJvcGVydHkudmFsdWUoKSkubmFtZSgpKSkgfHwgcHJvcGVy
dHkuaXNJbXBvcnRhbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBzZXRQcm9wZXJ0eShwcm9wZXJ0
eSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCiAgICAgLy8gT25seSBhZGQg
cHJvcGVydGllcyB0aGF0IGhhdmUgbm8gIWltcG9ydGFudCBjb3VudGVycGFydCBwcmVzZW50CiAg
ICAgaWYgKCFwcm9wZXJ0eUlzSW1wb3J0YW50KHByb3BlcnR5LmlkKCkpIHx8IHByb3BlcnR5Lmlz
SW1wb3J0YW50KCkpCiAgICAgICAgIHJldHVybiBzZXRQcm9wZXJ0eShwcm9wZXJ0eSk7CkBAIC05
NzMsMTIgKzEwNDYsMTcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydGllczo6YXNUZXh0KCkgY29uc3QK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB2YWx1ZSA9IHByb3BlcnR5LnZhbHVlKCktPmNz
c1RleHQoKTsKIAotICAgICAgICBpZiAodmFsdWUgPT0gImluaXRpYWwiICYmICFDU1NQcm9wZXJ0
eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShwcm9wZXJ0eUlEKSkKKyAgICAgICAgaWYgKHByb3BlcnR5
SUQgIT0gQ1NTUHJvcGVydHlDdXN0b20gJiYgdmFsdWUgPT0gImluaXRpYWwiICYmICFDU1NQcm9w
ZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShwcm9wZXJ0eUlEKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIGlmIChudW1EZWNscysrKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICcpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eUlE
KSk7CisKKyAgICAgICAgaWYgKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlDdXN0b20pCisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpw
cm9wZXJ0eS52YWx1ZSgpKS5uYW1lKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eUlEKSk7CisKICAgICAgICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoIjogIik7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQodmFsdWUpOwogICAg
ICAgICBpZiAocHJvcGVydHkuaXNJbXBvcnRhbnQoKSkKQEAgLTExNzUsNiArMTI1Myw0MiBAQCBp
bnQgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZmluZFByb3BlcnR5CiAgICAgcmV0dXJuIC0xOwog
fQogCitpbnQgSW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpmaW5kQ3VzdG9tUHJvcGVydHlJbmRl
eChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICAvLyBDb252ZXJ0IHRo
ZSBwcm9wZXJ0eUlEIGludG8gYW4gdWludDE2X3QgdG8gY29tcGFyZSBpdCB3aXRoIHRoZSBtZXRh
ZGF0YSdzIG1fcHJvcGVydHlJRCB0byBhdm9pZAorICAgIC8vIHRoZSBjb21waWxlciBjb252ZXJ0
aW5nIGl0IHRvIGFuIGludCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgbG9vcC4KKyAgICB1aW50MTZf
dCBpZCA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihDU1NQcm9wZXJ0eUN1c3RvbSk7CisgICAgZm9y
IChpbnQgbiA9IG1fYXJyYXlTaXplIC0gMSA7IG4gPj0gMDsgLS1uKSB7CisgICAgICAgIGlmICht
ZXRhZGF0YUFycmF5KClbbl0ubV9wcm9wZXJ0eUlEID09IGlkKSB7CisgICAgICAgICAgICAvLyBX
ZSBmb3VuZCBhIGN1c3RvbSBwcm9wZXJ0eS4gU2VlIGlmIHRoZSBuYW1lIG1hdGNoZXMuCisgICAg
ICAgICAgICBpZiAoIXZhbHVlQXJyYXkoKVtuXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGlmIChkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqdmFsdWVB
cnJheSgpW25dKS5uYW1lKCkgPT0gcHJvcGVydHlOYW1lKQorICAgICAgICAgICAgICAgIHJldHVy
biBuOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCitpbnQgTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6ZmluZEN1c3RvbVByb3BlcnR5SW5kZXgoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpIGNvbnN0Cit7CisgICAgLy8gQ29udmVydCB0aGUgcHJvcGVydHlJRCBpbnRv
IGFuIHVpbnQxNl90IHRvIGNvbXBhcmUgaXQgd2l0aCB0aGUgbWV0YWRhdGEncyBtX3Byb3BlcnR5
SUQgdG8gYXZvaWQKKyAgICAvLyB0aGUgY29tcGlsZXIgY29udmVydGluZyBpdCB0byBhbiBpbnQg
bXVsdGlwbGUgdGltZXMgaW4gdGhlIGxvb3AuCisgICAgdWludDE2X3QgaWQgPSBzdGF0aWNfY2Fz
dDx1aW50MTZfdD4oQ1NTUHJvcGVydHlDdXN0b20pOworICAgIGZvciAoaW50IG4gPSBtX3Byb3Bl
cnR5VmVjdG9yLnNpemUoKSAtIDEgOyBuID49IDA7IC0tbikgeworICAgICAgICBpZiAobV9wcm9w
ZXJ0eVZlY3Rvci5hdChuKS5tZXRhZGF0YSgpLm1fcHJvcGVydHlJRCA9PSBpZCkgeworICAgICAg
ICAgICAgLy8gV2UgZm91bmQgYSBjdXN0b20gcHJvcGVydHkuIFNlZSBpZiB0aGUgbmFtZSBtYXRj
aGVzLgorICAgICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VmVjdG9yLmF0KG4pLnZhbHVlKCkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoZG93bmNhc3Q8Q1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZT4oKm1fcHJvcGVydHlWZWN0b3IuYXQobikudmFsdWUoKSkubmFtZSgp
ID09IHByb3BlcnR5TmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKwogQ1NTUHJvcGVydHkqIE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmZpbmRDU1NQcm9wZXJ0eVdpdGhJRChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQp
CiB7CiAgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZpbmRQcm9wZXJ0eUluZGV4KHByb3Bl
cnR5SUQpOwpAQCAtMTE4Myw2ICsxMjk3LDE0IEBAIENTU1Byb3BlcnR5KiBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjpmaW4KICAgICByZXR1cm4gJm1fcHJvcGVydHlWZWN0b3IuYXQoZm91bmRQcm9w
ZXJ0eUluZGV4KTsKIH0KIAorQ1NTUHJvcGVydHkqIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmZp
bmRDdXN0b21DU1NQcm9wZXJ0eVdpdGhOYW1lKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQor
eworICAgIGludCBmb3VuZFByb3BlcnR5SW5kZXggPSBmaW5kQ3VzdG9tUHJvcGVydHlJbmRleChw
cm9wZXJ0eU5hbWUpOworICAgIGlmIChmb3VuZFByb3BlcnR5SW5kZXggPT0gLTEpCisgICAgICAg
IHJldHVybiAwOworICAgIHJldHVybiAmbV9wcm9wZXJ0eVZlY3Rvci5hdChmb3VuZFByb3BlcnR5
SW5kZXgpOworfQorCiBib29sIFN0eWxlUHJvcGVydGllczo6cHJvcGVydHlNYXRjaGVzKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgQ1NTVmFsdWUqIHByb3BlcnR5VmFsdWUpIGNvbnN0
CiB7CiAgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZpbmRQcm9wZXJ0eUluZGV4KHByb3Bl
cnR5SUQpOwpAQCAtMTI2NSw2ICsxMzg3LDggQEAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+
IE11dGFibGVTdHlsZQogCiBTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpQcm9wZXJ0eVJlZmVyZW5j
ZTo6Y3NzTmFtZSgpIGNvbnN0CiB7CisgICAgaWYgKGlkKCkgPT0gQ1NTUHJvcGVydHlDdXN0b20p
CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqdmFsdWUo
KSkubmFtZSgpOwogICAgIHJldHVybiBnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoaWQoKSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgJKHJldmlzaW9uIDE5MDE4OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtOTIsNiArOTIsMTAgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRQcm9wZXJ0eVNob3J0aGFu
ZChDU1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBib29sIGlzUHJvcGVydHlJbXBsaWNpdChDU1NQ
cm9wZXJ0eUlEKSBjb25zdDsKIAorICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldEN1c3RvbVBy
b3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIFN0
cmluZyBnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBj
b25zdDsKKyAgICBib29sIGN1c3RvbVByb3BlcnR5SXNJbXBvcnRhbnQoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpIGNvbnN0OworCiAgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNv
cHlCbG9ja1Byb3BlcnRpZXMoKSBjb25zdDsKIAogICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlck1vZGU+KG1fY3NzUGFy
c2VyTW9kZSk7IH0KQEAgLTEzMiw3ICsxMzYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgeyB9CiAKICAg
ICBpbnQgZmluZFByb3BlcnR5SW5kZXgoQ1NTUHJvcGVydHlJRCkgY29uc3Q7Ci0KKyAgICBpbnQg
ZmluZEN1c3RvbVByb3BlcnR5SW5kZXgoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0
OworICAgIAogICAgIHVuc2lnbmVkIG1fY3NzUGFyc2VyTW9kZSA6IDI7CiAgICAgbXV0YWJsZSB1
bnNpZ25lZCBtX2lzTXV0YWJsZSA6IDE7CiAgICAgdW5zaWduZWQgbV9hcnJheVNpemUgOiAyOTsK
QEAgLTE2Myw3ICsxNjgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ1NTVmFsdWUqKiB2YWx1ZUFy
cmF5KCkgY29uc3Q7CiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eU1ldGFkYXRhKiBtZXRhZGF0YUFy
cmF5KCkgY29uc3Q7CiAgICAgaW50IGZpbmRQcm9wZXJ0eUluZGV4KENTU1Byb3BlcnR5SUQpIGNv
bnN0OwotCisgICAgaW50IGZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lKSBjb25zdDsKKyAgICAKICAgICB2b2lkKiBtX3N0b3JhZ2U7CiAKIHByaXZhdGU6
CkBAIC0yMjEsOSArMjI3LDE0IEBAIHB1YmxpYzoKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBl
bnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1l
bnQpOwogCiAgICAgaW50IGZpbmRQcm9wZXJ0eUluZGV4KENTU1Byb3BlcnR5SUQpIGNvbnN0Owot
CisgICAgaW50IGZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lKSBjb25zdDsKKyAgICAKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDQ+IG1fcHJvcGVydHlW
ZWN0b3I7CiAKKyAgICAvLyBNZXRob2RzIGZvciBxdWVyeWluZyBhbmQgYWx0ZXJpbmcgQ1NTIGN1
c3RvbSBwcm9wZXJ0aWVzLgorICAgIGJvb2wgc2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFs
c2UsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQgPSAwKTsKKyAgICBib29s
IHJlbW92ZUN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBTdHJpbmcq
IHJldHVyblRleHQgPSBudWxscHRyKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzKENTU1BhcnNlck1vZGUpOwogICAgIGV4cGxpY2l0IE11dGFibGVTdHls
ZVByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJik7CkBAIC0yMzEsNiArMjQyLDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgcmVtb3ZlU2hvcnRoYW5kUHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCk7CiAgICAgQ1NTUHJvcGVydHkqIGZpbmRDU1NQcm9wZXJ0eVdpdGhJRChDU1NQcm9wZXJ0eUlE
KTsKKyAgICBDU1NQcm9wZXJ0eSogZmluZEN1c3RvbUNTU1Byb3BlcnR5V2l0aE5hbWUoY29uc3Qg
U3RyaW5nJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbj4gbV9jc3NvbVdyYXBwZXI7CiAKICAgICBmcmllbmQgY2xhc3MgU3R5bGVQcm9wZXJ0aWVz
OwpAQCAtMjc5LDYgKzI5MSwxMyBAQCBpbmxpbmUgaW50IFN0eWxlUHJvcGVydGllczo6ZmluZFBy
b3BlcnR5CiAgICAgcmV0dXJuIGRvd25jYXN0PEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4oKnRo
aXMpLmZpbmRQcm9wZXJ0eUluZGV4KHByb3BlcnR5SUQpOwogfQogCitpbmxpbmUgaW50IFN0eWxl
UHJvcGVydGllczo6ZmluZEN1c3RvbVByb3BlcnR5SW5kZXgoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0Cit7CisgICAgaWYgKGlzPE11dGFibGVTdHlsZVByb3BlcnRpZXM+KCp0aGlz
KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PE11dGFibGVTdHlsZVByb3BlcnRpZXM+KCp0aGlz
KS5maW5kQ3VzdG9tUHJvcGVydHlJbmRleChwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBkb3du
Y2FzdDxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+KCp0aGlzKS5maW5kQ3VzdG9tUHJvcGVydHlJ
bmRleChwcm9wZXJ0eU5hbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllcykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDE5MDE4OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlLmgiCiAjaW5jbHVkZSAi
Q1NTQ2FsY3VsYXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIK
KyNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRGVmYXVs
dFN0eWxlU2hlZXRzLmgiCiAjaW5jbHVkZSAiQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRGYWNlUnVsZS5oIgpAQCAtMTM5LDYgKzE0MCw3IEBACiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5o
PgogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKICNpbmNsdWRlICJDU1NHcmlkTGluZU5h
bWVzVmFsdWUuaCIKQEAgLTE4OSwxNCArMTkxLDE3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBw
bHlEZWZlcnJlZFByb3BlcnRpZXMoU3R5bGVSZXNvbHZlciYpOwogCisgICAgSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIFByb3BlcnR5PiYgY3VzdG9tUHJvcGVydGllcygpIHsgcmV0dXJuIG1fY3VzdG9t
UHJvcGVydGllczsgfQorICAgIAogcHJpdmF0ZToKICAgICB2b2lkIGFkZFN0eWxlUHJvcGVydGll
cyhjb25zdCBTdHlsZVByb3BlcnRpZXMmLCBTdHlsZVJ1bGUmLCBib29sIGlzSW1wb3J0YW50LCBi
b29sIGluaGVyaXRlZE9ubHksIFByb3BlcnR5V2hpdGVsaXN0VHlwZSwgdW5zaWduZWQgbGlua01h
dGNoVHlwZSk7CiAgICAgc3RhdGljIHZvaWQgc2V0UHJvcGVydHlJbnRlcm5hbChQcm9wZXJ0eSYs
IENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlJiwgdW5zaWduZWQgbGlua01hdGNoVHlwZSk7CiAKLSAg
ICBQcm9wZXJ0eSBtX3Byb3BlcnRpZXNbbnVtQ1NTUHJvcGVydGllcyArIDFdOwotICAgIHN0ZDo6
Yml0c2V0PG51bUNTU1Byb3BlcnRpZXMgKyAxPiBtX3Byb3BlcnR5SXNQcmVzZW50OworICAgIFBy
b3BlcnR5IG1fcHJvcGVydGllc1tudW1DU1NQcm9wZXJ0aWVzICsgMl07CisgICAgc3RkOjpiaXRz
ZXQ8bnVtQ1NTUHJvcGVydGllcyArIDI+IG1fcHJvcGVydHlJc1ByZXNlbnQ7CiAKICAgICBWZWN0
b3I8UHJvcGVydHksIDg+IG1fZGVmZXJyZWRQcm9wZXJ0aWVzOworICAgIEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBQcm9wZXJ0eT4gbV9jdXN0b21Qcm9wZXJ0aWVzOwogCiAgICAgVGV4dERpcmVjdGlv
biBtX2RpcmVjdGlvbjsKICAgICBXcml0aW5nTW9kZSBtX3dyaXRpbmdNb2RlOwpAQCAtODQ1LDYg
Kzg1MCw5IEBAIFJlZjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3IKICAgICAv
LyBkZWNsLCB0aGVyZSdzIG5vdGhpbmcgdG8gb3ZlcnJpZGUuIFNvIGp1c3QgYWRkIHRoZSBmaXJz
dCBwcm9wZXJ0aWVzLgogICAgIENhc2NhZGVkUHJvcGVydGllcyBjYXNjYWRlKGRpcmVjdGlvbiwg
d3JpdGluZ01vZGUpOwogICAgIGNhc2NhZGUuYWRkTWF0Y2hlcyhyZXN1bHQsIGZhbHNlLCAwLCBy
ZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5zaXplKCkgLSAxKTsKKyAgICAKKyAgICAvLyBSZXNv
bHZlIHZhcmlhYmxlcyBmaXJzdC4KKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRl
LCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20pOwogCiAgICAgYXBwbHlDYXNj
YWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0
eVByb3BlcnR5KTsKIApAQCAtMTAxMSw2ICsxMDE5LDkgQEAgUmVmPFJlbmRlclN0eWxlPiBTdHls
ZVJlc29sdmVyOjpzdHlsZUZvcgogICAgIENhc2NhZGVkUHJvcGVydGllcyBjYXNjYWRlKGRpcmVj
dGlvbiwgd3JpdGluZ01vZGUpOwogICAgIGNhc2NhZGUuYWRkTWF0Y2hlcyhyZXN1bHQsIGZhbHNl
LCAwLCByZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5zaXplKCkgLSAxKTsKIAorICAgIC8vIFJl
c29sdmUgdmFyaWFibGVzIGZpcnN0LgorICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2Nh
ZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSk7CisKICAgICBhcHBseUNh
c2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9y
aXR5UHJvcGVydHkpOwogCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIHVwZGF0ZSBp
dCBub3cuCkBAIC0xNjg2LDYgKzE2OTcsOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0
Y2hlZFByb3BlcnRpCiAKICAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwg
Q1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0
aW9uKTsKICAgICAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3RlclJ1YnkoKTsKKyAgICAK
KyAgICAgICAgLy8gUmVzb2x2ZSB2YXJpYWJsZXMgZmlyc3QuCisgICAgICAgIGFwcGx5Q2FzY2Fk
ZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1c3Rv
bSk7CiAKICAgICAgICAgLy8gU3RhcnQgYnkgYXBwbHlpbmcgcHJvcGVydGllcyB0aGF0IG90aGVy
IHByb3BlcnRpZXMgbWF5IGRlcGVuZCBvbi4KICAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRp
ZXMoY2FzY2FkZSwgZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5KTsK
QEAgLTE3MDEsNiArMTcxNSw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGkKICAgICBjYXNjYWRlLmFkZE1hdGNoZXMobWF0Y2hSZXN1bHQsIHRydWUsIG1hdGNoUmVz
dWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9y
UnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKICAgICBjYXNjYWRlLmFkZE1hdGNoZXMobWF0Y2hS
ZXN1bHQsIHRydWUsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVzZXJSdWxlLCBtYXRjaFJlc3Vs
dC5yYW5nZXMubGFzdFVzZXJSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogICAgIGNhc2NhZGUu
YWRkTWF0Y2hlcyhtYXRjaFJlc3VsdCwgdHJ1ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFS
dWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsK
KyAgICAKKyAgICAvLyBSZXNvbHZlIHZhcmlhYmxlcyBmaXJzdC4KKyAgICBhcHBseUNhc2NhZGVk
UHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20p
OwogCiAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlXZWJr
aXRSdWJ5UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uKTsKICAgICAKQEAg
LTE4ODEsNiArMTg5OCwxMiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NT
UHJvCiAKICAgICBpZiAoaXNJbmhlcml0ICYmICFzdGF0ZS5wYXJlbnRTdHlsZSgpLT5oYXNFeHBs
aWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpICYmICFDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQ
cm9wZXJ0eShpZCkpCiAgICAgICAgIHN0YXRlLnBhcmVudFN0eWxlKCktPnNldEhhc0V4cGxpY2l0
bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCk7CisgICAgCisgICAgaWYgKGlkID09IENTU1Byb3BlcnR5
Q3VzdG9tKSB7CisgICAgICAgIENTU0N1c3RvbVByb3BlcnR5VmFsdWUqIGN1c3RvbVByb3BlcnR5
ID0gJmRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCp2YWx1ZSk7CisgICAgICAgIHN0
YXRlLnN0eWxlKCktPnNldEN1c3RvbVByb3BlcnR5VmFsdWUoY3VzdG9tUHJvcGVydHktPm5hbWUo
KSwgY3VzdG9tUHJvcGVydHktPnZhbHVlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAg
ICAgLy8gVXNlIHRoZSBnZW5lcmF0ZWQgU3R5bGVCdWlsZGVyLgogICAgIFN0eWxlQnVpbGRlcjo6
YXBwbHlQcm9wZXJ0eShpZCwgKnRoaXMsICp2YWx1ZSwgaXNJbml0aWFsLCBpc0luaGVyaXQpOwpA
QCAtMjUyNiw2ICsyNTQ5LDI0IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0
aWVzOjoKIAogICAgIGF1dG8mIHByb3BlcnR5ID0gbV9wcm9wZXJ0aWVzW2lkXTsKICAgICBBU1NF
UlQoaWQgPCBtX3Byb3BlcnR5SXNQcmVzZW50LnNpemUoKSk7CisgICAgaWYgKGlkID09IENTU1By
b3BlcnR5Q3VzdG9tKSB7CisgICAgICAgIG1fcHJvcGVydHlJc1ByZXNlbnQuc2V0KGlkKTsKKyAg
ICAgICAgY29uc3QgYXV0byYgY3VzdG9tVmFsdWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlPihjc3NWYWx1ZSk7CisgICAgICAgIGJvb2wgaGFzVmFsdWUgPSBjdXN0b21Qcm9wZXJ0
aWVzKCkuY29udGFpbnMoY3VzdG9tVmFsdWUubmFtZSgpKTsKKyAgICAgICAgaWYgKCFoYXNWYWx1
ZSkgeworICAgICAgICAgICAgUHJvcGVydHkgcHJvcGVydHk7CisgICAgICAgICAgICBwcm9wZXJ0
eS5pZCA9IGlkOworICAgICAgICAgICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXpl
b2YocHJvcGVydHkuY3NzVmFsdWUpKTsKKyAgICAgICAgICAgIHNldFByb3BlcnR5SW50ZXJuYWwo
cHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbGlua01hdGNoVHlwZSk7CisgICAgICAgICAgICBjdXN0
b21Qcm9wZXJ0aWVzKCkuc2V0KGN1c3RvbVZhbHVlLm5hbWUoKSwgcHJvcGVydHkpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgUHJvcGVydHkgcHJvcGVydHkgPSBjdXN0b21Qcm9wZXJ0
aWVzKCkuZ2V0KGN1c3RvbVZhbHVlLm5hbWUoKSk7CisgICAgICAgICAgICBzZXRQcm9wZXJ0eUlu
dGVybmFsKHByb3BlcnR5LCBpZCwgY3NzVmFsdWUsIGxpbmtNYXRjaFR5cGUpOworICAgICAgICAg
ICAgY3VzdG9tUHJvcGVydGllcygpLnNldChjdXN0b21WYWx1ZS5uYW1lKCksIHByb3BlcnR5KTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIGlmICghbV9wcm9w
ZXJ0eUlzUHJlc2VudFtpZF0pCiAgICAgICAgIG1lbXNldChwcm9wZXJ0eS5jc3NWYWx1ZSwgMCwg
c2l6ZW9mKHByb3BlcnR5LmNzc1ZhbHVlKSk7CiAgICAgbV9wcm9wZXJ0eUlzUHJlc2VudC5zZXQo
aWQpOwpAQCAtMjYyMyw2ICsyNjY0LDEzIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNj
YWRlZFByb3BlcnQKICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nh
c3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwogICAgICAgICBpZiAoIWNhc2NhZGUuaGFzUHJvcGVydHko
cHJvcGVydHlJRCkpCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHByb3BlcnR5
SUQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKKyAgICAgICAgICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5Pjo6aXRlcmF0b3IgZW5kID0gY2FzY2Fk
ZS5jdXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCk7CisgICAgICAgICAgICBmb3IgKEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5Pjo6aXRlcmF0b3IgaXQgPSBj
YXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgICAgICAgICBpdC0+dmFsdWUuYXBwbHkoKnRoaXMpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgYXV0byYgcHJvcGVydHkgPSBj
YXNjYWRlLnByb3BlcnR5KHByb3BlcnR5SUQpOwogICAgICAgICBBU1NFUlQoIXNob3VsZEFwcGx5
UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpOwogICAgICAgICBwcm9wZXJ0eS5hcHBs
eSgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCShyZXZpc2lvbiAxOTAxODkpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgZGllICJXZSd2ZSByZWFjaGVkIG1vcmUgdGhhbiAxMDI0IENTUyBwcgogbXkgJW5h
bWVzSGFzaDsKIG15IEBkdXBsaWNhdGVzID0gKCk7CiAKLW15ICRudW1QcmVkZWZpbmVkUHJvcGVy
dGllcyA9IDE7CitteSAkbnVtUHJlZGVmaW5lZFByb3BlcnRpZXMgPSAyOwogbXkgQG5hbWVzID0g
KCk7CiBteSAlbmFtZUlzSW5oZXJpdGVkOwogbXkgJXByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVy
T3B0aW9uczsKQEAgLTIzNiw2ICsyMzYsNyBAQCBTdHJpbmcgZ2V0SlNQcm9wZXJ0eU5hbWUoQ1NT
UHJvcGVydHlJRCBpCiAKIHN0YXRpYyBjb25zdCBib29sIGlzSW5oZXJpdGVkUHJvcGVydHlUYWJs
ZVtudW1DU1NQcm9wZXJ0aWVzICsgJG51bVByZWRlZmluZWRQcm9wZXJ0aWVzXSA9IHsKICAgICBm
YWxzZSwgLy8gQ1NTUHJvcGVydHlJbnZhbGlkCisgICAgZmFsc2UsIC8vIENTU1Byb3BlcnR5Q3Vz
dG9tCiBFT0YKIAogZm9yZWFjaCBteSAkbmFtZSAoQG5hbWVzKSB7CkBAIC0yODMsNiArMjg0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIENTU1Byb3BlcnR5SUQgOiB1aW50MTZfdCB7
CiAgICAgQ1NTUHJvcGVydHlJbnZhbGlkID0gMCwKKyAgICBDU1NQcm9wZXJ0eUN1c3RvbSA9IDEs
CiBFT0YKIAogbXkgJGZpcnN0ID0gJG51bVByZWRlZmluZWRQcm9wZXJ0aWVzOwpAQCAtMzEzLDcg
KzMxNSw3IEBAIFdURjo6U3RyaW5nIGdldEpTUHJvcGVydHlOYW1lKENTU1Byb3BlcnQKIAogaW5s
aW5lIENTU1Byb3BlcnR5SUQgY29udmVydFRvQ1NTUHJvcGVydHlJRChpbnQgdmFsdWUpCiB7Ci0g
ICAgQVNTRVJUKCh2YWx1ZSA+PSBmaXJzdENTU1Byb3BlcnR5ICYmIHZhbHVlIDw9IGxhc3RDU1NQ
cm9wZXJ0eSkgfHwgdmFsdWUgPT0gQ1NTUHJvcGVydHlJbnZhbGlkKTsKKyAgICBBU1NFUlQoKHZh
bHVlID49IGZpcnN0Q1NTUHJvcGVydHkgJiYgdmFsdWUgPD0gbGFzdENTU1Byb3BlcnR5KSB8fCB2
YWx1ZSA9PSBDU1NQcm9wZXJ0eUludmFsaWQgfHwgdmFsdWUgPT0gQ1NTUHJvcGVydHlDdXN0b20p
OwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPih2YWx1ZSk7CiB9CiAKQEAg
LTg3Miw2ICs4NzQsNyBAQCB2b2lkIFN0eWxlQnVpbGRlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9w
CiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlJbnZhbGlk
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlDdXN0b206CiAgICAgICAgIGJyZWFrOwogRU9GCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAJKHJldmlzaW9uIDE5MDE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDYgKzM0OCwxNCBAQCBib29s
IEluc3BlY3RvclN0eWxlOjpnZXRUZXh0KFN0cmluZyogcmVzCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK3N0YXRpYyBTdHJpbmcgbG93ZXJjYXNlUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICAvLyBDdXN0b20gcHJvcGVydGllcyBhcmUgY2FzZS1zZW5zaXRpdmUuCisgICAg
aWYgKG5hbWUubGVuZ3RoKCkgPiAyICYmIG5hbWUuY2hhcmFjdGVyQXQoMCkgPT0gJy0nICYmIG5h
bWUuY2hhcmFjdGVyQXQoMSkgPT0gJy0nKQorICAgICAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1
cm4gbmFtZS5sb3dlcigpOworfQorCiBib29sIEluc3BlY3RvclN0eWxlOjpwb3B1bGF0ZUFsbFBy
b3BlcnRpZXMoVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+KiByZXN1bHQpIGNvbnN0CiB7
CiAgICAgSGFzaFNldDxTdHJpbmc+IHNvdXJjZVByb3BlcnR5TmFtZXM7CkBAIC0zNjIsMTYgKzM3
MCwxNiBAQCBib29sIEluc3BlY3RvclN0eWxlOjpwb3B1bGF0ZUFsbFByb3BlcnRpCiAgICAgICAg
ICAgICBJbnNwZWN0b3JTdHlsZVByb3BlcnR5IHAoKml0LCB0cnVlLCBmYWxzZSk7CiAgICAgICAg
ICAgICBwLnNldFJhd1RleHRGcm9tU3R5bGVEZWNsYXJhdGlvbihzdHlsZURlY2xhcmF0aW9uKTsK
ICAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHApOwotICAgICAgICAgICAgc291cmNlUHJvcGVy
dHlOYW1lcy5hZGQoaXQtPm5hbWUubG93ZXIoKSk7CisgICAgICAgICAgICBzb3VyY2VQcm9wZXJ0
eU5hbWVzLmFkZChsb3dlcmNhc2VQcm9wZXJ0eU5hbWUoaXQtPm5hbWUpKTsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIGZvciAoaW50IGkgPSAwLCBzaXplID0gbV9zdHlsZS0+bGVuZ3RoKCk7IGkg
PCBzaXplOyArK2kpIHsKICAgICAgICAgU3RyaW5nIG5hbWUgPSBtX3N0eWxlLT5pdGVtKGkpOwot
ICAgICAgICBpZiAoc291cmNlUHJvcGVydHlOYW1lcy5jb250YWlucyhuYW1lLmxvd2VyKCkpKQor
ICAgICAgICBTdHJpbmcgbG93ZXJOYW1lID0gbG93ZXJjYXNlUHJvcGVydHlOYW1lKG5hbWUpOwor
ICAgICAgICBpZiAoc291cmNlUHJvcGVydHlOYW1lcy5jb250YWlucyhsb3dlck5hbWUpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgc291cmNlUHJvcGVydHlOYW1lcy5hZGQobmFt
ZS5sb3dlcigpKTsKKyAgICAgICAgc291cmNlUHJvcGVydHlOYW1lcy5hZGQobG93ZXJOYW1lKTsK
ICAgICAgICAgcmVzdWx0LT5hcHBlbmQoSW5zcGVjdG9yU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVNvdXJjZURhdGEobmFtZSwgbV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShuYW1lKSwgIW1fc3R5
bGUtPmdldFByb3BlcnR5UHJpb3JpdHkobmFtZSkuaXNFbXB0eSgpLCB0cnVlLCBTb3VyY2VSYW5n
ZSgpKSwgZmFsc2UsIGZhbHNlKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTkwMTg5KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxMyw2ICs1MTMsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgUHNldWRvU3R5bGVDYWNoZSog
Y2FjaGVkUHNldWRvU3R5bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQc2V1ZG9TdHlsZXMu
Z2V0KCk7IH0KIAorICAgIHZvaWQgc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgcmFyZUluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS0+c2V0Q3VzdG9tUHJvcGVydHlWYWx1
ZShuYW1lLCB2YWx1ZSk7IH0KKyAgICBTdHJpbmcgZ2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5t
X2N1c3RvbVByb3BlcnRpZXMtPmdldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSk7IH0KKyAgICBi
b29sIGhhc0N1c3RvbVByb3BlcnR5KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QgeyBy
ZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1fY3VzdG9tUHJvcGVydGllcy0+aGFzQ3VzdG9tUHJv
cGVydHkobmFtZSk7IH0KKyAgICBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiog
Y3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICYocmFyZUluaGVyaXRlZERhdGEtPm1f
Y3VzdG9tUHJvcGVydGllcy0+bV92YWx1ZXMpOyB9CisKICAgICB2b2lkIHNldEhhc1ZpZXdwb3J0
VW5pdHMoYm9vbCBoYXNWaWV3cG9ydFVuaXRzID0gdHJ1ZSkgeyBub25pbmhlcml0ZWRfZmxhZ3Mu
c2V0SGFzVmlld3BvcnRVbml0cyhoYXNWaWV3cG9ydFVuaXRzKTsgfQogICAgIGJvb2wgaGFzVmll
d3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNWaWV3cG9y
dFVuaXRzKCk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q3VzdG9tUHJvcGVydHlEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YV9oCisjZGVmaW5lIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhX2gKKworI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSA6IHB1
YmxpYyBSZWZDb3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSk7IH0KKyAgICBSZWY8U3R5bGVDdXN0
b21Qcm9wZXJ0eURhdGE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
Q3VzdG9tUHJvcGVydHlEYXRhKCp0aGlzKSk7IH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG8pIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVz
ID09IG8ubV92YWx1ZXM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVDdXN0b21Q
cm9wZXJ0eURhdGEgJm8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KKyAgICAKKyAg
ICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlKSB7IG1fdmFsdWVzLnNldChuYW1lLCB2YWx1ZSk7IH0KKyAgICBT
dHJpbmcgZ2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWVzLmdldChuYW1lKTsgfQorICAgIGJvb2wgaGFzQ3VzdG9tUHJv
cGVydHkoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlcy5j
b250YWlucyhuYW1lKTsgfQorCisgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4gbV92
YWx1ZXM7CisgICAgCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFN0eWxlQ3VzdG9tUHJvcGVydHlE
YXRhKCk6IFJlZkNvdW50ZWQ8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+KCkgeyB9CisgICAgU3R5
bGVDdXN0b21Qcm9wZXJ0eURhdGEoY29uc3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG90aGVy
KSA6IFJlZkNvdW50ZWQ8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+KCksIG1fdmFsdWVzKEhhc2hN
YXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+KG90aGVyLm1fdmFsdWVzKSkgeyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YV9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCShyZXZpc2lvbiAxOTAxODkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDEwICsyMywxMiBAQAogI2luY2x1ZGUgIlN0eWxlUmFyZUluaGVyaXRlZERh
dGEuaCIKIAogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKKyNpbmNsdWRlICJEYXRhUmVmLmgiCiAj
aW5jbHVkZSAiUXVvdGVzRGF0YS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCisjaW5j
bHVkZSAiU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDYgKzYyLDggQEAgc3RydWN0IEdyZWF0ZXJU
aGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJlSQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAg
Q29sb3IgdGFwSGlnaGxpZ2h0Q29sb3I7CiAjZW5kaWYKKworICAgIHZvaWQqIGN1c3RvbVByb3Bl
cnR5RGF0YVJlZnNbMV07CiB9OwogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YSkgPD0gc2l6ZW9mKEdyZWF0ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YSksIFN0eWxlUmFyZUluaGVyaXRlZERhdGFfc2hvdWxkX2JpdF9wYWNrKTsKQEAg
LTY5LDYgKzczLDcgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdAog
ICAgICwgdGV4dFN0cm9rZVdpZHRoKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFN0cm9rZVdpZHRo
KCkpCiAgICAgLCBpbmRlbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5kZW50KCkpCiAgICAg
LCBtX2VmZmVjdGl2ZVpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCisgICAgLCBtX2N1
c3RvbVByb3BlcnRpZXMoU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OmNyZWF0ZSgpKQogICAgICwg
d2lkb3dzKFJlbmRlclN0eWxlOjppbml0aWFsV2lkb3dzKCkpCiAgICAgLCBvcnBoYW5zKFJlbmRl
clN0eWxlOjppbml0aWFsT3JwaGFucygpKQogICAgICwgbV9oYXNBdXRvV2lkb3dzKHRydWUpCkBA
IC0xNTAsNiArMTU1LDcgQEAgaW5saW5lIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFy
ZQogICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAgLCBpbmRlbnQoby5pbmRlbnQp
CiAgICAgLCBtX2VmZmVjdGl2ZVpvb20oby5tX2VmZmVjdGl2ZVpvb20pCisgICAgLCBtX2N1c3Rv
bVByb3BlcnRpZXMoby5tX2N1c3RvbVByb3BlcnRpZXMpCiAgICAgLCB3aWRvd3Moby53aWRvd3Mp
CiAgICAgLCBvcnBoYW5zKG8ub3JwaGFucykKICAgICAsIG1faGFzQXV0b1dpZG93cyhvLm1faGFz
QXV0b1dpZG93cykKQEAgLTMyNCw2ICszMzAsNyBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERh
dGE6Om9wZXJhdG9yPT0oCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogICAgICAgICAm
JiB0cmFpbGluZ1dvcmQgPT0gby50cmFpbGluZ1dvcmQKICNlbmRpZgorICAgICAgICAmJiBtX2N1
c3RvbVByb3BlcnRpZXMgPT0gby5tX2N1c3RvbVByb3BlcnRpZXMKICAgICAgICAgJiYgU3R5bGVJ
bWFnZTo6aW1hZ2VzRXF1aXZhbGVudChsaXN0U3R5bGVJbWFnZS5nZXQoKSwgby5saXN0U3R5bGVJ
bWFnZS5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAkocmV2aXNpb24gMTkwMTg5KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsOSBAQAogI2RlZmluZSBTdHlsZVJhcmVJbmhl
cml0ZWREYXRhX2gKIAogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRGF0YVJlZi5oIgog
I2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgi
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtNzcsNiArNzksOCBAQCBw
dWJsaWM6CiAgICAgCiAgICAgTGVuZ3RoIHdvcmRTcGFjaW5nOwogCisgICAgRGF0YVJlZjxTdHls
ZUN1c3RvbVByb3BlcnR5RGF0YT4gbV9jdXN0b21Qcm9wZXJ0aWVzOworCiAgICAgLy8gUGFnZWQg
bWVkaWEgcHJvcGVydGllcy4KICAgICBzaG9ydCB3aWRvd3M7CiAgICAgc2hvcnQgb3JwaGFuczsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0
eWxlLWFjY2Vzcy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1leHBlY3RlZC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMv
Y29tcHV0ZWQtc3R5bGUtYWNjZXNzLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKzpyb290IHsgLS1vbmU6IDEwcHg7
IC0tdHdvOiAyMHB4OyB9Cis8L3N0eWxlPgorPGJvZHk+Cis8c2NyaXB0PgorZG9jdW1lbnQud3Jp
dGUoZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgiLS1vbmUiKSArICIgIiArIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBd
LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoIi0tdHdvIikpCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1
dGVkLXN0eWxlLWFjY2Vzcy1pbmhlcml0ZWQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHlsZS1hY2Nl
c3MtaW5oZXJpdGVkLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHlsZS1hY2Nlc3MtaW5oZXJpdGVk
LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzdHlsZT4KKzpyb290IHsgLS1vbmU6IDEwcHg7IC0tdHdvOiAyMHB4OyB9Cis8L3N0
eWxlPgorPGJvZHk+Cis8c2NyaXB0PgorZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuc3R5bGVTaGVl
dHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS1vbmUiKSArICIgIiAr
IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5VmFs
dWUoIi0tdHdvIikpCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbC4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1pbmhl
cml0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJv
cGVydGllcy9jb21wdXRlZC1zdHlsZS1hY2Nlc3MtaW5oZXJpdGVkLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHls
ZS1hY2Nlc3MtaW5oZXJpdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKzpyb290IHsgLS1vbmU6IDEwcHg7IC0tYW5vdGhlcjog
MjBweDsgfQorPC9zdHlsZT4KKzxib2R5PgorPHNjcmlwdD4KK2RvY3VtZW50LndyaXRlKGdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgiLS1vbmUiKSArICIg
IiArIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgiLS1h
bm90aGVyIikpCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbC4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1
dGVkLXN0eWxlLWFjY2Vzcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
c3MvY3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKzpyb290IHsg
LS1vbmU6IDEwcHg7IC0tYW5vdGhlcjogMjBweDsgfQorPC9zdHlsZT4KKzxib2R5PgorPHNjcmlw
dD4KK2RvY3VtZW50LndyaXRlKGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCItLW9uZSIpICsgIiAiICsgZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoIi0tYW5vdGhlciIpKQor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
dXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LWdldC1jc3MtdmFsdWUtZXhwZWN0ZWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9y
dWxlLXByb3BlcnR5LWdldC1jc3MtdmFsdWUtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktZ2V0
LWNzcy12YWx1ZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAor
PGh0bWw+Cis8Ym9keT4KKzEwcHggMjBweAorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtY3NzLXZh
bHVlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3Bl
cnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtY3NzLXZhbHVlLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LWdldC1j
c3MtdmFsdWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlPgorOnJvb3QgeyAtLW9uZTogMTBweDsgLS10d286IDIwcHg7IH0KKzwvc3R5
bGU+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC53cml0ZShkb2N1bWVudC5zdHlsZVNoZWV0
c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCItLW9uZSIpLmNzc1Rl
eHQgKyAiICIgKyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKCItLXR3byIpLmNzc1RleHQpCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUt
cHJvcGVydHktZ2V0LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtZXhwZWN0ZWQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1
bGUtcHJvcGVydHktZ2V0LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
IEBACis8aHRtbD4KKzxib2R5PgorMTBweCAyMHB4Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LWdldC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVz
L3J1bGUtcHJvcGVydHktZ2V0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LWdldC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cis6cm9vdCB7IC0t
b25lOiAxMHB4OyAtLXR3bzogMjBweDsgfQorPC9zdHlsZT4KKzxib2R5PgorPHNjcmlwdD4KK2Rv
Y3VtZW50LndyaXRlKGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoIi0tb25lIikgKyAiICIgKyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5j
c3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCItLXR3byIpKQorPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVy
dGllcy9ydWxlLXByb3BlcnR5LXByaW9yaXR5LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1wcmlv
cml0eS1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1wcmlvcml0eS1leHBlY3RlZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4KKzEwcHggaW1wb3J0
YW50Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20t
cHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXByaW9yaXR5Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1wcmlvcml0
eS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3Bl
cnRpZXMvcnVsZS1wcm9wZXJ0eS1wcmlvcml0eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cis6cm9vdCB7IC0tb25lOiAxMHB4ICFp
bXBvcnRhbnQ7IC0tb25lOjUwcHg7IH0KKzwvc3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1
bWVudC53cml0ZShkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKCItLW9uZSIpICsgIiAiICsgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3Nz
UnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlQcmlvcml0eSgiLS1vbmUiKSkKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3Bl
cnRpZXMvcnVsZS1wcm9wZXJ0eS1zZXQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXNldC1leHBl
Y3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXBy
b3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1zZXQtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHk+Cis1MHB4IDMwcHgKKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJv
cGVydHktc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9t
LXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1zZXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktc2V0Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4K
Kzpyb290IHsgLS1vbmU6IDEwcHg7IC0tdHdvOiAyMHB4OyB9Cis8L3N0eWxlPgorPGJvZHk+Cis8
c2NyaXB0PgorZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuc2V0UHJv
cGVydHkoIi0tb25lIiwgIjVweCIpCitkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1sw
XS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS10d28iKQorZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0u
Y3NzUnVsZXNbMF0uc3R5bGUuc2V0UHJvcGVydHkoIi0tdHdvIiwgIjMwcHgiKQorZG9jdW1lbnQu
c3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuc2V0UHJvcGVydHkoIi0tb25lIiwgIjUw
cHgiKQorZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0u
c3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS1vbmUiKSArICIgIiArIGRvY3VtZW50LnN0eWxlU2hl
ZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoIi0tdHdvIikpCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3Rv
bS1wcm9wZXJ0aWVzL3J1bGUtc2VyaWFsaXphdGlvbi1leHBlY3RlZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtc2VyaWFsaXph
dGlvbi1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3VzdG9tLXByb3BlcnRpZXMvcnVsZS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorOnJvb3QgeyAtLW9uZTog
MTBweDsgLS10d286IDIwcHg7IH0KKzwvYm9keT4KKzwvaHRtbC4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtc2VyaWFsaXphdGlvbi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtc2Vy
aWFsaXphdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vz
dG9tLXByb3BlcnRpZXMvcnVsZS1zZXJpYWxpemF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKzpyb290IHsgLS1vbmU6IDEw
cHg7IC0tdHdvOiAyMHB4OyB9Cis8L3N0eWxlPgorPGJvZHk+Cis8c2NyaXB0PgorZG9jdW1lbnQu
d3JpdGUoZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uY3NzVGV4dCkKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261870</attachid>
            <date>2015-09-24 09:52:01 -0700</date>
            <delta_ts>2015-09-24 09:57:51 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>74186</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MyBAQAorMjAxNS0wOS0yNCAgRGF2aWQg
SHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIENTUyBD
dXN0b20gUHJvcGVydGllcyAoaW4gcHJlcGFyYXRpb24gZm9yIGltcGxlbWVudGluZyBDU1MgVmFy
aWFibGVzKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMDM5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5ldyB0ZXN0cyBpbiBmYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy4KKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBo
ZWFkZXIgZmlsZXMgdG8gdGhlIHByb2plY3QgKENTU0N1c3RvbVByb3BlcnR5VmFsdWUgYW5kIFN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhKS4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6Y3VzdG9tUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgSWYgYSBjdXN0b20gcHJvcGVydHkg
dmFsdWUgaXMgcXVlcmllZCAoaS5lLiwgaXQgc3RhcnRzIHdpdGggIi0tIiksIHRoZW4gd2UgdXNl
IG91cgorICAgICAgICBjdXN0b21Qcm9wZXJ0eVZhbHVlIGxvb2t1cCB0byBnbyB0byB0aGUgUmVu
ZGVyU3R5bGUgYW5kIGZldGNoIHRoZSBhcHByb3ByaWF0ZSBjdXN0b20gcHJvcGVydHkKKyAgICAg
ICAgdmFsdWUgZnJvbSB0aGUgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuCisKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6bGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6aXRlbSk6CisgICAgICAgIFBhdGNo
ZWQgdG8gaW5jbHVkZSBjdXN0b20gcHJvcGVydGllcyBpbiB0aGUgcmV0dXJuZWQgYXJyYXkuIFRo
ZXkgYXBwZWFyIGF0IHRoZSBlbmQgb2YgdGhlIGFycmF5CisgICAgICAgIGFmdGVyIHRoZSBidWls
dC1pbiBwcm9wZXJ0aWVzLgorCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpwcm9wZXJ0eU1hdGNoZXMpOgorICAgICAgICBQYXRjaGVkIHRvIGNoZWNrIGN1c3RvbSBw
cm9wZXJ0aWVzLgorCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpj
b3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAgTWFrZSBzdXJlIHRoZSBjdXN0b20gcHJvcGVy
dGllcyBnZXQgY29waWVkIGludG8gdGhlIFN0eWxlRGVjbGFyYXRpb24uCisKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5VmFsdWUpOgorICAgICAgICBQYXRjaGVkIHRvIGNhbGwgY3VzdG9tUHJvcGVydHlWYWx1ZSBm
b3IgY3VzdG9tIHByb3BlcnRpZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmg6CisgICAgICAgIEFkZCBjdXN0b21Qcm9wZXJ0eVZhbHVlKCkgdG8gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvci4KKworICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmVxdWFscyk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjdXN0b21DU1NUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6Om5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6dmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSk6
CisgICAgICAgIEN1c3RvbSBwcm9wZXJ0aWVzIGFyZSBwYXJzZWQgYXMgYSBwcm9wZXJ0eSB3aXRo
IGFuIElEIG9mIENTU1Byb3BlcnR5Q3VzdG9tIGFuZCBhIENTU0N1c3RvbVByb3BlcnR5VmFsdWUK
KyAgICAgICAgdGhhdCBob2xkcyBib3RoIHRoZSBuYW1lIGFuZCB0aGUgdmFsdWUgb2YgdGhlIHBy
b3BlcnR5LiBVbHRpbWF0ZWx5IHdlIG1pZ2h0IHdhbnQgdG8ganVzdCBkaXRjaCBwcm9wZXJ0eSBJ
RHMgaW4KKyAgICAgICAgZmF2b3Igb2YgQXRvbWljU3RyaW5ncyBmb3IgYWxsIHByb3BlcnRpZXMs
IGFuZCB0aGVuIHRoZSBuZWVkIHRvIHNwZWNpYWwgY2FzZSBjdXN0b20gcHJvcGVydGllcyB3b3Vs
ZCBnbworICAgICAgICBhd2F5LiBGb3Igbm93LCB0aG91Z2gsIHRoaXMgaXMgdGhlIHdheSB3ZSB3
b3JrIGN1c3RvbSBwcm9wZXJ0aWVzIGludG8gdGhlIGV4aXN0aW5nIHN5c3RlbS4KKworICAgICAg
ICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46CisgICAgICAgIEFkZCBhIHByb2R1Y3Rpb24gZm9yIHJl
Y29nbml6aW5nIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCBzdG9yaW5nIHRoZW0gdXNpbmcgYSBwcm9w
ZXJ0eSBJRCBvZiBDU1NQcm9wZXJ0eUN1c3RvbQorICAgICAgICBhbmQgYSBDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlIHRoYXQgaGFzIHRoZSBuYW1lL3ZhbHVlIHBhaXIuCisKKyAgICAgICAgKiBjc3Mv
Q1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbHRlclByb3BlcnRpZXMpOgorICAg
ICAgICBQYXRjaGVkIHRvIHRyYWNrIHNlZW4gY3VzdG9tIHByb3BlcnRpZXMgYW5kIHRvIGhhbmRs
ZSB0aGVtIGNvcnJlY3RseS4KKworICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVT
dHlsZVByb3BlcnRpZXMpOgorICAgICAgICBQYXNzIGluIGEgc2VlbkN1c3RvbVByb3BlcnRpZXMg
dGFibGUgdG8gZW5zdXJlIHdlIGJhaWwgd2hlbiBlbmNvdW50ZXJpbmcgdGhlIHNhbWUgY3VzdG9t
IHByb3BlcnR5IHR3aWNlLgorCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZEN1c3Rv
bVByb3BlcnR5RGVjbGFyYXRpb24pOgorICAgICAgICBDYWxsZWQgZnJvbSB0aGUgZ3JhbW1hciBw
cm9kdWN0aW9uIHRvIGNyZWF0ZSB0aGUgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS4KKworICAgICAg
ICAoV2ViQ29yZTo6aXNDdXN0b21Qcm9wZXJ0eUlkZW50aWZpZXIpOgorICAgICAgICBSZWNvZ25p
emUgdGhlIC0tIGN1c3RvbSBwcm9wZXJ0eSBkdXJpbmcgbGV4aW5nLgorCisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIFBhdGNoZWQgdG8gcmV0
dXJuIGEgQ1VTVE9NX1BST1BFUlRZIHRva2VuIHdoZW4gYSBjdXN0b20gcHJvcGVydHkgaXMgaWRl
bnRpZmllZC4KKworICAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3Jl
Ojppc0N1c3RvbVByb3BlcnR5TmFtZSk6CisgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiBm
b3IgYXNraW5nIGlmIGEgcHJvcGVydHkgbmFtZSBpcyBjdXN0b20uCisKKyAgICAgICAgKiBjc3Mv
Q1NTVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmVxdWFscyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YWx1ZTo6ZGVzdHJveSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAgIFBhdGNo
ZWQgdG8gYWRkIHN1cHBvcnQgZm9yIENTU0N1c3RvbVByb3BlcnR5VmFsdWUuCisKKyAgICAgICAg
KiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFBy
b3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAg
IEFkZCBjb2RlIGZvciBoYW5kbGluZyBjdXN0b20gcHJvcGVydGllcyBpbiB0aGUgQ1NTIE9NLgor
CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVByb3BlcnRpZXM6OmdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0aWVzOjpnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUHJvcGVydGllczo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVByb3BlcnRpZXM6OmdldEN1c3RvbVByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6cmVtb3ZlQ3VzdG9tUHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzOjpwcm9wZXJ0eUlzSW1wb3J0YW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6Y3VzdG9tUHJvcGVydHlJc0lt
cG9ydGFudCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRD
dXN0b21Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
OjphZGRQYXJzZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpmaW5kUHJvcGVydHlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbW11dGFibGVT
dHlsZVByb3BlcnRpZXM6OmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmZpbmRDU1NQcm9wZXJ0eVdp
dGhJRCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpmaW5kQ3Vz
dG9tQ1NTUHJvcGVydHlXaXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRp
ZXM6OnByb3BlcnR5TWF0Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXM6
OlByb3BlcnR5UmVmZXJlbmNlOjpjc3NOYW1lKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0
aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXM6OmZpbmRDdXN0b21Qcm9w
ZXJ0eUluZGV4KToKKyAgICAgICAgUGF0Y2hlZCB0byBzdXBwb3J0IGhhbmRsaW5nIGN1c3RvbSBw
cm9wZXJ0aWVzIGluIHRoZSBDU1MgT00uIFdlIGhhdmUgdG8gY3JlYXRlIGVxdWl2YWxlbnQgbWV0
aG9kcyB0aGF0IG9wZXJhdGUKKyAgICAgICAgb24gQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZXMg
aW5zdGVhZCBvZiBvbiBwcm9wZXJ0eSBJRHMuCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRp
ZXM6OmN1c3RvbVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
c3R5bGVGb3JLZXlmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHls
ZUZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVk
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGll
czo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQ
cm9wZXJ0aWVzKToKKyAgICAgICAgVGhlIHJlc29sdmVyIGhhcyB0byBob2xkIGEgSGFzaE1hcCBm
cm9tIEF0b21pY1N0cmluZ3MgdG8gUHJvcGVydGllcy4gSXQgbWF0Y2hlcyBpZGVudGljYWxseSB0
byBob3cgYnVpbHQtaW4KKyAgICAgICAgcHJvcGVydGllcyB3b3JrIGV4Y2VwdCB0aGF0IGFuIGV4
dGVuc2libGUgdGFibGUgKEhhc2hNYXApIGlzIHVzZWQgdG8gaG9sZCB0aGUgcHJvcGVydHkgZGF0
YS4KKworICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAgICAgICAgUGF0Y2hlZCB0byBpbmNs
dWRlIHRoZSBzcGVjaWFsIENTU1Byb3BlcnR5Q3VzdG9tIHZhbHVlIG9mIDEgKGp1c3QgYWZ0ZXIg
dGhlIENTU1Byb3BlcnR5SW52YWxpZCBpZCB2YWx1ZSBidXQgYmVmb3JlIHRoZSBmaXJzdAorICAg
ICAgICBidWlsdC1pbiBwcm9wZXJ0eSB2YWx1ZSkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6
Z2V0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpsb3dlcmNhc2VQcm9wZXJ0eU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnBvcHVsYXRlQWxsUHJvcGVydGllcyk6Cisg
ICAgICAgIFBhdGNoIGluc3BlY3RvciB0byBub3QgbG93ZXJjYXNlIENTUyBjdXN0b20gcHJvcGVy
dHkgbmFtZXMsIHNpbmNlIHRoZXkgYXJlIGNhc2Utc2Vuc2l0aXZlLgorCisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YTo6c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUN1c3RvbVByb3BlcnR5RGF0YTo6Z2V0Q3VzdG9tUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6aGFzQ3VzdG9tUHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OlN0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJh
cmVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVyaXRlZERh
dGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhl
cml0ZWREYXRhLmg6CisgICAgICAgIFRoZSBmcm9udCBlbmQgc3RvcmFnZSBpbiB0aGUgUmVuZGVy
U3R5bGUgZm9yIGN1c3RvbSBwcm9wZXJ0aWVzLiBGb3Igbm93LCBjdXN0b20gcHJvcGVydGllcyBh
cmUgYWx3YXlzIGluaGVyaXRlZCwgc28gdGhlCisgICAgICAgIGRhdGEgaXMgaW4gU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS4KKwogMjAxNS0wOS0yNCAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rLm9o
QGNvbGxhYm9yYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHR5cG8gZXJyb3JzIGlu
IGEgY29tbWVudCAoInBhc3NlZCIgLT4gIlBhc3NlZCIsICJPdmVyd2lzZSIgLT4gIk90aGVyd2lz
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU0MzUsNiArNTQzNSw4
IEBACiAJCUJDNzcyQzVFMEM0RUIzNDQwMDgzMjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5TWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzJDNUQw
QzRFQjM0NDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnlNYWMubW0gKi87IH07CiAJCUJDNzcy
RTEzMTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc3MkUxMjEzMzE2MjBDMDAx
RUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNzcyRTE2MTMzMTYyQzIwMDFFQzlDRSAvKiBD
U1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNzcyRTE1MTMzMTYyQzIwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29u
dGFpblZhbHVlLmNwcCAqLzsgfTsKKwkJQkM3NzlFMTQxQkIyMTVCQjAwQ0FBOEJGIC8qIENTU0N1
c3RvbVByb3BlcnR5VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNzc5RTEzMUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QkM3NzlFMTcxQkIyMjdDQTAwQ0FBOEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc3OUUxNTFCQjIy
NkEyMDBDQUE4QkYgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQw
ODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM3RjQ0QTcwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzdGQTYy
MDBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjFFMEQxRjBDQkQwMERCMjJBOSAvKiBM
aXZlTm9kZUxpc3QuY3BwICovOyB9OwogCQlCQzdGQTYyMTBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2
ZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzdGQTYxRjBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmggKi87IH07CkBAIC0x
MzA3MCw2ICsxMzA3Miw4IEBACiAJCUJDNzcyQzVEMEM0RUIzNDQwMDgzMjg1RiAvKiBNSU1FVHlw
ZVJlZ2lzdHJ5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE1JTUVUeXBlUmVnaXN0cnlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
NzcyRTEyMTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0xpbmVCb3hDb250YWluVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3NzJFMTUxMzMxNjJDMjAwMUVDOUNFIC8qIENT
U0xpbmVCb3hDb250YWluVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDNzc5RTEzMUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0N1c3RvbVByb3BlcnR5VmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3NzlFMTUxQkIyMjZBMjAwQ0FB
OEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDN0IyQUY4MDQ1MDgyNDEwMEE4MDAwRiAvKiBTY3JvbGxiYXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsYmFyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owog
CQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzdGQTYxRTBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpdmVOb2RlTGlzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTc5MSw2ICsyMTc5NSw3IEBACiAJCQkJ
OTM5M0U2MDIxNTFBOUExODAwMDY2RjA2IC8qIFN0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwICovLAog
CQkJCTkzOTNFNjAzMTUxQTlBMTgwMDA2NkYwNiAvKiBTdHlsZUNhY2hlZEltYWdlU2V0LmggKi8s
CiAJCQkJOURBQzdDNTYxQUYyQ0I2NDAwNDM3QzQ0IC8qIFN0eWxlQ29udGVudEFsaWdubWVudERh
dGEuaCAqLywKKwkJCQlCQzc3OUUxNTFCQjIyNkEyMDBDQUE4QkYgLyogU3R5bGVDdXN0b21Qcm9w
ZXJ0eURhdGEuaCAqLywKIAkJCQlCQzVFQjY3RTBFODFENEE3MDBCMjU5NjUgLyogU3R5bGVEYXNo
Ym9hcmRSZWdpb24uaCAqLywKIAkJCQlCQzVFQjhCNjBFODIwMUJEMDBCMjU5NjUgLyogU3R5bGVE
ZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcCAqLywKIAkJCQlCQzVFQjhCNzBFODIwMUJEMDBC
MjU5NjUgLyogU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmggKi8sCkBAIC0yMjc0OSw2
ICsyMjc1NCw3IEBACiAJCQkJMkQ4RkVCREIxNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFk
ZVZhbHVlLmggKi8sCiAJCQkJQUEwOTc4RUQwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvcklt
YWdlVmFsdWUuY3BwICovLAogCQkJCUFBMDk3OEVFMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1NDdXJz
b3JJbWFnZVZhbHVlLmggKi8sCisJCQkJQkM3NzlFMTMxQkIyMTVCQjAwQ0FBOEJGIC8qIENTU0N1
c3RvbVByb3BlcnR5VmFsdWUuaCAqLywKIAkJCQk0QTlDQzgxNTE2QkI5QUM2MDBFQzY0NUEgLyog
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcCAqLywKIAkJCQk0QTlDQzgxNjE2QkI5QUM2MDBFQzY0
NUEgLyogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmggKi8sCiAJCQkJRkI5NjVCODIxN0JCQjYyQzAw
RTgzNUI5IC8qIENTU0ZpbHRlckltYWdlVmFsdWUuY3BwICovLApAQCAtMjUxMDQsNiArMjUxMTAs
NyBAQAogCQkJCUE4Q0ZGMDRGMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzA3M0JBQTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252
ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QTUyOEU4NDE3RDdGNTJGMDBBQTk1MTggLyog
RmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzc3OUUxNzFCQjIyN0NBMDBD
QUE4QkYgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
Njk5ODcyMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyNzUzNTY5MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMkUyN0NBMDBCMEYyQjA5MDBGMTdDN0IgLyogRmxvYXRQb2lu
dDNELmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDk5LDYgKzI2MTA2LDcgQEAKIAkJCQkxNDFEQzA1
MzE2NDgzNEI5MDAzNzFFNUEgLyogTGF5b3V0UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEy
NTM4RDQxM0Y5QjYwQTAwMDI0NzU0IC8qIExheW91dFJlcGFpbnRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQxREMwNTQxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFNpemUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUJDNzc5RTE0MUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogTGF5
b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MURDMDQ4MTY0ODM0OEYwMDM3MUU1QSAv
KiBMYXlvdXRVbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAzQzJCOTFCQTIzQTI2MDBFMjYz
MzcgLyogTGVnYWN5QW55LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxOTAy
MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU0FzcGVjdFJh
dGlvVmFsdWUuaCIKICNpbmNsdWRlICJDU1NCYXNpY1NoYXBlcy5oIgogI2luY2x1ZGUgIkNTU0Jv
cmRlckltYWdlLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250VmFsdWUuaCIKICNp
bmNsdWRlICJDU1NGdW5jdGlvblZhbHVlLmgiCkBAIC0yMDk1LDYgKzIwOTYsMjAgQEAgaW5saW5l
IHN0YXRpYyBib29sIGlzRmxleE9yR3JpZChDb250YWluZQogICAgIHJldHVybiBlbGVtZW50ICYm
IGVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKSAmJiBlbGVtZW50LT5jb21wdXRlZFN0eWxlKCktPmlz
RGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KCk7CiB9CiAKK1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSkgY29uc3QKK3sKKyAgICBOb2RlKiBzdHlsZWROb2RlID0gdGhpcy0+c3R5bGVkTm9k
ZSgpOworICAgIGlmICghc3R5bGVkTm9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gY29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVy
dHkoc3R5bGVkTm9kZSwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyLCBDU1NQcm9wZXJ0eUN1c3Rv
bSk7CisgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmhhc0N1c3RvbVByb3BlcnR5KHByb3BlcnR5
TmFtZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5nIHJlc3VsdCA9IHN0
eWxlLT5nZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIENT
U0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZShwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7Cit9CisK
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBjb25z
dAogewogICAgIE5vZGUqIHN0eWxlZE5vZGUgPSB0aGlzLT5zdHlsZWROb2RlKCk7CkBAIC0zNTUz
LDYgKzM1NjgsOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXcml0aW5nTW9kZToKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFN2Z1NoYWRvdzoKICAgICAgICAgICAgIHJldHVybiBzdmdQcm9wZXJ0eVZhbHVl
KHByb3BlcnR5SUQsIERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUN1c3RvbToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgbG9nVW5pbXBsZW1lbnRlZFByb3BlcnR5SUQo
cHJvcGVydHlJRCk7CkBAIC0zNTc3LDE1ICszNTk1LDM1IEBAIHVuc2lnbmVkIENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6bGUKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHJldHVybiBudW1Db21wdXRlZFByb3BlcnRpZXM7CisgICAgY29uc3QgSGFzaE1hcDxB
dG9taWNTdHJpbmcsIFN0cmluZz4qIGN1c3RvbVByb3BlcnRpZXMgPSBzdHlsZS0+Y3VzdG9tUHJv
cGVydGllcygpOworICAgIHJldHVybiBudW1Db21wdXRlZFByb3BlcnRpZXMgKyAoY3VzdG9tUHJv
cGVydGllcyA/IGN1c3RvbVByb3BlcnRpZXMtPnNpemUoKSA6IDApOwogfQogCiBTdHJpbmcgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtKHVuc2lnbmVkIGkpIGNvbnN0CiB7CiAgICAg
aWYgKGkgPj0gbGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIAor
ICAgIGlmIChpIDwgbnVtQ29tcHV0ZWRQcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm4gZ2V0UHJv
cGVydHlOYW1lU3RyaW5nKGNvbXB1dGVkUHJvcGVydGllc1tpXSk7CisgICAgCisgICAgTm9kZSog
bm9kZSA9IG1fbm9kZS5nZXQoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCi0gICAgcmV0dXJuIGdldFByb3BlcnR5TmFtZVN0cmluZyhjb21wdXRlZFBy
b3BlcnRpZXNbaV0pOworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG5vZGUtPmNvbXB1dGVkU3R5
bGUobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKKyAgICBpZiAoIXN0eWxlKQorICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBpbmRleCA9IGkgLSBudW1D
b21wdXRlZFByb3BlcnRpZXM7CisgICAgCisgICAgY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcs
IFN0cmluZz4qIGN1c3RvbVByb3BlcnRpZXMgPSBzdHlsZS0+Y3VzdG9tUHJvcGVydGllcygpOwor
ICAgIGlmICghY3VzdG9tUHJvcGVydGllcyB8fCBpbmRleCA+PSBjdXN0b21Qcm9wZXJ0aWVzLT5z
aXplKCkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIAorICAgIFZlY3RvcjxT
dHJpbmcsIDQ+IHJlc3VsdHM7CisgICAgY29weUtleXNUb1ZlY3RvcigqY3VzdG9tUHJvcGVydGll
cywgcmVzdWx0cyk7CisgICAgcmV0dXJuIHJlc3VsdHMuYXQoaW5kZXgpOwogfQogCiBib29sIENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5TWF0Y2hlcyhDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQsIGNvbnN0IENTU1ZhbHVlKiB2YWx1ZSkgY29uc3QKQEAgLTM2NjYsNiArMzcwNCwyMiBA
QCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsCiAgICAgICAgIGlmICh2
YWx1ZSkKICAgICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUu
cmVsZWFzZSgpLCBmYWxzZSkpOwogICAgIH0KKyAgICAKKyAgICBOb2RlKiBzdHlsZWROb2RlID0g
dGhpcy0+c3R5bGVkTm9kZSgpOworICAgIGlmIChzdHlsZWROb2RlKSB7CisgICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eShzdHls
ZWROb2RlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIsIENTU1Byb3BlcnR5Q3VzdG9tKTsKKyAg
ICAgICAgaWYgKHN0eWxlKSB7CisgICAgICAgICAgICBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgU3RyaW5nPiogY3VzdG9tUHJvcGVydGllcyA9IHN0eWxlLT5jdXN0b21Qcm9wZXJ0aWVzKCk7
CisgICAgICAgICAgICBpZiAoY3VzdG9tUHJvcGVydGllcykgeworICAgICAgICAgICAgICAgIEhh
c2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjdXN0b21Q
cm9wZXJ0aWVzLT5lbmQoKTsKKyAgICAgICAgICAgICAgICBmb3IgKEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGN1c3RvbVByb3BlcnRpZXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZT4gdmFsdWUgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUo
aXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlDdXN0b20sIHZhbHVlLnJlbGVhc2UoKSwgZmFsc2UpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCiAg
ICAgcmV0dXJuIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlz
dC5zaXplKCkpOwogfQogCkBAIC0zNjc2LDYgKzM3MzAsMTEgQEAgQ1NTUnVsZSogQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpwYQogCiBSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSkKIHsKKyAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgewor
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvciht
X25vZGUsIG1fYWxsb3dWaXNpdGVkU3R5bGUsIG1fcHNldWRvRWxlbWVudFNwZWNpZmllcikuY3Vz
dG9tUHJvcGVydHlWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gdmFsdWUgPyB2
YWx1ZS0+Y2xvbmVGb3JDU1NPTSgpIDogbnVsbHB0cjsKKyAgICB9CisKICAgICBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFw
cm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM2ODUsNiArMzc0NCwxMyBA
QCBSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhCiAKIFN0cmluZyBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nICZw
cm9wZXJ0eU5hbWUpCiB7CisgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3BlcnR5TmFt
ZSkpIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3IobV9ub2RlLCBtX2FsbG93VmlzaXRlZFN0eWxlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZp
ZXIpLmN1c3RvbVByb3BlcnR5VmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICAgICAgaWYgKCF2YWx1
ZSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlLT5j
c3NUZXh0KCk7CisgICAgfQorCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJv
cGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2
ICs1MCw3IEBAIHB1YmxpYzoKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKFBhc3NSZWZQdHI8
Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBOT1BTRVVE
Tyk7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwg
RVVwZGF0ZUxheW91dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7CisgICAgUmVmUHRyPENTU1ZhbHVl
PiBjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBjb25zdDsK
IAogICAgIC8vIEhlbHBlciBtZXRob2RzIGZvciBIVE1MIGVkaXRpbmcuCiAgICAgUmVmPE11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJ
RCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlX2gKKyNkZWZpbmUgQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZV9oCisKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgdmFsdWUpKTsK
KyAgICB9CisgICAgCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZSA9PSBvdGhlci5tX25hbWUgJiYgbV92YWx1
ZSA9PSBvdGhlci5tX3ZhbHVlOyB9CisKKyAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0
IHsgcmV0dXJuIHZhbHVlKCk7IH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIGNvbnN0IFN0cmluZyYgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CisgICAgCitwcml2YXRlOgorICAgIENTU0N1c3RvbVByb3BlcnR5
VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorICAg
ICAgICA6IENTU1ZhbHVlKEN1c3RvbVByb3BlcnR5Q2xhc3MpCisgICAgICAgICwgbV9uYW1lKG5h
bWUpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3Qg
QXRvbWljU3RyaW5nIG1fbmFtZTsKKyAgICBjb25zdCBTdHJpbmcgbV92YWx1ZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUo
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSwgaXNDdXN0b21Qcm9wZXJ0eVZhbHVlKCkpCisKKyNlbmRp
ZiAvLyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueS5pbgkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueS5pbgkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNDU1NUb2tlbkFTdHJpbmcoaW50CiAgICAgY2FzZSBESVJGVU5DVElPTjoKICAgICBjYXNl
IFJPTEVGVU5DVElPTjoKICNlbmRpZgorICAgIGNhc2UgQ1VTVE9NX1BST1BFUlRZOgogICAgIGNh
c2UgVU5JQ09ERVJBTkdFOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgpAQCAt
MjQ0LDYgKzI0NSw4IEBAIHN0YXRpYyBib29sIHNlbGVjdG9yTGlzdERvZXNOb3RNYXRjaEFueVAK
ICV0b2tlbiA8c3RyaW5nPiBST0xFRlVOQ1RJT04KICNlbmRpZgogCisldG9rZW4gPHN0cmluZz4g
Q1VTVE9NX1BST1BFUlRZCisKICV0b2tlbiA8c3RyaW5nPiBVTklDT0RFUkFOR0UKIAogJXR5cGUg
PHJlbGF0aW9uPiBjb21iaW5hdG9yCkBAIC0xNTM1LDcgKzE1MzgsMTMgQEAgZGVjbF9saXN0X3Jl
Y292ZXJ5OgogICAgIDsKIAogZGVjbGFyYXRpb246Ci0gICAgcHJvcGVydHkgJzonIG1heWJlX3Nw
YWNlIGV4cHIgcHJpb3JpdHkgeworICAgIENVU1RPTV9QUk9QRVJUWSBtYXliZV9zcGFjZSAnOicg
bWF5YmVfc3BhY2UgZXhwciBwcmlvcml0eSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQ
YXJzZXJWYWx1ZUxpc3Q+IHByb3BlcnR5VmFsdWUoJDUpOworICAgICAgICBwYXJzZXItPmFkZEN1
c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oJDEsIHByb3BlcnR5VmFsdWUuZ2V0KCksICQ2KTsKKyAg
ICAgICAgJCQgPSB0cnVlOworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZCgkNiwgdHJ1
ZSk7CisgICAgfQorICAgIHwgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpb3JpdHkg
ewogICAgICAgICAkJCA9IGZhbHNlOwogICAgICAgICBib29sIGlzUHJvcGVydHlQYXJzZWQgPSBm
YWxzZTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclZhbHVlTGlzdD4gcHJvcGVy
dHlWYWx1ZSgkNCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMTkw
MjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJDU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWUu
aCIKICNpbmNsdWRlICJDU1NDcm9zc2ZhZGVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvcklt
YWdlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVk
ZSAiQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlUnVsZS5oIgog
I2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKQEAgLTE1NzUsMTMgKzE1NzYsMjMgQEAg
Q1NTUGFyc2VyOjpTb3VyY2VTaXplIENTU1BhcnNlcjo6c291cmNlUwogICAgIHJldHVybiBTb3Vy
Y2VTaXplKFdURjo6bW92ZShleHByZXNzaW9uKSwgV1RGOjptb3ZlKHZhbHVlKSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJvb2wgaW1wb3J0YW50LCBjb25zdCBD
U1NQYXJzZXI6OlBhcnNlZFByb3BlcnR5VmVjdG9yJiBpbnB1dCwgVmVjdG9yPENTU1Byb3BlcnR5
LCAyNTY+JiBvdXRwdXQsIHNpemVfdCYgdW51c2VkRW50cmllcywgc3RkOjpiaXRzZXQ8bnVtQ1NT
UHJvcGVydGllcz4mIHNlZW5Qcm9wZXJ0aWVzKQorc3RhdGljIGlubGluZSB2b2lkIGZpbHRlclBy
b3BlcnRpZXMoYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlcjo6UGFyc2VkUHJvcGVydHlW
ZWN0b3ImIGlucHV0LCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4mIG91dHB1dCwgc2l6ZV90JiB1
bnVzZWRFbnRyaWVzLCBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzPiYgc2VlblByb3BlcnRp
ZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlbkN1c3RvbVByb3BlcnRpZXMpCiB7CiAgICAg
Ly8gQWRkIHByb3BlcnRpZXMgaW4gcmV2ZXJzZSBvcmRlciBzbyB0aGF0IGhpZ2hlc3QgcHJpb3Jp
dHkgZGVmaW5pdGlvbnMgYXJlIHJlYWNoZWQgZmlyc3QuIER1cGxpY2F0ZSBkZWZpbml0aW9ucyBj
YW4gdGhlbiBiZSBpZ25vcmVkIHdoZW4gZm91bmQuCiAgICAgZm9yIChpbnQgaSA9IGlucHV0LnNp
emUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5JiBwcm9w
ZXJ0eSA9IGlucHV0W2ldOwogICAgICAgICBpZiAocHJvcGVydHkuaXNJbXBvcnRhbnQoKSAhPSBp
bXBvcnRhbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChw
cm9wZXJ0eS5pZCgpID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7CisgICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqcHJv
cGVydHkudmFsdWUoKSkubmFtZSgpOworICAgICAgICAgICAgaWYgKHNlZW5DdXN0b21Qcm9wZXJ0
aWVzLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgc2VlbkN1c3RvbVByb3BlcnRpZXMuYWRkKG5hbWUpOworICAgICAgICAgICAgb3V0cHV0Wy0t
dW51c2VkRW50cmllc10gPSBwcm9wZXJ0eTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKICAgICAgICAgY29uc3QgdW5zaWduZWQgcHJvcGVydHlJREluZGV4ID0gcHJvcGVydHku
aWQoKSAtIGZpcnN0Q1NTUHJvcGVydHk7CiAgICAgICAgIEFTU0VSVChwcm9wZXJ0eUlESW5kZXgg
PCBzZWVuUHJvcGVydGllcy5zaXplKCkpOwogICAgICAgICBpZiAoc2VlblByb3BlcnRpZXNbcHJv
cGVydHlJREluZGV4XSkKQEAgLTE1OTgsOCArMTYwOSw5IEBAIFJlZjxJbW11dGFibGVTdHlsZVBy
b3BlcnRpZXM+IENTU1BhcnNlcjoKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gcmVzdWx0
cyh1bnVzZWRFbnRyaWVzKTsKIAogICAgIC8vIEltcG9ydGFudCBwcm9wZXJ0aWVzIGhhdmUgaGln
aGVyIHByaW9yaXR5LCBzbyBhZGQgdGhlbSBmaXJzdC4gRHVwbGljYXRlIGRlZmluaXRpb25zIGNh
biB0aGVuIGJlIGlnbm9yZWQgd2hlbiBmb3VuZC4KLSAgICBmaWx0ZXJQcm9wZXJ0aWVzKHRydWUs
IG1fcGFyc2VkUHJvcGVydGllcywgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRp
ZXMpOwotICAgIGZpbHRlclByb3BlcnRpZXMoZmFsc2UsIG1fcGFyc2VkUHJvcGVydGllcywgcmVz
dWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRpZXMpOworICAgIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPiBzZWVuQ3VzdG9tUHJvcGVydGllczsKKyAgICBmaWx0ZXJQcm9wZXJ0aWVzKHRydWUs
IG1fcGFyc2VkUHJvcGVydGllcywgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRp
ZXMsIHNlZW5DdXN0b21Qcm9wZXJ0aWVzKTsKKyAgICBmaWx0ZXJQcm9wZXJ0aWVzKGZhbHNlLCBt
X3BhcnNlZFByb3BlcnRpZXMsIHJlc3VsdHMsIHVudXNlZEVudHJpZXMsIHNlZW5Qcm9wZXJ0aWVz
LCBzZWVuQ3VzdG9tUHJvcGVydGllcyk7CiAgICAgaWYgKHVudXNlZEVudHJpZXMpCiAgICAgICAg
IHJlc3VsdHMucmVtb3ZlKDAsIHVudXNlZEVudHJpZXMpOwogCkBAIC00MTI0LDcgKzQxMzYsMjkg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQWx0KENTU1Byb3BlcnR5SUQgcAogCiAgICAgcmV0dXJu
IGZhbHNlOwogfQotICAgIAorCit2b2lkIENTU1BhcnNlcjo6YWRkQ3VzdG9tUHJvcGVydHlEZWNs
YXJhdGlvbihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIG5hbWUsIENTU1BhcnNlclZhbHVlTGlzdCog
dmFsdWUsIGJvb2wgaW1wb3J0YW50KQoreworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFRoZSBjdXN0b20gcHJvcGVydHkgY29tZXMgaW4gYXMgYSBwYXJzZWQgc2V0
IG9mIENTU1BhcnNlclZhbHVlcyBjb2xsZWN0ZWQgaW50byBhIGxpc3QuCisgICAgLy8gRm9yIENT
UyB2YXJpYWJsZXMsIHdlIGp1c3Qgd2FudCB0byB0cmVhdCB0aGUgZW50aXJlIHNldCBvZiB2YWx1
ZXMgYXMgYSBzdHJpbmcsIHNvIHdoYXQgd2UgZG8KKyAgICAvLyBpcyBidWlsZCB1cCBhIHNldCBv
ZiBDU1NWYWx1ZXMgYW5kIHNlcmlhbGl6ZSB0aGVtIHVzaW5nIGNzc1RleHQsIHNlcGFyYXRpbmcg
bXVsdGlwbGUgdmFsdWVzCisgICAgLy8gd2l0aCBzcGFjZXMuCisgICAgQXRvbWljU3RyaW5nIHBy
b3BlcnR5TmFtZSA9IG5hbWU7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZS0+c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKGkp
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBSZWZQdHI8Q1NTVmFs
dWU+IGNzc1ZhbHVlID0gdmFsdWUtPnZhbHVlQXQoaSktPmNyZWF0ZUNTU1ZhbHVlKCk7CisgICAg
ICAgIGlmICghY3NzVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGNzc1ZhbHVlLT5jc3NUZXh0KCkpOworICAgIH0KKyAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUN1c3RvbSwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKHByb3BlcnR5TmFt
ZSwgYnVpbGRlci50b1N0cmluZygpLmxvd2VyKCkpLCBpbXBvcnRhbnQsIGZhbHNlKTsKK30KKwog
Ly8gWyA8c3RyaW5nPiB8IDx1cmk+IHwgPGNvdW50ZXI+IHwgYXR0cihYKSB8IG9wZW4tcXVvdGUg
fCBjbG9zZS1xdW90ZSB8IG5vLW9wZW4tcXVvdGUgfCBuby1jbG9zZS1xdW90ZSBdKyB8IGluaGVy
aXQKIC8vIGluIENTUyAyLjEgdGhpcyBnb3Qgc29tZXdoYXQgcmVkdWNlZDoKIC8vIFsgPHN0cmlu
Zz4gfCBhdHRyKFgpIHwgb3Blbi1xdW90ZSB8IGNsb3NlLXF1b3RlIHwgbm8tb3Blbi1xdW90ZSB8
IG5vLWNsb3NlLXF1b3RlIF0rIHwgaW5oZXJpdApAQCAtMTA4ODcsNiArMTA5MjEsMTMgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzSWRlbnRpZmllclN0YXJ0QWZ0ZQogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0N1c3RvbVByb3BlcnR5
SWRlbnRpZmllcihDaGFyYWN0ZXJUeXBlKiBjdXJyZW50Q2hhcmFjdGVyKQoreworICAgIHJldHVy
biBpc0FTQ0lJQWxwaGEoY3VycmVudENoYXJhY3RlclswXSkgfHwgY3VycmVudENoYXJhY3Rlclsw
XSA9PSAnXycgfHwgY3VycmVudENoYXJhY3RlclswXSA+PSAxMjgKKyAgICAgICAgfHwgKGN1cnJl
bnRDaGFyYWN0ZXJbMF0gPT0gJ1xcJyAmJiBpc0NTU0VzY2FwZShjdXJyZW50Q2hhcmFjdGVyWzFd
KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIGlubGlu
ZSBib29sIGlzRXF1YWxUb0NTU0lkZW50aWZpZXIoQ2hhcmFjdGVyVHlwZSogY3NzU3RyaW5nLCBj
b25zdCBjaGFyKiBjb25zdGFudFN0cmluZykKIHsKICAgICAvLyBDb21wYXJlIGFuIGNoYXJhY3Rl
ciBtZW1vcnkgZGF0YSB3aXRoIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZy4KQEAgLTExMTI1LDEw
ICsxMTE2Niw2IEBAIGlubGluZSBib29sIENTU1BhcnNlcjo6cGFyc2VJZGVudGlmaWVySW4KIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjpw
YXJzZUlkZW50aWZpZXIoQ2hhcmFjdGVyVHlwZSomIHJlc3VsdCwgQ1NTUGFyc2VyU3RyaW5nJiBy
ZXN1bHRTdHJpbmcsIGJvb2wmIGhhc0VzY2FwZSkKIHsKLSAgICAvLyBJZiBhIHZhbGlkIGlkZW50
aWZpZXIgc3RhcnQgaXMgZm91bmQsIHdlIGNhbiBzYWZlbHkKLSAgICAvLyBwYXJzZSB0aGUgaWRl
bnRpZmllciB1bnRpbCB0aGUgbmV4dCBpbnZhbGlkIGNoYXJhY3Rlci4KLSAgICBBU1NFUlQoaXNJ
ZGVudGlmaWVyU3RhcnQ8Q2hhcmFjdGVyVHlwZT4oKSk7Ci0KICAgICBDaGFyYWN0ZXJUeXBlKiBz
dGFydCA9IGN1cnJlbnRDaGFyYWN0ZXI8Q2hhcmFjdGVyVHlwZT4oKTsKICAgICBpZiAoVU5MSUtF
TFkoIXBhcnNlSWRlbnRpZmllckludGVybmFsKGN1cnJlbnRDaGFyYWN0ZXI8Q2hhcmFjdGVyVHlw
ZT4oKSwgcmVzdWx0LCBoYXNFc2NhcGUpKSkgewogICAgICAgICAvLyBGb3VuZCBhbiBlc2NhcGUg
d2UgY291bGRuJ3QgaGFuZGxlIHdpdGggOCBiaXRzLCBjb3B5IHdoYXQgaGFzIGJlZW4gcmVjb2du
aXplZCBhbmQgY29udGludWUKQEAgLTEyMDY4LDYgKzEyMTA1LDExIEBAIHJlc3RhcnRBZnRlckNv
bW1lbnQ6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHRTdHJpbmcuc2V0TGVuZ3Ro
KHJlc3VsdCAtIHRva2VuU3RhcnQ8U3JjQ2hhcmFjdGVyVHlwZT4oKSk7CiAgICAgICAgICAgICB5
eWx2YWwtPnN0cmluZyA9IHJlc3VsdFN0cmluZzsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50
Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KClbMF0gPT0gJy0nICYmIGlzSWRlbnRpZmllclN0
YXJ0QWZ0ZXJEYXNoKGN1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKSArIDEpKSB7
CisgICAgICAgICAgICAtLWN1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKTsKKyAg
ICAgICAgICAgIHBhcnNlSWRlbnRpZmllcihyZXN1bHQsIHJlc3VsdFN0cmluZywgaGFzRXNjYXBl
KTsKKyAgICAgICAgICAgIG1fdG9rZW4gPSBDVVNUT01fUFJPUEVSVFk7CisgICAgICAgICAgICB5
eWx2YWwtPnN0cmluZyA9IHJlc3VsdFN0cmluZzsKICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50
Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KClbMF0gPT0gJy0nICYmIGN1cnJlbnRDaGFyYWN0
ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKVsxXSA9PSAnPicpIHsKICAgICAgICAgICAgIGN1cnJlbnRD
aGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKSArPSAyOwogICAgICAgICAgICAgbV90b2tlbiA9
IFNHTUxfQ0Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCShyZXZpc2lvbiAxOTAyMDYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2
ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBwYXJzZVF1b3RlcyhDU1NQcm9wZXJ0eUlELCBi
b29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUFsdChDU1NQcm9wZXJ0eUlELCBib29sIGlt
cG9ydGFudCk7CiAgICAgCisgICAgdm9pZCBhZGRDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKGNv
bnN0IENTU1BhcnNlclN0cmluZyYsIENTU1BhcnNlclZhbHVlTGlzdCosIGJvb2wgaW1wb3J0YW50
KTsKKyAgICAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQXR0cihDU1NQYXJzZXJWYWx1ZUxp
c3QmIGFyZ3MpOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUJhY2tncm91bmRDb2xvcigp
OwpAQCAtNzU1LDYgKzc1NywxMSBAQCBpbmxpbmUgVUNoYXIgQ1NTUGFyc2VyOjp0b2tlblN0YXJ0
Q2hhcigpCiAgICAgcmV0dXJuICptX3Rva2VuU3RhcnQucHRyMTY7CiB9CiAKK2lubGluZSBib29s
IGlzQ3VzdG9tUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQoreworICAg
IHJldHVybiBwcm9wZXJ0eU5hbWUubGVuZ3RoKCkgPiAyICYmIHByb3BlcnR5TmFtZS5jaGFyYWN0
ZXJBdCgwKSA9PSAnLScgJiYgcHJvcGVydHlOYW1lLmNoYXJhY3RlckF0KDEpID09ICctJzsKK30K
KwogaW5saW5lIGludCBjc3N5eWxleCh2b2lkKiB5eWx2YWwsIENTU1BhcnNlciogcGFyc2VyKQog
ewogICAgIHJldHVybiBwYXJzZXItPmxleCh5eWx2YWwpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NTQ29udGVu
dERpc3RyaWJ1dGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Jvc3NmYWRlVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZpbHRlckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJD
U1NGb250RmFjZVNyY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgpA
QCAtMjM2LDYgKzIzNyw5IEBAIGJvb2wgQ1NTVmFsdWU6OmVxdWFscyhjb25zdCBDU1NWYWx1ZSYg
b3QKICNlbmRpZgogICAgICAgICBjYXNlIENTU0NvbnRlbnREaXN0cmlidXRpb25DbGFzczoKICAg
ICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0NvbnRlbnREaXN0cmlidXRpb25W
YWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBDdXN0b21Qcm9wZXJ0eUNsYXNzOgor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMz
MCw3ICszMzQsMTAgQEAgU3RyaW5nIENTU1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICNlbmRpZgog
ICAgIGNhc2UgQ1NTQ29udGVudERpc3RyaWJ1dGlvbkNsYXNzOgogICAgICAgICByZXR1cm4gZG93
bmNhc3Q8Q1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgp
OworICAgIGNhc2UgQ3VzdG9tUHJvcGVydHlDbGFzczoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAgICAgfQor
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpAQCAt
NDUzLDYgKzQ2MCw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAgIGNhc2UgQ1NTQ29u
dGVudERpc3RyaWJ1dGlvbkNsYXNzOgogICAgICAgICBkZWxldGUgZG93bmNhc3Q8Q1NTQ29udGVu
dERpc3RyaWJ1dGlvblZhbHVlPih0aGlzKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3Vz
dG9tUHJvcGVydHlDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+KHRoaXMpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgJKHJldmlzaW9uIDE5MDIwNikK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2
ICs3Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2FudmFzVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2NsYXNzVHlwZSA9PSBDYW52YXNDbGFzczsgfQogICAgIGJvb2wgaXNDcm9zc2ZhZGVWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IENyb3NzZmFkZUNsYXNzOyB9CiAgICAg
Ym9vbCBpc0N1cnNvckltYWdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBD
dXJzb3JJbWFnZUNsYXNzOyB9CisgICAgYm9vbCBpc0N1c3RvbVByb3BlcnR5VmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDdXN0b21Qcm9wZXJ0eUNsYXNzOyB9CiAgICAgYm9v
bCBpc0Z1bmN0aW9uVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBGdW5jdGlv
bkNsYXNzOyB9CiAgICAgYm9vbCBpc0ZvbnRGZWF0dXJlVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2NsYXNzVHlwZSA9PSBGb250RmVhdHVyZUNsYXNzOyB9CiAgICAgYm9vbCBpc0ZvbnRGYWNlU3Jj
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBGb250RmFjZVNyY0NsYXNzOyB9
CkBAIC0xNzYsNyArMTc3LDggQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICAgICAgICAgQ1NTQ29u
dGVudERpc3RyaWJ1dGlvbkNsYXNzLAotCisgICAgICAgIEN1c3RvbVByb3BlcnR5Q2xhc3MsCisg
ICAgICAgIAogICAgICAgICAvLyBMaXN0IGNsYXNzIHR5cGVzIG11c3QgYXBwZWFyIGFmdGVyIFZh
bHVlTGlzdENsYXNzLgogICAgICAgICBWYWx1ZUxpc3RDbGFzcywKICNpZiBFTkFCTEUoQ1NTX0lN
QUdFX1NFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogCisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hl
ZXQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTE2Miw2ICsxNjMsMTMgQEAgdm9pZCBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAogCiBSZWZQdHI8Q1NTVmFsdWU+IFBy
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKKyAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eU5hbWUocHJv
cGVydHlOYW1lKSkgeworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gbV9wcm9wZXJ0
eVNldC0+Z2V0Q3VzdG9tUHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBj
bG9uZUFuZENhY2hlRm9yQ1NTT00odmFsdWUuZ2V0KCkpOworICAgIH0KKyAgICAKICAgICBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAg
aWYgKCFwcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3MCw2ICsxNzgs
OSBAQCBSZWZQdHI8Q1NTVmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsCiAKIFN0cmluZyBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUpCiB7CisgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3Bl
cnR5TmFtZSkpCisgICAgICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LT5nZXRDdXN0b21Qcm9wZXJ0
eVZhbHVlKHByb3BlcnR5TmFtZSk7CisKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBj
c3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUlEKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xNzgsNiArMTg5LDkgQEAgU3RyaW5nIFByb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6ZwogCiBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQog
eworICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKQorICAgICAgICBy
ZXR1cm4gbV9wcm9wZXJ0eVNldC0+Y3VzdG9tUHJvcGVydHlJc0ltcG9ydGFudChwcm9wZXJ0eU5h
bWUpID8gImltcG9ydGFudCIgOiAiIjsKKwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9
IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SUQpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTIwMyw3ICsyMTcsMTAgQEAgYm9vbCBQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb246OmlzUAogdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb246OnNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHByaW9yaXR5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKKyAg
ICAKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5
TmFtZSk7CisgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpCisgICAg
ICAgIHByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUN1c3RvbTsKICAgICBpZiAoIXByb3BlcnR5SUQp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMjEzLDcgKzIzMCw3IEBAIHZvaWQgUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uOjpzZXQKICAgICBib29sIGltcG9ydGFudCA9IHByaW9yaXR5LmZp
bmQoImltcG9ydGFudCIsIDAsIGZhbHNlKSAhPSBub3RGb3VuZDsKIAogICAgIGVjID0gMDsKLSAg
ICBib29sIGNoYW5nZWQgPSBtX3Byb3BlcnR5U2V0LT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2
YWx1ZSwgaW1wb3J0YW50LCBjb250ZXh0U3R5bGVTaGVldCgpKTsKKyAgICBib29sIGNoYW5nZWQg
PSBwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5Q3VzdG9tID8gbV9wcm9wZXJ0eVNldC0+c2V0UHJv
cGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQoKSkg
OiBtX3Byb3BlcnR5U2V0LT5zZXRDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHZhbHVlLCBp
bXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KCkpOwogCiAgICAgZGlkTXV0YXRlKGNoYW5nZWQg
PyBQcm9wZXJ0eUNoYW5nZWQgOiBOb0NoYW5nZXMpOwogCkBAIC0yMjgsNiArMjQ1LDggQEAgU3Ry
aW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cgogewogICAgIFN0eWxlQXR0cmli
dXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKKyAgICBpZiAoaXNDdXN0
b21Qcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcHJvcGVydHlJRCA9IENTU1By
b3BlcnR5Q3VzdG9tOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCkBAIC0yMzYsNyArMjU1LDcgQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6cgogCiAgICAgZWMgPSAwOwogICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgYm9vbCBj
aGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+cmVtb3ZlUHJvcGVydHkocHJvcGVydHlJRCwgJnJlc3Vs
dCk7CisgICAgYm9vbCBjaGFuZ2VkID0gcHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUN1c3RvbSA/
IG1fcHJvcGVydHlTZXQtPnJlbW92ZVByb3BlcnR5KHByb3BlcnR5SUQsICZyZXN1bHQpIDogbV9w
cm9wZXJ0eVNldC0+cmVtb3ZlQ3VzdG9tUHJvcGVydHkocHJvcGVydHlOYW1lLCAmcmVzdWx0KTsK
IAogICAgIGRpZE11dGF0ZShjaGFuZ2VkID8gUHJvcGVydHlDaGFuZ2VkIDogTm9DaGFuZ2VzKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDE5
MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAK
ICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgpAQCAtMjIwLDYg
KzIyMSwxNCBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eVZhbHVlCiAgICAg
fQogfQogCitTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBjb25zdAoreworICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWUgPSBnZXRDdXN0b21Qcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5TmFtZSk7CisgICAgaWYg
KHZhbHVlKQorICAgICAgICByZXR1cm4gdmFsdWUtPmNzc1RleHQoKTsKKyAgICByZXR1cm4gU3Ry
aW5nKCk7Cit9CisKIFN0cmluZyBTdHlsZVByb3BlcnRpZXM6OmJvcmRlclNwYWNpbmdWYWx1ZShj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpIGNvbnN0CiB7CiAgICAgUmVm
UHRyPENTU1ZhbHVlPiBob3Jpem9udGFsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbMF0pOwpAQCAtNTg3LDYgKzU5NiwxNCBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBTdHlsZVByb3BlcnRpZXM6OmdlCiAgICAgcmV0dXJuIHByb3BlcnR5QXQoZm91bmRQ
cm9wZXJ0eUluZGV4KS52YWx1ZSgpOwogfQogCitQYXNzUmVmUHRyPENTU1ZhbHVlPiBTdHlsZVBy
b3BlcnRpZXM6OmdldEN1c3RvbVByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0Cit7CisgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZpbmRDdXN0b21Q
cm9wZXJ0eUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgaWYgKGZvdW5kUHJvcGVydHlJbmRleCA9
PSAtMSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb3BlcnR5QXQoZm91
bmRQcm9wZXJ0eUluZGV4KS52YWx1ZSgpOworfQorCiBib29sIE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OnJlbW92ZVNob3J0aGFuZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsK
ICAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3Bl
cnR5KHByb3BlcnR5SUQpOwpAQCAtNjMxLDYgKzY0OCwyNSBAQCBib29sIE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OnJlbW92ZVByb3BlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6cmVtb3ZlQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUsIFN0cmluZyogcmV0dXJuVGV4dCkKK3sKKyAgICBpbnQgZm91bmRQcm9wZXJ0eUlu
ZGV4ID0gZmluZEN1c3RvbVByb3BlcnR5SW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBpZiAoZm91
bmRQcm9wZXJ0eUluZGV4ID09IC0xKSB7CisgICAgICAgIGlmIChyZXR1cm5UZXh0KQorICAgICAg
ICAgICAgKnJldHVyblRleHQgPSAiIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmIChyZXR1cm5UZXh0KQorICAgICAgICAqcmV0dXJuVGV4dCA9IHByb3BlcnR5QXQoZm91
bmRQcm9wZXJ0eUluZGV4KS52YWx1ZSgpLT5jc3NUZXh0KCk7CisKKyAgICAvLyBBIG1vcmUgZWZm
aWNpZW50IHJlbW92YWwgc3RyYXRlZ3kgd291bGQgaW52b2x2ZSBtYXJraW5nIGVudHJpZXMgYXMg
ZW1wdHkKKyAgICAvLyBhbmQgc3dlZXBpbmcgdGhlbSB3aGVuIHRoZSB2ZWN0b3IgZ3Jvd3MgdG9v
IGJpZy4KKyAgICBtX3Byb3BlcnR5VmVjdG9yLnJlbW92ZShmb3VuZFByb3BlcnR5SW5kZXgpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6cmVt
b3ZlUHJlZml4ZWRPclVucHJlZml4ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQp
CiB7CiAgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZpbmRQcm9wZXJ0eUluZGV4KHByZWZp
eGluZ1ZhcmlhbnRGb3JQcm9wZXJ0eUlkKHByb3BlcnR5SUQpKTsKQEAgLTY1Niw2ICs2OTIsMTQg
QEAgYm9vbCBTdHlsZVByb3BlcnRpZXM6OnByb3BlcnR5SXNJbXBvcnRhbgogICAgIHJldHVybiB0
cnVlOwogfQogCitib29sIFN0eWxlUHJvcGVydGllczo6Y3VzdG9tUHJvcGVydHlJc0ltcG9ydGFu
dChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBpbnQgZm91bmRQcm9w
ZXJ0eUluZGV4ID0gZmluZEN1c3RvbVByb3BlcnR5SW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBp
ZiAoZm91bmRQcm9wZXJ0eUluZGV4ICE9IC0xKQorICAgICAgICByZXR1cm4gcHJvcGVydHlBdChm
b3VuZFByb3BlcnR5SW5kZXgpLmlzSW1wb3J0YW50KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiBTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQpIGNvbnN0CiB7CiAgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZp
bmRQcm9wZXJ0eUluZGV4KHByb3BlcnR5SUQpOwpAQCAtNjg0LDYgKzcyOCwyMSBAQCBib29sIE11
dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5CiAgICAgcmV0dXJuIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZSh0aGlzLCBwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJzZXJN
b2RlKCksIGNvbnRleHRTdHlsZVNoZWV0KSA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpDaGFu
Z2VkOwogfQogCitib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5
KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGlt
cG9ydGFudCwgU3R5bGVTaGVldENvbnRlbnRzKiAvKmNvbnRleHRTdHlsZVNoZWV0Ki8pCit7Cisg
ICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgdG8gYW4gZW1wdHkgc3RyaW5nIGp1c3QgcmVtb3ZlcyB0
aGUgcHJvcGVydHkgaW4gYm90aCBJRSBhbmQgR2Vja28uCisgICAgLy8gU2V0dGluZyBpdCB0byBu
dWxsIHNlZW1zIHRvIHByb2R1Y2UgbGVzcyBjb25zaXN0ZW50IHJlc3VsdHMsIGJ1dCB3ZSB0cmVh
dCBpdCBqdXN0IHRoZSBzYW1lLgorICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiByZW1vdmVDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOworCisgICAgLy8gV2hlbiBy
ZXBsYWNpbmcgYW4gZXhpc3RpbmcgcHJvcGVydHkgdmFsdWUsIHRoaXMgbW92ZXMgdGhlIHByb3Bl
cnR5IHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCisgICAgLy8gRmlyZWZveCBwcmVzZXJ2ZXMgdGhl
IHBvc2l0aW9uLCBhbmQgTVNJRSBtb3ZlcyB0aGUgcHJvcGVydHkgdG8gdGhlIGJlZ2lubmluZy4K
KyAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3VzdG9tVmFsdWUgPSBDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUocHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgYWRkUGFy
c2VkUHJvcGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlDdXN0b20sIGN1c3RvbVZhbHVlLCBp
bXBvcnRhbnQpKTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHBycFZhbHVlLCBib29sIGltcG9ydGFudCkKIHsKICAgICBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5
SUQpOwpAQCAtNzAyLDcgKzc2MSwxNSBAQCB2b2lkIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNl
dFByb3BlcnR5CiBib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5KGNvbnN0
IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHkqIHNsb3QpCiB7CiAgICAgaWYgKCFy
ZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eShwcm9wZXJ0eS5pZCgpKSkgewotICAgICAgICBDU1NQcm9w
ZXJ0eSogdG9SZXBsYWNlID0gc2xvdCA/IHNsb3QgOiBmaW5kQ1NTUHJvcGVydHlXaXRoSUQocHJv
cGVydHkuaWQoKSk7CisgICAgICAgIENTU1Byb3BlcnR5KiB0b1JlcGxhY2UgPSBzbG90OworICAg
ICAgICBpZiAoIXNsb3QpIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5pZCgpID09IENTU1By
b3BlcnR5Q3VzdG9tKSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LnZhbHVlKCkpCisg
ICAgICAgICAgICAgICAgICAgIHRvUmVwbGFjZSA9IGZpbmRDdXN0b21DU1NQcm9wZXJ0eVdpdGhO
YW1lKGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS52YWx1ZSgpKS5u
YW1lKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdG9SZXBsYWNlID0g
ZmluZENTU1Byb3BlcnR5V2l0aElEKHByb3BlcnR5LmlkKCkpOworICAgICAgICB9CisgICAgICAg
IAogICAgICAgICBpZiAodG9SZXBsYWNlKSB7CiAgICAgICAgICAgICBpZiAoKnRvUmVwbGFjZSA9
PSBwcm9wZXJ0eSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03ODEsNiArODQ4
LDEyIEBAIGJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6YWRkUGFyc2VkUHIKIAogYm9vbCBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjphZGRQYXJzZWRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0
eSYgcHJvcGVydHkpCiB7CisgICAgaWYgKHByb3BlcnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlDdXN0
b20pIHsKKyAgICAgICAgaWYgKChwcm9wZXJ0eS52YWx1ZSgpICYmICFjdXN0b21Qcm9wZXJ0eUlz
SW1wb3J0YW50KGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS52YWx1
ZSgpKS5uYW1lKCkpKSB8fCBwcm9wZXJ0eS5pc0ltcG9ydGFudCgpKQorICAgICAgICAgICAgcmV0
dXJuIHNldFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICAKICAgICAvLyBPbmx5IGFkZCBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSBubyAhaW1wb3J0YW50
IGNvdW50ZXJwYXJ0IHByZXNlbnQKICAgICBpZiAoIXByb3BlcnR5SXNJbXBvcnRhbnQocHJvcGVy
dHkuaWQoKSkgfHwgcHJvcGVydHkuaXNJbXBvcnRhbnQoKSkKICAgICAgICAgcmV0dXJuIHNldFBy
b3BlcnR5KHByb3BlcnR5KTsKQEAgLTk3MywxMiArMTA0NiwxNyBAQCBTdHJpbmcgU3R5bGVQcm9w
ZXJ0aWVzOjphc1RleHQoKSBjb25zdAogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHZhbHVl
ID0gcHJvcGVydHkudmFsdWUoKS0+Y3NzVGV4dCgpOwogCi0gICAgICAgIGlmICh2YWx1ZSA9PSAi
aW5pdGlhbCIgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KHByb3BlcnR5SUQp
KQorICAgICAgICBpZiAocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUN1c3RvbSAmJiB2YWx1ZSA9
PSAiaW5pdGlhbCIgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KHByb3BlcnR5
SUQpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKG51bURlY2xzKyspCiAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0
UHJvcGVydHlOYW1lKHByb3BlcnR5SUQpKTsKKworICAgICAgICBpZiAocHJvcGVydHlJRCA9PSBD
U1NQcm9wZXJ0eUN1c3RvbSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZG93bmNhc3Q8Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LnZhbHVlKCkpLm5hbWUoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lKHByb3BlcnR5
SUQpKTsKKwogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKICAgICAgICAgcmVz
dWx0LmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eS5pc0ltcG9ydGFudCgpKQpA
QCAtMTE3NSw2ICsxMjUzLDQyIEBAIGludCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpmaW5kUHJv
cGVydHkKICAgICByZXR1cm4gLTE7CiB9CiAKK2ludCBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBjb25z
dAoreworICAgIC8vIENvbnZlcnQgdGhlIHByb3BlcnR5SUQgaW50byBhbiB1aW50MTZfdCB0byBj
b21wYXJlIGl0IHdpdGggdGhlIG1ldGFkYXRhJ3MgbV9wcm9wZXJ0eUlEIHRvIGF2b2lkCisgICAg
Ly8gdGhlIGNvbXBpbGVyIGNvbnZlcnRpbmcgaXQgdG8gYW4gaW50IG11bHRpcGxlIHRpbWVzIGlu
IHRoZSBsb29wLgorICAgIHVpbnQxNl90IGlkID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KENTU1By
b3BlcnR5Q3VzdG9tKTsKKyAgICBmb3IgKGludCBuID0gbV9hcnJheVNpemUgLSAxIDsgbiA+PSAw
OyAtLW4pIHsKKyAgICAgICAgaWYgKG1ldGFkYXRhQXJyYXkoKVtuXS5tX3Byb3BlcnR5SUQgPT0g
aWQpIHsKKyAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgY3VzdG9tIHByb3BlcnR5LiBTZWUgaWYg
dGhlIG5hbWUgbWF0Y2hlcy4KKyAgICAgICAgICAgIGlmICghdmFsdWVBcnJheSgpW25dKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGRvd25jYXN0PENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+KCp2YWx1ZUFycmF5KClbbl0pLm5hbWUoKSA9PSBwcm9wZXJ0eU5hbWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG47CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gLTE7Cit9CisKK2ludCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpmaW5kQ3VzdG9tUHJvcGVy
dHlJbmRleChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICAvLyBDb252
ZXJ0IHRoZSBwcm9wZXJ0eUlEIGludG8gYW4gdWludDE2X3QgdG8gY29tcGFyZSBpdCB3aXRoIHRo
ZSBtZXRhZGF0YSdzIG1fcHJvcGVydHlJRCB0byBhdm9pZAorICAgIC8vIHRoZSBjb21waWxlciBj
b252ZXJ0aW5nIGl0IHRvIGFuIGludCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgbG9vcC4KKyAgICB1
aW50MTZfdCBpZCA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihDU1NQcm9wZXJ0eUN1c3RvbSk7Cisg
ICAgZm9yIChpbnQgbiA9IG1fcHJvcGVydHlWZWN0b3Iuc2l6ZSgpIC0gMSA7IG4gPj0gMDsgLS1u
KSB7CisgICAgICAgIGlmIChtX3Byb3BlcnR5VmVjdG9yLmF0KG4pLm1ldGFkYXRhKCkubV9wcm9w
ZXJ0eUlEID09IGlkKSB7CisgICAgICAgICAgICAvLyBXZSBmb3VuZCBhIGN1c3RvbSBwcm9wZXJ0
eS4gU2VlIGlmIHRoZSBuYW1lIG1hdGNoZXMuCisgICAgICAgICAgICBpZiAoIW1fcHJvcGVydHlW
ZWN0b3IuYXQobikudmFsdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGlmIChkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqbV9wcm9wZXJ0eVZlY3Rv
ci5hdChuKS52YWx1ZSgpKS5uYW1lKCkgPT0gcHJvcGVydHlOYW1lKQorICAgICAgICAgICAgICAg
IHJldHVybiBuOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCiBDU1NQ
cm9wZXJ0eSogTXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZmluZENTU1Byb3BlcnR5V2l0aElEKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICBpbnQgZm91bmRQcm9wZXJ0eUluZGV4ID0g
ZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHlJRCk7CkBAIC0xMTgzLDYgKzEyOTcsMTQgQEAgQ1NT
UHJvcGVydHkqIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmZpbgogICAgIHJldHVybiAmbV9wcm9w
ZXJ0eVZlY3Rvci5hdChmb3VuZFByb3BlcnR5SW5kZXgpOwogfQogCitDU1NQcm9wZXJ0eSogTXV0
YWJsZVN0eWxlUHJvcGVydGllczo6ZmluZEN1c3RvbUNTU1Byb3BlcnR5V2l0aE5hbWUoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUpCit7CisgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZp
bmRDdXN0b21Qcm9wZXJ0eUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgaWYgKGZvdW5kUHJvcGVy
dHlJbmRleCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuICZtX3Byb3BlcnR5
VmVjdG9yLmF0KGZvdW5kUHJvcGVydHlJbmRleCk7Cit9CisKIGJvb2wgU3R5bGVQcm9wZXJ0aWVz
Ojpwcm9wZXJ0eU1hdGNoZXMoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1
ZSogcHJvcGVydHlWYWx1ZSkgY29uc3QKIHsKICAgICBpbnQgZm91bmRQcm9wZXJ0eUluZGV4ID0g
ZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHlJRCk7CkBAIC0xMjY1LDYgKzEzODcsOCBAQCBSZWY8
TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gTXV0YWJsZVN0eWxlCiAKIFN0cmluZyBTdHlsZVByb3Bl
cnRpZXM6OlByb3BlcnR5UmVmZXJlbmNlOjpjc3NOYW1lKCkgY29uc3QKIHsKKyAgICBpZiAoaWQo
KSA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+KCp2YWx1ZSgpKS5uYW1lKCk7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5
TmFtZVN0cmluZyhpZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJv
cGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRp
ZXMuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5MiwxMCBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIGdldFByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIGJvb2wg
aXNQcm9wZXJ0eUltcGxpY2l0KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCisgICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gZ2V0Q3VzdG9tUHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSkgY29uc3Q7CisgICAgU3RyaW5nIGdldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIGJvb2wgY3VzdG9tUHJvcGVydHlJc0lt
cG9ydGFudChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3Q7CisKICAgICBSZWY8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gY29weUJsb2NrUHJvcGVydGllcygpIGNvbnN0OwogCiAgICAg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q1NTUGFyc2VyTW9kZT4obV9jc3NQYXJzZXJNb2RlKTsgfQpAQCAtMTMyLDcgKzEzNiw4IEBAIHBy
b3RlY3RlZDoKICAgICB7IH0KIAogICAgIGludCBmaW5kUHJvcGVydHlJbmRleChDU1NQcm9wZXJ0
eUlEKSBjb25zdDsKLQorICAgIGludCBmaW5kQ3VzdG9tUHJvcGVydHlJbmRleChjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgCiAgICAgdW5zaWduZWQgbV9jc3NQYXJzZXJN
b2RlIDogMjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1faXNNdXRhYmxlIDogMTsKICAgICB1bnNp
Z25lZCBtX2FycmF5U2l6ZSA6IDI5OwpAQCAtMTYzLDcgKzE2OCw4IEBAIHB1YmxpYzoKICAgICBj
b25zdCBDU1NWYWx1ZSoqIHZhbHVlQXJyYXkoKSBjb25zdDsKICAgICBjb25zdCBTdHlsZVByb3Bl
cnR5TWV0YWRhdGEqIG1ldGFkYXRhQXJyYXkoKSBjb25zdDsKICAgICBpbnQgZmluZFByb3BlcnR5
SW5kZXgoQ1NTUHJvcGVydHlJRCkgY29uc3Q7Ci0KKyAgICBpbnQgZmluZEN1c3RvbVByb3BlcnR5
SW5kZXgoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIAogICAgIHZvaWQq
IG1fc3RvcmFnZTsKIAogcHJpdmF0ZToKQEAgLTIyMSw5ICsyMjcsMTQgQEAgcHVibGljOgogICAg
IENTU1N0eWxlRGVjbGFyYXRpb24qIGVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24oU3R5
bGVkRWxlbWVudCogcGFyZW50RWxlbWVudCk7CiAKICAgICBpbnQgZmluZFByb3BlcnR5SW5kZXgo
Q1NTUHJvcGVydHlJRCkgY29uc3Q7Ci0KKyAgICBpbnQgZmluZEN1c3RvbVByb3BlcnR5SW5kZXgo
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIAogICAgIFZlY3RvcjxDU1NQ
cm9wZXJ0eSwgND4gbV9wcm9wZXJ0eVZlY3RvcjsKIAorICAgIC8vIE1ldGhvZHMgZm9yIHF1ZXJ5
aW5nIGFuZCBhbHRlcmluZyBDU1MgY3VzdG9tIHByb3BlcnRpZXMuCisgICAgYm9vbCBzZXRDdXN0
b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5
bGVTaGVldCA9IDApOworICAgIGJvb2wgcmVtb3ZlQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIFN0cmluZyogcmV0dXJuVGV4dCA9IG51bGxwdHIpOworCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IE11dGFibGVTdHlsZVByb3BlcnRpZXMoQ1NTUGFyc2VyTW9kZSk7CiAg
ICAgZXhwbGljaXQgTXV0YWJsZVN0eWxlUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnRpZXMm
KTsKQEAgLTIzMSw2ICsyNDIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZW1vdmVTaG9ydGhh
bmRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsKICAgICBDU1NQcm9wZXJ0eSogZmluZENTU1Byb3Bl
cnR5V2l0aElEKENTU1Byb3BlcnR5SUQpOworICAgIENTU1Byb3BlcnR5KiBmaW5kQ3VzdG9tQ1NT
UHJvcGVydHlXaXRoTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uPiBtX2Nzc29tV3JhcHBlcjsKIAogICAgIGZyaWVu
ZCBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CkBAIC0yNzksNiArMjkxLDEzIEBAIGlubGluZSBpbnQg
U3R5bGVQcm9wZXJ0aWVzOjpmaW5kUHJvcGVydHkKICAgICByZXR1cm4gZG93bmNhc3Q8SW1tdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPigqdGhpcykuZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHlJRCk7
CiB9CiAKK2lubGluZSBpbnQgU3R5bGVQcm9wZXJ0aWVzOjpmaW5kQ3VzdG9tUHJvcGVydHlJbmRl
eChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBpZiAoaXM8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4oKnRoaXMpLmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KHByb3BlcnR5
TmFtZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4oKnRo
aXMpLmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KHByb3BlcnR5TmFtZSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ1NTQm9y
ZGVySW1hZ2UuaCIKICNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUu
aCIKICNpbmNsdWRlICJDU1NEZWZhdWx0U3R5bGVTaGVldHMuaCIKICNpbmNsdWRlICJDU1NGaWx0
ZXJJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmgiCkBAIC0xMzksNiAr
MTQwLDcgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Rl
bXBvcmFyeUNoYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQog
I2luY2x1ZGUgIkNTU0dyaWRMaW5lTmFtZXNWYWx1ZS5oIgpAQCAtMTg5LDE0ICsxOTEsMTcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVy
Jik7CiAKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUHJvcGVydHk+JiBjdXN0b21Qcm9wZXJ0
aWVzKCkgeyByZXR1cm4gbV9jdXN0b21Qcm9wZXJ0aWVzOyB9CisgICAgCiBwcml2YXRlOgogICAg
IHZvaWQgYWRkU3R5bGVQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydGllcyYsIFN0eWxlUnVs
ZSYsIGJvb2wgaXNJbXBvcnRhbnQsIGJvb2wgaW5oZXJpdGVkT25seSwgUHJvcGVydHlXaGl0ZWxp
c3RUeXBlLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlKTsKICAgICBzdGF0aWMgdm9pZCBzZXRQcm9w
ZXJ0eUludGVybmFsKFByb3BlcnR5JiwgQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUmLCB1bnNpZ25l
ZCBsaW5rTWF0Y2hUeXBlKTsKIAotICAgIFByb3BlcnR5IG1fcHJvcGVydGllc1tudW1DU1NQcm9w
ZXJ0aWVzICsgMV07Ci0gICAgc3RkOjpiaXRzZXQ8bnVtQ1NTUHJvcGVydGllcyArIDE+IG1fcHJv
cGVydHlJc1ByZXNlbnQ7CisgICAgUHJvcGVydHkgbV9wcm9wZXJ0aWVzW251bUNTU1Byb3BlcnRp
ZXMgKyAyXTsKKyAgICBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzICsgMj4gbV9wcm9wZXJ0
eUlzUHJlc2VudDsKIAogICAgIFZlY3RvcjxQcm9wZXJ0eSwgOD4gbV9kZWZlcnJlZFByb3BlcnRp
ZXM7CisgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFByb3BlcnR5PiBtX2N1c3RvbVByb3BlcnRp
ZXM7CiAKICAgICBUZXh0RGlyZWN0aW9uIG1fZGlyZWN0aW9uOwogICAgIFdyaXRpbmdNb2RlIG1f
d3JpdGluZ01vZGU7CkBAIC04NDUsNiArODUwLDkgQEAgUmVmPFJlbmRlclN0eWxlPiBTdHlsZVJl
c29sdmVyOjpzdHlsZUZvcgogICAgIC8vIGRlY2wsIHRoZXJlJ3Mgbm90aGluZyB0byBvdmVycmlk
ZS4gU28ganVzdCBhZGQgdGhlIGZpcnN0IHByb3BlcnRpZXMuCiAgICAgQ2FzY2FkZWRQcm9wZXJ0
aWVzIGNhc2NhZGUoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CiAgICAgY2FzY2FkZS5hZGRNYXRj
aGVzKHJlc3VsdCwgZmFsc2UsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNpemUoKSAt
IDEpOworICAgIAorICAgIC8vIFJlc29sdmUgdmFyaWFibGVzIGZpcnN0LgorICAgIGFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1
c3RvbSk7CiAKICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1By
b3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHkpOwogCkBAIC0xMDExLDYgKzEwMTksOSBA
QCBSZWY8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yCiAgICAgQ2FzY2FkZWRQ
cm9wZXJ0aWVzIGNhc2NhZGUoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CiAgICAgY2FzY2FkZS5h
ZGRNYXRjaGVzKHJlc3VsdCwgZmFsc2UsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNp
emUoKSAtIDEpOwogCisgICAgLy8gUmVzb2x2ZSB2YXJpYWJsZXMgZmlyc3QuCisgICAgYXBwbHlD
YXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5
Q3VzdG9tKTsKKwogICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NT
UHJvcGVydHksIGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSk7CiAKICAgICAvLyBJZiBvdXIgZm9u
dCBnb3QgZGlydGllZCwgdXBkYXRlIGl0IG5vdy4KQEAgLTE2ODYsNiArMTY5Nyw5IEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGkKIAogICAgICAgICBhcHBseUNhc2Nh
ZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NT
UHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24pOwogICAgICAgICBhZGp1c3RTdHlsZUZvckludGVy
Q2hhcmFjdGVyUnVieSgpOworICAgIAorICAgICAgICAvLyBSZXNvbHZlIHZhcmlhYmxlcyBmaXJz
dC4KKyAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlD
dXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tKTsKIAogICAgICAgICAvLyBTdGFydCBieSBhcHBseWlu
ZyBwcm9wZXJ0aWVzIHRoYXQgb3RoZXIgcHJvcGVydGllcyBtYXkgZGVwZW5kIG9uLgogICAgICAg
ICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0
SGlnaFByaW9yaXR5UHJvcGVydHkpOwpAQCAtMTcwMSw2ICsxNzE1LDkgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aQogICAgIGNhc2NhZGUuYWRkTWF0Y2hlcyhtYXRj
aFJlc3VsdCwgdHJ1ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgbWF0Y2hS
ZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogICAgIGNh
c2NhZGUuYWRkTWF0Y2hlcyhtYXRjaFJlc3VsdCwgdHJ1ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZp
cnN0VXNlclJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1bGUsIGFwcGx5SW5oZXJp
dGVkT25seSk7CiAgICAgY2FzY2FkZS5hZGRNYXRjaGVzKG1hdGNoUmVzdWx0LCB0cnVlLCBtYXRj
aFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxl
LCBhcHBseUluaGVyaXRlZE9ubHkpOworICAgIAorICAgIC8vIFJlc29sdmUgdmFyaWFibGVzIGZp
cnN0LgorICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3Vz
dG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSk7CiAKICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhj
YXNjYWRlLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRS
dWJ5UG9zaXRpb24pOwogICAgIApAQCAtMTg4MSw2ICsxODk4LDEyIEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm8KIAogICAgIGlmIChpc0luaGVyaXQgJiYgIXN0YXRl
LnBhcmVudFN0eWxlKCktPmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgJiYgIUNT
U1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KGlkKSkKICAgICAgICAgc3RhdGUucGFyZW50
U3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsKKyAgICAKKyAg
ICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKKyAgICAgICAgQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZSogY3VzdG9tUHJvcGVydHkgPSAmZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4oKnZhbHVlKTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q3VzdG9tUHJvcGVydHlWYWx1
ZShjdXN0b21Qcm9wZXJ0eS0+bmFtZSgpLCBjdXN0b21Qcm9wZXJ0eS0+dmFsdWUoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKICAgICAvLyBVc2UgdGhlIGdlbmVyYXRlZCBTdHlsZUJ1aWxk
ZXIuCiAgICAgU3R5bGVCdWlsZGVyOjphcHBseVByb3BlcnR5KGlkLCAqdGhpcywgKnZhbHVlLCBp
c0luaXRpYWwsIGlzSW5oZXJpdCk7CkBAIC0yNTI2LDYgKzI1NDksMjQgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OgogCiAgICAgYXV0byYgcHJvcGVydHkgPSBtX3By
b3BlcnRpZXNbaWRdOwogICAgIEFTU0VSVChpZCA8IG1fcHJvcGVydHlJc1ByZXNlbnQuc2l6ZSgp
KTsKKyAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKKyAgICAgICAgbV9wcm9wZXJ0
eUlzUHJlc2VudC5zZXQoaWQpOworICAgICAgICBjb25zdCBhdXRvJiBjdXN0b21WYWx1ZSA9IGRv
d25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KGNzc1ZhbHVlKTsKKyAgICAgICAgYm9vbCBo
YXNWYWx1ZSA9IGN1c3RvbVByb3BlcnRpZXMoKS5jb250YWlucyhjdXN0b21WYWx1ZS5uYW1lKCkp
OworICAgICAgICBpZiAoIWhhc1ZhbHVlKSB7CisgICAgICAgICAgICBQcm9wZXJ0eSBwcm9wZXJ0
eTsKKyAgICAgICAgICAgIHByb3BlcnR5LmlkID0gaWQ7CisgICAgICAgICAgICBtZW1zZXQocHJv
cGVydHkuY3NzVmFsdWUsIDAsIHNpemVvZihwcm9wZXJ0eS5jc3NWYWx1ZSkpOworICAgICAgICAg
ICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBsaW5rTWF0Y2hU
eXBlKTsKKyAgICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMoKS5zZXQoY3VzdG9tVmFsdWUubmFt
ZSgpLCBwcm9wZXJ0eSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQcm9wZXJ0eSBw
cm9wZXJ0eSA9IGN1c3RvbVByb3BlcnRpZXMoKS5nZXQoY3VzdG9tVmFsdWUubmFtZSgpKTsKKyAg
ICAgICAgICAgIHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbGlu
a01hdGNoVHlwZSk7CisgICAgICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzKCkuc2V0KGN1c3RvbVZh
bHVlLm5hbWUoKSwgcHJvcGVydHkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCiAgICAgaWYgKCFtX3Byb3BlcnR5SXNQcmVzZW50W2lkXSkKICAgICAgICAgbWVtc2V0
KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXplb2YocHJvcGVydHkuY3NzVmFsdWUpKTsKICAgICBt
X3Byb3BlcnR5SXNQcmVzZW50LnNldChpZCk7CkBAIC0yNjIzLDYgKzI2NjQsMTIgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydAogICAgICAgICBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpZCk7CiAgICAgICAgIGlm
ICghY2FzY2FkZS5oYXNQcm9wZXJ0eShwcm9wZXJ0eUlEKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkgeworICAgICAg
ICAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIENhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHk+
OjppdGVyYXRvciBlbmQgPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQoKTsKKyAgICAg
ICAgICAgIGZvciAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIENhc2NhZGVkUHJvcGVydGllczo6UHJv
cGVydHk+OjppdGVyYXRvciBpdCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICAgICBpdC0+dmFsdWUuYXBwbHkoKnRoaXMp
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgYXV0byYgcHJvcGVy
dHkgPSBjYXNjYWRlLnByb3BlcnR5KHByb3BlcnR5SUQpOwogICAgICAgICBBU1NFUlQoIXNob3Vs
ZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpOwogICAgICAgICBwcm9wZXJ0
eS5hcHBseSgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCShyZXZpc2lvbiAxOTAy
MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDcgQEAgZGllICJXZSd2ZSByZWFjaGVkIG1vcmUgdGhhbiAxMDI0IENTUyBwcgog
bXkgJW5hbWVzSGFzaDsKIG15IEBkdXBsaWNhdGVzID0gKCk7CiAKLW15ICRudW1QcmVkZWZpbmVk
UHJvcGVydGllcyA9IDE7CitteSAkbnVtUHJlZGVmaW5lZFByb3BlcnRpZXMgPSAyOwogbXkgQG5h
bWVzID0gKCk7CiBteSAlbmFtZUlzSW5oZXJpdGVkOwogbXkgJXByb3BlcnRpZXNXaXRoU3R5bGVC
dWlsZGVyT3B0aW9uczsKQEAgLTIzNiw2ICsyMzYsNyBAQCBTdHJpbmcgZ2V0SlNQcm9wZXJ0eU5h
bWUoQ1NTUHJvcGVydHlJRCBpCiAKIHN0YXRpYyBjb25zdCBib29sIGlzSW5oZXJpdGVkUHJvcGVy
dHlUYWJsZVtudW1DU1NQcm9wZXJ0aWVzICsgJG51bVByZWRlZmluZWRQcm9wZXJ0aWVzXSA9IHsK
ICAgICBmYWxzZSwgLy8gQ1NTUHJvcGVydHlJbnZhbGlkCisgICAgZmFsc2UsIC8vIENTU1Byb3Bl
cnR5Q3VzdG9tCiBFT0YKIAogZm9yZWFjaCBteSAkbmFtZSAoQG5hbWVzKSB7CkBAIC0yODMsNiAr
Mjg0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIENTU1Byb3BlcnR5SUQgOiB1aW50
MTZfdCB7CiAgICAgQ1NTUHJvcGVydHlJbnZhbGlkID0gMCwKKyAgICBDU1NQcm9wZXJ0eUN1c3Rv
bSA9IDEsCiBFT0YKIAogbXkgJGZpcnN0ID0gJG51bVByZWRlZmluZWRQcm9wZXJ0aWVzOwpAQCAt
MzEzLDcgKzMxNSw3IEBAIFdURjo6U3RyaW5nIGdldEpTUHJvcGVydHlOYW1lKENTU1Byb3BlcnQK
IAogaW5saW5lIENTU1Byb3BlcnR5SUQgY29udmVydFRvQ1NTUHJvcGVydHlJRChpbnQgdmFsdWUp
CiB7Ci0gICAgQVNTRVJUKCh2YWx1ZSA+PSBmaXJzdENTU1Byb3BlcnR5ICYmIHZhbHVlIDw9IGxh
c3RDU1NQcm9wZXJ0eSkgfHwgdmFsdWUgPT0gQ1NTUHJvcGVydHlJbnZhbGlkKTsKKyAgICBBU1NF
UlQoKHZhbHVlID49IGZpcnN0Q1NTUHJvcGVydHkgJiYgdmFsdWUgPD0gbGFzdENTU1Byb3BlcnR5
KSB8fCB2YWx1ZSA9PSBDU1NQcm9wZXJ0eUludmFsaWQgfHwgdmFsdWUgPT0gQ1NTUHJvcGVydHlD
dXN0b20pOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPih2YWx1ZSk7CiB9
CiAKQEAgLTg3Miw2ICs4NzQsNyBAQCB2b2lkIFN0eWxlQnVpbGRlcjo6YXBwbHlQcm9wZXJ0eShD
U1NQcm9wCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlJ
bnZhbGlkOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDdXN0b206CiAgICAgICAgIGJyZWFrOwogRU9G
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDYgKzM0OCwxNCBA
QCBib29sIEluc3BlY3RvclN0eWxlOjpnZXRUZXh0KFN0cmluZyogcmVzCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3N0YXRpYyBTdHJpbmcgbG93ZXJjYXNlUHJvcGVydHlOYW1lKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICAvLyBDdXN0b20gcHJvcGVydGllcyBhcmUgY2FzZS1zZW5zaXRpdmUu
CisgICAgaWYgKG5hbWUubGVuZ3RoKCkgPiAyICYmIG5hbWUuY2hhcmFjdGVyQXQoMCkgPT0gJy0n
ICYmIG5hbWUuY2hhcmFjdGVyQXQoMSkgPT0gJy0nKQorICAgICAgICByZXR1cm4gbmFtZTsKKyAg
ICByZXR1cm4gbmFtZS5sb3dlcigpOworfQorCiBib29sIEluc3BlY3RvclN0eWxlOjpwb3B1bGF0
ZUFsbFByb3BlcnRpZXMoVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+KiByZXN1bHQpIGNv
bnN0CiB7CiAgICAgSGFzaFNldDxTdHJpbmc+IHNvdXJjZVByb3BlcnR5TmFtZXM7CkBAIC0zNjIs
MTYgKzM3MCwxNiBAQCBib29sIEluc3BlY3RvclN0eWxlOjpwb3B1bGF0ZUFsbFByb3BlcnRpCiAg
ICAgICAgICAgICBJbnNwZWN0b3JTdHlsZVByb3BlcnR5IHAoKml0LCB0cnVlLCBmYWxzZSk7CiAg
ICAgICAgICAgICBwLnNldFJhd1RleHRGcm9tU3R5bGVEZWNsYXJhdGlvbihzdHlsZURlY2xhcmF0
aW9uKTsKICAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHApOwotICAgICAgICAgICAgc291cmNl
UHJvcGVydHlOYW1lcy5hZGQoaXQtPm5hbWUubG93ZXIoKSk7CisgICAgICAgICAgICBzb3VyY2VQ
cm9wZXJ0eU5hbWVzLmFkZChsb3dlcmNhc2VQcm9wZXJ0eU5hbWUoaXQtPm5hbWUpKTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIGZvciAoaW50IGkgPSAwLCBzaXplID0gbV9zdHlsZS0+bGVuZ3Ro
KCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgU3RyaW5nIG5hbWUgPSBtX3N0eWxlLT5pdGVt
KGkpOwotICAgICAgICBpZiAoc291cmNlUHJvcGVydHlOYW1lcy5jb250YWlucyhuYW1lLmxvd2Vy
KCkpKQorICAgICAgICBTdHJpbmcgbG93ZXJOYW1lID0gbG93ZXJjYXNlUHJvcGVydHlOYW1lKG5h
bWUpOworICAgICAgICBpZiAoc291cmNlUHJvcGVydHlOYW1lcy5jb250YWlucyhsb3dlck5hbWUp
KQogICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgc291cmNlUHJvcGVydHlOYW1lcy5h
ZGQobmFtZS5sb3dlcigpKTsKKyAgICAgICAgc291cmNlUHJvcGVydHlOYW1lcy5hZGQobG93ZXJO
YW1lKTsKICAgICAgICAgcmVzdWx0LT5hcHBlbmQoSW5zcGVjdG9yU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVNvdXJjZURhdGEobmFtZSwgbV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShuYW1lKSwg
IW1fc3R5bGUtPmdldFByb3BlcnR5UHJpb3JpdHkobmFtZSkuaXNFbXB0eSgpLCB0cnVlLCBTb3Vy
Y2VSYW5nZSgpKSwgZmFsc2UsIGZhbHNlKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTkwMjA2KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUxMyw2ICs1MTMsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgUHNldWRvU3R5bGVD
YWNoZSogY2FjaGVkUHNldWRvU3R5bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQc2V1ZG9T
dHlsZXMuZ2V0KCk7IH0KIAorICAgIHZvaWQgc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgcmFyZUluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS0+c2V0Q3VzdG9tUHJvcGVy
dHlWYWx1ZShuYW1lLCB2YWx1ZSk7IH0KKyAgICBTdHJpbmcgZ2V0Q3VzdG9tUHJvcGVydHlWYWx1
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWRE
YXRhLT5tX2N1c3RvbVByb3BlcnRpZXMtPmdldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSk7IH0K
KyAgICBib29sIGhhc0N1c3RvbVByb3BlcnR5KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29u
c3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1fY3VzdG9tUHJvcGVydGllcy0+aGFzQ3Vz
dG9tUHJvcGVydHkobmFtZSk7IH0KKyAgICBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3Ry
aW5nPiogY3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICYocmFyZUluaGVyaXRlZERh
dGEtPm1fY3VzdG9tUHJvcGVydGllcy0+bV92YWx1ZXMpOyB9CisKICAgICB2b2lkIHNldEhhc1Zp
ZXdwb3J0VW5pdHMoYm9vbCBoYXNWaWV3cG9ydFVuaXRzID0gdHJ1ZSkgeyBub25pbmhlcml0ZWRf
ZmxhZ3Muc2V0SGFzVmlld3BvcnRVbml0cyhoYXNWaWV3cG9ydFVuaXRzKTsgfQogICAgIGJvb2wg
aGFzVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNW
aWV3cG9ydFVuaXRzKCk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YV9oCisjZGVmaW5lIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhX2gKKworI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2gu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0
YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSk7IH0KKyAgICBSZWY8U3R5
bGVDdXN0b21Qcm9wZXJ0eURhdGE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKCp0aGlzKSk7IH0KKyAgICAKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG8pIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWVzID09IG8ubV92YWx1ZXM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGEgJm8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KKyAg
ICAKKyAgICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1fdmFsdWVzLnNldChuYW1lLCB2YWx1ZSk7IH0K
KyAgICBTdHJpbmcgZ2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmdldChuYW1lKTsgfQorICAgIGJvb2wgaGFzQ3Vz
dG9tUHJvcGVydHkoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlcy5jb250YWlucyhuYW1lKTsgfQorCisgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmlu
Zz4gbV92YWx1ZXM7CisgICAgCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFN0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhKCk6IFJlZkNvdW50ZWQ8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+KCkKKyAgICB7
IH0KKyAgICBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5
RGF0YSYgb3RoZXIpIDogUmVmQ291bnRlZDxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4oKSwgbV92
YWx1ZXMoSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4ob3RoZXIubV92YWx1ZXMpKQorICAg
IHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU3R5bGVDdXN0
b21Qcm9wZXJ0eURhdGFfaApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAkocmV2aXNpb24gMTkwMjA2
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJTdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmgiCiAKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCisjaW5jbHVk
ZSAiRGF0YVJlZi5oIgogI2luY2x1ZGUgIlF1b3Rlc0RhdGEuaCIKICNpbmNsdWRlICJSZW5kZXJT
dHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU2hh
ZG93RGF0YS5oIgorI2luY2x1ZGUgIlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgiCiAjaW5jbHVk
ZSAiU3R5bGVJbWFnZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MCw2ICs2Miw4IEBA
IHN0cnVjdCBHcmVhdGVyVGhhbk9yU2FtZVNpemVBc1N0eWxlUmFyZUkKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yOwogI2VuZGlmCisKKyAgICB2
b2lkKiBjdXN0b21Qcm9wZXJ0eURhdGFSZWZzWzFdOwogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKFN0eWxlUmFyZUluaGVyaXRlZERhdGEpIDw9IHNpemVvZihHcmVhdGVyVGhhbk9yU2FtZVNp
emVBc1N0eWxlUmFyZUluaGVyaXRlZERhdGEpLCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhX3Nob3Vs
ZF9iaXRfcGFjayk7CkBAIC02OSw2ICs3Myw3IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0
eWxlUmFyZUluaGVyaXQKICAgICAsIHRleHRTdHJva2VXaWR0aChSZW5kZXJTdHlsZTo6aW5pdGlh
bFRleHRTdHJva2VXaWR0aCgpKQogICAgICwgaW5kZW50KFJlbmRlclN0eWxlOjppbml0aWFsVGV4
dEluZGVudCgpKQogICAgICwgbV9lZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9v
bSgpKQorICAgICwgbV9jdXN0b21Qcm9wZXJ0aWVzKFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpj
cmVhdGUoKSkKICAgICAsIHdpZG93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbFdpZG93cygpKQogICAg
ICwgb3JwaGFucyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9ycGhhbnMoKSkKICAgICAsIG1faGFzQXV0
b1dpZG93cyh0cnVlKQpAQCAtMTUwLDYgKzE1NSw3IEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmUKICAgICAsIGN1cnNvckRhdGEoby5jdXJzb3JEYXRhKQogICAgICwg
aW5kZW50KG8uaW5kZW50KQogICAgICwgbV9lZmZlY3RpdmVab29tKG8ubV9lZmZlY3RpdmVab29t
KQorICAgICwgbV9jdXN0b21Qcm9wZXJ0aWVzKG8ubV9jdXN0b21Qcm9wZXJ0aWVzKQogICAgICwg
d2lkb3dzKG8ud2lkb3dzKQogICAgICwgb3JwaGFucyhvLm9ycGhhbnMpCiAgICAgLCBtX2hhc0F1
dG9XaWRvd3Moby5tX2hhc0F1dG9XaWRvd3MpCkBAIC0zMjQsNiArMzMwLDcgQEAgYm9vbCBTdHls
ZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KAogI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdf
V09SRCkKICAgICAgICAgJiYgdHJhaWxpbmdXb3JkID09IG8udHJhaWxpbmdXb3JkCiAjZW5kaWYK
KyAgICAgICAgJiYgbV9jdXN0b21Qcm9wZXJ0aWVzID09IG8ubV9jdXN0b21Qcm9wZXJ0aWVzCiAg
ICAgICAgICYmIFN0eWxlSW1hZ2U6OmltYWdlc0VxdWl2YWxlbnQobGlzdFN0eWxlSW1hZ2UuZ2V0
KCksIG8ubGlzdFN0eWxlSW1hZ2UuZ2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJKHJl
dmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDkgQEAKICNkZWZp
bmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YV9oCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1
ZGUgIkRhdGFSZWYuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlICJTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAg
LTc3LDYgKzc5LDggQEAgcHVibGljOgogICAgIAogICAgIExlbmd0aCB3b3JkU3BhY2luZzsKIAor
ICAgIERhdGFSZWY8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+IG1fY3VzdG9tUHJvcGVydGllczsK
KwogICAgIC8vIFBhZ2VkIG1lZGlhIHByb3BlcnRpZXMuCiAgICAgc2hvcnQgd2lkb3dzOwogICAg
IHNob3J0IG9ycGhhbnM7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAyMDYpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxNS0wOS0yNCAg
RGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IENTUyBDdXN0b20gUHJvcGVydGllcyAoaW4gcHJlcGFyYXRpb24gZm9yIGltcGxlbWVudGluZyBD
U1MgVmFyaWFibGVzKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMDM5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXM6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRl
ZC1zdHlsZS1hY2Nlc3MtaW5oZXJpdGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1pbmhlcml0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvY29t
cHV0ZWQtc3R5bGUtYWNjZXNzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2N1c3Rv
bS1wcm9wZXJ0aWVzL2lubGluZS1zdHlsZS1wcm9wZXJ0eS1nZXQtZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvaW5saW5lLXN0eWxlLXBy
b3BlcnR5LWdldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jdXN0b20tcHJvcGVy
dGllcy9ydWxlLXByb3BlcnR5LWdldC1jc3MtdmFsdWUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtY3Nz
LXZhbHVlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVz
L3J1bGUtcHJvcGVydHktZ2V0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktZ2V0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktcHJpb3JpdHkt
ZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRp
ZXMvcnVsZS1wcm9wZXJ0eS1wcmlvcml0eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nz
cy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXNldC1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXNl
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxl
LXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mv
Y3VzdG9tLXByb3BlcnRpZXMvcnVsZS1zZXJpYWxpemF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE1
LTA5LTI0ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByZWJhc2VsaW5lIG1lZGlhL21lZGlhLWNvbnRyb2xzLXBsYXktYnV0
dG9uLXVwZGF0ZXMuaHRtbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9w
ZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFj
Y2Vzcy1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNzLWV4cGVjdGVkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKzpy
b290IHsgLS1vbmU6IDEwcHg7IC0tdHdvOiAyMHB4OyB9Cis8L3N0eWxlPgorPGJvZHk+Cis8c2Ny
aXB0PgorZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0u
c3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS1vbmUiKSArICIgIiArIGRvY3VtZW50LnN0eWxlU2hl
ZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoIi0tdHdvIikpCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3Rv
bS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1pbmhlcml0ZWQtZXhwZWN0ZWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9j
b21wdXRlZC1zdHlsZS1hY2Nlc3MtaW5oZXJpdGVkLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHls
ZS1hY2Nlc3MtaW5oZXJpdGVkLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKzpyb290IHsgLS1vbmU6IDEwcHg7IC0t
dHdvOiAyMHB4OyB9Cis8L3N0eWxlPgorPGJvZHk+Cis8c2NyaXB0PgorZG9jdW1lbnQud3JpdGUo
ZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgiLS1vbmUiKSArICIgIiArIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0
eWxlLmdldFByb3BlcnR5VmFsdWUoIi0tdHdvIikpCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVk
LXN0eWxlLWFjY2Vzcy1pbmhlcml0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHlsZS1hY2Nlc3MtaW5oZXJpdGVk
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVy
dGllcy9jb21wdXRlZC1zdHlsZS1hY2Nlc3MtaW5oZXJpdGVkLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKzpyb290IHsgLS1vbmU6
IDEwcHg7IC0tYW5vdGhlcjogMjBweDsgfQorPC9zdHlsZT4KKzxib2R5PgorPHNjcmlwdD4KK2Rv
Y3VtZW50LndyaXRlKGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlW
YWx1ZSgiLS1vbmUiKSArICIgIiArIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0
UHJvcGVydHlWYWx1ZSgiLS1hbm90aGVyIikpCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbC4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0
eWxlLWFjY2Vzcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3Rv
bS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNj
ZXNzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzdHlsZT4KKzpyb290IHsgLS1vbmU6IDEwcHg7IC0tYW5vdGhlcjogMjBweDsgfQorPC9zdHls
ZT4KKzxib2R5PgorPHNjcmlwdD4KK2RvY3VtZW50LndyaXRlKGdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCItLW9uZSIpICsgIiAiICsg
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFs
dWUoIi0tYW5vdGhlciIpKQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWwuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9pbmxpbmUtc3R5bGUtcHJvcGVydHkt
Z2V0LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vz
dG9tLXByb3BlcnRpZXMvaW5saW5lLXN0eWxlLXByb3BlcnR5LWdldC1leHBlY3RlZC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvaW5s
aW5lLXN0eWxlLXByb3BlcnR5LWdldC1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4KKzEwcHggMjBweAorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvaW5saW5lLXN0eWxl
LXByb3BlcnR5LWdldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1
c3RvbS1wcm9wZXJ0aWVzL2lubGluZS1zdHlsZS1wcm9wZXJ0eS1nZXQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2lubGluZS1zdHls
ZS1wcm9wZXJ0eS1nZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKKzxodG1s
PgorPGhlYWQ+Cis8Ym9keSBzdHlsZT0iLS1vbmU6MTBweDsgLS10d286MjBweCI+Cis8c2NyaXB0
PgorZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuYm9keS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCIt
LW9uZSIpICsgIiAiICsgZG9jdW1lbnQuYm9keS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCItLXR3
byIpKQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LWdldC1jc3MtdmFsdWUtZXhwZWN0
ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVy
dGllcy9ydWxlLXByb3BlcnR5LWdldC1jc3MtdmFsdWUtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVy
dHktZ2V0LWNzcy12YWx1ZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NSBAQAorPGh0bWw+Cis8Ym9keT4KKzEwcHggMjBweAorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQt
Y3NzLXZhbHVlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9t
LXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtY3NzLXZhbHVlLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5
LWdldC1jc3MtdmFsdWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8aHRt
bD4KKzxoZWFkPgorPHN0eWxlPgorOnJvb3QgeyAtLW9uZTogMTBweDsgLS10d286IDIwcHg7IH0K
Kzwvc3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC53cml0ZShkb2N1bWVudC5zdHls
ZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCItLW9uZSIp
LmNzc1RleHQgKyAiICIgKyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHls
ZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCItLXR3byIpLmNzc1RleHQpCis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVz
L3J1bGUtcHJvcGVydHktZ2V0LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtZXhwZWN0ZWQu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0
aWVzL3J1bGUtcHJvcGVydHktZ2V0LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorMTBweCAyMHB4Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5
LWdldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9w
ZXJ0aWVzL3J1bGUtcHJvcGVydHktZ2V0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LWdldC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cis6cm9v
dCB7IC0tb25lOiAxMHB4OyAtLXR3bzogMjBweDsgfQorPC9zdHlsZT4KKzxib2R5PgorPHNjcmlw
dD4KK2RvY3VtZW50LndyaXRlKGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0
eWxlLmdldFByb3BlcnR5VmFsdWUoIi0tb25lIikgKyAiICIgKyBkb2N1bWVudC5zdHlsZVNoZWV0
c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCItLXR3byIpKQorPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20t
cHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXByaW9yaXR5LWV4cGVjdGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0
eS1wcmlvcml0eS1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1wcmlvcml0eS1leHBlY3RlZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4KKzEwcHgg
aW1wb3J0YW50Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
dXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXByaW9yaXR5Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1w
cmlvcml0eS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9t
LXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1wcmlvcml0eS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cis6cm9vdCB7IC0tb25lOiAx
MHB4ICFpbXBvcnRhbnQ7IC0tb25lOjUwcHg7IH0KKzwvc3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQ+
Citkb2N1bWVudC53cml0ZShkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKCItLW9uZSIpICsgIiAiICsgZG9jdW1lbnQuc3R5bGVTaGVldHNb
MF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlQcmlvcml0eSgiLS1vbmUiKSkKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9t
LXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1zZXQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXNl
dC1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vz
dG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1zZXQtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHk+Cis1MHB4IDMwcHgKKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1
bGUtcHJvcGVydHktc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1zZXQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktc2V0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKzpyb290IHsgLS1vbmU6IDEwcHg7IC0tdHdvOiAyMHB4OyB9Cis8L3N0eWxlPgorPGJv
ZHk+Cis8c2NyaXB0PgorZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUu
c2V0UHJvcGVydHkoIi0tb25lIiwgIjVweCIpCitkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NS
dWxlc1swXS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS10d28iKQorZG9jdW1lbnQuc3R5bGVTaGVl
dHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuc2V0UHJvcGVydHkoIi0tdHdvIiwgIjMwcHgiKQorZG9j
dW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuc2V0UHJvcGVydHkoIi0tb25l
IiwgIjUwcHgiKQorZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVs
ZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS1vbmUiKSArICIgIiArIGRvY3VtZW50LnN0
eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoIi0tdHdvIikp
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3Nz
L2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtc2VyaWFsaXphdGlvbi1leHBlY3RlZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtc2Vy
aWFsaXphdGlvbi1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorOnJvb3QgeyAt
LW9uZTogMTBweDsgLS10d286IDIwcHg7IH0KKzwvYm9keT4KKzwvaHRtbC4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtc2VyaWFsaXphdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1
bGUtc2VyaWFsaXphdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
c3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1zZXJpYWxpemF0aW9uLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKzpyb290IHsgLS1v
bmU6IDEwcHg7IC0tdHdvOiAyMHB4OyB9Cis8L3N0eWxlPgorPGJvZHk+Cis8c2NyaXB0PgorZG9j
dW1lbnQud3JpdGUoZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uY3NzVGV4dCkK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261871</attachid>
            <date>2015-09-24 09:57:51 -0700</date>
            <delta_ts>2015-09-24 10:13:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>74203</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MyBAQAorMjAxNS0wOS0yNCAgRGF2aWQg
SHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIENTUyBD
dXN0b20gUHJvcGVydGllcyAoaW4gcHJlcGFyYXRpb24gZm9yIGltcGxlbWVudGluZyBDU1MgVmFy
aWFibGVzKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMDM5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5ldyB0ZXN0cyBpbiBmYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy4KKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBo
ZWFkZXIgZmlsZXMgdG8gdGhlIHByb2plY3QgKENTU0N1c3RvbVByb3BlcnR5VmFsdWUgYW5kIFN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhKS4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6Y3VzdG9tUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgSWYgYSBjdXN0b20gcHJvcGVydHkg
dmFsdWUgaXMgcXVlcmllZCAoaS5lLiwgaXQgc3RhcnRzIHdpdGggIi0tIiksIHRoZW4gd2UgdXNl
IG91cgorICAgICAgICBjdXN0b21Qcm9wZXJ0eVZhbHVlIGxvb2t1cCB0byBnbyB0byB0aGUgUmVu
ZGVyU3R5bGUgYW5kIGZldGNoIHRoZSBhcHByb3ByaWF0ZSBjdXN0b20gcHJvcGVydHkKKyAgICAg
ICAgdmFsdWUgZnJvbSB0aGUgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuCisKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6bGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6aXRlbSk6CisgICAgICAgIFBhdGNo
ZWQgdG8gaW5jbHVkZSBjdXN0b20gcHJvcGVydGllcyBpbiB0aGUgcmV0dXJuZWQgYXJyYXkuIFRo
ZXkgYXBwZWFyIGF0IHRoZSBlbmQgb2YgdGhlIGFycmF5CisgICAgICAgIGFmdGVyIHRoZSBidWls
dC1pbiBwcm9wZXJ0aWVzLgorCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpwcm9wZXJ0eU1hdGNoZXMpOgorICAgICAgICBQYXRjaGVkIHRvIGNoZWNrIGN1c3RvbSBw
cm9wZXJ0aWVzLgorCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpj
b3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAgTWFrZSBzdXJlIHRoZSBjdXN0b20gcHJvcGVy
dGllcyBnZXQgY29waWVkIGludG8gdGhlIFN0eWxlRGVjbGFyYXRpb24uCisKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5VmFsdWUpOgorICAgICAgICBQYXRjaGVkIHRvIGNhbGwgY3VzdG9tUHJvcGVydHlWYWx1ZSBm
b3IgY3VzdG9tIHByb3BlcnRpZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmg6CisgICAgICAgIEFkZCBjdXN0b21Qcm9wZXJ0eVZhbHVlKCkgdG8gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvci4KKworICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmVxdWFscyk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjdXN0b21DU1NUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6Om5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6dmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSk6
CisgICAgICAgIEN1c3RvbSBwcm9wZXJ0aWVzIGFyZSBwYXJzZWQgYXMgYSBwcm9wZXJ0eSB3aXRo
IGFuIElEIG9mIENTU1Byb3BlcnR5Q3VzdG9tIGFuZCBhIENTU0N1c3RvbVByb3BlcnR5VmFsdWUK
KyAgICAgICAgdGhhdCBob2xkcyBib3RoIHRoZSBuYW1lIGFuZCB0aGUgdmFsdWUgb2YgdGhlIHBy
b3BlcnR5LiBVbHRpbWF0ZWx5IHdlIG1pZ2h0IHdhbnQgdG8ganVzdCBkaXRjaCBwcm9wZXJ0eSBJ
RHMgaW4KKyAgICAgICAgZmF2b3Igb2YgQXRvbWljU3RyaW5ncyBmb3IgYWxsIHByb3BlcnRpZXMs
IGFuZCB0aGVuIHRoZSBuZWVkIHRvIHNwZWNpYWwgY2FzZSBjdXN0b20gcHJvcGVydGllcyB3b3Vs
ZCBnbworICAgICAgICBhd2F5LiBGb3Igbm93LCB0aG91Z2gsIHRoaXMgaXMgdGhlIHdheSB3ZSB3
b3JrIGN1c3RvbSBwcm9wZXJ0aWVzIGludG8gdGhlIGV4aXN0aW5nIHN5c3RlbS4KKworICAgICAg
ICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46CisgICAgICAgIEFkZCBhIHByb2R1Y3Rpb24gZm9yIHJl
Y29nbml6aW5nIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCBzdG9yaW5nIHRoZW0gdXNpbmcgYSBwcm9w
ZXJ0eSBJRCBvZiBDU1NQcm9wZXJ0eUN1c3RvbQorICAgICAgICBhbmQgYSBDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlIHRoYXQgaGFzIHRoZSBuYW1lL3ZhbHVlIHBhaXIuCisKKyAgICAgICAgKiBjc3Mv
Q1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbHRlclByb3BlcnRpZXMpOgorICAg
ICAgICBQYXRjaGVkIHRvIHRyYWNrIHNlZW4gY3VzdG9tIHByb3BlcnRpZXMgYW5kIHRvIGhhbmRs
ZSB0aGVtIGNvcnJlY3RseS4KKworICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVT
dHlsZVByb3BlcnRpZXMpOgorICAgICAgICBQYXNzIGluIGEgc2VlbkN1c3RvbVByb3BlcnRpZXMg
dGFibGUgdG8gZW5zdXJlIHdlIGJhaWwgd2hlbiBlbmNvdW50ZXJpbmcgdGhlIHNhbWUgY3VzdG9t
IHByb3BlcnR5IHR3aWNlLgorCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZEN1c3Rv
bVByb3BlcnR5RGVjbGFyYXRpb24pOgorICAgICAgICBDYWxsZWQgZnJvbSB0aGUgZ3JhbW1hciBw
cm9kdWN0aW9uIHRvIGNyZWF0ZSB0aGUgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS4KKworICAgICAg
ICAoV2ViQ29yZTo6aXNDdXN0b21Qcm9wZXJ0eUlkZW50aWZpZXIpOgorICAgICAgICBSZWNvZ25p
emUgdGhlIC0tIGN1c3RvbSBwcm9wZXJ0eSBkdXJpbmcgbGV4aW5nLgorCisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIFBhdGNoZWQgdG8gcmV0
dXJuIGEgQ1VTVE9NX1BST1BFUlRZIHRva2VuIHdoZW4gYSBjdXN0b20gcHJvcGVydHkgaXMgaWRl
bnRpZmllZC4KKworICAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3Jl
Ojppc0N1c3RvbVByb3BlcnR5TmFtZSk6CisgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiBm
b3IgYXNraW5nIGlmIGEgcHJvcGVydHkgbmFtZSBpcyBjdXN0b20uCisKKyAgICAgICAgKiBjc3Mv
Q1NTVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmVxdWFscyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YWx1ZTo6ZGVzdHJveSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAgIFBhdGNo
ZWQgdG8gYWRkIHN1cHBvcnQgZm9yIENTU0N1c3RvbVByb3BlcnR5VmFsdWUuCisKKyAgICAgICAg
KiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFBy
b3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAg
IEFkZCBjb2RlIGZvciBoYW5kbGluZyBjdXN0b20gcHJvcGVydGllcyBpbiB0aGUgQ1NTIE9NLgor
CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVByb3BlcnRpZXM6OmdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0aWVzOjpnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUHJvcGVydGllczo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVByb3BlcnRpZXM6OmdldEN1c3RvbVByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6cmVtb3ZlQ3VzdG9tUHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzOjpwcm9wZXJ0eUlzSW1wb3J0YW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6Y3VzdG9tUHJvcGVydHlJc0lt
cG9ydGFudCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRD
dXN0b21Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
OjphZGRQYXJzZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpmaW5kUHJvcGVydHlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbW11dGFibGVT
dHlsZVByb3BlcnRpZXM6OmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmZpbmRDU1NQcm9wZXJ0eVdp
dGhJRCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpmaW5kQ3Vz
dG9tQ1NTUHJvcGVydHlXaXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRp
ZXM6OnByb3BlcnR5TWF0Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXM6
OlByb3BlcnR5UmVmZXJlbmNlOjpjc3NOYW1lKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0
aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXM6OmZpbmRDdXN0b21Qcm9w
ZXJ0eUluZGV4KToKKyAgICAgICAgUGF0Y2hlZCB0byBzdXBwb3J0IGhhbmRsaW5nIGN1c3RvbSBw
cm9wZXJ0aWVzIGluIHRoZSBDU1MgT00uIFdlIGhhdmUgdG8gY3JlYXRlIGVxdWl2YWxlbnQgbWV0
aG9kcyB0aGF0IG9wZXJhdGUKKyAgICAgICAgb24gQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZXMg
aW5zdGVhZCBvZiBvbiBwcm9wZXJ0eSBJRHMuCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRp
ZXM6OmN1c3RvbVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
c3R5bGVGb3JLZXlmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHls
ZUZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVk
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGll
czo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQ
cm9wZXJ0aWVzKToKKyAgICAgICAgVGhlIHJlc29sdmVyIGhhcyB0byBob2xkIGEgSGFzaE1hcCBm
cm9tIEF0b21pY1N0cmluZ3MgdG8gUHJvcGVydGllcy4gSXQgbWF0Y2hlcyBpZGVudGljYWxseSB0
byBob3cgYnVpbHQtaW4KKyAgICAgICAgcHJvcGVydGllcyB3b3JrIGV4Y2VwdCB0aGF0IGFuIGV4
dGVuc2libGUgdGFibGUgKEhhc2hNYXApIGlzIHVzZWQgdG8gaG9sZCB0aGUgcHJvcGVydHkgZGF0
YS4KKworICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAgICAgICAgUGF0Y2hlZCB0byBpbmNs
dWRlIHRoZSBzcGVjaWFsIENTU1Byb3BlcnR5Q3VzdG9tIHZhbHVlIG9mIDEgKGp1c3QgYWZ0ZXIg
dGhlIENTU1Byb3BlcnR5SW52YWxpZCBpZCB2YWx1ZSBidXQgYmVmb3JlIHRoZSBmaXJzdAorICAg
ICAgICBidWlsdC1pbiBwcm9wZXJ0eSB2YWx1ZSkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6
Z2V0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpsb3dlcmNhc2VQcm9wZXJ0eU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnBvcHVsYXRlQWxsUHJvcGVydGllcyk6Cisg
ICAgICAgIFBhdGNoIGluc3BlY3RvciB0byBub3QgbG93ZXJjYXNlIENTUyBjdXN0b20gcHJvcGVy
dHkgbmFtZXMsIHNpbmNlIHRoZXkgYXJlIGNhc2Utc2Vuc2l0aXZlLgorCisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YTo6c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUN1c3RvbVByb3BlcnR5RGF0YTo6Z2V0Q3VzdG9tUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6aGFzQ3VzdG9tUHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OlN0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJh
cmVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVyaXRlZERh
dGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhl
cml0ZWREYXRhLmg6CisgICAgICAgIFRoZSBmcm9udCBlbmQgc3RvcmFnZSBpbiB0aGUgUmVuZGVy
U3R5bGUgZm9yIGN1c3RvbSBwcm9wZXJ0aWVzLiBGb3Igbm93LCBjdXN0b20gcHJvcGVydGllcyBh
cmUgYWx3YXlzIGluaGVyaXRlZCwgc28gdGhlCisgICAgICAgIGRhdGEgaXMgaW4gU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS4KKwogMjAxNS0wOS0yNCAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rLm9o
QGNvbGxhYm9yYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHR5cG8gZXJyb3JzIGlu
IGEgY29tbWVudCAoInBhc3NlZCIgLT4gIlBhc3NlZCIsICJPdmVyd2lzZSIgLT4gIk90aGVyd2lz
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU0MzUsNiArNTQzNSw4
IEBACiAJCUJDNzcyQzVFMEM0RUIzNDQwMDgzMjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5TWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzJDNUQw
QzRFQjM0NDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnlNYWMubW0gKi87IH07CiAJCUJDNzcy
RTEzMTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc3MkUxMjEzMzE2MjBDMDAx
RUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNzcyRTE2MTMzMTYyQzIwMDFFQzlDRSAvKiBD
U1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNzcyRTE1MTMzMTYyQzIwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29u
dGFpblZhbHVlLmNwcCAqLzsgfTsKKwkJQkM3NzlFMTQxQkIyMTVCQjAwQ0FBOEJGIC8qIENTU0N1
c3RvbVByb3BlcnR5VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNzc5RTEzMUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QkM3NzlFMTcxQkIyMjdDQTAwQ0FBOEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc3OUUxNTFCQjIy
NkEyMDBDQUE4QkYgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQw
ODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM3RjQ0QTcwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzdGQTYy
MDBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjFFMEQxRjBDQkQwMERCMjJBOSAvKiBM
aXZlTm9kZUxpc3QuY3BwICovOyB9OwogCQlCQzdGQTYyMTBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2
ZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzdGQTYxRjBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmggKi87IH07CkBAIC0x
MzA3MCw2ICsxMzA3Miw4IEBACiAJCUJDNzcyQzVEMEM0RUIzNDQwMDgzMjg1RiAvKiBNSU1FVHlw
ZVJlZ2lzdHJ5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE1JTUVUeXBlUmVnaXN0cnlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
NzcyRTEyMTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0xpbmVCb3hDb250YWluVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3NzJFMTUxMzMxNjJDMjAwMUVDOUNFIC8qIENT
U0xpbmVCb3hDb250YWluVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDNzc5RTEzMUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0N1c3RvbVByb3BlcnR5VmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3NzlFMTUxQkIyMjZBMjAwQ0FB
OEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDN0IyQUY4MDQ1MDgyNDEwMEE4MDAwRiAvKiBTY3JvbGxiYXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsYmFyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owog
CQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzdGQTYxRTBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpdmVOb2RlTGlzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTc5MSw2ICsyMTc5NSw3IEBACiAJCQkJ
OTM5M0U2MDIxNTFBOUExODAwMDY2RjA2IC8qIFN0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwICovLAog
CQkJCTkzOTNFNjAzMTUxQTlBMTgwMDA2NkYwNiAvKiBTdHlsZUNhY2hlZEltYWdlU2V0LmggKi8s
CiAJCQkJOURBQzdDNTYxQUYyQ0I2NDAwNDM3QzQ0IC8qIFN0eWxlQ29udGVudEFsaWdubWVudERh
dGEuaCAqLywKKwkJCQlCQzc3OUUxNTFCQjIyNkEyMDBDQUE4QkYgLyogU3R5bGVDdXN0b21Qcm9w
ZXJ0eURhdGEuaCAqLywKIAkJCQlCQzVFQjY3RTBFODFENEE3MDBCMjU5NjUgLyogU3R5bGVEYXNo
Ym9hcmRSZWdpb24uaCAqLywKIAkJCQlCQzVFQjhCNjBFODIwMUJEMDBCMjU5NjUgLyogU3R5bGVE
ZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcCAqLywKIAkJCQlCQzVFQjhCNzBFODIwMUJEMDBC
MjU5NjUgLyogU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmggKi8sCkBAIC0yMjc0OSw2
ICsyMjc1NCw3IEBACiAJCQkJMkQ4RkVCREIxNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFk
ZVZhbHVlLmggKi8sCiAJCQkJQUEwOTc4RUQwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvcklt
YWdlVmFsdWUuY3BwICovLAogCQkJCUFBMDk3OEVFMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1NDdXJz
b3JJbWFnZVZhbHVlLmggKi8sCisJCQkJQkM3NzlFMTMxQkIyMTVCQjAwQ0FBOEJGIC8qIENTU0N1
c3RvbVByb3BlcnR5VmFsdWUuaCAqLywKIAkJCQk0QTlDQzgxNTE2QkI5QUM2MDBFQzY0NUEgLyog
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcCAqLywKIAkJCQk0QTlDQzgxNjE2QkI5QUM2MDBFQzY0
NUEgLyogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmggKi8sCiAJCQkJRkI5NjVCODIxN0JCQjYyQzAw
RTgzNUI5IC8qIENTU0ZpbHRlckltYWdlVmFsdWUuY3BwICovLApAQCAtMjUxMDQsNiArMjUxMTAs
NyBAQAogCQkJCUE4Q0ZGMDRGMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzA3M0JBQTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252
ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QTUyOEU4NDE3RDdGNTJGMDBBQTk1MTggLyog
RmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzc3OUUxNzFCQjIyN0NBMDBD
QUE4QkYgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
Njk5ODcyMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyNzUzNTY5MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMkUyN0NBMDBCMEYyQjA5MDBGMTdDN0IgLyogRmxvYXRQb2lu
dDNELmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDk5LDYgKzI2MTA2LDcgQEAKIAkJCQkxNDFEQzA1
MzE2NDgzNEI5MDAzNzFFNUEgLyogTGF5b3V0UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEy
NTM4RDQxM0Y5QjYwQTAwMDI0NzU0IC8qIExheW91dFJlcGFpbnRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQxREMwNTQxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFNpemUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUJDNzc5RTE0MUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogTGF5
b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MURDMDQ4MTY0ODM0OEYwMDM3MUU1QSAv
KiBMYXlvdXRVbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAzQzJCOTFCQTIzQTI2MDBFMjYz
MzcgLyogTGVnYWN5QW55LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxOTAy
MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU0FzcGVjdFJh
dGlvVmFsdWUuaCIKICNpbmNsdWRlICJDU1NCYXNpY1NoYXBlcy5oIgogI2luY2x1ZGUgIkNTU0Jv
cmRlckltYWdlLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250VmFsdWUuaCIKICNp
bmNsdWRlICJDU1NGdW5jdGlvblZhbHVlLmgiCkBAIC0yMDk1LDYgKzIwOTYsMjAgQEAgaW5saW5l
IHN0YXRpYyBib29sIGlzRmxleE9yR3JpZChDb250YWluZQogICAgIHJldHVybiBlbGVtZW50ICYm
IGVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKSAmJiBlbGVtZW50LT5jb21wdXRlZFN0eWxlKCktPmlz
RGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KCk7CiB9CiAKK1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSkgY29uc3QKK3sKKyAgICBOb2RlKiBzdHlsZWROb2RlID0gdGhpcy0+c3R5bGVkTm9k
ZSgpOworICAgIGlmICghc3R5bGVkTm9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gY29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVy
dHkoc3R5bGVkTm9kZSwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyLCBDU1NQcm9wZXJ0eUN1c3Rv
bSk7CisgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmhhc0N1c3RvbVByb3BlcnR5KHByb3BlcnR5
TmFtZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5nIHJlc3VsdCA9IHN0
eWxlLT5nZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIENT
U0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZShwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7Cit9CisK
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBjb25z
dAogewogICAgIE5vZGUqIHN0eWxlZE5vZGUgPSB0aGlzLT5zdHlsZWROb2RlKCk7CkBAIC0zNTUz
LDYgKzM1NjgsOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXcml0aW5nTW9kZToKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFN2Z1NoYWRvdzoKICAgICAgICAgICAgIHJldHVybiBzdmdQcm9wZXJ0eVZhbHVl
KHByb3BlcnR5SUQsIERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUN1c3RvbToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgbG9nVW5pbXBsZW1lbnRlZFByb3BlcnR5SUQo
cHJvcGVydHlJRCk7CkBAIC0zNTc3LDE1ICszNTk1LDM1IEBAIHVuc2lnbmVkIENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6bGUKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHJldHVybiBudW1Db21wdXRlZFByb3BlcnRpZXM7CisgICAgY29uc3QgSGFzaE1hcDxB
dG9taWNTdHJpbmcsIFN0cmluZz4qIGN1c3RvbVByb3BlcnRpZXMgPSBzdHlsZS0+Y3VzdG9tUHJv
cGVydGllcygpOworICAgIHJldHVybiBudW1Db21wdXRlZFByb3BlcnRpZXMgKyAoY3VzdG9tUHJv
cGVydGllcyA/IGN1c3RvbVByb3BlcnRpZXMtPnNpemUoKSA6IDApOwogfQogCiBTdHJpbmcgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtKHVuc2lnbmVkIGkpIGNvbnN0CiB7CiAgICAg
aWYgKGkgPj0gbGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIAor
ICAgIGlmIChpIDwgbnVtQ29tcHV0ZWRQcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm4gZ2V0UHJv
cGVydHlOYW1lU3RyaW5nKGNvbXB1dGVkUHJvcGVydGllc1tpXSk7CisgICAgCisgICAgTm9kZSog
bm9kZSA9IG1fbm9kZS5nZXQoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCi0gICAgcmV0dXJuIGdldFByb3BlcnR5TmFtZVN0cmluZyhjb21wdXRlZFBy
b3BlcnRpZXNbaV0pOworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG5vZGUtPmNvbXB1dGVkU3R5
bGUobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKKyAgICBpZiAoIXN0eWxlKQorICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBpbmRleCA9IGkgLSBudW1D
b21wdXRlZFByb3BlcnRpZXM7CisgICAgCisgICAgY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcs
IFN0cmluZz4qIGN1c3RvbVByb3BlcnRpZXMgPSBzdHlsZS0+Y3VzdG9tUHJvcGVydGllcygpOwor
ICAgIGlmICghY3VzdG9tUHJvcGVydGllcyB8fCBpbmRleCA+PSBjdXN0b21Qcm9wZXJ0aWVzLT5z
aXplKCkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIAorICAgIFZlY3RvcjxT
dHJpbmcsIDQ+IHJlc3VsdHM7CisgICAgY29weUtleXNUb1ZlY3RvcigqY3VzdG9tUHJvcGVydGll
cywgcmVzdWx0cyk7CisgICAgcmV0dXJuIHJlc3VsdHMuYXQoaW5kZXgpOwogfQogCiBib29sIENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5TWF0Y2hlcyhDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQsIGNvbnN0IENTU1ZhbHVlKiB2YWx1ZSkgY29uc3QKQEAgLTM2NjYsNiArMzcwNCwyMiBA
QCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsCiAgICAgICAgIGlmICh2
YWx1ZSkKICAgICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUu
cmVsZWFzZSgpLCBmYWxzZSkpOwogICAgIH0KKyAgICAKKyAgICBOb2RlKiBzdHlsZWROb2RlID0g
dGhpcy0+c3R5bGVkTm9kZSgpOworICAgIGlmIChzdHlsZWROb2RlKSB7CisgICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eShzdHls
ZWROb2RlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIsIENTU1Byb3BlcnR5Q3VzdG9tKTsKKyAg
ICAgICAgaWYgKHN0eWxlKSB7CisgICAgICAgICAgICBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgU3RyaW5nPiogY3VzdG9tUHJvcGVydGllcyA9IHN0eWxlLT5jdXN0b21Qcm9wZXJ0aWVzKCk7
CisgICAgICAgICAgICBpZiAoY3VzdG9tUHJvcGVydGllcykgeworICAgICAgICAgICAgICAgIEhh
c2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjdXN0b21Q
cm9wZXJ0aWVzLT5lbmQoKTsKKyAgICAgICAgICAgICAgICBmb3IgKEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGN1c3RvbVByb3BlcnRpZXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZT4gdmFsdWUgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUo
aXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlDdXN0b20sIHZhbHVlLnJlbGVhc2UoKSwgZmFsc2UpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCiAg
ICAgcmV0dXJuIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlz
dC5zaXplKCkpOwogfQogCkBAIC0zNjc2LDYgKzM3MzAsMTEgQEAgQ1NTUnVsZSogQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpwYQogCiBSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSkKIHsKKyAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgewor
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvciht
X25vZGUsIG1fYWxsb3dWaXNpdGVkU3R5bGUsIG1fcHNldWRvRWxlbWVudFNwZWNpZmllcikuY3Vz
dG9tUHJvcGVydHlWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gdmFsdWUgPyB2
YWx1ZS0+Y2xvbmVGb3JDU1NPTSgpIDogbnVsbHB0cjsKKyAgICB9CisKICAgICBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFw
cm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM2ODUsNiArMzc0NCwxMyBA
QCBSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhCiAKIFN0cmluZyBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nICZw
cm9wZXJ0eU5hbWUpCiB7CisgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3BlcnR5TmFt
ZSkpIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3IobV9ub2RlLCBtX2FsbG93VmlzaXRlZFN0eWxlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZp
ZXIpLmN1c3RvbVByb3BlcnR5VmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICAgICAgaWYgKCF2YWx1
ZSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlLT5j
c3NUZXh0KCk7CisgICAgfQorCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJv
cGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2
ICs1MCw3IEBAIHB1YmxpYzoKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKFBhc3NSZWZQdHI8
Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBOT1BTRVVE
Tyk7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwg
RVVwZGF0ZUxheW91dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7CisgICAgUmVmUHRyPENTU1ZhbHVl
PiBjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBjb25zdDsK
IAogICAgIC8vIEhlbHBlciBtZXRob2RzIGZvciBIVE1MIGVkaXRpbmcuCiAgICAgUmVmPE11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJ
RCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlX2gKKyNkZWZpbmUgQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZV9oCisKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgdmFsdWUpKTsK
KyAgICB9CisgICAgCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZSA9PSBvdGhlci5tX25hbWUgJiYgbV92YWx1
ZSA9PSBvdGhlci5tX3ZhbHVlOyB9CisKKyAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0
IHsgcmV0dXJuIHZhbHVlKCk7IH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIGNvbnN0IFN0cmluZyYgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CisgICAgCitwcml2YXRlOgorICAgIENTU0N1c3RvbVByb3BlcnR5
VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorICAg
ICAgICA6IENTU1ZhbHVlKEN1c3RvbVByb3BlcnR5Q2xhc3MpCisgICAgICAgICwgbV9uYW1lKG5h
bWUpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3Qg
QXRvbWljU3RyaW5nIG1fbmFtZTsKKyAgICBjb25zdCBTdHJpbmcgbV92YWx1ZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUo
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSwgaXNDdXN0b21Qcm9wZXJ0eVZhbHVlKCkpCisKKyNlbmRp
ZiAvLyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueS5pbgkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueS5pbgkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNDU1NUb2tlbkFTdHJpbmcoaW50CiAgICAgY2FzZSBESVJGVU5DVElPTjoKICAgICBjYXNl
IFJPTEVGVU5DVElPTjoKICNlbmRpZgorICAgIGNhc2UgQ1VTVE9NX1BST1BFUlRZOgogICAgIGNh
c2UgVU5JQ09ERVJBTkdFOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgpAQCAt
MjQ0LDYgKzI0NSw4IEBAIHN0YXRpYyBib29sIHNlbGVjdG9yTGlzdERvZXNOb3RNYXRjaEFueVAK
ICV0b2tlbiA8c3RyaW5nPiBST0xFRlVOQ1RJT04KICNlbmRpZgogCisldG9rZW4gPHN0cmluZz4g
Q1VTVE9NX1BST1BFUlRZCisKICV0b2tlbiA8c3RyaW5nPiBVTklDT0RFUkFOR0UKIAogJXR5cGUg
PHJlbGF0aW9uPiBjb21iaW5hdG9yCkBAIC0xNTM1LDcgKzE1MzgsMTMgQEAgZGVjbF9saXN0X3Jl
Y292ZXJ5OgogICAgIDsKIAogZGVjbGFyYXRpb246Ci0gICAgcHJvcGVydHkgJzonIG1heWJlX3Nw
YWNlIGV4cHIgcHJpb3JpdHkgeworICAgIENVU1RPTV9QUk9QRVJUWSBtYXliZV9zcGFjZSAnOicg
bWF5YmVfc3BhY2UgZXhwciBwcmlvcml0eSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQ
YXJzZXJWYWx1ZUxpc3Q+IHByb3BlcnR5VmFsdWUoJDUpOworICAgICAgICBwYXJzZXItPmFkZEN1
c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oJDEsIHByb3BlcnR5VmFsdWUuZ2V0KCksICQ2KTsKKyAg
ICAgICAgJCQgPSB0cnVlOworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZCgkNiwgdHJ1
ZSk7CisgICAgfQorICAgIHwgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpb3JpdHkg
ewogICAgICAgICAkJCA9IGZhbHNlOwogICAgICAgICBib29sIGlzUHJvcGVydHlQYXJzZWQgPSBm
YWxzZTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclZhbHVlTGlzdD4gcHJvcGVy
dHlWYWx1ZSgkNCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMTkw
MjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJDU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWUu
aCIKICNpbmNsdWRlICJDU1NDcm9zc2ZhZGVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvcklt
YWdlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVk
ZSAiQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlUnVsZS5oIgog
I2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKQEAgLTE1NzUsMTMgKzE1NzYsMjMgQEAg
Q1NTUGFyc2VyOjpTb3VyY2VTaXplIENTU1BhcnNlcjo6c291cmNlUwogICAgIHJldHVybiBTb3Vy
Y2VTaXplKFdURjo6bW92ZShleHByZXNzaW9uKSwgV1RGOjptb3ZlKHZhbHVlKSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJvb2wgaW1wb3J0YW50LCBjb25zdCBD
U1NQYXJzZXI6OlBhcnNlZFByb3BlcnR5VmVjdG9yJiBpbnB1dCwgVmVjdG9yPENTU1Byb3BlcnR5
LCAyNTY+JiBvdXRwdXQsIHNpemVfdCYgdW51c2VkRW50cmllcywgc3RkOjpiaXRzZXQ8bnVtQ1NT
UHJvcGVydGllcz4mIHNlZW5Qcm9wZXJ0aWVzKQorc3RhdGljIGlubGluZSB2b2lkIGZpbHRlclBy
b3BlcnRpZXMoYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlcjo6UGFyc2VkUHJvcGVydHlW
ZWN0b3ImIGlucHV0LCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4mIG91dHB1dCwgc2l6ZV90JiB1
bnVzZWRFbnRyaWVzLCBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzPiYgc2VlblByb3BlcnRp
ZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlbkN1c3RvbVByb3BlcnRpZXMpCiB7CiAgICAg
Ly8gQWRkIHByb3BlcnRpZXMgaW4gcmV2ZXJzZSBvcmRlciBzbyB0aGF0IGhpZ2hlc3QgcHJpb3Jp
dHkgZGVmaW5pdGlvbnMgYXJlIHJlYWNoZWQgZmlyc3QuIER1cGxpY2F0ZSBkZWZpbml0aW9ucyBj
YW4gdGhlbiBiZSBpZ25vcmVkIHdoZW4gZm91bmQuCiAgICAgZm9yIChpbnQgaSA9IGlucHV0LnNp
emUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5JiBwcm9w
ZXJ0eSA9IGlucHV0W2ldOwogICAgICAgICBpZiAocHJvcGVydHkuaXNJbXBvcnRhbnQoKSAhPSBp
bXBvcnRhbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChw
cm9wZXJ0eS5pZCgpID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7CisgICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqcHJv
cGVydHkudmFsdWUoKSkubmFtZSgpOworICAgICAgICAgICAgaWYgKHNlZW5DdXN0b21Qcm9wZXJ0
aWVzLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgc2VlbkN1c3RvbVByb3BlcnRpZXMuYWRkKG5hbWUpOworICAgICAgICAgICAgb3V0cHV0Wy0t
dW51c2VkRW50cmllc10gPSBwcm9wZXJ0eTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKICAgICAgICAgY29uc3QgdW5zaWduZWQgcHJvcGVydHlJREluZGV4ID0gcHJvcGVydHku
aWQoKSAtIGZpcnN0Q1NTUHJvcGVydHk7CiAgICAgICAgIEFTU0VSVChwcm9wZXJ0eUlESW5kZXgg
PCBzZWVuUHJvcGVydGllcy5zaXplKCkpOwogICAgICAgICBpZiAoc2VlblByb3BlcnRpZXNbcHJv
cGVydHlJREluZGV4XSkKQEAgLTE1OTgsOCArMTYwOSw5IEBAIFJlZjxJbW11dGFibGVTdHlsZVBy
b3BlcnRpZXM+IENTU1BhcnNlcjoKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gcmVzdWx0
cyh1bnVzZWRFbnRyaWVzKTsKIAogICAgIC8vIEltcG9ydGFudCBwcm9wZXJ0aWVzIGhhdmUgaGln
aGVyIHByaW9yaXR5LCBzbyBhZGQgdGhlbSBmaXJzdC4gRHVwbGljYXRlIGRlZmluaXRpb25zIGNh
biB0aGVuIGJlIGlnbm9yZWQgd2hlbiBmb3VuZC4KLSAgICBmaWx0ZXJQcm9wZXJ0aWVzKHRydWUs
IG1fcGFyc2VkUHJvcGVydGllcywgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRp
ZXMpOwotICAgIGZpbHRlclByb3BlcnRpZXMoZmFsc2UsIG1fcGFyc2VkUHJvcGVydGllcywgcmVz
dWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRpZXMpOworICAgIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPiBzZWVuQ3VzdG9tUHJvcGVydGllczsKKyAgICBmaWx0ZXJQcm9wZXJ0aWVzKHRydWUs
IG1fcGFyc2VkUHJvcGVydGllcywgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRp
ZXMsIHNlZW5DdXN0b21Qcm9wZXJ0aWVzKTsKKyAgICBmaWx0ZXJQcm9wZXJ0aWVzKGZhbHNlLCBt
X3BhcnNlZFByb3BlcnRpZXMsIHJlc3VsdHMsIHVudXNlZEVudHJpZXMsIHNlZW5Qcm9wZXJ0aWVz
LCBzZWVuQ3VzdG9tUHJvcGVydGllcyk7CiAgICAgaWYgKHVudXNlZEVudHJpZXMpCiAgICAgICAg
IHJlc3VsdHMucmVtb3ZlKDAsIHVudXNlZEVudHJpZXMpOwogCkBAIC00MTI0LDcgKzQxMzYsMjkg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQWx0KENTU1Byb3BlcnR5SUQgcAogCiAgICAgcmV0dXJu
IGZhbHNlOwogfQotICAgIAorCit2b2lkIENTU1BhcnNlcjo6YWRkQ3VzdG9tUHJvcGVydHlEZWNs
YXJhdGlvbihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIG5hbWUsIENTU1BhcnNlclZhbHVlTGlzdCog
dmFsdWUsIGJvb2wgaW1wb3J0YW50KQoreworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFRoZSBjdXN0b20gcHJvcGVydHkgY29tZXMgaW4gYXMgYSBwYXJzZWQgc2V0
IG9mIENTU1BhcnNlclZhbHVlcyBjb2xsZWN0ZWQgaW50byBhIGxpc3QuCisgICAgLy8gRm9yIENT
UyB2YXJpYWJsZXMsIHdlIGp1c3Qgd2FudCB0byB0cmVhdCB0aGUgZW50aXJlIHNldCBvZiB2YWx1
ZXMgYXMgYSBzdHJpbmcsIHNvIHdoYXQgd2UgZG8KKyAgICAvLyBpcyBidWlsZCB1cCBhIHNldCBv
ZiBDU1NWYWx1ZXMgYW5kIHNlcmlhbGl6ZSB0aGVtIHVzaW5nIGNzc1RleHQsIHNlcGFyYXRpbmcg
bXVsdGlwbGUgdmFsdWVzCisgICAgLy8gd2l0aCBzcGFjZXMuCisgICAgQXRvbWljU3RyaW5nIHBy
b3BlcnR5TmFtZSA9IG5hbWU7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZS0+c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKGkp
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBSZWZQdHI8Q1NTVmFs
dWU+IGNzc1ZhbHVlID0gdmFsdWUtPnZhbHVlQXQoaSktPmNyZWF0ZUNTU1ZhbHVlKCk7CisgICAg
ICAgIGlmICghY3NzVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGNzc1ZhbHVlLT5jc3NUZXh0KCkpOworICAgIH0KKyAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUN1c3RvbSwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKHByb3BlcnR5TmFt
ZSwgYnVpbGRlci50b1N0cmluZygpLmxvd2VyKCkpLCBpbXBvcnRhbnQsIGZhbHNlKTsKK30KKwog
Ly8gWyA8c3RyaW5nPiB8IDx1cmk+IHwgPGNvdW50ZXI+IHwgYXR0cihYKSB8IG9wZW4tcXVvdGUg
fCBjbG9zZS1xdW90ZSB8IG5vLW9wZW4tcXVvdGUgfCBuby1jbG9zZS1xdW90ZSBdKyB8IGluaGVy
aXQKIC8vIGluIENTUyAyLjEgdGhpcyBnb3Qgc29tZXdoYXQgcmVkdWNlZDoKIC8vIFsgPHN0cmlu
Zz4gfCBhdHRyKFgpIHwgb3Blbi1xdW90ZSB8IGNsb3NlLXF1b3RlIHwgbm8tb3Blbi1xdW90ZSB8
IG5vLWNsb3NlLXF1b3RlIF0rIHwgaW5oZXJpdApAQCAtMTA4ODcsNiArMTA5MjEsMTMgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzSWRlbnRpZmllclN0YXJ0QWZ0ZQogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0N1c3RvbVByb3BlcnR5
SWRlbnRpZmllcihDaGFyYWN0ZXJUeXBlKiBjdXJyZW50Q2hhcmFjdGVyKQoreworICAgIHJldHVy
biBpc0FTQ0lJQWxwaGEoY3VycmVudENoYXJhY3RlclswXSkgfHwgY3VycmVudENoYXJhY3Rlclsw
XSA9PSAnXycgfHwgY3VycmVudENoYXJhY3RlclswXSA+PSAxMjgKKyAgICAgICAgfHwgKGN1cnJl
bnRDaGFyYWN0ZXJbMF0gPT0gJ1xcJyAmJiBpc0NTU0VzY2FwZShjdXJyZW50Q2hhcmFjdGVyWzFd
KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIGlubGlu
ZSBib29sIGlzRXF1YWxUb0NTU0lkZW50aWZpZXIoQ2hhcmFjdGVyVHlwZSogY3NzU3RyaW5nLCBj
b25zdCBjaGFyKiBjb25zdGFudFN0cmluZykKIHsKICAgICAvLyBDb21wYXJlIGFuIGNoYXJhY3Rl
ciBtZW1vcnkgZGF0YSB3aXRoIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZy4KQEAgLTExMTI1LDEw
ICsxMTE2Niw2IEBAIGlubGluZSBib29sIENTU1BhcnNlcjo6cGFyc2VJZGVudGlmaWVySW4KIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjpw
YXJzZUlkZW50aWZpZXIoQ2hhcmFjdGVyVHlwZSomIHJlc3VsdCwgQ1NTUGFyc2VyU3RyaW5nJiBy
ZXN1bHRTdHJpbmcsIGJvb2wmIGhhc0VzY2FwZSkKIHsKLSAgICAvLyBJZiBhIHZhbGlkIGlkZW50
aWZpZXIgc3RhcnQgaXMgZm91bmQsIHdlIGNhbiBzYWZlbHkKLSAgICAvLyBwYXJzZSB0aGUgaWRl
bnRpZmllciB1bnRpbCB0aGUgbmV4dCBpbnZhbGlkIGNoYXJhY3Rlci4KLSAgICBBU1NFUlQoaXNJ
ZGVudGlmaWVyU3RhcnQ8Q2hhcmFjdGVyVHlwZT4oKSk7Ci0KICAgICBDaGFyYWN0ZXJUeXBlKiBz
dGFydCA9IGN1cnJlbnRDaGFyYWN0ZXI8Q2hhcmFjdGVyVHlwZT4oKTsKICAgICBpZiAoVU5MSUtF
TFkoIXBhcnNlSWRlbnRpZmllckludGVybmFsKGN1cnJlbnRDaGFyYWN0ZXI8Q2hhcmFjdGVyVHlw
ZT4oKSwgcmVzdWx0LCBoYXNFc2NhcGUpKSkgewogICAgICAgICAvLyBGb3VuZCBhbiBlc2NhcGUg
d2UgY291bGRuJ3QgaGFuZGxlIHdpdGggOCBiaXRzLCBjb3B5IHdoYXQgaGFzIGJlZW4gcmVjb2du
aXplZCBhbmQgY29udGludWUKQEAgLTEyMDY4LDYgKzEyMTA1LDExIEBAIHJlc3RhcnRBZnRlckNv
bW1lbnQ6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHRTdHJpbmcuc2V0TGVuZ3Ro
KHJlc3VsdCAtIHRva2VuU3RhcnQ8U3JjQ2hhcmFjdGVyVHlwZT4oKSk7CiAgICAgICAgICAgICB5
eWx2YWwtPnN0cmluZyA9IHJlc3VsdFN0cmluZzsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50
Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KClbMF0gPT0gJy0nICYmIGlzSWRlbnRpZmllclN0
YXJ0QWZ0ZXJEYXNoKGN1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKSArIDEpKSB7
CisgICAgICAgICAgICAtLWN1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKTsKKyAg
ICAgICAgICAgIHBhcnNlSWRlbnRpZmllcihyZXN1bHQsIHJlc3VsdFN0cmluZywgaGFzRXNjYXBl
KTsKKyAgICAgICAgICAgIG1fdG9rZW4gPSBDVVNUT01fUFJPUEVSVFk7CisgICAgICAgICAgICB5
eWx2YWwtPnN0cmluZyA9IHJlc3VsdFN0cmluZzsKICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50
Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KClbMF0gPT0gJy0nICYmIGN1cnJlbnRDaGFyYWN0
ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKVsxXSA9PSAnPicpIHsKICAgICAgICAgICAgIGN1cnJlbnRD
aGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKSArPSAyOwogICAgICAgICAgICAgbV90b2tlbiA9
IFNHTUxfQ0Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCShyZXZpc2lvbiAxOTAyMDYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2
ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBwYXJzZVF1b3RlcyhDU1NQcm9wZXJ0eUlELCBi
b29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUFsdChDU1NQcm9wZXJ0eUlELCBib29sIGlt
cG9ydGFudCk7CiAgICAgCisgICAgdm9pZCBhZGRDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKGNv
bnN0IENTU1BhcnNlclN0cmluZyYsIENTU1BhcnNlclZhbHVlTGlzdCosIGJvb2wgaW1wb3J0YW50
KTsKKyAgICAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQXR0cihDU1NQYXJzZXJWYWx1ZUxp
c3QmIGFyZ3MpOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUJhY2tncm91bmRDb2xvcigp
OwpAQCAtNzU1LDYgKzc1NywxMSBAQCBpbmxpbmUgVUNoYXIgQ1NTUGFyc2VyOjp0b2tlblN0YXJ0
Q2hhcigpCiAgICAgcmV0dXJuICptX3Rva2VuU3RhcnQucHRyMTY7CiB9CiAKK2lubGluZSBib29s
IGlzQ3VzdG9tUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQoreworICAg
IHJldHVybiBwcm9wZXJ0eU5hbWUubGVuZ3RoKCkgPiAyICYmIHByb3BlcnR5TmFtZS5jaGFyYWN0
ZXJBdCgwKSA9PSAnLScgJiYgcHJvcGVydHlOYW1lLmNoYXJhY3RlckF0KDEpID09ICctJzsKK30K
KwogaW5saW5lIGludCBjc3N5eWxleCh2b2lkKiB5eWx2YWwsIENTU1BhcnNlciogcGFyc2VyKQog
ewogICAgIHJldHVybiBwYXJzZXItPmxleCh5eWx2YWwpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NTQ29udGVu
dERpc3RyaWJ1dGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Jvc3NmYWRlVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZpbHRlckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJD
U1NGb250RmFjZVNyY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgpA
QCAtMjM2LDYgKzIzNyw5IEBAIGJvb2wgQ1NTVmFsdWU6OmVxdWFscyhjb25zdCBDU1NWYWx1ZSYg
b3QKICNlbmRpZgogICAgICAgICBjYXNlIENTU0NvbnRlbnREaXN0cmlidXRpb25DbGFzczoKICAg
ICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0NvbnRlbnREaXN0cmlidXRpb25W
YWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBDdXN0b21Qcm9wZXJ0eUNsYXNzOgor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMz
MCw3ICszMzQsMTAgQEAgU3RyaW5nIENTU1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICNlbmRpZgog
ICAgIGNhc2UgQ1NTQ29udGVudERpc3RyaWJ1dGlvbkNsYXNzOgogICAgICAgICByZXR1cm4gZG93
bmNhc3Q8Q1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgp
OworICAgIGNhc2UgQ3VzdG9tUHJvcGVydHlDbGFzczoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAgICAgfQor
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpAQCAt
NDUzLDYgKzQ2MCw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAgIGNhc2UgQ1NTQ29u
dGVudERpc3RyaWJ1dGlvbkNsYXNzOgogICAgICAgICBkZWxldGUgZG93bmNhc3Q8Q1NTQ29udGVu
dERpc3RyaWJ1dGlvblZhbHVlPih0aGlzKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3Vz
dG9tUHJvcGVydHlDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+KHRoaXMpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgJKHJldmlzaW9uIDE5MDIwNikK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2
ICs3Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2FudmFzVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2NsYXNzVHlwZSA9PSBDYW52YXNDbGFzczsgfQogICAgIGJvb2wgaXNDcm9zc2ZhZGVWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IENyb3NzZmFkZUNsYXNzOyB9CiAgICAg
Ym9vbCBpc0N1cnNvckltYWdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBD
dXJzb3JJbWFnZUNsYXNzOyB9CisgICAgYm9vbCBpc0N1c3RvbVByb3BlcnR5VmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDdXN0b21Qcm9wZXJ0eUNsYXNzOyB9CiAgICAgYm9v
bCBpc0Z1bmN0aW9uVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBGdW5jdGlv
bkNsYXNzOyB9CiAgICAgYm9vbCBpc0ZvbnRGZWF0dXJlVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2NsYXNzVHlwZSA9PSBGb250RmVhdHVyZUNsYXNzOyB9CiAgICAgYm9vbCBpc0ZvbnRGYWNlU3Jj
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBGb250RmFjZVNyY0NsYXNzOyB9
CkBAIC0xNzYsNyArMTc3LDggQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICAgICAgICAgQ1NTQ29u
dGVudERpc3RyaWJ1dGlvbkNsYXNzLAotCisgICAgICAgIEN1c3RvbVByb3BlcnR5Q2xhc3MsCisg
ICAgICAgIAogICAgICAgICAvLyBMaXN0IGNsYXNzIHR5cGVzIG11c3QgYXBwZWFyIGFmdGVyIFZh
bHVlTGlzdENsYXNzLgogICAgICAgICBWYWx1ZUxpc3RDbGFzcywKICNpZiBFTkFCTEUoQ1NTX0lN
QUdFX1NFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogCisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hl
ZXQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTE2Miw2ICsxNjMsMTMgQEAgdm9pZCBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAogCiBSZWZQdHI8Q1NTVmFsdWU+IFBy
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKKyAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eU5hbWUocHJv
cGVydHlOYW1lKSkgeworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gbV9wcm9wZXJ0
eVNldC0+Z2V0Q3VzdG9tUHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBj
bG9uZUFuZENhY2hlRm9yQ1NTT00odmFsdWUuZ2V0KCkpOworICAgIH0KKyAgICAKICAgICBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAg
aWYgKCFwcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3MCw2ICsxNzgs
OSBAQCBSZWZQdHI8Q1NTVmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsCiAKIFN0cmluZyBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUpCiB7CisgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3Bl
cnR5TmFtZSkpCisgICAgICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LT5nZXRDdXN0b21Qcm9wZXJ0
eVZhbHVlKHByb3BlcnR5TmFtZSk7CisKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBj
c3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUlEKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xNzgsNiArMTg5LDkgQEAgU3RyaW5nIFByb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6ZwogCiBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQog
eworICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKQorICAgICAgICBy
ZXR1cm4gbV9wcm9wZXJ0eVNldC0+Y3VzdG9tUHJvcGVydHlJc0ltcG9ydGFudChwcm9wZXJ0eU5h
bWUpID8gImltcG9ydGFudCIgOiAiIjsKKwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9
IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SUQpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTIwMyw3ICsyMTcsMTAgQEAgYm9vbCBQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb246OmlzUAogdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb246OnNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHByaW9yaXR5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKKyAg
ICAKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5
TmFtZSk7CisgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpCisgICAg
ICAgIHByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUN1c3RvbTsKICAgICBpZiAoIXByb3BlcnR5SUQp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMjEzLDcgKzIzMCw3IEBAIHZvaWQgUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uOjpzZXQKICAgICBib29sIGltcG9ydGFudCA9IHByaW9yaXR5LmZp
bmQoImltcG9ydGFudCIsIDAsIGZhbHNlKSAhPSBub3RGb3VuZDsKIAogICAgIGVjID0gMDsKLSAg
ICBib29sIGNoYW5nZWQgPSBtX3Byb3BlcnR5U2V0LT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2
YWx1ZSwgaW1wb3J0YW50LCBjb250ZXh0U3R5bGVTaGVldCgpKTsKKyAgICBib29sIGNoYW5nZWQg
PSBwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5Q3VzdG9tID8gbV9wcm9wZXJ0eVNldC0+c2V0UHJv
cGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQoKSkg
OiBtX3Byb3BlcnR5U2V0LT5zZXRDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHZhbHVlLCBp
bXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KCkpOwogCiAgICAgZGlkTXV0YXRlKGNoYW5nZWQg
PyBQcm9wZXJ0eUNoYW5nZWQgOiBOb0NoYW5nZXMpOwogCkBAIC0yMjgsNiArMjQ1LDggQEAgU3Ry
aW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cgogewogICAgIFN0eWxlQXR0cmli
dXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKKyAgICBpZiAoaXNDdXN0
b21Qcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcHJvcGVydHlJRCA9IENTU1By
b3BlcnR5Q3VzdG9tOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCkBAIC0yMzYsNyArMjU1LDcgQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6cgogCiAgICAgZWMgPSAwOwogICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgYm9vbCBj
aGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+cmVtb3ZlUHJvcGVydHkocHJvcGVydHlJRCwgJnJlc3Vs
dCk7CisgICAgYm9vbCBjaGFuZ2VkID0gcHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUN1c3RvbSA/
IG1fcHJvcGVydHlTZXQtPnJlbW92ZVByb3BlcnR5KHByb3BlcnR5SUQsICZyZXN1bHQpIDogbV9w
cm9wZXJ0eVNldC0+cmVtb3ZlQ3VzdG9tUHJvcGVydHkocHJvcGVydHlOYW1lLCAmcmVzdWx0KTsK
IAogICAgIGRpZE11dGF0ZShjaGFuZ2VkID8gUHJvcGVydHlDaGFuZ2VkIDogTm9DaGFuZ2VzKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDE5
MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAK
ICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgpAQCAtMjIwLDYg
KzIyMSwxNCBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eVZhbHVlCiAgICAg
fQogfQogCitTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBjb25zdAoreworICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWUgPSBnZXRDdXN0b21Qcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5TmFtZSk7CisgICAgaWYg
KHZhbHVlKQorICAgICAgICByZXR1cm4gdmFsdWUtPmNzc1RleHQoKTsKKyAgICByZXR1cm4gU3Ry
aW5nKCk7Cit9CisKIFN0cmluZyBTdHlsZVByb3BlcnRpZXM6OmJvcmRlclNwYWNpbmdWYWx1ZShj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpIGNvbnN0CiB7CiAgICAgUmVm
UHRyPENTU1ZhbHVlPiBob3Jpem9udGFsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbMF0pOwpAQCAtNTg3LDYgKzU5NiwxNCBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBTdHlsZVByb3BlcnRpZXM6OmdlCiAgICAgcmV0dXJuIHByb3BlcnR5QXQoZm91bmRQ
cm9wZXJ0eUluZGV4KS52YWx1ZSgpOwogfQogCitQYXNzUmVmUHRyPENTU1ZhbHVlPiBTdHlsZVBy
b3BlcnRpZXM6OmdldEN1c3RvbVByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0Cit7CisgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZpbmRDdXN0b21Q
cm9wZXJ0eUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgaWYgKGZvdW5kUHJvcGVydHlJbmRleCA9
PSAtMSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb3BlcnR5QXQoZm91
bmRQcm9wZXJ0eUluZGV4KS52YWx1ZSgpOworfQorCiBib29sIE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OnJlbW92ZVNob3J0aGFuZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsK
ICAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3Bl
cnR5KHByb3BlcnR5SUQpOwpAQCAtNjMxLDYgKzY0OCwyNSBAQCBib29sIE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OnJlbW92ZVByb3BlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6cmVtb3ZlQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUsIFN0cmluZyogcmV0dXJuVGV4dCkKK3sKKyAgICBpbnQgZm91bmRQcm9wZXJ0eUlu
ZGV4ID0gZmluZEN1c3RvbVByb3BlcnR5SW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBpZiAoZm91
bmRQcm9wZXJ0eUluZGV4ID09IC0xKSB7CisgICAgICAgIGlmIChyZXR1cm5UZXh0KQorICAgICAg
ICAgICAgKnJldHVyblRleHQgPSAiIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmIChyZXR1cm5UZXh0KQorICAgICAgICAqcmV0dXJuVGV4dCA9IHByb3BlcnR5QXQoZm91
bmRQcm9wZXJ0eUluZGV4KS52YWx1ZSgpLT5jc3NUZXh0KCk7CisKKyAgICAvLyBBIG1vcmUgZWZm
aWNpZW50IHJlbW92YWwgc3RyYXRlZ3kgd291bGQgaW52b2x2ZSBtYXJraW5nIGVudHJpZXMgYXMg
ZW1wdHkKKyAgICAvLyBhbmQgc3dlZXBpbmcgdGhlbSB3aGVuIHRoZSB2ZWN0b3IgZ3Jvd3MgdG9v
IGJpZy4KKyAgICBtX3Byb3BlcnR5VmVjdG9yLnJlbW92ZShmb3VuZFByb3BlcnR5SW5kZXgpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6cmVt
b3ZlUHJlZml4ZWRPclVucHJlZml4ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQp
CiB7CiAgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZpbmRQcm9wZXJ0eUluZGV4KHByZWZp
eGluZ1ZhcmlhbnRGb3JQcm9wZXJ0eUlkKHByb3BlcnR5SUQpKTsKQEAgLTY1Niw2ICs2OTIsMTQg
QEAgYm9vbCBTdHlsZVByb3BlcnRpZXM6OnByb3BlcnR5SXNJbXBvcnRhbgogICAgIHJldHVybiB0
cnVlOwogfQogCitib29sIFN0eWxlUHJvcGVydGllczo6Y3VzdG9tUHJvcGVydHlJc0ltcG9ydGFu
dChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBpbnQgZm91bmRQcm9w
ZXJ0eUluZGV4ID0gZmluZEN1c3RvbVByb3BlcnR5SW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBp
ZiAoZm91bmRQcm9wZXJ0eUluZGV4ICE9IC0xKQorICAgICAgICByZXR1cm4gcHJvcGVydHlBdChm
b3VuZFByb3BlcnR5SW5kZXgpLmlzSW1wb3J0YW50KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiBTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQpIGNvbnN0CiB7CiAgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZp
bmRQcm9wZXJ0eUluZGV4KHByb3BlcnR5SUQpOwpAQCAtNjg0LDYgKzcyOCwyMSBAQCBib29sIE11
dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5CiAgICAgcmV0dXJuIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZSh0aGlzLCBwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJzZXJN
b2RlKCksIGNvbnRleHRTdHlsZVNoZWV0KSA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpDaGFu
Z2VkOwogfQogCitib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5
KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGlt
cG9ydGFudCwgU3R5bGVTaGVldENvbnRlbnRzKiAvKmNvbnRleHRTdHlsZVNoZWV0Ki8pCit7Cisg
ICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgdG8gYW4gZW1wdHkgc3RyaW5nIGp1c3QgcmVtb3ZlcyB0
aGUgcHJvcGVydHkgaW4gYm90aCBJRSBhbmQgR2Vja28uCisgICAgLy8gU2V0dGluZyBpdCB0byBu
dWxsIHNlZW1zIHRvIHByb2R1Y2UgbGVzcyBjb25zaXN0ZW50IHJlc3VsdHMsIGJ1dCB3ZSB0cmVh
dCBpdCBqdXN0IHRoZSBzYW1lLgorICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiByZW1vdmVDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOworCisgICAgLy8gV2hlbiBy
ZXBsYWNpbmcgYW4gZXhpc3RpbmcgcHJvcGVydHkgdmFsdWUsIHRoaXMgbW92ZXMgdGhlIHByb3Bl
cnR5IHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCisgICAgLy8gRmlyZWZveCBwcmVzZXJ2ZXMgdGhl
IHBvc2l0aW9uLCBhbmQgTVNJRSBtb3ZlcyB0aGUgcHJvcGVydHkgdG8gdGhlIGJlZ2lubmluZy4K
KyAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3VzdG9tVmFsdWUgPSBDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUocHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgYWRkUGFy
c2VkUHJvcGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlDdXN0b20sIGN1c3RvbVZhbHVlLCBp
bXBvcnRhbnQpKTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHBycFZhbHVlLCBib29sIGltcG9ydGFudCkKIHsKICAgICBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5
SUQpOwpAQCAtNzAyLDcgKzc2MSwxNSBAQCB2b2lkIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNl
dFByb3BlcnR5CiBib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5KGNvbnN0
IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHkqIHNsb3QpCiB7CiAgICAgaWYgKCFy
ZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eShwcm9wZXJ0eS5pZCgpKSkgewotICAgICAgICBDU1NQcm9w
ZXJ0eSogdG9SZXBsYWNlID0gc2xvdCA/IHNsb3QgOiBmaW5kQ1NTUHJvcGVydHlXaXRoSUQocHJv
cGVydHkuaWQoKSk7CisgICAgICAgIENTU1Byb3BlcnR5KiB0b1JlcGxhY2UgPSBzbG90OworICAg
ICAgICBpZiAoIXNsb3QpIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5pZCgpID09IENTU1By
b3BlcnR5Q3VzdG9tKSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LnZhbHVlKCkpCisg
ICAgICAgICAgICAgICAgICAgIHRvUmVwbGFjZSA9IGZpbmRDdXN0b21DU1NQcm9wZXJ0eVdpdGhO
YW1lKGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS52YWx1ZSgpKS5u
YW1lKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdG9SZXBsYWNlID0g
ZmluZENTU1Byb3BlcnR5V2l0aElEKHByb3BlcnR5LmlkKCkpOworICAgICAgICB9CisgICAgICAg
IAogICAgICAgICBpZiAodG9SZXBsYWNlKSB7CiAgICAgICAgICAgICBpZiAoKnRvUmVwbGFjZSA9
PSBwcm9wZXJ0eSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03ODEsNiArODQ4
LDEyIEBAIGJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6YWRkUGFyc2VkUHIKIAogYm9vbCBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjphZGRQYXJzZWRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0
eSYgcHJvcGVydHkpCiB7CisgICAgaWYgKHByb3BlcnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlDdXN0
b20pIHsKKyAgICAgICAgaWYgKChwcm9wZXJ0eS52YWx1ZSgpICYmICFjdXN0b21Qcm9wZXJ0eUlz
SW1wb3J0YW50KGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS52YWx1
ZSgpKS5uYW1lKCkpKSB8fCBwcm9wZXJ0eS5pc0ltcG9ydGFudCgpKQorICAgICAgICAgICAgcmV0
dXJuIHNldFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICAKICAgICAvLyBPbmx5IGFkZCBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSBubyAhaW1wb3J0YW50
IGNvdW50ZXJwYXJ0IHByZXNlbnQKICAgICBpZiAoIXByb3BlcnR5SXNJbXBvcnRhbnQocHJvcGVy
dHkuaWQoKSkgfHwgcHJvcGVydHkuaXNJbXBvcnRhbnQoKSkKICAgICAgICAgcmV0dXJuIHNldFBy
b3BlcnR5KHByb3BlcnR5KTsKQEAgLTk3MywxMiArMTA0NiwxNyBAQCBTdHJpbmcgU3R5bGVQcm9w
ZXJ0aWVzOjphc1RleHQoKSBjb25zdAogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHZhbHVl
ID0gcHJvcGVydHkudmFsdWUoKS0+Y3NzVGV4dCgpOwogCi0gICAgICAgIGlmICh2YWx1ZSA9PSAi
aW5pdGlhbCIgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KHByb3BlcnR5SUQp
KQorICAgICAgICBpZiAocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUN1c3RvbSAmJiB2YWx1ZSA9
PSAiaW5pdGlhbCIgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KHByb3BlcnR5
SUQpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKG51bURlY2xzKyspCiAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0
UHJvcGVydHlOYW1lKHByb3BlcnR5SUQpKTsKKworICAgICAgICBpZiAocHJvcGVydHlJRCA9PSBD
U1NQcm9wZXJ0eUN1c3RvbSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZG93bmNhc3Q8Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LnZhbHVlKCkpLm5hbWUoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lKHByb3BlcnR5
SUQpKTsKKwogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKICAgICAgICAgcmVz
dWx0LmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eS5pc0ltcG9ydGFudCgpKQpA
QCAtMTE3NSw2ICsxMjUzLDQyIEBAIGludCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpmaW5kUHJv
cGVydHkKICAgICByZXR1cm4gLTE7CiB9CiAKK2ludCBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBjb25z
dAoreworICAgIC8vIENvbnZlcnQgdGhlIHByb3BlcnR5SUQgaW50byBhbiB1aW50MTZfdCB0byBj
b21wYXJlIGl0IHdpdGggdGhlIG1ldGFkYXRhJ3MgbV9wcm9wZXJ0eUlEIHRvIGF2b2lkCisgICAg
Ly8gdGhlIGNvbXBpbGVyIGNvbnZlcnRpbmcgaXQgdG8gYW4gaW50IG11bHRpcGxlIHRpbWVzIGlu
IHRoZSBsb29wLgorICAgIHVpbnQxNl90IGlkID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KENTU1By
b3BlcnR5Q3VzdG9tKTsKKyAgICBmb3IgKGludCBuID0gbV9hcnJheVNpemUgLSAxIDsgbiA+PSAw
OyAtLW4pIHsKKyAgICAgICAgaWYgKG1ldGFkYXRhQXJyYXkoKVtuXS5tX3Byb3BlcnR5SUQgPT0g
aWQpIHsKKyAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgY3VzdG9tIHByb3BlcnR5LiBTZWUgaWYg
dGhlIG5hbWUgbWF0Y2hlcy4KKyAgICAgICAgICAgIGlmICghdmFsdWVBcnJheSgpW25dKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGRvd25jYXN0PENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+KCp2YWx1ZUFycmF5KClbbl0pLm5hbWUoKSA9PSBwcm9wZXJ0eU5hbWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG47CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gLTE7Cit9CisKK2ludCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpmaW5kQ3VzdG9tUHJvcGVy
dHlJbmRleChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICAvLyBDb252
ZXJ0IHRoZSBwcm9wZXJ0eUlEIGludG8gYW4gdWludDE2X3QgdG8gY29tcGFyZSBpdCB3aXRoIHRo
ZSBtZXRhZGF0YSdzIG1fcHJvcGVydHlJRCB0byBhdm9pZAorICAgIC8vIHRoZSBjb21waWxlciBj
b252ZXJ0aW5nIGl0IHRvIGFuIGludCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgbG9vcC4KKyAgICB1
aW50MTZfdCBpZCA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihDU1NQcm9wZXJ0eUN1c3RvbSk7Cisg
ICAgZm9yIChpbnQgbiA9IG1fcHJvcGVydHlWZWN0b3Iuc2l6ZSgpIC0gMSA7IG4gPj0gMDsgLS1u
KSB7CisgICAgICAgIGlmIChtX3Byb3BlcnR5VmVjdG9yLmF0KG4pLm1ldGFkYXRhKCkubV9wcm9w
ZXJ0eUlEID09IGlkKSB7CisgICAgICAgICAgICAvLyBXZSBmb3VuZCBhIGN1c3RvbSBwcm9wZXJ0
eS4gU2VlIGlmIHRoZSBuYW1lIG1hdGNoZXMuCisgICAgICAgICAgICBpZiAoIW1fcHJvcGVydHlW
ZWN0b3IuYXQobikudmFsdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGlmIChkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqbV9wcm9wZXJ0eVZlY3Rv
ci5hdChuKS52YWx1ZSgpKS5uYW1lKCkgPT0gcHJvcGVydHlOYW1lKQorICAgICAgICAgICAgICAg
IHJldHVybiBuOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCiBDU1NQ
cm9wZXJ0eSogTXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZmluZENTU1Byb3BlcnR5V2l0aElEKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICBpbnQgZm91bmRQcm9wZXJ0eUluZGV4ID0g
ZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHlJRCk7CkBAIC0xMTgzLDYgKzEyOTcsMTQgQEAgQ1NT
UHJvcGVydHkqIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmZpbgogICAgIHJldHVybiAmbV9wcm9w
ZXJ0eVZlY3Rvci5hdChmb3VuZFByb3BlcnR5SW5kZXgpOwogfQogCitDU1NQcm9wZXJ0eSogTXV0
YWJsZVN0eWxlUHJvcGVydGllczo6ZmluZEN1c3RvbUNTU1Byb3BlcnR5V2l0aE5hbWUoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUpCit7CisgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZp
bmRDdXN0b21Qcm9wZXJ0eUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgaWYgKGZvdW5kUHJvcGVy
dHlJbmRleCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuICZtX3Byb3BlcnR5
VmVjdG9yLmF0KGZvdW5kUHJvcGVydHlJbmRleCk7Cit9CisKIGJvb2wgU3R5bGVQcm9wZXJ0aWVz
Ojpwcm9wZXJ0eU1hdGNoZXMoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1
ZSogcHJvcGVydHlWYWx1ZSkgY29uc3QKIHsKICAgICBpbnQgZm91bmRQcm9wZXJ0eUluZGV4ID0g
ZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHlJRCk7CkBAIC0xMjY1LDYgKzEzODcsOCBAQCBSZWY8
TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gTXV0YWJsZVN0eWxlCiAKIFN0cmluZyBTdHlsZVByb3Bl
cnRpZXM6OlByb3BlcnR5UmVmZXJlbmNlOjpjc3NOYW1lKCkgY29uc3QKIHsKKyAgICBpZiAoaWQo
KSA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+KCp2YWx1ZSgpKS5uYW1lKCk7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5
TmFtZVN0cmluZyhpZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJv
cGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRp
ZXMuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5MiwxMCBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIGdldFByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIGJvb2wg
aXNQcm9wZXJ0eUltcGxpY2l0KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCisgICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gZ2V0Q3VzdG9tUHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSkgY29uc3Q7CisgICAgU3RyaW5nIGdldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIGJvb2wgY3VzdG9tUHJvcGVydHlJc0lt
cG9ydGFudChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3Q7CisKICAgICBSZWY8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gY29weUJsb2NrUHJvcGVydGllcygpIGNvbnN0OwogCiAgICAg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q1NTUGFyc2VyTW9kZT4obV9jc3NQYXJzZXJNb2RlKTsgfQpAQCAtMTMyLDcgKzEzNiw4IEBAIHBy
b3RlY3RlZDoKICAgICB7IH0KIAogICAgIGludCBmaW5kUHJvcGVydHlJbmRleChDU1NQcm9wZXJ0
eUlEKSBjb25zdDsKLQorICAgIGludCBmaW5kQ3VzdG9tUHJvcGVydHlJbmRleChjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgCiAgICAgdW5zaWduZWQgbV9jc3NQYXJzZXJN
b2RlIDogMjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1faXNNdXRhYmxlIDogMTsKICAgICB1bnNp
Z25lZCBtX2FycmF5U2l6ZSA6IDI5OwpAQCAtMTYzLDcgKzE2OCw4IEBAIHB1YmxpYzoKICAgICBj
b25zdCBDU1NWYWx1ZSoqIHZhbHVlQXJyYXkoKSBjb25zdDsKICAgICBjb25zdCBTdHlsZVByb3Bl
cnR5TWV0YWRhdGEqIG1ldGFkYXRhQXJyYXkoKSBjb25zdDsKICAgICBpbnQgZmluZFByb3BlcnR5
SW5kZXgoQ1NTUHJvcGVydHlJRCkgY29uc3Q7Ci0KKyAgICBpbnQgZmluZEN1c3RvbVByb3BlcnR5
SW5kZXgoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIAogICAgIHZvaWQq
IG1fc3RvcmFnZTsKIAogcHJpdmF0ZToKQEAgLTIyMSw5ICsyMjcsMTQgQEAgcHVibGljOgogICAg
IENTU1N0eWxlRGVjbGFyYXRpb24qIGVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24oU3R5
bGVkRWxlbWVudCogcGFyZW50RWxlbWVudCk7CiAKICAgICBpbnQgZmluZFByb3BlcnR5SW5kZXgo
Q1NTUHJvcGVydHlJRCkgY29uc3Q7Ci0KKyAgICBpbnQgZmluZEN1c3RvbVByb3BlcnR5SW5kZXgo
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIAogICAgIFZlY3RvcjxDU1NQ
cm9wZXJ0eSwgND4gbV9wcm9wZXJ0eVZlY3RvcjsKIAorICAgIC8vIE1ldGhvZHMgZm9yIHF1ZXJ5
aW5nIGFuZCBhbHRlcmluZyBDU1MgY3VzdG9tIHByb3BlcnRpZXMuCisgICAgYm9vbCBzZXRDdXN0
b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5
bGVTaGVldCA9IDApOworICAgIGJvb2wgcmVtb3ZlQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIFN0cmluZyogcmV0dXJuVGV4dCA9IG51bGxwdHIpOworCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IE11dGFibGVTdHlsZVByb3BlcnRpZXMoQ1NTUGFyc2VyTW9kZSk7CiAg
ICAgZXhwbGljaXQgTXV0YWJsZVN0eWxlUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnRpZXMm
KTsKQEAgLTIzMSw2ICsyNDIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZW1vdmVTaG9ydGhh
bmRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsKICAgICBDU1NQcm9wZXJ0eSogZmluZENTU1Byb3Bl
cnR5V2l0aElEKENTU1Byb3BlcnR5SUQpOworICAgIENTU1Byb3BlcnR5KiBmaW5kQ3VzdG9tQ1NT
UHJvcGVydHlXaXRoTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uPiBtX2Nzc29tV3JhcHBlcjsKIAogICAgIGZyaWVu
ZCBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CkBAIC0yNzksNiArMjkxLDEzIEBAIGlubGluZSBpbnQg
U3R5bGVQcm9wZXJ0aWVzOjpmaW5kUHJvcGVydHkKICAgICByZXR1cm4gZG93bmNhc3Q8SW1tdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPigqdGhpcykuZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHlJRCk7
CiB9CiAKK2lubGluZSBpbnQgU3R5bGVQcm9wZXJ0aWVzOjpmaW5kQ3VzdG9tUHJvcGVydHlJbmRl
eChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBpZiAoaXM8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4oKnRoaXMpLmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KHByb3BlcnR5
TmFtZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4oKnRo
aXMpLmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KHByb3BlcnR5TmFtZSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ1NTQm9y
ZGVySW1hZ2UuaCIKICNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUu
aCIKICNpbmNsdWRlICJDU1NEZWZhdWx0U3R5bGVTaGVldHMuaCIKICNpbmNsdWRlICJDU1NGaWx0
ZXJJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmgiCkBAIC0xMzksNiAr
MTQwLDcgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Rl
bXBvcmFyeUNoYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQog
I2luY2x1ZGUgIkNTU0dyaWRMaW5lTmFtZXNWYWx1ZS5oIgpAQCAtMTg5LDE0ICsxOTEsMTcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVy
Jik7CiAKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUHJvcGVydHk+JiBjdXN0b21Qcm9wZXJ0
aWVzKCkgeyByZXR1cm4gbV9jdXN0b21Qcm9wZXJ0aWVzOyB9CisgICAgCiBwcml2YXRlOgogICAg
IHZvaWQgYWRkU3R5bGVQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydGllcyYsIFN0eWxlUnVs
ZSYsIGJvb2wgaXNJbXBvcnRhbnQsIGJvb2wgaW5oZXJpdGVkT25seSwgUHJvcGVydHlXaGl0ZWxp
c3RUeXBlLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlKTsKICAgICBzdGF0aWMgdm9pZCBzZXRQcm9w
ZXJ0eUludGVybmFsKFByb3BlcnR5JiwgQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUmLCB1bnNpZ25l
ZCBsaW5rTWF0Y2hUeXBlKTsKIAotICAgIFByb3BlcnR5IG1fcHJvcGVydGllc1tudW1DU1NQcm9w
ZXJ0aWVzICsgMV07Ci0gICAgc3RkOjpiaXRzZXQ8bnVtQ1NTUHJvcGVydGllcyArIDE+IG1fcHJv
cGVydHlJc1ByZXNlbnQ7CisgICAgUHJvcGVydHkgbV9wcm9wZXJ0aWVzW251bUNTU1Byb3BlcnRp
ZXMgKyAyXTsKKyAgICBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzICsgMj4gbV9wcm9wZXJ0
eUlzUHJlc2VudDsKIAogICAgIFZlY3RvcjxQcm9wZXJ0eSwgOD4gbV9kZWZlcnJlZFByb3BlcnRp
ZXM7CisgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFByb3BlcnR5PiBtX2N1c3RvbVByb3BlcnRp
ZXM7CiAKICAgICBUZXh0RGlyZWN0aW9uIG1fZGlyZWN0aW9uOwogICAgIFdyaXRpbmdNb2RlIG1f
d3JpdGluZ01vZGU7CkBAIC04NDUsNiArODUwLDkgQEAgUmVmPFJlbmRlclN0eWxlPiBTdHlsZVJl
c29sdmVyOjpzdHlsZUZvcgogICAgIC8vIGRlY2wsIHRoZXJlJ3Mgbm90aGluZyB0byBvdmVycmlk
ZS4gU28ganVzdCBhZGQgdGhlIGZpcnN0IHByb3BlcnRpZXMuCiAgICAgQ2FzY2FkZWRQcm9wZXJ0
aWVzIGNhc2NhZGUoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CiAgICAgY2FzY2FkZS5hZGRNYXRj
aGVzKHJlc3VsdCwgZmFsc2UsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNpemUoKSAt
IDEpOworICAgIAorICAgIC8vIFJlc29sdmUgdmFyaWFibGVzIGZpcnN0LgorICAgIGFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1
c3RvbSk7CiAKICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1By
b3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHkpOwogCkBAIC0xMDExLDYgKzEwMTksOSBA
QCBSZWY8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yCiAgICAgQ2FzY2FkZWRQ
cm9wZXJ0aWVzIGNhc2NhZGUoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CiAgICAgY2FzY2FkZS5h
ZGRNYXRjaGVzKHJlc3VsdCwgZmFsc2UsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNp
emUoKSAtIDEpOwogCisgICAgLy8gUmVzb2x2ZSB2YXJpYWJsZXMgZmlyc3QuCisgICAgYXBwbHlD
YXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5
Q3VzdG9tKTsKKwogICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NT
UHJvcGVydHksIGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSk7CiAKICAgICAvLyBJZiBvdXIgZm9u
dCBnb3QgZGlydGllZCwgdXBkYXRlIGl0IG5vdy4KQEAgLTE2ODYsNiArMTY5Nyw5IEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGkKIAogICAgICAgICBhcHBseUNhc2Nh
ZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NT
UHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24pOwogICAgICAgICBhZGp1c3RTdHlsZUZvckludGVy
Q2hhcmFjdGVyUnVieSgpOworICAgIAorICAgICAgICAvLyBSZXNvbHZlIHZhcmlhYmxlcyBmaXJz
dC4KKyAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlD
dXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tKTsKIAogICAgICAgICAvLyBTdGFydCBieSBhcHBseWlu
ZyBwcm9wZXJ0aWVzIHRoYXQgb3RoZXIgcHJvcGVydGllcyBtYXkgZGVwZW5kIG9uLgogICAgICAg
ICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0
SGlnaFByaW9yaXR5UHJvcGVydHkpOwpAQCAtMTcwMSw2ICsxNzE1LDkgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aQogICAgIGNhc2NhZGUuYWRkTWF0Y2hlcyhtYXRj
aFJlc3VsdCwgdHJ1ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgbWF0Y2hS
ZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogICAgIGNh
c2NhZGUuYWRkTWF0Y2hlcyhtYXRjaFJlc3VsdCwgdHJ1ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZp
cnN0VXNlclJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1bGUsIGFwcGx5SW5oZXJp
dGVkT25seSk7CiAgICAgY2FzY2FkZS5hZGRNYXRjaGVzKG1hdGNoUmVzdWx0LCB0cnVlLCBtYXRj
aFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxl
LCBhcHBseUluaGVyaXRlZE9ubHkpOworICAgIAorICAgIC8vIFJlc29sdmUgdmFyaWFibGVzIGZp
cnN0LgorICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3Vz
dG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSk7CiAKICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhj
YXNjYWRlLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRS
dWJ5UG9zaXRpb24pOwogICAgIApAQCAtMTg4MSw2ICsxODk4LDEyIEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm8KIAogICAgIGlmIChpc0luaGVyaXQgJiYgIXN0YXRl
LnBhcmVudFN0eWxlKCktPmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgJiYgIUNT
U1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KGlkKSkKICAgICAgICAgc3RhdGUucGFyZW50
U3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsKKyAgICAKKyAg
ICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKKyAgICAgICAgQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZSogY3VzdG9tUHJvcGVydHkgPSAmZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4oKnZhbHVlKTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q3VzdG9tUHJvcGVydHlWYWx1
ZShjdXN0b21Qcm9wZXJ0eS0+bmFtZSgpLCBjdXN0b21Qcm9wZXJ0eS0+dmFsdWUoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKICAgICAvLyBVc2UgdGhlIGdlbmVyYXRlZCBTdHlsZUJ1aWxk
ZXIuCiAgICAgU3R5bGVCdWlsZGVyOjphcHBseVByb3BlcnR5KGlkLCAqdGhpcywgKnZhbHVlLCBp
c0luaXRpYWwsIGlzSW5oZXJpdCk7CkBAIC0yNTI2LDYgKzI1NDksMjQgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OgogCiAgICAgYXV0byYgcHJvcGVydHkgPSBtX3By
b3BlcnRpZXNbaWRdOwogICAgIEFTU0VSVChpZCA8IG1fcHJvcGVydHlJc1ByZXNlbnQuc2l6ZSgp
KTsKKyAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKKyAgICAgICAgbV9wcm9wZXJ0
eUlzUHJlc2VudC5zZXQoaWQpOworICAgICAgICBjb25zdCBhdXRvJiBjdXN0b21WYWx1ZSA9IGRv
d25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KGNzc1ZhbHVlKTsKKyAgICAgICAgYm9vbCBo
YXNWYWx1ZSA9IGN1c3RvbVByb3BlcnRpZXMoKS5jb250YWlucyhjdXN0b21WYWx1ZS5uYW1lKCkp
OworICAgICAgICBpZiAoIWhhc1ZhbHVlKSB7CisgICAgICAgICAgICBQcm9wZXJ0eSBwcm9wZXJ0
eTsKKyAgICAgICAgICAgIHByb3BlcnR5LmlkID0gaWQ7CisgICAgICAgICAgICBtZW1zZXQocHJv
cGVydHkuY3NzVmFsdWUsIDAsIHNpemVvZihwcm9wZXJ0eS5jc3NWYWx1ZSkpOworICAgICAgICAg
ICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBsaW5rTWF0Y2hU
eXBlKTsKKyAgICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMoKS5zZXQoY3VzdG9tVmFsdWUubmFt
ZSgpLCBwcm9wZXJ0eSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQcm9wZXJ0eSBw
cm9wZXJ0eSA9IGN1c3RvbVByb3BlcnRpZXMoKS5nZXQoY3VzdG9tVmFsdWUubmFtZSgpKTsKKyAg
ICAgICAgICAgIHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbGlu
a01hdGNoVHlwZSk7CisgICAgICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzKCkuc2V0KGN1c3RvbVZh
bHVlLm5hbWUoKSwgcHJvcGVydHkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCiAgICAgaWYgKCFtX3Byb3BlcnR5SXNQcmVzZW50W2lkXSkKICAgICAgICAgbWVtc2V0
KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXplb2YocHJvcGVydHkuY3NzVmFsdWUpKTsKICAgICBt
X3Byb3BlcnR5SXNQcmVzZW50LnNldChpZCk7CkBAIC0yNjIzLDYgKzI2NjQsMTIgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydAogICAgICAgICBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpZCk7CiAgICAgICAgIGlm
ICghY2FzY2FkZS5oYXNQcm9wZXJ0eShwcm9wZXJ0eUlEKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkgeworICAgICAg
ICAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIENhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHk+
OjppdGVyYXRvciBlbmQgPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQoKTsKKyAgICAg
ICAgICAgIGZvciAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIENhc2NhZGVkUHJvcGVydGllczo6UHJv
cGVydHk+OjppdGVyYXRvciBpdCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICAgICBpdC0+dmFsdWUuYXBwbHkoKnRoaXMp
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgYXV0byYgcHJvcGVy
dHkgPSBjYXNjYWRlLnByb3BlcnR5KHByb3BlcnR5SUQpOwogICAgICAgICBBU1NFUlQoIXNob3Vs
ZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpOwogICAgICAgICBwcm9wZXJ0
eS5hcHBseSgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCShyZXZpc2lvbiAxOTAy
MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDcgQEAgZGllICJXZSd2ZSByZWFjaGVkIG1vcmUgdGhhbiAxMDI0IENTUyBwcgog
bXkgJW5hbWVzSGFzaDsKIG15IEBkdXBsaWNhdGVzID0gKCk7CiAKLW15ICRudW1QcmVkZWZpbmVk
UHJvcGVydGllcyA9IDE7CitteSAkbnVtUHJlZGVmaW5lZFByb3BlcnRpZXMgPSAyOwogbXkgQG5h
bWVzID0gKCk7CiBteSAlbmFtZUlzSW5oZXJpdGVkOwogbXkgJXByb3BlcnRpZXNXaXRoU3R5bGVC
dWlsZGVyT3B0aW9uczsKQEAgLTIzNiw2ICsyMzYsNyBAQCBTdHJpbmcgZ2V0SlNQcm9wZXJ0eU5h
bWUoQ1NTUHJvcGVydHlJRCBpCiAKIHN0YXRpYyBjb25zdCBib29sIGlzSW5oZXJpdGVkUHJvcGVy
dHlUYWJsZVtudW1DU1NQcm9wZXJ0aWVzICsgJG51bVByZWRlZmluZWRQcm9wZXJ0aWVzXSA9IHsK
ICAgICBmYWxzZSwgLy8gQ1NTUHJvcGVydHlJbnZhbGlkCisgICAgZmFsc2UsIC8vIENTU1Byb3Bl
cnR5Q3VzdG9tCiBFT0YKIAogZm9yZWFjaCBteSAkbmFtZSAoQG5hbWVzKSB7CkBAIC0yODMsNiAr
Mjg0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIENTU1Byb3BlcnR5SUQgOiB1aW50
MTZfdCB7CiAgICAgQ1NTUHJvcGVydHlJbnZhbGlkID0gMCwKKyAgICBDU1NQcm9wZXJ0eUN1c3Rv
bSA9IDEsCiBFT0YKIAogbXkgJGZpcnN0ID0gJG51bVByZWRlZmluZWRQcm9wZXJ0aWVzOwpAQCAt
MzEzLDcgKzMxNSw3IEBAIFdURjo6U3RyaW5nIGdldEpTUHJvcGVydHlOYW1lKENTU1Byb3BlcnQK
IAogaW5saW5lIENTU1Byb3BlcnR5SUQgY29udmVydFRvQ1NTUHJvcGVydHlJRChpbnQgdmFsdWUp
CiB7Ci0gICAgQVNTRVJUKCh2YWx1ZSA+PSBmaXJzdENTU1Byb3BlcnR5ICYmIHZhbHVlIDw9IGxh
c3RDU1NQcm9wZXJ0eSkgfHwgdmFsdWUgPT0gQ1NTUHJvcGVydHlJbnZhbGlkKTsKKyAgICBBU1NF
UlQoKHZhbHVlID49IGZpcnN0Q1NTUHJvcGVydHkgJiYgdmFsdWUgPD0gbGFzdENTU1Byb3BlcnR5
KSB8fCB2YWx1ZSA9PSBDU1NQcm9wZXJ0eUludmFsaWQgfHwgdmFsdWUgPT0gQ1NTUHJvcGVydHlD
dXN0b20pOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPih2YWx1ZSk7CiB9
CiAKQEAgLTg3Miw2ICs4NzQsNyBAQCB2b2lkIFN0eWxlQnVpbGRlcjo6YXBwbHlQcm9wZXJ0eShD
U1NQcm9wCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlJ
bnZhbGlkOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDdXN0b206CiAgICAgICAgIGJyZWFrOwogRU9G
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDYgKzM0OCwxNCBA
QCBib29sIEluc3BlY3RvclN0eWxlOjpnZXRUZXh0KFN0cmluZyogcmVzCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3N0YXRpYyBTdHJpbmcgbG93ZXJjYXNlUHJvcGVydHlOYW1lKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICAvLyBDdXN0b20gcHJvcGVydGllcyBhcmUgY2FzZS1zZW5zaXRpdmUu
CisgICAgaWYgKG5hbWUubGVuZ3RoKCkgPiAyICYmIG5hbWUuY2hhcmFjdGVyQXQoMCkgPT0gJy0n
ICYmIG5hbWUuY2hhcmFjdGVyQXQoMSkgPT0gJy0nKQorICAgICAgICByZXR1cm4gbmFtZTsKKyAg
ICByZXR1cm4gbmFtZS5sb3dlcigpOworfQorCiBib29sIEluc3BlY3RvclN0eWxlOjpwb3B1bGF0
ZUFsbFByb3BlcnRpZXMoVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+KiByZXN1bHQpIGNv
bnN0CiB7CiAgICAgSGFzaFNldDxTdHJpbmc+IHNvdXJjZVByb3BlcnR5TmFtZXM7CkBAIC0zNjIs
MTYgKzM3MCwxNiBAQCBib29sIEluc3BlY3RvclN0eWxlOjpwb3B1bGF0ZUFsbFByb3BlcnRpCiAg
ICAgICAgICAgICBJbnNwZWN0b3JTdHlsZVByb3BlcnR5IHAoKml0LCB0cnVlLCBmYWxzZSk7CiAg
ICAgICAgICAgICBwLnNldFJhd1RleHRGcm9tU3R5bGVEZWNsYXJhdGlvbihzdHlsZURlY2xhcmF0
aW9uKTsKICAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHApOwotICAgICAgICAgICAgc291cmNl
UHJvcGVydHlOYW1lcy5hZGQoaXQtPm5hbWUubG93ZXIoKSk7CisgICAgICAgICAgICBzb3VyY2VQ
cm9wZXJ0eU5hbWVzLmFkZChsb3dlcmNhc2VQcm9wZXJ0eU5hbWUoaXQtPm5hbWUpKTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIGZvciAoaW50IGkgPSAwLCBzaXplID0gbV9zdHlsZS0+bGVuZ3Ro
KCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgU3RyaW5nIG5hbWUgPSBtX3N0eWxlLT5pdGVt
KGkpOwotICAgICAgICBpZiAoc291cmNlUHJvcGVydHlOYW1lcy5jb250YWlucyhuYW1lLmxvd2Vy
KCkpKQorICAgICAgICBTdHJpbmcgbG93ZXJOYW1lID0gbG93ZXJjYXNlUHJvcGVydHlOYW1lKG5h
bWUpOworICAgICAgICBpZiAoc291cmNlUHJvcGVydHlOYW1lcy5jb250YWlucyhsb3dlck5hbWUp
KQogICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgc291cmNlUHJvcGVydHlOYW1lcy5h
ZGQobmFtZS5sb3dlcigpKTsKKyAgICAgICAgc291cmNlUHJvcGVydHlOYW1lcy5hZGQobG93ZXJO
YW1lKTsKICAgICAgICAgcmVzdWx0LT5hcHBlbmQoSW5zcGVjdG9yU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVNvdXJjZURhdGEobmFtZSwgbV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShuYW1lKSwg
IW1fc3R5bGUtPmdldFByb3BlcnR5UHJpb3JpdHkobmFtZSkuaXNFbXB0eSgpLCB0cnVlLCBTb3Vy
Y2VSYW5nZSgpKSwgZmFsc2UsIGZhbHNlKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTkwMjA2KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUxMyw2ICs1MTMsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgUHNldWRvU3R5bGVD
YWNoZSogY2FjaGVkUHNldWRvU3R5bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQc2V1ZG9T
dHlsZXMuZ2V0KCk7IH0KIAorICAgIHZvaWQgc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgcmFyZUluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS0+c2V0Q3VzdG9tUHJvcGVy
dHlWYWx1ZShuYW1lLCB2YWx1ZSk7IH0KKyAgICBTdHJpbmcgZ2V0Q3VzdG9tUHJvcGVydHlWYWx1
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWRE
YXRhLT5tX2N1c3RvbVByb3BlcnRpZXMtPmdldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSk7IH0K
KyAgICBib29sIGhhc0N1c3RvbVByb3BlcnR5KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29u
c3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1fY3VzdG9tUHJvcGVydGllcy0+aGFzQ3Vz
dG9tUHJvcGVydHkobmFtZSk7IH0KKyAgICBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3Ry
aW5nPiogY3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICYocmFyZUluaGVyaXRlZERh
dGEtPm1fY3VzdG9tUHJvcGVydGllcy0+bV92YWx1ZXMpOyB9CisKICAgICB2b2lkIHNldEhhc1Zp
ZXdwb3J0VW5pdHMoYm9vbCBoYXNWaWV3cG9ydFVuaXRzID0gdHJ1ZSkgeyBub25pbmhlcml0ZWRf
ZmxhZ3Muc2V0SGFzVmlld3BvcnRVbml0cyhoYXNWaWV3cG9ydFVuaXRzKTsgfQogICAgIGJvb2wg
aGFzVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNW
aWV3cG9ydFVuaXRzKCk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YV9oCisjZGVmaW5lIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhX2gKKworI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2gu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0
YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSk7IH0KKyAgICBSZWY8U3R5
bGVDdXN0b21Qcm9wZXJ0eURhdGE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKCp0aGlzKSk7IH0KKyAgICAKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG8pIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWVzID09IG8ubV92YWx1ZXM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGEgJm8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KKyAg
ICAKKyAgICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1fdmFsdWVzLnNldChuYW1lLCB2YWx1ZSk7IH0K
KyAgICBTdHJpbmcgZ2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmdldChuYW1lKTsgfQorICAgIGJvb2wgaGFzQ3Vz
dG9tUHJvcGVydHkoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlcy5jb250YWlucyhuYW1lKTsgfQorCisgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmlu
Zz4gbV92YWx1ZXM7CisgICAgCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFN0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhKCkKKyAgICA6IFJlZkNvdW50ZWQ8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+KCkK
KyAgICB7IH0KKyAgICBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YShjb25zdCBTdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YSYgb3RoZXIpCisgICAgOiBSZWZDb3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVydHlE
YXRhPigpCisgICAgLCBtX3ZhbHVlcyhIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPihvdGhl
ci5tX3ZhbHVlcykpCisgICAgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3Bw
CShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEwICsyMywxMiBA
QAogI2luY2x1ZGUgIlN0eWxlUmFyZUluaGVyaXRlZERhdGEuaCIKIAogI2luY2x1ZGUgIkN1cnNv
ckxpc3QuaCIKKyNpbmNsdWRlICJEYXRhUmVmLmgiCiAjaW5jbHVkZSAiUXVvdGVzRGF0YS5oIgog
I2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMu
aCIKICNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCisjaW5jbHVkZSAiU3R5bGVDdXN0b21Qcm9wZXJ0
eURhdGEuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTYwLDYgKzYyLDggQEAgc3RydWN0IEdyZWF0ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJl
SQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3I7
CiAjZW5kaWYKKworICAgIHZvaWQqIGN1c3RvbVByb3BlcnR5RGF0YVJlZnNbMV07CiB9OwogCiBD
T01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSkgPD0gc2l6ZW9mKEdy
ZWF0ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSksIFN0eWxlUmFyZUlu
aGVyaXRlZERhdGFfc2hvdWxkX2JpdF9wYWNrKTsKQEAgLTY5LDYgKzczLDcgQEAgU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdAogICAgICwgdGV4dFN0cm9rZVdpZHRoKFJl
bmRlclN0eWxlOjppbml0aWFsVGV4dFN0cm9rZVdpZHRoKCkpCiAgICAgLCBpbmRlbnQoUmVuZGVy
U3R5bGU6OmluaXRpYWxUZXh0SW5kZW50KCkpCiAgICAgLCBtX2VmZmVjdGl2ZVpvb20oUmVuZGVy
U3R5bGU6OmluaXRpYWxab29tKCkpCisgICAgLCBtX2N1c3RvbVByb3BlcnRpZXMoU3R5bGVDdXN0
b21Qcm9wZXJ0eURhdGE6OmNyZWF0ZSgpKQogICAgICwgd2lkb3dzKFJlbmRlclN0eWxlOjppbml0
aWFsV2lkb3dzKCkpCiAgICAgLCBvcnBoYW5zKFJlbmRlclN0eWxlOjppbml0aWFsT3JwaGFucygp
KQogICAgICwgbV9oYXNBdXRvV2lkb3dzKHRydWUpCkBAIC0xNTAsNiArMTU1LDcgQEAgaW5saW5l
IFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZQogICAgICwgY3Vyc29yRGF0YShvLmN1
cnNvckRhdGEpCiAgICAgLCBpbmRlbnQoby5pbmRlbnQpCiAgICAgLCBtX2VmZmVjdGl2ZVpvb20o
by5tX2VmZmVjdGl2ZVpvb20pCisgICAgLCBtX2N1c3RvbVByb3BlcnRpZXMoby5tX2N1c3RvbVBy
b3BlcnRpZXMpCiAgICAgLCB3aWRvd3Moby53aWRvd3MpCiAgICAgLCBvcnBoYW5zKG8ub3JwaGFu
cykKICAgICAsIG1faGFzQXV0b1dpZG93cyhvLm1faGFzQXV0b1dpZG93cykKQEAgLTMyNCw2ICsz
MzAsNyBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oCiAjaWYgRU5B
QkxFKENTU19UUkFJTElOR19XT1JEKQogICAgICAgICAmJiB0cmFpbGluZ1dvcmQgPT0gby50cmFp
bGluZ1dvcmQKICNlbmRpZgorICAgICAgICAmJiBtX2N1c3RvbVByb3BlcnRpZXMgPT0gby5tX2N1
c3RvbVByb3BlcnRpZXMKICAgICAgICAgJiYgU3R5bGVJbWFnZTo6aW1hZ2VzRXF1aXZhbGVudChs
aXN0U3R5bGVJbWFnZS5nZXQoKSwgby5saXN0U3R5bGVJbWFnZS5nZXQoKSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsOSBAQAogI2RlZmluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhX2gKIAogI2luY2x1ZGUg
IkNvbG9yLmgiCisjaW5jbHVkZSAiRGF0YVJlZi5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2lu
Y2x1ZGUgIlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgpAQCAtNzcsNiArNzksOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgTGVuZ3Ro
IHdvcmRTcGFjaW5nOwogCisgICAgRGF0YVJlZjxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4gbV9j
dXN0b21Qcm9wZXJ0aWVzOworCiAgICAgLy8gUGFnZWQgbWVkaWEgcHJvcGVydGllcy4KICAgICBz
aG9ydCB3aWRvd3M7CiAgICAgc2hvcnQgb3JwaGFuczsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDIw
NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4
IEBACisyMDE1LTA5LTI0ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgQ1NTIEN1c3RvbSBQcm9wZXJ0aWVzIChpbiBwcmVwYXJhdGlvbiBm
b3IgaW1wbGVtZW50aW5nIENTUyBWYXJpYWJsZXMpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllczogQWRk
ZWQuCisgICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUt
YWNjZXNzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2N1c3RvbS1w
cm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1pbmhlcml0ZWQtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5
bGUtYWNjZXNzLWluaGVyaXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jdXN0
b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHlsZS1hY2Nlc3MuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvaW5saW5lLXN0eWxlLXByb3BlcnR5LWdldC1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jdXN0b20tcHJvcGVydGll
cy9pbmxpbmUtc3R5bGUtcHJvcGVydHktZ2V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktZ2V0LWNzcy12YWx1ZS1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxl
LXByb3BlcnR5LWdldC1jc3MtdmFsdWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mv
Y3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1w
cm9wZXJ0eS1wcmlvcml0eS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nz
cy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXByaW9yaXR5Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktc2V0LWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVz
L3J1bGUtcHJvcGVydHktc2V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2N1c3Rv
bS1wcm9wZXJ0aWVzL3J1bGUtc2VyaWFsaXphdGlvbi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXNlcmlhbGl6YXRpb24uaHRt
bDogQWRkZWQuCisKIDIwMTUtMDktMjQgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vvay5vaEBjb2xs
YWJvcmEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJlYmFzZWxpbmUgbWVkaWEvbWVkaWEt
Y29udHJvbHMtcGxheS1idXR0b24tdXBkYXRlcy5odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNzLWV4cGVjdGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMv
Y29tcHV0ZWQtc3R5bGUtYWNjZXNzLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHlsZS1hY2Nlc3Mt
ZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlPgorOnJvb3QgeyAtLW9uZTogMTBweDsgLS10d286IDIwcHg7IH0KKzwvc3R5
bGU+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC53cml0ZShkb2N1bWVudC5zdHlsZVNoZWV0
c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCItLW9uZSIpICsgIiAiICsg
ZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgiLS10d28iKSkKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNzLWluaGVy
aXRlZC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1
c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1pbmhlcml0ZWQtZXhwZWN0ZWQu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0
aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1pbmhlcml0ZWQtZXhwZWN0ZWQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorOnJvb3Qg
eyAtLW9uZTogMTBweDsgLS10d286IDIwcHg7IH0KKzwvc3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQ+
Citkb2N1bWVudC53cml0ZShkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKCItLW9uZSIpICsgIiAiICsgZG9jdW1lbnQuc3R5bGVTaGVldHNb
MF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS10d28iKSkKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXBy
b3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNzLWluaGVyaXRlZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxl
LWFjY2Vzcy1pbmhlcml0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1pbmhlcml0ZWQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxl
PgorOnJvb3QgeyAtLW9uZTogMTBweDsgLS1hbm90aGVyOiAyMHB4OyB9Cis8L3N0eWxlPgorPGJv
ZHk+Cis8c2NyaXB0PgorZG9jdW1lbnQud3JpdGUoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5i
b2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCItLW9uZSIpICsgIiAiICsgZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCItLWFub3RoZXIiKSkKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3Bl
cnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNzLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9j
b21wdXRlZC1zdHlsZS1hY2Nlc3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorOnJvb3QgeyAtLW9uZTogMTBweDsgLS1hbm90aGVy
OiAyMHB4OyB9Cis8L3N0eWxlPgorPGJvZHk+Cis8c2NyaXB0PgorZG9jdW1lbnQud3JpdGUoZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUo
Ii0tb25lIikgKyAiICIgKyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dCkuZ2V0UHJvcGVydHlWYWx1ZSgiLS1hbm90aGVyIikpCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2lubGlu
ZS1zdHlsZS1wcm9wZXJ0eS1nZXQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9pbmxpbmUtc3R5bGUtcHJvcGVydHktZ2V0
LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0
b20tcHJvcGVydGllcy9pbmxpbmUtc3R5bGUtcHJvcGVydHktZ2V0LWV4cGVjdGVkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorMTBweCAyMHB4Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVy
dGllcy9pbmxpbmUtc3R5bGUtcHJvcGVydHktZ2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvaW5saW5lLXN0eWxlLXByb3BlcnR5LWdl
dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3Bl
cnRpZXMvaW5saW5lLXN0eWxlLXByb3BlcnR5LWdldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxib2R5IHN0eWxlPSItLW9uZToxMHB4OyAtLXR3
bzoyMHB4Ij4KKzxzY3JpcHQ+Citkb2N1bWVudC53cml0ZShkb2N1bWVudC5ib2R5LnN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoIi0tb25lIikgKyAiICIgKyBkb2N1bWVudC5ib2R5LnN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoIi0tdHdvIikpCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbC4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktZ2V0
LWNzcy12YWx1ZS1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktZ2V0LWNzcy12YWx1ZS1leHBlY3Rl
ZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3Bl
cnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtY3NzLXZhbHVlLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorMTBweCAyMHB4Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9y
dWxlLXByb3BlcnR5LWdldC1jc3MtdmFsdWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LWdldC1jc3MtdmFsdWUu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0
aWVzL3J1bGUtcHJvcGVydHktZ2V0LWNzcy12YWx1ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cis6cm9vdCB7IC0tb25lOiAxMHB4
OyAtLXR3bzogMjBweDsgfQorPC9zdHlsZT4KKzxib2R5PgorPHNjcmlwdD4KK2RvY3VtZW50Lndy
aXRlKGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5
Q1NTVmFsdWUoIi0tb25lIikuY3NzVGV4dCArICIgIiArIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBd
LmNzc1J1bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoIi0tdHdvIikuY3NzVGV4dCkK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtZXhwZWN0ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3Bl
cnR5LWdldC1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
c3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtZXhwZWN0ZWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHk+CisxMHB4IDIwcHgKKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0
aWVzL3J1bGUtcHJvcGVydHktZ2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVy
dHktZ2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzdHlsZT4KKzpyb290IHsgLS1vbmU6IDEwcHg7IC0tdHdvOiAyMHB4OyB9Cis8L3N0eWxl
PgorPGJvZHk+Cis8c2NyaXB0PgorZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuc3R5bGVTaGVldHNb
MF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS1vbmUiKSArICIgIiArIGRv
Y3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Ii0tdHdvIikpCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbC4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktcHJpb3JpdHktZXhwZWN0
ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVy
dGllcy9ydWxlLXByb3BlcnR5LXByaW9yaXR5LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXBy
aW9yaXR5LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACis8aHRt
bD4KKzxib2R5PgorMTBweCBpbXBvcnRhbnQKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktcHJpb3JpdHku
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGll
cy9ydWxlLXByb3BlcnR5LXByaW9yaXR5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXByaW9yaXR5Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4K
Kzpyb290IHsgLS1vbmU6IDEwcHggIWltcG9ydGFudDsgLS1vbmU6NTBweDsgfQorPC9zdHlsZT4K
Kzxib2R5PgorPHNjcmlwdD4KK2RvY3VtZW50LndyaXRlKGRvY3VtZW50LnN0eWxlU2hlZXRzWzBd
LmNzc1J1bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoIi0tb25lIikgKyAiICIgKyBkb2N1
bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVByaW9yaXR5
KCItLW9uZSIpKQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWwuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXNldC1leHBlY3RlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVz
L3J1bGUtcHJvcGVydHktc2V0LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXNldC1leHBlY3Rl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4KKzUw
cHggMzBweAorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vz
dG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1zZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXNldC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMv
cnVsZS1wcm9wZXJ0eS1zZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACis8
aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorOnJvb3QgeyAtLW9uZTogMTBweDsgLS10d286IDIwcHg7
IH0KKzwvc3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5j
c3NSdWxlc1swXS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1vbmUiLCAiNXB4IikKK2RvY3VtZW50LnN0
eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLXR3byIpCitk
b2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS10
d28iLCAiMzBweCIpCitkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5z
ZXRQcm9wZXJ0eSgiLS1vbmUiLCAiNTBweCIpCitkb2N1bWVudC53cml0ZShkb2N1bWVudC5zdHls
ZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCItLW9uZSIpICsg
IiAiICsgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgiLS10d28iKSkKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1zZXJpYWxpemF0aW9uLWV4
cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXBy
b3BlcnRpZXMvcnVsZS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXNlcmlhbGl6YXRp
b24tZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgor
PGJvZHk+Cis6cm9vdCB7IC0tb25lOiAxMHB4OyAtLXR3bzogMjBweDsgfQorPC9ib2R5PgorPC9o
dG1sLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1z
ZXJpYWxpemF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vz
dG9tLXByb3BlcnRpZXMvcnVsZS1zZXJpYWxpemF0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXNlcmlhbGl6YXRpb24u
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8aHRtbD4KKzxoZWFkPgorPHN0
eWxlPgorOnJvb3QgeyAtLW9uZTogMTBweDsgLS10d286IDIwcHg7IH0KKzwvc3R5bGU+Cis8Ym9k
eT4KKzxzY3JpcHQ+Citkb2N1bWVudC53cml0ZShkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NS
dWxlc1swXS5jc3NUZXh0KQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWwuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261872</attachid>
            <date>2015-09-24 10:13:35 -0700</date>
            <delta_ts>2015-09-24 10:42:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>74215</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MyBAQAorMjAxNS0wOS0yNCAgRGF2aWQg
SHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIENTUyBD
dXN0b20gUHJvcGVydGllcyAoaW4gcHJlcGFyYXRpb24gZm9yIGltcGxlbWVudGluZyBDU1MgVmFy
aWFibGVzKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMDM5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5ldyB0ZXN0cyBpbiBmYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy4KKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBo
ZWFkZXIgZmlsZXMgdG8gdGhlIHByb2plY3QgKENTU0N1c3RvbVByb3BlcnR5VmFsdWUgYW5kIFN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhKS4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6Y3VzdG9tUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgSWYgYSBjdXN0b20gcHJvcGVydHkg
dmFsdWUgaXMgcXVlcmllZCAoaS5lLiwgaXQgc3RhcnRzIHdpdGggIi0tIiksIHRoZW4gd2UgdXNl
IG91cgorICAgICAgICBjdXN0b21Qcm9wZXJ0eVZhbHVlIGxvb2t1cCB0byBnbyB0byB0aGUgUmVu
ZGVyU3R5bGUgYW5kIGZldGNoIHRoZSBhcHByb3ByaWF0ZSBjdXN0b20gcHJvcGVydHkKKyAgICAg
ICAgdmFsdWUgZnJvbSB0aGUgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuCisKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6bGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6aXRlbSk6CisgICAgICAgIFBhdGNo
ZWQgdG8gaW5jbHVkZSBjdXN0b20gcHJvcGVydGllcyBpbiB0aGUgcmV0dXJuZWQgYXJyYXkuIFRo
ZXkgYXBwZWFyIGF0IHRoZSBlbmQgb2YgdGhlIGFycmF5CisgICAgICAgIGFmdGVyIHRoZSBidWls
dC1pbiBwcm9wZXJ0aWVzLgorCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpwcm9wZXJ0eU1hdGNoZXMpOgorICAgICAgICBQYXRjaGVkIHRvIGNoZWNrIGN1c3RvbSBw
cm9wZXJ0aWVzLgorCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpj
b3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAgTWFrZSBzdXJlIHRoZSBjdXN0b20gcHJvcGVy
dGllcyBnZXQgY29waWVkIGludG8gdGhlIFN0eWxlRGVjbGFyYXRpb24uCisKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5VmFsdWUpOgorICAgICAgICBQYXRjaGVkIHRvIGNhbGwgY3VzdG9tUHJvcGVydHlWYWx1ZSBm
b3IgY3VzdG9tIHByb3BlcnRpZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmg6CisgICAgICAgIEFkZCBjdXN0b21Qcm9wZXJ0eVZhbHVlKCkgdG8gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvci4KKworICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmVxdWFscyk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjdXN0b21DU1NUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6Om5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6dmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSk6
CisgICAgICAgIEN1c3RvbSBwcm9wZXJ0aWVzIGFyZSBwYXJzZWQgYXMgYSBwcm9wZXJ0eSB3aXRo
IGFuIElEIG9mIENTU1Byb3BlcnR5Q3VzdG9tIGFuZCBhIENTU0N1c3RvbVByb3BlcnR5VmFsdWUK
KyAgICAgICAgdGhhdCBob2xkcyBib3RoIHRoZSBuYW1lIGFuZCB0aGUgdmFsdWUgb2YgdGhlIHBy
b3BlcnR5LiBVbHRpbWF0ZWx5IHdlIG1pZ2h0IHdhbnQgdG8ganVzdCBkaXRjaCBwcm9wZXJ0eSBJ
RHMgaW4KKyAgICAgICAgZmF2b3Igb2YgQXRvbWljU3RyaW5ncyBmb3IgYWxsIHByb3BlcnRpZXMs
IGFuZCB0aGVuIHRoZSBuZWVkIHRvIHNwZWNpYWwgY2FzZSBjdXN0b20gcHJvcGVydGllcyB3b3Vs
ZCBnbworICAgICAgICBhd2F5LiBGb3Igbm93LCB0aG91Z2gsIHRoaXMgaXMgdGhlIHdheSB3ZSB3
b3JrIGN1c3RvbSBwcm9wZXJ0aWVzIGludG8gdGhlIGV4aXN0aW5nIHN5c3RlbS4KKworICAgICAg
ICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46CisgICAgICAgIEFkZCBhIHByb2R1Y3Rpb24gZm9yIHJl
Y29nbml6aW5nIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCBzdG9yaW5nIHRoZW0gdXNpbmcgYSBwcm9w
ZXJ0eSBJRCBvZiBDU1NQcm9wZXJ0eUN1c3RvbQorICAgICAgICBhbmQgYSBDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlIHRoYXQgaGFzIHRoZSBuYW1lL3ZhbHVlIHBhaXIuCisKKyAgICAgICAgKiBjc3Mv
Q1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbHRlclByb3BlcnRpZXMpOgorICAg
ICAgICBQYXRjaGVkIHRvIHRyYWNrIHNlZW4gY3VzdG9tIHByb3BlcnRpZXMgYW5kIHRvIGhhbmRs
ZSB0aGVtIGNvcnJlY3RseS4KKworICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVT
dHlsZVByb3BlcnRpZXMpOgorICAgICAgICBQYXNzIGluIGEgc2VlbkN1c3RvbVByb3BlcnRpZXMg
dGFibGUgdG8gZW5zdXJlIHdlIGJhaWwgd2hlbiBlbmNvdW50ZXJpbmcgdGhlIHNhbWUgY3VzdG9t
IHByb3BlcnR5IHR3aWNlLgorCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZEN1c3Rv
bVByb3BlcnR5RGVjbGFyYXRpb24pOgorICAgICAgICBDYWxsZWQgZnJvbSB0aGUgZ3JhbW1hciBw
cm9kdWN0aW9uIHRvIGNyZWF0ZSB0aGUgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS4KKworICAgICAg
ICAoV2ViQ29yZTo6aXNDdXN0b21Qcm9wZXJ0eUlkZW50aWZpZXIpOgorICAgICAgICBSZWNvZ25p
emUgdGhlIC0tIGN1c3RvbSBwcm9wZXJ0eSBkdXJpbmcgbGV4aW5nLgorCisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIFBhdGNoZWQgdG8gcmV0
dXJuIGEgQ1VTVE9NX1BST1BFUlRZIHRva2VuIHdoZW4gYSBjdXN0b20gcHJvcGVydHkgaXMgaWRl
bnRpZmllZC4KKworICAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3Jl
Ojppc0N1c3RvbVByb3BlcnR5TmFtZSk6CisgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiBm
b3IgYXNraW5nIGlmIGEgcHJvcGVydHkgbmFtZSBpcyBjdXN0b20uCisKKyAgICAgICAgKiBjc3Mv
Q1NTVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmVxdWFscyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YWx1ZTo6ZGVzdHJveSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAgIFBhdGNo
ZWQgdG8gYWRkIHN1cHBvcnQgZm9yIENTU0N1c3RvbVByb3BlcnR5VmFsdWUuCisKKyAgICAgICAg
KiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFBy
b3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAg
IEFkZCBjb2RlIGZvciBoYW5kbGluZyBjdXN0b20gcHJvcGVydGllcyBpbiB0aGUgQ1NTIE9NLgor
CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVByb3BlcnRpZXM6OmdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0aWVzOjpnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUHJvcGVydGllczo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVByb3BlcnRpZXM6OmdldEN1c3RvbVByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6cmVtb3ZlQ3VzdG9tUHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzOjpwcm9wZXJ0eUlzSW1wb3J0YW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6Y3VzdG9tUHJvcGVydHlJc0lt
cG9ydGFudCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRD
dXN0b21Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
OjphZGRQYXJzZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpmaW5kUHJvcGVydHlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbW11dGFibGVT
dHlsZVByb3BlcnRpZXM6OmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmZpbmRDU1NQcm9wZXJ0eVdp
dGhJRCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpmaW5kQ3Vz
dG9tQ1NTUHJvcGVydHlXaXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRp
ZXM6OnByb3BlcnR5TWF0Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXM6
OlByb3BlcnR5UmVmZXJlbmNlOjpjc3NOYW1lKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0
aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXM6OmZpbmRDdXN0b21Qcm9w
ZXJ0eUluZGV4KToKKyAgICAgICAgUGF0Y2hlZCB0byBzdXBwb3J0IGhhbmRsaW5nIGN1c3RvbSBw
cm9wZXJ0aWVzIGluIHRoZSBDU1MgT00uIFdlIGhhdmUgdG8gY3JlYXRlIGVxdWl2YWxlbnQgbWV0
aG9kcyB0aGF0IG9wZXJhdGUKKyAgICAgICAgb24gQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZXMg
aW5zdGVhZCBvZiBvbiBwcm9wZXJ0eSBJRHMuCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRp
ZXM6OmN1c3RvbVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
c3R5bGVGb3JLZXlmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHls
ZUZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVk
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGll
czo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQ
cm9wZXJ0aWVzKToKKyAgICAgICAgVGhlIHJlc29sdmVyIGhhcyB0byBob2xkIGEgSGFzaE1hcCBm
cm9tIEF0b21pY1N0cmluZ3MgdG8gUHJvcGVydGllcy4gSXQgbWF0Y2hlcyBpZGVudGljYWxseSB0
byBob3cgYnVpbHQtaW4KKyAgICAgICAgcHJvcGVydGllcyB3b3JrIGV4Y2VwdCB0aGF0IGFuIGV4
dGVuc2libGUgdGFibGUgKEhhc2hNYXApIGlzIHVzZWQgdG8gaG9sZCB0aGUgcHJvcGVydHkgZGF0
YS4KKworICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAgICAgICAgUGF0Y2hlZCB0byBpbmNs
dWRlIHRoZSBzcGVjaWFsIENTU1Byb3BlcnR5Q3VzdG9tIHZhbHVlIG9mIDEgKGp1c3QgYWZ0ZXIg
dGhlIENTU1Byb3BlcnR5SW52YWxpZCBpZCB2YWx1ZSBidXQgYmVmb3JlIHRoZSBmaXJzdAorICAg
ICAgICBidWlsdC1pbiBwcm9wZXJ0eSB2YWx1ZSkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6
Z2V0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpsb3dlcmNhc2VQcm9wZXJ0eU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnBvcHVsYXRlQWxsUHJvcGVydGllcyk6Cisg
ICAgICAgIFBhdGNoIGluc3BlY3RvciB0byBub3QgbG93ZXJjYXNlIENTUyBjdXN0b20gcHJvcGVy
dHkgbmFtZXMsIHNpbmNlIHRoZXkgYXJlIGNhc2Utc2Vuc2l0aXZlLgorCisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YTo6c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUN1c3RvbVByb3BlcnR5RGF0YTo6Z2V0Q3VzdG9tUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6aGFzQ3VzdG9tUHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OlN0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJh
cmVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVyaXRlZERh
dGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhl
cml0ZWREYXRhLmg6CisgICAgICAgIFRoZSBmcm9udCBlbmQgc3RvcmFnZSBpbiB0aGUgUmVuZGVy
U3R5bGUgZm9yIGN1c3RvbSBwcm9wZXJ0aWVzLiBGb3Igbm93LCBjdXN0b20gcHJvcGVydGllcyBh
cmUgYWx3YXlzIGluaGVyaXRlZCwgc28gdGhlCisgICAgICAgIGRhdGEgaXMgaW4gU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS4KKwogMjAxNS0wOS0yNCAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rLm9o
QGNvbGxhYm9yYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHR5cG8gZXJyb3JzIGlu
IGEgY29tbWVudCAoInBhc3NlZCIgLT4gIlBhc3NlZCIsICJPdmVyd2lzZSIgLT4gIk90aGVyd2lz
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU0MzUsNiArNTQzNSw4
IEBACiAJCUJDNzcyQzVFMEM0RUIzNDQwMDgzMjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5TWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzJDNUQw
QzRFQjM0NDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnlNYWMubW0gKi87IH07CiAJCUJDNzcy
RTEzMTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc3MkUxMjEzMzE2MjBDMDAx
RUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNzcyRTE2MTMzMTYyQzIwMDFFQzlDRSAvKiBD
U1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNzcyRTE1MTMzMTYyQzIwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29u
dGFpblZhbHVlLmNwcCAqLzsgfTsKKwkJQkM3NzlFMTQxQkIyMTVCQjAwQ0FBOEJGIC8qIENTU0N1
c3RvbVByb3BlcnR5VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNzc5RTEzMUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QkM3NzlFMTcxQkIyMjdDQTAwQ0FBOEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc3OUUxNTFCQjIy
NkEyMDBDQUE4QkYgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQw
ODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM3RjQ0QTcwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzdGQTYy
MDBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjFFMEQxRjBDQkQwMERCMjJBOSAvKiBM
aXZlTm9kZUxpc3QuY3BwICovOyB9OwogCQlCQzdGQTYyMTBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2
ZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzdGQTYxRjBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmggKi87IH07CkBAIC0x
MzA3MCw2ICsxMzA3Miw4IEBACiAJCUJDNzcyQzVEMEM0RUIzNDQwMDgzMjg1RiAvKiBNSU1FVHlw
ZVJlZ2lzdHJ5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE1JTUVUeXBlUmVnaXN0cnlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
NzcyRTEyMTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0xpbmVCb3hDb250YWluVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3NzJFMTUxMzMxNjJDMjAwMUVDOUNFIC8qIENT
U0xpbmVCb3hDb250YWluVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDNzc5RTEzMUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0N1c3RvbVByb3BlcnR5VmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3NzlFMTUxQkIyMjZBMjAwQ0FB
OEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDN0IyQUY4MDQ1MDgyNDEwMEE4MDAwRiAvKiBTY3JvbGxiYXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsYmFyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owog
CQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzdGQTYxRTBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpdmVOb2RlTGlzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTc5MSw2ICsyMTc5NSw3IEBACiAJCQkJ
OTM5M0U2MDIxNTFBOUExODAwMDY2RjA2IC8qIFN0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwICovLAog
CQkJCTkzOTNFNjAzMTUxQTlBMTgwMDA2NkYwNiAvKiBTdHlsZUNhY2hlZEltYWdlU2V0LmggKi8s
CiAJCQkJOURBQzdDNTYxQUYyQ0I2NDAwNDM3QzQ0IC8qIFN0eWxlQ29udGVudEFsaWdubWVudERh
dGEuaCAqLywKKwkJCQlCQzc3OUUxNTFCQjIyNkEyMDBDQUE4QkYgLyogU3R5bGVDdXN0b21Qcm9w
ZXJ0eURhdGEuaCAqLywKIAkJCQlCQzVFQjY3RTBFODFENEE3MDBCMjU5NjUgLyogU3R5bGVEYXNo
Ym9hcmRSZWdpb24uaCAqLywKIAkJCQlCQzVFQjhCNjBFODIwMUJEMDBCMjU5NjUgLyogU3R5bGVE
ZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcCAqLywKIAkJCQlCQzVFQjhCNzBFODIwMUJEMDBC
MjU5NjUgLyogU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmggKi8sCkBAIC0yMjc0OSw2
ICsyMjc1NCw3IEBACiAJCQkJMkQ4RkVCREIxNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFk
ZVZhbHVlLmggKi8sCiAJCQkJQUEwOTc4RUQwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvcklt
YWdlVmFsdWUuY3BwICovLAogCQkJCUFBMDk3OEVFMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1NDdXJz
b3JJbWFnZVZhbHVlLmggKi8sCisJCQkJQkM3NzlFMTMxQkIyMTVCQjAwQ0FBOEJGIC8qIENTU0N1
c3RvbVByb3BlcnR5VmFsdWUuaCAqLywKIAkJCQk0QTlDQzgxNTE2QkI5QUM2MDBFQzY0NUEgLyog
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcCAqLywKIAkJCQk0QTlDQzgxNjE2QkI5QUM2MDBFQzY0
NUEgLyogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmggKi8sCiAJCQkJRkI5NjVCODIxN0JCQjYyQzAw
RTgzNUI5IC8qIENTU0ZpbHRlckltYWdlVmFsdWUuY3BwICovLApAQCAtMjUxMDQsNiArMjUxMTAs
NyBAQAogCQkJCUE4Q0ZGMDRGMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzA3M0JBQTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252
ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QTUyOEU4NDE3RDdGNTJGMDBBQTk1MTggLyog
RmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzc3OUUxNzFCQjIyN0NBMDBD
QUE4QkYgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
Njk5ODcyMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyNzUzNTY5MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMkUyN0NBMDBCMEYyQjA5MDBGMTdDN0IgLyogRmxvYXRQb2lu
dDNELmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDk5LDYgKzI2MTA2LDcgQEAKIAkJCQkxNDFEQzA1
MzE2NDgzNEI5MDAzNzFFNUEgLyogTGF5b3V0UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEy
NTM4RDQxM0Y5QjYwQTAwMDI0NzU0IC8qIExheW91dFJlcGFpbnRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQxREMwNTQxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFNpemUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUJDNzc5RTE0MUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogTGF5
b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MURDMDQ4MTY0ODM0OEYwMDM3MUU1QSAv
KiBMYXlvdXRVbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAzQzJCOTFCQTIzQTI2MDBFMjYz
MzcgLyogTGVnYWN5QW55LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxOTAy
MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU0FzcGVjdFJh
dGlvVmFsdWUuaCIKICNpbmNsdWRlICJDU1NCYXNpY1NoYXBlcy5oIgogI2luY2x1ZGUgIkNTU0Jv
cmRlckltYWdlLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250VmFsdWUuaCIKICNp
bmNsdWRlICJDU1NGdW5jdGlvblZhbHVlLmgiCkBAIC0yMDk1LDYgKzIwOTYsMjAgQEAgaW5saW5l
IHN0YXRpYyBib29sIGlzRmxleE9yR3JpZChDb250YWluZQogICAgIHJldHVybiBlbGVtZW50ICYm
IGVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKSAmJiBlbGVtZW50LT5jb21wdXRlZFN0eWxlKCktPmlz
RGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KCk7CiB9CiAKK1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSkgY29uc3QKK3sKKyAgICBOb2RlKiBzdHlsZWROb2RlID0gdGhpcy0+c3R5bGVkTm9k
ZSgpOworICAgIGlmICghc3R5bGVkTm9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gY29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVy
dHkoc3R5bGVkTm9kZSwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyLCBDU1NQcm9wZXJ0eUN1c3Rv
bSk7CisgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmhhc0N1c3RvbVByb3BlcnR5KHByb3BlcnR5
TmFtZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5nIHJlc3VsdCA9IHN0
eWxlLT5nZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIENT
U0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZShwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7Cit9CisK
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBjb25z
dAogewogICAgIE5vZGUqIHN0eWxlZE5vZGUgPSB0aGlzLT5zdHlsZWROb2RlKCk7CkBAIC0zNTUz
LDYgKzM1NjgsOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXcml0aW5nTW9kZToKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFN2Z1NoYWRvdzoKICAgICAgICAgICAgIHJldHVybiBzdmdQcm9wZXJ0eVZhbHVl
KHByb3BlcnR5SUQsIERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUN1c3RvbToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgbG9nVW5pbXBsZW1lbnRlZFByb3BlcnR5SUQo
cHJvcGVydHlJRCk7CkBAIC0zNTc3LDE1ICszNTk1LDM1IEBAIHVuc2lnbmVkIENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6bGUKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHJldHVybiBudW1Db21wdXRlZFByb3BlcnRpZXM7CisgICAgY29uc3QgSGFzaE1hcDxB
dG9taWNTdHJpbmcsIFN0cmluZz4qIGN1c3RvbVByb3BlcnRpZXMgPSBzdHlsZS0+Y3VzdG9tUHJv
cGVydGllcygpOworICAgIHJldHVybiBudW1Db21wdXRlZFByb3BlcnRpZXMgKyAoY3VzdG9tUHJv
cGVydGllcyA/IGN1c3RvbVByb3BlcnRpZXMtPnNpemUoKSA6IDApOwogfQogCiBTdHJpbmcgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtKHVuc2lnbmVkIGkpIGNvbnN0CiB7CiAgICAg
aWYgKGkgPj0gbGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIAor
ICAgIGlmIChpIDwgbnVtQ29tcHV0ZWRQcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm4gZ2V0UHJv
cGVydHlOYW1lU3RyaW5nKGNvbXB1dGVkUHJvcGVydGllc1tpXSk7CisgICAgCisgICAgTm9kZSog
bm9kZSA9IG1fbm9kZS5nZXQoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCi0gICAgcmV0dXJuIGdldFByb3BlcnR5TmFtZVN0cmluZyhjb21wdXRlZFBy
b3BlcnRpZXNbaV0pOworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG5vZGUtPmNvbXB1dGVkU3R5
bGUobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKKyAgICBpZiAoIXN0eWxlKQorICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBpbmRleCA9IGkgLSBudW1D
b21wdXRlZFByb3BlcnRpZXM7CisgICAgCisgICAgY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcs
IFN0cmluZz4qIGN1c3RvbVByb3BlcnRpZXMgPSBzdHlsZS0+Y3VzdG9tUHJvcGVydGllcygpOwor
ICAgIGlmICghY3VzdG9tUHJvcGVydGllcyB8fCBpbmRleCA+PSBjdXN0b21Qcm9wZXJ0aWVzLT5z
aXplKCkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIAorICAgIFZlY3RvcjxT
dHJpbmcsIDQ+IHJlc3VsdHM7CisgICAgY29weUtleXNUb1ZlY3RvcigqY3VzdG9tUHJvcGVydGll
cywgcmVzdWx0cyk7CisgICAgcmV0dXJuIHJlc3VsdHMuYXQoaW5kZXgpOwogfQogCiBib29sIENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5TWF0Y2hlcyhDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQsIGNvbnN0IENTU1ZhbHVlKiB2YWx1ZSkgY29uc3QKQEAgLTM2NjYsNiArMzcwNCwyMiBA
QCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsCiAgICAgICAgIGlmICh2
YWx1ZSkKICAgICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUu
cmVsZWFzZSgpLCBmYWxzZSkpOwogICAgIH0KKyAgICAKKyAgICBOb2RlKiBzdHlsZWROb2RlID0g
dGhpcy0+c3R5bGVkTm9kZSgpOworICAgIGlmIChzdHlsZWROb2RlKSB7CisgICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eShzdHls
ZWROb2RlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIsIENTU1Byb3BlcnR5Q3VzdG9tKTsKKyAg
ICAgICAgaWYgKHN0eWxlKSB7CisgICAgICAgICAgICBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgU3RyaW5nPiogY3VzdG9tUHJvcGVydGllcyA9IHN0eWxlLT5jdXN0b21Qcm9wZXJ0aWVzKCk7
CisgICAgICAgICAgICBpZiAoY3VzdG9tUHJvcGVydGllcykgeworICAgICAgICAgICAgICAgIEhh
c2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjdXN0b21Q
cm9wZXJ0aWVzLT5lbmQoKTsKKyAgICAgICAgICAgICAgICBmb3IgKEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGN1c3RvbVByb3BlcnRpZXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZT4gdmFsdWUgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUo
aXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlDdXN0b20sIHZhbHVlLnJlbGVhc2UoKSwgZmFsc2UpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCiAg
ICAgcmV0dXJuIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlz
dC5zaXplKCkpOwogfQogCkBAIC0zNjc2LDYgKzM3MzAsMTEgQEAgQ1NTUnVsZSogQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpwYQogCiBSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSkKIHsKKyAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgewor
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvciht
X25vZGUsIG1fYWxsb3dWaXNpdGVkU3R5bGUsIG1fcHNldWRvRWxlbWVudFNwZWNpZmllcikuY3Vz
dG9tUHJvcGVydHlWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gdmFsdWUgPyB2
YWx1ZS0+Y2xvbmVGb3JDU1NPTSgpIDogbnVsbHB0cjsKKyAgICB9CisKICAgICBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFw
cm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM2ODUsNiArMzc0NCwxMyBA
QCBSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhCiAKIFN0cmluZyBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nICZw
cm9wZXJ0eU5hbWUpCiB7CisgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3BlcnR5TmFt
ZSkpIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3IobV9ub2RlLCBtX2FsbG93VmlzaXRlZFN0eWxlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZp
ZXIpLmN1c3RvbVByb3BlcnR5VmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICAgICAgaWYgKCF2YWx1
ZSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlLT5j
c3NUZXh0KCk7CisgICAgfQorCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJv
cGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2
ICs1MCw3IEBAIHB1YmxpYzoKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKFBhc3NSZWZQdHI8
Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBOT1BTRVVE
Tyk7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwg
RVVwZGF0ZUxheW91dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7CisgICAgUmVmUHRyPENTU1ZhbHVl
PiBjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBjb25zdDsK
IAogICAgIC8vIEhlbHBlciBtZXRob2RzIGZvciBIVE1MIGVkaXRpbmcuCiAgICAgUmVmPE11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJ
RCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlX2gKKyNkZWZpbmUgQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZV9oCisKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgdmFsdWUpKTsK
KyAgICB9CisgICAgCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZSA9PSBvdGhlci5tX25hbWUgJiYgbV92YWx1
ZSA9PSBvdGhlci5tX3ZhbHVlOyB9CisKKyAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0
IHsgcmV0dXJuIHZhbHVlKCk7IH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIGNvbnN0IFN0cmluZyYgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CisgICAgCitwcml2YXRlOgorICAgIENTU0N1c3RvbVByb3BlcnR5
VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorICAg
ICAgICA6IENTU1ZhbHVlKEN1c3RvbVByb3BlcnR5Q2xhc3MpCisgICAgICAgICwgbV9uYW1lKG5h
bWUpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3Qg
QXRvbWljU3RyaW5nIG1fbmFtZTsKKyAgICBjb25zdCBTdHJpbmcgbV92YWx1ZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUo
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSwgaXNDdXN0b21Qcm9wZXJ0eVZhbHVlKCkpCisKKyNlbmRp
ZiAvLyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueS5pbgkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueS5pbgkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNDU1NUb2tlbkFTdHJpbmcoaW50CiAgICAgY2FzZSBESVJGVU5DVElPTjoKICAgICBjYXNl
IFJPTEVGVU5DVElPTjoKICNlbmRpZgorICAgIGNhc2UgQ1VTVE9NX1BST1BFUlRZOgogICAgIGNh
c2UgVU5JQ09ERVJBTkdFOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgpAQCAt
MjQ0LDYgKzI0NSw4IEBAIHN0YXRpYyBib29sIHNlbGVjdG9yTGlzdERvZXNOb3RNYXRjaEFueVAK
ICV0b2tlbiA8c3RyaW5nPiBST0xFRlVOQ1RJT04KICNlbmRpZgogCisldG9rZW4gPHN0cmluZz4g
Q1VTVE9NX1BST1BFUlRZCisKICV0b2tlbiA8c3RyaW5nPiBVTklDT0RFUkFOR0UKIAogJXR5cGUg
PHJlbGF0aW9uPiBjb21iaW5hdG9yCkBAIC0xNTM1LDcgKzE1MzgsMTMgQEAgZGVjbF9saXN0X3Jl
Y292ZXJ5OgogICAgIDsKIAogZGVjbGFyYXRpb246Ci0gICAgcHJvcGVydHkgJzonIG1heWJlX3Nw
YWNlIGV4cHIgcHJpb3JpdHkgeworICAgIENVU1RPTV9QUk9QRVJUWSBtYXliZV9zcGFjZSAnOicg
bWF5YmVfc3BhY2UgZXhwciBwcmlvcml0eSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQ
YXJzZXJWYWx1ZUxpc3Q+IHByb3BlcnR5VmFsdWUoJDUpOworICAgICAgICBwYXJzZXItPmFkZEN1
c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oJDEsIHByb3BlcnR5VmFsdWUuZ2V0KCksICQ2KTsKKyAg
ICAgICAgJCQgPSB0cnVlOworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZCgkNiwgdHJ1
ZSk7CisgICAgfQorICAgIHwgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpb3JpdHkg
ewogICAgICAgICAkJCA9IGZhbHNlOwogICAgICAgICBib29sIGlzUHJvcGVydHlQYXJzZWQgPSBm
YWxzZTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclZhbHVlTGlzdD4gcHJvcGVy
dHlWYWx1ZSgkNCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMTkw
MjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJDU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWUu
aCIKICNpbmNsdWRlICJDU1NDcm9zc2ZhZGVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvcklt
YWdlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVk
ZSAiQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlUnVsZS5oIgog
I2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKQEAgLTE1NzUsMTMgKzE1NzYsMjMgQEAg
Q1NTUGFyc2VyOjpTb3VyY2VTaXplIENTU1BhcnNlcjo6c291cmNlUwogICAgIHJldHVybiBTb3Vy
Y2VTaXplKFdURjo6bW92ZShleHByZXNzaW9uKSwgV1RGOjptb3ZlKHZhbHVlKSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJvb2wgaW1wb3J0YW50LCBjb25zdCBD
U1NQYXJzZXI6OlBhcnNlZFByb3BlcnR5VmVjdG9yJiBpbnB1dCwgVmVjdG9yPENTU1Byb3BlcnR5
LCAyNTY+JiBvdXRwdXQsIHNpemVfdCYgdW51c2VkRW50cmllcywgc3RkOjpiaXRzZXQ8bnVtQ1NT
UHJvcGVydGllcz4mIHNlZW5Qcm9wZXJ0aWVzKQorc3RhdGljIGlubGluZSB2b2lkIGZpbHRlclBy
b3BlcnRpZXMoYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlcjo6UGFyc2VkUHJvcGVydHlW
ZWN0b3ImIGlucHV0LCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4mIG91dHB1dCwgc2l6ZV90JiB1
bnVzZWRFbnRyaWVzLCBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzPiYgc2VlblByb3BlcnRp
ZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlbkN1c3RvbVByb3BlcnRpZXMpCiB7CiAgICAg
Ly8gQWRkIHByb3BlcnRpZXMgaW4gcmV2ZXJzZSBvcmRlciBzbyB0aGF0IGhpZ2hlc3QgcHJpb3Jp
dHkgZGVmaW5pdGlvbnMgYXJlIHJlYWNoZWQgZmlyc3QuIER1cGxpY2F0ZSBkZWZpbml0aW9ucyBj
YW4gdGhlbiBiZSBpZ25vcmVkIHdoZW4gZm91bmQuCiAgICAgZm9yIChpbnQgaSA9IGlucHV0LnNp
emUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5JiBwcm9w
ZXJ0eSA9IGlucHV0W2ldOwogICAgICAgICBpZiAocHJvcGVydHkuaXNJbXBvcnRhbnQoKSAhPSBp
bXBvcnRhbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChw
cm9wZXJ0eS5pZCgpID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7CisgICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqcHJv
cGVydHkudmFsdWUoKSkubmFtZSgpOworICAgICAgICAgICAgaWYgKHNlZW5DdXN0b21Qcm9wZXJ0
aWVzLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgc2VlbkN1c3RvbVByb3BlcnRpZXMuYWRkKG5hbWUpOworICAgICAgICAgICAgb3V0cHV0Wy0t
dW51c2VkRW50cmllc10gPSBwcm9wZXJ0eTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKICAgICAgICAgY29uc3QgdW5zaWduZWQgcHJvcGVydHlJREluZGV4ID0gcHJvcGVydHku
aWQoKSAtIGZpcnN0Q1NTUHJvcGVydHk7CiAgICAgICAgIEFTU0VSVChwcm9wZXJ0eUlESW5kZXgg
PCBzZWVuUHJvcGVydGllcy5zaXplKCkpOwogICAgICAgICBpZiAoc2VlblByb3BlcnRpZXNbcHJv
cGVydHlJREluZGV4XSkKQEAgLTE1OTgsOCArMTYwOSw5IEBAIFJlZjxJbW11dGFibGVTdHlsZVBy
b3BlcnRpZXM+IENTU1BhcnNlcjoKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gcmVzdWx0
cyh1bnVzZWRFbnRyaWVzKTsKIAogICAgIC8vIEltcG9ydGFudCBwcm9wZXJ0aWVzIGhhdmUgaGln
aGVyIHByaW9yaXR5LCBzbyBhZGQgdGhlbSBmaXJzdC4gRHVwbGljYXRlIGRlZmluaXRpb25zIGNh
biB0aGVuIGJlIGlnbm9yZWQgd2hlbiBmb3VuZC4KLSAgICBmaWx0ZXJQcm9wZXJ0aWVzKHRydWUs
IG1fcGFyc2VkUHJvcGVydGllcywgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRp
ZXMpOwotICAgIGZpbHRlclByb3BlcnRpZXMoZmFsc2UsIG1fcGFyc2VkUHJvcGVydGllcywgcmVz
dWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRpZXMpOworICAgIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPiBzZWVuQ3VzdG9tUHJvcGVydGllczsKKyAgICBmaWx0ZXJQcm9wZXJ0aWVzKHRydWUs
IG1fcGFyc2VkUHJvcGVydGllcywgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRp
ZXMsIHNlZW5DdXN0b21Qcm9wZXJ0aWVzKTsKKyAgICBmaWx0ZXJQcm9wZXJ0aWVzKGZhbHNlLCBt
X3BhcnNlZFByb3BlcnRpZXMsIHJlc3VsdHMsIHVudXNlZEVudHJpZXMsIHNlZW5Qcm9wZXJ0aWVz
LCBzZWVuQ3VzdG9tUHJvcGVydGllcyk7CiAgICAgaWYgKHVudXNlZEVudHJpZXMpCiAgICAgICAg
IHJlc3VsdHMucmVtb3ZlKDAsIHVudXNlZEVudHJpZXMpOwogCkBAIC00MTI0LDcgKzQxMzYsMjkg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQWx0KENTU1Byb3BlcnR5SUQgcAogCiAgICAgcmV0dXJu
IGZhbHNlOwogfQotICAgIAorCit2b2lkIENTU1BhcnNlcjo6YWRkQ3VzdG9tUHJvcGVydHlEZWNs
YXJhdGlvbihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIG5hbWUsIENTU1BhcnNlclZhbHVlTGlzdCog
dmFsdWUsIGJvb2wgaW1wb3J0YW50KQoreworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFRoZSBjdXN0b20gcHJvcGVydHkgY29tZXMgaW4gYXMgYSBwYXJzZWQgc2V0
IG9mIENTU1BhcnNlclZhbHVlcyBjb2xsZWN0ZWQgaW50byBhIGxpc3QuCisgICAgLy8gRm9yIENT
UyB2YXJpYWJsZXMsIHdlIGp1c3Qgd2FudCB0byB0cmVhdCB0aGUgZW50aXJlIHNldCBvZiB2YWx1
ZXMgYXMgYSBzdHJpbmcsIHNvIHdoYXQgd2UgZG8KKyAgICAvLyBpcyBidWlsZCB1cCBhIHNldCBv
ZiBDU1NWYWx1ZXMgYW5kIHNlcmlhbGl6ZSB0aGVtIHVzaW5nIGNzc1RleHQsIHNlcGFyYXRpbmcg
bXVsdGlwbGUgdmFsdWVzCisgICAgLy8gd2l0aCBzcGFjZXMuCisgICAgQXRvbWljU3RyaW5nIHBy
b3BlcnR5TmFtZSA9IG5hbWU7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZS0+c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKGkp
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBSZWZQdHI8Q1NTVmFs
dWU+IGNzc1ZhbHVlID0gdmFsdWUtPnZhbHVlQXQoaSktPmNyZWF0ZUNTU1ZhbHVlKCk7CisgICAg
ICAgIGlmICghY3NzVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGNzc1ZhbHVlLT5jc3NUZXh0KCkpOworICAgIH0KKyAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUN1c3RvbSwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKHByb3BlcnR5TmFt
ZSwgYnVpbGRlci50b1N0cmluZygpLmxvd2VyKCkpLCBpbXBvcnRhbnQsIGZhbHNlKTsKK30KKwog
Ly8gWyA8c3RyaW5nPiB8IDx1cmk+IHwgPGNvdW50ZXI+IHwgYXR0cihYKSB8IG9wZW4tcXVvdGUg
fCBjbG9zZS1xdW90ZSB8IG5vLW9wZW4tcXVvdGUgfCBuby1jbG9zZS1xdW90ZSBdKyB8IGluaGVy
aXQKIC8vIGluIENTUyAyLjEgdGhpcyBnb3Qgc29tZXdoYXQgcmVkdWNlZDoKIC8vIFsgPHN0cmlu
Zz4gfCBhdHRyKFgpIHwgb3Blbi1xdW90ZSB8IGNsb3NlLXF1b3RlIHwgbm8tb3Blbi1xdW90ZSB8
IG5vLWNsb3NlLXF1b3RlIF0rIHwgaW5oZXJpdApAQCAtMTA4ODcsNiArMTA5MjEsMTMgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzSWRlbnRpZmllclN0YXJ0QWZ0ZQogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0N1c3RvbVByb3BlcnR5
SWRlbnRpZmllcihDaGFyYWN0ZXJUeXBlKiBjdXJyZW50Q2hhcmFjdGVyKQoreworICAgIHJldHVy
biBpc0FTQ0lJQWxwaGEoY3VycmVudENoYXJhY3RlclswXSkgfHwgY3VycmVudENoYXJhY3Rlclsw
XSA9PSAnXycgfHwgY3VycmVudENoYXJhY3RlclswXSA+PSAxMjgKKyAgICAgICAgfHwgKGN1cnJl
bnRDaGFyYWN0ZXJbMF0gPT0gJ1xcJyAmJiBpc0NTU0VzY2FwZShjdXJyZW50Q2hhcmFjdGVyWzFd
KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIGlubGlu
ZSBib29sIGlzRXF1YWxUb0NTU0lkZW50aWZpZXIoQ2hhcmFjdGVyVHlwZSogY3NzU3RyaW5nLCBj
b25zdCBjaGFyKiBjb25zdGFudFN0cmluZykKIHsKICAgICAvLyBDb21wYXJlIGFuIGNoYXJhY3Rl
ciBtZW1vcnkgZGF0YSB3aXRoIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZy4KQEAgLTExMTI1LDEw
ICsxMTE2Niw2IEBAIGlubGluZSBib29sIENTU1BhcnNlcjo6cGFyc2VJZGVudGlmaWVySW4KIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjpw
YXJzZUlkZW50aWZpZXIoQ2hhcmFjdGVyVHlwZSomIHJlc3VsdCwgQ1NTUGFyc2VyU3RyaW5nJiBy
ZXN1bHRTdHJpbmcsIGJvb2wmIGhhc0VzY2FwZSkKIHsKLSAgICAvLyBJZiBhIHZhbGlkIGlkZW50
aWZpZXIgc3RhcnQgaXMgZm91bmQsIHdlIGNhbiBzYWZlbHkKLSAgICAvLyBwYXJzZSB0aGUgaWRl
bnRpZmllciB1bnRpbCB0aGUgbmV4dCBpbnZhbGlkIGNoYXJhY3Rlci4KLSAgICBBU1NFUlQoaXNJ
ZGVudGlmaWVyU3RhcnQ8Q2hhcmFjdGVyVHlwZT4oKSk7Ci0KICAgICBDaGFyYWN0ZXJUeXBlKiBz
dGFydCA9IGN1cnJlbnRDaGFyYWN0ZXI8Q2hhcmFjdGVyVHlwZT4oKTsKICAgICBpZiAoVU5MSUtF
TFkoIXBhcnNlSWRlbnRpZmllckludGVybmFsKGN1cnJlbnRDaGFyYWN0ZXI8Q2hhcmFjdGVyVHlw
ZT4oKSwgcmVzdWx0LCBoYXNFc2NhcGUpKSkgewogICAgICAgICAvLyBGb3VuZCBhbiBlc2NhcGUg
d2UgY291bGRuJ3QgaGFuZGxlIHdpdGggOCBiaXRzLCBjb3B5IHdoYXQgaGFzIGJlZW4gcmVjb2du
aXplZCBhbmQgY29udGludWUKQEAgLTEyMDY4LDYgKzEyMTA1LDExIEBAIHJlc3RhcnRBZnRlckNv
bW1lbnQ6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHRTdHJpbmcuc2V0TGVuZ3Ro
KHJlc3VsdCAtIHRva2VuU3RhcnQ8U3JjQ2hhcmFjdGVyVHlwZT4oKSk7CiAgICAgICAgICAgICB5
eWx2YWwtPnN0cmluZyA9IHJlc3VsdFN0cmluZzsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50
Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KClbMF0gPT0gJy0nICYmIGlzSWRlbnRpZmllclN0
YXJ0QWZ0ZXJEYXNoKGN1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKSArIDEpKSB7
CisgICAgICAgICAgICAtLWN1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKTsKKyAg
ICAgICAgICAgIHBhcnNlSWRlbnRpZmllcihyZXN1bHQsIHJlc3VsdFN0cmluZywgaGFzRXNjYXBl
KTsKKyAgICAgICAgICAgIG1fdG9rZW4gPSBDVVNUT01fUFJPUEVSVFk7CisgICAgICAgICAgICB5
eWx2YWwtPnN0cmluZyA9IHJlc3VsdFN0cmluZzsKICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50
Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KClbMF0gPT0gJy0nICYmIGN1cnJlbnRDaGFyYWN0
ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKVsxXSA9PSAnPicpIHsKICAgICAgICAgICAgIGN1cnJlbnRD
aGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKSArPSAyOwogICAgICAgICAgICAgbV90b2tlbiA9
IFNHTUxfQ0Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCShyZXZpc2lvbiAxOTAyMDYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2
ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBwYXJzZVF1b3RlcyhDU1NQcm9wZXJ0eUlELCBi
b29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUFsdChDU1NQcm9wZXJ0eUlELCBib29sIGlt
cG9ydGFudCk7CiAgICAgCisgICAgdm9pZCBhZGRDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKGNv
bnN0IENTU1BhcnNlclN0cmluZyYsIENTU1BhcnNlclZhbHVlTGlzdCosIGJvb2wgaW1wb3J0YW50
KTsKKyAgICAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQXR0cihDU1NQYXJzZXJWYWx1ZUxp
c3QmIGFyZ3MpOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUJhY2tncm91bmRDb2xvcigp
OwpAQCAtNzU1LDYgKzc1NywxMSBAQCBpbmxpbmUgVUNoYXIgQ1NTUGFyc2VyOjp0b2tlblN0YXJ0
Q2hhcigpCiAgICAgcmV0dXJuICptX3Rva2VuU3RhcnQucHRyMTY7CiB9CiAKK2lubGluZSBib29s
IGlzQ3VzdG9tUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQoreworICAg
IHJldHVybiBwcm9wZXJ0eU5hbWUubGVuZ3RoKCkgPiAyICYmIHByb3BlcnR5TmFtZS5jaGFyYWN0
ZXJBdCgwKSA9PSAnLScgJiYgcHJvcGVydHlOYW1lLmNoYXJhY3RlckF0KDEpID09ICctJzsKK30K
KwogaW5saW5lIGludCBjc3N5eWxleCh2b2lkKiB5eWx2YWwsIENTU1BhcnNlciogcGFyc2VyKQog
ewogICAgIHJldHVybiBwYXJzZXItPmxleCh5eWx2YWwpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NTQ29udGVu
dERpc3RyaWJ1dGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Jvc3NmYWRlVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZpbHRlckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJD
U1NGb250RmFjZVNyY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgpA
QCAtMjM2LDYgKzIzNyw5IEBAIGJvb2wgQ1NTVmFsdWU6OmVxdWFscyhjb25zdCBDU1NWYWx1ZSYg
b3QKICNlbmRpZgogICAgICAgICBjYXNlIENTU0NvbnRlbnREaXN0cmlidXRpb25DbGFzczoKICAg
ICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0NvbnRlbnREaXN0cmlidXRpb25W
YWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBDdXN0b21Qcm9wZXJ0eUNsYXNzOgor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMz
MCw3ICszMzQsMTAgQEAgU3RyaW5nIENTU1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICNlbmRpZgog
ICAgIGNhc2UgQ1NTQ29udGVudERpc3RyaWJ1dGlvbkNsYXNzOgogICAgICAgICByZXR1cm4gZG93
bmNhc3Q8Q1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgp
OworICAgIGNhc2UgQ3VzdG9tUHJvcGVydHlDbGFzczoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAgICAgfQor
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpAQCAt
NDUzLDYgKzQ2MCw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAgIGNhc2UgQ1NTQ29u
dGVudERpc3RyaWJ1dGlvbkNsYXNzOgogICAgICAgICBkZWxldGUgZG93bmNhc3Q8Q1NTQ29udGVu
dERpc3RyaWJ1dGlvblZhbHVlPih0aGlzKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3Vz
dG9tUHJvcGVydHlDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+KHRoaXMpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgJKHJldmlzaW9uIDE5MDIwNikK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2
ICs3Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2FudmFzVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2NsYXNzVHlwZSA9PSBDYW52YXNDbGFzczsgfQogICAgIGJvb2wgaXNDcm9zc2ZhZGVWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IENyb3NzZmFkZUNsYXNzOyB9CiAgICAg
Ym9vbCBpc0N1cnNvckltYWdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBD
dXJzb3JJbWFnZUNsYXNzOyB9CisgICAgYm9vbCBpc0N1c3RvbVByb3BlcnR5VmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDdXN0b21Qcm9wZXJ0eUNsYXNzOyB9CiAgICAgYm9v
bCBpc0Z1bmN0aW9uVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBGdW5jdGlv
bkNsYXNzOyB9CiAgICAgYm9vbCBpc0ZvbnRGZWF0dXJlVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2NsYXNzVHlwZSA9PSBGb250RmVhdHVyZUNsYXNzOyB9CiAgICAgYm9vbCBpc0ZvbnRGYWNlU3Jj
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBGb250RmFjZVNyY0NsYXNzOyB9
CkBAIC0xNzYsNyArMTc3LDggQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICAgICAgICAgQ1NTQ29u
dGVudERpc3RyaWJ1dGlvbkNsYXNzLAotCisgICAgICAgIEN1c3RvbVByb3BlcnR5Q2xhc3MsCisg
ICAgICAgIAogICAgICAgICAvLyBMaXN0IGNsYXNzIHR5cGVzIG11c3QgYXBwZWFyIGFmdGVyIFZh
bHVlTGlzdENsYXNzLgogICAgICAgICBWYWx1ZUxpc3RDbGFzcywKICNpZiBFTkFCTEUoQ1NTX0lN
QUdFX1NFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogCisjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hl
ZXQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTE2Miw2ICsxNjMsMTMgQEAgdm9pZCBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAogCiBSZWZQdHI8Q1NTVmFsdWU+IFBy
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKKyAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eU5hbWUocHJv
cGVydHlOYW1lKSkgeworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gbV9wcm9wZXJ0
eVNldC0+Z2V0Q3VzdG9tUHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBj
bG9uZUFuZENhY2hlRm9yQ1NTT00odmFsdWUuZ2V0KCkpOworICAgIH0KKyAgICAKICAgICBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAg
aWYgKCFwcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3MCw2ICsxNzgs
OSBAQCBSZWZQdHI8Q1NTVmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsCiAKIFN0cmluZyBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUpCiB7CisgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3Bl
cnR5TmFtZSkpCisgICAgICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LT5nZXRDdXN0b21Qcm9wZXJ0
eVZhbHVlKHByb3BlcnR5TmFtZSk7CisKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBj
c3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUlEKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xNzgsNiArMTg5LDkgQEAgU3RyaW5nIFByb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6ZwogCiBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQog
eworICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKQorICAgICAgICBy
ZXR1cm4gbV9wcm9wZXJ0eVNldC0+Y3VzdG9tUHJvcGVydHlJc0ltcG9ydGFudChwcm9wZXJ0eU5h
bWUpID8gImltcG9ydGFudCIgOiAiIjsKKwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9
IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SUQpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTIwMyw3ICsyMTcsMTAgQEAgYm9vbCBQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb246OmlzUAogdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb246OnNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHByaW9yaXR5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKKyAg
ICAKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5
TmFtZSk7CisgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpCisgICAg
ICAgIHByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUN1c3RvbTsKICAgICBpZiAoIXByb3BlcnR5SUQp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMjEzLDcgKzIzMCw3IEBAIHZvaWQgUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uOjpzZXQKICAgICBib29sIGltcG9ydGFudCA9IHByaW9yaXR5LmZp
bmQoImltcG9ydGFudCIsIDAsIGZhbHNlKSAhPSBub3RGb3VuZDsKIAogICAgIGVjID0gMDsKLSAg
ICBib29sIGNoYW5nZWQgPSBtX3Byb3BlcnR5U2V0LT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2
YWx1ZSwgaW1wb3J0YW50LCBjb250ZXh0U3R5bGVTaGVldCgpKTsKKyAgICBib29sIGNoYW5nZWQg
PSBwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5Q3VzdG9tID8gbV9wcm9wZXJ0eVNldC0+c2V0UHJv
cGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQoKSkg
OiBtX3Byb3BlcnR5U2V0LT5zZXRDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHZhbHVlLCBp
bXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KCkpOwogCiAgICAgZGlkTXV0YXRlKGNoYW5nZWQg
PyBQcm9wZXJ0eUNoYW5nZWQgOiBOb0NoYW5nZXMpOwogCkBAIC0yMjgsNiArMjQ1LDggQEAgU3Ry
aW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cgogewogICAgIFN0eWxlQXR0cmli
dXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKKyAgICBpZiAoaXNDdXN0
b21Qcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcHJvcGVydHlJRCA9IENTU1By
b3BlcnR5Q3VzdG9tOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCkBAIC0yMzYsNyArMjU1LDcgQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6cgogCiAgICAgZWMgPSAwOwogICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgYm9vbCBj
aGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+cmVtb3ZlUHJvcGVydHkocHJvcGVydHlJRCwgJnJlc3Vs
dCk7CisgICAgYm9vbCBjaGFuZ2VkID0gcHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUN1c3RvbSA/
IG1fcHJvcGVydHlTZXQtPnJlbW92ZVByb3BlcnR5KHByb3BlcnR5SUQsICZyZXN1bHQpIDogbV9w
cm9wZXJ0eVNldC0+cmVtb3ZlQ3VzdG9tUHJvcGVydHkocHJvcGVydHlOYW1lLCAmcmVzdWx0KTsK
IAogICAgIGRpZE11dGF0ZShjaGFuZ2VkID8gUHJvcGVydHlDaGFuZ2VkIDogTm9DaGFuZ2VzKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDE5
MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAK
ICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgpAQCAtMjIwLDYg
KzIyMSwxNCBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eVZhbHVlCiAgICAg
fQogfQogCitTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBjb25zdAoreworICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWUgPSBnZXRDdXN0b21Qcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5TmFtZSk7CisgICAgaWYg
KHZhbHVlKQorICAgICAgICByZXR1cm4gdmFsdWUtPmNzc1RleHQoKTsKKyAgICByZXR1cm4gU3Ry
aW5nKCk7Cit9CisKIFN0cmluZyBTdHlsZVByb3BlcnRpZXM6OmJvcmRlclNwYWNpbmdWYWx1ZShj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpIGNvbnN0CiB7CiAgICAgUmVm
UHRyPENTU1ZhbHVlPiBob3Jpem9udGFsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbMF0pOwpAQCAtNTg3LDYgKzU5NiwxNCBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBTdHlsZVByb3BlcnRpZXM6OmdlCiAgICAgcmV0dXJuIHByb3BlcnR5QXQoZm91bmRQ
cm9wZXJ0eUluZGV4KS52YWx1ZSgpOwogfQogCitQYXNzUmVmUHRyPENTU1ZhbHVlPiBTdHlsZVBy
b3BlcnRpZXM6OmdldEN1c3RvbVByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0Cit7CisgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZpbmRDdXN0b21Q
cm9wZXJ0eUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgaWYgKGZvdW5kUHJvcGVydHlJbmRleCA9
PSAtMSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb3BlcnR5QXQoZm91
bmRQcm9wZXJ0eUluZGV4KS52YWx1ZSgpOworfQorCiBib29sIE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OnJlbW92ZVNob3J0aGFuZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsK
ICAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3Bl
cnR5KHByb3BlcnR5SUQpOwpAQCAtNjMxLDYgKzY0OCwyNSBAQCBib29sIE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OnJlbW92ZVByb3BlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6cmVtb3ZlQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUsIFN0cmluZyogcmV0dXJuVGV4dCkKK3sKKyAgICBpbnQgZm91bmRQcm9wZXJ0eUlu
ZGV4ID0gZmluZEN1c3RvbVByb3BlcnR5SW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBpZiAoZm91
bmRQcm9wZXJ0eUluZGV4ID09IC0xKSB7CisgICAgICAgIGlmIChyZXR1cm5UZXh0KQorICAgICAg
ICAgICAgKnJldHVyblRleHQgPSAiIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmIChyZXR1cm5UZXh0KQorICAgICAgICAqcmV0dXJuVGV4dCA9IHByb3BlcnR5QXQoZm91
bmRQcm9wZXJ0eUluZGV4KS52YWx1ZSgpLT5jc3NUZXh0KCk7CisKKyAgICAvLyBBIG1vcmUgZWZm
aWNpZW50IHJlbW92YWwgc3RyYXRlZ3kgd291bGQgaW52b2x2ZSBtYXJraW5nIGVudHJpZXMgYXMg
ZW1wdHkKKyAgICAvLyBhbmQgc3dlZXBpbmcgdGhlbSB3aGVuIHRoZSB2ZWN0b3IgZ3Jvd3MgdG9v
IGJpZy4KKyAgICBtX3Byb3BlcnR5VmVjdG9yLnJlbW92ZShmb3VuZFByb3BlcnR5SW5kZXgpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6cmVt
b3ZlUHJlZml4ZWRPclVucHJlZml4ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQp
CiB7CiAgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZpbmRQcm9wZXJ0eUluZGV4KHByZWZp
eGluZ1ZhcmlhbnRGb3JQcm9wZXJ0eUlkKHByb3BlcnR5SUQpKTsKQEAgLTY1Niw2ICs2OTIsMTQg
QEAgYm9vbCBTdHlsZVByb3BlcnRpZXM6OnByb3BlcnR5SXNJbXBvcnRhbgogICAgIHJldHVybiB0
cnVlOwogfQogCitib29sIFN0eWxlUHJvcGVydGllczo6Y3VzdG9tUHJvcGVydHlJc0ltcG9ydGFu
dChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBpbnQgZm91bmRQcm9w
ZXJ0eUluZGV4ID0gZmluZEN1c3RvbVByb3BlcnR5SW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBp
ZiAoZm91bmRQcm9wZXJ0eUluZGV4ICE9IC0xKQorICAgICAgICByZXR1cm4gcHJvcGVydHlBdChm
b3VuZFByb3BlcnR5SW5kZXgpLmlzSW1wb3J0YW50KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiBTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQpIGNvbnN0CiB7CiAgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZp
bmRQcm9wZXJ0eUluZGV4KHByb3BlcnR5SUQpOwpAQCAtNjg0LDYgKzcyOCwyMSBAQCBib29sIE11
dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5CiAgICAgcmV0dXJuIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZSh0aGlzLCBwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJzZXJN
b2RlKCksIGNvbnRleHRTdHlsZVNoZWV0KSA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpDaGFu
Z2VkOwogfQogCitib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5
KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGlt
cG9ydGFudCwgU3R5bGVTaGVldENvbnRlbnRzKiAvKmNvbnRleHRTdHlsZVNoZWV0Ki8pCit7Cisg
ICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgdG8gYW4gZW1wdHkgc3RyaW5nIGp1c3QgcmVtb3ZlcyB0
aGUgcHJvcGVydHkgaW4gYm90aCBJRSBhbmQgR2Vja28uCisgICAgLy8gU2V0dGluZyBpdCB0byBu
dWxsIHNlZW1zIHRvIHByb2R1Y2UgbGVzcyBjb25zaXN0ZW50IHJlc3VsdHMsIGJ1dCB3ZSB0cmVh
dCBpdCBqdXN0IHRoZSBzYW1lLgorICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiByZW1vdmVDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOworCisgICAgLy8gV2hlbiBy
ZXBsYWNpbmcgYW4gZXhpc3RpbmcgcHJvcGVydHkgdmFsdWUsIHRoaXMgbW92ZXMgdGhlIHByb3Bl
cnR5IHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCisgICAgLy8gRmlyZWZveCBwcmVzZXJ2ZXMgdGhl
IHBvc2l0aW9uLCBhbmQgTVNJRSBtb3ZlcyB0aGUgcHJvcGVydHkgdG8gdGhlIGJlZ2lubmluZy4K
KyAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3VzdG9tVmFsdWUgPSBDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUocHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgYWRkUGFy
c2VkUHJvcGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlDdXN0b20sIGN1c3RvbVZhbHVlLCBp
bXBvcnRhbnQpKTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHBycFZhbHVlLCBib29sIGltcG9ydGFudCkKIHsKICAgICBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5
SUQpOwpAQCAtNzAyLDcgKzc2MSwxNSBAQCB2b2lkIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNl
dFByb3BlcnR5CiBib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5KGNvbnN0
IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHkqIHNsb3QpCiB7CiAgICAgaWYgKCFy
ZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eShwcm9wZXJ0eS5pZCgpKSkgewotICAgICAgICBDU1NQcm9w
ZXJ0eSogdG9SZXBsYWNlID0gc2xvdCA/IHNsb3QgOiBmaW5kQ1NTUHJvcGVydHlXaXRoSUQocHJv
cGVydHkuaWQoKSk7CisgICAgICAgIENTU1Byb3BlcnR5KiB0b1JlcGxhY2UgPSBzbG90OworICAg
ICAgICBpZiAoIXNsb3QpIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5pZCgpID09IENTU1By
b3BlcnR5Q3VzdG9tKSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LnZhbHVlKCkpCisg
ICAgICAgICAgICAgICAgICAgIHRvUmVwbGFjZSA9IGZpbmRDdXN0b21DU1NQcm9wZXJ0eVdpdGhO
YW1lKGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS52YWx1ZSgpKS5u
YW1lKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdG9SZXBsYWNlID0g
ZmluZENTU1Byb3BlcnR5V2l0aElEKHByb3BlcnR5LmlkKCkpOworICAgICAgICB9CisgICAgICAg
IAogICAgICAgICBpZiAodG9SZXBsYWNlKSB7CiAgICAgICAgICAgICBpZiAoKnRvUmVwbGFjZSA9
PSBwcm9wZXJ0eSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03ODEsNiArODQ4
LDEyIEBAIGJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6YWRkUGFyc2VkUHIKIAogYm9vbCBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjphZGRQYXJzZWRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0
eSYgcHJvcGVydHkpCiB7CisgICAgaWYgKHByb3BlcnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlDdXN0
b20pIHsKKyAgICAgICAgaWYgKChwcm9wZXJ0eS52YWx1ZSgpICYmICFjdXN0b21Qcm9wZXJ0eUlz
SW1wb3J0YW50KGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS52YWx1
ZSgpKS5uYW1lKCkpKSB8fCBwcm9wZXJ0eS5pc0ltcG9ydGFudCgpKQorICAgICAgICAgICAgcmV0
dXJuIHNldFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICAKICAgICAvLyBPbmx5IGFkZCBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSBubyAhaW1wb3J0YW50
IGNvdW50ZXJwYXJ0IHByZXNlbnQKICAgICBpZiAoIXByb3BlcnR5SXNJbXBvcnRhbnQocHJvcGVy
dHkuaWQoKSkgfHwgcHJvcGVydHkuaXNJbXBvcnRhbnQoKSkKICAgICAgICAgcmV0dXJuIHNldFBy
b3BlcnR5KHByb3BlcnR5KTsKQEAgLTk3MywxMiArMTA0NiwxNyBAQCBTdHJpbmcgU3R5bGVQcm9w
ZXJ0aWVzOjphc1RleHQoKSBjb25zdAogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHZhbHVl
ID0gcHJvcGVydHkudmFsdWUoKS0+Y3NzVGV4dCgpOwogCi0gICAgICAgIGlmICh2YWx1ZSA9PSAi
aW5pdGlhbCIgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KHByb3BlcnR5SUQp
KQorICAgICAgICBpZiAocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUN1c3RvbSAmJiB2YWx1ZSA9
PSAiaW5pdGlhbCIgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KHByb3BlcnR5
SUQpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKG51bURlY2xzKyspCiAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0
UHJvcGVydHlOYW1lKHByb3BlcnR5SUQpKTsKKworICAgICAgICBpZiAocHJvcGVydHlJRCA9PSBD
U1NQcm9wZXJ0eUN1c3RvbSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZG93bmNhc3Q8Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LnZhbHVlKCkpLm5hbWUoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lKHByb3BlcnR5
SUQpKTsKKwogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKICAgICAgICAgcmVz
dWx0LmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eS5pc0ltcG9ydGFudCgpKQpA
QCAtMTE3NSw2ICsxMjUzLDQyIEBAIGludCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpmaW5kUHJv
cGVydHkKICAgICByZXR1cm4gLTE7CiB9CiAKK2ludCBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBjb25z
dAoreworICAgIC8vIENvbnZlcnQgdGhlIHByb3BlcnR5SUQgaW50byBhbiB1aW50MTZfdCB0byBj
b21wYXJlIGl0IHdpdGggdGhlIG1ldGFkYXRhJ3MgbV9wcm9wZXJ0eUlEIHRvIGF2b2lkCisgICAg
Ly8gdGhlIGNvbXBpbGVyIGNvbnZlcnRpbmcgaXQgdG8gYW4gaW50IG11bHRpcGxlIHRpbWVzIGlu
IHRoZSBsb29wLgorICAgIHVpbnQxNl90IGlkID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KENTU1By
b3BlcnR5Q3VzdG9tKTsKKyAgICBmb3IgKGludCBuID0gbV9hcnJheVNpemUgLSAxIDsgbiA+PSAw
OyAtLW4pIHsKKyAgICAgICAgaWYgKG1ldGFkYXRhQXJyYXkoKVtuXS5tX3Byb3BlcnR5SUQgPT0g
aWQpIHsKKyAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgY3VzdG9tIHByb3BlcnR5LiBTZWUgaWYg
dGhlIG5hbWUgbWF0Y2hlcy4KKyAgICAgICAgICAgIGlmICghdmFsdWVBcnJheSgpW25dKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGRvd25jYXN0PENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+KCp2YWx1ZUFycmF5KClbbl0pLm5hbWUoKSA9PSBwcm9wZXJ0eU5hbWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG47CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gLTE7Cit9CisKK2ludCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpmaW5kQ3VzdG9tUHJvcGVy
dHlJbmRleChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICAvLyBDb252
ZXJ0IHRoZSBwcm9wZXJ0eUlEIGludG8gYW4gdWludDE2X3QgdG8gY29tcGFyZSBpdCB3aXRoIHRo
ZSBtZXRhZGF0YSdzIG1fcHJvcGVydHlJRCB0byBhdm9pZAorICAgIC8vIHRoZSBjb21waWxlciBj
b252ZXJ0aW5nIGl0IHRvIGFuIGludCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgbG9vcC4KKyAgICB1
aW50MTZfdCBpZCA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihDU1NQcm9wZXJ0eUN1c3RvbSk7Cisg
ICAgZm9yIChpbnQgbiA9IG1fcHJvcGVydHlWZWN0b3Iuc2l6ZSgpIC0gMSA7IG4gPj0gMDsgLS1u
KSB7CisgICAgICAgIGlmIChtX3Byb3BlcnR5VmVjdG9yLmF0KG4pLm1ldGFkYXRhKCkubV9wcm9w
ZXJ0eUlEID09IGlkKSB7CisgICAgICAgICAgICAvLyBXZSBmb3VuZCBhIGN1c3RvbSBwcm9wZXJ0
eS4gU2VlIGlmIHRoZSBuYW1lIG1hdGNoZXMuCisgICAgICAgICAgICBpZiAoIW1fcHJvcGVydHlW
ZWN0b3IuYXQobikudmFsdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGlmIChkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqbV9wcm9wZXJ0eVZlY3Rv
ci5hdChuKS52YWx1ZSgpKS5uYW1lKCkgPT0gcHJvcGVydHlOYW1lKQorICAgICAgICAgICAgICAg
IHJldHVybiBuOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCiBDU1NQ
cm9wZXJ0eSogTXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZmluZENTU1Byb3BlcnR5V2l0aElEKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICBpbnQgZm91bmRQcm9wZXJ0eUluZGV4ID0g
ZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHlJRCk7CkBAIC0xMTgzLDYgKzEyOTcsMTQgQEAgQ1NT
UHJvcGVydHkqIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmZpbgogICAgIHJldHVybiAmbV9wcm9w
ZXJ0eVZlY3Rvci5hdChmb3VuZFByb3BlcnR5SW5kZXgpOwogfQogCitDU1NQcm9wZXJ0eSogTXV0
YWJsZVN0eWxlUHJvcGVydGllczo6ZmluZEN1c3RvbUNTU1Byb3BlcnR5V2l0aE5hbWUoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUpCit7CisgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZp
bmRDdXN0b21Qcm9wZXJ0eUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgaWYgKGZvdW5kUHJvcGVy
dHlJbmRleCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuICZtX3Byb3BlcnR5
VmVjdG9yLmF0KGZvdW5kUHJvcGVydHlJbmRleCk7Cit9CisKIGJvb2wgU3R5bGVQcm9wZXJ0aWVz
Ojpwcm9wZXJ0eU1hdGNoZXMoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1
ZSogcHJvcGVydHlWYWx1ZSkgY29uc3QKIHsKICAgICBpbnQgZm91bmRQcm9wZXJ0eUluZGV4ID0g
ZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHlJRCk7CkBAIC0xMjY1LDYgKzEzODcsOCBAQCBSZWY8
TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gTXV0YWJsZVN0eWxlCiAKIFN0cmluZyBTdHlsZVByb3Bl
cnRpZXM6OlByb3BlcnR5UmVmZXJlbmNlOjpjc3NOYW1lKCkgY29uc3QKIHsKKyAgICBpZiAoaWQo
KSA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+KCp2YWx1ZSgpKS5uYW1lKCk7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5
TmFtZVN0cmluZyhpZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJv
cGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRp
ZXMuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5MiwxMCBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIGdldFByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIGJvb2wg
aXNQcm9wZXJ0eUltcGxpY2l0KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCisgICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gZ2V0Q3VzdG9tUHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSkgY29uc3Q7CisgICAgU3RyaW5nIGdldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIGJvb2wgY3VzdG9tUHJvcGVydHlJc0lt
cG9ydGFudChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3Q7CisKICAgICBSZWY8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gY29weUJsb2NrUHJvcGVydGllcygpIGNvbnN0OwogCiAgICAg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q1NTUGFyc2VyTW9kZT4obV9jc3NQYXJzZXJNb2RlKTsgfQpAQCAtMTMyLDcgKzEzNiw4IEBAIHBy
b3RlY3RlZDoKICAgICB7IH0KIAogICAgIGludCBmaW5kUHJvcGVydHlJbmRleChDU1NQcm9wZXJ0
eUlEKSBjb25zdDsKLQorICAgIGludCBmaW5kQ3VzdG9tUHJvcGVydHlJbmRleChjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgCiAgICAgdW5zaWduZWQgbV9jc3NQYXJzZXJN
b2RlIDogMjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1faXNNdXRhYmxlIDogMTsKICAgICB1bnNp
Z25lZCBtX2FycmF5U2l6ZSA6IDI5OwpAQCAtMTYzLDcgKzE2OCw4IEBAIHB1YmxpYzoKICAgICBj
b25zdCBDU1NWYWx1ZSoqIHZhbHVlQXJyYXkoKSBjb25zdDsKICAgICBjb25zdCBTdHlsZVByb3Bl
cnR5TWV0YWRhdGEqIG1ldGFkYXRhQXJyYXkoKSBjb25zdDsKICAgICBpbnQgZmluZFByb3BlcnR5
SW5kZXgoQ1NTUHJvcGVydHlJRCkgY29uc3Q7Ci0KKyAgICBpbnQgZmluZEN1c3RvbVByb3BlcnR5
SW5kZXgoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIAogICAgIHZvaWQq
IG1fc3RvcmFnZTsKIAogcHJpdmF0ZToKQEAgLTIyMSw5ICsyMjcsMTQgQEAgcHVibGljOgogICAg
IENTU1N0eWxlRGVjbGFyYXRpb24qIGVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24oU3R5
bGVkRWxlbWVudCogcGFyZW50RWxlbWVudCk7CiAKICAgICBpbnQgZmluZFByb3BlcnR5SW5kZXgo
Q1NTUHJvcGVydHlJRCkgY29uc3Q7Ci0KKyAgICBpbnQgZmluZEN1c3RvbVByb3BlcnR5SW5kZXgo
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIAogICAgIFZlY3RvcjxDU1NQ
cm9wZXJ0eSwgND4gbV9wcm9wZXJ0eVZlY3RvcjsKIAorICAgIC8vIE1ldGhvZHMgZm9yIHF1ZXJ5
aW5nIGFuZCBhbHRlcmluZyBDU1MgY3VzdG9tIHByb3BlcnRpZXMuCisgICAgYm9vbCBzZXRDdXN0
b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5
bGVTaGVldCA9IDApOworICAgIGJvb2wgcmVtb3ZlQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIFN0cmluZyogcmV0dXJuVGV4dCA9IG51bGxwdHIpOworCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IE11dGFibGVTdHlsZVByb3BlcnRpZXMoQ1NTUGFyc2VyTW9kZSk7CiAg
ICAgZXhwbGljaXQgTXV0YWJsZVN0eWxlUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnRpZXMm
KTsKQEAgLTIzMSw2ICsyNDIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZW1vdmVTaG9ydGhh
bmRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsKICAgICBDU1NQcm9wZXJ0eSogZmluZENTU1Byb3Bl
cnR5V2l0aElEKENTU1Byb3BlcnR5SUQpOworICAgIENTU1Byb3BlcnR5KiBmaW5kQ3VzdG9tQ1NT
UHJvcGVydHlXaXRoTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uPiBtX2Nzc29tV3JhcHBlcjsKIAogICAgIGZyaWVu
ZCBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CkBAIC0yNzksNiArMjkxLDEzIEBAIGlubGluZSBpbnQg
U3R5bGVQcm9wZXJ0aWVzOjpmaW5kUHJvcGVydHkKICAgICByZXR1cm4gZG93bmNhc3Q8SW1tdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPigqdGhpcykuZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHlJRCk7
CiB9CiAKK2lubGluZSBpbnQgU3R5bGVQcm9wZXJ0aWVzOjpmaW5kQ3VzdG9tUHJvcGVydHlJbmRl
eChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBpZiAoaXM8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4oKnRoaXMpLmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KHByb3BlcnR5
TmFtZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4oKnRo
aXMpLmZpbmRDdXN0b21Qcm9wZXJ0eUluZGV4KHByb3BlcnR5TmFtZSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ1NTQm9y
ZGVySW1hZ2UuaCIKICNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUu
aCIKICNpbmNsdWRlICJDU1NEZWZhdWx0U3R5bGVTaGVldHMuaCIKICNpbmNsdWRlICJDU1NGaWx0
ZXJJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmgiCkBAIC0xMzksNiAr
MTQwLDcgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Rl
bXBvcmFyeUNoYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQog
I2luY2x1ZGUgIkNTU0dyaWRMaW5lTmFtZXNWYWx1ZS5oIgpAQCAtMTg5LDE0ICsxOTEsMTcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVy
Jik7CiAKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUHJvcGVydHk+JiBjdXN0b21Qcm9wZXJ0
aWVzKCkgeyByZXR1cm4gbV9jdXN0b21Qcm9wZXJ0aWVzOyB9CisgICAgCiBwcml2YXRlOgogICAg
IHZvaWQgYWRkU3R5bGVQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydGllcyYsIFN0eWxlUnVs
ZSYsIGJvb2wgaXNJbXBvcnRhbnQsIGJvb2wgaW5oZXJpdGVkT25seSwgUHJvcGVydHlXaGl0ZWxp
c3RUeXBlLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlKTsKICAgICBzdGF0aWMgdm9pZCBzZXRQcm9w
ZXJ0eUludGVybmFsKFByb3BlcnR5JiwgQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUmLCB1bnNpZ25l
ZCBsaW5rTWF0Y2hUeXBlKTsKIAotICAgIFByb3BlcnR5IG1fcHJvcGVydGllc1tudW1DU1NQcm9w
ZXJ0aWVzICsgMV07Ci0gICAgc3RkOjpiaXRzZXQ8bnVtQ1NTUHJvcGVydGllcyArIDE+IG1fcHJv
cGVydHlJc1ByZXNlbnQ7CisgICAgUHJvcGVydHkgbV9wcm9wZXJ0aWVzW251bUNTU1Byb3BlcnRp
ZXMgKyAyXTsKKyAgICBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzICsgMj4gbV9wcm9wZXJ0
eUlzUHJlc2VudDsKIAogICAgIFZlY3RvcjxQcm9wZXJ0eSwgOD4gbV9kZWZlcnJlZFByb3BlcnRp
ZXM7CisgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFByb3BlcnR5PiBtX2N1c3RvbVByb3BlcnRp
ZXM7CiAKICAgICBUZXh0RGlyZWN0aW9uIG1fZGlyZWN0aW9uOwogICAgIFdyaXRpbmdNb2RlIG1f
d3JpdGluZ01vZGU7CkBAIC04NDUsNiArODUwLDkgQEAgUmVmPFJlbmRlclN0eWxlPiBTdHlsZVJl
c29sdmVyOjpzdHlsZUZvcgogICAgIC8vIGRlY2wsIHRoZXJlJ3Mgbm90aGluZyB0byBvdmVycmlk
ZS4gU28ganVzdCBhZGQgdGhlIGZpcnN0IHByb3BlcnRpZXMuCiAgICAgQ2FzY2FkZWRQcm9wZXJ0
aWVzIGNhc2NhZGUoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CiAgICAgY2FzY2FkZS5hZGRNYXRj
aGVzKHJlc3VsdCwgZmFsc2UsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNpemUoKSAt
IDEpOworICAgIAorICAgIC8vIFJlc29sdmUgdmFyaWFibGVzIGZpcnN0LgorICAgIGFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1
c3RvbSk7CiAKICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1By
b3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHkpOwogCkBAIC0xMDExLDYgKzEwMTksOSBA
QCBSZWY8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yCiAgICAgQ2FzY2FkZWRQ
cm9wZXJ0aWVzIGNhc2NhZGUoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CiAgICAgY2FzY2FkZS5h
ZGRNYXRjaGVzKHJlc3VsdCwgZmFsc2UsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNp
emUoKSAtIDEpOwogCisgICAgLy8gUmVzb2x2ZSB2YXJpYWJsZXMgZmlyc3QuCisgICAgYXBwbHlD
YXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5
Q3VzdG9tKTsKKwogICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NT
UHJvcGVydHksIGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSk7CiAKICAgICAvLyBJZiBvdXIgZm9u
dCBnb3QgZGlydGllZCwgdXBkYXRlIGl0IG5vdy4KQEAgLTE2ODYsNiArMTY5Nyw5IEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGkKIAogICAgICAgICBhcHBseUNhc2Nh
ZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NT
UHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24pOwogICAgICAgICBhZGp1c3RTdHlsZUZvckludGVy
Q2hhcmFjdGVyUnVieSgpOworICAgIAorICAgICAgICAvLyBSZXNvbHZlIHZhcmlhYmxlcyBmaXJz
dC4KKyAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlD
dXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tKTsKIAogICAgICAgICAvLyBTdGFydCBieSBhcHBseWlu
ZyBwcm9wZXJ0aWVzIHRoYXQgb3RoZXIgcHJvcGVydGllcyBtYXkgZGVwZW5kIG9uLgogICAgICAg
ICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0
SGlnaFByaW9yaXR5UHJvcGVydHkpOwpAQCAtMTcwMSw2ICsxNzE1LDkgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aQogICAgIGNhc2NhZGUuYWRkTWF0Y2hlcyhtYXRj
aFJlc3VsdCwgdHJ1ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgbWF0Y2hS
ZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogICAgIGNh
c2NhZGUuYWRkTWF0Y2hlcyhtYXRjaFJlc3VsdCwgdHJ1ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZp
cnN0VXNlclJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1bGUsIGFwcGx5SW5oZXJp
dGVkT25seSk7CiAgICAgY2FzY2FkZS5hZGRNYXRjaGVzKG1hdGNoUmVzdWx0LCB0cnVlLCBtYXRj
aFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxl
LCBhcHBseUluaGVyaXRlZE9ubHkpOworICAgIAorICAgIC8vIFJlc29sdmUgdmFyaWFibGVzIGZp
cnN0LgorICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3Vz
dG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSk7CiAKICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhj
YXNjYWRlLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRS
dWJ5UG9zaXRpb24pOwogICAgIApAQCAtMTg4MSw2ICsxODk4LDEyIEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm8KIAogICAgIGlmIChpc0luaGVyaXQgJiYgIXN0YXRl
LnBhcmVudFN0eWxlKCktPmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgJiYgIUNT
U1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KGlkKSkKICAgICAgICAgc3RhdGUucGFyZW50
U3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsKKyAgICAKKyAg
ICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKKyAgICAgICAgQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZSogY3VzdG9tUHJvcGVydHkgPSAmZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4oKnZhbHVlKTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q3VzdG9tUHJvcGVydHlWYWx1
ZShjdXN0b21Qcm9wZXJ0eS0+bmFtZSgpLCBjdXN0b21Qcm9wZXJ0eS0+dmFsdWUoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKICAgICAvLyBVc2UgdGhlIGdlbmVyYXRlZCBTdHlsZUJ1aWxk
ZXIuCiAgICAgU3R5bGVCdWlsZGVyOjphcHBseVByb3BlcnR5KGlkLCAqdGhpcywgKnZhbHVlLCBp
c0luaXRpYWwsIGlzSW5oZXJpdCk7CkBAIC0yNTI2LDYgKzI1NDksMjQgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OgogCiAgICAgYXV0byYgcHJvcGVydHkgPSBtX3By
b3BlcnRpZXNbaWRdOwogICAgIEFTU0VSVChpZCA8IG1fcHJvcGVydHlJc1ByZXNlbnQuc2l6ZSgp
KTsKKyAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKKyAgICAgICAgbV9wcm9wZXJ0
eUlzUHJlc2VudC5zZXQoaWQpOworICAgICAgICBjb25zdCBhdXRvJiBjdXN0b21WYWx1ZSA9IGRv
d25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KGNzc1ZhbHVlKTsKKyAgICAgICAgYm9vbCBo
YXNWYWx1ZSA9IGN1c3RvbVByb3BlcnRpZXMoKS5jb250YWlucyhjdXN0b21WYWx1ZS5uYW1lKCkp
OworICAgICAgICBpZiAoIWhhc1ZhbHVlKSB7CisgICAgICAgICAgICBQcm9wZXJ0eSBwcm9wZXJ0
eTsKKyAgICAgICAgICAgIHByb3BlcnR5LmlkID0gaWQ7CisgICAgICAgICAgICBtZW1zZXQocHJv
cGVydHkuY3NzVmFsdWUsIDAsIHNpemVvZihwcm9wZXJ0eS5jc3NWYWx1ZSkpOworICAgICAgICAg
ICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBsaW5rTWF0Y2hU
eXBlKTsKKyAgICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMoKS5zZXQoY3VzdG9tVmFsdWUubmFt
ZSgpLCBwcm9wZXJ0eSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQcm9wZXJ0eSBw
cm9wZXJ0eSA9IGN1c3RvbVByb3BlcnRpZXMoKS5nZXQoY3VzdG9tVmFsdWUubmFtZSgpKTsKKyAg
ICAgICAgICAgIHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbGlu
a01hdGNoVHlwZSk7CisgICAgICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzKCkuc2V0KGN1c3RvbVZh
bHVlLm5hbWUoKSwgcHJvcGVydHkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCiAgICAgaWYgKCFtX3Byb3BlcnR5SXNQcmVzZW50W2lkXSkKICAgICAgICAgbWVtc2V0
KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXplb2YocHJvcGVydHkuY3NzVmFsdWUpKTsKICAgICBt
X3Byb3BlcnR5SXNQcmVzZW50LnNldChpZCk7CkBAIC0yNjIzLDYgKzI2NjQsMTIgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydAogICAgICAgICBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpZCk7CiAgICAgICAgIGlm
ICghY2FzY2FkZS5oYXNQcm9wZXJ0eShwcm9wZXJ0eUlEKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkgeworICAgICAg
ICAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIENhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHk+
OjppdGVyYXRvciBlbmQgPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQoKTsKKyAgICAg
ICAgICAgIGZvciAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIENhc2NhZGVkUHJvcGVydGllczo6UHJv
cGVydHk+OjppdGVyYXRvciBpdCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICAgICBpdC0+dmFsdWUuYXBwbHkoKnRoaXMp
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgYXV0byYgcHJvcGVy
dHkgPSBjYXNjYWRlLnByb3BlcnR5KHByb3BlcnR5SUQpOwogICAgICAgICBBU1NFUlQoIXNob3Vs
ZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpOwogICAgICAgICBwcm9wZXJ0
eS5hcHBseSgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCShyZXZpc2lvbiAxOTAy
MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDcgQEAgZGllICJXZSd2ZSByZWFjaGVkIG1vcmUgdGhhbiAxMDI0IENTUyBwcgog
bXkgJW5hbWVzSGFzaDsKIG15IEBkdXBsaWNhdGVzID0gKCk7CiAKLW15ICRudW1QcmVkZWZpbmVk
UHJvcGVydGllcyA9IDE7CitteSAkbnVtUHJlZGVmaW5lZFByb3BlcnRpZXMgPSAyOwogbXkgQG5h
bWVzID0gKCk7CiBteSAlbmFtZUlzSW5oZXJpdGVkOwogbXkgJXByb3BlcnRpZXNXaXRoU3R5bGVC
dWlsZGVyT3B0aW9uczsKQEAgLTIzNiw2ICsyMzYsNyBAQCBTdHJpbmcgZ2V0SlNQcm9wZXJ0eU5h
bWUoQ1NTUHJvcGVydHlJRCBpCiAKIHN0YXRpYyBjb25zdCBib29sIGlzSW5oZXJpdGVkUHJvcGVy
dHlUYWJsZVtudW1DU1NQcm9wZXJ0aWVzICsgJG51bVByZWRlZmluZWRQcm9wZXJ0aWVzXSA9IHsK
ICAgICBmYWxzZSwgLy8gQ1NTUHJvcGVydHlJbnZhbGlkCisgICAgZmFsc2UsIC8vIENTU1Byb3Bl
cnR5Q3VzdG9tCiBFT0YKIAogZm9yZWFjaCBteSAkbmFtZSAoQG5hbWVzKSB7CkBAIC0yODMsNiAr
Mjg0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIENTU1Byb3BlcnR5SUQgOiB1aW50
MTZfdCB7CiAgICAgQ1NTUHJvcGVydHlJbnZhbGlkID0gMCwKKyAgICBDU1NQcm9wZXJ0eUN1c3Rv
bSA9IDEsCiBFT0YKIAogbXkgJGZpcnN0ID0gJG51bVByZWRlZmluZWRQcm9wZXJ0aWVzOwpAQCAt
MzEzLDcgKzMxNSw3IEBAIFdURjo6U3RyaW5nIGdldEpTUHJvcGVydHlOYW1lKENTU1Byb3BlcnQK
IAogaW5saW5lIENTU1Byb3BlcnR5SUQgY29udmVydFRvQ1NTUHJvcGVydHlJRChpbnQgdmFsdWUp
CiB7Ci0gICAgQVNTRVJUKCh2YWx1ZSA+PSBmaXJzdENTU1Byb3BlcnR5ICYmIHZhbHVlIDw9IGxh
c3RDU1NQcm9wZXJ0eSkgfHwgdmFsdWUgPT0gQ1NTUHJvcGVydHlJbnZhbGlkKTsKKyAgICBBU1NF
UlQoKHZhbHVlID49IGZpcnN0Q1NTUHJvcGVydHkgJiYgdmFsdWUgPD0gbGFzdENTU1Byb3BlcnR5
KSB8fCB2YWx1ZSA9PSBDU1NQcm9wZXJ0eUludmFsaWQgfHwgdmFsdWUgPT0gQ1NTUHJvcGVydHlD
dXN0b20pOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPih2YWx1ZSk7CiB9
CiAKQEAgLTg3Miw2ICs4NzQsNyBAQCB2b2lkIFN0eWxlQnVpbGRlcjo6YXBwbHlQcm9wZXJ0eShD
U1NQcm9wCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlJ
bnZhbGlkOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDdXN0b206CiAgICAgICAgIGJyZWFrOwogRU9G
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDYgKzM0OCwxNCBA
QCBib29sIEluc3BlY3RvclN0eWxlOjpnZXRUZXh0KFN0cmluZyogcmVzCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3N0YXRpYyBTdHJpbmcgbG93ZXJjYXNlUHJvcGVydHlOYW1lKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICAvLyBDdXN0b20gcHJvcGVydGllcyBhcmUgY2FzZS1zZW5zaXRpdmUu
CisgICAgaWYgKG5hbWUubGVuZ3RoKCkgPiAyICYmIG5hbWUuY2hhcmFjdGVyQXQoMCkgPT0gJy0n
ICYmIG5hbWUuY2hhcmFjdGVyQXQoMSkgPT0gJy0nKQorICAgICAgICByZXR1cm4gbmFtZTsKKyAg
ICByZXR1cm4gbmFtZS5sb3dlcigpOworfQorCiBib29sIEluc3BlY3RvclN0eWxlOjpwb3B1bGF0
ZUFsbFByb3BlcnRpZXMoVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+KiByZXN1bHQpIGNv
bnN0CiB7CiAgICAgSGFzaFNldDxTdHJpbmc+IHNvdXJjZVByb3BlcnR5TmFtZXM7CkBAIC0zNjIs
MTYgKzM3MCwxNiBAQCBib29sIEluc3BlY3RvclN0eWxlOjpwb3B1bGF0ZUFsbFByb3BlcnRpCiAg
ICAgICAgICAgICBJbnNwZWN0b3JTdHlsZVByb3BlcnR5IHAoKml0LCB0cnVlLCBmYWxzZSk7CiAg
ICAgICAgICAgICBwLnNldFJhd1RleHRGcm9tU3R5bGVEZWNsYXJhdGlvbihzdHlsZURlY2xhcmF0
aW9uKTsKICAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHApOwotICAgICAgICAgICAgc291cmNl
UHJvcGVydHlOYW1lcy5hZGQoaXQtPm5hbWUubG93ZXIoKSk7CisgICAgICAgICAgICBzb3VyY2VQ
cm9wZXJ0eU5hbWVzLmFkZChsb3dlcmNhc2VQcm9wZXJ0eU5hbWUoaXQtPm5hbWUpKTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIGZvciAoaW50IGkgPSAwLCBzaXplID0gbV9zdHlsZS0+bGVuZ3Ro
KCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgU3RyaW5nIG5hbWUgPSBtX3N0eWxlLT5pdGVt
KGkpOwotICAgICAgICBpZiAoc291cmNlUHJvcGVydHlOYW1lcy5jb250YWlucyhuYW1lLmxvd2Vy
KCkpKQorICAgICAgICBTdHJpbmcgbG93ZXJOYW1lID0gbG93ZXJjYXNlUHJvcGVydHlOYW1lKG5h
bWUpOworICAgICAgICBpZiAoc291cmNlUHJvcGVydHlOYW1lcy5jb250YWlucyhsb3dlck5hbWUp
KQogICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgc291cmNlUHJvcGVydHlOYW1lcy5h
ZGQobmFtZS5sb3dlcigpKTsKKyAgICAgICAgc291cmNlUHJvcGVydHlOYW1lcy5hZGQobG93ZXJO
YW1lKTsKICAgICAgICAgcmVzdWx0LT5hcHBlbmQoSW5zcGVjdG9yU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVNvdXJjZURhdGEobmFtZSwgbV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShuYW1lKSwg
IW1fc3R5bGUtPmdldFByb3BlcnR5UHJpb3JpdHkobmFtZSkuaXNFbXB0eSgpLCB0cnVlLCBTb3Vy
Y2VSYW5nZSgpKSwgZmFsc2UsIGZhbHNlKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTkwMjA2KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUxMyw2ICs1MTMsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgUHNldWRvU3R5bGVD
YWNoZSogY2FjaGVkUHNldWRvU3R5bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQc2V1ZG9T
dHlsZXMuZ2V0KCk7IH0KIAorICAgIHZvaWQgc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgcmFyZUluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS0+c2V0Q3VzdG9tUHJvcGVy
dHlWYWx1ZShuYW1lLCB2YWx1ZSk7IH0KKyAgICBTdHJpbmcgZ2V0Q3VzdG9tUHJvcGVydHlWYWx1
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWRE
YXRhLT5tX2N1c3RvbVByb3BlcnRpZXMtPmdldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSk7IH0K
KyAgICBib29sIGhhc0N1c3RvbVByb3BlcnR5KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29u
c3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1fY3VzdG9tUHJvcGVydGllcy0+aGFzQ3Vz
dG9tUHJvcGVydHkobmFtZSk7IH0KKyAgICBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3Ry
aW5nPiogY3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICYocmFyZUluaGVyaXRlZERh
dGEtPm1fY3VzdG9tUHJvcGVydGllcy0+bV92YWx1ZXMpOyB9CisKICAgICB2b2lkIHNldEhhc1Zp
ZXdwb3J0VW5pdHMoYm9vbCBoYXNWaWV3cG9ydFVuaXRzID0gdHJ1ZSkgeyBub25pbmhlcml0ZWRf
ZmxhZ3Muc2V0SGFzVmlld3BvcnRVbml0cyhoYXNWaWV3cG9ydFVuaXRzKTsgfQogICAgIGJvb2wg
aGFzVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNW
aWV3cG9ydFVuaXRzKCk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YV9oCisjZGVmaW5lIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhX2gKKworI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2gu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0
YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSk7IH0KKyAgICBSZWY8U3R5
bGVDdXN0b21Qcm9wZXJ0eURhdGE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKCp0aGlzKSk7IH0KKyAgICAKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG8pIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWVzID09IG8ubV92YWx1ZXM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGEgJm8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KKyAg
ICAKKyAgICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1fdmFsdWVzLnNldChuYW1lLCB2YWx1ZSk7IH0K
KyAgICBTdHJpbmcgZ2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmdldChuYW1lKTsgfQorICAgIGJvb2wgaGFzQ3Vz
dG9tUHJvcGVydHkoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlcy5jb250YWlucyhuYW1lKTsgfQorCisgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmlu
Zz4gbV92YWx1ZXM7CisgICAgCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFN0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhKCkKKyAgICAgICAgOiBSZWZDb3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRh
PigpCisgICAgeyB9CisgICAgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEoY29uc3QgU3R5bGVDdXN0
b21Qcm9wZXJ0eURhdGEmIG90aGVyKQorICAgICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVDdXN0b21Q
cm9wZXJ0eURhdGE+KCkKKyAgICAgICAgLCBtX3ZhbHVlcyhIYXNoTWFwPEF0b21pY1N0cmluZywg
U3RyaW5nPihvdGhlci5tX3ZhbHVlcykpCisgICAgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YV9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVy
aXRlZERhdGEuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDEwICsyMywxMiBAQAogI2luY2x1ZGUgIlN0eWxlUmFyZUluaGVyaXRlZERhdGEuaCIKIAogI2lu
Y2x1ZGUgIkN1cnNvckxpc3QuaCIKKyNpbmNsdWRlICJEYXRhUmVmLmgiCiAjaW5jbHVkZSAiUXVv
dGVzRGF0YS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5
bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCisjaW5jbHVkZSAiU3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGEuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTYwLDYgKzYyLDggQEAgc3RydWN0IEdyZWF0ZXJUaGFuT3JTYW1lU2l6
ZUFzU3R5bGVSYXJlSQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgQ29sb3IgdGFwSGln
aGxpZ2h0Q29sb3I7CiAjZW5kaWYKKworICAgIHZvaWQqIGN1c3RvbVByb3BlcnR5RGF0YVJlZnNb
MV07CiB9OwogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSkg
PD0gc2l6ZW9mKEdyZWF0ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSks
IFN0eWxlUmFyZUluaGVyaXRlZERhdGFfc2hvdWxkX2JpdF9wYWNrKTsKQEAgLTY5LDYgKzczLDcg
QEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdAogICAgICwgdGV4dFN0
cm9rZVdpZHRoKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFN0cm9rZVdpZHRoKCkpCiAgICAgLCBp
bmRlbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5kZW50KCkpCiAgICAgLCBtX2VmZmVjdGl2
ZVpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCisgICAgLCBtX2N1c3RvbVByb3BlcnRp
ZXMoU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OmNyZWF0ZSgpKQogICAgICwgd2lkb3dzKFJlbmRl
clN0eWxlOjppbml0aWFsV2lkb3dzKCkpCiAgICAgLCBvcnBoYW5zKFJlbmRlclN0eWxlOjppbml0
aWFsT3JwaGFucygpKQogICAgICwgbV9oYXNBdXRvV2lkb3dzKHRydWUpCkBAIC0xNTAsNiArMTU1
LDcgQEAgaW5saW5lIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZQogICAgICwgY3Vy
c29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAgLCBpbmRlbnQoby5pbmRlbnQpCiAgICAgLCBtX2Vm
ZmVjdGl2ZVpvb20oby5tX2VmZmVjdGl2ZVpvb20pCisgICAgLCBtX2N1c3RvbVByb3BlcnRpZXMo
by5tX2N1c3RvbVByb3BlcnRpZXMpCiAgICAgLCB3aWRvd3Moby53aWRvd3MpCiAgICAgLCBvcnBo
YW5zKG8ub3JwaGFucykKICAgICAsIG1faGFzQXV0b1dpZG93cyhvLm1faGFzQXV0b1dpZG93cykK
QEAgLTMyNCw2ICszMzAsNyBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9y
PT0oCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogICAgICAgICAmJiB0cmFpbGluZ1dv
cmQgPT0gby50cmFpbGluZ1dvcmQKICNlbmRpZgorICAgICAgICAmJiBtX2N1c3RvbVByb3BlcnRp
ZXMgPT0gby5tX2N1c3RvbVByb3BlcnRpZXMKICAgICAgICAgJiYgU3R5bGVJbWFnZTo6aW1hZ2Vz
RXF1aXZhbGVudChsaXN0U3R5bGVJbWFnZS5nZXQoKSwgby5saXN0U3R5bGVJbWFnZS5nZXQoKSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhl
cml0ZWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsOSBAQAogI2RlZmluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhX2gK
IAogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRGF0YVJlZi5oIgogI2luY2x1ZGUgIkxl
bmd0aC5oIgorI2luY2x1ZGUgIlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtNzcsNiArNzksOCBAQCBwdWJsaWM6CiAgICAg
CiAgICAgTGVuZ3RoIHdvcmRTcGFjaW5nOwogCisgICAgRGF0YVJlZjxTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YT4gbV9jdXN0b21Qcm9wZXJ0aWVzOworCiAgICAgLy8gUGFnZWQgbWVkaWEgcHJvcGVy
dGllcy4KICAgICBzaG9ydCB3aWRvd3M7CiAgICAgc2hvcnQgb3JwaGFuczsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE5MDIwNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI4IEBACisyMDE1LTA5LTI0ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgQ1NTIEN1c3RvbSBQcm9wZXJ0aWVzIChpbiBw
cmVwYXJhdGlvbiBmb3IgaW1wbGVtZW50aW5nIENTUyBWYXJpYWJsZXMpLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzk3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9jdXN0b20tcHJv
cGVydGllczogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvY29t
cHV0ZWQtc3R5bGUtYWNjZXNzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1pbmhlcml0ZWQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMv
Y29tcHV0ZWQtc3R5bGUtYWNjZXNzLWluaGVyaXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRlZC1zdHlsZS1hY2Nlc3MuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvaW5saW5lLXN0eWxlLXBy
b3BlcnR5LWdldC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jdXN0
b20tcHJvcGVydGllcy9pbmxpbmUtc3R5bGUtcHJvcGVydHktZ2V0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktZ2V0LWNzcy12
YWx1ZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jdXN0b20tcHJv
cGVydGllcy9ydWxlLXByb3BlcnR5LWdldC1jc3MtdmFsdWUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1w
cm9wZXJ0eS1nZXQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY3VzdG9tLXByb3Bl
cnRpZXMvcnVsZS1wcm9wZXJ0eS1wcmlvcml0eS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXByaW9yaXR5Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJv
cGVydHktc2V0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2N1c3Rv
bS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktc2V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtc2VyaWFsaXphdGlvbi1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXNlcmlh
bGl6YXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTUtMDktMjQgIENoYW5nU2VvayBPaCAgPGNoYW5n
c2Vvay5vaEBjb2xsYWJvcmEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJlYmFzZWxpbmUg
bWVkaWEvbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24tdXBkYXRlcy5odG1sLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNz
LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9t
LXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNzLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9jb21wdXRlZC1z
dHlsZS1hY2Nlc3MtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorOnJvb3QgeyAtLW9uZTogMTBweDsgLS10d286IDIw
cHg7IH0KKzwvc3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC53cml0ZShkb2N1bWVu
dC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCItLW9u
ZSIpICsgIiAiICsgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgiLS10d28iKSkKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUt
YWNjZXNzLWluaGVyaXRlZC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1pbmhlcml0
ZWQtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1
c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1pbmhlcml0ZWQtZXhwZWN0ZWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8aHRtbD4KKzxoZWFkPgorPHN0
eWxlPgorOnJvb3QgeyAtLW9uZTogMTBweDsgLS10d286IDIwcHg7IH0KKzwvc3R5bGU+Cis8Ym9k
eT4KKzxzY3JpcHQ+Citkb2N1bWVudC53cml0ZShkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NS
dWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCItLW9uZSIpICsgIiAiICsgZG9jdW1lbnQu
c3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS10d28i
KSkKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
c3MvY3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNzLWluaGVyaXRlZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2Nv
bXB1dGVkLXN0eWxlLWFjY2Vzcy1pbmhlcml0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL2NvbXB1dGVkLXN0eWxlLWFjY2Vzcy1p
bmhlcml0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlPgorOnJvb3QgeyAtLW9uZTogMTBweDsgLS1hbm90aGVyOiAyMHB4OyB9Cis8
L3N0eWxlPgorPGJvZHk+Cis8c2NyaXB0PgorZG9jdW1lbnQud3JpdGUoZ2V0Q29tcHV0ZWRTdHls
ZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCItLW9uZSIpICsgIiAiICsgZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCItLWFub3RoZXIiKSkK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUtYWNjZXNzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvY29tcHV0ZWQtc3R5bGUt
YWNjZXNzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20t
cHJvcGVydGllcy9jb21wdXRlZC1zdHlsZS1hY2Nlc3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDExIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorOnJvb3QgeyAtLW9uZTogMTBw
eDsgLS1hbm90aGVyOiAyMHB4OyB9Cis8L3N0eWxlPgorPGJvZHk+Cis8c2NyaXB0PgorZG9jdW1l
bnQud3JpdGUoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFBy
b3BlcnR5VmFsdWUoIi0tb25lIikgKyAiICIgKyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgiLS1hbm90aGVyIikpCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9w
ZXJ0aWVzL2lubGluZS1zdHlsZS1wcm9wZXJ0eS1nZXQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9pbmxpbmUtc3R5bGUt
cHJvcGVydHktZ2V0LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9pbmxpbmUtc3R5bGUtcHJvcGVydHktZ2V0LWV4cGVj
dGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5Pgor
MTBweCAyMHB4Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
dXN0b20tcHJvcGVydGllcy9pbmxpbmUtc3R5bGUtcHJvcGVydHktZ2V0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvaW5saW5lLXN0eWxl
LXByb3BlcnR5LWdldC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3VzdG9tLXByb3BlcnRpZXMvaW5saW5lLXN0eWxlLXByb3BlcnR5LWdldC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxib2R5IHN0eWxlPSItLW9u
ZToxMHB4OyAtLXR3bzoyMHB4Ij4KKzxzY3JpcHQ+Citkb2N1bWVudC53cml0ZShkb2N1bWVudC5i
b2R5LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoIi0tb25lIikgKyAiICIgKyBkb2N1bWVudC5ib2R5
LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoIi0tdHdvIikpCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUt
cHJvcGVydHktZ2V0LWNzcy12YWx1ZS1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktZ2V0LWNzcy12
YWx1ZS1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtY3NzLXZhbHVlLWV4cGVjdGVkLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorMTBweCAy
MHB4Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20t
cHJvcGVydGllcy9ydWxlLXByb3BlcnR5LWdldC1jc3MtdmFsdWUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LWdl
dC1jc3MtdmFsdWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1
c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktZ2V0LWNzcy12YWx1ZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cis6cm9vdCB7
IC0tb25lOiAxMHB4OyAtLXR3bzogMjBweDsgfQorPC9zdHlsZT4KKzxib2R5PgorPHNjcmlwdD4K
K2RvY3VtZW50LndyaXRlKGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxl
LmdldFByb3BlcnR5Q1NTVmFsdWUoIi0tb25lIikuY3NzVGV4dCArICIgIiArIGRvY3VtZW50LnN0
eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoIi0tdHdv
IikuY3NzVGV4dCkKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtZXhwZWN0ZWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGll
cy9ydWxlLXByb3BlcnR5LWdldC1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQtZXhwZWN0
ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHk+Cisx
MHB4IDIwcHgKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1
c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktZ2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1nZXQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVz
L3J1bGUtcHJvcGVydHktZ2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKzpyb290IHsgLS1vbmU6IDEwcHg7IC0tdHdvOiAyMHB4
OyB9Cis8L3N0eWxlPgorPGJvZHk+Cis8c2NyaXB0PgorZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQu
c3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS1vbmUi
KSArICIgIiArIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoIi0tdHdvIikpCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbC4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktcHJp
b3JpdHktZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
dXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXByaW9yaXR5LWV4cGVjdGVkLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxl
LXByb3BlcnR5LXByaW9yaXR5LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1IEBACis8aHRtbD4KKzxib2R5PgorMTBweCBpbXBvcnRhbnQKKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3RvbS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVy
dHktcHJpb3JpdHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0
b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXByaW9yaXR5Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXBy
aW9yaXR5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzdHlsZT4KKzpyb290IHsgLS1vbmU6IDEwcHggIWltcG9ydGFudDsgLS1vbmU6NTBweDsg
fQorPC9zdHlsZT4KKzxib2R5PgorPHNjcmlwdD4KK2RvY3VtZW50LndyaXRlKGRvY3VtZW50LnN0
eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoIi0tb25lIikg
KyAiICIgKyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9w
ZXJ0eVByaW9yaXR5KCItLW9uZSIpKQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWwuCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5LXNl
dC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2N1c3Rv
bS1wcm9wZXJ0aWVzL3J1bGUtcHJvcGVydHktc2V0LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3BlcnR5
LXNldC1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+
Cis8Ym9keT4KKzUwcHggMzBweAorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1zZXQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXByb3Bl
cnR5LXNldC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9t
LXByb3BlcnRpZXMvcnVsZS1wcm9wZXJ0eS1zZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorOnJvb3QgeyAtLW9uZTogMTBweDsg
LS10d286IDIwcHg7IH0KKzwvc3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC5zdHls
ZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1vbmUiLCAiNXB4IikK
K2RvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnN0eWxlLnJlbW92ZVByb3BlcnR5
KCItLXR3byIpCitkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5zZXRQ
cm9wZXJ0eSgiLS10d28iLCAiMzBweCIpCitkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxl
c1swXS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1vbmUiLCAiNTBweCIpCitkb2N1bWVudC53cml0ZShk
b2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCItLW9uZSIpICsgIiAiICsgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS10d28iKSkKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1zZXJp
YWxpemF0aW9uLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxl
LXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUg
QEAKKzxodG1sPgorPGJvZHk+Cis6cm9vdCB7IC0tb25lOiAxMHB4OyAtLXR3bzogMjBweDsgfQor
PC9ib2R5PgorPC9odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3VzdG9tLXByb3Bl
cnRpZXMvcnVsZS1zZXJpYWxpemF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvY3VzdG9tLXByb3BlcnRpZXMvcnVsZS1zZXJpYWxpemF0aW9uLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXN0b20tcHJvcGVydGllcy9ydWxlLXNl
cmlhbGl6YXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACis8aHRtbD4K
KzxoZWFkPgorPHN0eWxlPgorOnJvb3QgeyAtLW9uZTogMTBweDsgLS10d286IDIwcHg7IH0KKzwv
c3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC53cml0ZShkb2N1bWVudC5zdHlsZVNo
ZWV0c1swXS5jc3NSdWxlc1swXS5jc3NUZXh0KQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWwu
Cg==
</data>
<flag name="review"
          id="287065"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>