<?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>42131</bug_id>
          
          <creation_ts>2010-07-12 19:47:54 -0700</creation_ts>
          <short_desc>WebKitTestRunner needs to support accessibility-related DRT APIs</short_desc>
          <delta_ts>2011-11-29 08:25:40 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aroben</cc>
    
    <cc>bdakin</cc>
    
    <cc>gustavo</cc>
    
    <cc>jcraig</cc>
    
    <cc>mario</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>250252</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-12 19:47:54 -0700</bug_when>
    <thetext>WebKitTestRunner needs to support accessibility-related DRT APIs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250253</commentid>
    <comment_count>1</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-12 19:49:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/8183711&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494012</commentid>
    <comment_count>2</comment_count>
      <attachid>113192</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-01 10:46:50 -0700</bug_when>
    <thetext>Created attachment 113192
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494019</commentid>
    <comment_count>3</comment_count>
      <attachid>113195</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-01 10:53:10 -0700</bug_when>
    <thetext>Created attachment 113195
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494020</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-01 10:57:20 -0700</bug_when>
    <thetext>Attachment 113195 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/acce...&quot; exit_code: 1

Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 1 in 46 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>494040</commentid>
    <comment_count>5</comment_count>
      <attachid>113195</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-01 11:18:17 -0700</bug_when>
    <thetext>Comment on attachment 113195
patch

Attachment 113195 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10148012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494248</commentid>
    <comment_count>6</comment_count>
      <attachid>113195</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-01 15:55:08 -0700</bug_when>
    <thetext>Comment on attachment 113195
patch

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

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:-499
&gt; -    ASSERT(!value.isEmpty());
&gt; -    

You can’t just remove this assert. The call to get below won’t work right with certain values (either null strings or empty strings, I can’t recall which) because of how hash tables work. If you need to allow these strings, then you need to add an explicit early return, not fall through to the hash table code.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:71
&gt; +WK_EXPORT void* WKAccessibilityRootObject(WKBundlePageRef);
&gt; +WK_EXPORT void* WKAccessibilityFocusedObject(WKBundlePageRef);    

Does this really need to be void*?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494667</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-02 09:35:35 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 113195 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113195&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:-499
&gt; &gt; -    ASSERT(!value.isEmpty());
&gt; &gt; -    
&gt; 


&gt; You can’t just remove this assert. The call to get below won’t work right with certain values (either null strings or empty strings, I can’t recall which) because of how hash tables work. If you need to allow these strings, then you need to add an explicit early return, not fall through to the hash table code.
&gt; 

Will add an early return. This method needs to handle any kind of string that it gets and if it doesn&apos;t match, return the &quot;AnyType&quot; of element search criteria

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:71
&gt; &gt; +WK_EXPORT void* WKAccessibilityRootObject(WKBundlePageRef);
&gt; &gt; +WK_EXPORT void* WKAccessibilityFocusedObject(WKBundlePageRef);    
&gt; 
&gt; Does this really need to be void*?

They return the &quot;id&quot; type naturally. Should I make a new opaque type to wrap that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494795</commentid>
    <comment_count>8</comment_count>
      <attachid>113348</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-02 12:13:12 -0700</bug_when>
    <thetext>Created attachment 113348
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495130</commentid>
    <comment_count>9</comment_count>
      <attachid>113414</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-02 18:34:10 -0700</bug_when>
    <thetext>Created attachment 113414
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495491</commentid>
    <comment_count>10</comment_count>
      <attachid>113497</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-03 08:40:00 -0700</bug_when>
    <thetext>Created attachment 113497
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495555</commentid>
    <comment_count>11</comment_count>
      <attachid>113509</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-03 09:50:27 -0700</bug_when>
    <thetext>Created attachment 113509
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495599</commentid>
    <comment_count>12</comment_count>
      <attachid>113518</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-03 10:25:30 -0700</bug_when>
    <thetext>Created attachment 113518
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495640</commentid>
    <comment_count>13</comment_count>
      <attachid>113524</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-03 11:00:49 -0700</bug_when>
    <thetext>Created attachment 113524
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502765</commentid>
    <comment_count>14</comment_count>
      <attachid>113524</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-11-15 02:55:15 -0800</bug_when>
    <thetext>Comment on attachment 113524
patch

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

Informal review, hope you find it helpful. See my comments below

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:146
&gt; +    WebCore::AXObjectCache::enableAccessibility();

It probably doesn&apos;t matter much, but shouldn&apos;t we use the typical &quot;if (!AXObjectCache::accessibilityEnabled())&quot; check before calling to enableAccessibility(), for consistency with other places in the code? (e.g. see accessibilityRoot() in WebKit/mac/WebView/WebFrame.mm, or accessibilityAttributeValue() in WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm)

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:164
&gt; +    WebCore::AXObjectCache::enableAccessibility();

Same here.

&gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:53
&gt; +    return m_element;            

I think it could be better to do something like return m_element ? true : false; here so we always return something of bool type, since m_element is a PlatformUIElement

&gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:56
&gt; +// Unsupported methods on various platforms. As their implemented on other platforms this list should be modified.

&quot;their&quot; -&gt; &quot;they&apos;re&quot; ?

&gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h:47
&gt; +    // Controller Methods - platform-independent implementations

Missing &apos;.&apos; at the end of the comment. There are some more of these in the patch (e.g. AccessibilityUIElement.h), so won&apos;t comment on the rest (don&apos;t want to flood with this trivial things).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503951</commentid>
    <comment_count>15</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 09:09:26 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 113524 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113524&amp;action=review
&gt; 
&gt; Informal review, hope you find it helpful. See my comments below
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:146
&gt; &gt; +    WebCore::AXObjectCache::enableAccessibility();
&gt; 
&gt; It probably doesn&apos;t matter much, but shouldn&apos;t we use the typical &quot;if (!AXObjectCache::accessibilityEnabled())&quot; check before calling to enableAccessibility(), for consistency with other places in the code? (e.g. see accessibilityRoot() in WebKit/mac/WebView/WebFrame.mm, or accessibilityAttributeValue() in WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm)
&gt; 

Yea those are there unnecessarily. They did not come from this patch, so I left them alone

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:164
&gt; &gt; +    WebCore::AXObjectCache::enableAccessibility();
&gt; 
&gt; Same here.

This one is likely needed because the entry point to accessibility from DRT through WK2 will be through this method. If ax is not on, then the ax object cache will not be created and nothing will work


&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:53
&gt; &gt; +    return m_element;            
&gt; 
&gt; I think it could be better to do something like return m_element ? true : false; here so we always return something of bool type, since m_element is a PlatformUIElement
&gt; 

PlatformUIElement is not a ref pointer, so i think this is preferred style.

&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:56
&gt; &gt; +// Unsupported methods on various platforms. As their implemented on other platforms this list should be modified.
&gt; 
&gt; &quot;their&quot; -&gt; &quot;they&apos;re&quot; ?
&gt; 

thanks

&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h:47
&gt; &gt; +    // Controller Methods - platform-independent implementations
&gt; 
&gt; Missing &apos;.&apos; at the end of the comment. There are some more of these in the patch (e.g. AccessibilityUIElement.h), so won&apos;t comment on the rest (don&apos;t want to flood with this trivial things).

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503958</commentid>
    <comment_count>16</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 09:14:27 -0800</bug_when>
    <thetext>
&gt; &gt; 
&gt; &gt; &gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:53
&gt; &gt; &gt; +    return m_element;            
&gt; &gt; 
&gt; &gt; I think it could be better to do something like return m_element ? true : false; here so we always return something of bool type, since m_element is a PlatformUIElement
&gt; &gt; 
&gt; 
&gt; PlatformUIElement is not a ref pointer, so i think this is preferred style.
&gt; 

I don&apos;t see anything in style guide about this, so I don&apos;t know what&apos;s preferred. However I see this in RenderObject.h

virtual bool canHaveChildren() const { return virtualChildren(); }

where virtualChildren is a pointer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503991</commentid>
    <comment_count>17</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-11-16 09:49:52 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; [...]
&gt; I don&apos;t see anything in style guide about this, so I don&apos;t know what&apos;s preferred. However I see this in RenderObject.h
&gt; 
&gt; virtual bool canHaveChildren() const { return virtualChildren(); }
&gt; 
&gt; where virtualChildren is a pointer

Ok, perhaps it&apos;s me that I&apos;m used to that from other projects (so many coding styles that sometimes it&apos;s hard to remember which one is the right one).

Glad to see my comments were somehow useful, anyway :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504122</commentid>
    <comment_count>18</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 12:15:33 -0800</bug_when>
    <thetext>Part1
http://trac.webkit.org/changeset/100487</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504125</commentid>
    <comment_count>19</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 12:18:00 -0800</bug_when>
    <thetext>and final part
http://trac.webkit.org/changeset/100488</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504138</commentid>
    <comment_count>20</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 12:30:41 -0800</bug_when>
    <thetext>looks like this is causing some trouble on GTK...

looking into it


  GEN    DerivedSources/InjectedBundle/JSAccessibilityTextMarkerRange.cpp
&lt;command-line&gt;:0:1: error: macro names must be identifiers
&lt;command-line&gt;:0:1: error: macro names must be identifiers
&lt;command-line&gt;:0:1: error: macro names must be identifiers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504142</commentid>
    <comment_count>21</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 12:33:07 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; looks like this is causing some trouble on GTK...
&gt; 
&gt; looking into it
&gt; 
&gt; 
&gt;   GEN    DerivedSources/InjectedBundle/JSAccessibilityTextMarkerRange.cpp
&gt; &lt;command-line&gt;:0:1: error: macro names must be identifiers
&gt; &lt;command-line&gt;:0:1: error: macro names must be identifiers
&gt; &lt;command-line&gt;:0:1: error: macro names must be identifiers

Or maybe not. looks like GTK has been failing for a while</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504348</commentid>
    <comment_count>22</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 15:59:08 -0800</bug_when>
    <thetext>It looks like the release build of WebKitTestRunner is failing on something to do with this patch...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504364</commentid>
    <comment_count>23</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 16:08:48 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; It looks like the release build of WebKitTestRunner is failing on something to do with this patch...

However, I can build release just fine on my machine. Unfortunately the new run-webkit-tests does not output what happens when &quot;check build&quot; fails</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510791</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-11-29 08:25:40 -0800</bug_when>
    <thetext>This may have caused bug 73326.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113192</attachid>
            <date>2011-11-01 10:46:50 -0700</date>
            <delta_ts>2011-11-01 10:53:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>181317</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA5ODk2NykKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDcgQEAKIF9f
Wk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTEwcm9vdE9iamVjdEV2CiBfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUxOHJvb3RPYmplY3RGb3JGcmFtZUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3Jl
MTNBWE9iamVjdENhY2hlMjFnQWNjZXNzaWJpbGl0eUVuYWJsZWRFCitfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUyM2ZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlRVBLTlNfNFBhZ2VFCiBfX1pON1dl
YkNvcmUxM0FYT2JqZWN0Q2FjaGU0MmdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNl
RW5hYmxlZEUKIF9fWk43V2ViQ29yZTEzSFRUUEhlYWRlck1hcEMxRXYKIF9fWk43V2ViQ29yZTEz
SFRUUEhlYWRlck1hcEQxRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4OTc1KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTEtMTEtMDEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1yZWxhdGVk
IERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MjEzMQorCisgICAgICAgIE1pbm9yIGNoYW5nZXMgbmVlZGVkIHRvIHN1cHBvcnQgQVggdGVz
dGluZyBpbiBXS1Rlc3RSdW5uZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgICAgICBFeHBvc2UgZm9j
dXNlZFVJRWxlbWVudEZvclBhZ2Ugc28gdGhhdCB0aGUgV0syIGluamVjdGVkIGJ1bmRsZSBjYW4g
cmV0cmlldmUgaXQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKToKKyAgICAgICAgICAgIFJlbW92ZSBhbiB1bm5jZXNzYXJ5IGFzc2VydCB0aGF0IHdhcyBj
YXVzaW5nIGlzc3VlcyB3aXRoIHRoZSBXSzIgdGVzdCBydW4uCisKIDIwMTEtMTEtMDEgIE1pa2Ug
UmVlZCAgPHJlZWRAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbc2tpYV0gY2FsbCByZWFkUGl4ZWxz
IG9uIGNhbnZhcyBpbnN0ZWFkIG9mIGRldmljZSAod2lsbCBiZSBwcml2YXRlIG9uIGRldmljZSBz
b29uKSBhbmQgY2hlY2sgZm9yIGVycm9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlci5tbQkocmV2aXNpb24gOTg5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAt
NDk1LDggKzQ5NSw2IEBACiAKIHN0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGFjY2Vzc2li
aWxpdHlTZWFyY2hLZXlGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBBU1NF
UlQoIXZhbHVlLmlzRW1wdHkoKSk7Ci0gICAgCiAgICAgc3RhdGljIGNvbnN0IEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXlNYXAqIHNlYXJjaEtleU1hcCA9IGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXlNYXAoKTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IHNlYXJjaEtleSA9IHNl
YXJjaEtleU1hcC0+Z2V0KHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlUHJpdmF0ZS5oCShyZXZpc2lvbiA5ODk2NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Nyw2ICs2Nyw5IEBACiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VDb25maXJt
Q29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5k
bGVQYWdlQ29uZmlybUNvbXBvc2l0aW9uV2l0aFRleHQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
U3RyaW5nUmVmIHRleHQpOwogCitXS19FWFBPUlQgdm9pZCogV0tBY2Nlc3NpYmlsaXR5Um9vdE9i
amVjdChXS0J1bmRsZVBhZ2VSZWYpOworV0tfRVhQT1JUIHZvaWQqIFdLQWNjZXNzaWJpbGl0eUZv
Y3VzZWRPYmplY3QoV0tCdW5kbGVQYWdlUmVmKTsgICAgCisKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiA5
ODk2NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsMTEgQEAKICNpbmNs
dWRlICJXZWJVUkwuaCIKICNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCiAKKyNpbmNsdWRlIDxX
ZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0FjY2Vzc2liaWxpdHlP
YmplY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9L
VVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKQEAgLTEyNiw2ICsxMzAsNDYgQEAKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VS
ZWYpLT5tYWluV2ViRnJhbWUoKSk7CiB9CiAKK3ZvaWQqIFdLQWNjZXNzaWJpbGl0eVJvb3RPYmpl
Y3QoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAgaWYgKCFwYWdlUmVmKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICAKKyAgICBXZWJDb3JlOjpQYWdlKiBwYWdlID0gdG9JbXBsKHBhZ2VS
ZWYpLT5jb3JlUGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
CisgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmUgPSBwYWdlLT5tYWluRnJhbWUoKTsKKyAgICBpZiAo
IWNvcmUgfHwgIWNvcmUtPmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAg
IFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKKworICAgIFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3QgPSBjb3JlLT5kb2N1bWVudCgpLT5heE9i
amVjdENhY2hlKCktPnJvb3RPYmplY3QoKTsKKyAgICBpZiAoIXJvb3QpCisgICAgICAgIHJldHVy
biAwOworICAgIAorICAgIHJldHVybiByb290LT53cmFwcGVyKCk7Cit9CisKK3ZvaWQqIFdLQWNj
ZXNzaWJpbGl0eUZvY3VzZWRPYmplY3QoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAg
aWYgKCFwYWdlUmVmKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBXZWJDb3JlOjpQYWdl
KiBwYWdlID0gdG9JbXBsKHBhZ2VSZWYpLT5jb3JlUGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplbmFibGVBY2Nl
c3NpYmlsaXR5KCk7CisKKyAgICBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2Vk
T2JqZWN0ID0gV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2Uo
cGFnZSk7CisgICAgaWYgKCFmb2N1c2VkT2JqZWN0KQorICAgICAgICByZXR1cm4gMDsKKyAgICAK
KyAgICByZXR1cm4gZm9jdXNlZE9iamVjdC0+d3JhcHBlcigpOworfQorCiB2b2lkIFdLQnVuZGxl
UGFnZVN0b3BMb2FkaW5nKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogewogICAgIHRvSW1wbChw
YWdlUmVmKS0+c3RvcExvYWRpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4OTc1KQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMTEtMDEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1y
ZWxhdGVkIERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjEzMQorCisgICAgICAgIEFsbG93IHRoZSBpbmplY3RlZCBidW5kbGUgdG8gcmV0
cmlldmUgdGhlIGZvY3VzZWQgYW5kIHJvb3QgYWNjZXNzaWJpbGl0eQorICAgICAgICBvYmplY3Rz
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAo
V0tBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdCk6CisgICAgICAgIChXS0FjY2Vzc2liaWxpdHlGb2N1
c2VkT2JqZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZVByaXZhdGUuaDoKKwogMjAxMS0xMS0wMSAgSm9jZWx5biBUdXJjb3R0ZSAgPGpv
Y2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gTWVyZ2UgY29tbW9uIGRl
c2t0b3AgYW5kIHRvdWNoIHZpZXcgQVBJcyB1bmRlciBhIGJhc2UgY2xhc3MuCkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODk3
NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzMSBAQAor
MjAxMS0xMS0wMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5LXJlbGF0
ZWQgRFJUIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQyMTMxCisKKyAgICAgICAgUG9ydCB0aGUgQVggY29kZSBpbiBEUlQgdG8gV0tUZXN0UnVu
bmVyIGJ5IHVzaW5nIElETC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjp+QWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bWFr
ZVdpbmRvd09iamVjdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjp3
cmFwcGVyQ2xhc3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9v
dEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNl
ZEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZWxlbWVu
dEF0UG9pbnQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpsb2dGb2N1c0V2ZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpsb2dWYWx1ZUNoYW5nZUV2ZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpsb2dTY3JvbGxpbmdTdGFydEV2ZW50cyk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFkZE5vdGlmaWNhdGlvbkxpc3Rl
bmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6Om5vdGlmaWNhdGlv
blJlY2VpdmVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlc2V0
VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6d3JhcHBlckNsYXNzKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmg6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6cGxh
dGZvcm1UZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6d3JhcHBlckNsYXNzKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaDog
QWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OnBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVhbCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndyYXBw
ZXJDbGFzcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmFsaWQp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVhayk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxi
YXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9s
bGJhcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JF
bGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtl
clJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2Up
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyRm9yUG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwcmV2aW91c1RleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpuZXh0VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6IEFkZGVkLgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwbGF0Zm9ybVVJRWxlbWVudCk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5pZGw6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRsOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGU6OmJlZ2luVGVzdGluZyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZTo6YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDbGVhcldpbmRvd0ZvckZyYW1lKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmg6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvTGF5b3V0VGVzdENv
bnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1OYW1lKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbTogQWRkZWQuCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNF
cXVhbCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbTogQWRkZWQuCisgICAgICAgICgrW05TU3RyaW5nIHN0
cmluZ1dpdGhKU1N0cmluZ1JlZjpdKToKKyAgICAgICAgKC1bTlNTdHJpbmcgY3JlYXRlSlNTdHJp
bmdSZWZdKToKKyAgICAgICAgKC1bQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgaW5p
dFdpdGhQbGF0Zm9ybUVsZW1lbnQ6XSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIgX25vdGlmaWNhdGlvblJlY2VpdmVkOl0pOgorICAgICAgICAoLVtBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBzZXRDYWxsYmFjazpdKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToK
KyAgICAgICAgKFdUUjo6ZGVzY3JpcHRpb25PZlZhbHVlKToKKyAgICAgICAgKFdUUjo6YXR0cmli
dXRlc09mRWxlbWVudCk6CisgICAgICAgIChXVFI6OmNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFs
dWUpOgorICAgICAgICAoV1RSOjpjb252ZXJ0TlNBcnJheVRvVmVjdG9yKToKKyAgICAgICAgKFdU
Ujo6ZGVzY3JpcHRpb25PZkVsZW1lbnRzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldERvY3VtZW50TGlua3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y2hpbGRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291
bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0
SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxl
bWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1l
bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJv
dyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxp
bmtlZFVJRWxlbWVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU2V0dGFibGUpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVO
YW1lcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpsYW5ndWFnZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhl
bHBUZXh0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnkpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp3aWR0aCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmhlaWdodCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNsaWNrUG9pbnRYKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xp
Y2tQb2ludFkpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pblZhbHVlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWUpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXBwb3J0ZWQp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VuYWJsZWQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2VkKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc0NoZWNrZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNwZWFrKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXJpYUlzR3JhYmJlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFy
aWFEcm9wRWZmZWN0cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxp
bmVGb3JJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdl
Rm9yTGluZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0Zv
clJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9y
UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVk
U3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVh
ZGVycyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZkNvbHVtbnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZSb3dzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmli
dXRlc09mVmlzaWJsZUNlbGxzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mSGVhZGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cm93Q291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
b2x1bW5Db3VudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4
SW5UYWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0luZGV4
UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRl
eFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNv
bHVtbkFuZFJvdyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6
b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2
ZXJ0aWNhbFNjcm9sbGJhcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjppbmNyZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpkZWNyZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzaG93
TWVudSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1ZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2Rpbmcp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVu
ZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4pOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NvbGxhcHNlZCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGFrZUZvY3VzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGFrZVNlbGVjdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFkZFNlbGVjdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJlbW92ZVNlbGVjdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpl
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoV1RSOjpM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9JbmplY3RlZEJ1bmRsZS52Y3Byb2o6CisKIDIwMTEt
MTEtMDEgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAg
ICAgIFtRdF1bV0syXSBGaXggYnVpbGQgb2YgV2ViS2l0VGVzdFJ1bm5lciB3aXRoIEVMRiBzeW1i
b2wgdmlzaWJpbGl0eQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAJKHJl
dmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCIKKworI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorCitu
YW1lc3BhY2UgV1RSIHsKKyAgICAKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2VyIG1hcmtl
cikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG1h
cmtlcikpOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJiBt
YXJrZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cihtYXJrZXIpKTsKK30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlciBtYXJrZXIpCisgICAgOiBtX3RleHRNYXJrZXIo
bWFya2VyKQoreworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXImIG1hcmtlcikKKyAgICA6IG1f
dGV4dE1hcmtlcihtYXJrZXIucGxhdGZvcm1UZXh0TWFya2VyKCkpCit7Cit9CisKK0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKQoreworfQorCitKU0Ns
YXNzUmVmIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp3cmFwcGVyQ2xhc3MoKQoreworICAgIHJl
dHVybiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjphY2Nlc3NpYmlsaXR5VGV4dE1hcmtlckNs
YXNzKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmgiCisjaW5jbHVkZSAiSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV1RSIHsKKworUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVh
dGUoUGxhdGZvcm1VSUVsZW1lbnQgdWlFbGVtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCh1aUVsZW1lbnQpKTsKK30KKyAgICAKK1Bhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIHVpRWxlbWVudCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQodWlFbGVtZW50KSk7Cit9CisKK0pT
Q2xhc3NSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d3JhcHBlckNsYXNzKCkKK3sKKyAgICBy
ZXR1cm4gSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2xh
c3MoKTsKK30KKyAgICAKKy8vIEltcGxlbWVudGF0aW9uCisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNWYWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZWxlbWVudDsgICAgICAg
ICAgICAKK30KKyAgICAKKy8vIFVuc3VwcG9ydGVkIG1ldGhvZHMgb24gdmFyaW91cyBwbGF0Zm9y
bXMuCisjaWYgIVBMQVRGT1JNKE1BQykKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzcGVhaygpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUoaW50IGxpbmUpIHsg
cmV0dXJuIDA7IH0KK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGls
ZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KikgY29uc3QgeyB9Cit1bnNpZ25lZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25zdCB7IHJldHVybiAwOyB9
CitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVk
Q2hpbGRBdEluZGV4KHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIoKSBj
b25zdCB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorI2VuZGlm
CisKKyNpZiAhUExBVEZPUk0oV0lOKQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Vx
dWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkKK3sKKyAgICByZXR1cm4g
cGxhdGZvcm1VSUVsZW1lbnQoKSA9PSBvdGhlckVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCk7
Cit9CisjZW5kaWYKKworI2lmICFTVVBQT1JUU19BWF9URVhUTUFSS0VSUworQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VG
b3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKSB7IHJldHVybiAwOyB9CitpbnQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJu
IDA7IH0KK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKikgeyByZXR1cm4gMDsgfQorQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4gMDsgfQorQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgs
IGludCB5KSB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KSB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJu
IDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopIHsg
cmV0dXJuIDA7IH0KKyNlbmRpZgorICAgIAorfSAvLyBuYW1lc3BhY2UgV1RSCisKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCisjZGVmaW5l
IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyX2gKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaWYgUExBVEZP
Uk0oV0lOKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RSIHsK
KyAgICAKK2NsYXNzIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyIDogcHVibGljIEpTV3JhcHBhYmxl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cj4gY3JlYXRlKCk7CisgICAgfkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7CisKKyAgICB2b2lk
IG1ha2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiB3aW5kb3dPYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgdmlydHVhbCBKU0NsYXNzUmVmIHdyYXBwZXJD
bGFzcygpOworICAgIAorICAgIC8vIENvbnRyb2xsZXIgTWV0aG9kcyAtIHBsYXRmb3JtLWluZGVw
ZW5kZW50IGltcGxlbWVudGF0aW9ucworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gcm9vdEVsZW1lbnQoKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IGZvY3VzZWRFbGVtZW50KCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBlbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpOworCisgICAgLy8gSGVyZSBmb3IgY29u
c2lzdGVuY3kgd2l0aCBEUlQuIE5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIHRoZXkgZG9uJ3QgZG8g
YW55dGhpbmcgb24gdGhlIE1hYy4KKyAgICB2b2lkIGxvZ0ZvY3VzRXZlbnRzKCkge30KKyAgICB2
b2lkIGxvZ1ZhbHVlQ2hhbmdlRXZlbnRzKCkge30KKyAgICB2b2lkIGxvZ1Njcm9sbGluZ1N0YXJ0
RXZlbnRzKCkge30KKyAgICB2b2lkIGxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKSB7fQorICAgIHZv
aWQgYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIEpTVmFs
dWVSZWYgZnVuY3Rpb25DYWxsYmFjaykge30KKyAgICB2b2lkIG5vdGlmaWNhdGlvblJlY2VpdmVk
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBKU1N0cmluZ1JlZiBldmVudE5hbWUpIHt9CisgICAg
CisgICAgdm9pZCByZXNldFRvQ29uc2lzdGVudFN0YXRlKCkge30KKworcHJpdmF0ZToKKyAgICBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RSCisKKyNl
bmRpZiAvLyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5oCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcl9oCisKKyNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNp
ZiBQTEFURk9STShNQUMpCisjZGVmaW5lIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTIDEKKyNlbHNl
CisjZGVmaW5lIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTIDAKKyNlbmRpZgorCisjaWYgUExBVEZP
Uk0oTUFDKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgQ0ZUeXBlUmVmIFBs
YXRmb3JtVGV4dE1hcmtlcjsKKyNlbHNlCit0eXBlZGVmIHZvaWQqIFBsYXRmb3JtVGV4dE1hcmtl
cjsKKyNlbmRpZgorCituYW1lc3BhY2UgV1RSIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgOiBwdWJsaWMgSlNXcmFwcGFi
bGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2VyKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyJik7CisKKyAgICB+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKTsKKyAgICAKKyAgICBQbGF0
Zm9ybVRleHRNYXJrZXIgcGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
TWFya2VyLmdldCgpOyB9CisgICAgdmlydHVhbCBKU0NsYXNzUmVmIHdyYXBwZXJDbGFzcygpOwor
CisgICAgc3RhdGljIEpTT2JqZWN0UmVmIG1ha2VKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyKEpT
Q29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXImKTsKKyAgICBib29sIGlz
RXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICAKK3ByaXZhdGU6CisgICAgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIoUGxhdGZvcm1UZXh0TWFya2VyKTsKKyAgICBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcihjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciYpOworCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxQbGF0Zm9ybVRleHRNYXJrZXI+IG1fdGV4dE1hcmtl
cjsKKyNlbHNlCisgICAgUGxhdGZvcm1UZXh0TWFya2VyIG1fdGV4dE1hcmtlcjsKKyNlbmRpZgor
fTsKKworI2lmICFTVVBQT1JUU19BWF9URVhUTUFSS0VSUworaW5saW5lIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXIpIHsg
fQoraW5saW5lIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cihjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciYpIHsgfQoraW5saW5lIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKSB7IH0KK2lubGluZSBib29s
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KikgeyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBQbGF0Zm9ybVRleHRNYXJrZXIgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI6OnBsYXRmb3JtVGV4dE1hcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4
dE1hcmtlcjsgfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdUUgorICAgIAorI2VuZGlmIC8v
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyX2gKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmNwcAkocmV2aXNpb24gOTg5NjkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw2ICs4OSwxMiBAQAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNDaGFyKj4ocGF0aC5jb25zdERhdGEoKSks
IHBhdGgubGVuZ3RoKCkpOwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpCit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHBsYXRmb3JtTmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInF0
IikpOworICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgog
CiAjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5tb2MiCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRfaAorI2RlZmluZSBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50X2gKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oIgorI2luY2x1ZGUgIkpTV3Jh
cHBhYmxlLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2lm
ZGVmIF9fT0JKQ19fCit0eXBlZGVmIGlkIFBsYXRmb3JtVUlFbGVtZW50OworI2Vsc2UKK3R5cGVk
ZWYgc3RydWN0IG9iamNfb2JqZWN0KiBQbGF0Zm9ybVVJRWxlbWVudDsKKyNlbmRpZgorI2VsaWYg
UExBVEZPUk0oV0lOKQorI3VuZGVmIF9XSU5TT0NLQVBJXworI2RlZmluZSBfV0lOU09DS0FQSV8g
Ly8gUHJldmVudCBpbmNsdXNpb24gb2Ygd2luc29jay5oIGluIHdpbmRvd3MuaAorCisjaW5jbHVk
ZSA8V2ViQ29yZS9DT01QdHIuaD4KKyNpbmNsdWRlIDxvbGVhY2MuaD4KKwordHlwZWRlZiBDT01Q
dHI8SUFjY2Vzc2libGU+IFBsYXRmb3JtVUlFbGVtZW50OworI2VsaWYgUExBVEZPUk0oR1RLKQor
I2luY2x1ZGUgPGF0ay9hdGsuaD4KK3R5cGVkZWYgQXRrT2JqZWN0KiBQbGF0Zm9ybVVJRWxlbWVu
dDsKKyNlbHNlCit0eXBlZGVmIHZvaWQqIFBsYXRmb3JtVUlFbGVtZW50OworI2VuZGlmCisKKyNp
ZiBQTEFURk9STShNQUMpCisjaWZkZWYgX19PQkpDX18KK3R5cGVkZWYgaWQgTm90aWZpY2F0aW9u
SGFuZGxlcjsKKyNlbHNlCit0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCogTm90aWZpY2F0aW9u
SGFuZGxlcjsKKyNlbmRpZgorI2VuZGlmCisKK25hbWVzcGFjZSBXVFIgeworCitjbGFzcyBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IDogcHVibGljIEpTV3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjcmVhdGUoUGxhdGZvcm1V
SUVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Jik7CisKKyAgICB+QWNjZXNzaWJp
bGl0eVVJRWxlbWVudCgpOworCisgICAgUGxhdGZvcm1VSUVsZW1lbnQgcGxhdGZvcm1VSUVsZW1l
bnQoKSB7IHJldHVybiBtX2VsZW1lbnQ7IH0KKyAgICB2aXJ0dWFsIEpTQ2xhc3NSZWYgd3JhcHBl
ckNsYXNzKCk7CisKKyAgICBzdGF0aWMgSlNPYmplY3RSZWYgbWFrZUpTQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudChKU0NvbnRleHRSZWYsIGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsKKwor
ICAgIGJvb2wgaXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBvdGhlckVsZW1lbnQpOwor
ICAgIAorICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudEF0UG9p
bnQoaW50IHgsIGludCB5KTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IGNoaWxkQXRJbmRleCh1bnNpZ25lZCk7CisgICAgdW5zaWduZWQgaW5kZXhPZkNoaWxkKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQqKTsKKyAgICBpbnQgY2hpbGRyZW5Db3VudCgpOworICAgIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdGl0bGVVSUVsZW1lbnQoKTsKKyAgICBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHBhcmVudEVsZW1lbnQoKTsKKworICAgIHZv
aWQgdGFrZUZvY3VzKCk7CisgICAgdm9pZCB0YWtlU2VsZWN0aW9uKCk7CisgICAgdm9pZCBhZGRT
ZWxlY3Rpb24oKTsKKyAgICB2b2lkIHJlbW92ZVNlbGVjdGlvbigpOworCisgICAgLy8gTWV0aG9k
cyAtIHBsYXRmb3JtLWluZGVwZW5kZW50IGltcGxlbWVudGF0aW9ucworICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBhbGxBdHRyaWJ1dGVzKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IGF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMoKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IGxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQpOworICAg
IAorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtz
KCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkNoaWxkcmVuKCk7
CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1l
cygpOworICAgIHZvaWQgaW5jcmVtZW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnQoKTsKKyAgICB2
b2lkIHNob3dNZW51KCk7CisgICAgdm9pZCBwcmVzcygpOworCisgICAgLy8gQXR0cmlidXRlcyAt
IHBsYXRmb3JtLWluZGVwZW5kZW50IGltcGxlbWVudGF0aW9ucworICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwor
ICAgIGRvdWJsZSBudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwor
ICAgIGJvb2wgYm9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAg
Ym9vbCBpc0F0dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOworICAgIGJv
b2wgaXNBdHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOworICAgIGJvb2wg
aXNBY3Rpb25TdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYWN0aW9uKTsKKyAgICBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gcm9sZSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdWJyb2xl
KCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJvbGVEZXNjcmlwdGlvbigpOworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB0aXRsZSgpOworICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBkZXNjcmlwdGlvbigpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsYW5n
dWFnZSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdWYWx1ZSgpOworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhY2Nlc3NpYmlsaXR5VmFsdWUoKSBjb25zdDsKKyAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gaGVscFRleHQoKSBjb25zdDsKKyAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gb3JpZW50YXRpb24oKSBjb25zdDsKKyAgICBkb3VibGUgeCgpOwor
ICAgIGRvdWJsZSB5KCk7CisgICAgZG91YmxlIHdpZHRoKCk7CisgICAgZG91YmxlIGhlaWdodCgp
OworICAgIGRvdWJsZSBpbnRWYWx1ZSgpIGNvbnN0OworICAgIGRvdWJsZSBtaW5WYWx1ZSgpOwor
ICAgIGRvdWJsZSBtYXhWYWx1ZSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB2YWx1
ZURlc2NyaXB0aW9uKCk7CisgICAgaW50IGluc2VydGlvblBvaW50TGluZU51bWJlcigpOworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzZWxlY3RlZFRleHRSYW5nZSgpOworICAgIGJvb2wg
aXNFbmFibGVkKCk7CisgICAgYm9vbCBpc1JlcXVpcmVkKCkgY29uc3Q7CisgICAgCisgICAgYm9v
bCBpc0ZvY3VzZWQoKSBjb25zdDsKKyAgICBib29sIGlzRm9jdXNhYmxlKCkgY29uc3Q7CisgICAg
Ym9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7CisgICAgYm9vbCBpc1NlbGVjdGFibGUoKSBjb25zdDsK
KyAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTZWxlY3Rl
ZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKSBjb25zdDsKKyAgICB1bnNpZ25lZCBzZWxl
Y3RlZENoaWxkcmVuQ291bnQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IHNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkKSBjb25zdDsKKyAgICAKKyAg
ICBib29sIGlzVmFsaWQoKSBjb25zdDsKKyAgICBib29sIGlzRXhwYW5kZWQoKSBjb25zdDsKKyAg
ICBib29sIGlzQ2hlY2tlZCgpIGNvbnN0OworICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0OworICAgIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25z
dDsKKyAgICBib29sIGlzSWdub3JlZCgpIGNvbnN0OworICAgIGJvb2wgaGFzUG9wdXAoKSBjb25z
dDsKKyAgICBpbnQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdDsKKyAgICBkb3VibGUgY2xpY2tQ
b2ludFgoKTsKKyAgICBkb3VibGUgY2xpY2tQb2ludFkoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gZG9jdW1lbnRFbmNvZGluZygpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBkb2N1bWVudFVSSSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB1cmwoKTsKKwor
ICAgIC8vIENTUzMtc3BlZWNoIHByb3BlcnRpZXMuCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHNwZWFrKCk7CisgICAgCisgICAgLy8gVGFibGUtc3BlY2lmaWMgYXR0cmlidXRlcworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCk7Cisg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZlJvd0hlYWRlcnMoKTsKKyAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mQ29sdW1ucygpOworICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZSb3dzKCk7CisgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZlZpc2libGVDZWxscygpOworICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZIZWFkZXIoKTsKKyAgICBpbnQgaW5kZXhJblRh
YmxlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJvd0luZGV4UmFuZ2UoKTsKKyAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY29sdW1uSW5kZXhSYW5nZSgpOworICAgIGludCBy
b3dDb3VudCgpOworICAgIGludCBjb2x1bW5Db3VudCgpOworICAgIAorICAgIC8vIFRyZWUvT3V0
bGluZSBzcGVjaWZpYyBhdHRyaWJ1dGVzCisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBzZWxlY3RlZFJvd0F0SW5kZXgodW5zaWduZWQpOworICAgIFBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gZGlzY2xvc2VkQnlSb3coKTsKKyAgICBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWduZWQpOworCisg
ICAgLy8gQVJJQSBzcGVjaWZpYworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gYXJpYU93bnNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CisgICAgUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgodW5zaWduZWQpOwor
CisgICAgLy8gQVJJQSBEcmFnIGFuZCBEcm9wCisgICAgYm9vbCBhcmlhSXNHcmFiYmVkKCkgY29u
c3Q7CisgICAgLy8gQSBzcGFjZSBjb25jYXRlbnRhdGVkIHN0cmluZyBvZiBhbGwgdGhlIGRyb3Ag
ZWZmZWN0cy4KKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXJpYURyb3BFZmZlY3RzKCkg
Y29uc3Q7CisgICAgCisgICAgLy8gUGFyYW1ldGVyaXplZCBhdHRyaWJ1dGVzCisgICAgaW50IGxp
bmVGb3JJbmRleChpbnQpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByYW5nZUZvckxp
bmUoaW50KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYm91bmRzRm9yUmFuZ2UodW5z
aWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgdm9pZCBzZXRTZWxlY3RlZFRl
eHRSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZWRTdHJp
bmdGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29s
IGF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25lZCBsb2NhdGlvbiwgdW5z
aWduZWQgbGVuZ3RoKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHVp
RWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVs
ZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1N0cmluZ1JlZiBzZWFyY2hLZXksIEpTU3Ry
aW5nUmVmIHNlYXJjaFRleHQpOworICAgIAorICAgIC8vIFRhYmxlLXNwZWNpZmljCisgICAgUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2ln
bmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KTsKKworICAgIC8vIFNjcm9sbGFyZWEtc3BlY2lmaWMK
KyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGhvcml6b250YWxTY3JvbGxi
YXIoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHZlcnRp
Y2FsU2Nyb2xsYmFyKCkgY29uc3Q7CisKKyAgICAvLyBUZXh0IG1hcmtlcnMuCisgICAgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVt
ZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKTsgICAgCisgICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVu
ZE1hcmtlcik7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gc3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uq
KTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBlbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKKyAgICBQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiB0ZXh0TWFya2VyRm9yUG9pbnQoaW50
IHgsIGludCB5KTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBwcmV2
aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciopOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gYWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7Cisg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CisgICAgaW50IHRleHRNYXJrZXJSYW5nZUxlbmd0
aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CisgICAgCisgICAgLy8gTm90aWZpY2F0
aW9ucworICAgIC8vIEZ1bmN0aW9uIGNhbGxiYWNrIHNob3VsZCB0YWtlIG9uZSBhcmd1bWVudCwg
dGhlIG5hbWUgb2YgdGhlIG5vdGlmaWNhdGlvbi4KKyAgICBib29sIGFkZE5vdGlmaWNhdGlvbkxp
c3RlbmVyKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjayk7CisgICAgLy8gTWFrZSBzdXJlIHlv
dSBjYWxsIHJlbW92ZSwgYmVjYXVzZSB5b3UgY2FuJ3QgcmVseSBvbiBvYmplY3RzIGJlaW5nIGRl
YWxsb2NhdGVkIGluIGEgdGltZWx5IGZhc2hpb24uCisgICAgYm9vbCByZW1vdmVOb3RpZmljYXRp
b25MaXN0ZW5lcigpOworICAgIAorcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KFBsYXRmb3JtVUlFbGVtZW50KTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsKKworICAgIHZvaWQgZ2V0TGlua2VkVUlFbGVtZW50cyhW
ZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKKyAgICB2b2lkIGdldERv
Y3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Jik7Cisg
ICAgdm9pZCBnZXRDaGlsZHJlbihWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
ID4mKTsKKyAgICB2b2lkIGdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gPiYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgp
OworCisgICAgUGxhdGZvcm1VSUVsZW1lbnQgbV9lbGVtZW50OworICAgIAorICAgIC8vIEEgcmV0
YWluZWQsIHBsYXRmb3JtIHNwZWNpZmljIG9iamVjdCB1c2VkIHRvIGhlbHAgbWFuYWdlIG5vdGlm
aWNhdGlvbnMgZm9yIHRoaXMgb2JqZWN0LgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBOb3RpZmlj
YXRpb25IYW5kbGVyIG1fbm90aWZpY2F0aW9uSGFuZGxlcjsKKyNlbmRpZgorfTsKKworfSAvLyBu
YW1lc3BhY2UgV1RSCisgICAgCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudF9oCklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9MYXlvdXRUZXN0
Q29udHJvbGxlckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiA5
ODk2OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNCArNjUsMTAgQEAK
ICAgICByZXR1cm4gdXJsOwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpCit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHBsYXRmb3JtTmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImd0
ayIpKTsKKyAgICByZXR1cm4gcGxhdGZvcm1OYW1lOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAkocmV2aXNp
b24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5o
PgorCituYW1lc3BhY2UgV1RSIHsKKyAgICAKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKFBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlIG1hcmtlclJhbmdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkpOworfQorCitQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U6OmNyZWF0ZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJiBtYXJrZXJS
YW5nZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpKTsKK30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBtYXJr
ZXJSYW5nZSkKKyAgICA6IG1fdGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKQoreworfQorCitB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UmIG1hcmtlclJhbmdlKQorICAgIDog
bV90ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UucGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSkK
K3sKK30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6fkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UoKQoreworfQorCitKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U6OndyYXBwZXJDbGFzcygpCit7CisgICAgcmV0dXJuIEpTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZTo6YWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZUNsYXNzKCk7Cit9CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBXVFIKKwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0xheW91dFRlc3RDb250
cm9sbGVyV2luLmNwcAkocmV2aXNpb24gOTg5NjkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDQgKzY0LDEwIEBACiAgICAgcmV0dXJuIEpTU3RyaW5nUmV0YWluKHVybCk7
IC8vIFRPRE8uCiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGxh
dGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygid2luIikpOwor
ICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwJKHJldmlz
aW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK21vZHVsZSBXVFIgeworCisgICAgaW50ZXJmYWNlIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgcm9vdEVsZW1lbnQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50IGZvY3VzZWRFbGVtZW50OworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IGVsZW1lbnRBdFBvaW50KGluIGludCB4LCBpbiBpbnQgeSk7CisgICAgICAgIAorICAg
ICAgICB2b2lkIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGluIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQgZWxlbWVudCwgaW4gb2JqZWN0IGZ1bmN0aW9uQ2FsbGJhY2spOworICAgICAgICB2b2lkIG5v
dGlmaWNhdGlvblJlY2VpdmVkKGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxlbWVudCwgaW4g
RE9NU3RyaW5nIGV2ZW50TmFtZSk7CisKKyAgICAgICAgdm9pZCBsb2dGb2N1c0V2ZW50cygpOwor
ICAgICAgICB2b2lkIGxvZ1ZhbHVlQ2hhbmdlRXZlbnRzKCk7CisgICAgICAgIHZvaWQgbG9nU2Ny
b2xsaW5nU3RhcnRFdmVudHMoKTsKKyAgICAgICAgdm9pZCBsb2dBY2Nlc3NpYmlsaXR5RXZlbnRz
KCk7CisgICAgICAgIHZvaWQgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOworICAgIH07CisKK30K
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlLmlkbAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgV1RSIHsKKworICAg
IGludGVyZmFjZSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHsKKyAgICAgICAgYm9vbGVh
biBpc0VxdWFsKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ugb3RoZXJNYXJrZXJSYW5n
ZSk7CisgICAgfTsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRsCShyZXZpc2lvbiAw
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCittb2R1bGUgV1RSIHsKKworICAgIGludGVyZmFjZSBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciB7CisgICAgICAgIGJvb2xlYW4gaXNFcXVhbChpbiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciBvdGhlck1hcmtlcik7CisgICAgfTsKKworfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1
bGUgV1RSIHsKKworICAgIGludGVyZmFjZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKKyAgICAg
ICAgYm9vbGVhbiBpc0VxdWFsKGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgb3RoZXJFbGVtZW50
KTsKKworICAgICAgICAvLyBFbGVtZW50IGFjY2Vzcy4KKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCBlbGVtZW50QXRQb2ludChpbiBpbnQgeCwgaW4gaW50IHkpOworICAgICAgICBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IGNoaWxkQXRJbmRleChpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsK
KyAgICAgICAgdW5zaWduZWQgbG9uZyBpbmRleE9mQ2hpbGQoaW4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCBjaGlsZCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgbGlua2VkVUlFbGVt
ZW50QXRJbmRleChpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCBzZWxlY3RlZENoaWxkQXRJbmRleChpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsK
KyAgICAgICAgdm9pZCBzZXRTZWxlY3RlZENoaWxkKGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
ZWxlbWVudCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgdGl0bGVVSUVsZW1lbnQo
KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBwYXJlbnRFbGVtZW50KCk7CisgICAg
ICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJvbGU7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc3Vicm9sZTsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyByb2xlRGVzY3JpcHRpb247CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgdGl0bGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgZGVzY3JpcHRpb247CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
bGFuZ3VhZ2U7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaGVscFRleHQ7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWVEZXNjcmlwdGlvbjsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1cmw7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc3BlYWs7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgb3JpZW50YXRpb247CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQg
aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHNlbGVjdGVkVGV4dFJhbmdlOworICAgIAorICAgICAgICBET01TdHJpbmcgc3RyaW5n
QXR0cmlidXRlVmFsdWUoaW4gRE9NU3RyaW5nIGF0dHIpOworICAgICAgICBkb3VibGUgbnVtYmVy
QXR0cmlidXRlVmFsdWUoaW4gRE9NU3RyaW5nIGF0dHIpOworICAgICAgICBib29sZWFuIGJvb2xB
dHRyaWJ1dGVWYWx1ZShpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGJvb2xlYW4gaXNBdHRy
aWJ1dGVTdXBwb3J0ZWQoaW4gRE9NU3RyaW5nIGF0dHIpOworICAgICAgICBib29sZWFuIGlzQXR0
cmlidXRlU2V0dGFibGUoaW4gRE9NU3RyaW5nIGF0dHIpOworICAgICAgICBib29sZWFuIGlzQWN0
aW9uU3VwcG9ydGVkKGluIERPTVN0cmluZyBhdHRyKTsKKworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHN0cmluZ1ZhbHVlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
aW50IGludFZhbHVlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IG1pblZhbHVlOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IG1heFZhbHVlOworICAgICAgICAKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNFbmFibGVkOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1JlcXVpcmVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBpc0ZvY3VzZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IGlzU2VsZWN0ZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzTXVsdGlT
ZWxlY3RhYmxlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0V4cGFuZGVk
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0NoZWNrZWQ7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVmlzaWJsZTsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gaXNDb2xsYXBzZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIGhhc1BvcHVwOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBp
c0lnbm9yZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzT2ZmU2NyZWVu
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1ZhbGlkOworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgaW50IGhpZXJhcmNoaWNhbExldmVsOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgYm9vbGVhbiBhcmlhSXNHcmFiYmVkOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGFyaWFEcm9wRWZmZWN0czsKKyAgICAgICAgCisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBpbnQgeDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCB5Owor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IHdpZHRoOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgaW50IGhlaWdodDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBjbGlj
a1BvaW50WDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBjbGlja1BvaW50WTsKKwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IGNoaWxkcmVuQ291bnQ7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBpbnQgc2VsZWN0ZWRDaGlsZHJlbkNvdW50OworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgaW50IHJvd0NvdW50OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
aW50IGNvbHVtbkNvdW50OworCisgICAgICAgIC8vIEFjdGlvbnMuCisgICAgICAgIHZvaWQgaW5j
cmVtZW50KCk7CisgICAgICAgIHZvaWQgZGVjcmVtZW50KCk7CisgICAgICAgIHZvaWQgcHJlc3Mo
KTsKKyAgICAgICAgdm9pZCBzaG93TWVudSgpOworCisgICAgICAgIC8vIEF0dHJpYnV0ZSBpbmZv
LgorICAgICAgICBET01TdHJpbmcgYWxsQXR0cmlidXRlcygpOworICAgICAgICBET01TdHJpbmcg
YXR0cmlidXRlc09mQ2hpbGRyZW4oKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZkxp
bmtlZFVJRWxlbWVudHMoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZkRvY3VtZW50
TGlua3MoKTsKKyAgICAgICAgCisgICAgICAgIC8vIFRhYmxlIGluZm8uCisgICAgICAgIERPTVN0
cmluZyBhdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCk7CisgICAgICAgIERPTVN0cmluZyBhdHRy
aWJ1dGVzT2ZSb3dIZWFkZXJzKCk7CisgICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVzT2ZDb2x1
bW5zKCk7CisgICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVzT2ZSb3dzKCk7CisgICAgICAgIERP
TVN0cmluZyBhdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0
dHJpYnV0ZXNPZkhlYWRlcigpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGNlbGxG
b3JDb2x1bW5BbmRSb3coaW4gdW5zaWduZWQgbG9uZyBjb2x1bW4sIGluIHVuc2lnbmVkIGxvbmcg
cm93KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBzZWxlY3RlZFJvd0F0SW5kZXgo
aW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
ZGlzY2xvc2VkQnlSb3coKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBkaXNjbG9z
ZWRSb3dBdEluZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICBpbnQgaW5kZXhJ
blRhYmxlKCk7CisgICAgICAgIERPTVN0cmluZyByb3dJbmRleFJhbmdlKCk7CisgICAgICAgIERP
TVN0cmluZyBjb2x1bW5JbmRleFJhbmdlKCk7CisgICAgICAgIGludCByb3dDb3VudCgpOworICAg
ICAgICBpbnQgY29sdW1uQ291bnQoKTsKKyAgICAKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCBhcmlhT3duc0VsZW1lbnRBdEluZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAg
ICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGFyaWFGbG93VG9FbGVtZW50QXRJbmRleChpbiB1
bnNpZ25lZCBsb25nIGluZGV4KTsKKworICAgICAgICAvLyBQYXJhbWF0ZXJpemVkIGF0dHJpYnV0
ZXMuCisgICAgICAgIERPTVN0cmluZyBwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMoKTsKKyAg
ICAgICAgaW50IGxpbmVGb3JJbmRleChpbiBpbnQgaW5kZXgpOworICAgICAgICBET01TdHJpbmcg
cmFuZ2VGb3JMaW5lKGluIGludCBpbmRleCk7CisgICAgICAgIERPTVN0cmluZyBib3VuZHNGb3JS
YW5nZShpbiB1bnNpZ25lZCBsb25nIGxvY2F0aW9uLCBpbiB1bnNpZ25lZCBsb25nIGxlbmd0aCk7
CisgICAgICAgIERPTVN0cmluZyBzdHJpbmdGb3JSYW5nZShpbiB1bnNpZ25lZCBsb25nIGxvY2F0
aW9uLCBpbiB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CisgICAgICAgIERPTVN0cmluZyBhdHRyaWJ1
dGVkU3RyaW5nRm9yUmFuZ2UoaW4gdW5zaWduZWQgbG9uZyBsb2NhdGlvbiwgaW4gdW5zaWduZWQg
bG9uZyBsZW5ndGgpOworICAgICAgICBib29sZWFuIGF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlz
c3BlbGxlZChpbiB1bnNpZ25lZCBsb25nIGxvY2F0aW9uLCBpbiB1bnNpZ25lZCBsb25nIGxlbmd0
aCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgdWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgc3RhcnRFbGVtZW50LCBpbiBib29sZWFu
IGlzRGlyZWN0aW9uTmV4dCwgaW4gRE9NU3RyaW5nIHNlYXJjaEtleSwgaW4gRE9NU3RyaW5nIHNl
YXJjaFRleHQpOworICAgICAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKGluIHVuc2lnbmVk
IGxvbmcgbG9jYXRpb24sIGluIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKKworICAgICAgICAvLyBT
Y3JvbGwgYXJlYSBhdHRyaWJ1dGVzLgorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBob3Jpem9udGFsU2Nyb2xsYmFyOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB2ZXJ0aWNhbFNjcm9sbGJhcjsKKworICAg
ICAgICAvLyBUZXh0IG1hcmtlcnMuCisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UgdGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVs
ZW1lbnQpOyAgICAKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0TWFya2Vy
LCBpbiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBlbmRNYXJrZXIpOworICAgICAgICBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciBzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoaW4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSByYW5nZSk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyIGVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoaW4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSByYW5nZSk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
IHRleHRNYXJrZXJGb3JQb2ludChpbiBpbnQgeCwgaW4gaW50IHkpOworICAgICAgICBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciBwcmV2aW91c1RleHRNYXJrZXIoaW4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIgbWFya2VyKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgbmV4dFRleHRN
YXJrZXIoaW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgbWFya2VyKTsKKyAgICAgICAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBhY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoaW4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgbWFya2VyKTsKKyAgICAgICAgRE9NU3RyaW5nIHN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShpbiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHJhbmdlKTsK
KyAgICAgICAgaW50IHRleHRNYXJrZXJSYW5nZUxlbmd0aChpbiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlIHJhbmdlKTsKKworICAgICAgICAvLyBOb3RpZmljYXRpb24gc3VwcG9ydC4KKyAg
ICAgICAgYm9vbGVhbiBhZGROb3RpZmljYXRpb25MaXN0ZW5lcihpbiBvYmplY3QgY2FsbGJhY2tG
dW5jdGlvbik7CisgICAgICAgIGJvb2xlYW4gcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsK
KyAgICAgICAgCisgICAgfTsKKworfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRU
ZXN0Q29udHJvbGxlci5pZGwJKHJldmlzaW9uIDk4OTY5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsOCBAQAogICAgICAgICB2b2lkIHNldEJhY2tpbmdT
Y2FsZUZhY3RvcihpbiBkb3VibGUgYmFja2luZ1NjYWxlRmFjdG9yLCBpbiBvYmplY3QgY2FsbGJh
Y2spOwogCiAgICAgICAgIHZvaWQgc2V0V2luZG93SXNLZXkoaW4gYm9vbGVhbiBpc0tleSk7Cisg
ICAgICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBsYXRmb3JtTmFt
ZTsKICAgICB9OwogCiB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiA5
ODk2OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQ1LDYgKzY0NSw3IEBACiAgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmdjQ29udHJvbGxlcigpLT5tYWtlV2luZG93T2JqZWN0KGNv
bnRleHQsIHdpbmRvdywgJmV4Y2VwdGlvbik7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LmV2ZW50U2VuZGluZ0NvbnRyb2xsZXIoKS0+bWFrZVdpbmRvd09iamVjdChjb250ZXh0LCB3aW5k
b3csICZleGNlcHRpb24pOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS50ZXh0SW5wdXRD
b250cm9sbGVyKCktPm1ha2VXaW5kb3dPYmplY3QoY29udGV4dCwgd2luZG93LCAmZXhjZXB0aW9u
KTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIo
KS0+bWFrZVdpbmRvd09iamVjdChjb250ZXh0LCB3aW5kb3csICZleGNlcHRpb24pOwogICAgIFdl
YkNvcmVUZXN0U3VwcG9ydDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KGNvbnRleHQpOwogfQogCklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gOTg5NjkpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTkyLDYgKzE5Miw3IEBACiAgICAgbV9nY0NvbnRyb2xsZXIgPSBHQ0NvbnRyb2xsZXI6OmNy
ZWF0ZSgpOwogICAgIG1fZXZlbnRTZW5kaW5nQ29udHJvbGxlciA9IEV2ZW50U2VuZGluZ0NvbnRy
b2xsZXI6OmNyZWF0ZSgpOwogICAgIG1fdGV4dElucHV0Q29udHJvbGxlciA9IFRleHRJbnB1dENv
bnRyb2xsZXI6OmNyZWF0ZSgpOworICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgPSBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6Y3JlYXRlKCk7CiAKICAgICBXS0J1bmRsZVNldFNob3VsZFRy
YWNrVmlzaXRlZExpbmtzKG1fYnVuZGxlLCBmYWxzZSk7CiAgICAgV0tCdW5kbGVSZW1vdmVBbGxW
aXNpdGVkTGlua3MobV9idW5kbGUpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZU1hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlLmgiCisKK25hbWVzcGFjZSBXVFIgeworICAgIAorYm9vbCBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG90
aGVyKQoreworICAgIHJldHVybiBbKGlkKXBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgaXNFcXVh
bDooaWQpb3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworfQorICAgIAorfSAvLyBu
YW1lc3BhY2UgV1RSCisKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyTWFjLm1tCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0JKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCIKKworbmFtZXNwYWNlIFdU
UiB7CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1YWwoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIG90aGVyKQoreworICAgIHJldHVybiBbKGlkKXBsYXRmb3JtVGV4dE1hcmtl
cigpIGlzRXF1YWw6KGlkKW90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdUUgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0JKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE0MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmgiCisjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZS5oIgorI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVQ
YWdlLmgiCisKKyNpbXBvcnQgPEFwcEtpdC9OU0FjY2Vzc2liaWxpdHkuaD4KKyNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5Q
dHIuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNGLmg+CisjaW1wb3J0IDxXZWJLaXQyL1dLQnVuZGxl
RnJhbWUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3Iu
aD4KKworCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGUKKyNkZWZpbmUgTlNB
Y2Nlc3NpYmlsaXR5T3duc0F0dHJpYnV0ZSBAIkFYT3ducyIKKyNlbmRpZgorCisjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5R3Jh
YmJlZEF0dHJpYnV0ZSBAIkFYR3JhYmJlZCIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJp
bGl0eURyb3BFZmZlY3RzQXR0cmlidXRlCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eURyb3BFZmZl
Y3RzQXR0cmlidXRlIEAiQVhEcm9wRWZmZWN0cyIKKyNlbmRpZgorCisvLyBJZiBhbiB1bnN1cHBv
cnRlZCBhdHRyaWJ1dGUgaXMgcGFzc2VkIGluLCBpdCB3aWxsIHJhaXNlIGFuIGFjY2Vzc2liaWxp
dHkgZXhjZXB0aW9uLiBUaGVzZSBhcmUgdXN1YWxseSBjYXVnaHQgYnkgdGhlIEFjY2Vzc2liaWxp
dHkgUnVudGltZSB0byBpbmZvcm0KKy8vIHRoZSBBWCBjbGllbnQgYXBwIG9mIHRoZSBlcnJvci4g
SG93ZXZlciwgRFJUIGlzIHRoZSBBWCBjbGllbnQgYXBwLCBzbyBpdCBtdXN0IGNhdGNoIHRoZXNl
IGV4Y2VwdGlvbnMuCisjZGVmaW5lIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUyBAdHJ5IHsKKyNk
ZWZpbmUgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZSkgeyBp
ZiAoIVtbZSBuYW1lXSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RXhjZXB0aW9uXSkg
QHRocm93OyB9CisKKwordHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFj
aykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwgdm9pZCogY29udGV4dCk7CisK
K0BpbnRlcmZhY2UgTlNPYmplY3QgKFdlYktpdEFjY2Vzc2liaWxpdHlBZGRpdGlvbnMpCistIChO
U0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOihOU1N0cmluZyAqKWF0
dHJpYnV0ZSBpbmRleDooTlNVSW50ZWdlcilpbmRleCBtYXhDb3VudDooTlNVSW50ZWdlciltYXhD
b3VudDsKKy0gKHZvaWQpYWNjZXNzaWJpbGl0eVNldFNob3VsZFJlcG9zdE5vdGlmaWNhdGlvbnM6
KEJPT0wpcmVwb3N0OworLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhPZkNoaWxkOihp
ZCljaGlsZDsKKy0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6
KE5TU3RyaW5nICopYXR0cmlidXRlOworQGVuZAorCitAaW50ZXJmYWNlIE5TU3RyaW5nIChKU1N0
cmluZ1JlZkFkZGl0aW9ucykKKysgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihK
U1N0cmluZ1JlZilqc1N0cmluZ1JlZjsKKy0gKEpTU3RyaW5nUmVmKWNyZWF0ZUpTU3RyaW5nUmVm
OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25z
KQorCisrIChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNT
dHJpbmdSZWYKK3sKKyAgICBpZiAoIWpzU3RyaW5nUmVmKQorICAgICAgICByZXR1cm4gTlVMTDsK
KyAgICAKKyAgICBDRlN0cmluZ1JlZiBjZlN0cmluZyA9IEpTU3RyaW5nQ29weUNGU3RyaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKTsKKyAgICByZXR1cm4gWyhOU1N0cmluZyAq
KWNmU3RyaW5nIGF1dG9yZWxlYXNlXTsKK30KKworLSAoSlNTdHJpbmdSZWYpY3JlYXRlSlNTdHJp
bmdSZWYKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5n
UmVmKXNlbGYpOworfQorCitAZW5kCisKK0BpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIgOiBOU09iamVjdAoreworICAgIGlkIG1fcGxhdGZvcm1FbGVtZW50OworICAg
IEpTVmFsdWVSZWYgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrOworfQorCitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcgorCistIChp
ZClpbml0V2l0aFBsYXRmb3JtRWxlbWVudDooaWQpcGxhdGZvcm1FbGVtZW50Cit7CisgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKKworICAgIG1fcGxhdGZvcm1FbGVtZW50ID0gcGxhdGZvcm1FbGVt
ZW50OworICAgIAorICAgIC8vIE9uY2UgYW4gb2JqZWN0IHN0YXJ0cyByZXF1ZXN0aW5nIG5vdGlm
aWNhdGlvbnMsIGl0J3Mgb24gZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgcHJvZ3JhbS4KKyAgICAv
LyBUaGlzIGlzIHRvIGF2b2lkIGFueSByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiB0ZXN0cyB0dXJu
aW5nIHRoaXMgZmxhZyBvbiBhbmQgb2ZmLiBJbnN0ZWFkCisgICAgLy8gQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIgY2FuIGp1c3QgbGlzdGVuIHdoZW4gdGhleSB3YW50IHRvLgorICAg
IFttX3BsYXRmb3JtRWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0U2hvdWxkUmVwb3N0Tm90aWZpY2F0
aW9uczpZRVNdOworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX25vdGlmaWNhdGlvblJlY2VpdmVkOikg
bmFtZTpAIkFYRFJUTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsXTsKKworICAgIHJldHVybiBzZWxm
OworfQorIAorLSAodm9pZClkZWFsbG9jCit7CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKKworICAgIFdLQnVuZGxlRnJhbWVS
ZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKFdUUjo6SW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9
IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworICAgIAorICAg
IEpTVmFsdWVVbnByb3RlY3QoY29udGV4dCwgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNr
KTsKKyAgICBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2sgPSAwOworICAgIAorICAgIFtz
dXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClfbm90aWZpY2F0aW9uUmVjZWl2ZWQ6KE5TTm90
aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgTlNTdHJpbmcgKm5vdGlmaWNhdGlvbk5h
bWUgPSBbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkAibm90aWZpY2F0aW9u
TmFtZSJdOworICAgIGlmICghbm90aWZpY2F0aW9uTmFtZSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZy
YW1lKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBK
U0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dCht
YWluRnJhbWUpOworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzTm90aWZpY2F0aW9u
KEFkb3B0LCBbbm90aWZpY2F0aW9uTmFtZSBjcmVhdGVKU1N0cmluZ1JlZl0pOworICAgIEpTVmFs
dWVSZWYgYXJndW1lbnQgPSBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBqc05vdGlmaWNhdGlv
bi5nZXQoKSk7CisgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBjb25zdF9jYXN0
PEpTT2JqZWN0UmVmPihtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2spLCAwLCAxLCAmYXJn
dW1lbnQsIDApOworfQorCistICh2b2lkKXNldENhbGxiYWNrOihKU1ZhbHVlUmVmKWNhbGxiYWNr
Cit7CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworIAorICAgIFdLQnVuZGxl
RnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKFdUUjo6SW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29u
dGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworCisg
ICAgLy8gUmVsZWFzZSB0aGUgb2xkIGNhbGxiYWNrLgorICAgIGlmIChtX25vdGlmaWNhdGlvbkZ1
bmN0aW9uQ2FsbGJhY2spIAorICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGNvbnRleHQsIG1fbm90
aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayk7CisgICAgCisgICAgbV9ub3RpZmljYXRpb25GdW5j
dGlvbkNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgbV9u
b3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKTsKK30KKworQGVuZAorCituYW1lc3BhY2UgV1RS
IHsKKworQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0
Zm9ybVVJRWxlbWVudCBlbGVtZW50KQorICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCisgICAgLCBt
X25vdGlmaWNhdGlvbkhhbmRsZXIoMCkKK3sKKyAgICAvLyBGSVhNRTogYXBAd2Via2l0Lm9yZyBz
YXlzIE9iakMgb2JqZWN0cyBuZWVkIHRvIGJlIENGUmV0YWluZWQvQ0ZSZWxlYXNlIHRvIGJlIEdD
LWNvbXBsaWFudCBvbiB0aGUgbWFjLgorICAgIFttX2VsZW1lbnQgcmV0YWluXTsKK30KKworQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50JiBvdGhlcikKKyAgICA6IG1fZWxlbWVudChvdGhlci5tX2VsZW1lbnQp
CisgICAgLCBtX25vdGlmaWNhdGlvbkhhbmRsZXIoMCkKK3sKKyAgICBbbV9lbGVtZW50IHJldGFp
bl07Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KCkKK3sKKyAgICAvLyBUaGUgbm90aWZpY2F0aW9uIGhhbmRsZXIgc2hvdWxkIGJlIG5pbCBiZWNh
dXNlIHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQg
aW4gdGhlIHRlc3QuCisgICAgQVNTRVJUKCFtX25vdGlmaWNhdGlvbkhhbmRsZXIpOworICAgIFtt
X2VsZW1lbnQgcmVsZWFzZV07Cit9CisKK3N0YXRpYyBOU1N0cmluZyogZGVzY3JpcHRpb25PZlZh
bHVlKGlkIHZhbHVlT2JqZWN0LCBpZCBmb2N1c2VkQWNjZXNzaWJpbGl0eU9iamVjdCkKK3sKKyAg
ICBpZiAoIXZhbHVlT2JqZWN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChbdmFs
dWVPYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQorICAgICAgICByZXR1cm4g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8YXJyYXkgb2Ygc2l6ZSAlZD4iLCBbKE5TQXJy
YXkqKXZhbHVlT2JqZWN0IGNvdW50XV07CisKKyAgICBpZiAoW3ZhbHVlT2JqZWN0IGlzS2luZE9m
Q2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbKE5TTnVtYmVyKil2YWx1
ZU9iamVjdCBzdHJpbmdWYWx1ZV07CisKKyAgICBpZiAoW3ZhbHVlT2JqZWN0IGlzS2luZE9mQ2xh
c3M6W05TVmFsdWUgY2xhc3NdXSkgeworICAgICAgICBOU1N0cmluZyogdHlwZSA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ1N0cmluZzpbdmFsdWVPYmplY3Qgb2JqQ1R5cGVdIGVuY29kaW5nOk5TQVND
SUlTdHJpbmdFbmNvZGluZ107CisgICAgICAgIE5TVmFsdWUqIHZhbHVlID0gKE5TVmFsdWUqKXZh
bHVlT2JqZWN0OworICAgICAgICBpZiAoW3R5cGUgcmFuZ2VPZlN0cmluZzpAIk5TUmVjdCJdLmxl
bmd0aCA+IDApCisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJOU1JlY3Q6ICVAIiwgTlNTdHJpbmdGcm9tUmVjdChbdmFsdWUgcmVjdFZhbHVlXSldOworICAg
ICAgICBpZiAoW3R5cGUgcmFuZ2VPZlN0cmluZzpAIk5TUG9pbnQiXS5sZW5ndGggPiAwKQorICAg
ICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTlNQb2ludDogJUAi
LCBOU1N0cmluZ0Zyb21Qb2ludChbdmFsdWUgcG9pbnRWYWx1ZV0pXTsKKyAgICAgICAgaWYgKFt0
eXBlIHJhbmdlT2ZTdHJpbmc6QCJOU1NpemUiXS5sZW5ndGggPiAwKQorICAgICAgICAgICAgcmV0
dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTlNTaXplOiAlQCIsIE5TU3RyaW5nRnJv
bVNpemUoW3ZhbHVlIHNpemVWYWx1ZV0pXTsKKyAgICAgICAgaWYgKFt0eXBlIHJhbmdlT2ZTdHJp
bmc6QCJOU1JhbmdlIl0ubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIk5TUmFuZ2U6ICVAIiwgTlNTdHJpbmdGcm9tUmFuZ2UoW3ZhbHVl
IHJhbmdlVmFsdWVdKV07CisgICAgfQorCisgICAgLy8gU3RyaXAgYWJzb2x1dGUgVVJMIHBhdGhz
CisgICAgTlNTdHJpbmcqIGRlc2NyaXB0aW9uID0gW3ZhbHVlT2JqZWN0IGRlc2NyaXB0aW9uXTsK
KyAgICBOU1JhbmdlIHJhbmdlID0gW2Rlc2NyaXB0aW9uIHJhbmdlT2ZTdHJpbmc6QCJMYXlvdXRU
ZXN0cyJdOworICAgIGlmIChyYW5nZS5sZW5ndGgpCisgICAgICAgIHJldHVybiBbZGVzY3JpcHRp
b24gc3Vic3RyaW5nRnJvbUluZGV4OnJhbmdlLmxvY2F0aW9uXTsKKworICAgIC8vIFN0cmlwIHBv
aW50ZXIgbG9jYXRpb25zCisgICAgaWYgKFtkZXNjcmlwdGlvbiByYW5nZU9mU3RyaW5nOkAiMHgi
XS5sZW5ndGgpIHsKKyAgICAgICAgTlNTdHJpbmcqIHJvbGUgPSBbZm9jdXNlZEFjY2Vzc2liaWxp
dHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVB
dHRyaWJ1dGVdOworICAgICAgICBOU1N0cmluZyogdGl0bGUgPSBbZm9jdXNlZEFjY2Vzc2liaWxp
dHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxl
QXR0cmlidXRlXTsKKyAgICAgICAgaWYgKFt0aXRsZSBsZW5ndGhdKQorICAgICAgICAgICAgcmV0
dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAnJUAnPiIsIHJvbGUsIHRpdGxl
XTsKKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAPiIsIHJv
bGVdOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gW3ZhbHVlT2JqZWN0IGRlc2NyaXB0aW9uXTsK
K30KKworc3RhdGljIE5TU3RyaW5nKiBhdHRyaWJ1dGVzT2ZFbGVtZW50KGlkIGFjY2Vzc2liaWxp
dHlPYmplY3QpCit7CisgICAgTlNBcnJheSogc3VwcG9ydGVkQXR0cmlidXRlcyA9IFthY2Nlc3Np
YmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc107CisKKyAgICBOU011dGFi
bGVTdHJpbmcqIGF0dHJpYnV0ZXNTdHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107Cisg
ICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3N1cHBvcnRlZEF0dHJpYnV0ZXMgY291bnRd
OyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcqIGF0dHJpYnV0ZSA9IFtzdXBwb3J0ZWRBdHRyaWJ1
dGVzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgIAorICAgICAgICAvLyBSaWdodCBub3csIHBv
c2l0aW9uIHByb3ZpZGVzIHVzZWxlc3MgYW5kIHNjcmVlbi1zcGVjaWZpYyBpbmZvcm1hdGlvbiwg
c28gd2UgZG8gbm90CisgICAgICAgIC8vIHdhbnQgdG8gaW5jbHVkZSBpdCBmb3IgdGhlIHNha2Ug
b2YgdW5pdmVyc2FsbHkgcGFzc2luZyB0ZXN0cy4KKyAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOkAiQVhQb3NpdGlvbiJdKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIAorICAgICAgICAvLyBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6IGNhbiB0aHJvdyBh
biBpZiBhbiBhdHRyaWJ1dGUgaXMgbm90IHJldHVybmVkLgorICAgICAgICAvLyBGb3IgRHVtcFJl
bmRlclRyZWUncyBwdXJwb3NlLCB3ZSBzaG91bGQgaWdub3JlIHRob3NlIGV4Y2VwdGlvbnMKKyAg
ICAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgICAgIGlkIHZhbHVlT2JqZWN0ID0g
W2FjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0
ZV07CisgICAgICAgIE5TU3RyaW5nKiB2YWx1ZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZSh2YWx1ZU9i
amVjdCwgYWNjZXNzaWJpbGl0eU9iamVjdCk7CisgICAgICAgIFthdHRyaWJ1dGVzU3RyaW5nIGFw
cGVuZEZvcm1hdDpAIiVAOiAlQFxuIiwgYXR0cmlidXRlLCB2YWx1ZV07CisgICAgICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGF0dHJpYnV0ZXNTdHJp
bmc7Cit9CisKK3N0YXRpYyBKU1N0cmluZ1JlZiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVl
KE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TU3RyaW5nKiB2YWx1ZSkKK3sKKyAgICBWZWN0b3I8VW5p
Q2hhcj4gYnVmZmVyKFthdHRyaWJ1dGUgbGVuZ3RoXSk7CisgICAgW2F0dHJpYnV0ZSBnZXRDaGFy
YWN0ZXJzOmJ1ZmZlci5kYXRhKCldOworICAgIGJ1ZmZlci5hcHBlbmQoJzonKTsKKyAgICBidWZm
ZXIuYXBwZW5kKCcgJyk7CisKKyAgICBWZWN0b3I8VW5pQ2hhcj4gdmFsdWVCdWZmZXIoW3ZhbHVl
IGxlbmd0aF0pOworICAgIFt2YWx1ZSBnZXRDaGFyYWN0ZXJzOnZhbHVlQnVmZmVyLmRhdGEoKV07
CisgICAgYnVmZmVyLmFwcGVuZCh2YWx1ZUJ1ZmZlcik7CisKKyAgICByZXR1cm4gSlNTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKK30KKwor
c3RhdGljIHZvaWQgY29udmVydE5TQXJyYXlUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwgVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yKQoreworICAg
IE5TVUludGVnZXIgY291bnQgPSBbYXJyYXkgY291bnRdOworICAgIGZvciAoTlNVSW50ZWdlciBp
ID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGVsZW1lbnRWZWN0b3IuYXBwZW5kKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbYXJyYXkgb2JqZWN0QXRJbmRleDppXSkpOworfQor
CitzdGF0aWMgSlNTdHJpbmdSZWYgZGVzY3JpcHRpb25PZkVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3RvcikKK3sKKyAgICBOU011dGFi
bGVTdHJpbmcqIGFsbEVsZW1lbnRTdHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107Cisg
ICAgc2l6ZV90IHNpemUgPSBlbGVtZW50VmVjdG9yLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gdWlFbGVtZW50ID0gZWxlbWVudFZlY3RvcltpXTsKKyAgICAgICAgTlNTdHJpbmcqIGF0
dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzT2ZFbGVtZW50KHVpRWxlbWVudC0+cGxhdGZvcm1VSUVsZW1l
bnQoKSk7CisgICAgICAgIFthbGxFbGVtZW50U3RyaW5nIGFwcGVuZEZvcm1hdDpAIiVAXG4tLS0t
LS0tLS0tLS1cbiIsIGF0dHJpYnV0ZXNdOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gW2FsbEVs
ZW1lbnRTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIE5TQXJyYXkqIGxpbmtlZEVsZW1lbnRzID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0
ZV07CisgICAgY29udmVydE5TQXJyYXlUb1ZlY3RvcihsaW5rZWRFbGVtZW50cywgZWxlbWVudFZl
Y3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIE5TQXJyYXkqIGxpbmtFbGVtZW50cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhMaW5rVUlFbGVtZW50cyJdOworICAgIGNvbnZlcnROU0FycmF5
VG9WZWN0b3IobGlua0VsZW1lbnRzLCBlbGVtZW50VmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4o
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yKQor
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGNoaWxkcmVuID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5BdHRyaWJ1dGVdOworICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3IoY2hpbGRyZW4sIGVs
ZW1lbnRWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZShWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IsIHVuc2lnbmVkIGxvY2F0aW9u
LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
TlNBcnJheSogY2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0
ZVZhbHVlczpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSBpbmRleDpsb2NhdGlvbiBt
YXhDb3VudDpsZW5ndGhdOworICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3IoY2hpbGRyZW4sIGVs
ZW1lbnRWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKworaW50IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQoKQoreworICAgIFZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBjaGlsZHJlbjsKKyAgICBnZXRDaGlsZHJlbihjaGls
ZHJlbik7CisgICAgCisgICAgcmV0dXJuIGNoaWxkcmVuLnNpemUoKTsKK30KKworUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50
QXRQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgaWQgZWxlbWVudCA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUhpdFRlc3Q6TlNNYWtlUG9pbnQoeCwgeSldOworICAgIGlmICghZWxlbWVudCkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y3JlYXRlKGVsZW1lbnQpOworfQorCit1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjppbmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKK3sKKyAg
ICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SW5kZXhPZkNoaWxkOmVsZW1lbnQtPnBs
YXRmb3JtVUlFbGVtZW50KCldOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkK
K3sKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY2hpbGRyZW47
CisgICAgZ2V0Q2hpbGRyZW5XaXRoUmFuZ2UoY2hpbGRyZW4sIGluZGV4LCAxKTsKKworICAgIGlm
IChjaGlsZHJlbi5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIGNoaWxkcmVuWzBdOworICAg
IHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgp
Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogb2JqZWN0cyA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxp
bmtlZFVJRWxlbWVudHNBdHRyaWJ1dGVdOworICAgIGlmIChpbmRleCA8IFtvYmplY3RzIGNvdW50
XSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbb2JqZWN0
cyBvYmplY3RBdEluZGV4OmluZGV4XSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQg
aW5kZXgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogb2Jq
ZWN0cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eU93bnNBdHRyaWJ1dGVdOworICAgIGlmIChpbmRleCA8IFtvYmplY3RzIGNvdW50XSkKKyAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbb2JqZWN0cyBvYmpl
Y3RBdEluZGV4OmluZGV4XSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAg
IHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBvYmplY3Rz
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV07CisgICAgaWYgKGluZGV4IDwgW29iamVjdHMgY291
bnRdKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFtvYmpl
Y3RzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCh1bnNpZ25lZCBp
bmRleCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiByb3dz
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV07CisgICAgaWYgKGluZGV4IDwgW3Jvd3MgY291bnRdKQor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFtyb3dzIG9iamVj
dEF0SW5kZXg6aW5kZXhdKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1
cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QK
K3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBhcnJheSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVj
dGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOworICAgIGlmIChpbmRleCA8IFthcnJheSBjb3VudF0pCisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW2FycmF5IG9iamVj
dEF0SW5kZXg6aW5kZXhdKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAg
cmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVk
Q2hpbGRyZW5Db3VudCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgcmV0dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6TlNB
Y2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KHVu
c2lnbmVkIGluZGV4KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJy
YXkqIHJvd3MgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdOworICAgIGlmIChpbmRleCA8IFtyb3dzIGNv
dW50XSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbcm93
cyBvYmplY3RBdEluZGV4OmluZGV4XSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50KCkKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1l
bnRBdHRyaWJ1dGVdOworICAgIGlmIChhY2Nlc3NpYmlsaXR5T2JqZWN0KQorICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGFjY2Vzc2liaWxpdHlPYmplY3QpOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpw
YXJlbnRFbGVtZW50KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBh
Y2Nlc3NpYmlsaXR5T2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlXTsKKyAgICBpZiAoYWNjZXNzaWJpbGl0
eU9iamVjdCkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShh
Y2Nlc3NpYmlsaXR5T2JqZWN0KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisg
ICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkQnlSb3coKQoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIGlkIGFjY2Vzc2liaWxpdHlPYmplY3QgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRCeVJvd0F0
dHJpYnV0ZV07CisgICAgaWYgKGFjY2Vzc2liaWxpdHlPYmplY3QpCisgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoYWNjZXNzaWJpbGl0eU9iamVjdCk7CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mTGlu
a2VkVUlFbGVtZW50cygpCit7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiA+IGxpbmtlZEVsZW1lbnRzOworICAgIGdldExpbmtlZFVJRWxlbWVudHMobGlua2VkRWxl
bWVudHMpOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMobGlua2VkRWxlbWVudHMp
OworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcygpCit7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiA+IGxpbmtFbGVtZW50czsKKyAgICBnZXREb2N1bWVudExpbmtzKGxp
bmtFbGVtZW50cyk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhsaW5rRWxlbWVu
dHMpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mQ2hpbGRyZW4oKQoreworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gPiBjaGlsZHJlbjsKKyAgICBnZXRDaGlsZHJlbihjaGlsZHJlbik7Cisg
ICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjaGlsZHJlbik7Cit9CisKK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKCkK
K3sKKyAgICBOU1N0cmluZyogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNPZkVsZW1lbnQobV9lbGVt
ZW50KTsKKyAgICByZXR1cm4gW2F0dHJpYnV0ZXMgY3JlYXRlSlNTdHJpbmdSZWZdOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0
cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHJl
dHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKworICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1
dGVdXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisg
ICAgICAgIHJldHVybiBbdmFsdWUgZG91YmxlVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRy
aWJ1dGVdXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0p
CisgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQorewor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdS
ZWY6YXR0cmlidXRlXV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0
ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCit7CisgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCisgICAgcmV0dXJuIFtbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVO
YW1lc10gY29udGFpbnNPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRy
aWJ1dGVdXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIGZh
bHNlOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkKK3sKKyAgICBOU0FycmF5KiBzdXBwb3J0
ZWRQYXJhbWV0ZXJpemVkQXR0cmlidXRlcyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc107CisgICAgCisgICAgTlNNdXRhYmxlU3RyaW5nKiBhdHRy
aWJ1dGVzU3RyaW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgIGZvciAoTlNVSW50
ZWdlciBpID0gMDsgaSA8IFtzdXBwb3J0ZWRQYXJhbWV0ZXJpemVkQXR0cmlidXRlcyBjb3VudF07
ICsraSkgeworICAgICAgICBbYXR0cmlidXRlc1N0cmluZyBhcHBlbmRGb3JtYXQ6QCIlQFxuIiwg
W3N1cHBvcnRlZFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVzIG9iamVjdEF0SW5kZXg6aV1dOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gW2F0dHJpYnV0ZXNTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZd
OworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cm9sZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNTdHJpbmcgKnJv
bGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgcmV0
dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFJvbGUiLCByb2xlKTsKKyAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKCkKK3sKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0
aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0
ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYU3Vicm9sZSIsIHJvbGUpOworICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKCkKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9u
T2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIHJldHVybiBj
b25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhSb2xlRGVzY3JpcHRpb24iLCByb2xlKTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSgpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNTdHJpbmcqIHRpdGxlID0gZGVz
Y3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29u
Y2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYVGl0bGUiLCB0aXRsZSk7CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9m
VmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5RGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIHJldHVybiBjb25jYXRl
bmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhEZXNjcmlwdGlvbiIsIGRlc2NyaXB0aW9uKTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKCkgY29u
c3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBkZXNjcmlwdGlvbiA9
IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAg
cmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWE9yaWVudGF0aW9uIiwgZGVz
Y3JpcHRpb24pOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4g
MDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0cmluZ1ZhbHVlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBk
ZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7
CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFZhbHVlIiwgZGVz
Y3JpcHRpb24pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwOwor
fQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFu
Z3VhZ2UoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIGRlc2NyaXB0
aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhMYW5ndWFnZSJdLCBtX2VsZW1lbnQpOworICAgIHJldHVybiBjb25jYXRlbmF0
ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhMYW5ndWFnZSIsIGRlc2NyaXB0aW9uKTsKKyAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KCkgY29uc3QKK3sKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0
aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlIZWxwQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5h
dGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYSGVscCIsIGRlc2NyaXB0aW9uKTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp4KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICBOU1ZhbHVlKiBwb3NpdGlvblZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxkb3VibGU+KFtwb3NpdGlvblZhbHVlIHBvaW50VmFsdWVdLngpOyAgICAKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2Rv
dWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBOU1ZhbHVlKiBwb3NpdGlvblZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtwb3NpdGlvblZhbHVlIHBvaW50VmFsdWVd
LnkpOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDAu
MGY7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3aWR0aCgpCit7CisgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNWYWx1ZSogc2l6ZVZhbHVlID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJp
YnV0ZV07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oW3NpemVWYWx1ZSBzaXplVmFs
dWVdLndpZHRoKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJu
IDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWlnaHQoKQorewor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TVmFsdWUqIHNpemVWYWx1ZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNpemVB
dHRyaWJ1dGVdOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtzaXplVmFsdWUgc2l6
ZVZhbHVlXS5oZWlnaHQpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9p
bnRYKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVlKiBwb3Np
dGlvblZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENs
aWNrUG9pbnQiXTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihbcG9zaXRpb25WYWx1
ZSBwb2ludFZhbHVlXS54KTsgICAgICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICAKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNsaWNrUG9pbnRZKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1Zh
bHVlKiBwb3NpdGlvblZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWENsaWNrUG9pbnQiXTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihbcG9z
aXRpb25WYWx1ZSBwb2ludFZhbHVlXS55KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjppbnRWYWx1ZSgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
aWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltO
U051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gWyhOU051bWJlciopdmFsdWUgZG91Ymxl
VmFsdWVdOyAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMC4wZjsK
K30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pblZhbHVlKCkKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0cmlidXRlXTsK
KyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAg
IHJldHVybiBbKE5TTnVtYmVyKil2YWx1ZSBkb3VibGVWYWx1ZV07IAorICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bWF4VmFsdWUoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5TWF4VmFsdWVBdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZD
bGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIqKXZhbHVl
IGRvdWJsZVZhbHVlXTsgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJu
IDAuMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnZhbHVlRGVzY3JpcHRpb24oKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIE5TU3RyaW5nKiB2YWx1ZURlc2NyaXB0aW9uID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07
CisgICAgaWYgKFt2YWx1ZURlc2NyaXB0aW9uIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pCisgICAgICAgICByZXR1cm4gW3ZhbHVlRGVzY3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZd
OworCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiAwOworfQorCitpbnQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCkKK3sKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUluc2VydGlvblBvaW50TGlu
ZU51bWJlckF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJl
ciBjbGFzc11dKQorICAgICAgICByZXR1cm4gWyhOU051bWJlciAqKXZhbHVlIGludFZhbHVlXTsg
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAtMTsKK30KKwor
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGlvblN1cHBvcnRlZChKU1N0cmluZ1Jl
ZiBhY3Rpb24pCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSog
YWN0aW9ucyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzXTsKKyAgICByZXR1
cm4gW2FjdGlvbnMgY29udGFpbnNPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1Jl
ZjphY3Rpb25dXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZCgpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmli
dXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisg
ICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzUmVxdWlyZWQoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWFJlcXVpcmVkIl07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBj
bGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNTZWxlY3RlZCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZEF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNs
YXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkKCkgY29uc3QKK3sKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUV4cGFuZGVkQXR0cmlidXRl
XTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAg
ICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzQ2hlY2tlZCgpIGNvbnN0Cit7CisgICAgLy8gT24gdGhlIE1hYywgaW50VmFsdWUoKT09
MSBpZiBhIGEgY2hlY2thYmxlIGNvbnRyb2wgaXMgY2hlY2tlZC4KKyAgICByZXR1cm4gaW50VmFs
dWUoKSA9PSAxOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2Fs
TGV2ZWwoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5RGlzY2xvc3VyZUxldmVsQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xh
c3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgaW50VmFsdWVdOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWsoKQoreworICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWERSVFNwZWVjaEF0dHJpYnV0ZSJdOworICAgIGlm
IChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJu
IFt2YWx1ZSBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgICAgICAKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhSXNHcmFiYmVkKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZD
bGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVd
OworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFEcm9w
RWZmZWN0cygpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQg
dmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0ZV07CisgICAgaWYgKCFbdmFsdWUgaXNLaW5kT2ZDbGFz
czpbTlNBcnJheSBjbGFzc11dKQorICAgICAgICByZXR1cm4gMDsKKworICAgIE5TTXV0YWJsZVN0
cmluZyogZHJvcEVmZmVjdHMgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CisgICAgTlNJbnRl
Z2VyIGxlbmd0aCA9IFt2YWx1ZSBjb3VudF07CisgICAgZm9yIChOU0ludGVnZXIgayA9IDA7IGsg
PCBsZW5ndGg7ICsraykgeworICAgICAgICBbZHJvcEVmZmVjdHMgYXBwZW5kU3RyaW5nOlt2YWx1
ZSBvYmplY3RBdEluZGV4OmtdXTsKKyAgICAgICAgaWYgKGsgPCBsZW5ndGggLSAxKQorICAgICAg
ICAgICAgW2Ryb3BFZmZlY3RzIGFwcGVuZFN0cmluZzpAIiwiXTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIFtkcm9wRWZmZWN0cyBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCisvLyBwYXJhbWV0ZXJpemVkIGF0
dHJpYnV0ZXMKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGlu
ZGV4KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGluZUZv
ckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6aW5kZXhdXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVy
IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbKE5TTnVtYmVyICopdmFsdWUgaW50VmFsdWVdOyAK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gLTE7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUo
aW50IGxpbmUpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlS
YW5nZUZvckxpbmVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpsaW5lXV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1Zh
bHVlIGNsYXNzXV0pIHsKKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZ0Zyb21SYW5nZShbdmFsdWUg
cmFuZ2VWYWx1ZV0pIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICB9CisgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym91bmRzRm9yUmFuZ2UodW5zaWduZWQgbG9j
YXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFu
Z2UobG9jYXRpb24sIGxlbmd0aCk7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
aWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlCb3VuZHNGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVy
OltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOnJhbmdlXV07CisgICAgTlNSZWN0IHJlY3QgPSBOU01h
a2VSZWN0KDAsMCwwLDApOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBj
bGFzc11dKQorICAgICAgICByZWN0ID0gW3ZhbHVlIHJlY3RWYWx1ZV07IAorICAgIAorICAgIC8v
IGRvbid0IHJldHVybiBwb3NpdGlvbiBpbmZvcm1hdGlvbiBiZWNhdXNlIGl0IGlzIHBsYXRmb3Jt
IGRlcGVuZGVudAorICAgIE5TTXV0YWJsZVN0cmluZyogYm91bmRzRGVzY3JpcHRpb24gPSBbTlNN
dXRhYmxlU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ7eyVmLCAlZn0sIHslZiwgJWZ9fSIsLTEu
MGYsLTEuMGYscmVjdC5zaXplLndpZHRoLHJlY3Quc2l6ZS5oZWlnaHRdOworICAgIHJldHVybiBb
Ym91bmRzRGVzY3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0
aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdl
KGxvY2F0aW9uLCBsZW5ndGgpOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlk
IHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eVN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6
W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKKyAgICBpZiAoIVtzdHJpbmcgaXNLaW5k
T2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAg
cmV0dXJuIFtzdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSh1bnNpZ25l
ZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01h
a2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdl
OnJhbmdlXV07CisgICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0
cmluZyBjbGFzc11dKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBOU1N0cmluZyogc3Ry
aW5nV2l0aEF0dHJzID0gW3N0cmluZyBkZXNjcmlwdGlvbl07CisgICAgcmV0dXJuIFtzdHJpbmdX
aXRoQXR0cnMgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICAKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQodW5zaWduZWQgbG9jYXRpb24sIHVuc2ln
bmVkIGxlbmd0aCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UobG9jYXRpb24s
IGxlbmd0aCk7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBdHRyaWJ1dGVk
U3RyaW5nKiBzdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlBdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmli
dXRlIGZvclBhcmFtZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1dOworICAgIGlm
ICghW3N0cmluZyBpc0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTlNEaWN0aW9uYXJ5KiBhdHRycyA9IFtzdHJpbmcg
YXR0cmlidXRlc0F0SW5kZXg6MCBlZmZlY3RpdmVSYW5nZTpuaWxdOworICAgIGlmKFtbYXR0cnMg
b2JqZWN0Rm9yS2V5Ok5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlXSBib29s
VmFsdWVdKQorICAgICAgICByZXR1cm4gdHJ1ZTsgICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQ
cmVkaWNhdGUoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogc3RhcnRFbGVtZW50LCBib29sIGlzRGly
ZWN0aW9uTmV4dCwgSlNTdHJpbmdSZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0
KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkqIHBhcmFtZXRlciA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOworICAgIFtw
YXJhbWV0ZXIgc2V0T2JqZWN0Oihpc0RpcmVjdGlvbk5leHQpID8gQCJBWERpcmVjdGlvbk5leHQi
IDogQCJBWERpcmVjdGlvblByZXZpb3VzIiBmb3JLZXk6QCJBWERpcmVjdGlvbiJdOworICAgIFtw
YXJhbWV0ZXIgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OjFdIGZvcktleTpAIkFY
UmVzdWx0c0xpbWl0Il07CisgICAgaWYgKHN0YXJ0RWxlbWVudCkKKyAgICAgICAgW3BhcmFtZXRl
ciBzZXRPYmplY3Q6KGlkKXN0YXJ0RWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSBmb3JLZXk6
QCJBWFN0YXJ0RWxlbWVudCJdOworICAgIGlmIChzZWFyY2hLZXkpCisgICAgICAgIFtwYXJhbWV0
ZXIgc2V0T2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoS2V5XSBm
b3JLZXk6QCJBWFNlYXJjaEtleSJdOworICAgIGlmIChzZWFyY2hUZXh0ICYmIEpTU3RyaW5nR2V0
TGVuZ3RoKHNlYXJjaFRleHQpKQorICAgICAgICBbcGFyYW1ldGVyIHNldE9iamVjdDpbTlNTdHJp
bmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnNlYXJjaFRleHRdIGZvcktleTpAIkFYU2VhcmNoVGV4
dCJdOworICAgIAorICAgIGlkIHVpRWxlbWVudCA9IFtbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYVUlFbGVtZW50c0ZvclNlYXJjaFByZWRpY2F0ZSIgZm9yUGFyYW1l
dGVyOnBhcmFtZXRlcl0gbGFzdE9iamVjdF07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNyZWF0ZSh1aUVsZW1lbnQpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKQoreworICAgIC8vIG5v
dCB5ZXQgZGVmaW5lZCBpbiBBcHBLaXQuLi4gb2RkCisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgTlNBcnJheSogY29sdW1uSGVhZGVyc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENvbHVtbkhlYWRlclVJRWxlbWVudHMiXTsKKyAgICBW
ZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY29sdW1uSGVhZGVyc1ZlY3Rv
cjsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGNvbHVtbkhlYWRlcnNBcnJheSwgY29sdW1u
SGVhZGVyc1ZlY3Rvcik7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjb2x1bW5I
ZWFkZXJzVmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICBOU0FycmF5KiByb3dIZWFkZXJzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUm93SGVhZGVyVUlFbGVtZW50cyJdOworICAgIFZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiByb3dIZWFkZXJzVmVjdG9yOworICAg
IGNvbnZlcnROU0FycmF5VG9WZWN0b3Iocm93SGVhZGVyc0FycmF5LCByb3dIZWFkZXJzVmVjdG9y
KTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJvd0hlYWRlcnNWZWN0b3IpOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZkNvbHVtbnMoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkq
IGNvbHVtbnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gPiBjb2x1bW5zVmVjdG9yOworICAgIGNvbnZlcnROU0FycmF5VG9W
ZWN0b3IoY29sdW1uc0FycmF5LCBjb2x1bW5zVmVjdG9yKTsKKyAgICByZXR1cm4gZGVzY3JpcHRp
b25PZkVsZW1lbnRzKGNvbHVtbnNWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd3MoKQoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIHJvd3NBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOworICAg
IFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiByb3dzVmVjdG9yOworICAg
IGNvbnZlcnROU0FycmF5VG9WZWN0b3Iocm93c0FycmF5LCByb3dzVmVjdG9yKTsKKyAgICByZXR1
cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJvd3NWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscygpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogY2VsbHNBcnJheSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhWaXNpYmxlQ2VsbHMi
XTsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY2VsbHNWZWN0
b3I7CisgICAgY29udmVydE5TQXJyYXlUb1ZlY3RvcihjZWxsc0FycmF5LCBjZWxsc1ZlY3Rvcik7
CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjZWxsc1ZlY3Rvcik7CisgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVhZGVy
KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBoZWFkZXJPYmplY3Qg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlI
ZWFkZXJBdHRyaWJ1dGVdOworICAgIGlmICghaGVhZGVyT2JqZWN0KQorICAgICAgICByZXR1cm4g
W0AiIiBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiA+IGhlYWRlclZlY3RvcjsKKyAgICBoZWFkZXJWZWN0b3IuYXBwZW5k
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShoZWFkZXJPYmplY3QpKTsKKyAgICByZXR1
cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGhlYWRlclZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cm93Q291bnQoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50Ok5TQWNj
ZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICAKKyAgICByZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVt
bkNvdW50KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3VudDpOU0FjY2Vzc2liaWxpdHlD
b2x1bW5zQXR0cmlidXRlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAg
cmV0dXJuIDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEluVGFibGUo
KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TTnVtYmVyKiBpbmRleE51
bWJlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eUluZGV4QXR0cmlidXRlXTsKKyAgICBpZiAoaW5kZXhOdW1iZXIpCisgICAgICAgIHJldHVy
biBbaW5kZXhOdW1iZXIgaW50VmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKwor
ICAgIHJldHVybiAtMTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnJvd0luZGV4UmFuZ2UoKQoreworICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01h
a2VSYW5nZSgwLDApOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TVmFsdWUq
IGluZGV4UmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
Um93SW5kZXhSYW5nZSJdOworICAgIGlmIChpbmRleFJhbmdlKQorICAgICAgICByYW5nZSA9IFtp
bmRleFJhbmdlIHJhbmdlVmFsdWVdOworICAgIE5TTXV0YWJsZVN0cmluZyogcmFuZ2VEZXNjcmlw
dGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInslZCwgJWR9IixyYW5n
ZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoXTsKKyAgICByZXR1cm4gW3JhbmdlRGVzY3JpcHRpb24g
Y3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAg
ICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNvbHVtbkluZGV4UmFuZ2UoKQoreworICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01h
a2VSYW5nZSgwLDApOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TTnVtYmVy
KiBpbmRleFJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WENvbHVtbkluZGV4UmFuZ2UiXTsKKyAgICBpZiAoaW5kZXhSYW5nZSkKKyAgICAgICAgcmFuZ2Ug
PSBbaW5kZXhSYW5nZSByYW5nZVZhbHVlXTsKKyAgICBOU011dGFibGVTdHJpbmcqIHJhbmdlRGVz
Y3JpcHRpb24gPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ7JWQsICVkfSIs
cmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aF07CisgICAgcmV0dXJuIFtyYW5nZURlc2NyaXB0
aW9uIGNyZWF0ZUpTU3RyaW5nUmVmXTsgICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQg
Y29sLCB1bnNpZ25lZCByb3cpCit7CisgICAgTlNBcnJheSAqY29sUm93QXJyYXkgPSBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6Y29sXSwg
W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpyb3ddLCBuaWxdOworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVh
dGUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENlbGxGb3JDb2x1
bW5BbmRSb3ciIGZvclBhcmFtZXRlcjpjb2xSb3dBcnJheV0pOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMgICAgCisKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFy
KCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhvcml6b250YWxTY3JvbGxCYXJBdHRyaWJ1dGVdKTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TICAgIAorICAgIAorICAgIHJldHVybiAwOworfQor
CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZlcnRpY2FsU2Ny
b2xsQmFyQXR0cmlidXRlXSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAgICAgCit9
CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxl
Y3RlZFRleHRSYW5nZSgpCit7CisgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKE5TTm90
Rm91bmQsIDApOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TVmFsdWUgKmlu
ZGV4UmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZV07CisgICAgaWYgKGluZGV4UmFuZ2Up
CisgICAgICAgIHJhbmdlID0gW2luZGV4UmFuZ2UgcmFuZ2VWYWx1ZV07CisgICAgTlNNdXRhYmxl
U3RyaW5nICpyYW5nZURlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAieyVkLCAlZH0iLHJhbmdlLmxvY2F0aW9uLCByYW5nZS5sZW5ndGhdOworICAgIHJldHVy
biBbcmFuZ2VEZXNjcmlwdGlvbiBjcmVhdGVKU1N0cmluZ1JlZl07ICAgIAorICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5z
aWduZWQgbGVuZ3RoKQoreworICAgIE5TUmFuZ2UgdGV4dFJhbmdlID0gTlNNYWtlUmFuZ2UobG9j
YXRpb24sIGxlbmd0aCk7CisgICAgTlNWYWx1ZSAqdGV4dFJhbmdlVmFsdWUgPSBbTlNWYWx1ZSB2
YWx1ZVdpdGhSYW5nZTp0ZXh0UmFuZ2VdOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVNldFZhbHVlOnRleHRSYW5nZVZhbHVlIGZvckF0
dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZV07CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmluY3JlbWVudCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5UGVyZm9ybUFjdGlvbjpOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRB
Y3Rpb25dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpkZWNyZW1lbnQoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3NpYmls
aXR5RGVjcmVtZW50QWN0aW9uXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKK3Zv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2hvd01lbnUoKQoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246
TlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb25dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcygpCit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5UGVyZm9y
bUFjdGlvbjpOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbl07CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hp
bGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBhcnJheSA9IFtOU0FycmF5IGFycmF5V2l0
aE9iamVjdDplbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpXTsKKyAgICBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlTZXRWYWx1ZTphcnJheSBmb3JBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2Vs
ZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFj
Y2Vzc2liaWxpdHlWYWx1ZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAg
IHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNvZGlu
ZygpCit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9
CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1
bWVudFVSSSgpCit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp1cmwoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TVVJMICp1cmwg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlV
UkxBdHRyaWJ1dGVdOworICAgIHJldHVybiBbW3VybCBhYnNvbHV0ZVN0cmluZ10gY3JlYXRlSlNT
dHJpbmdSZWZdOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIG5pbDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRp
b25MaXN0ZW5lcihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spCit7CisgICAgaWYgKCFmdW5j
dGlvbkNhbGxiYWNrKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAgLy8gTWFjIHByb2dy
YW1tZXJzIHNob3VsZCBub3QgYmUgYWRkaW5nIG1vcmUgdGhhbiBvbmUgbm90aWZpY2F0aW9uIGxp
c3RlbmVyIHBlciBlbGVtZW50LgorICAgIC8vIE90aGVyIHBsYXRmb3JtcyBtYXkgYmUgZGlmZmVy
ZW50LgorICAgIGlmIChtX25vdGlmaWNhdGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSBbW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyIGFsbG9jXSBpbml0V2l0aFBsYXRmb3JtRWxlbWVudDpwbGF0Zm9ybVVJRWxlbWVu
dCgpXTsKKyAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHNldENhbGxiYWNrOmZ1bmN0aW9uQ2Fs
bGJhY2tdOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQoreworICAgIC8vIE1hYyBwcm9ncmFt
bWVycyBzaG91bGQgbm90IGJlIHRyeWluZyB0byByZW1vdmUgYSBsaXN0ZW5lciB0aGF0J3MgYWxy
ZWFkeSByZW1vdmVkLgorICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkhhbmRsZXIpOworCisgICAg
W21fbm90aWZpY2F0aW9uSGFuZGxlciByZWxlYXNlXTsKKyAgICBtX25vdGlmaWNhdGlvbkhhbmRs
ZXIgPSBuaWw7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNTZWxlY3RhYmxlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxl
Y3RhYmxlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSgpIGNvbnN0
Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc09mZlNjcmVlbigpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc0NvbGxhcHNlZCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc0lnbm9yZWQoKSBjb25zdAoreworICAgIEJPT0wgcmVzdWx0ID0gTk87CisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCisgICAgcmVzdWx0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1cCgpIGNvbnN0Cit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYSGFzUG9wdXAiXTsKKyAgICBpZiAoW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFs
dWUgYm9vbFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZUZvY3VzKCkKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dGFrZVNlbGVjdGlvbigpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNlbGVjdGlvbigpCit7CisgICAgLy8gRklYTUU6
IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVj
dGlvbigpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCisjaWYgU1VQUE9SVFNfQVhf
VEVYVE1BUktFUlMKKworLy8gVGV4dCBtYXJrZXJzCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZv
ckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVUlFbGVtZW50
IiBmb3JQYXJhbWV0ZXI6ZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworaW50
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBOU051bWJlciogbGVuZ3RoVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYTGVuZ3RoRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6
KGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICByZXR1cm4gW2xlbmd0
aFZhbHVlIGludFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAg
cmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogdGV4dE1hcmtlcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBp
ZCBwcmV2aW91c01hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhQcmV2aW91c1RleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRl
eHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OmNyZWF0ZShwcmV2aW91c01hcmtlcik7CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBpZCBuZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWE5leHRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVy
OihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUobmV4dE1hcmtlcik7CisgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlKQoreworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIGlkIHRleHRTdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJh
bWV0ZXI6KGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICBy
ZXR1cm4gW3RleHRTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICBOU0FycmF5KiB0ZXh0TWFya2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVj
dHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgKGlkKWVuZE1hcmtlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5nZUZv
clVub3JkZXJlZFRleHRNYXJrZXJzIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlcnNdOworICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdl
KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisK
K1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKiByYW5nZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBp
ZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihpZClyYW5n
ZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIAorICAgIHJldHVybiAwOyAgICAKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UiIGZvclBhcmFtZXRlcjooaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCld
OworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIp
OworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsgICAgCit9
CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyRm9yUG9zaXRpb24iIGZvclBhcmFtZXRl
cjpbTlNWYWx1ZSB2YWx1ZVdpdGhQb2ludDpOU01ha2VQb2ludCh4LCB5KV1dOworICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOworICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsgICAgCit9CisKK1Bhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJr
ZXIpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdWlFbGVtZW50ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudEZvclRl
eHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZSh1aUVsZW1lbnQpOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsgIAorfQorCisj
ZW5kaWYgLy8gU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMKKworfSAvLyBuYW1lc3BhY2UgV1RSCisK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA5
ODk2OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw1ICs2MCwxMSBAQAog
ewogICAgIHJldHVybiBKU1N0cmluZ1JldGFpbih1cmwpOyAvLyBEbyBub3RoaW5nIG9uIG1hYy4K
IH0KKyAgICAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1O
YW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibWFjIikpOworICAgIHJl
dHVybiBwbGF0Zm9ybU5hbWU7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2VfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlX2gKKworI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KK3R5cGVkZWYgQ0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlOworI2Vsc2UKK3R5
cGVkZWYgdm9pZCogUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U7CisjZW5kaWYKKworbmFtZXNwYWNl
IFdUUiB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIDogcHVibGlj
IEpTV3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPiBjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IGNyZWF0ZShj
b25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJik7CisgICAgCisgICAgfkFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UoKTsKKyAgICAKKyAgICBQbGF0Zm9ybVRleHRNYXJrZXJSYW5n
ZSBwbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dE1hcmtlclJh
bmdlLmdldCgpOyB9CisgICAgdmlydHVhbCBKU0NsYXNzUmVmIHdyYXBwZXJDbGFzcygpOworICAg
IAorICAgIHN0YXRpYyBKU09iamVjdFJlZiBtYWtlSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSYpOwor
ICAgIGJvb2wgaXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CisgICAgCitw
cml2YXRlOgorICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoUGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UpOworICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoY29uc3QgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSYpOworICAgIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBS
ZXRhaW5QdHI8UGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U+IG1fdGV4dE1hcmtlclJhbmdlOworI2Vs
c2UKKyAgICBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBtX3RleHRNYXJrZXJSYW5nZTsKKyNlbmRp
ZgorfTsKKyAgICAKKyNpZiAhU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMKK2lubGluZSBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKFBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlKSB7IH0KK2lubGluZSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UmKSB7IH0KK2lubGluZSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgpIHsgfQoraW5saW5lIGJvb2wgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KikgeyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpwbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dE1hcmtlclJhbmdlOyB9CisjZW5kaWYKKyAgICAKK30gLy8gbmFtZXNw
YWNlIFdUUgorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZV9oCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCShyZXZpc2lvbiA5ODk2OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNyBAQAogI2lmbmRlZiBJbmplY3RlZEJ1bmRsZV9oCiAjZGVmaW5lIEluamVjdGVkQnVuZGxl
X2gKIAorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCkBAIC01Niw2ICs1Nyw3IEBACiAgICAgR0NDb250
cm9sbGVyKiBnY0NvbnRyb2xsZXIoKSB7IHJldHVybiBtX2djQ29udHJvbGxlci5nZXQoKTsgfQog
ICAgIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIqIGV2ZW50U2VuZGluZ0NvbnRyb2xsZXIoKSB7IHJl
dHVybiBtX2V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICBUZXh0SW5wdXRDb250
cm9sbGVyKiB0ZXh0SW5wdXRDb250cm9sbGVyKCkgeyByZXR1cm4gbV90ZXh0SW5wdXRDb250cm9s
bGVyLmdldCgpOyB9CisgICAgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKCkgeyByZXR1cm4gbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5nZXQoKTsgfQog
CiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlKiBwYWdlKCkgY29uc3Q7CiAgICAgc2l6ZV90IHBhZ2VD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZXMuc2l6ZSgpOyB9CkBAIC0xMDUsNiArMTA3LDcg
QEAKICAgICBXS0J1bmRsZVBhZ2VHcm91cFJlZiBtX3BhZ2VHcm91cDsKICAgICBWZWN0b3I8T3du
UHRyPEluamVjdGVkQnVuZGxlUGFnZT4gPiBtX3BhZ2VzOwogCisgICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyPiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOwogICAgIFJlZlB0cjxM
YXlvdXRUZXN0Q29udHJvbGxlcj4gbV9sYXlvdXRUZXN0Q29udHJvbGxlcjsKICAgICBSZWZQdHI8
R0NDb250cm9sbGVyPiBtX2djQ29udHJvbGxlcjsKICAgICBSZWZQdHI8RXZlbnRTZW5kaW5nQ29u
dHJvbGxlcj4gbV9ldmVudFNlbmRpbmdDb250cm9sbGVyOwpJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAkocmV2aXNpb24gOTg5NjkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw2
ICsxOTAsOCBAQAogICAgIHZvaWQgY2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrKCk7CiAgICAgdm9p
ZCBjYWxsU2V0QmFja2luZ1NjYWxlRmFjdG9yQ2FsbGJhY2soKTsKIAorICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUoKTsKKyAgICAKIHByaXZhdGU6CiAgICAgc3RhdGlj
IGNvbnN0IGRvdWJsZSB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckludGVydmFsOwogCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5k
bGVQYWdlLmgiCisjaW5jbHVkZSAiSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgorCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
QnVuZGxlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2UuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK1Bhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpj
cmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpOworfQorCitBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIoKQoreworfQorCitBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6fkFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKCkKK3sKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bWFrZVdpbmRv
d09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgd2luZG93T2JqZWN0LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgc2V0UHJvcGVydHkoY29udGV4dCwgd2luZG93
T2JqZWN0LCAiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIiLCB0aGlzLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCBleGNlcHRpb24p
OworfQorCitKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjp3cmFwcGVyQ2xhc3Mo
KQoreworICAgIHJldHVybiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmlsaXR5
Q29udHJvbGxlckNsYXNzKCk7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50KCkKK3sKKyAgICBXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKTsK
KyAgICB2b2lkKiByb290ID0gV0tBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdChwYWdlKTsKKyAgICAK
KyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHN0YXRpY19jYXN0PFBs
YXRmb3JtVUlFbGVtZW50Pihyb290KSk7ICAgIAorfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCgpCit7
CisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFn
ZSgpLT5wYWdlKCk7CisgICAgdm9pZCogcm9vdCA9IFdLQWNjZXNzaWJpbGl0eUZvY3VzZWRPYmpl
Y3QocGFnZSk7CisgICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0
ZShzdGF0aWNfY2FzdDxQbGF0Zm9ybVVJRWxlbWVudD4ocm9vdCkpOyAgICAKK30KKworUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZWxl
bWVudEF0UG9pbnQoaW50IHgsIGludCB5KQoreworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiB1aUVsZW1lbnQgPSByb290RWxlbWVudCgpOworICAgIHJldHVybiB1aUVsZW1lbnQt
PmVsZW1lbnRBdFBvaW50KHgsIHkpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV1RSCisKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gOTg5NjkpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw2ICs2MiwxMCBAQAogbm9pbnN0X0xUTElCUkFSSUVTICs9IExpYnJhcmllcy9saWJUZXN0
UnVubmVySW5qZWN0ZWRCdW5kbGUubGEKIAogd2Via2l0dGVzdHJ1bm5lcl9idWlsdF9zb3VyY2Vz
ICs9IFwKKwlEZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSW5qZWN0ZWRCdW5kbGUvSlNBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlci5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0luamVjdGVkQnVuZGxlL0pTQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0luamVjdGVk
QnVuZGxlL0pTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0lu
amVjdGVkQnVuZGxlL0pTRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL0luamVjdGVkQnVuZGxlL0pTR0NDb250cm9sbGVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
SW5qZWN0ZWRCdW5kbGUvSlNMYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgXApAQCAtNzAsNiArNzQs
MTQgQEAKIEJVSUxUX1NPVVJDRVMgKz0gJCh3ZWJraXR0ZXN0cnVubmVyX2J1aWx0X3NvdXJjZXMp
CiAKIExpYnJhcmllc19saWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfbGFfU09VUkNFUyA9IFwK
KwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5oIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oIFwKKwlUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UuY3BwIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UuaCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggXAogCVRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWN0aXZhdGVGb250cy5oIFwKIAlUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0pTV3JhcHBhYmxlLmggXAog
CVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvSlNXcmFwcGVy
LmNwcCBcCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9JbmplY3RlZEJ1bmRsZS52
Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vSW5qZWN0ZWRC
dW5kbGUudmNwcm9qCShyZXZpc2lvbiA5ODk2OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
d2luL0luamVjdGVkQnVuZGxlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzk0LDYgKzM5NCwy
MTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
SW5qZWN0ZWRCdW5kbGVcQmluZGluZ3NcQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsIgorCQkJ
CT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxCaW5kaW5nc1xBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5pZGwiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEJp
bmRpbmdzXEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRsIgorCQkJCT4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
RGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxCaW5kaW5nc1xBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmlk
bCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMy
IgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlE
TFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQmluZGluZ3NcRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5pZGwiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAt
NjE4LDYgKzgyNiwzOCBAQAogCQkJTmFtZT0iRGVyaXZlZCBTb3VyY2VzIgogCQkJPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFdmVudFNlbmRp
bmdDb250cm9sbGVyLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC02NTEsNiArODkxLDM4IEBA
CiAJCQk8L0ZpbGU+CiAJCTwvRmlsdGVyPgogCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxJ
bmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAiCisJCQk+CisJCTwvRmls
ZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQ
YXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAiCisJCQk+
CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVc
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJ
UmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlLmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxJ
bmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgiCisJCQk+CisJCTwv
RmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHAiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0
aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgorCQkJ
PgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxl
XHdpblxBY3RpdmF0ZUZvbnRzLmNwcCIKIAkJCT4KIAkJPC9GaWxlPgpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gOTg5NjkpCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDEwIEBACiAjCiAKIElOVEVSRkFDRVMgPSBcCisgICAgQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIgXAorICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIFwKKyAgICBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlIFwKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IFwKICAg
ICBFdmVudFNlbmRpbmdDb250cm9sbGVyIFwKICAgICBHQ0NvbnRyb2xsZXIgXAogICAgIExheW91
dFRlc3RDb250cm9sbGVyIFwKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVz
dFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA5ODk2OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsy
MywxNyBAQAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAkJMEY1MTY5Q0IxNDQ1
MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUxNjlDQTE0NDUyMjJEMDBFMEE5RDcgLyogV2Vi
S2l0LmZyYW1ld29yayAqLzsgfTsKIAkJMEY1MTY5Q0MxNDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktp
dC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjUxNjlDQTE0NDUyMjJEMDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayAqLzsgfTsK
KwkJMjkyMTBFQUUxNDRDQUNCNzAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFQTkx
NDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICovOyB9OworCQky
OTIxMEVCMDE0NENBQ0JEMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFQTIxNDRD
QUFBNTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJMjky
MTBFQjQxNDRDQUNENTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUIxMTQ0Q0FD
RDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi87IH07CisJCTI5MjEw
RUI1MTQ0Q0FDRDUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUIzMTQ0Q0FD
RDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSAqLzsgfTsKKwkJMjky
MTBFREExNDRDQzNFQTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIxMEVBQjE0NENB
Q0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLzsgfTsKKwkJMjky
MTBFREIxNDRDRDQ3OTAwODM1QkI1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTgzOTEzRDAxNDMz
NUU5NTAwODMwN0U1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwICovOyB9OworCQky
OTIxMEVFMTE0NENEQjI2MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRURCMTQ2
NzI3RTcxMTgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICovOyB9OworCQky
OUE4RkNDQjE0NUVGMDJFMDA5MDQ1QTYgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIxMEVFMTE0
NENERTY3ODk4MTVFRTUgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi87IH07CisJ
CTI5QThGQ0REMTQ1RjAzMzcwMDkwNDVBNiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlB
OEZDRTEzNDVFNzAyMTAwNkFBNUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5j
cHAgKi87IH07CisJCTI5QThGQ0UyMTQ1RjAzN0IwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI5QThGQ0UxMTQ1RjAzN0IwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlLmNwcCAqLzsgfTsKKwkJMjlBOEZDRTUxNDVGMDQ2NDAwOTA0NUE2IC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOUE4RkNFNDE0NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZU1hYy5tbSAqLzsgfTsKIAkJNTMyMkZCNDMxM0ZEQTBDRDAwNDFBQkND
IC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzIyRkI0MTEzRkRBMENEMDA0MUFCQ0MgLyogQ3ljbGljUmVk
dW5kYW5jeUNoZWNrLmNwcCAqLzsgfTsKIAkJNTMyMkZCNDYxM0ZEQTBFQTAwNDFBQkNDIC8qIFBp
eGVsRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTMyMkZCNDQxM0ZEQTBFQTAwNDFBQkNDIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3Bw
ICovOyB9OwogCQk1NjQxRTJEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNUZXh0SW5wdXRDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU2
NDFFMkNFMTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3BwICovOyB9
OwpAQCAtODYsNiArOTcsMjcgQEAKIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9u
ICovCiAJCTBGNTE2OUNBMTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJhbWV3b3JrICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFt
ZXdvcms7IHBhdGggPSBXZWJLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQkyOTIxMEVBMjE0NENBQUE1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIx
MEVBMzE0NENBQUE1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQTgxNDRDQUI4ODAwODM1QkI1IC8qIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEw
RUE5MTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVBQTE0NENBQ0IyMDA4MzVCQjUg
LyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTI5MjEwRUFCMTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVCMTE0NENBQ0Q0MDA4MzVCQjUg
LyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyOTIxMEVCMjE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQjMxNDRD
QUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMu
bW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTI5MjEwRURCMTQ2NzI3RTcxMTgzNUJCNSAvKiBKU0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
SlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMjkyMTBFREIxNDY3MjdFODExODM1QkI1IC8qIEpTQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBK
U0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRl
c3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCTI5MjEwRURDMTQ0Q0Q1NkUwMDgzNUJCNSAvKiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFRTExNDRDREU2
Nzg5ODE1RUU1IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHA7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkyOTIxMEVF
MTE0NUNERTY3ODk4MTVFRTUgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMjlBOEZDQzUx
NDVCOTNDNjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTI5QThGQ0QyMTQ1RUY4RjIwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlBOEZDREYxNDVGMDM1ODAwOTA0NUE2
IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyOUE4RkNFMTE0NUYwMzdCMDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMjlBOEZDRTEzNDVFNzAyMTAwNkFBNUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkyOUE4RkNFMTM0NUU3MDIxMDA2QUE1QTcg
LyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMjlBOEZDRTQxNDVG
MDQ2NDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlTWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OEQ0NDIyMTMzNDZEMDAwMDZBNzc3
QiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxMjMwRTE2MTM4Qzc4QkYwMEJDQ0ZDQSAvKiBsaWJXZWJDb3JlVGVzdFN1
cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9y
dC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDE4MTczMUIx
MzhBRDM5RDAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJDb3JlVGVzdFN1cHBvcnQuaDsgcGF0aCA9IFdlYkNvcmVUZXN0
U3VwcG9ydC9XZWJDb3JlVGVzdFN1cHBvcnQuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKQEAgLTEwMCw2ICsxMzIsOCBAQAogCQk1NjY0QTQ5OTE0MzI2Mzg0MDA4ODgxQkUg
LyogVGV4dElucHV0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZXh0SW5wdXRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU2
NzBCODI2MTM4NkZDMTMwMDJFQjM1NSAvKiBFdmVudFNlbmRlclByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50U2VuZGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTY3MEI4MjcxMzg2RkNBNTAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJv
eHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFdmVudFNlbmRl
clByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1ODM5MTNEMDE0MzM1RTk1
MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTU4MzkxM0Qx
MTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk2NTEwQTc3NzEx
RUM2NDM4MDA0MTA4NjcgLyogQUhFTV9fX18uVFRGICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9ICJBSEVNX19fXy5UVEYiOyBwYXRo
ID0gImZvbnRzL0FIRU1fX19fLlRURiI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
MTBBNzc4MTFFQzY0MzgwMDQxMDg2NyAvKiBDb2xvckJpdHMudHRmICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IENvbG9yQml0cy50
dGY7IHBhdGggPSBmb250cy9Db2xvckJpdHMudHRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NTEwQTc3OTExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50
dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxl
OyBuYW1lID0gV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGY7IHBhdGggPSBmb250cy9XZWJLaXRX
ZWlnaHRXYXRjaGVyMTAwLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0Nyw2
ICsyODEsMjQgQEAKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07CisJCTI5QThGQ0UwMTQ1RjAzNUQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5ICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkyOTIxMEVBMjE0
NENBQUE1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwICovLAorCQkJCTI5
MjEwRUEzMTQ0Q0FBQTUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oICovLAor
CQkJCTI5MjEwRUE5MTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNw
cCAqLywKKwkJCQkyOTIxMEVBQTE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oICovLAorCQkJCTI5MjEwRUFCMTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tICovLAorCQkJCTI5MjEwRUIxMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8sCisJCQkJMjkyMTBFQjIxNDRDQUNENDAwODM1QkI1
IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8sCisJCQkJMjkyMTBFQjMxNDRDQUNENDAw
ODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tICovLAorCQkJCTI5QThGQ0Ux
MTQ1RjAzN0IwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCAqLywK
KwkJCQkyOUE4RkNERjE0NUYwMzU4MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZS5oICovLAorCQkJCTI5QThGQ0U0MTQ1RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlTWFjLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBBY2Nlc3NpYmlsaXR5
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNjVFQjg1OUUxMUVDNjdDQzAw
MzREMzAwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0yNTksNiArMzExLDcgQEAKIAkJQkMxNEU0RTAxMjBFMDJGOTAwODI2QzBDIC8qIENvbnRy
b2xsZXJzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQky
OUE4RkNFMDE0NUYwMzVEMDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eSAqLywKIAkJCQlCQzhGRDhD
OTEyMEU1MjdGMDBGM0U3MUEgLyogRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJ
QkM4RkQ4QzgxMjBFNTI3RjAwRjNFNzFBIC8qIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCAqLywK
IAkJCQlCQzE0RTREOTEyMEUwMkQwMDA4MjZDMEMgLyogR0NDb250cm9sbGVyLmNwcCAqLywKQEAg
LTM0NSw2ICszOTgsMTAgQEAKIAkJCQlCQzk1MkMwRTExRjNCOTdCMDAzMzk4QjQgLyogSlNXcmFw
cGFibGUuaCAqLywKIAkJCQlCQzk1MkMwQzExRjNCOTY1MDAzMzk4QjQgLyogSlNXcmFwcGVyLmNw
cCAqLywKIAkJCQlCQzk1MkMwQjExRjNCOTY1MDAzMzk4QjQgLyogSlNXcmFwcGVyLmggKi8sCisJ
CQkJMjkyMTBFQTgxNDRDQUI4ODAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlk
bCAqLywKKwkJCQkyOUE4RkNDNTE0NUI5M0M2MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIuaWRsICovLAorCQkJCTI5QThGQ0QyMTQ1RUY4RjIwMDkwNDVBNiAvKiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlLmlkbCAqLywKKwkJCQkyOTIxMEVEQzE0NENENTZFMDA4MzVCQjUg
LyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwgKi8sCiAJCQkJQkM4RkQ4Q0IxMjBFNTJCMDAw
RjNFNzFBIC8qIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsICovLAogCQkJCUJDMTRFNEUxMTIw
RTAzMjAwMDgyNkMwQyAvKiBHQ0NvbnRyb2xsZXIuaWRsICovLAogCQkJCUJDOTUyRUQyMTFGM0My
OUYwMDMzOThCNCAvKiBMYXlvdXRUZXN0Q29udHJvbGxlci5pZGwgKi8sCkBAIC0zNTYsNiArNDEz
LDE0IEBACiAJCUJDOTUyRDNBMTFGM0JGMUYwMDMzOThCNCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTU4MzkxM0QwMTQz
MzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLywKKwkJCQk1
ODM5MTNEMTE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oICov
LAorCQkJCTI5MjEwRUUxMTQ0Q0RFNjc4OTgxNUVFNSAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmNwcCAqLywKKwkJCQkyOTIxMEVFMTE0NUNERTY3ODk4MTVFRTUgLyogSlNBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlci5oICovLAorCQkJCTI5QThGQ0UxMzQ1RTcwMjEwMDZBQTVBNiAvKiBKU0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovLAorCQkJCTI5QThGQ0UxMzQ1RTcwMjEw
MDZBQTVBNyAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCAqLywKKwkJCQkyOTIx
MEVEQjE0NjcyN0U3MTE4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLywK
KwkJCQkyOTIxMEVEQjE0NjcyN0U4MTE4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmggKi8sCiAJCQkJQkM4RkQ4RDAxMjBFNTQ1QjAwRjNFNzFBIC8qIEpTRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5jcHAgKi8sCiAJCQkJQkM4RkQ4RDExMjBFNTQ1QjAwRjNFNzFBIC8qIEpTRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5oICovLAogCQkJCUJDMTRFNEU4MTIwRTAzRDgwMDgyNkMwQyAvKiBK
U0dDQ29udHJvbGxlci5jcHAgKi8sCkBAIC01MTYsNiArNTgxLDE3IEBACiAJCQkJQzBDRTcyMEIx
MjQ3QzkzMzAwQkMwRUM0IC8qIExheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTY2NEE0OUExNDMyNjM4NDAwODg4MUJFIC8qIFRleHRJbnB1dENvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTY0MUUyRDAxNDMzNUU5NTAwODMwN0U1IC8qIEpTVGV4
dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOTIxMEVBRTE0NENBQ0I3
MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkyOTIxMEVCMDE0NENBQ0JEMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFQjQxNDRDQUNENTAwODM1QkI1IC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5MjEwRUI1MTQ0Q0FDRDUw
MDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTI5MjEwRURBMTQ0Q0MzRUEwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFREIxNDRDRDQ3OTAwODM1QkI1IC8qIEpTQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFRTExNDRD
REIyNjAwODM1QkI1IC8qIEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkyOUE4RkNDQjE0NUVGMDJFMDA5MDQ1QTYgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOUE4RkNERDE0NUYwMzM3MDA5MDQ1QTYgLyog
SlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5
QThGQ0UyMTQ1RjAzN0IwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTI5QThGQ0U1MTQ1RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCShyZXZpc2lvbiA5ODk2NykKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNzQxLDE1ICs3NDEs
OSBAQAogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tcGFkZGluZy13aXRoLW11bHRpcGxlLWxp
bmUtYm94ZXMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vc2hpZnQtY2xpY2suaHRtbAogCi0jIElt
cGxlbWVudCBhY2Nlc2l0aWxpdHkgc3VwcG9ydCB0byBXZWJLaXQyCi1wbGF0Zm9ybS9ndGsvYWNj
ZXNzaWJpbGl0eS9hcmlhLXJvbGVzLXVuaWdub3JlZC5odG1sCi1wbGF0Zm9ybS9ndGsvYWNjZXNz
aWJpbGl0eS9hcmlhLXNsaWRlci1yZXF1aXJlZC1hdHRyaWJ1dGVzLmh0bWwKLXBsYXRmb3JtL2d0
ay9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtaGllcmFyY2h5Lmh0bWwKLXBsYXRmb3JtL2d0ay9h
Y2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLXRleHQtZm9jdXMuaHRtbAotcGxhdGZvcm0vZ3Rr
L2FjY2Vzc2liaWxpdHkvaW5wdXQtc2xpZGVyLmh0bWwKLXBsYXRmb3JtL2d0ay9hY2Nlc3NpYmls
aXR5L2xpc3QtaXRlbXMtYWx3YXlzLWV4cG9zZWQuaHRtbAotcGxhdGZvcm0vZ3RrL2FjY2Vzc2li
aWxpdHkvb2JqZWN0LXdpdGgtdGl0bGUuaHRtbAotcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkv
dGFibGUtaGllcmFyY2h5Lmh0bWwKKyMgSW1wbGVtZW50IGFjY2Vzc2liaWxpdHkgc3VwcG9ydCBm
b3IgV2ViS2l0MgorYWNjZXNzaWJpbGl0eQorcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkKIAog
IyBJbXBsZW1lbnQgdGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZSBpbnRlcmZhY2UKIGZhc3QvZm9ybXMvY3Vyc29yLWF0LWVkaXRhYmxlLWNvbnRlbnQtYm91bmRh
cnkuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdXBk
YXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hl
bi1hcmlhLXJvbGUtY2hhbmdlcy5odG1sCShyZXZpc2lvbiA5ODk2NykKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1jaGlsZHJlbi13aGVuLWFyaWEtcm9s
ZS1jaGFuZ2VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhcmVudCIpLmZvY3VzKCk7CiAgICAgICAgIHZhciBw
YXJlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKICAgICAgICAg
c2hvdWxkQmUoInBhcmVudC5jaGlsZEF0SW5kZXgoMCkucm9sZSIsICInQVhSb2xlOiBBWEJ1dHRv
biciKTsKLSAgICAgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZEF0SW5kZXgoMSkucm9sZSIsICIn
QVhSb2xlOiAnIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgicGFyZW50LmNoaWxkQXRJbmRleCgx
KSA9PSBudWxsIHx8IHBhcmVudC5jaGlsZEF0SW5kZXgoMSkuaXNWYWxpZCA9PSBmYWxzZSIpOwog
ICAKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjEiKS5yZW1vdmVBdHRy
aWJ1dGUoInJvbGUiKTsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjIi
KS5zZXRBdHRyaWJ1dGUoInJvbGUiLCAiYnV0dG9uIik7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0Ym94LXJvbGUtcmVwb3J0cy1ub3RpZmljYXRpb25z
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvdGV4dGJveC1yb2xlLXJlcG9ydHMtbm90aWZpY2F0aW9ucy5odG1sCShyZXZpc2lvbiA5ODk2
NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9s
ZS1yZXBvcnRzLW5vdGlmaWNhdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIs
NyBAQAogPGRpdiByb2xlPSJ0ZXh0Ym94IiBpZD0iYXJpYVRleHRCb3giIGFyaWEtbXVsdGlsaW5l
PSJmYWxzZSIgdGFiaW5kZXg9IjAiPlNvbWUgdGV4dCBpbiBhIHRleHRib3guPC9kaXY+CiA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+CisgICAgdmFyIHRleHRib3hBeEVsZW1lbnQ7
CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKIApAQCAtMjAsNyArMjEsNyBAQAogCiAgICAgICAgIHZhciBhcmlhVGV4
dEJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcmlhVGV4dEJveCIpOwogICAgICAgICBh
cmlhVGV4dEJveC5mb2N1cygpOwotICAgICAgICB2YXIgdGV4dGJveEF4RWxlbWVudCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICB0ZXh0Ym94QXhFbGVt
ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CiAgICAgICAgIHRl
eHRib3hBeEVsZW1lbnQuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIobG9nTm90aWZpY2F0aW9uKTsK
ICAgICAgICAgcGVuZGluZ05vdGlmaWNhdGlvbnMgPSAzOwogICAgICAgICBhcmlhVGV4dEJveC5m
aXJzdENoaWxkLmRlbGV0ZURhdGEoMCwgNSk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rpb24tZWxlbWVudHMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWwtc2Vj
dGlvbi1lbGVtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk4OTY3KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9uLWVsZW1lbnRzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAsOSArMjAsNyBAQAogUEFTUyBib2R5LmNoaWxk
QXRJbmRleCg0KS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTGFuZG1hcmtOYXZpZ2F0aW9uJwog
UEFTUyBib2R5LmNoaWxkQXRJbmRleCg1KS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTGFuZG1h
cmtDb21wbGVtZW50YXJ5JwogUEFTUyBib2R5LmNoaWxkQXRJbmRleCg2KS5jaGlsZEF0SW5kZXgo
MCkuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiAnCi1QQVNTIGJvZHkuY2hpbGRBdEluZGV4KDYpLmNo
aWxkQXRJbmRleCgxKS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6ICcKIFBBU1MgYm9keS5jaGlsZEF0
SW5kZXgoNykuY2hpbGRBdEluZGV4KDApLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogJwotUEFTUyBi
b2R5LmNoaWxkQXRJbmRleCg3KS5jaGlsZEF0SW5kZXgoMSkuc3Vicm9sZSBpcyAnQVhTdWJyb2xl
OiAnCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1jaGlsZHJl
bi13aGVuLWFyaWEtcm9sZS1jaGFuZ2VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1h
cmlhLXJvbGUtY2hhbmdlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk4OTY3KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJp
YS1yb2xlLWNoYW5nZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBA
QAogCiAKIFBBU1MgcGFyZW50LmNoaWxkQXRJbmRleCgwKS5yb2xlIGlzICdBWFJvbGU6IEFYQnV0
dG9uJwotUEFTUyBwYXJlbnQuY2hpbGRBdEluZGV4KDEpLnJvbGUgaXMgJ0FYUm9sZTogJworUEFT
UyBwYXJlbnQuY2hpbGRBdEluZGV4KDEpID09IG51bGwgfHwgcGFyZW50LmNoaWxkQXRJbmRleCgx
KS5pc1ZhbGlkID09IGZhbHNlIGlzIHRydWUKIFBBU1MgcGFyZW50LmNoaWxkQXRJbmRleCgwKS5y
b2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKIFBBU1MgcGFyZW50LmNoaWxkQXRJbmRleCgx
KS5yb2xlIGlzICdBWFJvbGU6IEFYQnV0dG9uJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VhcmNo
LXByZWRpY2F0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L3NlYXJjaC1wcmVkaWNhdGUuaHRtbAkocmV2aXNpb24gOTg5NjcpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGljYXRlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4LDcgQEAKIDxpbnB1dCB0eXBlPSJjaGVja2Jv
eCIgdmFsdWU9IkNoZWNrYm94IiAvPiBjaGVja2JveDxiciAvPgogPGlucHV0IHR5cGU9InN1Ym1p
dCIgdmFsdWU9IlN1Ym1pdCIgLz4KIDwvZm9ybT4KLTxpbWcgaWQ9ImltYWdlIiBzcmM9InJlc291
cmNlcy9jYWtlLnBuZyIgLz4KKzxpbWcgaWQ9ImltYWdlIiBzcmM9InJlc291cmNlcy9jYWtlLnBu
ZyIgYWx0PSJUZXN0Ij4KIDxoMT5maXJzdCBoZWFkaW5nIGxldmVsIDE8L2gxPgogPGgxPnNlY29u
ZCBoZWFkaW5nIGxldmVsIDE8L2gxPgogPGgyPmhlYWRpbmcgbGV2ZWwgMjwvaDI+CkBAIC01Miwx
NCArNTIsMTMgQEAKICAgICAgICAgdmFyIHN0YXJ0RWxlbWVudDsKICAgICAgICAgdmFyIGlzRGly
ZWN0aW9uTmV4dDsKICAgICAgICAgdmFyIHNlYXJjaEtleTsKLSAgICAgICAgdmFyIHNlYXJjaFRl
eHQ7CisgICAgICAgIHZhciBzZWFyY2hUZXh0ID0gIiI7CiAgICAgICAgIHZhciByZXN1bHRFbGVt
ZW50OwogICAgICAgICAKICAgICAgICAgLy8gQW55IGVsZW1lbnQuCiAgICAgICAgIHN0YXJ0RWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5
ID0gIkFYQW55VHlwZVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAg
ICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQ
cmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNo
VGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTog
QVhTdGF0aWNUZXh0JyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdW
YWx1ZSIsICInQVhWYWx1ZTogZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpAQCAtNjgsNyAr
NjcsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9
IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hL
ZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9
IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVu
dCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAg
IHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICIn
QVhWYWx1ZTogc2Vjb25kIGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKQEAgLTc3LDcgKzc1LDYgQEAK
ICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwog
ICAgICAgICBzZWFyY2hLZXkgPSAiQVhCbG9ja3F1b3RlU2VhcmNoS2V5IjsKLSAgICAgICAgc2Vh
cmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50
LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4
dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1l
bnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0
RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBi
bG9ja3F1b3RlIGxldmVsIDEnIik7CkBAIC04Niw3ICs4Myw2IEBACiAgICAgICAgIHN0YXJ0RWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5
ID0gIkFYQm9sZEZvbnRTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAg
ICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNo
UHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJj
aFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6
IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Fucy1zZXJpZiBibGFjayBib2xkIHRleHQg
d2l0aCB1bmRlcmxpbmUnIik7CkBAIC05NSw3ICs5MSw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0g
IkFYQnV0dG9uU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAg
IHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRp
Y2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0
KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEJ1
dHRvbiciKTsKICAgICAgICAgCkBAIC0xMDMsNyArOTgsNiBAQAogICAgICAgICBzdGFydEVsZW1l
bnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgo
MCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9
ICJBWENoZWNrQm94U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAg
ICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFBy
ZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hU
ZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBB
WENoZWNrQm94JyIpOwogICAgICAgICAKQEAgLTExMSw3ICsxMDUsNiBAQAogICAgICAgICBzdGFy
dEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0
SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJj
aEtleSA9ICJBWENoZWNrQm94U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7
CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNl
YXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBz
ZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhS
b2xlOiBBWENoZWNrQm94JyIpOwogICAgICAgICAKQEAgLTExOSw3ICsxMTIsNiBAQAogICAgICAg
ICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5j
aGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAg
IHNlYXJjaEtleSA9ICJBWERpZmZlcmVudFR5cGVTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hU
ZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlF
bGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBz
ZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5y
b2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGJsb2NrcXVvdGUgbGV2ZWwg
MSciKTsKQEAgLTEyOCw3ICsxMjAsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMik7CiAgICAgICAg
IGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEZvbnRDaGFu
Z2VTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0
RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0
YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAg
ICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7
CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdW
YWx1ZSIsICInQVhWYWx1ZTogc2VyaWYgYmx1ZSBpdGFsaWMgdGV4dCciKTsKQEAgLTEzNyw3ICsx
MjgsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMik7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9
IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSI7
Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBp
c0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBzZXJpZiBibHVlIGl0YWxpYyB0ZXh0JyIpOwpAQCAtMTQ5LDcgKzEzOSw2IEBACiAgICAg
ICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50
LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAg
ICAgc2VhcmNoS2V5ID0gIkFYR3JhcGhpY1NlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQg
PSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJj
aEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUi
LCAiJ0FYUm9sZTogQVhJbWFnZSciKTsKICAgICAgICAgCkBAIC0xNTcsNyArMTQ2LDYgQEAKICAg
ICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAg
ICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5IjsKLSAgICAgICAgc2Vh
cmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50
LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4
dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1l
bnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogZmlyc3Qg
aGVhZGluZyBsZXZlbCAxJyIpOwpAQCAtMTY2LDcgKzE1NCw2IEBACiAgICAgICAgIHN0YXJ0RWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5
ID0gIkFYSGVhZGluZ0xldmVsMlNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxs
OwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JT
ZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwg
c2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FY
Um9sZTogQVhIZWFkaW5nJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGls
ZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgMiciKTsK
QEAgLTE3NSw3ICsxNjIsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGly
ZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDNT
ZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxl
bWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0
RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIiwgIidBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDMnIik7CkBAIC0xODQsNyArMTcwLDYgQEAK
ICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwog
ICAgICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5IjsKLSAgICAgICAg
c2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVt
ZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9u
TmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVh
ZGluZyBsZXZlbCA0JyIpOwpAQCAtMTkzLDcgKzE3OCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0g
IkFYSGVhZGluZ0xldmVsNVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwog
ICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFy
Y2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2Vh
cmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9s
ZTogQVhIZWFkaW5nJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0
SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgNSciKTsKQEAg
LTIwMiw3ICsxODYsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0
aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDZTZWFy
Y2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVu
dCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxl
bWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVl
IiwgIidBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDYnIik7CkBAIC0yMTEsNyArMTk0LDYgQEAKICAg
ICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQuY2hpbGRBdEluZGV4KDYpOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAg
ICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5IjsKLSAgICAgICAg
c2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVt
ZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9u
TmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Vj
b25kIGhlYWRpbmcgbGV2ZWwgMSciKTsKQEAgLTIyMCw3ICsyMDIsNiBAQAogICAgICAgICBzdGFy
dEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0
SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJj
aEtleSA9ICJBWEhlYWRpbmdTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsK
ICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNl
YXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJv
bGU6IEFYSGVhZGluZyciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCBoZWFkaW5nIGxldmVsIDEn
Iik7CkBAIC0yMjksNyArMjEwLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBp
c0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhJdGFsaWNGb250
U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVs
ZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFy
dEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwog
ICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFs
dWUiLCAiJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnIik7CkBAIC0yMzgsNyArMjE4
LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0
cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhMYW5kbWFya1NlYXJjaEtleSI7Ci0gICAgICAg
IHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxl
bWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlv
bk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJl
c3VsdEVsZW1lbnQuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWExhbmRtYXJrQmFubmVyJyIpOwpA
QCAtMjQ3LDcgKzIyNiw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJl
Y3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYTGlua1NlYXJjaEtleSI7
Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBp
c0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhMaW5rJyIpOwogICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFs
dWU6IGxpbmsnIik7CkBAIC0yNTYsNyArMjM0LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwog
ICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhM
aXN0U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3Vs
dEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShz
dGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWExpc3QnIik7
CiAgICAgICAgIApAQCAtMjY0LDcgKzI0MSw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAg
ICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYTGl2
ZVJlZ2lvblNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICBy
ZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNh
dGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7
CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91
cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nQXR0cmlidXRlVmFs
dWUoJ0FYQVJJQUxpdmUnKSIsICIncG9saXRlJyIpOwpAQCAtMjc2LDcgKzI1Miw2IEBACiAgICAg
ICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50
LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAg
ICAgc2VhcmNoS2V5ID0gIkFYUGxhaW5UZXh0U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4
dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxl
bWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2Vh
cmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9s
ZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCBibG9ja3F1b3RlIGxldmVsIDEn
Iik7CkBAIC0yODUsNyArMjYwLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBp
c0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhSYWRpb0dyb3Vw
U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVs
ZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFy
dEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFJhZGlvR3JvdXAn
Iik7CiAgICAgICAgIApAQCAtMjkzLDcgKzI2Nyw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsK
ICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFY
U2FtZVR5cGVTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAg
cmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGlj
YXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQp
OwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3Jv
dXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5z
dHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Vjb25kIGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKQEAg
LTMwMiw3ICsyNzUsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0
aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFN0YXRpY1RleHRTZWFyY2hL
ZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9
IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVu
dCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKICAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZp
cnN0IGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKQEAgLTMxMSw3ICsyODMsNiBAQAogICAgICAgICBz
dGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGls
ZEF0SW5kZXgoMik7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNl
YXJjaEtleSA9ICJBWFN0eWxlQ2hhbmdlU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9
IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNo
S2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIs
ICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5j
aGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGlj
IHRleHQnIik7CkBAIC0zMjAsNyArMjkxLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDE4KTsKICAg
ICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYVGFi
bGVTYW1lTGV2ZWxTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAg
ICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRl
eHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFY
VGFibGUnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVl
OiBzZWNvbmQgdGFibGUgaGVhZGluZyBsZXZlbCAxJyIpOwpAQCAtMzI5LDcgKzI5OSw2IEBACiAg
ICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAg
ICAgICAgc2VhcmNoS2V5ID0gIkFYVGFibGVTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0
ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVt
ZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFy
Y2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xl
IiwgIidBWFJvbGU6IEFYVGFibGUnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50
LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIiwgIidBWFZhbHVlOiBmaXJzdCB0YWJsZSBoZWFkaW5nIGxldmVsIDEnIik7CkBAIC0zMzgs
NyArMzA3LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5l
eHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhUZXh0RmllbGRTZWFyY2hLZXkiOwot
ICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRh
aW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNE
aXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgi
cmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYVGV4dEZpZWxkJyIpOwogICAgICAgICAK
QEAgLTM0Niw3ICszMTQsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGly
ZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFVuZGVybGluZVNlYXJj
aEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50
ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVt
ZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNo
b3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwg
IidBWFZhbHVlOiBzYW5zLXNlcmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVuZGVybGluZSciKTsK
QEAgLTM1NSw3ICszMjIsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGly
ZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFVudmlzaXRlZExpbmtT
ZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxl
bWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0
RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYTGluayciKTsKICAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVl
IiwgIidBWFZhbHVlOiBsaW5rJyIpOwpAQCAtMzY2LDcgKzMzMiw3IEBACiAgICAgICAgIC8vIFBy
ZXZpb3VzIHRleHQgc2VhcmNoLgogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMTApOwogICAgICAgICBpc0Rp
cmVjdGlvbk5leHQgPSBmYWxzZTsKLSAgICAgICAgc2VhcmNoS2V5ID0gbnVsbDsKKyAgICAgICAg
c2VhcmNoS2V5ID0gIiI7CiAgICAgICAgIHNlYXJjaFRleHQgPSAic2Fucy1zZXJpZiBibGFjayBi
b2xkIHRleHQgd2l0aCB1bmRlcmxpbmUiOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFp
bmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0Rp
cmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOwpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9uLWVsZW1lbnRz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvaHRtbC1zZWN0aW9uLWVsZW1lbnRzLmh0bWwJKHJldmlzaW9uIDk4OTY3KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9uLWVsZW1lbnRzLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDExICs0Niw5IEBACiAKICAgICAgICAgICAvLyBXaGVu
IGEgaGVhZGVyIGFuZCBmb290ZXIgYXJlIGluc2lkZSBhbiBhcnRpY2xlLCB0aGV5IHNob3VsZCBu
b3QgYmUgbGFuZG1hcmtzLgogICAgICAgICAgIHNob3VsZEJlKCJib2R5LmNoaWxkQXRJbmRleCg2
KS5jaGlsZEF0SW5kZXgoMCkuc3Vicm9sZSIsICInQVhTdWJyb2xlOiAnIik7Ci0gICAgICAgICAg
c2hvdWxkQmUoImJvZHkuY2hpbGRBdEluZGV4KDYpLmNoaWxkQXRJbmRleCgxKS5zdWJyb2xlIiwg
IidBWFN1YnJvbGU6ICciKTsKIAogICAgICAgICAgIC8vIFdoZW4gYSBoZWFkZXIgYW5kIGZvb3Rl
ciBhcmUgaW5zaWRlIGEgc2VjdGlvbiwgdGhleSBzaG91bGQgbm90IGJlIGxhbmRtYXJrcy4KICAg
ICAgICAgICBzaG91bGRCZSgiYm9keS5jaGlsZEF0SW5kZXgoNykuY2hpbGRBdEluZGV4KDApLnN1
YnJvbGUiLCAiJ0FYU3Vicm9sZTogJyIpOwotICAgICAgICAgIHNob3VsZEJlKCJib2R5LmNoaWxk
QXRJbmRleCg3KS5jaGlsZEF0SW5kZXgoMSkuc3Vicm9sZSIsICInQVhTdWJyb2xlOiAnIik7CiAg
ICAgfQogCiAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi13azIvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4td2syL1NraXBwZWQJKHJldmlzaW9uIDk4OTY3KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luLXdrMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsOSBAQAog
IyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogIwogCi0jIFdlYktpdDIgbmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5
Ci0jIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxMzA+Ci0jIFdl
YktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgRFJU
IEFQSXMKLSMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjEzMT4K
KyMgV2luZG93cyBkb2VzIG5vdCBzdXBwb3J0IFdlYktpdDIgYWNjZXNzaWJpbGl0eS4KKyMgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTI5Nj4KK2FjY2Vzc2liaWxp
dHkKIHBsYXRmb3JtL3dpbi9hY2Nlc3NpYmlsaXR5CiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVk
cyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wSWNvbkNoYW5n
ZXMKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCShyZXZpc2lvbiA5ODk2NykKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiAr
MzgsMTEgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBT
VEFSVCBPRiAoMSkgQ2xhc3NpZmllZCBmYWlsdXJlcyB3aXRoIGJ1ZyByZXBvcnRzCiAKLSMgV2Vi
S2l0MiBuZWVkcyB0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHkKLSMgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjEzMD4KLSMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0
byBzdXBwb3J0IGFjY2Vzc2liaWxpdHktcmVsYXRlZCBEUlQgQVBJcwotIyA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMxPgotYWNjZXNzaWJpbGl0eQotcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkKKyMgQVggdGVzdHMgdGhhdCByZXF1aXJlIGhpdCB0ZXN0aW5n
IGRvIG5vdCB3b3JrIGluIFdLMi4KKyMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MTI5OD4KK3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWwtc2xpZGVyLWlu
ZGljYXRvci5odG1sCitwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9saXN0Ym94LWhpdC10ZXN0
Lmh0bWwKK3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS13aXRoLXRpdGxlLWNvcnJl
Y3QtaGllcmFyY2h5Lmh0bWwKIAogIyBTb21lIGNvbXBvc2l0aW5nIHRlc3RzIGZsYWtleQogIyA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MzU0PgpJbmRleDogTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEt
bGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5ODk2NykK
KysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1s
YWJlbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiAKIAogUEFT
UyB0ZXh0LmRlc2NyaXB0aW9uIGlzICdBWERlc2NyaXB0aW9uOiBTaHV0IGRvd24gY29tcHV0ZXIg
YWZ0ZXIgMTAgbWludXRlcycKLVBBU1MgdGV4dC50aXRsZVVJRWxlbWVudCgpLmlzVmFsaWQgaXMg
ZmFsc2UKK1BBU1MgdGV4dC50aXRsZVVJRWxlbWVudCgpICE9IG51bGwgJiYgdGV4dC50aXRsZVVJ
RWxlbWVudCgpLmlzVmFsaWQgaXMgZmFsc2UKIFBBU1MgbGFiZWxFbGVtZW50LnJvbGUgaXMgJ0FY
Um9sZTogQVhTdGF0aWNUZXh0JwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCklu
ZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS1vdmVycmlkZXMt
bGFiZWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEt
bGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwuaHRtbAkocmV2aXNpb24gOTg5NjcpCisrKyBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogICAgICAgICAgIHNob3VsZEJlKCJ0
ZXh0LmRlc2NyaXB0aW9uIiwgIidBWERlc2NyaXB0aW9uOiBTaHV0IGRvd24gY29tcHV0ZXIgYWZ0
ZXIgMTAgbWludXRlcyciKTsKIAogICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBiZSBubyB0aXRs
ZSBVSSBlbGVtZW50LgotICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRpdGxlVUlFbGVtZW50KCku
aXNWYWxpZCIsICJmYWxzZSIpOworICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRpdGxlVUlFbGVt
ZW50KCkgIT0gbnVsbCAmJiB0ZXh0LnRpdGxlVUlFbGVtZW50KCkuaXNWYWxpZCIsICJmYWxzZSIp
OwogICAgICAgICAgIAogICAgICAgICAgIC8vIFRoZSBsYWJlbCBlbGVtZW50IGlzIGluIGEgZ3Jv
dXAsIGluIGEgZ3JvdXAsIGluIHRoZSB3ZWIgYXJlYS4KICAgICAgICAgICB2YXIgbGFiZWxFbGVt
ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQuY2hpbGRBdEluZGV4KDAp
LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApOwpJbmRleDog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90aC1hcy10aXRsZS11aS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGgtYXMtdGl0bGUtdWkuaHRtbAkocmV2aXNp
b24gOTg5NjcpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RoLWFzLXRpdGxlLXVpLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDcgQEAKICAgICAgICAgICAgIGJvZHkuZm9j
dXMoKTsKICAgICAgICAgICAgIHZhciBncm91cCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgxKTsKICAgICAgICAgICAgIHZhciBncm91cDIgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMyk7Ci0K
LSAgICAgICAgICAgIGlmIChncm91cC50aXRsZVVJRWxlbWVudCgpLmFsbEF0dHJpYnV0ZXMoKSAh
PSAiIiAmJiBncm91cDIudGl0bGVVSUVsZW1lbnQoKS5hbGxBdHRyaWJ1dGVzKCkgPT0gIiIpCisg
ICAgICAgICAgICBpZiAoZ3JvdXAudGl0bGVVSUVsZW1lbnQoKS5hbGxBdHRyaWJ1dGVzKCkgIT0g
IiIgJiYgKGdyb3VwMi50aXRsZVVJRWxlbWVudCgpID09IG51bGwgfHwgZ3JvdXAyLnRpdGxlVUlF
bGVtZW50KCkuYWxsQXR0cmlidXRlcygpID09ICIiKSkgCiAgICAgICAgICAgICAgICAgcmVzdWx0
LmlubmVyVGV4dCArPSAiUGFzcyI7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
cmVzdWx0LmlubmVyVGV4dCArPSAiRmFpbCI7CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L25vbi1kYXRhLXRhYmxlLWNlbGwtdGl0bGUtdWktZWxlbWVudC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbm9uLWRhdGEtdGFibGUtY2VsbC10aXRsZS11
aS1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDk4OTY3KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9ub24tZGF0YS10YWJsZS1jZWxsLXRpdGxlLXVpLWVsZW1lbnQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsOSBAQAogICAgICAgICAgICAgLy8gZ2V0IHRoZSA8dGg+c2tpcDwv
dGg+IGVsZW1lbnQKICAgICAgICAgICAgIHZhciBncm91cCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCg1KTsKICAgICAgICAgICAgIHZhciB0aXRs
ZVVJID0gZ3JvdXAudGl0bGVVSUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHZhciBhbGxBdHRyaWJ1
dGVzID0gdGl0bGVVSS5hbGxBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICB2YXIgYWxsQXR0cmli
dXRlcyA9ICIiOworICAgICAgICAgICAgaWYgKHRpdGxlVUkpCisgICAgICAgICAgICAgICAgYWxs
QXR0cmlidXRlcyA9IHRpdGxlVUkuYWxsQXR0cmlidXRlcygpOwogCiAgICAgICAgICAgICAvLyB2
ZXJpZnkgaXQgaGFzIG5vIHRpdGxlIHVpIGVsZW1lbnQgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKCFhbGxBdHRyaWJ1dGVzKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODk3NSkKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDExLTEx
LTAxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
S2l0VGVzdFJ1bm5lciBuZWVkcyB0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHktcmVsYXRlZCBEUlQg
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIx
MzEKKworICAgICAgICBDbGVhbnVwIHRlc3RzIGFuZCBza2lwIGxpc3RzIHNvIHRoYXQgYWNjZXNz
aWJpbGl0eSB0ZXN0cyBjYW4gcnVuCisgICAgICAgIGluIFdLMi4gVGhpcyBtb3N0bHkgaW52b2x2
ZWQgaGFuZGxpbmcgcmV0dXJuZWQgZWxlbWVudHMgdGhhdCBtaWdodCBiZSBuaWwsCisgICAgICAg
IHNvbWV0aGluZyB0aGF0IGRpZCBub3QgaGFwcGVuIGluIERSVC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJpYS1sYWJl
bGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLmh0bWw6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9ub24tZGF0YS10YWJsZS1jZWxsLXRpdGxlLXVpLWVsZW1lbnQuaHRtbDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RoLWFzLXRpdGxlLXVpLmh0bWw6CisgICAgICAgICAgICAg
TWFrZSBzdXJlIGEgbmlsIHRpdGxlVUlFbGVtZW50IGlzIGFjY291bnRlZCBmb3IgaW4gdGhlc2Ug
dGVzdHMuCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50cy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9uLWVs
ZW1lbnRzLmh0bWw6CisgICAgICAgICAgICAgUmVtb3ZlIG5pbCBlbGVtZW50IGFjY2VzcyB0aGF0
IGlzIHVubmVjZXNzYXJ5LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Nl
YXJjaC1wcmVkaWNhdGUuaHRtbDoKKyAgICAgICAgICAgICBBZGQgYW4gYWx0IHRhZyB0byA8aW1n
PiBzbyB0aGF0IGl0IGFsd2F5cyBzaG93cyB1cCBpbiB0aGUgQVggdHJlZS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0Ym94LXJvbGUtcmVwb3J0cy1ub3RpZmljYXRp
b25zLmh0bWw6CisgICAgICAgICAgICAgUmVtb3ZlIHRoZSBub3RpZmljYXRpb24gbGlzdGVuZXIg
cHJvcGVybHkgKHdhcyBjYXVzaW5nIGZsYWtpbmVzcykuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1j
aGlsZHJlbi13aGVuLWFyaWEtcm9sZS1jaGFuZ2VzLmh0bWw6CisgICAgICAgICAgICAgQWNjb3Vu
dCBmb3Igd2hlbiBlbGVtZW50J3MgcmV0dXJuZWQgYXJlIG5pbC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4td2syL1NraXBwZWQ6CisgICAgICAgICAgICAgU2tpcCBhbGwgYWNjZXNzaWJpbGl0eSB0
ZXN0cyBvbiB3aW4uCisgICAgICAgICogcGxhdGZvcm0vd2syL1NraXBwZWQ6CisgICAgICAgICAg
ICAgU2tpcCBhbGwgYWNjZXNzaWJpbGl0eSB0ZXN0cyBvbiBndGsuCisKIDIwMTEtMTEtMDEgIExl
YW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0VGTF0g
VW5yZXZpZXdlZC4gQWRkIHNvbWUgcGl4ZWwgYmFzZWxpbmVzIGZvciB0ZXN0cyBpbiBmYXN0Ly4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113195</attachid>
            <date>2011-11-01 10:53:10 -0700</date>
            <delta_ts>2011-11-02 12:13:12 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>181330</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA5ODk3NykKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDcgQEAKIF9f
Wk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTEwcm9vdE9iamVjdEV2CiBfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUxOHJvb3RPYmplY3RGb3JGcmFtZUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3Jl
MTNBWE9iamVjdENhY2hlMjFnQWNjZXNzaWJpbGl0eUVuYWJsZWRFCitfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUyM2ZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlRVBLTlNfNFBhZ2VFCiBfX1pON1dl
YkNvcmUxM0FYT2JqZWN0Q2FjaGU0MmdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNl
RW5hYmxlZEUKIF9fWk43V2ViQ29yZTEzSFRUUEhlYWRlck1hcEMxRXYKIF9fWk43V2ViQ29yZTEz
SFRUUEhlYWRlck1hcEQxRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4OTc3KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTEtMTEtMDEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1yZWxhdGVk
IERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MjEzMQorCisgICAgICAgIE1pbm9yIGNoYW5nZXMgbmVlZGVkIHRvIHN1cHBvcnQgQVggdGVz
dGluZyBpbiBXS1Rlc3RSdW5uZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgICAgICBFeHBvc2UgZm9j
dXNlZFVJRWxlbWVudEZvclBhZ2Ugc28gdGhhdCB0aGUgV0syIGluamVjdGVkIGJ1bmRsZSBjYW4g
cmV0cmlldmUgaXQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKToKKyAgICAgICAgICAgIFJlbW92ZSBhbiB1bm5jZXNzYXJ5IGFzc2VydCB0aGF0IHdhcyBj
YXVzaW5nIGlzc3VlcyB3aXRoIHRoZSBXSzIgdGVzdCBydW4uCisKIDIwMTEtMTEtMDEgIE1pa2Ug
UmVlZCAgPHJlZWRAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbc2tpYV0gY2FsbCByZWFkUGl4ZWxz
IG9uIGNhbnZhcyBpbnN0ZWFkIG9mIGRldmljZSAod2lsbCBiZSBwcml2YXRlIG9uIGRldmljZSBz
b29uKSBhbmQgY2hlY2sgZm9yIGVycm9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlci5tbQkocmV2aXNpb24gOTg5NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAt
NDk1LDggKzQ5NSw2IEBACiAKIHN0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGFjY2Vzc2li
aWxpdHlTZWFyY2hLZXlGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBBU1NF
UlQoIXZhbHVlLmlzRW1wdHkoKSk7Ci0gICAgCiAgICAgc3RhdGljIGNvbnN0IEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXlNYXAqIHNlYXJjaEtleU1hcCA9IGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXlNYXAoKTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IHNlYXJjaEtleSA9IHNl
YXJjaEtleU1hcC0+Z2V0KHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlUHJpdmF0ZS5oCShyZXZpc2lvbiA5ODk3NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Nyw2ICs2Nyw5IEBACiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VDb25maXJt
Q29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5k
bGVQYWdlQ29uZmlybUNvbXBvc2l0aW9uV2l0aFRleHQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
U3RyaW5nUmVmIHRleHQpOwogCitXS19FWFBPUlQgdm9pZCogV0tBY2Nlc3NpYmlsaXR5Um9vdE9i
amVjdChXS0J1bmRsZVBhZ2VSZWYpOworV0tfRVhQT1JUIHZvaWQqIFdLQWNjZXNzaWJpbGl0eUZv
Y3VzZWRPYmplY3QoV0tCdW5kbGVQYWdlUmVmKTsgICAgCisKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiA5
ODk3NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsMTEgQEAKICNpbmNs
dWRlICJXZWJVUkwuaCIKICNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCiAKKyNpbmNsdWRlIDxX
ZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0FjY2Vzc2liaWxpdHlP
YmplY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9L
VVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKQEAgLTEyNiw2ICsxMzAsNDYgQEAKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VS
ZWYpLT5tYWluV2ViRnJhbWUoKSk7CiB9CiAKK3ZvaWQqIFdLQWNjZXNzaWJpbGl0eVJvb3RPYmpl
Y3QoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAgaWYgKCFwYWdlUmVmKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICAKKyAgICBXZWJDb3JlOjpQYWdlKiBwYWdlID0gdG9JbXBsKHBhZ2VS
ZWYpLT5jb3JlUGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
CisgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmUgPSBwYWdlLT5tYWluRnJhbWUoKTsKKyAgICBpZiAo
IWNvcmUgfHwgIWNvcmUtPmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAg
IFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKKworICAgIFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3QgPSBjb3JlLT5kb2N1bWVudCgpLT5heE9i
amVjdENhY2hlKCktPnJvb3RPYmplY3QoKTsKKyAgICBpZiAoIXJvb3QpCisgICAgICAgIHJldHVy
biAwOworICAgIAorICAgIHJldHVybiByb290LT53cmFwcGVyKCk7Cit9CisKK3ZvaWQqIFdLQWNj
ZXNzaWJpbGl0eUZvY3VzZWRPYmplY3QoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAg
aWYgKCFwYWdlUmVmKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBXZWJDb3JlOjpQYWdl
KiBwYWdlID0gdG9JbXBsKHBhZ2VSZWYpLT5jb3JlUGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplbmFibGVBY2Nl
c3NpYmlsaXR5KCk7CisKKyAgICBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2Vk
T2JqZWN0ID0gV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2Uo
cGFnZSk7CisgICAgaWYgKCFmb2N1c2VkT2JqZWN0KQorICAgICAgICByZXR1cm4gMDsKKyAgICAK
KyAgICByZXR1cm4gZm9jdXNlZE9iamVjdC0+d3JhcHBlcigpOworfQorCiB2b2lkIFdLQnVuZGxl
UGFnZVN0b3BMb2FkaW5nKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogewogICAgIHRvSW1wbChw
YWdlUmVmKS0+c3RvcExvYWRpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4OTc3KQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMTEtMDEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1y
ZWxhdGVkIERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjEzMQorCisgICAgICAgIEFsbG93IHRoZSBpbmplY3RlZCBidW5kbGUgdG8gcmV0
cmlldmUgdGhlIGZvY3VzZWQgYW5kIHJvb3QgYWNjZXNzaWJpbGl0eQorICAgICAgICBvYmplY3Rz
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAo
V0tBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdCk6CisgICAgICAgIChXS0FjY2Vzc2liaWxpdHlGb2N1
c2VkT2JqZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZVByaXZhdGUuaDoKKwogMjAxMS0xMS0wMSAgSm9jZWx5biBUdXJjb3R0ZSAgPGpv
Y2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gTWVyZ2UgY29tbW9uIGRl
c2t0b3AgYW5kIHRvdWNoIHZpZXcgQVBJcyB1bmRlciBhIGJhc2UgY2xhc3MuCkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODk3
NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzMSBAQAor
MjAxMS0xMS0wMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5LXJlbGF0
ZWQgRFJUIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQyMTMxCisKKyAgICAgICAgUG9ydCB0aGUgQVggY29kZSBpbiBEUlQgdG8gV0tUZXN0UnVu
bmVyIGJ5IHVzaW5nIElETC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjp+QWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bWFr
ZVdpbmRvd09iamVjdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjp3
cmFwcGVyQ2xhc3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9v
dEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNl
ZEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZWxlbWVu
dEF0UG9pbnQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpsb2dGb2N1c0V2ZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpsb2dWYWx1ZUNoYW5nZUV2ZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpsb2dTY3JvbGxpbmdTdGFydEV2ZW50cyk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFkZE5vdGlmaWNhdGlvbkxpc3Rl
bmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6Om5vdGlmaWNhdGlv
blJlY2VpdmVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlc2V0
VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6d3JhcHBlckNsYXNzKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmg6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6cGxh
dGZvcm1UZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6d3JhcHBlckNsYXNzKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaDog
QWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OnBsYXRm
b3JtVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVhbCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndyYXBw
ZXJDbGFzcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmFsaWQp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVhayk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxi
YXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9s
bGJhcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JF
bGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtl
clJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2Up
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyRm9yUG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwcmV2aW91c1RleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpuZXh0VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6IEFkZGVkLgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwbGF0Zm9ybVVJRWxlbWVudCk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5pZGw6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRsOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGU6OmJlZ2luVGVzdGluZyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZTo6YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDbGVhcldpbmRvd0ZvckZyYW1lKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmg6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvTGF5b3V0VGVzdENv
bnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1OYW1lKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbTogQWRkZWQuCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNF
cXVhbCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbTogQWRkZWQuCisgICAgICAgICgrW05TU3RyaW5nIHN0
cmluZ1dpdGhKU1N0cmluZ1JlZjpdKToKKyAgICAgICAgKC1bTlNTdHJpbmcgY3JlYXRlSlNTdHJp
bmdSZWZdKToKKyAgICAgICAgKC1bQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgaW5p
dFdpdGhQbGF0Zm9ybUVsZW1lbnQ6XSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIgX25vdGlmaWNhdGlvblJlY2VpdmVkOl0pOgorICAgICAgICAoLVtBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBzZXRDYWxsYmFjazpdKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToK
KyAgICAgICAgKFdUUjo6ZGVzY3JpcHRpb25PZlZhbHVlKToKKyAgICAgICAgKFdUUjo6YXR0cmli
dXRlc09mRWxlbWVudCk6CisgICAgICAgIChXVFI6OmNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFs
dWUpOgorICAgICAgICAoV1RSOjpjb252ZXJ0TlNBcnJheVRvVmVjdG9yKToKKyAgICAgICAgKFdU
Ujo6ZGVzY3JpcHRpb25PZkVsZW1lbnRzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldERvY3VtZW50TGlua3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y2hpbGRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291
bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0
SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxl
bWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1l
bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJv
dyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxp
bmtlZFVJRWxlbWVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU2V0dGFibGUpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVO
YW1lcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpsYW5ndWFnZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhl
bHBUZXh0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnkpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp3aWR0aCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmhlaWdodCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNsaWNrUG9pbnRYKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xp
Y2tQb2ludFkpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pblZhbHVlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWUpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXBwb3J0ZWQp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VuYWJsZWQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2VkKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc0NoZWNrZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNwZWFrKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXJpYUlzR3JhYmJlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFy
aWFEcm9wRWZmZWN0cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxp
bmVGb3JJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdl
Rm9yTGluZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0Zv
clJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9y
UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVk
U3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVh
ZGVycyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZkNvbHVtbnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZSb3dzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmli
dXRlc09mVmlzaWJsZUNlbGxzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mSGVhZGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cm93Q291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
b2x1bW5Db3VudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4
SW5UYWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0luZGV4
UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRl
eFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNv
bHVtbkFuZFJvdyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6
b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2
ZXJ0aWNhbFNjcm9sbGJhcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjppbmNyZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpkZWNyZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzaG93
TWVudSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1ZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2Rpbmcp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVu
ZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4pOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NvbGxhcHNlZCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGFrZUZvY3VzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGFrZVNlbGVjdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFkZFNlbGVjdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJlbW92ZVNlbGVjdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpl
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoV1RSOjpM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9JbmplY3RlZEJ1bmRsZS52Y3Byb2o6CisKIDIwMTEt
MTEtMDEgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAg
ICAgIFtRdF1bV0syXSBGaXggYnVpbGQgb2YgV2ViS2l0VGVzdFJ1bm5lciB3aXRoIEVMRiBzeW1i
b2wgdmlzaWJpbGl0eQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAJKHJl
dmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCIKKworI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorCitu
YW1lc3BhY2UgV1RSIHsKKyAgICAKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2VyIG1hcmtl
cikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG1h
cmtlcikpOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJiBt
YXJrZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cihtYXJrZXIpKTsKK30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlciBtYXJrZXIpCisgICAgOiBtX3RleHRNYXJrZXIo
bWFya2VyKQoreworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXImIG1hcmtlcikKKyAgICA6IG1f
dGV4dE1hcmtlcihtYXJrZXIucGxhdGZvcm1UZXh0TWFya2VyKCkpCit7Cit9CisKK0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKQoreworfQorCitKU0Ns
YXNzUmVmIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp3cmFwcGVyQ2xhc3MoKQoreworICAgIHJl
dHVybiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjphY2Nlc3NpYmlsaXR5VGV4dE1hcmtlckNs
YXNzKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmgiCisjaW5jbHVkZSAiSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV1RSIHsKKworUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVh
dGUoUGxhdGZvcm1VSUVsZW1lbnQgdWlFbGVtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCh1aUVsZW1lbnQpKTsKK30KKyAgICAKK1Bhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIHVpRWxlbWVudCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQodWlFbGVtZW50KSk7Cit9CisKK0pT
Q2xhc3NSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d3JhcHBlckNsYXNzKCkKK3sKKyAgICBy
ZXR1cm4gSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2xh
c3MoKTsKK30KKyAgICAKKy8vIEltcGxlbWVudGF0aW9uCisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNWYWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZWxlbWVudDsgICAgICAg
ICAgICAKK30KKyAgICAKKy8vIFVuc3VwcG9ydGVkIG1ldGhvZHMgb24gdmFyaW91cyBwbGF0Zm9y
bXMuCisjaWYgIVBMQVRGT1JNKE1BQykKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzcGVhaygpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUoaW50IGxpbmUpIHsg
cmV0dXJuIDA7IH0KK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGls
ZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KikgY29uc3QgeyB9Cit1bnNpZ25lZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25zdCB7IHJldHVybiAwOyB9
CitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVk
Q2hpbGRBdEluZGV4KHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIoKSBj
b25zdCB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorI2VuZGlm
CisKKyNpZiAhUExBVEZPUk0oV0lOKQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Vx
dWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkKK3sKKyAgICByZXR1cm4g
cGxhdGZvcm1VSUVsZW1lbnQoKSA9PSBvdGhlckVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCk7
Cit9CisjZW5kaWYKKworI2lmICFTVVBQT1JUU19BWF9URVhUTUFSS0VSUworQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VG
b3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKSB7IHJldHVybiAwOyB9CitpbnQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJu
IDA7IH0KK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKikgeyByZXR1cm4gMDsgfQorQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4gMDsgfQorQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgs
IGludCB5KSB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KSB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJu
IDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopIHsg
cmV0dXJuIDA7IH0KKyNlbmRpZgorICAgIAorfSAvLyBuYW1lc3BhY2UgV1RSCisKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCisjZGVmaW5l
IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyX2gKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaWYgUExBVEZP
Uk0oV0lOKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RSIHsK
KyAgICAKK2NsYXNzIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyIDogcHVibGljIEpTV3JhcHBhYmxl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cj4gY3JlYXRlKCk7CisgICAgfkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7CisKKyAgICB2b2lk
IG1ha2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiB3aW5kb3dPYmplY3Qs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgdmlydHVhbCBKU0NsYXNzUmVmIHdyYXBwZXJD
bGFzcygpOworICAgIAorICAgIC8vIENvbnRyb2xsZXIgTWV0aG9kcyAtIHBsYXRmb3JtLWluZGVw
ZW5kZW50IGltcGxlbWVudGF0aW9ucworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gcm9vdEVsZW1lbnQoKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IGZvY3VzZWRFbGVtZW50KCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBlbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpOworCisgICAgLy8gSGVyZSBmb3IgY29u
c2lzdGVuY3kgd2l0aCBEUlQuIE5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIHRoZXkgZG9uJ3QgZG8g
YW55dGhpbmcgb24gdGhlIE1hYy4KKyAgICB2b2lkIGxvZ0ZvY3VzRXZlbnRzKCkgeyB9CisgICAg
dm9pZCBsb2dWYWx1ZUNoYW5nZUV2ZW50cygpIHsgfQorICAgIHZvaWQgbG9nU2Nyb2xsaW5nU3Rh
cnRFdmVudHMoKSB7IH0KKyAgICB2b2lkIGxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKSB7IH0KKyAg
ICB2b2lkIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBK
U1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spIHsgfQorICAgIHZvaWQgbm90aWZpY2F0aW9uUmVj
ZWl2ZWQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIEpTU3RyaW5nUmVmIGV2ZW50TmFtZSkgeyB9
CisgICAgCisgICAgdm9pZCByZXNldFRvQ29uc2lzdGVudFN0YXRlKCkgeyB9CisKK3ByaXZhdGU6
CisgICAgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdU
UgorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJfaApJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCShyZXZpc2lvbiA5ODk3NykKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDEyIEBACiAgICAgcmV0dXJuIEpTU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0NoYXIqPihwYXRo
LmNvbnN0RGF0YSgpKSwgcGF0aC5sZW5ndGgoKSk7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygicXQiKSk7CisgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RSCiAKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlclF0Lm1vYyIKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcl9oCisj
ZGVmaW5lIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyX2gKKworI2luY2x1ZGUgIkpTV3JhcHBhYmxl
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgU1VQUE9SVFNfQVhf
VEVYVE1BUktFUlMgMQorI2Vsc2UKKyNkZWZpbmUgU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgMAor
I2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
dHlwZWRlZiBDRlR5cGVSZWYgUGxhdGZvcm1UZXh0TWFya2VyOworI2Vsc2UKK3R5cGVkZWYgdm9p
ZCogUGxhdGZvcm1UZXh0TWFya2VyOworI2VuZGlmCisKK25hbWVzcGFjZSBXVFIgeworCitjbGFz
cyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OworCitjbGFzcyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGNyZWF0ZShQbGF0Zm9ybVRleHRNYXJrZXIpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBjcmVhdGUoY29uc3Qg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXImKTsKKworICAgIH5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cigpOworICAgIAorICAgIFBsYXRmb3JtVGV4dE1hcmtlciBwbGF0Zm9ybVRleHRNYXJrZXIoKSBj
b25zdCB7IHJldHVybiBtX3RleHRNYXJrZXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIEpTQ2xhc3NS
ZWYgd3JhcHBlckNsYXNzKCk7CisKKyAgICBzdGF0aWMgSlNPYmplY3RSZWYgbWFrZUpTQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIoSlNDb250ZXh0UmVmLCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciYpOworICAgIGJvb2wgaXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAg
IAorcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJr
ZXIpOworICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyJik7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPFBsYXRmb3JtVGV4
dE1hcmtlcj4gbV90ZXh0TWFya2VyOworI2Vsc2UKKyAgICBQbGF0Zm9ybVRleHRNYXJrZXIgbV90
ZXh0TWFya2VyOworI2VuZGlmCit9OworCisjaWYgIVNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTCitp
bmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKFBs
YXRmb3JtVGV4dE1hcmtlcikgeyB9CitpbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJikgeyB9
CitpbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cigpIHsgfQoraW5saW5lIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1YWwoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIFBsYXRmb3Jt
VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6cGxhdGZvcm1UZXh0TWFya2VyKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0TWFya2VyOyB9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2Ug
V1RSCisgICAgCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJfaApJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkocmV2aXNpb24gOTg5NzcpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDQgKzY1LDEwIEBACiAgICAgcmV0
dXJuIHVybDsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybU5hbWUoKQoreworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0
Zm9ybU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJndGsiKSk7Cisg
ICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRfaAorI2RlZmluZSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50X2gKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oIgorI2luY2x1
ZGUgIkpTV3JhcHBhYmxlLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJl
Zi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgUExBVEZPUk0o
TUFDKQorI2lmZGVmIF9fT0JKQ19fCit0eXBlZGVmIGlkIFBsYXRmb3JtVUlFbGVtZW50OworI2Vs
c2UKK3R5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBQbGF0Zm9ybVVJRWxlbWVudDsKKyNlbmRp
ZgorI2VsaWYgUExBVEZPUk0oV0lOKQorI3VuZGVmIF9XSU5TT0NLQVBJXworI2RlZmluZSBfV0lO
U09DS0FQSV8gLy8gUHJldmVudCBpbmNsdXNpb24gb2Ygd2luc29jay5oIGluIHdpbmRvd3MuaAor
CisjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KKyNpbmNsdWRlIDxvbGVhY2MuaD4KKwordHlw
ZWRlZiBDT01QdHI8SUFjY2Vzc2libGU+IFBsYXRmb3JtVUlFbGVtZW50OworI2VsaWYgUExBVEZP
Uk0oR1RLKQorI2luY2x1ZGUgPGF0ay9hdGsuaD4KK3R5cGVkZWYgQXRrT2JqZWN0KiBQbGF0Zm9y
bVVJRWxlbWVudDsKKyNlbHNlCit0eXBlZGVmIHZvaWQqIFBsYXRmb3JtVUlFbGVtZW50OworI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShNQUMpCisjaWZkZWYgX19PQkpDX18KK3R5cGVkZWYgaWQgTm90
aWZpY2F0aW9uSGFuZGxlcjsKKyNlbHNlCit0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCogTm90
aWZpY2F0aW9uSGFuZGxlcjsKKyNlbmRpZgorI2VuZGlmCisKK25hbWVzcGFjZSBXVFIgeworCitj
bGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IDogcHVibGljIEpTV3JhcHBhYmxlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjcmVhdGUo
UGxhdGZvcm1VSUVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Jik7CisKKyAgICB+
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpOworCisgICAgUGxhdGZvcm1VSUVsZW1lbnQgcGxhdGZv
cm1VSUVsZW1lbnQoKSB7IHJldHVybiBtX2VsZW1lbnQ7IH0KKyAgICB2aXJ0dWFsIEpTQ2xhc3NS
ZWYgd3JhcHBlckNsYXNzKCk7CisKKyAgICBzdGF0aWMgSlNPYmplY3RSZWYgbWFrZUpTQWNjZXNz
aWJpbGl0eVVJRWxlbWVudChKU0NvbnRleHRSZWYsIGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQmKTsKKworICAgIGJvb2wgaXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBvdGhlckVs
ZW1lbnQpOworICAgIAorICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxl
bWVudEF0UG9pbnQoaW50IHgsIGludCB5KTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IGNoaWxkQXRJbmRleCh1bnNpZ25lZCk7CisgICAgdW5zaWduZWQgaW5kZXhPZkNo
aWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKTsKKyAgICBpbnQgY2hpbGRyZW5Db3VudCgpOwor
ICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdGl0bGVVSUVsZW1lbnQoKTsK
KyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHBhcmVudEVsZW1lbnQoKTsK
KworICAgIHZvaWQgdGFrZUZvY3VzKCk7CisgICAgdm9pZCB0YWtlU2VsZWN0aW9uKCk7CisgICAg
dm9pZCBhZGRTZWxlY3Rpb24oKTsKKyAgICB2b2lkIHJlbW92ZVNlbGVjdGlvbigpOworCisgICAg
Ly8gTWV0aG9kcyAtIHBsYXRmb3JtLWluZGVwZW5kZW50IGltcGxlbWVudGF0aW9ucworICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhbGxBdHRyaWJ1dGVzKCk7CisgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMoKTsKKyAgICBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWdu
ZWQpOworICAgIAorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZEb2N1
bWVudExpbmtzKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkNo
aWxkcmVuKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBhcmFtZXRlcml6ZWRBdHRy
aWJ1dGVOYW1lcygpOworICAgIHZvaWQgaW5jcmVtZW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnQo
KTsKKyAgICB2b2lkIHNob3dNZW51KCk7CisgICAgdm9pZCBwcmVzcygpOworCisgICAgLy8gQXR0
cmlidXRlcyAtIHBsYXRmb3JtLWluZGVwZW5kZW50IGltcGxlbWVudGF0aW9ucworICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpOworICAgIGRvdWJsZSBudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpOworICAgIGJvb2wgYm9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0
ZSk7CisgICAgYm9vbCBpc0F0dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
OworICAgIGJvb2wgaXNBdHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwor
ICAgIGJvb2wgaXNBY3Rpb25TdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYWN0aW9uKTsKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcm9sZSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBzdWJyb2xlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJvbGVEZXNjcmlwdGlv
bigpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB0aXRsZSgpOworICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBkZXNjcmlwdGlvbigpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBsYW5ndWFnZSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdWYWx1
ZSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhY2Nlc3NpYmlsaXR5VmFsdWUoKSBj
b25zdDsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gaGVscFRleHQoKSBjb25zdDsKKyAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gb3JpZW50YXRpb24oKSBjb25zdDsKKyAgICBkb3Vi
bGUgeCgpOworICAgIGRvdWJsZSB5KCk7CisgICAgZG91YmxlIHdpZHRoKCk7CisgICAgZG91Ymxl
IGhlaWdodCgpOworICAgIGRvdWJsZSBpbnRWYWx1ZSgpIGNvbnN0OworICAgIGRvdWJsZSBtaW5W
YWx1ZSgpOworICAgIGRvdWJsZSBtYXhWYWx1ZSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiB2YWx1ZURlc2NyaXB0aW9uKCk7CisgICAgaW50IGluc2VydGlvblBvaW50TGluZU51bWJl
cigpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzZWxlY3RlZFRleHRSYW5nZSgpOwor
ICAgIGJvb2wgaXNFbmFibGVkKCk7CisgICAgYm9vbCBpc1JlcXVpcmVkKCkgY29uc3Q7CisgICAg
CisgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdDsKKyAgICBib29sIGlzRm9jdXNhYmxlKCkgY29u
c3Q7CisgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7CisgICAgYm9vbCBpc1NlbGVjdGFibGUo
KSBjb25zdDsKKyAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKSBjb25zdDsKKyAgICB1bnNp
Z25lZCBzZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IHNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkKSBjb25zdDsK
KyAgICAKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKKyAgICBib29sIGlzRXhwYW5kZWQoKSBj
b25zdDsKKyAgICBib29sIGlzQ2hlY2tlZCgpIGNvbnN0OworICAgIGJvb2wgaXNWaXNpYmxlKCkg
Y29uc3Q7CisgICAgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0OworICAgIGJvb2wgaXNDb2xsYXBz
ZWQoKSBjb25zdDsKKyAgICBib29sIGlzSWdub3JlZCgpIGNvbnN0OworICAgIGJvb2wgaGFzUG9w
dXAoKSBjb25zdDsKKyAgICBpbnQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdDsKKyAgICBkb3Vi
bGUgY2xpY2tQb2ludFgoKTsKKyAgICBkb3VibGUgY2xpY2tQb2ludFkoKTsKKyAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gZG9jdW1lbnRFbmNvZGluZygpOworICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBkb2N1bWVudFVSSSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB1
cmwoKTsKKworICAgIC8vIENTUzMtc3BlZWNoIHByb3BlcnRpZXMuCisgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IHNwZWFrKCk7CisgICAgCisgICAgLy8gVGFibGUtc3BlY2lmaWMgYXR0cmli
dXRlcworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZDb2x1bW5IZWFk
ZXJzKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZlJvd0hlYWRl
cnMoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mQ29sdW1ucygp
OworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZSb3dzKCk7CisgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZlZpc2libGVDZWxscygpOworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZIZWFkZXIoKTsKKyAgICBpbnQg
aW5kZXhJblRhYmxlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJvd0luZGV4UmFu
Z2UoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY29sdW1uSW5kZXhSYW5nZSgpOwor
ICAgIGludCByb3dDb3VudCgpOworICAgIGludCBjb2x1bW5Db3VudCgpOworICAgIAorICAgIC8v
IFRyZWUvT3V0bGluZSBzcGVjaWZpYyBhdHRyaWJ1dGVzCisgICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBzZWxlY3RlZFJvd0F0SW5kZXgodW5zaWduZWQpOworICAgIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZGlzY2xvc2VkQnlSb3coKTsKKyAgICBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWdu
ZWQpOworCisgICAgLy8gQVJJQSBzcGVjaWZpYworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gYXJpYU93bnNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CisgICAgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgodW5z
aWduZWQpOworCisgICAgLy8gQVJJQSBEcmFnIGFuZCBEcm9wCisgICAgYm9vbCBhcmlhSXNHcmFi
YmVkKCkgY29uc3Q7CisgICAgLy8gQSBzcGFjZSBjb25jYXRlbnRhdGVkIHN0cmluZyBvZiBhbGwg
dGhlIGRyb3AgZWZmZWN0cy4KKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXJpYURyb3BF
ZmZlY3RzKCkgY29uc3Q7CisgICAgCisgICAgLy8gUGFyYW1ldGVyaXplZCBhdHRyaWJ1dGVzCisg
ICAgaW50IGxpbmVGb3JJbmRleChpbnQpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBy
YW5nZUZvckxpbmUoaW50KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYm91bmRzRm9y
UmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgdm9pZCBzZXRT
ZWxlY3RlZFRleHRSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRp
b24sIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJp
YnV0ZWRTdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsK
KyAgICBib29sIGF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25lZCBsb2Nh
dGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IHVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1N0cmluZ1JlZiBzZWFyY2hL
ZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQpOworICAgIAorICAgIC8vIFRhYmxlLXNwZWNpZmlj
CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjZWxsRm9yQ29sdW1uQW5k
Um93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KTsKKworICAgIC8vIFNjcm9sbGFyZWEt
c3BlY2lmaWMKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGhvcml6b250
YWxTY3JvbGxiYXIoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Q7CisKKyAgICAvLyBUZXh0IG1hcmtlcnMuCisg
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFu
Z2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKTsgICAgCisgICAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIGVuZE1hcmtlcik7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBlbmRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uq
KTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiB0ZXh0TWFya2VyRm9y
UG9pbnQoaW50IHgsIGludCB5KTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBuZXh0VGV4dE1hcmtlcihBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciopOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKik7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CisgICAgaW50IHRleHRNYXJrZXJS
YW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CisgICAgCisgICAgLy8g
Tm90aWZpY2F0aW9ucworICAgIC8vIEZ1bmN0aW9uIGNhbGxiYWNrIHNob3VsZCB0YWtlIG9uZSBh
cmd1bWVudCwgdGhlIG5hbWUgb2YgdGhlIG5vdGlmaWNhdGlvbi4KKyAgICBib29sIGFkZE5vdGlm
aWNhdGlvbkxpc3RlbmVyKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjayk7CisgICAgLy8gTWFr
ZSBzdXJlIHlvdSBjYWxsIHJlbW92ZSwgYmVjYXVzZSB5b3UgY2FuJ3QgcmVseSBvbiBvYmplY3Rz
IGJlaW5nIGRlYWxsb2NhdGVkIGluIGEgdGltZWx5IGZhc2hpb24uCisgICAgYm9vbCByZW1vdmVO
b3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgIAorcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50KTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsKKworICAgIHZvaWQgZ2V0TGlua2VkVUlF
bGVtZW50cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKKyAgICB2
b2lkIGdldERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiA+Jik7CisgICAgdm9pZCBnZXRDaGlsZHJlbihWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+ID4mKTsKKyAgICB2b2lkIGdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25l
ZCBsZW5ndGgpOworCisgICAgUGxhdGZvcm1VSUVsZW1lbnQgbV9lbGVtZW50OworICAgIAorICAg
IC8vIEEgcmV0YWluZWQsIHBsYXRmb3JtIHNwZWNpZmljIG9iamVjdCB1c2VkIHRvIGhlbHAgbWFu
YWdlIG5vdGlmaWNhdGlvbnMgZm9yIHRoaXMgb2JqZWN0LgorI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBOb3RpZmljYXRpb25IYW5kbGVyIG1fbm90aWZpY2F0aW9uSGFuZGxlcjsKKyNlbmRpZgorfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RSCisgICAgCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudF9oCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAJ
KHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oIgorCisj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZS5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRh
aW5QdHIuaD4KKworbmFtZXNwYWNlIFdUUiB7CisgICAgCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZShQ
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBtYXJrZXJSYW5nZSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpKTsKK30KKwor
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlOjpjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSYg
bWFya2VyUmFuZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSk7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoUGxhdGZvcm1UZXh0TWFya2VyUmFu
Z2UgbWFya2VyUmFuZ2UpCisgICAgOiBtX3RleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkKK3sK
K30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJiBtYXJrZXJSYW5nZSkK
KyAgICA6IG1fdGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlLnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCkpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKCkKK3sKK30KKworSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlOjp3cmFwcGVyQ2xhc3MoKQoreworICAgIHJldHVybiBKU0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U6OmFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VDbGFzcygpOwor
fQorICAgIAorfSAvLyBuYW1lc3BhY2UgV1RSCisKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5j
cHAJKHJldmlzaW9uIDk4OTc3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDksNiArNjQ5
LDggQEAKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuZ2NDb250cm9sbGVyKCktPm1ha2VX
aW5kb3dPYmplY3QoY29udGV4dCwgd2luZG93LCAmZXhjZXB0aW9uKTsKICAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuZXZlbnRTZW5kaW5nQ29udHJvbGxlcigpLT5tYWtlV2luZG93T2JqZWN0
KGNvbnRleHQsIHdpbmRvdywgJmV4Y2VwdGlvbik7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLnRleHRJbnB1dENvbnRyb2xsZXIoKS0+bWFrZVdpbmRvd09iamVjdChjb250ZXh0LCB3aW5k
b3csICZleGNlcHRpb24pOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcigpLT5tYWtlV2luZG93T2JqZWN0KGNvbnRleHQsIHdpbmRvdywgJmV4Y2Vw
dGlvbik7CisKICNpZiBQTEFURk9STShRVCkKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
aW5qZWN0SW50ZXJuYWxzT2JqZWN0KGNvbnRleHQpOwogI2Vsc2UKSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiAwKQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCittb2R1bGUgV1RSIHsKKworICAgIGludGVyZmFjZSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ciB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHJv
b3RFbGVtZW50OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCBmb2N1c2VkRWxlbWVudDsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVt
ZW50QXRQb2ludChpbiBpbnQgeCwgaW4gaW50IHkpOworICAgICAgICAKKyAgICAgICAgdm9pZCBh
ZGROb3RpZmljYXRpb25MaXN0ZW5lcihpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVsZW1lbnQs
IGluIG9iamVjdCBmdW5jdGlvbkNhbGxiYWNrKTsKKyAgICAgICAgdm9pZCBub3RpZmljYXRpb25S
ZWNlaXZlZChpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVsZW1lbnQsIGluIERPTVN0cmluZyBl
dmVudE5hbWUpOworCisgICAgICAgIHZvaWQgbG9nRm9jdXNFdmVudHMoKTsKKyAgICAgICAgdm9p
ZCBsb2dWYWx1ZUNoYW5nZUV2ZW50cygpOworICAgICAgICB2b2lkIGxvZ1Njcm9sbGluZ1N0YXJ0
RXZlbnRzKCk7CisgICAgICAgIHZvaWQgbG9nQWNjZXNzaWJpbGl0eUV2ZW50cygpOworICAgICAg
ICB2b2lkIHJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKyAgICB9OworCit9CkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGwJ
KHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRsCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIFdUUiB7CisKKyAgICBpbnRlcmZhY2Ug
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB7CisgICAgICAgIGJvb2xlYW4gaXNFcXVhbChp
biBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIG90aGVyTWFya2VyUmFuZ2UpOworICAgIH07
CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbAkocmV2aXNpb24gMCkKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
bW9kdWxlIFdUUiB7CisKKyAgICBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgewor
ICAgICAgICBib29sZWFuIGlzRXF1YWwoaW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgb3RoZXJN
YXJrZXIpOworICAgIH07CisKK30KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIFdUUiB7CisK
KyAgICBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB7CisgICAgICAgIGJvb2xlYW4g
aXNFcXVhbChpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IG90aGVyRWxlbWVudCk7CisKKyAgICAg
ICAgLy8gRWxlbWVudCBhY2Nlc3MuCisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxl
bWVudEF0UG9pbnQoaW4gaW50IHgsIGluIGludCB5KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCBjaGlsZEF0SW5kZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIHVu
c2lnbmVkIGxvbmcgaW5kZXhPZkNoaWxkKGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgY2hpbGQp
OworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGxpbmtlZFVJRWxlbWVudEF0SW5kZXgo
aW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
c2VsZWN0ZWRDaGlsZEF0SW5kZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIHZv
aWQgc2V0U2VsZWN0ZWRDaGlsZChpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVsZW1lbnQpOwor
ICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHRpdGxlVUlFbGVtZW50KCk7CisgICAgICAg
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgcGFyZW50RWxlbWVudCgpOworICAgICAgICAKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyByb2xlOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHN1YnJvbGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgcm9sZURlc2NyaXB0aW9uOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHRpdGxlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2Ny
aXB0aW9uOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhbmd1YWdlOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhlbHBUZXh0OworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlRGVzY3JpcHRpb247CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJsOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHNwZWFrOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IG9yaWVudGF0aW9uOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IGluc2VydGlvblBv
aW50TGluZU51bWJlcjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzZWxl
Y3RlZFRleHRSYW5nZTsKKyAgICAKKyAgICAgICAgRE9NU3RyaW5nIHN0cmluZ0F0dHJpYnV0ZVZh
bHVlKGluIERPTVN0cmluZyBhdHRyKTsKKyAgICAgICAgZG91YmxlIG51bWJlckF0dHJpYnV0ZVZh
bHVlKGluIERPTVN0cmluZyBhdHRyKTsKKyAgICAgICAgYm9vbGVhbiBib29sQXR0cmlidXRlVmFs
dWUoaW4gRE9NU3RyaW5nIGF0dHIpOworICAgICAgICBib29sZWFuIGlzQXR0cmlidXRlU3VwcG9y
dGVkKGluIERPTVN0cmluZyBhdHRyKTsKKyAgICAgICAgYm9vbGVhbiBpc0F0dHJpYnV0ZVNldHRh
YmxlKGluIERPTVN0cmluZyBhdHRyKTsKKyAgICAgICAgYm9vbGVhbiBpc0FjdGlvblN1cHBvcnRl
ZChpbiBET01TdHJpbmcgYXR0cik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBzdHJpbmdWYWx1ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBpbnRWYWx1
ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBtaW5WYWx1ZTsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGludCBtYXhWYWx1ZTsKKyAgICAgICAgCisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuIGlzRW5hYmxlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gaXNSZXF1aXJlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
aXNGb2N1c2VkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1NlbGVjdGVk
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc011bHRpU2VsZWN0YWJsZTsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNFeHBhbmRlZDsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNDaGVja2VkOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiBpc1Zpc2libGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIGlzQ29sbGFwc2VkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBo
YXNQb3B1cDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNJZ25vcmVkOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc09mZlNjcmVlbjsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNWYWxpZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGludCBoaWVyYXJjaGljYWxMZXZlbDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gYXJpYUlzR3JhYmJlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBhcmlhRHJvcEVmZmVjdHM7CisgICAgICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgaW50IHg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgeTsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGludCB3aWR0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGlu
dCBoZWlnaHQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgY2xpY2tQb2ludFg7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgY2xpY2tQb2ludFk7CisKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGludCBjaGlsZHJlbkNvdW50OworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgaW50IHNlbGVjdGVkQ2hpbGRyZW5Db3VudDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGludCByb3dDb3VudDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBjb2x1bW5D
b3VudDsKKworICAgICAgICAvLyBBY3Rpb25zLgorICAgICAgICB2b2lkIGluY3JlbWVudCgpOwor
ICAgICAgICB2b2lkIGRlY3JlbWVudCgpOworICAgICAgICB2b2lkIHByZXNzKCk7CisgICAgICAg
IHZvaWQgc2hvd01lbnUoKTsKKworICAgICAgICAvLyBBdHRyaWJ1dGUgaW5mby4KKyAgICAgICAg
RE9NU3RyaW5nIGFsbEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNP
ZkNoaWxkcmVuKCk7CisgICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1l
bnRzKCk7CisgICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKCk7Cisg
ICAgICAgIAorICAgICAgICAvLyBUYWJsZSBpbmZvLgorICAgICAgICBET01TdHJpbmcgYXR0cmli
dXRlc09mQ29sdW1uSGVhZGVycygpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mUm93
SGVhZGVycygpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mQ29sdW1ucygpOworICAg
ICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mUm93cygpOworICAgICAgICBET01TdHJpbmcgYXR0
cmlidXRlc09mVmlzaWJsZUNlbGxzKCk7CisgICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVzT2ZI
ZWFkZXIoKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBjZWxsRm9yQ29sdW1uQW5k
Um93KGluIHVuc2lnbmVkIGxvbmcgY29sdW1uLCBpbiB1bnNpZ25lZCBsb25nIHJvdyk7CisgICAg
ICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgc2VsZWN0ZWRSb3dBdEluZGV4KGluIHVuc2lnbmVk
IGxvbmcgaW5kZXgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGRpc2Nsb3NlZEJ5
Um93KCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZGlzY2xvc2VkUm93QXRJbmRl
eChpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICAgICAgaW50IGluZGV4SW5UYWJsZSgpOwor
ICAgICAgICBET01TdHJpbmcgcm93SW5kZXhSYW5nZSgpOworICAgICAgICBET01TdHJpbmcgY29s
dW1uSW5kZXhSYW5nZSgpOworICAgICAgICBpbnQgcm93Q291bnQoKTsKKyAgICAgICAgaW50IGNv
bHVtbkNvdW50KCk7CisgICAgCisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgYXJpYU93
bnNFbGVtZW50QXRJbmRleChpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICAgICAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBhcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgoaW4gdW5zaWduZWQgbG9u
ZyBpbmRleCk7CisKKyAgICAgICAgLy8gUGFyYW1hdGVyaXplZCBhdHRyaWJ1dGVzLgorICAgICAg
ICBET01TdHJpbmcgcGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCk7CisgICAgICAgIGludCBs
aW5lRm9ySW5kZXgoaW4gaW50IGluZGV4KTsKKyAgICAgICAgRE9NU3RyaW5nIHJhbmdlRm9yTGlu
ZShpbiBpbnQgaW5kZXgpOworICAgICAgICBET01TdHJpbmcgYm91bmRzRm9yUmFuZ2UoaW4gdW5z
aWduZWQgbG9uZyBsb2NhdGlvbiwgaW4gdW5zaWduZWQgbG9uZyBsZW5ndGgpOworICAgICAgICBE
T01TdHJpbmcgc3RyaW5nRm9yUmFuZ2UoaW4gdW5zaWduZWQgbG9uZyBsb2NhdGlvbiwgaW4gdW5z
aWduZWQgbG9uZyBsZW5ndGgpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlZFN0cmluZ0Zv
clJhbmdlKGluIHVuc2lnbmVkIGxvbmcgbG9jYXRpb24sIGluIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
KTsKKyAgICAgICAgYm9vbGVhbiBhdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQoaW4g
dW5zaWduZWQgbG9uZyBsb2NhdGlvbiwgaW4gdW5zaWduZWQgbG9uZyBsZW5ndGgpOworICAgICAg
ICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShpbiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IHN0YXJ0RWxlbWVudCwgaW4gYm9vbGVhbiBpc0RpcmVjdGlv
bk5leHQsIGluIERPTVN0cmluZyBzZWFyY2hLZXksIGluIERPTVN0cmluZyBzZWFyY2hUZXh0KTsK
KyAgICAgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShpbiB1bnNpZ25lZCBsb25nIGxvY2F0
aW9uLCBpbiB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CisKKyAgICAgICAgLy8gU2Nyb2xsIGFyZWEg
YXR0cmlidXRlcy4KKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQgaG9yaXpvbnRhbFNjcm9sbGJhcjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQgdmVydGljYWxTY3JvbGxiYXI7CisKKyAgICAgICAgLy8gVGV4
dCBtYXJrZXJzLgorICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHRleHRNYXJr
ZXJSYW5nZUZvckVsZW1lbnQoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50KTsgICAg
CisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgdGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhpbiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBzdGFydE1hcmtlciwgaW4gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIgZW5kTWFya2VyKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIgc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKGluIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UgcmFuZ2UpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBl
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UgcmFuZ2UpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB0ZXh0TWFya2Vy
Rm9yUG9pbnQoaW4gaW50IHgsIGluIGludCB5KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIgcHJldmlvdXNUZXh0TWFya2VyKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIG1hcmtl
cik7CisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIG5leHRUZXh0TWFya2VyKGluIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyIG1hcmtlcik7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQgYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGluIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyIG1hcmtlcik7CisgICAgICAgIERPTVN0cmluZyBzdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UoaW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSByYW5nZSk7CisgICAgICAgIGlu
dCB0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoaW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBy
YW5nZSk7CisKKyAgICAgICAgLy8gTm90aWZpY2F0aW9uIHN1cHBvcnQuCisgICAgICAgIGJvb2xl
YW4gYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoaW4gb2JqZWN0IGNhbGxiYWNrRnVuY3Rpb24pOwor
ICAgICAgICBib29sZWFuIHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIAor
ICAgIH07CisKK30KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaWRsCShyZXZpc2lvbiA5ODk3NykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzEsNiArMTMxLDggQEAKICAgICAgICAgdm9pZCBzZXRCYWNraW5nU2NhbGVGYWN0b3Io
aW4gZG91YmxlIGJhY2tpbmdTY2FsZUZhY3RvciwgaW4gb2JqZWN0IGNhbGxiYWNrKTsKIAogICAg
ICAgICB2b2lkIHNldFdpbmRvd0lzS2V5KGluIGJvb2xlYW4gaXNLZXkpOworICAgICAgICAKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwbGF0Zm9ybU5hbWU7CiAgICAgfTsK
IAogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2
aXNpb24gOTg5NzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDQgKzY0
LDEwIEBACiAgICAgcmV0dXJuIEpTU3RyaW5nUmV0YWluKHVybCk7IC8vIFRPRE8uCiB9CiAKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1l
KCkKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKEFkb3B0LCBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygid2luIikpOworICAgIHJldHVybiBwbGF0Zm9y
bU5hbWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJl
dmlzaW9uIDk4OTc3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw2ICsxOTIsNyBAQAogICAg
IG1fZ2NDb250cm9sbGVyID0gR0NDb250cm9sbGVyOjpjcmVhdGUoKTsKICAgICBtX2V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIgPSBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjcmVhdGUoKTsKICAgICBt
X3RleHRJbnB1dENvbnRyb2xsZXIgPSBUZXh0SW5wdXRDb250cm9sbGVyOjpjcmVhdGUoKTsKKyAg
ICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNy
ZWF0ZSgpOwogCiAgICAgV0tCdW5kbGVTZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhtX2J1bmRs
ZSwgZmFsc2UpOwogICAgIFdLQnVuZGxlUmVtb3ZlQWxsVmlzaXRlZExpbmtzKG1fYnVuZGxlKTsK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1h
Yy5tbQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0JKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oIgorCituYW1lc3Bh
Y2UgV1RSIHsKKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVh
bChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBvdGhlcikKK3sKKyAgICByZXR1cm4gWyhp
ZClwbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGlzRXF1YWw6KGlkKW90aGVyLT5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpXTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdUUgorCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbQkocmV2aXNpb24gMCkK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyTWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIkFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyLmgiCisKK25hbWVzcGFjZSBXVFIgeworCitib29sIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBvdGhlcikKK3sK
KyAgICByZXR1cm4gWyhpZClwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFsOihpZClvdGhlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKKwpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiAwKQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDMyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgorI2ltcG9ydCAiSW5qZWN0ZWRC
dW5kbGUuaCIKKyNpbXBvcnQgIkluamVjdGVkQnVuZGxlUGFnZS5oIgorCisjaW1wb3J0IDxBcHBL
aXQvTlNBY2Nlc3NpYmlsaXR5Lmg+CisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
KyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdS
ZWZDRi5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS0J1bmRsZUZyYW1lLmg+CisjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKKworI2lmbmRlZiBOU0FjY2Vz
c2liaWxpdHlPd25zQXR0cmlidXRlCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1
dGUgQCJBWE93bnMiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlHcmFiYmVkQXR0
cmlidXRlCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGUgQCJBWEdyYWJi
ZWQiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0
ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0ZSBAIkFYRHJvcEVm
ZmVjdHMiCisjZW5kaWYKKworLy8gSWYgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIGlzIHBhc3Nl
ZCBpbiwgaXQgd2lsbCByYWlzZSBhbiBhY2Nlc3NpYmlsaXR5IGV4Y2VwdGlvbi4gVGhlc2UgYXJl
IHVzdWFsbHkgY2F1Z2h0IGJ5IHRoZSBBY2Nlc3NpYmlsaXR5IFJ1bnRpbWUgdG8gaW5mb3JtCisv
LyB0aGUgQVggY2xpZW50IGFwcCBvZiB0aGUgZXJyb3IuIEhvd2V2ZXIsIERSVCBpcyB0aGUgQVgg
Y2xpZW50IGFwcCwgc28gaXQgbXVzdCBjYXRjaCB0aGVzZSBleGNlcHRpb25zLgorI2RlZmluZSBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMgQHRyeSB7CisjZGVmaW5lIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmUpIHsgaWYgKCFbW2UgbmFtZV0gaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbl0pIEB0aHJvdzsgfQorCisKK3R5cGVkZWYg
dm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5n
KiBub3RpZmljYXRpb24sIHZvaWQqIGNvbnRleHQpOworCitAaW50ZXJmYWNlIE5TT2JqZWN0IChX
ZWJLaXRBY2Nlc3NpYmlsaXR5QWRkaXRpb25zKQorLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlB
cnJheUF0dHJpYnV0ZVZhbHVlczooTlNTdHJpbmcgKilhdHRyaWJ1dGUgaW5kZXg6KE5TVUludGVn
ZXIpaW5kZXggbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQ7CistICh2b2lkKWFjY2Vzc2li
aWxpdHlTZXRTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zOihCT09MKXJlcG9zdDsKKy0gKE5TVUlu
dGVnZXIpYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGlsZDooaWQpY2hpbGQ7CistIChOU1VJbnRlZ2Vy
KWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAqKWF0dHJpYnV0ZTsK
K0BlbmQKKworQGludGVyZmFjZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCisrIChO
U1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWY7
CistIChKU1N0cmluZ1JlZiljcmVhdGVKU1N0cmluZ1JlZjsKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKKworKyAoTlNTdHJpbmcgKilzdHJp
bmdXaXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCit7CisgICAgaWYgKCFq
c1N0cmluZ1JlZikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgCisgICAgQ0ZTdHJpbmdSZWYg
Y2ZTdHJpbmcgPSBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0
cmluZ1JlZik7CisgICAgcmV0dXJuIFsoTlNTdHJpbmcgKiljZlN0cmluZyBhdXRvcmVsZWFzZV07
Cit9CisKKy0gKEpTU3RyaW5nUmVmKWNyZWF0ZUpTU3RyaW5nUmVmCit7CisgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilzZWxmKTsKK30KKworQGVuZAor
CitAaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIDogTlNPYmplY3QK
K3sKKyAgICBpZCBtX3BsYXRmb3JtRWxlbWVudDsKKyAgICBKU1ZhbHVlUmVmIG1fbm90aWZpY2F0
aW9uRnVuY3Rpb25DYWxsYmFjazsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIKKworLSAoaWQpaW5pdFdpdGhQbGF0Zm9ybUVsZW1l
bnQ6KGlkKXBsYXRmb3JtRWxlbWVudAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisKKyAg
ICBtX3BsYXRmb3JtRWxlbWVudCA9IHBsYXRmb3JtRWxlbWVudDsKKyAgICAKKyAgICAvLyBPbmNl
IGFuIG9iamVjdCBzdGFydHMgcmVxdWVzdGluZyBub3RpZmljYXRpb25zLCBpdCdzIG9uIGZvciB0
aGUgZHVyYXRpb24gb2YgdGhlIHByb2dyYW0uCisgICAgLy8gVGhpcyBpcyB0byBhdm9pZCBhbnkg
cmFjZSBjb25kaXRpb25zIGJldHdlZW4gdGVzdHMgdHVybmluZyB0aGlzIGZsYWcgb24gYW5kIG9m
Zi4gSW5zdGVhZAorICAgIC8vIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGNhbiBq
dXN0IGxpc3RlbiB3aGVuIHRoZXkgd2FudCB0by4KKyAgICBbbV9wbGF0Zm9ybUVsZW1lbnQgYWNj
ZXNzaWJpbGl0eVNldFNob3VsZFJlcG9zdE5vdGlmaWNhdGlvbnM6WUVTXTsKKyAgICBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6
QHNlbGVjdG9yKF9ub3RpZmljYXRpb25SZWNlaXZlZDopIG5hbWU6QCJBWERSVE5vdGlmaWNhdGlv
biIgb2JqZWN0Om5pbF07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKyAKKy0gKHZvaWQpZGVhbGxv
YworeworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2Jz
ZXJ2ZXI6c2VsZl07CisKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxl
UGFnZUdldE1haW5GcmFtZShXVFI6OkluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBh
Z2UoKSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNj
cmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyAgICAKKyAgICBKU1ZhbHVlVW5wcm90ZWN0KGNvbnRl
eHQsIG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayk7CisgICAgbV9ub3RpZmljYXRpb25G
dW5jdGlvbkNhbGxiYWNrID0gMDsKKyAgICAKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0g
KHZvaWQpX25vdGlmaWNhdGlvblJlY2VpdmVkOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlv
bgoreworICAgIE5TU3RyaW5nICpub3RpZmljYXRpb25OYW1lID0gW1tub3RpZmljYXRpb24gdXNl
ckluZm9dIG9iamVjdEZvcktleTpAIm5vdGlmaWNhdGlvbk5hbWUiXTsKKyAgICBpZiAoIW5vdGlm
aWNhdGlvbk5hbWUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBXS0J1bmRsZUZyYW1lUmVm
IG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShXVFI6OkluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBX
S0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKworICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBqc05vdGlmaWNhdGlvbihBZG9wdCwgW25vdGlmaWNhdGlvbk5h
bWUgY3JlYXRlSlNTdHJpbmdSZWZdKTsKKyAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50ID0gSlNWYWx1
ZU1ha2VTdHJpbmcoY29udGV4dCwganNOb3RpZmljYXRpb24uZ2V0KCkpOworICAgIEpTT2JqZWN0
Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4obV9ub3RpZmlj
YXRpb25GdW5jdGlvbkNhbGxiYWNrKSwgMCwgMSwgJmFyZ3VtZW50LCAwKTsKK30KKworLSAodm9p
ZClzZXRDYWxsYmFjazooSlNWYWx1ZVJlZiljYWxsYmFjaworeworICAgIGlmICghY2FsbGJhY2sp
CisgICAgICAgIHJldHVybjsKKyAKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdL
QnVuZGxlUGFnZUdldE1haW5GcmFtZShXVFI6OkluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdl
KCktPnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0
SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKworICAgIC8vIFJlbGVhc2UgdGhlIG9sZCBj
YWxsYmFjay4KKyAgICBpZiAobV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKSAKKyAgICAg
ICAgSlNWYWx1ZVVucHJvdGVjdChjb250ZXh0LCBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJh
Y2spOworICAgIAorICAgIG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayA9IGNhbGxiYWNr
OworICAgIEpTVmFsdWVQcm90ZWN0KGNvbnRleHQsIG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxs
YmFjayk7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdUUiB7CisKK0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkK
KyAgICA6IG1fZWxlbWVudChlbGVtZW50KQorICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDAp
Cit7CisgICAgLy8gRklYTUU6IGFwQHdlYmtpdC5vcmcgc2F5cyBPYmpDIG9iamVjdHMgbmVlZCB0
byBiZSBDRlJldGFpbmVkL0NGUmVsZWFzZSB0byBiZSBHQy1jb21wbGlhbnQgb24gdGhlIG1hYy4K
KyAgICBbbV9lbGVtZW50IHJldGFpbl07Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgb3RoZXIp
CisgICAgOiBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQorICAgICwgbV9ub3RpZmljYXRpb25I
YW5kbGVyKDApCit7CisgICAgW21fZWxlbWVudCByZXRhaW5dOworfQorCitBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCit7CisgICAgLy8gVGhlIG5vdGlm
aWNhdGlvbiBoYW5kbGVyIHNob3VsZCBiZSBuaWwgYmVjYXVzZSByZW1vdmVOb3RpZmljYXRpb25M
aXN0ZW5lcigpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGluIHRoZSB0ZXN0LgorICAgIEFTU0VS
VCghbV9ub3RpZmljYXRpb25IYW5kbGVyKTsKKyAgICBbbV9lbGVtZW50IHJlbGVhc2VdOworfQor
CitzdGF0aWMgTlNTdHJpbmcqIGRlc2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1ZU9iamVjdCwgaWQg
Zm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplY3QpCit7CisgICAgaWYgKCF2YWx1ZU9iamVjdCkKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoW3ZhbHVlT2JqZWN0IGlzS2luZE9mQ2xhc3M6
W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiPGFycmF5IG9mIHNpemUgJWQ+IiwgWyhOU0FycmF5Kil2YWx1ZU9iamVjdCBjb3VudF1d
OworCisgICAgaWYgKFt2YWx1ZU9iamVjdCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11d
KQorICAgICAgICByZXR1cm4gWyhOU051bWJlciopdmFsdWVPYmplY3Qgc3RyaW5nVmFsdWVdOwor
CisgICAgaWYgKFt2YWx1ZU9iamVjdCBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0pIHsK
KyAgICAgICAgTlNTdHJpbmcqIHR5cGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6W3Zh
bHVlT2JqZWN0IG9iakNUeXBlXSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddOworICAg
ICAgICBOU1ZhbHVlKiB2YWx1ZSA9IChOU1ZhbHVlKil2YWx1ZU9iamVjdDsKKyAgICAgICAgaWYg
KFt0eXBlIHJhbmdlT2ZTdHJpbmc6QCJOU1JlY3QiXS5sZW5ndGggPiAwKQorICAgICAgICAgICAg
cmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTlNSZWN0OiAlQCIsIE5TU3RyaW5n
RnJvbVJlY3QoW3ZhbHVlIHJlY3RWYWx1ZV0pXTsKKyAgICAgICAgaWYgKFt0eXBlIHJhbmdlT2ZT
dHJpbmc6QCJOU1BvaW50Il0ubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIk5TUG9pbnQ6ICVAIiwgTlNTdHJpbmdGcm9tUG9pbnQoW3Zh
bHVlIHBvaW50VmFsdWVdKV07CisgICAgICAgIGlmIChbdHlwZSByYW5nZU9mU3RyaW5nOkAiTlNT
aXplIl0ubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIk5TU2l6ZTogJUAiLCBOU1N0cmluZ0Zyb21TaXplKFt2YWx1ZSBzaXplVmFsdWVd
KV07CisgICAgICAgIGlmIChbdHlwZSByYW5nZU9mU3RyaW5nOkAiTlNSYW5nZSJdLmxlbmd0aCA+
IDApCisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJOU1Jh
bmdlOiAlQCIsIE5TU3RyaW5nRnJvbVJhbmdlKFt2YWx1ZSByYW5nZVZhbHVlXSldOworICAgIH0K
KworICAgIC8vIFN0cmlwIGFic29sdXRlIFVSTCBwYXRocworICAgIE5TU3RyaW5nKiBkZXNjcmlw
dGlvbiA9IFt2YWx1ZU9iamVjdCBkZXNjcmlwdGlvbl07CisgICAgTlNSYW5nZSByYW5nZSA9IFtk
ZXNjcmlwdGlvbiByYW5nZU9mU3RyaW5nOkAiTGF5b3V0VGVzdHMiXTsKKyAgICBpZiAocmFuZ2Uu
bGVuZ3RoKQorICAgICAgICByZXR1cm4gW2Rlc2NyaXB0aW9uIHN1YnN0cmluZ0Zyb21JbmRleDpy
YW5nZS5sb2NhdGlvbl07CisKKyAgICAvLyBTdHJpcCBwb2ludGVyIGxvY2F0aW9ucworICAgIGlm
IChbZGVzY3JpcHRpb24gcmFuZ2VPZlN0cmluZzpAIjB4Il0ubGVuZ3RoKSB7CisgICAgICAgIE5T
U3RyaW5nKiByb2xlID0gW2ZvY3VzZWRBY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXTsKKyAgICAgICAgTlNT
dHJpbmcqIHRpdGxlID0gW2ZvY3VzZWRBY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV07CisgICAgICAgIGlm
IChbdGl0bGUgbGVuZ3RoXSkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIjwlQDogJyVAJz4iLCByb2xlLCB0aXRsZV07CisgICAgICAgIHJldHVybiBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQD4iLCByb2xlXTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIFt2YWx1ZU9iamVjdCBkZXNjcmlwdGlvbl07Cit9CisKK3N0YXRpYyBOU1N0cmluZyog
YXR0cmlidXRlc09mRWxlbWVudChpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0KQoreworICAgIE5TQXJy
YXkqIHN1cHBvcnRlZEF0dHJpYnV0ZXMgPSBbYWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlTmFtZXNdOworCisgICAgTlNNdXRhYmxlU3RyaW5nKiBhdHRyaWJ1dGVzU3Ry
aW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgIGZvciAoTlNVSW50ZWdlciBpID0g
MDsgaSA8IFtzdXBwb3J0ZWRBdHRyaWJ1dGVzIGNvdW50XTsgKytpKSB7CisgICAgICAgIE5TU3Ry
aW5nKiBhdHRyaWJ1dGUgPSBbc3VwcG9ydGVkQXR0cmlidXRlcyBvYmplY3RBdEluZGV4OmldOwor
ICAgICAgICAKKyAgICAgICAgLy8gUmlnaHQgbm93LCBwb3NpdGlvbiBwcm92aWRlcyB1c2VsZXNz
IGFuZCBzY3JlZW4tc3BlY2lmaWMgaW5mb3JtYXRpb24sIHNvIHdlIGRvIG5vdAorICAgICAgICAv
LyB3YW50IHRvIGluY2x1ZGUgaXQgZm9yIHRoZSBzYWtlIG9mIHVuaXZlcnNhbGx5IHBhc3Npbmcg
dGVzdHMuCisgICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUG9zaXRp
b24iXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgLy8gYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOiBjYW4gdGhyb3cgYW4gaWYgYW4gYXR0cmlidXRlIGlzIG5v
dCByZXR1cm5lZC4KKyAgICAgICAgLy8gRm9yIER1bXBSZW5kZXJUcmVlJ3MgcHVycG9zZSwgd2Ug
c2hvdWxkIGlnbm9yZSB0aG9zZSBleGNlcHRpb25zCisgICAgICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgICAgICBpZCB2YWx1ZU9iamVjdCA9IFthY2Nlc3NpYmlsaXR5T2JqZWN0IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGVdOworICAgICAgICBOU1N0cmluZyog
dmFsdWUgPSBkZXNjcmlwdGlvbk9mVmFsdWUodmFsdWVPYmplY3QsIGFjY2Vzc2liaWxpdHlPYmpl
Y3QpOworICAgICAgICBbYXR0cmlidXRlc1N0cmluZyBhcHBlbmRGb3JtYXQ6QCIlQDogJUBcbiIs
IGF0dHJpYnV0ZSwgdmFsdWVdOworICAgICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAg
fQorICAgIAorICAgIHJldHVybiBhdHRyaWJ1dGVzU3RyaW5nOworfQorCitzdGF0aWMgSlNTdHJp
bmdSZWYgY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyogYXR0cmlidXRlLCBO
U1N0cmluZyogdmFsdWUpCit7CisgICAgVmVjdG9yPFVuaUNoYXI+IGJ1ZmZlcihbYXR0cmlidXRl
IGxlbmd0aF0pOworICAgIFthdHRyaWJ1dGUgZ2V0Q2hhcmFjdGVyczpidWZmZXIuZGF0YSgpXTsK
KyAgICBidWZmZXIuYXBwZW5kKCc6Jyk7CisgICAgYnVmZmVyLmFwcGVuZCgnICcpOworCisgICAg
VmVjdG9yPFVuaUNoYXI+IHZhbHVlQnVmZmVyKFt2YWx1ZSBsZW5ndGhdKTsKKyAgICBbdmFsdWUg
Z2V0Q2hhcmFjdGVyczp2YWx1ZUJ1ZmZlci5kYXRhKCldOworICAgIGJ1ZmZlci5hcHBlbmQodmFs
dWVCdWZmZXIpOworCisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbnZlcnROU0Fy
cmF5VG9WZWN0b3IoTlNBcnJheSogYXJyYXksIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gPiYgZWxlbWVudFZlY3RvcikKK3sKKyAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2Fy
cmF5IGNvdW50XTsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQor
ICAgICAgICBlbGVtZW50VmVjdG9yLmFwcGVuZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVh
dGUoW2FycmF5IG9iamVjdEF0SW5kZXg6aV0pKTsKK30KKworc3RhdGljIEpTU3RyaW5nUmVmIGRl
c2NyaXB0aW9uT2ZFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
ID4mIGVsZW1lbnRWZWN0b3IpCit7CisgICAgTlNNdXRhYmxlU3RyaW5nKiBhbGxFbGVtZW50U3Ry
aW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgIHNpemVfdCBzaXplID0gZWxlbWVu
dFZlY3Rvci5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
KyAgICAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHVpRWxlbWVudCA9IGVsZW1l
bnRWZWN0b3JbaV07CisgICAgICAgIE5TU3RyaW5nKiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlc09m
RWxlbWVudCh1aUVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkpOworICAgICAgICBbYWxsRWxl
bWVudFN0cmluZyBhcHBlbmRGb3JtYXQ6QCIlQFxuLS0tLS0tLS0tLS0tXG4iLCBhdHRyaWJ1dGVz
XTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFthbGxFbGVtZW50U3RyaW5nIGNyZWF0ZUpTU3Ry
aW5nUmVmXTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRMaW5rZWRVSUVs
ZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZl
Y3RvcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBsaW5r
ZWRFbGVtZW50cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGVdOworICAgIGNvbnZlcnROU0FycmF5
VG9WZWN0b3IobGlua2VkRWxlbWVudHMsIGVsZW1lbnRWZWN0b3IpOworICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVu
dExpbmtzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZl
Y3RvcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBsaW5r
RWxlbWVudHMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGlu
a1VJRWxlbWVudHMiXTsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGxpbmtFbGVtZW50cywg
ZWxlbWVudFZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3RvcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBOU0FycmF5KiBjaGlsZHJlbiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsKKyAgICBj
b252ZXJ0TlNBcnJheVRvVmVjdG9yKGNoaWxkcmVuLCBlbGVtZW50VmVjdG9yKTsKKyAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0
Q2hpbGRyZW5XaXRoUmFuZ2UoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+
JiBlbGVtZW50VmVjdG9yLCB1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQorewor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGNoaWxkcmVuID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6TlNBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5BdHRyaWJ1dGUgaW5kZXg6bG9jYXRpb24gbWF4Q291bnQ6bGVuZ3RoXTsKKyAgICBj
b252ZXJ0TlNBcnJheVRvVmVjdG9yKGNoaWxkcmVuLCBlbGVtZW50VmVjdG9yKTsKKyAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGls
ZHJlbkNvdW50KCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
ID4gY2hpbGRyZW47CisgICAgZ2V0Q2hpbGRyZW4oY2hpbGRyZW4pOworICAgIAorICAgIHJldHVy
biBjaGlsZHJlbi5zaXplKCk7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KQor
eworICAgIGlkIGVsZW1lbnQgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlIaXRUZXN0Ok5TTWFr
ZVBvaW50KHgsIHkpXTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KTsK
K30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhPZkNoaWxkKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUluZGV4T2ZDaGlsZDplbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpXTsKK30K
KworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjaGlsZEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNoaWxkcmVuOworICAgIGdldENoaWxkcmVuV2l0aFJh
bmdlKGNoaWxkcmVuLCBpbmRleCwgMSk7CisKKyAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpID09IDEp
CisgICAgICAgIHJldHVybiBjaGlsZHJlblswXTsKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5r
ZWRVSUVsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIE5TQXJyYXkqIG9iamVjdHMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRl
XTsKKyAgICBpZiAoaW5kZXggPCBbb2JqZWN0cyBjb3VudF0pCisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW29iamVjdHMgb2JqZWN0QXRJbmRleDppbmRleF0p
OworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwor
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIG9iamVjdHMgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlXTsKKyAg
ICBpZiAoaW5kZXggPCBbb2JqZWN0cyBjb3VudF0pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjcmVhdGUoW29iamVjdHMgb2JqZWN0QXRJbmRleDppbmRleF0pOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojphcmlh
Rmxvd1RvRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCisgICAgTlNBcnJheSogb2JqZWN0cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1
dGVdOworICAgIGlmIChpbmRleCA8IFtvYmplY3RzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbb2JqZWN0cyBvYmplY3RBdEluZGV4OmluZGV4
XSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQor
CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogcm93cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVd
OworICAgIGlmIChpbmRleCA8IFtyb3dzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbcm93cyBvYmplY3RBdEluZGV4OmluZGV4XSk7CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRD
aGlsZEF0SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCisgICAgTlNBcnJheSogYXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsK
KyAgICBpZiAoaW5kZXggPCBbYXJyYXkgY291bnRdKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y3JlYXRlKFthcnJheSBvYmplY3RBdEluZGV4OmluZGV4XSk7CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCit1bnNpZ25l
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25zdAor
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hp
bGRyZW5BdHRyaWJ1dGVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVy
biAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiByb3dzID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0
cmlidXRlXTsKKyAgICBpZiAoaW5kZXggPCBbcm93cyBjb3VudF0pCisgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW3Jvd3Mgb2JqZWN0QXRJbmRleDppbmRleF0p
OworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwor
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0aXRsZVVJRWxlbWVudCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
aWQgYWNjZXNzaWJpbGl0eU9iamVjdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKKyAgICBpZiAo
YWNjZXNzaWJpbGl0eU9iamVjdCkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNyZWF0ZShhY2Nlc3NpYmlsaXR5T2JqZWN0KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCgpCit7CisgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgYWNjZXNzaWJpbGl0eU9iamVjdCA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVBhcmVu
dEF0dHJpYnV0ZV07CisgICAgaWYgKGFjY2Vzc2liaWxpdHlPYmplY3QpCisgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoYWNjZXNzaWJpbGl0eU9iamVjdCk7Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRp
c2Nsb3NlZEJ5Um93KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBh
Y2Nlc3NpYmlsaXR5T2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkQnlSb3dBdHRyaWJ1dGVdOworICAgIGlmIChhY2Nl
c3NpYmlsaXR5T2JqZWN0KQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y3JlYXRlKGFjY2Vzc2liaWxpdHlPYmplY3QpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMoKQoreworICAg
IFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBsaW5rZWRFbGVtZW50czsK
KyAgICBnZXRMaW5rZWRVSUVsZW1lbnRzKGxpbmtlZEVsZW1lbnRzKTsKKyAgICByZXR1cm4gZGVz
Y3JpcHRpb25PZkVsZW1lbnRzKGxpbmtlZEVsZW1lbnRzKTsKK30KKworSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkRvY3VtZW50TGlu
a3MoKQoreworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBsaW5r
RWxlbWVudHM7CisgICAgZ2V0RG9jdW1lbnRMaW5rcyhsaW5rRWxlbWVudHMpOworICAgIHJldHVy
biBkZXNjcmlwdGlvbk9mRWxlbWVudHMobGlua0VsZW1lbnRzKTsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVu
KCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY2hpbGRy
ZW47CisgICAgZ2V0Q2hpbGRyZW4oY2hpbGRyZW4pOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9m
RWxlbWVudHMoY2hpbGRyZW4pOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcygpCit7CisgICAgTlNTdHJpbmcqIGF0dHJp
YnV0ZXMgPSBhdHRyaWJ1dGVzT2ZFbGVtZW50KG1fZWxlbWVudCk7CisgICAgcmV0dXJuIFthdHRy
aWJ1dGVzIGNyZWF0ZUpTU3RyaW5nUmVmXTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVm
IGF0dHJpYnV0ZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1
ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJp
bmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNs
YXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGNyZWF0ZUpTU3Ry
aW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30K
KworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpT
U3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0
cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgaWYgKFt2YWx1ZSBp
c0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGRv
dWJsZVZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJu
IDA7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZhbHVl
KEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltO
U1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVl
IGJvb2xWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNl
dHRhYmxlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SXNBdHRyaWJ1dGVTZXR0
YWJsZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOworICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYg
YXR0cmlidXRlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBb
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdIGNvbnRhaW5zT2JqZWN0OltO
U1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGVOYW1lcygpCit7CisgICAgTlNBcnJheSogc3VwcG9ydGVkUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZXMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXNd
OworICAgIAorICAgIE5TTXV0YWJsZVN0cmluZyogYXR0cmlidXRlc1N0cmluZyA9IFtOU011dGFi
bGVTdHJpbmcgc3RyaW5nXTsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBbc3VwcG9y
dGVkUGFyYW1ldGVyaXplZEF0dHJpYnV0ZXMgY291bnRdOyArK2kpIHsKKyAgICAgICAgW2F0dHJp
YnV0ZXNTdHJpbmcgYXBwZW5kRm9ybWF0OkAiJUBcbiIsIFtzdXBwb3J0ZWRQYXJhbWV0ZXJpemVk
QXR0cmlidXRlcyBvYmplY3RBdEluZGV4OmldXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFth
dHRyaWJ1dGVzU3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKK30KKworSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUoKQoreworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIE5TU3RyaW5nICpyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVl
KFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJv
bGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0
ZUFuZFZhbHVlKEAiQVhSb2xlIiwgcm9sZSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgTlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0
ZV0sIG1fZWxlbWVudCk7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUo
QCJBWFN1YnJvbGUiLCByb2xlKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICBy
ZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbigpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgTlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0
cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRW
YWx1ZShAIkFYUm9sZURlc2NyaXB0aW9uIiwgcm9sZSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIE5TU3RyaW5nKiB0aXRsZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJp
YnV0ZV0sIG1fZWxlbWVudCk7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFs
dWUoQCJBWFRpdGxlIiwgdGl0bGUpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAg
IHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZGVzY3JpcHRpb24oKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRl
XSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShA
IkFYRGVzY3JpcHRpb24iLCBkZXNjcmlwdGlvbik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UworCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJp
YnV0ZUFuZFZhbHVlKEAiQVhPcmllbnRhdGlvbiIsIGRlc2NyaXB0aW9uKTsgICAgCisgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpCit7CisgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlv
bk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5VmFsdWVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIHJldHVybiBjb25jYXRlbmF0
ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhWYWx1ZSIsIGRlc2NyaXB0aW9uKTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1
ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGFuZ3VhZ2UiXSwg
bV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFY
TGFuZ3VhZ2UiLCBkZXNjcmlwdGlvbik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisg
ICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5SGVscEF0dHJpYnV0ZV0s
IG1fZWxlbWVudCk7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJB
WEhlbHAiLCBkZXNjcmlwdGlvbik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAor
ICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCgpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNWYWx1ZSogcG9zaXRpb25WYWx1
ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eVBvc2l0aW9uQXR0cmlidXRlXTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihbcG9z
aXRpb25WYWx1ZSBwb2ludFZhbHVlXS54KTsgICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIAorICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6eSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNWYWx1ZSog
cG9zaXRpb25WYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlXTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZG91YmxlPihbcG9zaXRpb25WYWx1ZSBwb2ludFZhbHVlXS55KTsgICAgCisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6d2lkdGgoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIE5TVmFsdWUqIHNpemVWYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxkb3VibGU+KFtzaXplVmFsdWUgc2l6ZVZhbHVlXS53aWR0aCk7CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVpZ2h0KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICBOU1ZhbHVlKiBzaXplVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8ZG91YmxlPihbc2l6ZVZhbHVlIHNpemVWYWx1ZV0uaGVpZ2h0KTsKKyAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJs
ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WCgpCit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgTlNWYWx1ZSogcG9zaXRpb25WYWx1ZSA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDbGlja1BvaW50Il07CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGRvdWJsZT4oW3Bvc2l0aW9uVmFsdWUgcG9pbnRWYWx1ZV0ueCk7ICAgICAg
ICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7Cit9
CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WSgpCit7CisgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNWYWx1ZSogcG9zaXRpb25WYWx1ZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDbGlja1BvaW50Il07Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oW3Bvc2l0aW9uVmFsdWUgcG9pbnRWYWx1ZV0u
eSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwLjBmOwor
fQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWUoKSBjb25zdAorewor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVd
OworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAg
ICAgcmV0dXJuIFsoTlNOdW1iZXIqKXZhbHVlIGRvdWJsZVZhbHVlXTsgCisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjptaW5WYWx1ZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gWyhOU051bWJlciopdmFs
dWUgZG91YmxlVmFsdWVdOyAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1
cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlKCkK
K3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0
cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0p
CisgICAgICAgIHJldHVybiBbKE5TTnVtYmVyKil2YWx1ZSBkb3VibGVWYWx1ZV07IAorICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwLjA7Cit9CisKK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uKCkK
K3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1N0cmluZyogdmFsdWVEZXNj
cmlwdGlvbiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWVEZXNjcmlw
dGlvbiBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICAgcmV0dXJuIFt2
YWx1ZURlc2NyaXB0aW9uIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICByZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Omluc2VydGlvblBvaW50TGluZU51bWJlcigpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlJbnNlcnRpb25Qb2ludExpbmVOdW1iZXJBdHRyaWJ1dGVdOworICAg
IGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0
dXJuIFsoTlNOdW1iZXIgKil2YWx1ZSBpbnRWYWx1ZV07IAorICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICAKKyAgICByZXR1cm4gLTE7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNBY3Rpb25TdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYWN0aW9uKQoreworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGFjdGlvbnMgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBY3Rpb25OYW1lc107CisgICAgcmV0dXJuIFthY3Rpb25zIGNvbnRhaW5zT2Jq
ZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YWN0aW9uXV07CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0VuYWJsZWQoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZSBp
c0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGJv
b2xWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkKCkgY29u
c3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSZXF1aXJlZCJdOworICAgIGlm
IChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJu
IFt2YWx1ZSBib29sVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1
c2VkKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25zdAor
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRy
aWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkK
KyAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNFeHBhbmRlZCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlFeHBhbmRlZEF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZSBpc0tp
bmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xW
YWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNrZWQoKSBjb25zdAor
eworICAgIC8vIE9uIHRoZSBNYWMsIGludFZhbHVlKCk9PTEgaWYgYSBhIGNoZWNrYWJsZSBjb250
cm9sIGlzIGNoZWNrZWQuCisgICAgcmV0dXJuIGludFZhbHVlKCkgPT0gMTsKK30KKworaW50IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3N1cmVMZXZlbEF0dHJp
YnV0ZV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQor
ICAgICAgICByZXR1cm4gW3ZhbHVlIGludFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhEUlRTcGVlY2hBdHRyaWJ1dGUiXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdS
ZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgCisgICAgcmV0dXJuIDA7
Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNvbnN0
Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlHcmFiYmVkQXR0
cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0p
CisgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMoKSBjb25zdAoreworICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1
dGVdOworICAgIGlmICghW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBOU011dGFibGVTdHJpbmcqIGRyb3BFZmZlY3RzID0gW05T
TXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgIE5TSW50ZWdlciBsZW5ndGggPSBbdmFsdWUgY291
bnRdOworICAgIGZvciAoTlNJbnRlZ2VyIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spIHsKKyAgICAg
ICAgW2Ryb3BFZmZlY3RzIGFwcGVuZFN0cmluZzpbdmFsdWUgb2JqZWN0QXRJbmRleDprXV07Cisg
ICAgICAgIGlmIChrIDwgbGVuZ3RoIC0gMSkKKyAgICAgICAgICAgIFtkcm9wRWZmZWN0cyBhcHBl
bmRTdHJpbmc6QCIsIl07CisgICAgfQorICAgIAorICAgIHJldHVybiBbZHJvcEVmZmVjdHMgY3Jl
YXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsKK30KKworLy8gcGFyYW1ldGVyaXplZCBhdHRyaWJ1dGVzCitpbnQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KGludCBpbmRleCkKK3sKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxpbmVGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRy
aWJ1dGUgZm9yUGFyYW1ldGVyOltOU051bWJlciBudW1iZXJXaXRoSW50OmluZGV4XV07CisgICAg
aWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1
cm4gWyhOU051bWJlciAqKXZhbHVlIGludFZhbHVlXTsgCisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworCisgICAgcmV0dXJuIC0xOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JMaW5lKGludCBsaW5lKQoreworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UmFuZ2VGb3JMaW5lUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGluZV1dOwor
ICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11dKSB7CisgICAgICAg
IHJldHVybiBbTlNTdHJpbmdGcm9tUmFuZ2UoW3ZhbHVlIHJhbmdlVmFsdWVdKSBjcmVhdGVKU1N0
cmluZ1JlZl07CisgICAgfQorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmJvdW5kc0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOwor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Qm91bmRzRm9yUmFuZ2VQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5n
ZTpyYW5nZV1dOworICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVjdCgwLDAsMCwwKTsKKyAgICBp
ZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSkKKyAgICAgICAgcmVjdCA9
IFt2YWx1ZSByZWN0VmFsdWVdOyAKKyAgICAKKyAgICAvLyBkb24ndCByZXR1cm4gcG9zaXRpb24g
aW5mb3JtYXRpb24gYmVjYXVzZSBpdCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQKKyAgICBOU011dGFi
bGVTdHJpbmcqIGJvdW5kc0Rlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAie3slZiwgJWZ9LCB7JWYsICVmfX0iLC0xLjBmLC0xLjBmLHJlY3Quc2l6ZS53aWR0
aCxyZWN0LnNpemUuaGVpZ2h0XTsKKyAgICByZXR1cm4gW2JvdW5kc0Rlc2NyaXB0aW9uIGNyZWF0
ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQor
eworICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBzdHJpbmcgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdHJpbmdGb3JSYW5nZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdl
OnJhbmdlXV07CisgICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBbc3RyaW5nIGNyZWF0ZUpT
U3RyaW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJu
IDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxl
bmd0aCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0
aCk7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBdHRyaWJ1dGVkU3RyaW5n
KiBzdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZv
clBhcmFtZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1dOworICAgIGlmICghW3N0
cmluZyBpc0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgCisgICAgTlNTdHJpbmcqIHN0cmluZ1dpdGhBdHRycyA9IFtzdHJpbmcg
ZGVzY3JpcHRpb25dOworICAgIHJldHVybiBbc3RyaW5nV2l0aEF0dHJzIGNyZWF0ZUpTU3RyaW5n
UmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9
CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNN
aXNzcGVsbGVkKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgTlNS
YW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5QXR0cmlidXRl
ZFN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05TVmFs
dWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKKyAgICBpZiAoIVtzdHJpbmcgaXNLaW5kT2ZDbGFz
czpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIE5TRGljdGlvbmFyeSogYXR0cnMgPSBbc3RyaW5nIGF0dHJpYnV0ZXNBdEluZGV4OjAgZWZm
ZWN0aXZlUmFuZ2U6bmlsXTsKKyAgICBpZihbW2F0dHJzIG9iamVjdEZvcktleTpOU0FjY2Vzc2li
aWxpdHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZV0gYm9vbFZhbHVlXSkKKyAgICAgICAgcmV0dXJu
IHRydWU7ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpTU3RyaW5nUmVm
IHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCkKK3sKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5KiBwYXJhbWV0ZXIgPSBbTlNNdXRh
YmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKyAgICBbcGFyYW1ldGVyIHNldE9iamVjdDooaXNE
aXJlY3Rpb25OZXh0KSA/IEAiQVhEaXJlY3Rpb25OZXh0IiA6IEAiQVhEaXJlY3Rpb25QcmV2aW91
cyIgZm9yS2V5OkAiQVhEaXJlY3Rpb24iXTsKKyAgICBbcGFyYW1ldGVyIHNldE9iamVjdDpbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDoxXSBmb3JLZXk6QCJBWFJlc3VsdHNMaW1pdCJdOworICAgIGlm
IChzdGFydEVsZW1lbnQpCisgICAgICAgIFtwYXJhbWV0ZXIgc2V0T2JqZWN0OihpZClzdGFydEVs
ZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXTsKKyAg
ICBpZiAoc2VhcmNoS2V5KQorICAgICAgICBbcGFyYW1ldGVyIHNldE9iamVjdDpbTlNTdHJpbmcg
c3RyaW5nV2l0aEpTU3RyaW5nUmVmOnNlYXJjaEtleV0gZm9yS2V5OkAiQVhTZWFyY2hLZXkiXTsK
KyAgICBpZiAoc2VhcmNoVGV4dCAmJiBKU1N0cmluZ0dldExlbmd0aChzZWFyY2hUZXh0KSkKKyAg
ICAgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1Jl
ZjpzZWFyY2hUZXh0XSBmb3JLZXk6QCJBWFNlYXJjaFRleHQiXTsKKyAgICAKKyAgICBpZCB1aUVs
ZW1lbnQgPSBbW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxl
bWVudHNGb3JTZWFyY2hQcmVkaWNhdGUiIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJdIGxhc3RPYmpl
Y3RdOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUodWlFbGVtZW50
KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisK
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZDb2x1bW5IZWFkZXJzKCkKK3sKKyAgICAvLyBub3QgeWV0IGRlZmluZWQgaW4gQXBwS2l0
Li4uIG9kZAorICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGNvbHVt
bkhlYWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzIl07CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiA+IGNvbHVtbkhlYWRlcnNWZWN0b3I7CisgICAgY29udmVydE5TQXJyYXlU
b1ZlY3Rvcihjb2x1bW5IZWFkZXJzQXJyYXksIGNvbHVtbkhlYWRlcnNWZWN0b3IpOworICAgIHJl
dHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY29sdW1uSGVhZGVyc1ZlY3Rvcik7CisgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVh
ZGVycygpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogcm93
SGVhZGVyc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WFJvd0hlYWRlclVJRWxlbWVudHMiXTsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+ID4gcm93SGVhZGVyc1ZlY3RvcjsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9y
KHJvd0hlYWRlcnNBcnJheSwgcm93SGVhZGVyc1ZlY3Rvcik7CisgICAgcmV0dXJuIGRlc2NyaXB0
aW9uT2ZFbGVtZW50cyhyb3dIZWFkZXJzVmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5zKCkKK3sKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBjb2x1bW5zQXJyYXkgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0
cmlidXRlXTsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY29s
dW1uc1ZlY3RvcjsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGNvbHVtbnNBcnJheSwgY29s
dW1uc1ZlY3Rvcik7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjb2x1bW5zVmVj
dG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9
CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVzT2ZSb3dzKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0Fy
cmF5KiByb3dzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+ID4gcm93c1ZlY3RvcjsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9y
KHJvd3NBcnJheSwgcm93c1ZlY3Rvcik7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50
cyhyb3dzVmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIE5TQXJyYXkqIGNlbGxzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVmlzaWJsZUNlbGxzIl07CisgICAgVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNlbGxzVmVjdG9yOworICAgIGNvbnZlcnROU0FycmF5
VG9WZWN0b3IoY2VsbHNBcnJheSwgY2VsbHNWZWN0b3IpOworICAgIHJldHVybiBkZXNjcmlwdGlv
bk9mRWxlbWVudHMoY2VsbHNWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcigpCit7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCisgICAgaWQgaGVhZGVyT2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5SGVhZGVyQXR0cmlidXRlXTsKKyAgICBp
ZiAoIWhlYWRlck9iamVjdCkKKyAgICAgICAgcmV0dXJuIFtAIiIgY3JlYXRlSlNTdHJpbmdSZWZd
OworICAgIAorICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBoZWFk
ZXJWZWN0b3I7CisgICAgaGVhZGVyVmVjdG9yLmFwcGVuZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjcmVhdGUoaGVhZGVyT2JqZWN0KSk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50
cyhoZWFkZXJWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0NvdW50KCkKK3sK
KyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3VudDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRl
XTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisK
K2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5Db3VudCgpCit7CisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUFy
cmF5QXR0cmlidXRlQ291bnQ6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitpbnQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJblRhYmxlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICBOU051bWJlciogaW5kZXhOdW1iZXIgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV07Cisg
ICAgaWYgKGluZGV4TnVtYmVyKQorICAgICAgICByZXR1cm4gW2luZGV4TnVtYmVyIGludFZhbHVl
XTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gLTE7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJbmRleFJh
bmdlKCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwwKTsKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVlKiBpbmRleFJhbmdlID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJvd0luZGV4UmFuZ2UiXTsKKyAgICBp
ZiAoaW5kZXhSYW5nZSkKKyAgICAgICAgcmFuZ2UgPSBbaW5kZXhSYW5nZSByYW5nZVZhbHVlXTsK
KyAgICBOU011dGFibGVTdHJpbmcqIHJhbmdlRGVzY3JpcHRpb24gPSBbTlNNdXRhYmxlU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJ7JWQsICVkfSIscmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0
aF07CisgICAgcmV0dXJuIFtyYW5nZURlc2NyaXB0aW9uIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJh
bmdlKCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwwKTsKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU051bWJlciogaW5kZXhSYW5nZSA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDb2x1bW5JbmRleFJhbmdlIl07Cisg
ICAgaWYgKGluZGV4UmFuZ2UpCisgICAgICAgIHJhbmdlID0gW2luZGV4UmFuZ2UgcmFuZ2VWYWx1
ZV07CisgICAgTlNNdXRhYmxlU3RyaW5nKiByYW5nZURlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAieyVkLCAlZH0iLHJhbmdlLmxvY2F0aW9uLCByYW5nZS5s
ZW5ndGhdOworICAgIHJldHVybiBbcmFuZ2VEZXNjcmlwdGlvbiBjcmVhdGVKU1N0cmluZ1JlZl07
ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30K
KworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbCwgdW5zaWduZWQgcm93KQorewor
ICAgIE5TQXJyYXkgKmNvbFJvd0FycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpbTlNO
dW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmNvbF0sIFtOU051bWJlciBudW1iZXJXaXRoVW5z
aWduZWRJbnQ6cm93XSwgbmlsXTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDZWxsRm9yQ29sdW1uQW5kUm93IiBmb3JQYXJhbWV0ZXI6
Y29sUm93QXJyYXldKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TICAgIAorCisgICAgcmV0
dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0Cit7CisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNy
ZWF0ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlXSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUyAgICAKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcigp
IGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWZXJ0aWNhbFNjcm9sbEJhckF0dHJpYnV0ZV0pOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAgICAgIAorfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0UmFuZ2UoKQoreworICAg
IE5TUmFuZ2UgcmFuZ2UgPSBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVlICppbmRleFJhbmdlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFu
Z2VBdHRyaWJ1dGVdOworICAgIGlmIChpbmRleFJhbmdlKQorICAgICAgICByYW5nZSA9IFtpbmRl
eFJhbmdlIHJhbmdlVmFsdWVdOworICAgIE5TTXV0YWJsZVN0cmluZyAqcmFuZ2VEZXNjcmlwdGlv
biA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInslZCwgJWR9IixyYW5nZS5s
b2NhdGlvbiwgcmFuZ2UubGVuZ3RoXTsKKyAgICByZXR1cm4gW3JhbmdlRGVzY3JpcHRpb24gY3Jl
YXRlSlNTdHJpbmdSZWZdOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisg
ICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0
ZWRUZXh0UmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBO
U1JhbmdlIHRleHRSYW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworICAgIE5T
VmFsdWUgKnRleHRSYW5nZVZhbHVlID0gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6dGV4dFJhbmdl
XTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlTZXRWYWx1ZTp0ZXh0UmFuZ2VWYWx1ZSBmb3JBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5
U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
K30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQoKQoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBlcmZv
cm1BY3Rpb246TlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uXTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50
KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlQZXJmb3JtQWN0aW9uOk5TQWNjZXNzaWJpbGl0eURlY3JlbWVudEFjdGlvbl07Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNob3dNZW51KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOk5TQWNjZXNzaWJpbGl0eVNob3dNZW51
QWN0aW9uXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cHJlc3MoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3NpYmlsaXR5
UHJlc3NBY3Rpb25dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
TlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6ZWxlbWVudC0+cGxhdGZv
cm1VSUVsZW1lbnQoKV07CisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6YXJy
YXkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVd
OworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAgCit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFsdWUoKSBjb25z
dAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcoKQoreworICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkoKQoreworICAgIHJldHVy
biBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJsKCkKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1VSTCAqdXJsID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKKyAgICByZXR1
cm4gW1t1cmwgYWJzb2x1dGVTdHJpbmddIGNyZWF0ZUpTU3RyaW5nUmVmXTsgICAgCisgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBuaWw7Cit9CisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZiBm
dW5jdGlvbkNhbGxiYWNrKQoreworICAgIGlmICghZnVuY3Rpb25DYWxsYmFjaykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworIAorICAgIC8vIE1hYyBwcm9ncmFtbWVycyBzaG91bGQgbm90IGJlIGFk
ZGluZyBtb3JlIHRoYW4gb25lIG5vdGlmaWNhdGlvbiBsaXN0ZW5lciBwZXIgZWxlbWVudC4KKyAg
ICAvLyBPdGhlciBwbGF0Zm9ybXMgbWF5IGJlIGRpZmZlcmVudC4KKyAgICBpZiAobV9ub3RpZmlj
YXRpb25IYW5kbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9ub3RpZmljYXRpb25I
YW5kbGVyID0gW1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxvY10gaW5pdFdp
dGhQbGF0Zm9ybUVsZW1lbnQ6cGxhdGZvcm1VSUVsZW1lbnQoKV07CisgICAgW21fbm90aWZpY2F0
aW9uSGFuZGxlciBzZXRDYWxsYmFjazpmdW5jdGlvbkNhbGxiYWNrXTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlv
bkxpc3RlbmVyKCkKK3sKKyAgICAvLyBNYWMgcHJvZ3JhbW1lcnMgc2hvdWxkIG5vdCBiZSB0cnlp
bmcgdG8gcmVtb3ZlIGEgbGlzdGVuZXIgdGhhdCdzIGFscmVhZHkgcmVtb3ZlZC4KKyAgICBBU1NF
UlQobV9ub3RpZmljYXRpb25IYW5kbGVyKTsKKworICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIg
cmVsZWFzZV07CisgICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gbmlsOworICAgIAorICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNhYmxl
KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSgpIGNvbnN0Cit7
CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc1Zpc2libGUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNPZmZTY3JlZW4oKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBz
ZWQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJZ25vcmVkKCkgY29uc3QKK3sK
KyAgICBCT09MIHJlc3VsdCA9IE5POworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IHJlc3VsdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUlzSWdub3JlZF07CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aGFzUG9wdXAoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWEhhc1BvcHVwIl07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24oKQorewor
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphZGRTZWxlY3Rpb24oKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKK30KKworI2lmIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTCisKKy8vIFRleHQg
bWFya2VycworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
aWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVJRWxlbWVudCIgZm9yUGFyYW1ldGVyOmVsZW1lbnQt
PnBsYXRmb3JtVUlFbGVtZW50KCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFu
Z2UpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNOdW1iZXIqIGxlbmd0
aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExlbmd0
aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihpZClyYW5nZS0+cGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UoKV07CisgICAgcmV0dXJuIFtsZW5ndGhWYWx1ZSBpbnRWYWx1ZV07CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2
aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCit7Cisg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUocHJl
dmlvdXNNYXJrZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1
cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRl
eHRNYXJrZXIpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgbmV4dE1h
cmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0VGV4
dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3Jl
YXRlKG5leHRNYXJrZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKiBtYXJrZXJSYW5nZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBp
ZCB0ZXh0U3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihpZCltYXJrZXJSYW5nZS0+
cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgcmV0dXJuIFt0ZXh0U3RyaW5nIGNyZWF0
ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRN
YXJrZXIpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogdGV4
dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCBu
aWxdOworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVbm9yZGVyZWRUZXh0TWFya2VycyIg
Zm9yUGFyYW1ldGVyOnRleHRNYXJrZXJzXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCit7Cisg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRN
YXJrZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsg
ICAgCit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KGlk
KXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7ICAgIAorfQorCitQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9p
bnQoaW50IHgsIGludCB5KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlk
IHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
VGV4dE1hcmtlckZvclBvc2l0aW9uIiBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUG9p
bnQ6TlNNYWtlUG9pbnQoeCwgeSldXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAg
CisgICAgcmV0dXJuIDA7ICAgIAorfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1h
cmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIGlkIHVpRWxlbWVudCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6
KGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjcmVhdGUodWlFbGVtZW50KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIDA7ICAKK30KKworI2VuZGlmIC8vIFNVUFBPUlRTX0FYX1RF
WFRNQVJLRVJTCisKK30gLy8gbmFtZXNwYWNlIFdUUgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gOTg5NzcpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNjAsNSArNjAsMTEgQEAKIHsKICAgICByZXR1cm4gSlNTdHJpbmdS
ZXRhaW4odXJsKTsgLy8gRG8gbm90aGluZyBvbiBtYWMuCiB9CisgICAgCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpCit7CisgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBsYXRmb3JtTmFtZShBZG9wdCwgSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIm1hYyIpKTsKKyAgICByZXR1cm4gcGxhdGZvcm1OYW1lOworfQog
CiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZS5oCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlX2gKKyNkZWZpbmUgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZV9oCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlci5oIgorI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIFBMQVRG
T1JNKE1BQykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIENGVHlwZVJlZiBQ
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZTsKKyNlbHNlCit0eXBlZGVmIHZvaWQqIFBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlOworI2VuZGlmCisKK25hbWVzcGFjZSBXVFIgeworICAgIAorY2xhc3MgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gY3Jl
YXRlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSYpOworICAgIAorICAgIH5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKCk7
CisgICAgCisgICAgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgcGxhdGZvcm1UZXh0TWFya2VyUmFu
Z2UoKSBjb25zdCB7IHJldHVybiBtX3RleHRNYXJrZXJSYW5nZS5nZXQoKTsgfQorICAgIHZpcnR1
YWwgSlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKTsKKyAgICAKKyAgICBzdGF0aWMgSlNPYmplY3RS
ZWYgbWFrZUpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShKU0NvbnRleHRSZWYsIGNvbnN0
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UmKTsKKyAgICBib29sIGlzRXF1YWwoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOworICAgIAorcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKTsKKyAgICBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Um
KTsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPFBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlPiBtX3RleHRNYXJrZXJSYW5nZTsKKyNlbHNlCisgICAgUGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UgbV90ZXh0TWFya2VyUmFuZ2U7CisjZW5kaWYKK307CisgICAgCisjaWYgIVNVUFBP
UlRTX0FYX1RFWFRNQVJLRVJTCitpbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSkgeyB9
CitpbmxpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJikgeyB9Citpbmxp
bmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6fkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UoKSB7IH0KK2lubGluZSBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6Omlz
RXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9Citp
bmxpbmUgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3RleHRNYXJrZXJS
YW5nZTsgfQorI2VuZGlmCisgICAgCit9IC8vIG5hbWVzcGFjZSBXVFIKKworI2VuZGlmIC8vIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VfaApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkocmV2aXNpb24g
OTg5NzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSW5qZWN0
ZWRCdW5kbGVfaAogI2RlZmluZSBJbmplY3RlZEJ1bmRsZV9oCiAKKyNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxl
ci5oIgpAQCAtNTYsNiArNTcsNyBAQAogICAgIEdDQ29udHJvbGxlciogZ2NDb250cm9sbGVyKCkg
eyByZXR1cm4gbV9nY0NvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICBFdmVudFNlbmRpbmdDb250cm9s
bGVyKiBldmVudFNlbmRpbmdDb250cm9sbGVyKCkgeyByZXR1cm4gbV9ldmVudFNlbmRpbmdDb250
cm9sbGVyLmdldCgpOyB9CiAgICAgVGV4dElucHV0Q29udHJvbGxlciogdGV4dElucHV0Q29udHJv
bGxlcigpIHsgcmV0dXJuIG1fdGV4dElucHV0Q29udHJvbGxlci5nZXQoKTsgfQorICAgIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpIHsgcmV0dXJuIG1f
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZ2V0KCk7IH0KIAogICAgIEluamVjdGVkQnVuZGxlUGFn
ZSogcGFnZSgpIGNvbnN0OwogICAgIHNpemVfdCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VzLnNpemUoKTsgfQpAQCAtMTA1LDYgKzEwNyw3IEBACiAgICAgV0tCdW5kbGVQYWdlR3Jv
dXBSZWYgbV9wYWdlR3JvdXA7CiAgICAgVmVjdG9yPE93blB0cjxJbmplY3RlZEJ1bmRsZVBhZ2U+
ID4gbV9wYWdlczsKIAorICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjsKICAgICBSZWZQdHI8TGF5b3V0VGVzdENvbnRyb2xsZXI+IG1f
bGF5b3V0VGVzdENvbnRyb2xsZXI7CiAgICAgUmVmUHRyPEdDQ29udHJvbGxlcj4gbV9nY0NvbnRy
b2xsZXI7CiAgICAgUmVmUHRyPEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI+IG1fZXZlbnRTZW5kaW5n
Q29udHJvbGxlcjsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDk4OTc3
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNiArMTkwLDggQEAKICAgICB2b2lkIGNh
bGxGb2N1c1dlYlZpZXdDYWxsYmFjaygpOwogICAgIHZvaWQgY2FsbFNldEJhY2tpbmdTY2FsZUZh
Y3RvckNhbGxiYWNrKCk7CiAKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1O
YW1lKCk7CisgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgd2FpdFRvRHVt
cFdhdGNoZG9nVGltZXJJbnRlcnZhbDsKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIK
KworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbmplY3Rl
ZEJ1bmRsZS5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZS5oIgorI2luY2x1ZGUgIkpT
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZS5oPgorI2luY2x1ZGUgPFdl
YktpdDIvV0tCdW5kbGVQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2VQcml2
YXRlLmg+CisKK25hbWVzcGFjZSBXVFIgeworCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlDb250
cm9sbGVyPiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKTsKK30KKworQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkKK3sKK30KKworQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6On5BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpCit7Cit9CisKK3ZvaWQg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6Om1ha2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIHdpbmRvd09iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIHNldFByb3BlcnR5KGNvbnRleHQsIHdpbmRvd09iamVjdCwgImFjY2Vzc2liaWxpdHlD
b250cm9sbGVyIiwgdGhpcywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSwgZXhjZXB0aW9uKTsKK30KKworSlNDbGFzc1JlZiBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6d3JhcHBlckNsYXNzKCkKK3sKKyAgICByZXR1cm4gSlNBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDbGFzcygpOworfQor
CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyOjpyb290RWxlbWVudCgpCit7CisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCk7CisgICAgdm9pZCogcm9vdCA9IFdLQWNj
ZXNzaWJpbGl0eVJvb3RPYmplY3QocGFnZSk7CisgICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNyZWF0ZShzdGF0aWNfY2FzdDxQbGF0Zm9ybVVJRWxlbWVudD4ocm9vdCkp
OyAgICAKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQoKQoreworICAgIFdLQnVuZGxlUGFnZVJlZiBw
YWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpOworICAgIHZvaWQq
IHJvb3QgPSBXS0FjY2Vzc2liaWxpdHlGb2N1c2VkT2JqZWN0KHBhZ2UpOworICAgIAorICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoc3RhdGljX2Nhc3Q8UGxhdGZvcm1V
SUVsZW1lbnQ+KHJvb3QpKTsgICAgCit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQg
eSkKK3sKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVtZW50ID0gcm9v
dEVsZW1lbnQoKTsKKyAgICByZXR1cm4gdWlFbGVtZW50LT5lbGVtZW50QXRQb2ludCh4LCB5KTsK
K30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdUUgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
R05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDk4OTc3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTAgQEAKIG5vaW5z
dF9MVExJQlJBUklFUyArPSBMaWJyYXJpZXMvbGliVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlLmxh
CiAKIHdlYmtpdHRlc3RydW5uZXJfYnVpbHRfc291cmNlcyArPSBcCisJRGVyaXZlZFNvdXJjZXMv
SW5qZWN0ZWRCdW5kbGUvSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgXAorCURlcml2ZWRT
b3VyY2VzL0luamVjdGVkQnVuZGxlL0pTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIFwKKwlE
ZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0dD
Q29udHJvbGxlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0luamVjdGVkQnVuZGxlL0pTTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwIFwKQEAgLTcwLDYgKzc0LDE0IEBACiBCVUlMVF9TT1VSQ0VTICs9
ICQod2Via2l0dGVzdHJ1bm5lcl9idWlsdF9zb3VyY2VzKQogCiBMaWJyYXJpZXNfbGliVGVzdFJ1
bm5lckluamVjdGVkQnVuZGxlX2xhX1NPVVJDRVMgPSBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgXAorCVRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBc
CisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlci5jcHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIuaCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBcCisJVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgg
XAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5jcHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjdGl2YXRlRm9udHMuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9KU1dyYXBwYWJsZS5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0pTV3JhcHBlci5jcHAgXApJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci93aW4vSW5qZWN0ZWRCdW5kbGUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL0luamVjdGVkQnVuZGxlLnZjcHJvagkocmV2aXNpb24g
OTg5NzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9JbmplY3RlZEJ1bmRsZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTM5NCw2ICszOTQsMjE0IEBACiAJCQkJPgogCQkJPC9GaWxl
PgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEJpbmRpbmdz
XEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
PgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1
Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9D
YWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1
Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5q
ZWN0ZWRCdW5kbGVcQmluZGluZ3NcQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRsIgorCQkJCT4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJ
CS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJ
CS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxCaW5kaW5nc1xBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlLmlkbCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVc
QmluZGluZ3NcQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwiCisJCQkJPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
PgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1
Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJl
bGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
PgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXEluamVjdGVkQnVuZGxlXEJpbmRpbmdzXEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsIgog
CQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTYxOCw2ICs4MjYsMzggQEAKIAkJCU5h
bWU9IkRlcml2ZWQgU291cmNlcyIKIAkJCT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAiCiAJCQkJ
PgogCQkJPC9GaWxlPgpAQCAtNjUxLDYgKzg5MSwzOCBAQAogCQkJPC9GaWxlPgogCQk8L0ZpbHRl
cj4KIAkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuY3BwIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2
ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisJCQk+
CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVc
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
LmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0
ZWRCdW5kbGVcQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAiCisJCQk+CisJCTwvRmls
ZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZS5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxh
dGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIgor
CQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVu
ZGxlXEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQog
CQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVx3aW5cQWN0aXZhdGVGb250cy5jcHAi
CiAJCQk+CiAJCTwvRmlsZT4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0Rlcml2ZWRT
b3VyY2VzLm1ha2UJKHJldmlzaW9uIDk4OTc3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9E
ZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiwxMCBAQAogIwog
CiBJTlRFUkZBQ0VTID0gXAorICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyIFwKKyAgICBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciBcCisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBc
CisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBcCiAgICAgRXZlbnRTZW5kaW5nQ29udHJvbGxl
ciBcCiAgICAgR0NDb250cm9sbGVyIFwKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciBcCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRl
c3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTg5NzcpCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsMTcgQEAKIC8qIEJlZ2luIFBCWEJ1
aWxkRmlsZSBzZWN0aW9uICovCiAJCTBGNTE2OUNCMTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY1MTY5Q0ExNDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgKi87IH07CiAJ
CTBGNTE2OUNDMTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1MTY5Q0ExNDQ1MjIyRDAw
RTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgKi87IH07CisJCTI5MjEwRUFFMTQ0Q0FDQjcwMDgz
NUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUE5MTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLzsgfTsKKwkJMjkyMTBFQjAxNDRDQUNCRDAwODM1QkI1
IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUEyMTQ0Q0FBQTUwMDgzNUJCNSAvKiBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5jcHAgKi87IH07CisJCTI5MjEwRUI0MTQ0Q0FDRDUwMDgzNUJCNSAv
KiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIxMEVCMTE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIuY3BwICovOyB9OworCQkyOTIxMEVCNTE0NENBQ0Q1MDA4MzVCQjUgLyog
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIxMEVCMzE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJNYWMubW0gKi87IH07CisJCTI5MjEwRURBMTQ0Q0MzRUEwMDgzNUJCNSAv
KiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFQUIxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW0gKi87IH07CisJCTI5MjEwRURCMTQ0Q0Q0NzkwMDgzNUJCNSAv
KiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4MzkxM0QwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJMjkyMTBFRTExNDRDREIyNjAwODM1QkI1
IC8qIEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIxMEVEQjE0NjcyN0U3MTE4MzVCQjUgLyogSlNBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLzsgfTsKKwkJMjlBOEZDQ0IxNDVFRjAyRTAwOTA0NUE2
IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFRTExNDRDREU2Nzg5ODE1RUU1IC8qIEpTQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovOyB9OworCQkyOUE4RkNERDE0NUYwMzM3MDA5MDQ1
QTYgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QThGQ0UxMzQ1RTcwMjEwMDZBQTVBNiAv
KiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovOyB9OworCQkyOUE4RkNFMjE0
NUYwMzdCMDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4RkNFMTE0NUYwMzdC
MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgKi87IH07CisJCTI5
QThGQ0U1MTQ1RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBOEZD
RTQxNDVGMDQ2NDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0g
Ki87IH07CiAJCTUzMjJGQjQzMTNGREEwQ0QwMDQxQUJDQyAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hl
Y2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMy
MkZCNDExM0ZEQTBDRDAwNDFBQkNDIC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgKi87IH07
CiAJCTUzMjJGQjQ2MTNGREEwRUEwMDQxQUJDQyAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMjJGQjQ0MTNGREEw
RUEwMDQxQUJDQyAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCAqLzsgfTsKIAkJNTY0MUUyRDAxNDMz
NUU5NTAwODMwN0U1IC8qIEpTVGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NjQxRTJDRTE0MzM1RTk1MDA4MzA3RTUg
LyogSlNUZXh0SW5wdXRDb250cm9sbGVyLmNwcCAqLzsgfTsKQEAgLTg2LDYgKzk3LDI3IEBACiAK
IC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkwRjUxNjlDQTE0NDUyMjJE
MDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gV2ViS2l0LmZy
YW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMjkyMTBFQTIx
NDRDQUFBNTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQTMxNDRDQUFBNTAwODM1QkI1IC8q
IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTI5MjEwRUE4MTQ0Q0FCODgwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVBOTE0NENBQ0IyMDA4MzVCQjUgLyog
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMjkyMTBFQUExNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVBQjE0NENBQ0IyMDA4
MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW07IHBhdGgg
PSBtYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMjkyMTBFQjExNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQjIx
NDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEwRUIzMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIx
MEVEQjE0NjcyN0U3MTE4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJ
CTI5MjEwRURCMTQ2NzI3RTgxMTgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkyOTIx
MEVEQzE0NENENTZFMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTI5MjEwRUUxMTQ0Q0RFNjc4OTgxNUVFNSAvKiBKU0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMjkyMTBFRTExNDVDREU2Nzg5ODE1RUU1IC8qIEpT
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTI5QThGQ0M1MTQ1QjkzQzYwMDkwNDVBNiAvKiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOUE4RkNE
MjE0NUVGOEYyMDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTI5QThGQ0RGMTQ1RjAzNTgwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlBOEZD
RTExNDVGMDM3QjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5QThGQ0UxMzQ1RTcw
MjEwMDZBQTVBNiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKKwkJMjlBOEZDRTEzNDVFNzAyMTAwNkFBNUE3IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RS
dW5uZXIvSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmg7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTI5QThGQ0U0MTQ1RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbTsgcGF0aCA9IG1h
Yy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzNzhENDQyMjEzMzQ2RDAwMDA2QTc3N0IgLyogY29uZmlnLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIzMEUxNjEz
OEM3OEJGMDBCQ0NGQ0EgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5k
eWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQxODE3MzFCMTM4QUQzOUQwMDU3QUFBNCAvKiBXZWJD
b3JlVGVzdFN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQ29y
ZVRlc3RTdXBwb3J0Lmg7IHBhdGggPSBXZWJDb3JlVGVzdFN1cHBvcnQvV2ViQ29yZVRlc3RTdXBw
b3J0Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0xMDAsNiArMTMy
LDggQEAKIAkJNTY2NEE0OTkxNDMyNjM4NDAwODg4MUJFIC8qIFRleHRJbnB1dENvbnRyb2xsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dElucHV0Q29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NjcwQjgyNjEzODZGQzEzMDAyRUIzNTUg
LyogRXZlbnRTZW5kZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
dmVudFNlbmRlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU2NzBCODI3
MTM4NkZDQTUwMDJFQjM1NSAvKiBFdmVudFNlbmRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRXZlbnRTZW5kZXJQcm94eS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTgzOTEzRDAxNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
SlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJL
aXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1ODM5MTNEMTE0MzM1RTk1MDA4MzA3RTUgLyogSlNB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJL
aXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNjUxMEE3NzcxMUVDNjQzODAwNDEwODY3IC8qIEFIRU1f
X19fLlRURiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGZpbGU7IG5hbWUgPSAiQUhFTV9fX18uVFRGIjsgcGF0aCA9ICJmb250cy9BSEVNX19fXy5UVEYi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTEwQTc3ODExRUM2NDM4MDA0MTA4Njcg
LyogQ29sb3JCaXRzLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBDb2xvckJpdHMudHRmOyBwYXRoID0gZm9udHMvQ29sb3JC
aXRzLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMEE3NzkxMUVDNjQzODAw
NDEwODY3IC8qIFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IFdlYktpdFdlaWdodFdh
dGNoZXIxMDAudHRmOyBwYXRoID0gZm9udHMvV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGY7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDcsNiArMjgxLDI0IEBACiAJCQluYW1lID0g
UHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkyOUE4RkNFMDE0
NUYwMzVEMDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJMjkyMTBFQTIxNDRDQUFBNTAwODM1QkI1IC8qIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmNwcCAqLywKKwkJCQkyOTIxMEVBMzE0NENBQUE1MDA4MzVCQjUg
LyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCAqLywKKwkJCQkyOTIxMEVBOTE0NENBQ0IyMDA4
MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi8sCisJCQkJMjkyMTBFQUExNDRD
QUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAqLywKKwkJCQkyOTIxMEVB
QjE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLywKKwkJ
CQkyOTIxMEVCMTE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3Bw
ICovLAorCQkJCTI5MjEwRUIyMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlci5oICovLAorCQkJCTI5MjEwRUIzMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlck1hYy5tbSAqLywKKwkJCQkyOUE4RkNFMTE0NUYwMzdCMDA5MDQ1QTYgLyogQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgKi8sCisJCQkJMjlBOEZDREYxNDVGMDM1ODAw
OTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCAqLywKKwkJCQkyOUE4RkNF
NDE0NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbSAq
LywKKwkJCSk7CisJCQluYW1lID0gQWNjZXNzaWJpbGl0eTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCTY1RUI4NTlFMTFFQzY3Q0MwMDM0RDMwMCAvKiBtYWMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjU5LDYgKzMxMSw3IEBACiAJ
CUJDMTRFNEUwMTIwRTAyRjkwMDgyNkMwQyAvKiBDb250cm9sbGVycyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMjlBOEZDRTAxNDVGMDM1RDAwOTA0NUE2
IC8qIEFjY2Vzc2liaWxpdHkgKi8sCiAJCQkJQkM4RkQ4QzkxMjBFNTI3RjAwRjNFNzFBIC8qIEV2
ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwICovLAogCQkJCUJDOEZEOEM4MTIwRTUyN0YwMEYzRTcx
QSAvKiBFdmVudFNlbmRpbmdDb250cm9sbGVyLmggKi8sCiAJCQkJQkMxNEU0RDkxMjBFMDJEMDAw
ODI2QzBDIC8qIEdDQ29udHJvbGxlci5jcHAgKi8sCkBAIC0zNDUsNiArMzk4LDEwIEBACiAJCQkJ
QkM5NTJDMEUxMUYzQjk3QjAwMzM5OEI0IC8qIEpTV3JhcHBhYmxlLmggKi8sCiAJCQkJQkM5NTJD
MEMxMUYzQjk2NTAwMzM5OEI0IC8qIEpTV3JhcHBlci5jcHAgKi8sCiAJCQkJQkM5NTJDMEIxMUYz
Qjk2NTAwMzM5OEI0IC8qIEpTV3JhcHBlci5oICovLAorCQkJCTI5MjEwRUE4MTQ0Q0FCODgwMDgz
NUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwgKi8sCisJCQkJMjlBOEZDQzUxNDVC
OTNDNjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbCAqLywKKwkJCQkyOUE4
RkNEMjE0NUVGOEYyMDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGwg
Ki8sCisJCQkJMjkyMTBFREMxNDRDRDU2RTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaWRsICovLAogCQkJCUJDOEZEOENCMTIwRTUyQjAwMEYzRTcxQSAvKiBFdmVudFNlbmRpbmdD
b250cm9sbGVyLmlkbCAqLywKIAkJCQlCQzE0RTRFMTEyMEUwMzIwMDA4MjZDMEMgLyogR0NDb250
cm9sbGVyLmlkbCAqLywKIAkJCQlCQzk1MkVEMjExRjNDMjlGMDAzMzk4QjQgLyogTGF5b3V0VGVz
dENvbnRyb2xsZXIuaWRsICovLApAQCAtMzU2LDYgKzQxMywxNCBAQAogCQlCQzk1MkQzQTExRjNC
RjFGMDAzMzk4QjQgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1ODM5MTNEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8sCisJCQkJNTgzOTEzRDExNDMzNUU5NTAwODMwN0U1
IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCAqLywKKwkJCQkyOTIxMEVFMTE0NENERTY3
ODk4MTVFRTUgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8sCisJCQkJMjkyMTBF
RTExNDVDREU2Nzg5ODE1RUU1IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCAqLywKKwkJ
CQkyOUE4RkNFMTM0NUU3MDIxMDA2QUE1QTYgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlLmNwcCAqLywKKwkJCQkyOUE4RkNFMTM0NUU3MDIxMDA2QUE1QTcgLyogSlNBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlLmggKi8sCisJCQkJMjkyMTBFREIxNDY3MjdFNzExODM1QkI1IC8q
IEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi8sCisJCQkJMjkyMTBFREIxNDY3MjdFODEx
ODM1QkI1IC8qIEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oICovLAogCQkJCUJDOEZEOEQwMTIw
RTU0NUIwMEYzRTcxQSAvKiBKU0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwICovLAogCQkJCUJD
OEZEOEQxMTIwRTU0NUIwMEYzRTcxQSAvKiBKU0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCAqLywK
IAkJCQlCQzE0RTRFODEyMEUwM0Q4MDA4MjZDMEMgLyogSlNHQ0NvbnRyb2xsZXIuY3BwICovLApA
QCAtNTE2LDYgKzU4MSwxNyBAQAogCQkJCUMwQ0U3MjBCMTI0N0M5MzMwMEJDMEVDNCAvKiBMYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU2NjRBNDlBMTQzMjYz
ODQwMDg4ODFCRSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTU2NDFFMkQwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFQUUxNDRDQUNCNzAwODM1QkI1IC8qIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFQjAxNDRDQUNCRDAwODM1
QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5
MjEwRUI0MTQ0Q0FDRDUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkyOTIxMEVCNTE0NENBQ0Q1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkyOTIxMEVEQTE0NENDM0VBMDA4
MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTI5MjEwRURCMTQ0Q0Q0NzkwMDgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTI5MjEwRUUxMTQ0Q0RCMjYwMDgzNUJCNSAvKiBKU0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjlBOEZDQ0IxNDVFRjAy
RTAwOTA0NUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMjlBOEZDREQxNDVGMDMzNzAwOTA0NUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOUE4RkNFMjE0NUYwMzdCMDA5MDQ1QTYg
LyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQky
OUE4RkNFNTE0NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9T
a2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBl
ZAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBw
ZWQJKHdvcmtpbmcgY29weSkKQEAgLTc0MSwxNSArNzQxLDkgQEAKIGVkaXRpbmcvc2VsZWN0aW9u
L2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0aXBsZS1saW5lLWJveGVzLmh0bWwKIGVkaXRpbmcv
c2VsZWN0aW9uL3NoaWZ0LWNsaWNrLmh0bWwKIAotIyBJbXBsZW1lbnQgYWNjZXNpdGlsaXR5IHN1
cHBvcnQgdG8gV2ViS2l0MgotcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvYXJpYS1yb2xlcy11
bmlnbm9yZWQuaHRtbAotcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvYXJpYS1zbGlkZXItcmVx
dWlyZWQtYXR0cmlidXRlcy5odG1sCi1wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9hcmlhLXRh
YmxlLWhpZXJhcmNoeS5odG1sCi1wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9jYXJldC1icm93
c2luZy10ZXh0LWZvY3VzLmh0bWwKLXBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2lucHV0LXNs
aWRlci5odG1sCi1wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9saXN0LWl0ZW1zLWFsd2F5cy1l
eHBvc2VkLmh0bWwKLXBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L29iamVjdC13aXRoLXRpdGxl
Lmh0bWwKLXBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RhYmxlLWhpZXJhcmNoeS5odG1sCisj
IEltcGxlbWVudCBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQgZm9yIFdlYktpdDIKK2FjY2Vzc2liaWxp
dHkKK3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5CiAKICMgSW1wbGVtZW50IHRleHRJbnB1dENv
bnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UgaW50ZXJmYWNlCiBmYXN0L2Zvcm1z
L2N1cnNvci1hdC1lZGl0YWJsZS1jb250ZW50LWJvdW5kYXJ5Lmh0bWwKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1jaGlsZHJlbi13aGVuLWFyaWEt
cm9sZS1jaGFuZ2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMuaHRt
bAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwYXJlbnQiKS5mb2N1cygpOwogICAgICAgICB2YXIgcGFyZW50ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CiAgICAgICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGRB
dEluZGV4KDApLnJvbGUiLCAiJ0FYUm9sZTogQVhCdXR0b24nIik7Ci0gICAgICAgIHNob3VsZEJl
KCJwYXJlbnQuY2hpbGRBdEluZGV4KDEpLnJvbGUiLCAiJ0FYUm9sZTogJyIpOworICAgICAgICBz
aG91bGRCZVRydWUoInBhcmVudC5jaGlsZEF0SW5kZXgoMSkgPT0gbnVsbCB8fCBwYXJlbnQuY2hp
bGRBdEluZGV4KDEpLmlzVmFsaWQgPT0gZmFsc2UiKTsKICAgCiAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJidXR0b24xIikucmVtb3ZlQXR0cmlidXRlKCJyb2xlIik7CiAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24yIikuc2V0QXR0cmlidXRlKCJyb2xlIiwg
ImJ1dHRvbiIpOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
dGV4dGJveC1yb2xlLXJlcG9ydHMtbm90aWZpY2F0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRz
LW5vdGlmaWNhdGlvbnMuaHRtbAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0Ym94LXJvbGUtcmVwb3J0cy1ub3RpZmljYXRpb25z
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDYgKzEyLDcgQEAKIDxkaXYgcm9sZT0idGV4dGJv
eCIgaWQ9ImFyaWFUZXh0Qm94IiBhcmlhLW11bHRpbGluZT0iZmFsc2UiIHRhYmluZGV4PSIwIj5T
b21lIHRleHQgaW4gYSB0ZXh0Ym94LjwvZGl2PgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8
c2NyaXB0PgorICAgIHZhciB0ZXh0Ym94QXhFbGVtZW50OwogICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CiAgICAg
ICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKQEAgLTIw
LDcgKzIxLDcgQEAKIAogICAgICAgICB2YXIgYXJpYVRleHRCb3ggPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYXJpYVRleHRCb3giKTsKICAgICAgICAgYXJpYVRleHRCb3guZm9jdXMoKTsKLSAg
ICAgICAgdmFyIHRleHRib3hBeEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudDsKKyAgICAgICAgdGV4dGJveEF4RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmZvY3VzZWRFbGVtZW50OwogICAgICAgICB0ZXh0Ym94QXhFbGVtZW50LmFkZE5vdGlm
aWNhdGlvbkxpc3RlbmVyKGxvZ05vdGlmaWNhdGlvbik7CiAgICAgICAgIHBlbmRpbmdOb3RpZmlj
YXRpb25zID0gMzsKICAgICAgICAgYXJpYVRleHRCb3guZmlyc3RDaGlsZC5kZWxldGVEYXRhKDAs
IDUpOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1z
ZWN0aW9uLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rpb24tZWxlbWVudHMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA5ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTIwLDkgKzIwLDcgQEAKIFBBU1MgYm9keS5jaGlsZEF0SW5kZXgoNCkuc3Vicm9sZSBpcyAn
QVhTdWJyb2xlOiBBWExhbmRtYXJrTmF2aWdhdGlvbicKIFBBU1MgYm9keS5jaGlsZEF0SW5kZXgo
NSkuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWExhbmRtYXJrQ29tcGxlbWVudGFyeScKIFBBU1Mg
Ym9keS5jaGlsZEF0SW5kZXgoNikuY2hpbGRBdEluZGV4KDApLnN1YnJvbGUgaXMgJ0FYU3Vicm9s
ZTogJwotUEFTUyBib2R5LmNoaWxkQXRJbmRleCg2KS5jaGlsZEF0SW5kZXgoMSkuc3Vicm9sZSBp
cyAnQVhTdWJyb2xlOiAnCiBQQVNTIGJvZHkuY2hpbGRBdEluZGV4KDcpLmNoaWxkQXRJbmRleCgw
KS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6ICcKLVBBU1MgYm9keS5jaGlsZEF0SW5kZXgoNykuY2hp
bGRBdEluZGV4KDEpLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogJwogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdl
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA5ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L3VwZGF0ZS1jaGlsZHJlbi13aGVuLWFyaWEtcm9sZS1jaGFuZ2VzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAKIAogCiBQQVNTIHBhcmVudC5jaGls
ZEF0SW5kZXgoMCkucm9sZSBpcyAnQVhSb2xlOiBBWEJ1dHRvbicKLVBBU1MgcGFyZW50LmNoaWxk
QXRJbmRleCgxKS5yb2xlIGlzICdBWFJvbGU6ICcKK1BBU1MgcGFyZW50LmNoaWxkQXRJbmRleCgx
KSA9PSBudWxsIHx8IHBhcmVudC5jaGlsZEF0SW5kZXgoMSkuaXNWYWxpZCA9PSBmYWxzZSBpcyB0
cnVlCiBQQVNTIHBhcmVudC5jaGlsZEF0SW5kZXgoMCkucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRp
Y1RleHQnCiBQQVNTIHBhcmVudC5jaGlsZEF0SW5kZXgoMSkucm9sZSBpcyAnQVhSb2xlOiBBWEJ1
dHRvbicKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1wcmVkaWNhdGUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJl
ZGljYXRlLmh0bWwJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvc2VhcmNoLXByZWRpY2F0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
OCw3ICsxOCw3IEBACiA8aW5wdXQgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJDaGVja2JveCIgLz4g
Y2hlY2tib3g8YnIgLz4KIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiIC8+CiA8
L2Zvcm0+Ci08aW1nIGlkPSJpbWFnZSIgc3JjPSJyZXNvdXJjZXMvY2FrZS5wbmciIC8+Cis8aW1n
IGlkPSJpbWFnZSIgc3JjPSJyZXNvdXJjZXMvY2FrZS5wbmciIGFsdD0iVGVzdCI+CiA8aDE+Zmly
c3QgaGVhZGluZyBsZXZlbCAxPC9oMT4KIDxoMT5zZWNvbmQgaGVhZGluZyBsZXZlbCAxPC9oMT4K
IDxoMj5oZWFkaW5nIGxldmVsIDI8L2gyPgpAQCAtNTIsMTQgKzUyLDEzIEBACiAgICAgICAgIHZh
ciBzdGFydEVsZW1lbnQ7CiAgICAgICAgIHZhciBpc0RpcmVjdGlvbk5leHQ7CiAgICAgICAgIHZh
ciBzZWFyY2hLZXk7Ci0gICAgICAgIHZhciBzZWFyY2hUZXh0OworICAgICAgICB2YXIgc2VhcmNo
VGV4dCA9ICIiOwogICAgICAgICB2YXIgcmVzdWx0RWxlbWVudDsKICAgICAgICAgCiAgICAgICAg
IC8vIEFueSBlbGVtZW50LgogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0
aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEFueVR5cGVTZWFyY2hLZXki
OwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNv
bnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwg
aXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRC
ZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKICAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0
IGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKQEAgLTY4LDcgKzY3LDYgQEAKICAgICAgICAgc3RhcnRF
bGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hL
ZXkgPSAiQVhCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4
dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxl
bWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2Vh
cmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9s
ZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVu
dC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBibG9ja3F1
b3RlIGxldmVsIDEnIik7CkBAIC03Nyw3ICs3NSw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsK
ICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFY
QmxvY2txdW90ZVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAg
ICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVk
aWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4
dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhH
cm91cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDAp
LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpA
QCAtODYsNyArODMsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0
aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEJvbGRGb250U2VhcmNoS2V5
IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBj
b250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQs
IGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FY
VmFsdWU6IHNhbnMtc2VyaWYgYmxhY2sgYm9sZCB0ZXh0IHdpdGggdW5kZXJsaW5lJyIpOwpAQCAt
OTUsNyArOTEsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9u
TmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEJ1dHRvblNlYXJjaEtleSI7Ci0g
ICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFp
bmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0Rp
cmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhCdXR0b24nIik7CiAgICAgICAgIApAQCAt
MTAzLDcgKzk4LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlv
bk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhDaGVja0JveFNlYXJjaEtleSI7
Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBp
c0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhDaGVja0JveCciKTsKICAgICAgICAg
CkBAIC0xMTEsNyArMTA1LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0Rp
cmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhDaGVja0JveFNlYXJj
aEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50
ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVt
ZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNo
b3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhDaGVja0JveCciKTsKICAg
ICAgICAgCkBAIC0xMTksNyArMTEyLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAg
ICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhEaWZmZXJl
bnRUeXBlU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJl
c3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0
ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRp
Y1RleHQnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwg
IidBWFZhbHVlOiBmaXJzdCBibG9ja3F1b3RlIGxldmVsIDEnIik7CkBAIC0xMjgsNyArMTIwLDYg
QEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNl
ZEVsZW1lbnQuY2hpbGRBdEluZGV4KDIpOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVl
OwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhGb250Q2hhbmdlU2VhcmNoS2V5IjsKLSAgICAgICAg
c2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVt
ZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9u
TmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVz
dWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlcmlm
IGJsdWUgaXRhbGljIHRleHQnIik7CkBAIC0xMzcsNyArMTI4LDYgQEAKICAgICAgICAgc3RhcnRF
bGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDIpOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hL
ZXkgPSAiQVhGb250Q29sb3JDaGFuZ2VTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0g
bnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50
Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hL
ZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwg
IidBWFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNo
aWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2VyaWYgYmx1ZSBpdGFsaWMg
dGV4dCciKTsKQEAgLTE0OSw3ICsxMzksNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAg
ICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEdyYXBo
aWNTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0
RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0
YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAg
ICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSW1hZ2UnIik7
CiAgICAgICAgIApAQCAtMTU3LDcgKzE0Niw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAg
ICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVh
ZGluZ0xldmVsMVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAg
ICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVk
aWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4
dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhI
ZWFkaW5nJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgo
MCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGhlYWRpbmcgbGV2ZWwgMSciKTsKQEAg
LTE2Niw3ICsxNTQsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0
aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDJTZWFy
Y2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVu
dCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxl
bWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVl
IiwgIidBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDInIik7CkBAIC0xNzUsNyArMTYyLDYgQEAKICAg
ICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAg
ICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5IjsKLSAgICAgICAgc2Vh
cmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50
LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4
dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1l
bnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGlu
ZyBsZXZlbCAzJyIpOwpAQCAtMTg0LDcgKzE3MCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsK
ICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFY
SGVhZGluZ0xldmVsNFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAg
ICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQ
cmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNo
VGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTog
QVhIZWFkaW5nJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgNCciKTsKQEAgLTE5
Myw3ICsxNzgsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9u
TmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDVTZWFyY2hL
ZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9
IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVu
dCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwg
IidBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDUnIik7CkBAIC0yMDIsNyArMTg2LDYgQEAKICAgICAg
ICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAg
ICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNo
VGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVp
RWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwg
c2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
cm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBs
ZXZlbCA2JyIpOwpAQCAtMjExLDcgKzE5NCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCg2KTsKICAg
ICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVh
ZGluZ1NhbWVMZXZlbFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAg
ICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQ
cmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNo
VGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTog
QVhIZWFkaW5nJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBoZWFkaW5nIGxldmVsIDEnIik7
CkBAIC0yMjAsNyArMjAyLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0Rp
cmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nU2VhcmNo
S2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQg
PSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1l
bnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIs
ICInQVhWYWx1ZTogZmlyc3QgaGVhZGluZyBsZXZlbCAxJyIpOwpAQCAtMjI5LDcgKzIxMCw2IEBA
CiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsK
ICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSXRhbGljRm9udFNlYXJjaEtleSI7Ci0gICAgICAgIHNl
YXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVu
dC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5l
eHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVt
ZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzZXJpZiBi
bHVlIGl0YWxpYyB0ZXh0JyIpOwpAQCAtMjM4LDcgKzIxOCw2IEBACiAgICAgICAgIHN0YXJ0RWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5
ID0gIkFYTGFuZG1hcmtTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAg
ICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNo
UHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJj
aFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6
IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN1YnJvbGUiLCAi
J0FYU3Vicm9sZTogQVhMYW5kbWFya0Jhbm5lciciKTsKQEAgLTI0Nyw3ICsyMjYsNiBAQAogICAg
ICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAg
ICAgIHNlYXJjaEtleSA9ICJBWExpbmtTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0g
bnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50
Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hL
ZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwg
IidBWFJvbGU6IEFYTGluayciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hp
bGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBsaW5rJyIpOwpAQCAtMjU2LDcg
KzIzNCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0
ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYTGlzdFNlYXJjaEtleSI7Ci0gICAgICAg
IHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxl
bWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlv
bk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhMaXN0JyIpOwogICAgICAgICAKQEAgLTI2NCw3ICsy
NDEsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9
IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWExpdmVSZWdpb25TZWFyY2hLZXkiOwotICAg
ICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5l
ckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJl
Y3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVz
dWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEFSSUFMaXZlJykiLCAiJ3Bv
bGl0ZSciKTsKQEAgLTI3Niw3ICsyNTIsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAg
ICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFBsYWlu
VGV4dFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1
bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUo
c3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNU
ZXh0JyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICIn
QVhWYWx1ZTogZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpAQCAtMjg1LDcgKzI2MCw2IEBA
CiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsK
ICAgICAgICAgc2VhcmNoS2V5ID0gIkFYUmFkaW9Hcm91cFNlYXJjaEtleSI7Ci0gICAgICAgIHNl
YXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVu
dC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5l
eHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVt
ZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhSYWRpb0dyb3VwJyIpOwogICAgICAgICAKQEAgLTI5Myw3
ICsyNjcsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4
dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFNhbWVUeXBlU2VhcmNoS2V5IjsKLSAg
ICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWlu
ZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGly
ZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJl
c3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRC
ZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6
IHNlY29uZCBibG9ja3F1b3RlIGxldmVsIDEnIik7CkBAIC0zMDIsNyArMjc1LDYgQEAKICAgICAg
ICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAg
ICBzZWFyY2hLZXkgPSAiQVhTdGF0aWNUZXh0U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4
dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxl
bWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2Vh
cmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9s
ZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCBibG9ja3F1b3RlIGxldmVsIDEn
Iik7CkBAIC0zMTEsNyArMjgzLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDIpOwogICAgICAgICBp
c0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhTdHlsZUNoYW5n
ZVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRF
bGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3Rh
cnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIiwgIidBWFZhbHVlOiBzZXJpZiBibHVlIGl0YWxpYyB0ZXh0JyIpOwpAQCAtMzIwLDcgKzI5
MSw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgxOCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9
IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5IjsK
LSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250
YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlz
RGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUo
InJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFRhYmxlJyIpOwogICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLmNoaWxk
QXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Vjb25kIHRhYmxlIGhlYWRpbmcg
bGV2ZWwgMSciKTsKQEAgLTMyOSw3ICsyOTksNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAg
ICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFRh
YmxlU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3Vs
dEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShz
dGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFRhYmxlJyIp
OwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRB
dEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogZmlyc3Qg
dGFibGUgaGVhZGluZyBsZXZlbCAxJyIpOwpAQCAtMzM4LDcgKzMwNyw2IEBACiAgICAgICAgIHN0
YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2Vh
cmNoS2V5ID0gIkFYVGV4dEZpZWxkU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51
bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZv
clNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5
LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICIn
QVhSb2xlOiBBWFRleHRGaWVsZCciKTsKICAgICAgICAgCkBAIC0zNDYsNyArMzE0LDYgQEAKICAg
ICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAg
ICAgICBzZWFyY2hLZXkgPSAiQVhVbmRlcmxpbmVTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hU
ZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlF
bGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBz
ZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5y
b2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVt
ZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Fucy1zZXJpZiBi
bGFjayBib2xkIHRleHQgd2l0aCB1bmRlcmxpbmUnIik7CkBAIC0zNTUsNyArMzIyLDYgQEAKICAg
ICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAg
ICAgICBzZWFyY2hLZXkgPSAiQVhVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5IjsKLSAgICAgICAgc2Vh
cmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50
LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4
dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1l
bnQucm9sZSIsICInQVhSb2xlOiBBWExpbmsnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogbGluayciKTsK
QEAgLTM2Niw3ICszMzIsNyBAQAogICAgICAgICAvLyBQcmV2aW91cyB0ZXh0IHNlYXJjaC4KICAg
ICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQuY2hpbGRBdEluZGV4KDEwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gZmFsc2U7Ci0g
ICAgICAgIHNlYXJjaEtleSA9IG51bGw7CisgICAgICAgIHNlYXJjaEtleSA9ICIiOwogICAgICAg
ICBzZWFyY2hUZXh0ID0gInNhbnMtc2VyaWYgYmxhY2sgYm9sZCB0ZXh0IHdpdGggdW5kZXJsaW5l
IjsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9y
U2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXks
IHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidB
WFJvbGU6IEFYU3RhdGljVGV4dCciKTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50cy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50
cy5odG1sCShyZXZpc2lvbiA5ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00
NiwxMSArNDYsOSBAQAogCiAgICAgICAgICAgLy8gV2hlbiBhIGhlYWRlciBhbmQgZm9vdGVyIGFy
ZSBpbnNpZGUgYW4gYXJ0aWNsZSwgdGhleSBzaG91bGQgbm90IGJlIGxhbmRtYXJrcy4KICAgICAg
ICAgICBzaG91bGRCZSgiYm9keS5jaGlsZEF0SW5kZXgoNikuY2hpbGRBdEluZGV4KDApLnN1YnJv
bGUiLCAiJ0FYU3Vicm9sZTogJyIpOwotICAgICAgICAgIHNob3VsZEJlKCJib2R5LmNoaWxkQXRJ
bmRleCg2KS5jaGlsZEF0SW5kZXgoMSkuc3Vicm9sZSIsICInQVhTdWJyb2xlOiAnIik7CiAKICAg
ICAgICAgICAvLyBXaGVuIGEgaGVhZGVyIGFuZCBmb290ZXIgYXJlIGluc2lkZSBhIHNlY3Rpb24s
IHRoZXkgc2hvdWxkIG5vdCBiZSBsYW5kbWFya3MuCiAgICAgICAgICAgc2hvdWxkQmUoImJvZHku
Y2hpbGRBdEluZGV4KDcpLmNoaWxkQXRJbmRleCgwKS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6ICci
KTsKLSAgICAgICAgICBzaG91bGRCZSgiYm9keS5jaGlsZEF0SW5kZXgoNykuY2hpbGRBdEluZGV4
KDEpLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogJyIpOwogICAgIH0KIAogICAgIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4td2syL1NraXBw
ZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLXdrMi9Ta2lwcGVkCShy
ZXZpc2lvbiA5ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi13azIvU2tpcHBlZAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDkgQEAKICMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICMKIAotIyBXZWJL
aXQyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eQotIyA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMwPgotIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRv
IHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1yZWxhdGVkIERSVCBBUElzCi0jIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxMzE+CisjIFdpbmRvd3MgZG9lcyBub3Qgc3Vw
cG9ydCBXZWJLaXQyIGFjY2Vzc2liaWxpdHkuCisjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzEyOTY+CithY2Nlc3NpYmlsaXR5CiBwbGF0Zm9ybS93aW4vYWNjZXNz
aWJpbGl0eQogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgYW4gaW1wbGVtZW50YXRpb24gb2Yg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEljb25DaGFuZ2VzCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvU2tpcHBlZAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
U2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDExIEBACiAjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMgU1RBUlQgT0YgKDEpIENsYXNzaWZpZWQg
ZmFpbHVyZXMgd2l0aCBidWcgcmVwb3J0cwogCi0jIFdlYktpdDIgbmVlZHMgdG8gc3VwcG9ydCBh
Y2Nlc3NpYmlsaXR5Ci0jIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDIxMzA+Ci0jIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5
LXJlbGF0ZWQgRFJUIEFQSXMKLSMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MjEzMT4KLWFjY2Vzc2liaWxpdHkKLXBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5Cisj
IEFYIHRlc3RzIHRoYXQgcmVxdWlyZSBoaXQgdGVzdGluZyBkbyBub3Qgd29yayBpbiBXSzIuCisj
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEyOTg+CitwbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNsaWRlci1pbmRpY2F0b3IuaHRtbAorcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvbGlzdGJveC1oaXQtdGVzdC5odG1sCitwbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9pZnJhbWUtd2l0aC10aXRsZS1jb3JyZWN0LWhpZXJhcmNoeS5odG1sCiAKICMg
U29tZSBjb21wb3NpdGluZyB0ZXN0cyBmbGFrZXkKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00ODM1ND4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
YXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxh
YmVsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2FyaWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQAogCiAKIFBBU1MgdGV4dC5kZXNjcmlwdGlvbiBpcyAn
QVhEZXNjcmlwdGlvbjogU2h1dCBkb3duIGNvbXB1dGVyIGFmdGVyIDEwIG1pbnV0ZXMnCi1QQVNT
IHRleHQudGl0bGVVSUVsZW1lbnQoKS5pc1ZhbGlkIGlzIGZhbHNlCitQQVNTIHRleHQudGl0bGVV
SUVsZW1lbnQoKSAhPSBudWxsICYmIHRleHQudGl0bGVVSUVsZW1lbnQoKS5pc1ZhbGlkIGlzIGZh
bHNlCiBQQVNTIGxhYmVsRWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxh
YmVsLmh0bWwJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9h
cmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDcgKzI5LDcgQEAKICAgICAgICAgICBzaG91bGRCZSgidGV4dC5kZXNjcmlwdGlvbiIsICInQVhE
ZXNjcmlwdGlvbjogU2h1dCBkb3duIGNvbXB1dGVyIGFmdGVyIDEwIG1pbnV0ZXMnIik7CiAKICAg
ICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUgbm8gdGl0bGUgVUkgZWxlbWVudC4KLSAgICAgICAg
ICBzaG91bGRCZSgidGV4dC50aXRsZVVJRWxlbWVudCgpLmlzVmFsaWQiLCAiZmFsc2UiKTsKKyAg
ICAgICAgICBzaG91bGRCZSgidGV4dC50aXRsZVVJRWxlbWVudCgpICE9IG51bGwgJiYgdGV4dC50
aXRsZVVJRWxlbWVudCgpLmlzVmFsaWQiLCAiZmFsc2UiKTsKICAgICAgICAgICAKICAgICAgICAg
ICAvLyBUaGUgbGFiZWwgZWxlbWVudCBpcyBpbiBhIGdyb3VwLCBpbiBhIGdyb3VwLCBpbiB0aGUg
d2ViIGFyZWEuCiAgICAgICAgICAgdmFyIGxhYmVsRWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLnJvb3RFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRB
dEluZGV4KDApLmNoaWxkQXRJbmRleCgwKTsKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvdGgtYXMtdGl0bGUtdWkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L3RoLWFzLXRpdGxlLXVpLmh0bWwJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90aC1hcy10aXRsZS11aS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw4ICszMiw3IEBACiAgICAgICAgICAgICBib2R5LmZvY3VzKCk7CiAgICAgICAgICAgICB2YXIg
Z3JvdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5k
ZXgoMSk7CiAgICAgICAgICAgICB2YXIgZ3JvdXAyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Zm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDMpOwotCi0gICAgICAgICAgICBpZiAoZ3JvdXAu
dGl0bGVVSUVsZW1lbnQoKS5hbGxBdHRyaWJ1dGVzKCkgIT0gIiIgJiYgZ3JvdXAyLnRpdGxlVUlF
bGVtZW50KCkuYWxsQXR0cmlidXRlcygpID09ICIiKQorICAgICAgICAgICAgaWYgKGdyb3VwLnRp
dGxlVUlFbGVtZW50KCkuYWxsQXR0cmlidXRlcygpICE9ICIiICYmIChncm91cDIudGl0bGVVSUVs
ZW1lbnQoKSA9PSBudWxsIHx8IGdyb3VwMi50aXRsZVVJRWxlbWVudCgpLmFsbEF0dHJpYnV0ZXMo
KSA9PSAiIikpIAogICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlBhc3MiOwog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIkZh
aWwiOwpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub24tZGF0YS10YWJsZS1jZWxs
LXRpdGxlLXVpLWVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L25vbi1kYXRhLXRhYmxlLWNlbGwtdGl0bGUtdWktZWxlbWVudC5odG1sCShyZXZpc2lv
biA5ODk3NykKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbm9uLWRhdGEtdGFibGUtY2Vs
bC10aXRsZS11aS1lbGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDkgQEAK
ICAgICAgICAgICAgIC8vIGdldCB0aGUgPHRoPnNraXA8L3RoPiBlbGVtZW50CiAgICAgICAgICAg
ICB2YXIgZ3JvdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGls
ZEF0SW5kZXgoNSk7CiAgICAgICAgICAgICB2YXIgdGl0bGVVSSA9IGdyb3VwLnRpdGxlVUlFbGVt
ZW50KCk7Ci0gICAgICAgICAgICB2YXIgYWxsQXR0cmlidXRlcyA9IHRpdGxlVUkuYWxsQXR0cmli
dXRlcygpOworICAgICAgICAgICAgdmFyIGFsbEF0dHJpYnV0ZXMgPSAiIjsKKyAgICAgICAgICAg
IGlmICh0aXRsZVVJKQorICAgICAgICAgICAgICAgIGFsbEF0dHJpYnV0ZXMgPSB0aXRsZVVJLmFs
bEF0dHJpYnV0ZXMoKTsKIAogICAgICAgICAgICAgLy8gdmVyaWZ5IGl0IGhhcyBubyB0aXRsZSB1
aSBlbGVtZW50ICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghYWxsQXR0cmlidXRlcykgewpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAxMS0xMS0wMSAgQ2hyaXMgRmxlaXphY2ggIDxj
ZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8g
c3VwcG9ydCBhY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgRFJUIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMxCisKKyAgICAgICAgQ2xlYW51cCB0
ZXN0cyBhbmQgc2tpcCBsaXN0cyBzbyB0aGF0IGFjY2Vzc2liaWxpdHkgdGVzdHMgY2FuIHJ1bgor
ICAgICAgICBpbiBXSzIuIFRoaXMgbW9zdGx5IGludm9sdmVkIGhhbmRsaW5nIHJldHVybmVkIGVs
ZW1lbnRzIHRoYXQgbWlnaHQgYmUgbmlsLAorICAgICAgICBzb21ldGhpbmcgdGhhdCBkaWQgbm90
IGhhcHBlbiBpbiBEUlQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92
ZXJyaWRlcy1sYWJlbC5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbm9uLWRhdGEtdGFi
bGUtY2VsbC10aXRsZS11aS1lbGVtZW50Lmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS90
aC1hcy10aXRsZS11aS5odG1sOgorICAgICAgICAgICAgIE1ha2Ugc3VyZSBhIG5pbCB0aXRsZVVJ
RWxlbWVudCBpcyBhY2NvdW50ZWQgZm9yIGluIHRoZXNlIHRlc3RzLgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay13azIvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9odG1sLXNlY3Rpb24tZWxlbWVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50cy5odG1sOgorICAgICAgICAg
ICAgIFJlbW92ZSBuaWwgZWxlbWVudCBhY2Nlc3MgdGhhdCBpcyB1bm5lY2Vzc2FyeS4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGljYXRlLmh0bWw6Cisg
ICAgICAgICAgICAgQWRkIGFuIGFsdCB0YWcgdG8gPGltZz4gc28gdGhhdCBpdCBhbHdheXMgc2hv
d3MgdXAgaW4gdGhlIEFYIHRyZWUuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvdGV4dGJveC1yb2xlLXJlcG9ydHMtbm90aWZpY2F0aW9ucy5odG1sOgorICAgICAgICAgICAg
IFJlbW92ZSB0aGUgbm90aWZpY2F0aW9uIGxpc3RlbmVyIHByb3Blcmx5ICh3YXMgY2F1c2luZyBm
bGFraW5lc3MpLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1j
aGlsZHJlbi13aGVuLWFyaWEtcm9sZS1jaGFuZ2VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUt
Y2hhbmdlcy5odG1sOgorICAgICAgICAgICAgIEFjY291bnQgZm9yIHdoZW4gZWxlbWVudCdzIHJl
dHVybmVkIGFyZSBuaWwuCisgICAgICAgICogcGxhdGZvcm0vd2luLXdrMi9Ta2lwcGVkOgorICAg
ICAgICAgICAgIFNraXAgYWxsIGFjY2Vzc2liaWxpdHkgdGVzdHMgb24gd2luLgorICAgICAgICAq
IHBsYXRmb3JtL3drMi9Ta2lwcGVkOgorICAgICAgICAgICAgIFNraXAgYWxsIGFjY2Vzc2liaWxp
dHkgdGVzdHMgb24gZ3RrLgorCiAyMDExLTExLTAxICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IENoYW5nZUxvZyB3aGljaCBicm9r
ZSBpbiByOTg3MzMuCg==
</data>
<flag name="review"
          id="111462"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="111467"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113348</attachid>
            <date>2011-11-02 12:13:12 -0700</date>
            <delta_ts>2011-11-02 18:34:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>180714</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA5ODk3NykKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDcgQEAKIF9f
Wk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTEwcm9vdE9iamVjdEV2CiBfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUxOHJvb3RPYmplY3RGb3JGcmFtZUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3Jl
MTNBWE9iamVjdENhY2hlMjFnQWNjZXNzaWJpbGl0eUVuYWJsZWRFCitfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUyM2ZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlRVBLTlNfNFBhZ2VFCiBfX1pON1dl
YkNvcmUxM0FYT2JqZWN0Q2FjaGU0MmdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNl
RW5hYmxlZEUKIF9fWk43V2ViQ29yZTEzSFRUUEhlYWRlck1hcEMxRXYKIF9fWk43V2ViQ29yZTEz
SFRUUEhlYWRlck1hcEQxRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MDg2KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTEtMTEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1yZWxhdGVk
IERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MjEzMQorCisgICAgICAgIE1pbm9yIGNoYW5nZXMgbmVlZGVkIHRvIHN1cHBvcnQgQVggdGVz
dGluZyBpbiBXS1Rlc3RSdW5uZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgICAgICBFeHBvc2UgZm9j
dXNlZFVJRWxlbWVudEZvclBhZ2Ugc28gdGhhdCB0aGUgV0syIGluamVjdGVkIGJ1bmRsZSBjYW4g
cmV0cmlldmUgaXQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKToKKyAgICAgICAgICAgIFJlbW92ZSBhbiB1bm5jZXNzYXJ5IGFzc2VydCB0aGF0IHdhcyBj
YXVzaW5nIGlzc3VlcyB3aXRoIHRoZSBXSzIgdGVzdCBydW4uCisKIDIwMTEtMTEtMDIgIFpvbHRh
biBIZXJjemVnICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KIAogICAgICAgICBNYXRjaCBhbGxvd2Vk
IENTUyBzdHJpbmcgY2hhcmFjdGVycyB0byBGaXJlZm94IGFuZCBPcGVyYSBicm93c2VycwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHJldmlzaW9uIDk4OTc3KQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5NSw3ICs0OTUsOCBAQAogCiBzdGF0aWMgQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleSBhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgQVNTRVJUKCF2YWx1ZS5pc0VtcHR5KCkpOworICAgIGlm
ICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBBbnlUeXBlU2VhcmNoS2V5OwogICAg
IAogICAgIHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKiBzZWFyY2hLZXlN
YXAgPSBjcmVhdGVBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKCk7CiAgICAgCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVBy
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAkocmV2aXNpb24gOTg5NzcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOSBAQAogV0tfRVhQT1JUIHZv
aWQgV0tCdW5kbGVQYWdlQ29uZmlybUNvbXBvc2l0aW9uKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsK
IFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNvbmZpcm1Db21wb3NpdGlvbldpdGhUZXh0KFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0ZXh0KTsKIAorV0tfRVhQT1JUIHZvaWQq
IFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoV0tCdW5kbGVQYWdlUmVmKTsKK1dLX0VYUE9SVCB2
b2lkKiBXS0FjY2Vzc2liaWxpdHlGb2N1c2VkT2JqZWN0KFdLQnVuZGxlUGFnZVJlZik7ICAgIAor
CiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcAkocmV2aXNpb24gOTg5NzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDExIEBACiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVx
dWVzdC5oIgogCisjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC0xMjYsNiArMTMwLDQ2IEBACiAgICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChwYWdlUmVmKS0+bWFpbldlYkZyYW1lKCkpOwogfQogCit2b2lkKiBX
S0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQoreworICAg
IGlmICghcGFnZVJlZikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgV2ViQ29yZTo6UGFn
ZSogcGFnZSA9IHRvSW1wbChwYWdlUmVmKS0+Y29yZVBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisg
ICAgICAgIHJldHVybiAwOworICAgIAorICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlID0gcGFnZS0+
bWFpbkZyYW1lKCk7CisgICAgaWYgKCFjb3JlIHx8ICFjb3JlLT5kb2N1bWVudCgpKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICAKKyAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplbmFibGVBY2Nl
c3NpYmlsaXR5KCk7CisKKyAgICBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb290ID0g
Y29yZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yb290T2JqZWN0KCk7CisgICAgaWYg
KCFyb290KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gcm9vdC0+d3JhcHBl
cigpOworfQorCit2b2lkKiBXS0FjY2Vzc2liaWxpdHlGb2N1c2VkT2JqZWN0KFdLQnVuZGxlUGFn
ZVJlZiBwYWdlUmVmKQoreworICAgIGlmICghcGFnZVJlZikKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgCisgICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IHRvSW1wbChwYWdlUmVmKS0+Y29yZVBhZ2Uo
KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiAwOworCisgICAgV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOworCisgICAgV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdCogZm9jdXNlZE9iamVjdCA9IFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZv
Y3VzZWRVSUVsZW1lbnRGb3JQYWdlKHBhZ2UpOworICAgIGlmICghZm9jdXNlZE9iamVjdCkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIGZvY3VzZWRPYmplY3QtPndyYXBwZXIo
KTsKK30KKwogdm9pZCBXS0J1bmRsZVBhZ2VTdG9wTG9hZGluZyhXS0J1bmRsZVBhZ2VSZWYgcGFn
ZVJlZikKIHsKICAgICB0b0ltcGwocGFnZVJlZiktPnN0b3BMb2FkaW5nKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiA5OTA4NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTExLTAyICBDaHJpcyBGbGVpemFjaCAgPGNm
bGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0byBz
dXBwb3J0IGFjY2Vzc2liaWxpdHktcmVsYXRlZCBEUlQgQVBJcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxMzEKKworICAgICAgICBBbGxvdyB0aGUg
aW5qZWN0ZWQgYnVuZGxlIHRvIHJldHJpZXZlIHRoZSBmb2N1c2VkIGFuZCByb290IGFjY2Vzc2li
aWxpdHkKKyAgICAgICAgb2JqZWN0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QpOgorICAgICAg
ICAoV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmg6CisKIDIwMTEtMTEtMDIg
IENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3Nh
Lm9yZz4KIAogICAgICAgICBbUXRdIEltcGxlbWVudCBtZXNzYWdlIGV4Y2hhbmdlIGJldHdlZW4g
V2ViVmlldyBhbmQgdGhlIHdlYiBwYWdlCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTA4NikKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzMSBAQAorMjAxMS0xMS0wMiAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIg
bmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgRFJUIEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMxCisKKyAgICAgICAg
UG9ydCB0aGUgQVggY29kZSBpbiBEUlQgdG8gV0tUZXN0UnVubmVyIGJ5IHVzaW5nIElETC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0dOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcik6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjp+QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bWFrZVdpbmRvd09iamVjdCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjp3cmFwcGVyQ2xhc3MpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZWxlbWVudEF0UG9pbnQpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
aDogQWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dGb2N1
c0V2ZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dWYWx1
ZUNoYW5nZUV2ZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjps
b2dTY3JvbGxpbmdTdGFydEV2ZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250
cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6Om5vdGlmaWNhdGlvblJlY2VpdmVkKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcjo6d3JhcHBlckNsYXNzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg6IEFkZGVkLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6cGxhdGZvcm1UZXh0TWFya2VyKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6On5BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpp
c0VxdWFsKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZTo6d3JhcHBlckNsYXNzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVhbCk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndyYXBwZXJDbGFzcyk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmFsaWQpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzcGVhayk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJhbmdlRm9yTGluZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcik6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJr
ZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwbGF0Zm9ybVVJRWxlbWVudCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGw6
IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250
cm9sbGVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmJlZ2luVGVz
dGluZyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6YWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpk
aWRDbGVhcldpbmRvd0ZvckZyYW1lKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAg
ICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlck1hYy5tbTogQWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
Ojppc0VxdWFsKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVhbCk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbTogQWRkZWQuCisgICAgICAgICgrW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpd
KToKKyAgICAgICAgKC1bTlNTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdKToKKyAgICAgICAgKC1b
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgaW5pdFdpdGhQbGF0Zm9ybUVsZW1lbnQ6
XSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGRlYWxsb2Nd
KToKKyAgICAgICAgKC1bQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgX25vdGlmaWNh
dGlvblJlY2VpdmVkOl0pOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlciBzZXRDYWxsYmFjazpdKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKKyAgICAgICAgKFdUUjo6ZGVzY3Jp
cHRpb25PZlZhbHVlKToKKyAgICAgICAgKFdUUjo6YXR0cmlidXRlc09mRWxlbWVudCk6CisgICAg
ICAgIChXVFI6OmNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUpOgorICAgICAgICAoV1RSOjpj
b252ZXJ0TlNBcnJheVRvVmVjdG9yKToKKyAgICAgICAgKFdUUjo6ZGVzY3JpcHRpb25PZkVsZW1l
bnRzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlF
bGVtZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldERvY3Vt
ZW50TGlua3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGls
ZHJlbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVu
V2l0aFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRy
ZW5Db3VudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRB
dFBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhPZkNo
aWxkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50
QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25z
RWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
cmlhRmxvd1RvRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdyk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZEb2N1bWVudExp
bmtzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09m
Q2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRy
aWJ1dGVzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0
cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1i
ZXJBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmJvb2xBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzQXR0cmlidXRlU2V0dGFibGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcyk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzdWJyb2xlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cm9sZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGl0bGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNj
cmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0
aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnkpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3
aWR0aCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlaWdodCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRYKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFkpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pblZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bWF4VmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXBwb3J0ZWQpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0VuYWJsZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNGb2N1c2VkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNTZWxlY3RlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
RXhwYW5kZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNr
ZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxM
ZXZlbCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cyk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0ZvclJhbmdlKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJ
c01pc3NwZWxsZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVs
ZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycyk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mVmlzaWJsZUNlbGxzKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVhZGVy
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93Q291bnQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5Db3VudCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4SW5UYWJsZSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0luZGV4UmFuZ2UpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0UmFu
Z2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnQpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzaG93TWVudSk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnVybCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0NvbGxhcHNlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzSWdub3JlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhh
c1BvcHVwKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZUZvY3Vz
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZVNlbGVjdGlvbik6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNlbGVjdGlvbik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVs
ZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2Vy
UmFuZ2VMZW5ndGgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2
aW91c1RleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpu
ZXh0VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1h
cmtlckZvclBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNj
ZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vTGF5b3V0VGVz
dENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1OYW1lKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5u
ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L3dpbi9JbmplY3RlZEJ1bmRsZS52Y3Byb2o6CisKIDIwMTEtMTEtMDIgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gUkVHUkVTU0lPTjog
NSBlZGl0aW5nIHRlc3RzIGZhaWwKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIu
Y3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisKKyNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlci5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIu
aD4KKworbmFtZXNwYWNlIFdUUiB7CisgICAgCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyPiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKFBsYXRmb3JtVGV4dE1hcmtl
ciBtYXJrZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcihtYXJrZXIpKTsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciYgbWFya2VyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIobWFya2VyKSk7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXIgbWFya2VyKQorICAgIDogbV90ZXh0
TWFya2VyKG1hcmtlcikKK3sKK30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJiBtYXJrZXIpCisg
ICAgOiBtX3RleHRNYXJrZXIobWFya2VyLnBsYXRmb3JtVGV4dE1hcmtlcigpKQoreworfQorCitB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6fkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKCkKK3sKK30K
KworUGxhdGZvcm1UZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpwbGF0Zm9ybVRl
eHRNYXJrZXIoKSBjb25zdAoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gbV90ZXh0
TWFya2VyLmdldCgpOworI2VsaWYKKyAgICByZXR1cm4gbV90ZXh0TWFya2VyOworI2VuZGlmCit9
CisgICAgCitKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp3cmFwcGVyQ2xhc3Mo
KQoreworICAgIHJldHVybiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjphY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlckNsYXNzKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgorCkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmgiCisKKyNpbmNsdWRlICJKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV1RS
IHsKKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjcmVhdGUoUGxhdGZvcm1VSUVsZW1lbnQgdWlFbGVtZW50KQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCh1aUVsZW1lbnQpKTsKK30KKyAg
ICAKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIHVpRWxlbWVudCkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQodWlFbGVtZW50
KSk7Cit9CisKK0pTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d3JhcHBlckNsYXNz
KCkKK3sKKyAgICByZXR1cm4gSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Q2xhc3MoKTsKK30KKyAgICAKKy8vIEltcGxlbWVudGF0aW9uCisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWYWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZWxl
bWVudDsgICAgICAgICAgICAKK30KKyAgICAKKy8vIFVuc3VwcG9ydGVkIG1ldGhvZHMgb24gdmFy
aW91cyBwbGF0Zm9ybXMuCisjaWYgIVBMQVRGT1JNKE1BQykKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVhaygpIHsgcmV0dXJuIDA7IH0KK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUo
aW50IGxpbmUpIHsgcmV0dXJuIDA7IH0KK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0
U2VsZWN0ZWRDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KikgY29uc3QgeyB9Cit1bnNpZ25l
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25zdCB7
IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiAwOyB9CitB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxT
Y3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4g
MDsgfQorCisvLyBUZXh0IG1hcmtlciBzdXBwb3J0IChvbmx5IHN1cHBvcnRlZCBvbiB0aGUgTWFj
IHJpZ2h0IG5vdykKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KikgeyByZXR1cm4gMDsgfQoraW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJS
YW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4gMDsgfQor
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiwgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiAwOyB9CitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2Uo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopIHsgcmV0dXJuIDA7IH0KK0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopIHsgcmV0dXJuIDA7IH0K
K0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1
cm4gMDsgfQorQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkgeyByZXR1cm4gMDsgfQorQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gMDsgfQorQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiAwOyB9CisjZW5kaWYKKworI2lmICFQTEFU
Rk9STShXSU4pCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCogb3RoZXJFbGVtZW50KQoreworICAgIHJldHVybiBwbGF0Zm9ybVVJRWxl
bWVudCgpID09IG90aGVyRWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKTsKK30KKyNlbmRpZgor
Cit9IC8vIG5hbWVzcGFjZSBXVFIKKwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
aAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyX2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJf
aAorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTV3Jh
cHBhYmxlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8d2luZG93
cy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVFIgeworICAgIAorY2xhc3MgQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIgOiBwdWJsaWMgSlNXcmFwcGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPiBjcmVhdGUoKTsKKyAgICB+QWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIoKTsKKworICAgIHZvaWQgbWFrZVdpbmRvd09iamVjdChKU0NvbnRl
eHRSZWYsIEpTT2JqZWN0UmVmIHdpbmRvd09iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsK
KyAgICB2aXJ0dWFsIEpTQ2xhc3NSZWYgd3JhcHBlckNsYXNzKCk7CisgICAgCisgICAgLy8gQ29u
dHJvbGxlciBNZXRob2RzIC0gcGxhdGZvcm0taW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCisg
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiByb290RWxlbWVudCgpOworICAg
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZm9jdXNlZEVsZW1lbnQoKTsKKyAg
ICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGVsZW1lbnRBdFBvaW50KGludCB4
LCBpbnQgeSk7CisKKyAgICAvLyBIZXJlIGZvciBjb25zaXN0ZW5jeSB3aXRoIERSVC4gTm90IGlt
cGxlbWVudGVkIGJlY2F1c2UgdGhleSBkb24ndCBkbyBhbnl0aGluZyBvbiB0aGUgTWFjLgorICAg
IHZvaWQgbG9nRm9jdXNFdmVudHMoKSB7IH0KKyAgICB2b2lkIGxvZ1ZhbHVlQ2hhbmdlRXZlbnRz
KCkgeyB9CisgICAgdm9pZCBsb2dTY3JvbGxpbmdTdGFydEV2ZW50cygpIHsgfQorICAgIHZvaWQg
bG9nQWNjZXNzaWJpbGl0eUV2ZW50cygpIHsgfQorICAgIHZvaWQgYWRkTm90aWZpY2F0aW9uTGlz
dGVuZXIoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFj
aykgeyB9CisgICAgdm9pZCBub3RpZmljYXRpb25SZWNlaXZlZChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KiwgSlNTdHJpbmdSZWYgZXZlbnROYW1lKSB7IH0KKyAgICAKKyAgICB2b2lkIHJlc2V0VG9D
b25zaXN0ZW50U3RhdGUoKSB7IH0KKworcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcigpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RSCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcl9oCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAJKHJldmlzaW9uIDk4OTc3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODks
NiArODksMTIgQEAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEpTQ2hhcio+KHBhdGguY29uc3REYXRhKCkpLCBwYXRoLmxlbmd0
aCgpKTsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVy
OjpwbGF0Zm9ybU5hbWUoKQoreworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9y
bU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJxdCIpKTsKKyAgICBy
ZXR1cm4gcGxhdGZvcm1OYW1lOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKIAogI2luY2x1ZGUg
IkxheW91dFRlc3RDb250cm9sbGVyUXQubW9jIgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIuaAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyX2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJfaAorCisjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgordHlwZWRlZiBDRlR5cGVSZWYgUGxhdGZvcm1UZXh0TWFya2VyOworI2Vsc2UK
K3R5cGVkZWYgdm9pZCogUGxhdGZvcm1UZXh0TWFya2VyOworI2VuZGlmCisKK25hbWVzcGFjZSBX
VFIgeworCitjbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OworCitjbGFzcyBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGNyZWF0ZShQbGF0Zm9ybVRleHRN
YXJrZXIpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBj
cmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXImKTsKKworICAgIH5BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcigpOworICAgIAorICAgIFBsYXRmb3JtVGV4dE1hcmtlciBwbGF0Zm9ybVRl
eHRNYXJrZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEpTQ2xhc3NSZWYgd3JhcHBlckNsYXNzKCk7
CisKKyAgICBzdGF0aWMgSlNPYmplY3RSZWYgbWFrZUpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIo
SlNDb250ZXh0UmVmLCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciYpOworICAgIGJvb2wg
aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIAorcHJpdmF0ZToKKyAgICBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXIpOworICAgIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJik7CisKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPFBsYXRmb3JtVGV4dE1hcmtlcj4gbV90ZXh0TWFy
a2VyOworI2Vsc2UKKyAgICBQbGF0Zm9ybVRleHRNYXJrZXIgbV90ZXh0TWFya2VyOworI2VuZGlm
Cit9OworCisjaWYgIVBMQVRGT1JNKE1BQykKK2lubGluZSBib29sIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gZmFsc2U7
IH0KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXVFIKKyAgICAKKyNlbmRpZiAvLyBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcl9oCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwCShyZXZpc2lvbiA5ODk3NykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjUsNCArNjUsMTAgQEAKICAgICByZXR1cm4gdXJsOwogfQogCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpCit7CisgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBsYXRmb3JtTmFtZShBZG9wdCwgSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoImd0ayIpKTsKKyAgICByZXR1cm4gcGxhdGZvcm1OYW1lOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShy
ZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudF9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRfaAorCisj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlLmgiCisjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKKworI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisjaWZkZWYgX19PQkpDX18KK3R5cGVk
ZWYgaWQgUGxhdGZvcm1VSUVsZW1lbnQ7CisjZWxzZQordHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmpl
Y3QqIFBsYXRmb3JtVUlFbGVtZW50OworI2VuZGlmCisjZWxpZiBQTEFURk9STShXSU4pCisjdW5k
ZWYgX1dJTlNPQ0tBUElfCisjZGVmaW5lIF9XSU5TT0NLQVBJXyAvLyBQcmV2ZW50IGluY2x1c2lv
biBvZiB3aW5zb2NrLmggaW4gd2luZG93cy5oCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5o
PgorI2luY2x1ZGUgPG9sZWFjYy5oPgorCit0eXBlZGVmIENPTVB0cjxJQWNjZXNzaWJsZT4gUGxh
dGZvcm1VSUVsZW1lbnQ7CisjZWxpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8YXRrL2F0ay5o
PgordHlwZWRlZiBBdGtPYmplY3QqIFBsYXRmb3JtVUlFbGVtZW50OworI2Vsc2UKK3R5cGVkZWYg
dm9pZCogUGxhdGZvcm1VSUVsZW1lbnQ7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZmRlZiBfX09CSkNfXwordHlwZWRlZiBpZCBOb3RpZmljYXRpb25IYW5kbGVyOworI2Vsc2UKK3R5
cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBOb3RpZmljYXRpb25IYW5kbGVyOworI2VuZGlmCisj
ZW5kaWYKKworbmFtZXNwYWNlIFdUUiB7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
OiBwdWJsaWMgSlNXcmFwcGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGNyZWF0ZShQbGF0Zm9ybVVJRWxlbWVudCk7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY3JlYXRlKGNvbnN0IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQmKTsKKworICAgIH5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCk7CisK
KyAgICBQbGF0Zm9ybVVJRWxlbWVudCBwbGF0Zm9ybVVJRWxlbWVudCgpIHsgcmV0dXJuIG1fZWxl
bWVudDsgfQorICAgIHZpcnR1YWwgSlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKTsKKworICAgIHN0
YXRpYyBKU09iamVjdFJlZiBtYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KEpTQ29udGV4dFJl
ZiwgY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOworCisgICAgYm9vbCBpc0VxdWFsKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCk7CisgICAgCisgICAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpOwor
ICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY2hpbGRBdEluZGV4KHVuc2ln
bmVkKTsKKyAgICB1bnNpZ25lZCBpbmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCop
OworICAgIGludCBjaGlsZHJlbkNvdW50KCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiB0aXRsZVVJRWxlbWVudCgpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gcGFyZW50RWxlbWVudCgpOworCisgICAgdm9pZCB0YWtlRm9jdXMoKTsKKyAg
ICB2b2lkIHRha2VTZWxlY3Rpb24oKTsKKyAgICB2b2lkIGFkZFNlbGVjdGlvbigpOworICAgIHZv
aWQgcmVtb3ZlU2VsZWN0aW9uKCk7CisKKyAgICAvLyBNZXRob2RzIC0gcGxhdGZvcm0taW5kZXBl
bmRlbnQgaW1wbGVtZW50YXRpb25zCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFsbEF0
dHJpYnV0ZXMoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mTGlu
a2VkVUlFbGVtZW50cygpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
bGlua2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CisgICAgCisgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkRvY3VtZW50TGlua3MoKTsKKyAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mQ2hpbGRyZW4oKTsKKyAgICBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gcGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCk7CisgICAgdm9pZCBpbmNy
ZW1lbnQoKTsKKyAgICB2b2lkIGRlY3JlbWVudCgpOworICAgIHZvaWQgc2hvd01lbnUoKTsKKyAg
ICB2b2lkIHByZXNzKCk7CisKKyAgICAvLyBBdHRyaWJ1dGVzIC0gcGxhdGZvcm0taW5kZXBlbmRl
bnQgaW1wbGVtZW50YXRpb25zCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0F0
dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAgZG91YmxlIG51bWJlckF0
dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAgYm9vbCBib29sQXR0cmli
dXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKKyAgICBib29sIGlzQXR0cmlidXRlU3Vw
cG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAgYm9vbCBpc0F0dHJpYnV0ZVNldHRh
YmxlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAgYm9vbCBpc0FjdGlvblN1cHBvcnRlZChK
U1N0cmluZ1JlZiBhY3Rpb24pOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByb2xlKCk7
CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN1YnJvbGUoKTsKKyAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gcm9sZURlc2NyaXB0aW9uKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHRpdGxlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGRlc2NyaXB0aW9u
KCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxhbmd1YWdlKCk7CisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ1ZhbHVlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGFjY2Vzc2liaWxpdHlWYWx1ZSgpIGNvbnN0OworICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBoZWxwVGV4dCgpIGNvbnN0OworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBv
cmllbnRhdGlvbigpIGNvbnN0OworICAgIGRvdWJsZSB4KCk7CisgICAgZG91YmxlIHkoKTsKKyAg
ICBkb3VibGUgd2lkdGgoKTsKKyAgICBkb3VibGUgaGVpZ2h0KCk7CisgICAgZG91YmxlIGludFZh
bHVlKCkgY29uc3Q7CisgICAgZG91YmxlIG1pblZhbHVlKCk7CisgICAgZG91YmxlIG1heFZhbHVl
KCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHZhbHVlRGVzY3JpcHRpb24oKTsKKyAg
ICBpbnQgaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHNlbGVjdGVkVGV4dFJhbmdlKCk7CisgICAgYm9vbCBpc0VuYWJsZWQoKTsKKyAgICBi
b29sIGlzUmVxdWlyZWQoKSBjb25zdDsKKyAgICAKKyAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0
OworICAgIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKKyAgICBib29sIGlzU2VsZWN0ZWQoKSBj
b25zdDsKKyAgICBib29sIGlzU2VsZWN0YWJsZSgpIGNvbnN0OworICAgIGJvb2wgaXNNdWx0aVNl
bGVjdGFibGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFNlbGVjdGVkQ2hpbGQoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCopIGNvbnN0OworICAgIHVuc2lnbmVkIHNlbGVjdGVkQ2hpbGRyZW5Db3VudCgp
IGNvbnN0OworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gc2VsZWN0ZWRD
aGlsZEF0SW5kZXgodW5zaWduZWQpIGNvbnN0OworICAgIAorICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0OworICAgIGJvb2wgaXNFeHBhbmRlZCgpIGNvbnN0OworICAgIGJvb2wgaXNDaGVja2VkKCkg
Y29uc3Q7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsKKyAgICBib29sIGlzT2ZmU2NyZWVu
KCkgY29uc3Q7CisgICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0OworICAgIGJvb2wgaXNJZ25v
cmVkKCkgY29uc3Q7CisgICAgYm9vbCBoYXNQb3B1cCgpIGNvbnN0OworICAgIGludCBoaWVyYXJj
aGljYWxMZXZlbCgpIGNvbnN0OworICAgIGRvdWJsZSBjbGlja1BvaW50WCgpOworICAgIGRvdWJs
ZSBjbGlja1BvaW50WSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBkb2N1bWVudEVu
Y29kaW5nKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGRvY3VtZW50VVJJKCk7Cisg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHVybCgpOworCisgICAgLy8gQ1NTMy1zcGVlY2gg
cHJvcGVydGllcy4KKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3BlYWsoKTsKKyAgICAK
KyAgICAvLyBUYWJsZS1zcGVjaWZpYyBhdHRyaWJ1dGVzCisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gYXR0cmlidXRlc09mUm93SGVhZGVycygpOworICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBhdHRyaWJ1dGVzT2ZDb2x1bW5zKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IGF0dHJpYnV0ZXNPZlJvd3MoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0
cmlidXRlc09mVmlzaWJsZUNlbGxzKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0
dHJpYnV0ZXNPZkhlYWRlcigpOworICAgIGludCBpbmRleEluVGFibGUoKTsKKyAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gcm93SW5kZXhSYW5nZSgpOworICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBjb2x1bW5JbmRleFJhbmdlKCk7CisgICAgaW50IHJvd0NvdW50KCk7CisgICAgaW50
IGNvbHVtbkNvdW50KCk7CisgICAgCisgICAgLy8gVHJlZS9PdXRsaW5lIHNwZWNpZmljIGF0dHJp
YnV0ZXMKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHNlbGVjdGVkUm93
QXRJbmRleCh1bnNpZ25lZCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBkaXNjbG9zZWRCeVJvdygpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gZGlzY2xvc2VkUm93QXRJbmRleCh1bnNpZ25lZCk7CisKKyAgICAvLyBBUklBIHNwZWNpZmlj
CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhT3duc0VsZW1lbnRB
dEluZGV4KHVuc2lnbmVkKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IGFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CisKKyAgICAvLyBBUklBIERyYWcg
YW5kIERyb3AKKyAgICBib29sIGFyaWFJc0dyYWJiZWQoKSBjb25zdDsKKyAgICAvLyBBIHNwYWNl
IGNvbmNhdGVudGF0ZWQgc3RyaW5nIG9mIGFsbCB0aGUgZHJvcCBlZmZlY3RzLgorICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBhcmlhRHJvcEVmZmVjdHMoKSBjb25zdDsKKyAgICAKKyAgICAv
LyBQYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZXMKKyAgICBpbnQgbGluZUZvckluZGV4KGludCk7Cisg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJhbmdlRm9yTGluZShpbnQpOworICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBib3VuZHNGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5z
aWduZWQgbGVuZ3RoKTsKKyAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKHVuc2lnbmVkIGxv
Y2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBz
dHJpbmdGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbmVk
IGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgYXR0cmlidXRlZFN0cmluZ1Jh
bmdlSXNNaXNzcGVsbGVkKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVj
dGlvbk5leHQsIEpTU3RyaW5nUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCk7
CisgICAgCisgICAgLy8gVGFibGUtc3BlY2lmaWMKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25l
ZCByb3cpOworCisgICAgLy8gU2Nyb2xsYXJlYS1zcGVjaWZpYworICAgIFBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gaG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdmVydGljYWxTY3JvbGxiYXIoKSBjb25z
dDsKKworICAgIC8vIFRleHQgbWFya2Vycy4KKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCopOyAgICAKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U+IHRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0
YXJ0TWFya2VyLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFya2VyKTsKKyAgICBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOworICAgIFBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2Uo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IHRleHRNYXJrZXJGb3JQb2ludChpbnQgeCwgaW50IHkpOworICAgIFBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHByZXZpb3VzVGV4dE1hcmtlcihBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI+IG5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CisgICAgUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UqKTsKKyAgICBpbnQgdGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UqKTsKKyAgICAKKyAgICAvLyBOb3RpZmljYXRpb25zCisgICAgLy8gRnVuY3Rp
b24gY2FsbGJhY2sgc2hvdWxkIHRha2Ugb25lIGFyZ3VtZW50LCB0aGUgbmFtZSBvZiB0aGUgbm90
aWZpY2F0aW9uLgorICAgIGJvb2wgYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZiBm
dW5jdGlvbkNhbGxiYWNrKTsKKyAgICAvLyBNYWtlIHN1cmUgeW91IGNhbGwgcmVtb3ZlLCBiZWNh
dXNlIHlvdSBjYW4ndCByZWx5IG9uIG9iamVjdHMgYmVpbmcgZGVhbGxvY2F0ZWQgaW4gYSB0aW1l
bHkgZmFzaGlvbi4KKyAgICBib29sIHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAg
Citwcml2YXRlOgorICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQp
OworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCYpOworCisgICAgdm9pZCBnZXRMaW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gPiYpOworICAgIHZvaWQgZ2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKKyAgICB2b2lkIGdldENoaWxkcmVu
KFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOworICAgIHZvaWQgZ2V0
Q2hpbGRyZW5XaXRoUmFuZ2UoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+
JiwgdW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICBQbGF0Zm9ybVVJ
RWxlbWVudCBtX2VsZW1lbnQ7CisgICAgCisgICAgLy8gQSByZXRhaW5lZCwgcGxhdGZvcm0gc3Bl
Y2lmaWMgb2JqZWN0IHVzZWQgdG8gaGVscCBtYW5hZ2Ugbm90aWZpY2F0aW9ucyBmb3IgdGhpcyBv
YmplY3QuCisjaWYgUExBVEZPUk0oTUFDKQorICAgIE5vdGlmaWNhdGlvbkhhbmRsZXIgbV9ub3Rp
ZmljYXRpb25IYW5kbGVyOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXVFIKKyAgICAK
KyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50X2gKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgiCisKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV1RSIHsK
KyAgICAKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIG1hcmtl
clJhbmdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZShtYXJrZXJSYW5nZSkpOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZShjb25zdCBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJiBtYXJrZXJSYW5nZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpKTsK
K30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZShQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBtYXJrZXJSYW5nZSkKKyAgICA6IG1fdGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKQoreworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKGNvbnN0IEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UmIG1hcmtlclJhbmdlKQorICAgIDogbV90ZXh0TWFya2VyUmFuZ2UobWFy
a2VyUmFuZ2UucGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSkKK3sKK30KKworQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZTo6fkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoKQoreworfQor
CitQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpw
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oTUFDKQorICAg
IHJldHVybiBtX3RleHRNYXJrZXJSYW5nZS5nZXQoKTsKKyNlbGlmCisgICAgcmV0dXJuIG1fdGV4
dE1hcmtlclJhbmdlOworI2VuZGlmCit9CisgICAgCitKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U6OndyYXBwZXJDbGFzcygpCit7CisgICAgcmV0dXJuIEpTQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZTo6YWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZUNsYXNzKCk7
Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXVFIKKwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmNwcAkocmV2aXNpb24gOTg5NzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0OSw2ICs2
NDksOCBAQAogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5nY0NvbnRyb2xsZXIoKS0+bWFr
ZVdpbmRvd09iamVjdChjb250ZXh0LCB3aW5kb3csICZleGNlcHRpb24pOwogICAgIEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5ldmVudFNlbmRpbmdDb250cm9sbGVyKCktPm1ha2VXaW5kb3dPYmpl
Y3QoY29udGV4dCwgd2luZG93LCAmZXhjZXB0aW9uKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkudGV4dElucHV0Q29udHJvbGxlcigpLT5tYWtlV2luZG93T2JqZWN0KGNvbnRleHQsIHdp
bmRvdywgJmV4Y2VwdGlvbik7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKCktPm1ha2VXaW5kb3dPYmplY3QoY29udGV4dCwgd2luZG93LCAmZXhj
ZXB0aW9uKTsKKwogI2lmIFBMQVRGT1JNKFFUKQogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjppbmplY3RJbnRlcm5hbHNPYmplY3QoY29udGV4dCk7CiAjZWxzZQpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwJKHJldmlzaW9uIDApCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK21vZHVsZSBXVFIgeworCisgICAgaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
cm9vdEVsZW1lbnQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IGZvY3VzZWRFbGVtZW50OworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVs
ZW1lbnRBdFBvaW50KGluIGludCB4LCBpbiBpbnQgeSk7CisgICAgICAgIAorICAgICAgICB2b2lk
IGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxlbWVu
dCwgaW4gb2JqZWN0IGZ1bmN0aW9uQ2FsbGJhY2spOworICAgICAgICB2b2lkIG5vdGlmaWNhdGlv
blJlY2VpdmVkKGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxlbWVudCwgaW4gRE9NU3RyaW5n
IGV2ZW50TmFtZSk7CisKKyAgICAgICAgdm9pZCBsb2dGb2N1c0V2ZW50cygpOworICAgICAgICB2
b2lkIGxvZ1ZhbHVlQ2hhbmdlRXZlbnRzKCk7CisgICAgICAgIHZvaWQgbG9nU2Nyb2xsaW5nU3Rh
cnRFdmVudHMoKTsKKyAgICAgICAgdm9pZCBsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCk7CisgICAg
ICAgIHZvaWQgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOworICAgIH07CisKK30KSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmlk
bAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgV1RSIHsKKworICAgIGludGVyZmFj
ZSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHsKKyAgICAgICAgYm9vbGVhbiBpc0VxdWFs
KGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ugb3RoZXJNYXJrZXJSYW5nZSk7CisgICAg
fTsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRsCShyZXZpc2lvbiAwKQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
Cittb2R1bGUgV1RSIHsKKworICAgIGludGVyZmFjZSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB7
CisgICAgICAgIGJvb2xlYW4gaXNFcXVhbChpbiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBvdGhl
ck1hcmtlcik7CisgICAgfTsKKworfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaWRsCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgV1RSIHsK
KworICAgIGludGVyZmFjZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKKyAgICAgICAgYm9vbGVh
biBpc0VxdWFsKGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgb3RoZXJFbGVtZW50KTsKKworICAg
ICAgICAvLyBFbGVtZW50IGFjY2Vzcy4KKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBl
bGVtZW50QXRQb2ludChpbiBpbnQgeCwgaW4gaW50IHkpOworICAgICAgICBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50IGNoaWxkQXRJbmRleChpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICAgICAg
dW5zaWduZWQgbG9uZyBpbmRleE9mQ2hpbGQoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBjaGls
ZCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgbGlua2VkVUlFbGVtZW50QXRJbmRl
eChpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCBzZWxlY3RlZENoaWxkQXRJbmRleChpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICAgICAg
dm9pZCBzZXRTZWxlY3RlZENoaWxkKGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxlbWVudCk7
CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgdGl0bGVVSUVsZW1lbnQoKTsKKyAgICAg
ICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBwYXJlbnRFbGVtZW50KCk7CisgICAgICAgIAorICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJvbGU7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgc3Vicm9sZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyByb2xlRGVzY3JpcHRpb247CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgdGl0bGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZGVz
Y3JpcHRpb247CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaGVscFRleHQ7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWVEZXNjcmlwdGlvbjsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1cmw7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgc3BlYWs7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgb3JpZW50YXRpb247CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgaW5zZXJ0aW9u
UG9pbnRMaW5lTnVtYmVyOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNl
bGVjdGVkVGV4dFJhbmdlOworICAgIAorICAgICAgICBET01TdHJpbmcgc3RyaW5nQXR0cmlidXRl
VmFsdWUoaW4gRE9NU3RyaW5nIGF0dHIpOworICAgICAgICBkb3VibGUgbnVtYmVyQXR0cmlidXRl
VmFsdWUoaW4gRE9NU3RyaW5nIGF0dHIpOworICAgICAgICBib29sZWFuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGJvb2xlYW4gaXNBdHRyaWJ1dGVTdXBw
b3J0ZWQoaW4gRE9NU3RyaW5nIGF0dHIpOworICAgICAgICBib29sZWFuIGlzQXR0cmlidXRlU2V0
dGFibGUoaW4gRE9NU3RyaW5nIGF0dHIpOworICAgICAgICBib29sZWFuIGlzQWN0aW9uU3VwcG9y
dGVkKGluIERPTVN0cmluZyBhdHRyKTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHN0cmluZ1ZhbHVlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IGludFZh
bHVlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IG1pblZhbHVlOworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgaW50IG1heFZhbHVlOworICAgICAgICAKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gaXNFbmFibGVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBpc1JlcXVpcmVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biBpc0ZvY3VzZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzU2VsZWN0
ZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzTXVsdGlTZWxlY3RhYmxl
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0V4cGFuZGVkOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0NoZWNrZWQ7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuIGlzVmlzaWJsZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gaXNDb2xsYXBzZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IGhhc1BvcHVwOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0lnbm9yZWQ7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzT2ZmU2NyZWVuOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1ZhbGlkOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgaW50IGhpZXJhcmNoaWNhbExldmVsOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBhcmlhSXNHcmFiYmVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGFyaWFEcm9wRWZmZWN0czsKKyAgICAgICAgCisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBpbnQgeDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCB5OworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgaW50IHdpZHRoOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
aW50IGhlaWdodDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBjbGlja1BvaW50WDsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBjbGlja1BvaW50WTsKKworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgaW50IGNoaWxkcmVuQ291bnQ7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBpbnQgc2VsZWN0ZWRDaGlsZHJlbkNvdW50OworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgaW50IHJvd0NvdW50OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IGNvbHVt
bkNvdW50OworCisgICAgICAgIC8vIEFjdGlvbnMuCisgICAgICAgIHZvaWQgaW5jcmVtZW50KCk7
CisgICAgICAgIHZvaWQgZGVjcmVtZW50KCk7CisgICAgICAgIHZvaWQgcHJlc3MoKTsKKyAgICAg
ICAgdm9pZCBzaG93TWVudSgpOworCisgICAgICAgIC8vIEF0dHJpYnV0ZSBpbmZvLgorICAgICAg
ICBET01TdHJpbmcgYWxsQXR0cmlidXRlcygpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRl
c09mQ2hpbGRyZW4oKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxl
bWVudHMoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZkRvY3VtZW50TGlua3MoKTsK
KyAgICAgICAgCisgICAgICAgIC8vIFRhYmxlIGluZm8uCisgICAgICAgIERPTVN0cmluZyBhdHRy
aWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCk7CisgICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVzT2ZS
b3dIZWFkZXJzKCk7CisgICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVzT2ZDb2x1bW5zKCk7Cisg
ICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVzT2ZSb3dzKCk7CisgICAgICAgIERPTVN0cmluZyBh
dHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNP
ZkhlYWRlcigpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGNlbGxGb3JDb2x1bW5B
bmRSb3coaW4gdW5zaWduZWQgbG9uZyBjb2x1bW4sIGluIHVuc2lnbmVkIGxvbmcgcm93KTsKKyAg
ICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBzZWxlY3RlZFJvd0F0SW5kZXgoaW4gdW5zaWdu
ZWQgbG9uZyBpbmRleCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZGlzY2xvc2Vk
QnlSb3coKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBkaXNjbG9zZWRSb3dBdElu
ZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICBpbnQgaW5kZXhJblRhYmxlKCk7
CisgICAgICAgIERPTVN0cmluZyByb3dJbmRleFJhbmdlKCk7CisgICAgICAgIERPTVN0cmluZyBj
b2x1bW5JbmRleFJhbmdlKCk7CisgICAgICAgIGludCByb3dDb3VudCgpOworICAgICAgICBpbnQg
Y29sdW1uQ291bnQoKTsKKyAgICAKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBhcmlh
T3duc0VsZW1lbnRBdEluZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IGFyaWFGbG93VG9FbGVtZW50QXRJbmRleChpbiB1bnNpZ25lZCBs
b25nIGluZGV4KTsKKworICAgICAgICAvLyBQYXJhbWF0ZXJpemVkIGF0dHJpYnV0ZXMuCisgICAg
ICAgIERPTVN0cmluZyBwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMoKTsKKyAgICAgICAgaW50
IGxpbmVGb3JJbmRleChpbiBpbnQgaW5kZXgpOworICAgICAgICBET01TdHJpbmcgcmFuZ2VGb3JM
aW5lKGluIGludCBpbmRleCk7CisgICAgICAgIERPTVN0cmluZyBib3VuZHNGb3JSYW5nZShpbiB1
bnNpZ25lZCBsb25nIGxvY2F0aW9uLCBpbiB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CisgICAgICAg
IERPTVN0cmluZyBzdHJpbmdGb3JSYW5nZShpbiB1bnNpZ25lZCBsb25nIGxvY2F0aW9uLCBpbiB1
bnNpZ25lZCBsb25nIGxlbmd0aCk7CisgICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVkU3RyaW5n
Rm9yUmFuZ2UoaW4gdW5zaWduZWQgbG9uZyBsb2NhdGlvbiwgaW4gdW5zaWduZWQgbG9uZyBsZW5n
dGgpOworICAgICAgICBib29sZWFuIGF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZChp
biB1bnNpZ25lZCBsb25nIGxvY2F0aW9uLCBpbiB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CisgICAg
ICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgdWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKGlu
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgc3RhcnRFbGVtZW50LCBpbiBib29sZWFuIGlzRGlyZWN0
aW9uTmV4dCwgaW4gRE9NU3RyaW5nIHNlYXJjaEtleSwgaW4gRE9NU3RyaW5nIHNlYXJjaFRleHQp
OworICAgICAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKGluIHVuc2lnbmVkIGxvbmcgbG9j
YXRpb24sIGluIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKKworICAgICAgICAvLyBTY3JvbGwgYXJl
YSBhdHRyaWJ1dGVzLgorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCBob3Jpem9udGFsU2Nyb2xsYmFyOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCB2ZXJ0aWNhbFNjcm9sbGJhcjsKKworICAgICAgICAvLyBU
ZXh0IG1hcmtlcnMuCisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgdGV4dE1h
cmtlclJhbmdlRm9yRWxlbWVudChpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVsZW1lbnQpOyAg
ICAKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0TWFya2VyLCBpbiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciBlbmRNYXJrZXIpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoaW4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSByYW5nZSk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
IGVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoaW4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSByYW5nZSk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHRleHRNYXJr
ZXJGb3JQb2ludChpbiBpbnQgeCwgaW4gaW50IHkpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBwcmV2aW91c1RleHRNYXJrZXIoaW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgbWFy
a2VyKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgbmV4dFRleHRNYXJrZXIoaW4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgbWFya2VyKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCBhY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoaW4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgbWFya2VyKTsKKyAgICAgICAgRE9NU3RyaW5nIHN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShpbiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHJhbmdlKTsKKyAgICAgICAg
aW50IHRleHRNYXJrZXJSYW5nZUxlbmd0aChpbiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
IHJhbmdlKTsKKworICAgICAgICAvLyBOb3RpZmljYXRpb24gc3VwcG9ydC4KKyAgICAgICAgYm9v
bGVhbiBhZGROb3RpZmljYXRpb25MaXN0ZW5lcihpbiBvYmplY3QgY2FsbGJhY2tGdW5jdGlvbik7
CisgICAgICAgIGJvb2xlYW4gcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAg
CisgICAgfTsKKworfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJv
bGxlci5pZGwJKHJldmlzaW9uIDk4OTc3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMSw2ICsxMzEsOCBAQAogICAgICAgICB2b2lkIHNldEJhY2tpbmdTY2FsZUZhY3Rv
cihpbiBkb3VibGUgYmFja2luZ1NjYWxlRmFjdG9yLCBpbiBvYmplY3QgY2FsbGJhY2spOwogCiAg
ICAgICAgIHZvaWQgc2V0V2luZG93SXNLZXkoaW4gYm9vbGVhbiBpc0tleSk7CisgICAgICAgIAor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBsYXRmb3JtTmFtZTsKICAgICB9
OwogCiB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShy
ZXZpc2lvbiA5ODk3NykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNCAr
NjQsMTAgQEAKICAgICByZXR1cm4gSlNTdHJpbmdSZXRhaW4odXJsKTsgLy8gVE9ETy4KIH0KIAor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5h
bWUoKQoreworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUoQWRvcHQs
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ3aW4iKSk7CisgICAgcmV0dXJuIHBsYXRm
b3JtTmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAko
cmV2aXNpb24gOTg5NzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDYgKzE5Miw3IEBACiAg
ICAgbV9nY0NvbnRyb2xsZXIgPSBHQ0NvbnRyb2xsZXI6OmNyZWF0ZSgpOwogICAgIG1fZXZlbnRT
ZW5kaW5nQ29udHJvbGxlciA9IEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNyZWF0ZSgpOwogICAg
IG1fdGV4dElucHV0Q29udHJvbGxlciA9IFRleHRJbnB1dENvbnRyb2xsZXI6OmNyZWF0ZSgpOwor
ICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgPSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6
Y3JlYXRlKCk7CiAKICAgICBXS0J1bmRsZVNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKG1fYnVu
ZGxlLCBmYWxzZSk7CiAgICAgV0tCdW5kbGVSZW1vdmVBbGxWaXNpdGVkTGlua3MobV9idW5kbGUp
OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
TWFjLm1tCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbQkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgiCisKK25hbWVz
cGFjZSBXVFIgeworICAgIAorYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjppc0Vx
dWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG90aGVyKQoreworICAgIHJldHVybiBb
KGlkKXBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgaXNFcXVhbDooaWQpb3RoZXItPnBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlKCldOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV1RSCisKSW5kZXg6
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tCShyZXZpc2lvbiAw
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJNYWMubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIuaCIKKworbmFtZXNwYWNlIFdUUiB7CisKK2Jvb2wgQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG90aGVyKQor
eworICAgIHJldHVybiBbKGlkKXBsYXRmb3JtVGV4dE1hcmtlcigpIGlzRXF1YWw6KGlkKW90aGVy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgorCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDAp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0MjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisjaW1wb3J0ICJJbmplY3Rl
ZEJ1bmRsZS5oIgorI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVQYWdlLmgiCisKKyNpbXBvcnQgPEFw
cEtpdC9OU0FjY2Vzc2liaWxpdHkuaD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmlu
Z1JlZkNGLmg+CisjaW1wb3J0IDxXZWJLaXQyL1dLQnVuZGxlRnJhbWUuaD4KKyNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKworCisjaWZuZGVmIE5TQWNj
ZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5T3duc0F0dHJp
YnV0ZSBAIkFYT3ducyIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUdyYWJiZWRB
dHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZSBAIkFYR3Jh
YmJlZCIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3RzQXR0cmli
dXRlCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3RzQXR0cmlidXRlIEAiQVhEcm9w
RWZmZWN0cyIKKyNlbmRpZgorCisvLyBJZiBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgaXMgcGFz
c2VkIGluLCBpdCB3aWxsIHJhaXNlIGFuIGFjY2Vzc2liaWxpdHkgZXhjZXB0aW9uLiBUaGVzZSBh
cmUgdXN1YWxseSBjYXVnaHQgYnkgdGhlIEFjY2Vzc2liaWxpdHkgUnVudGltZSB0byBpbmZvcm0K
Ky8vIHRoZSBBWCBjbGllbnQgYXBwIG9mIHRoZSBlcnJvci4gSG93ZXZlciwgRFJUIGlzIHRoZSBB
WCBjbGllbnQgYXBwLCBzbyBpdCBtdXN0IGNhdGNoIHRoZXNlIGV4Y2VwdGlvbnMuCisjZGVmaW5l
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUyBAdHJ5IHsKKyNkZWZpbmUgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUyB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZSkgeyBpZiAoIVtbZSBuYW1lXSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RXhjZXB0aW9uXSkgQHRocm93OyB9CisKKwordHlwZWRl
ZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJp
bmcqIG5vdGlmaWNhdGlvbiwgdm9pZCogY29udGV4dCk7CisKK0BpbnRlcmZhY2UgTlNPYmplY3Qg
KFdlYktpdEFjY2Vzc2liaWxpdHlBZGRpdGlvbnMpCistIChOU0FycmF5ICopYWNjZXNzaWJpbGl0
eUFycmF5QXR0cmlidXRlVmFsdWVzOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBpbmRleDooTlNVSW50
ZWdlcilpbmRleCBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudDsKKy0gKHZvaWQpYWNjZXNz
aWJpbGl0eVNldFNob3VsZFJlcG9zdE5vdGlmaWNhdGlvbnM6KEJPT0wpcmVwb3N0OworLSAoTlNV
SW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhPZkNoaWxkOihpZCljaGlsZDsKKy0gKE5TVUludGVn
ZXIpYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6KE5TU3RyaW5nICopYXR0cmlidXRl
OworQGVuZAorCitAaW50ZXJmYWNlIE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKKysg
KE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1Jl
ZjsKKy0gKEpTU3RyaW5nUmVmKWNyZWF0ZUpTU3RyaW5nUmVmOworQGVuZAorCitAaW1wbGVtZW50
YXRpb24gTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQorCisrIChOU1N0cmluZyAqKXN0
cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWYKK3sKKyAgICBpZiAo
IWpzU3RyaW5nUmVmKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAKKyAgICBDRlN0cmluZ1Jl
ZiBjZlN0cmluZyA9IEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpz
U3RyaW5nUmVmKTsKKyAgICByZXR1cm4gWyhOU1N0cmluZyAqKWNmU3RyaW5nIGF1dG9yZWxlYXNl
XTsKK30KKworLSAoSlNTdHJpbmdSZWYpY3JlYXRlSlNTdHJpbmdSZWYKK3sKKyAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXNlbGYpOworfQorCitAZW5k
CisKK0BpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgOiBOU09iamVj
dAoreworICAgIGlkIG1fcGxhdGZvcm1FbGVtZW50OworICAgIEpTVmFsdWVSZWYgbV9ub3RpZmlj
YXRpb25GdW5jdGlvbkNhbGxiYWNrOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcgorCistIChpZClpbml0V2l0aFBsYXRmb3JtRWxl
bWVudDooaWQpcGxhdGZvcm1FbGVtZW50Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKwor
ICAgIG1fcGxhdGZvcm1FbGVtZW50ID0gcGxhdGZvcm1FbGVtZW50OworICAgIAorICAgIC8vIE9u
Y2UgYW4gb2JqZWN0IHN0YXJ0cyByZXF1ZXN0aW5nIG5vdGlmaWNhdGlvbnMsIGl0J3Mgb24gZm9y
IHRoZSBkdXJhdGlvbiBvZiB0aGUgcHJvZ3JhbS4KKyAgICAvLyBUaGlzIGlzIHRvIGF2b2lkIGFu
eSByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiB0ZXN0cyB0dXJuaW5nIHRoaXMgZmxhZyBvbiBhbmQg
b2ZmLiBJbnN0ZWFkCisgICAgLy8gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgY2Fu
IGp1c3QgbGlzdGVuIHdoZW4gdGhleSB3YW50IHRvLgorICAgIFttX3BsYXRmb3JtRWxlbWVudCBh
Y2Nlc3NpYmlsaXR5U2V0U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9uczpZRVNdOworICAgIFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3IoX25vdGlmaWNhdGlvblJlY2VpdmVkOikgbmFtZTpAIkFYRFJUTm90aWZpY2F0
aW9uIiBvYmplY3Q6bmlsXTsKKworICAgIHJldHVybiBzZWxmOworfQorIAorLSAodm9pZClkZWFs
bG9jCit7CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVP
YnNlcnZlcjpzZWxmXTsKKworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5k
bGVQYWdlR2V0TWFpbkZyYW1lKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+
cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZh
U2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworICAgIAorICAgIEpTVmFsdWVVbnByb3RlY3QoY29u
dGV4dCwgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKTsKKyAgICBtX25vdGlmaWNhdGlv
bkZ1bmN0aW9uQ2FsbGJhY2sgPSAwOworICAgIAorICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKwor
LSAodm9pZClfbm90aWZpY2F0aW9uUmVjZWl2ZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uCit7CisgICAgTlNTdHJpbmcgKm5vdGlmaWNhdGlvbk5hbWUgPSBbW25vdGlmaWNhdGlvbiB1
c2VySW5mb10gb2JqZWN0Rm9yS2V5OkAibm90aWZpY2F0aW9uTmFtZSJdOworICAgIGlmICghbm90
aWZpY2F0aW9uTmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFdLQnVuZGxlRnJhbWVS
ZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKFdUUjo6SW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9
IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworCisgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzTm90aWZpY2F0aW9uKEFkb3B0LCBbbm90aWZpY2F0aW9u
TmFtZSBjcmVhdGVKU1N0cmluZ1JlZl0pOworICAgIEpTVmFsdWVSZWYgYXJndW1lbnQgPSBKU1Zh
bHVlTWFrZVN0cmluZyhjb250ZXh0LCBqc05vdGlmaWNhdGlvbi5nZXQoKSk7CisgICAgSlNPYmpl
Y3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihtX25vdGlm
aWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2spLCAwLCAxLCAmYXJndW1lbnQsIDApOworfQorCistICh2
b2lkKXNldENhbGxiYWNrOihKU1ZhbHVlUmVmKWNhbGxiYWNrCit7CisgICAgaWYgKCFjYWxsYmFj
aykKKyAgICAgICAgcmV0dXJuOworIAorICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0g
V0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBh
Z2UoKS0+cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVH
ZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworCisgICAgLy8gUmVsZWFzZSB0aGUgb2xk
IGNhbGxiYWNrLgorICAgIGlmIChtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2spIAorICAg
ICAgICBKU1ZhbHVlVW5wcm90ZWN0KGNvbnRleHQsIG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxs
YmFjayk7CisgICAgCisgICAgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrID0gY2FsbGJh
Y2s7CisgICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNh
bGxiYWNrKTsKK30KKworQGVuZAorCituYW1lc3BhY2UgV1RSIHsKKworQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50
KQorICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCisgICAgLCBtX25vdGlmaWNhdGlvbkhhbmRsZXIo
MCkKK3sKKyAgICAvLyBGSVhNRTogYXBAd2Via2l0Lm9yZyBzYXlzIE9iakMgb2JqZWN0cyBuZWVk
IHRvIGJlIENGUmV0YWluZWQvQ0ZSZWxlYXNlIHRvIGJlIEdDLWNvbXBsaWFudCBvbiB0aGUgbWFj
LgorICAgIFttX2VsZW1lbnQgcmV0YWluXTsKK30KKworQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50JiBvdGhl
cikKKyAgICA6IG1fZWxlbWVudChvdGhlci5tX2VsZW1lbnQpCisgICAgLCBtX25vdGlmaWNhdGlv
bkhhbmRsZXIoMCkKK3sKKyAgICBbbV9lbGVtZW50IHJldGFpbl07Cit9CisKK0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCkKK3sKKyAgICAvLyBUaGUgbm90
aWZpY2F0aW9uIGhhbmRsZXIgc2hvdWxkIGJlIG5pbCBiZWNhdXNlIHJlbW92ZU5vdGlmaWNhdGlv
bkxpc3RlbmVyKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgaW4gdGhlIHRlc3QuCisgICAgQVNT
RVJUKCFtX25vdGlmaWNhdGlvbkhhbmRsZXIpOworICAgIFttX2VsZW1lbnQgcmVsZWFzZV07Cit9
CisKK3N0YXRpYyBOU1N0cmluZyogZGVzY3JpcHRpb25PZlZhbHVlKGlkIHZhbHVlT2JqZWN0LCBp
ZCBmb2N1c2VkQWNjZXNzaWJpbGl0eU9iamVjdCkKK3sKKyAgICBpZiAoIXZhbHVlT2JqZWN0KQor
ICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChbdmFsdWVPYmplY3QgaXNLaW5kT2ZDbGFz
czpbTlNBcnJheSBjbGFzc11dKQorICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCI8YXJyYXkgb2Ygc2l6ZSAlZD4iLCBbKE5TQXJyYXkqKXZhbHVlT2JqZWN0IGNvdW50
XV07CisKKyAgICBpZiAoW3ZhbHVlT2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNz
XV0pCisgICAgICAgIHJldHVybiBbKE5TTnVtYmVyKil2YWx1ZU9iamVjdCBzdHJpbmdWYWx1ZV07
CisKKyAgICBpZiAoW3ZhbHVlT2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSkg
eworICAgICAgICBOU1N0cmluZyogdHlwZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpb
dmFsdWVPYmplY3Qgb2JqQ1R5cGVdIGVuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ107Cisg
ICAgICAgIE5TVmFsdWUqIHZhbHVlID0gKE5TVmFsdWUqKXZhbHVlT2JqZWN0OworICAgICAgICBp
ZiAoW3R5cGUgcmFuZ2VPZlN0cmluZzpAIk5TUmVjdCJdLmxlbmd0aCA+IDApCisgICAgICAgICAg
ICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJOU1JlY3Q6ICVAIiwgTlNTdHJp
bmdGcm9tUmVjdChbdmFsdWUgcmVjdFZhbHVlXSldOworICAgICAgICBpZiAoW3R5cGUgcmFuZ2VP
ZlN0cmluZzpAIk5TUG9pbnQiXS5sZW5ndGggPiAwKQorICAgICAgICAgICAgcmV0dXJuIFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTlNQb2ludDogJUAiLCBOU1N0cmluZ0Zyb21Qb2ludChb
dmFsdWUgcG9pbnRWYWx1ZV0pXTsKKyAgICAgICAgaWYgKFt0eXBlIHJhbmdlT2ZTdHJpbmc6QCJO
U1NpemUiXS5sZW5ndGggPiAwKQorICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiTlNTaXplOiAlQCIsIE5TU3RyaW5nRnJvbVNpemUoW3ZhbHVlIHNpemVWYWx1
ZV0pXTsKKyAgICAgICAgaWYgKFt0eXBlIHJhbmdlT2ZTdHJpbmc6QCJOU1JhbmdlIl0ubGVuZ3Ro
ID4gMCkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIk5T
UmFuZ2U6ICVAIiwgTlNTdHJpbmdGcm9tUmFuZ2UoW3ZhbHVlIHJhbmdlVmFsdWVdKV07CisgICAg
fQorCisgICAgLy8gU3RyaXAgYWJzb2x1dGUgVVJMIHBhdGhzCisgICAgTlNTdHJpbmcqIGRlc2Ny
aXB0aW9uID0gW3ZhbHVlT2JqZWN0IGRlc2NyaXB0aW9uXTsKKyAgICBOU1JhbmdlIHJhbmdlID0g
W2Rlc2NyaXB0aW9uIHJhbmdlT2ZTdHJpbmc6QCJMYXlvdXRUZXN0cyJdOworICAgIGlmIChyYW5n
ZS5sZW5ndGgpCisgICAgICAgIHJldHVybiBbZGVzY3JpcHRpb24gc3Vic3RyaW5nRnJvbUluZGV4
OnJhbmdlLmxvY2F0aW9uXTsKKworICAgIC8vIFN0cmlwIHBvaW50ZXIgbG9jYXRpb25zCisgICAg
aWYgKFtkZXNjcmlwdGlvbiByYW5nZU9mU3RyaW5nOkAiMHgiXS5sZW5ndGgpIHsKKyAgICAgICAg
TlNTdHJpbmcqIHJvbGUgPSBbZm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdOworICAgICAgICBO
U1N0cmluZyogdGl0bGUgPSBbZm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlXTsKKyAgICAgICAg
aWYgKFt0aXRsZSBsZW5ndGhdKQorICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiPCVAOiAnJUAnPiIsIHJvbGUsIHRpdGxlXTsKKyAgICAgICAgcmV0dXJuIFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAPiIsIHJvbGVdOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gW3ZhbHVlT2JqZWN0IGRlc2NyaXB0aW9uXTsKK30KKworc3RhdGljIE5TU3RyaW5n
KiBhdHRyaWJ1dGVzT2ZFbGVtZW50KGlkIGFjY2Vzc2liaWxpdHlPYmplY3QpCit7CisgICAgTlNB
cnJheSogc3VwcG9ydGVkQXR0cmlidXRlcyA9IFthY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVOYW1lc107CisKKyAgICBOU011dGFibGVTdHJpbmcqIGF0dHJpYnV0ZXNT
dHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CisgICAgZm9yIChOU1VJbnRlZ2VyIGkg
PSAwOyBpIDwgW3N1cHBvcnRlZEF0dHJpYnV0ZXMgY291bnRdOyArK2kpIHsKKyAgICAgICAgTlNT
dHJpbmcqIGF0dHJpYnV0ZSA9IFtzdXBwb3J0ZWRBdHRyaWJ1dGVzIG9iamVjdEF0SW5kZXg6aV07
CisgICAgICAgIAorICAgICAgICAvLyBSaWdodCBub3csIHBvc2l0aW9uIHByb3ZpZGVzIHVzZWxl
c3MgYW5kIHNjcmVlbi1zcGVjaWZpYyBpbmZvcm1hdGlvbiwgc28gd2UgZG8gbm90CisgICAgICAg
IC8vIHdhbnQgdG8gaW5jbHVkZSBpdCBmb3IgdGhlIHNha2Ugb2YgdW5pdmVyc2FsbHkgcGFzc2lu
ZyB0ZXN0cy4KKyAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhQb3Np
dGlvbiJdKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICAvLyBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6IGNhbiB0aHJvdyBhbiBpZiBhbiBhdHRyaWJ1dGUgaXMg
bm90IHJldHVybmVkLgorICAgICAgICAvLyBGb3IgRHVtcFJlbmRlclRyZWUncyBwdXJwb3NlLCB3
ZSBzaG91bGQgaWdub3JlIHRob3NlIGV4Y2VwdGlvbnMKKyAgICAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCisgICAgICAgIGlkIHZhbHVlT2JqZWN0ID0gW2FjY2Vzc2liaWxpdHlPYmplY3Qg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0ZV07CisgICAgICAgIE5TU3RyaW5n
KiB2YWx1ZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZSh2YWx1ZU9iamVjdCwgYWNjZXNzaWJpbGl0eU9i
amVjdCk7CisgICAgICAgIFthdHRyaWJ1dGVzU3RyaW5nIGFwcGVuZEZvcm1hdDpAIiVAOiAlQFxu
IiwgYXR0cmlidXRlLCB2YWx1ZV07CisgICAgICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIGF0dHJpYnV0ZXNTdHJpbmc7Cit9CisKK3N0YXRpYyBKU1N0
cmluZ1JlZiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUs
IE5TU3RyaW5nKiB2YWx1ZSkKK3sKKyAgICBWZWN0b3I8VW5pQ2hhcj4gYnVmZmVyKFthdHRyaWJ1
dGUgbGVuZ3RoXSk7CisgICAgW2F0dHJpYnV0ZSBnZXRDaGFyYWN0ZXJzOmJ1ZmZlci5kYXRhKCld
OworICAgIGJ1ZmZlci5hcHBlbmQoJzonKTsKKyAgICBidWZmZXIuYXBwZW5kKCcgJyk7CisKKyAg
ICBWZWN0b3I8VW5pQ2hhcj4gdmFsdWVCdWZmZXIoW3ZhbHVlIGxlbmd0aF0pOworICAgIFt2YWx1
ZSBnZXRDaGFyYWN0ZXJzOnZhbHVlQnVmZmVyLmRhdGEoKV07CisgICAgYnVmZmVyLmFwcGVuZCh2
YWx1ZUJ1ZmZlcik7CisKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKK30KKworc3RhdGljIHZvaWQgY29udmVydE5T
QXJyYXlUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yKQoreworICAgIE5TVUludGVnZXIgY291bnQgPSBb
YXJyYXkgY291bnRdOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kp
CisgICAgICAgIGVsZW1lbnRWZWN0b3IuYXBwZW5kKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNy
ZWF0ZShbYXJyYXkgb2JqZWN0QXRJbmRleDppXSkpOworfQorCitzdGF0aWMgSlNTdHJpbmdSZWYg
ZGVzY3JpcHRpb25PZkVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gPiYgZWxlbWVudFZlY3RvcikKK3sKKyAgICBOU011dGFibGVTdHJpbmcqIGFsbEVsZW1lbnRT
dHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CisgICAgc2l6ZV90IHNpemUgPSBlbGVt
ZW50VmVjdG9yLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkg
eworICAgICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVtZW50ID0gZWxl
bWVudFZlY3RvcltpXTsKKyAgICAgICAgTlNTdHJpbmcqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVz
T2ZFbGVtZW50KHVpRWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSk7CisgICAgICAgIFthbGxF
bGVtZW50U3RyaW5nIGFwcGVuZEZvcm1hdDpAIiVAXG4tLS0tLS0tLS0tLS1cbiIsIGF0dHJpYnV0
ZXNdOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gW2FsbEVsZW1lbnRTdHJpbmcgY3JlYXRlSlNT
dHJpbmdSZWZdOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJ
RWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50
VmVjdG9yKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGxp
bmtlZEVsZW1lbnRzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV07CisgICAgY29udmVydE5TQXJy
YXlUb1ZlY3RvcihsaW5rZWRFbGVtZW50cywgZWxlbWVudFZlY3Rvcik7CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldERvY3Vt
ZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50
VmVjdG9yKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGxp
bmtFbGVtZW50cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhM
aW5rVUlFbGVtZW50cyJdOworICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3IobGlua0VsZW1lbnRz
LCBlbGVtZW50VmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4oVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yKQoreworICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGNoaWxkcmVuID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdOworICAg
IGNvbnZlcnROU0FycmF5VG9WZWN0b3IoY2hpbGRyZW4sIGVsZW1lbnRWZWN0b3IpOworICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpn
ZXRDaGlsZHJlbldpdGhSYW5nZShWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
ID4mIGVsZW1lbnRWZWN0b3IsIHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogY2hpbGRyZW4gPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVlczpOU0FjY2Vzc2liaWxp
dHlDaGlsZHJlbkF0dHJpYnV0ZSBpbmRleDpsb2NhdGlvbiBtYXhDb3VudDpsZW5ndGhdOworICAg
IGNvbnZlcnROU0FycmF5VG9WZWN0b3IoY2hpbGRyZW4sIGVsZW1lbnRWZWN0b3IpOworICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNo
aWxkcmVuQ291bnQoKQoreworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gPiBjaGlsZHJlbjsKKyAgICBnZXRDaGlsZHJlbihjaGlsZHJlbik7CisgICAgCisgICAgcmV0
dXJuIGNoaWxkcmVuLnNpemUoKTsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkp
Cit7CisgICAgaWQgZWxlbWVudCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUhpdFRlc3Q6TlNN
YWtlUG9pbnQoeCwgeSldOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICAKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQp
OworfQorCit1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5SW5kZXhPZkNoaWxkOmVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCldOwor
fQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBWZWN0b3I8UmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY2hpbGRyZW47CisgICAgZ2V0Q2hpbGRyZW5XaXRo
UmFuZ2UoY2hpbGRyZW4sIGluZGV4LCAxKTsKKworICAgIGlmIChjaGlsZHJlbi5zaXplKCkgPT0g
MSkKKyAgICAgICAgcmV0dXJuIGNoaWxkcmVuWzBdOworICAgIHJldHVybiAwOworfQorCitQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxp
bmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCisgICAgTlNBcnJheSogb2JqZWN0cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1
dGVdOworICAgIGlmIChpbmRleCA8IFtvYmplY3RzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbb2JqZWN0cyBvYmplY3RBdEluZGV4OmluZGV4
XSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQor
CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogb2JqZWN0cyA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGVdOwor
ICAgIGlmIChpbmRleCA8IFtvYmplY3RzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbb2JqZWN0cyBvYmplY3RBdEluZGV4OmluZGV4XSk7Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFy
aWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBvYmplY3RzID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJp
YnV0ZV07CisgICAgaWYgKGluZGV4IDwgW29iamVjdHMgY291bnRdKQorICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFtvYmplY3RzIG9iamVjdEF0SW5kZXg6aW5k
ZXhdKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9
CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiByb3dzID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0
ZV07CisgICAgaWYgKGluZGV4IDwgW3Jvd3MgY291bnRdKQorICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFtyb3dzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3Rl
ZENoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBhcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVd
OworICAgIGlmIChpbmRleCA8IFthcnJheSBjb3VudF0pCisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW2FycmF5IG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2ln
bmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRyZW5Db3VudCgpIGNvbnN0
Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRD
aGlsZHJlbkF0dHJpYnV0ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0
dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIHJvd3MgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NB
dHRyaWJ1dGVdOworICAgIGlmIChpbmRleCA8IFtyb3dzIGNvdW50XSkKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbcm93cyBvYmplY3RBdEluZGV4OmluZGV4
XSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQor
CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRpdGxlVUlFbGVtZW50KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICBpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOworICAgIGlm
IChhY2Nlc3NpYmlsaXR5T2JqZWN0KQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y3JlYXRlKGFjY2Vzc2liaWxpdHlPYmplY3QpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50KCkKK3sKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UGFy
ZW50QXR0cmlidXRlXTsKKyAgICBpZiAoYWNjZXNzaWJpbGl0eU9iamVjdCkKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShhY2Nlc3NpYmlsaXR5T2JqZWN0KTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZGlzY2xvc2VkQnlSb3coKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlk
IGFjY2Vzc2liaWxpdHlPYmplY3QgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRCeVJvd0F0dHJpYnV0ZV07CisgICAgaWYgKGFj
Y2Vzc2liaWxpdHlPYmplY3QpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjcmVhdGUoYWNjZXNzaWJpbGl0eU9iamVjdCk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cygpCit7Cisg
ICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGxpbmtlZEVsZW1lbnRz
OworICAgIGdldExpbmtlZFVJRWxlbWVudHMobGlua2VkRWxlbWVudHMpOworICAgIHJldHVybiBk
ZXNjcmlwdGlvbk9mRWxlbWVudHMobGlua2VkRWxlbWVudHMpOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mRG9jdW1lbnRM
aW5rcygpCit7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGxp
bmtFbGVtZW50czsKKyAgICBnZXREb2N1bWVudExpbmtzKGxpbmtFbGVtZW50cyk7CisgICAgcmV0
dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhsaW5rRWxlbWVudHMpOworfQorCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRy
ZW4oKQoreworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBjaGls
ZHJlbjsKKyAgICBnZXRDaGlsZHJlbihjaGlsZHJlbik7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9u
T2ZFbGVtZW50cyhjaGlsZHJlbik7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKCkKK3sKKyAgICBOU1N0cmluZyogYXR0
cmlidXRlcyA9IGF0dHJpYnV0ZXNPZkVsZW1lbnQobV9lbGVtZW50KTsKKyAgICByZXR1cm4gW2F0
dHJpYnV0ZXMgY3JlYXRlSlNTdHJpbmdSZWZdOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0
cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgY3JlYXRlSlNT
dHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwOwor
fQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUo
SlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05T
U3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUg
ZG91YmxlVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1
cm4gMDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFs
dWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICBpZiAoW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFs
dWUgYm9vbFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRl
U2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNl
dHRhYmxlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJu
IFtbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10gY29udGFpbnNPYmplY3Q6
W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXplZEF0dHJp
YnV0ZU5hbWVzKCkKK3sKKyAgICBOU0FycmF5KiBzdXBwb3J0ZWRQYXJhbWV0ZXJpemVkQXR0cmli
dXRlcyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1l
c107CisgICAgCisgICAgTlNNdXRhYmxlU3RyaW5nKiBhdHRyaWJ1dGVzU3RyaW5nID0gW05TTXV0
YWJsZVN0cmluZyBzdHJpbmddOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IFtzdXBw
b3J0ZWRQYXJhbWV0ZXJpemVkQXR0cmlidXRlcyBjb3VudF07ICsraSkgeworICAgICAgICBbYXR0
cmlidXRlc1N0cmluZyBhcHBlbmRGb3JtYXQ6QCIlQFxuIiwgW3N1cHBvcnRlZFBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGVzIG9iamVjdEF0SW5kZXg6aV1dOworICAgIH0KKyAgICAKKyAgICByZXR1cm4g
W2F0dHJpYnV0ZXNTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpCit7CisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNTdHJpbmcgKnJvbGUgPSBkZXNjcmlwdGlvbk9mVmFs
dWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
Um9sZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmli
dXRlQW5kVmFsdWUoQCJBWFJvbGUiLCByb2xlKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmli
dXRlXSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1
ZShAIkFYU3Vicm9sZSIsIHJvbGUpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAg
IHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25B
dHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFu
ZFZhbHVlKEAiQVhSb2xlRGVzY3JpcHRpb24iLCByb2xlKTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCisgICAgTlNTdHJpbmcqIHRpdGxlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0
cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRW
YWx1ZShAIkFYVGl0bGUiLCB0aXRsZSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisg
ICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25BdHRyaWJ1
dGVdLCBtX2VsZW1lbnQpOworICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVl
KEAiQVhEZXNjcmlwdGlvbiIsIGRlc2NyaXB0aW9uKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlPcmll
bnRhdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0
cmlidXRlQW5kVmFsdWUoQCJBWE9yaWVudGF0aW9uIiwgZGVzY3JpcHRpb24pOyAgICAKKyAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKK3sKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0
aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgcmV0dXJuIGNvbmNhdGVu
YXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFZhbHVlIiwgZGVzY3JpcHRpb24pOworICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQoreworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZh
bHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMYW5ndWFnZSJd
LCBtX2VsZW1lbnQpOworICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAi
QVhMYW5ndWFnZSIsIGRlc2NyaXB0aW9uKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisK
KyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmhlbHBUZXh0KCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlIZWxwQXR0cmlidXRl
XSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShA
IkFYSGVscCIsIGRlc2NyaXB0aW9uKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAg
CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkK
K3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVlKiBwb3NpdGlvblZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5UG9zaXRpb25BdHRyaWJ1dGVdOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtw
b3NpdGlvblZhbHVlIHBvaW50VmFsdWVdLngpOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp5KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVl
KiBwb3NpdGlvblZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxkb3VibGU+KFtwb3NpdGlvblZhbHVlIHBvaW50VmFsdWVdLnkpOyAgICAKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp3aWR0aCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgTlNWYWx1ZSogc2l6ZVZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV07CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGRvdWJsZT4oW3NpemVWYWx1ZSBzaXplVmFsdWVdLndpZHRoKTsKKyAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWlnaHQoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIE5TVmFsdWUqIHNpemVWYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxkb3VibGU+KFtzaXplVmFsdWUgc2l6ZVZhbHVlXS5oZWlnaHQpOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91
YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRYKCkKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVlKiBwb3NpdGlvblZhbHVlID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENsaWNrUG9pbnQiXTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihbcG9zaXRpb25WYWx1ZSBwb2ludFZhbHVlXS54KTsgICAg
ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMC4wZjsK
K30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZKCkKK3sKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVlKiBwb3NpdGlvblZhbHVlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENsaWNrUG9pbnQiXTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihbcG9zaXRpb25WYWx1ZSBwb2ludFZhbHVl
XS55KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7
Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0Cit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0
ZV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAg
ICAgICByZXR1cm4gWyhOU051bWJlciopdmFsdWUgZG91YmxlVmFsdWVdOyAKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Om1pblZhbHVlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2lu
ZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbKE5TTnVtYmVyKil2
YWx1ZSBkb3VibGVWYWx1ZV07IAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJl
dHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWUo
KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TWF4VmFsdWVB
dHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3Nd
XSkKKyAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIqKXZhbHVlIGRvdWJsZVZhbHVlXTsgCisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDAuMDsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24o
KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TU3RyaW5nKiB2YWx1ZURl
c2NyaXB0aW9uID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZURlc2Ny
aXB0aW9uIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgICByZXR1cm4g
W3ZhbHVlRGVzY3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOworCisgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eUluc2VydGlvblBvaW50TGluZU51bWJlckF0dHJpYnV0ZV07Cisg
ICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICBy
ZXR1cm4gWyhOU051bWJlciAqKXZhbHVlIGludFZhbHVlXTsgCisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIAorICAgIHJldHVybiAtMTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0FjdGlvblN1cHBvcnRlZChKU1N0cmluZ1JlZiBhY3Rpb24pCit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogYWN0aW9ucyA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzXTsKKyAgICByZXR1cm4gW2FjdGlvbnMgY29udGFpbnNP
YmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphY3Rpb25dXTsKKyAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUg
Ym9vbFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQoKSBj
b25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJlcXVpcmVkIl07CisgICAg
aWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1
cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Zv
Y3VzZWQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCgpIGNvbnN0
Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZEF0
dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11d
KQorICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc0V4cGFuZGVkKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eUV4cGFuZGVkQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgYm9v
bFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ2hlY2tlZCgpIGNvbnN0
Cit7CisgICAgLy8gT24gdGhlIE1hYywgaW50VmFsdWUoKT09MSBpZiBhIGEgY2hlY2thYmxlIGNv
bnRyb2wgaXMgY2hlY2tlZC4KKyAgICByZXR1cm4gaW50VmFsdWUoKSA9PSAxOworfQorCitpbnQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAoreworICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc3VyZUxldmVsQXR0
cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0p
CisgICAgICAgIHJldHVybiBbdmFsdWUgaW50VmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKworICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWsoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWERSVFNwZWVjaEF0dHJpYnV0ZSJdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBjcmVhdGVKU1N0cmlu
Z1JlZl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgICAgICAKKyAgICByZXR1cm4g
MDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhSXNHcmFiYmVkKCkgY29u
c3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRB
dHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3Nd
XSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKKworICAgIHJldHVybiBmYWxzZTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cygpIGNvbnN0Cit7Cisg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJp
YnV0ZV07CisgICAgaWYgKCFbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIE5TTXV0YWJsZVN0cmluZyogZHJvcEVmZmVjdHMgPSBb
TlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CisgICAgTlNJbnRlZ2VyIGxlbmd0aCA9IFt2YWx1ZSBj
b3VudF07CisgICAgZm9yIChOU0ludGVnZXIgayA9IDA7IGsgPCBsZW5ndGg7ICsraykgeworICAg
ICAgICBbZHJvcEVmZmVjdHMgYXBwZW5kU3RyaW5nOlt2YWx1ZSBvYmplY3RBdEluZGV4OmtdXTsK
KyAgICAgICAgaWYgKGsgPCBsZW5ndGggLSAxKQorICAgICAgICAgICAgW2Ryb3BFZmZlY3RzIGFw
cGVuZFN0cmluZzpAIiwiXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFtkcm9wRWZmZWN0cyBj
cmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAg
IHJldHVybiAwOworfQorCisvLyBwYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZXMKK2ludCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4KQoreworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGluZUZvckluZGV4UGFyYW1ldGVyaXplZEF0
dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6aW5kZXhdXTsKKyAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJl
dHVybiBbKE5TTnVtYmVyICopdmFsdWUgaW50VmFsdWVdOyAKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisKKyAgICByZXR1cm4gLTE7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUoaW50IGxpbmUpCit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSYW5nZUZvckxpbmVQYXJhbWV0ZXJp
emVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpsaW5lXV07
CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0pIHsKKyAgICAg
ICAgcmV0dXJuIFtOU1N0cmluZ0Zyb21SYW5nZShbdmFsdWUgcmFuZ2VWYWx1ZV0pIGNyZWF0ZUpT
U3RyaW5nUmVmXTsKKyAgICB9CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAg
IHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Ym91bmRzRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlCb3VuZHNGb3JSYW5n
ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJh
bmdlOnJhbmdlXV07CisgICAgTlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0KDAsMCwwLDApOworICAg
IGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11dKQorICAgICAgICByZWN0
ID0gW3ZhbHVlIHJlY3RWYWx1ZV07IAorICAgIAorICAgIC8vIGRvbid0IHJldHVybiBwb3NpdGlv
biBpbmZvcm1hdGlvbiBiZWNhdXNlIGl0IGlzIHBsYXRmb3JtIGRlcGVuZGVudAorICAgIE5TTXV0
YWJsZVN0cmluZyogYm91bmRzRGVzY3JpcHRpb24gPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJ7eyVmLCAlZn0sIHslZiwgJWZ9fSIsLTEuMGYsLTEuMGYscmVjdC5zaXplLndp
ZHRoLHJlY3Quc2l6ZS5oZWlnaHRdOworICAgIHJldHVybiBbYm91bmRzRGVzY3JpcHRpb24gY3Jl
YXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOwor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHN0cmluZyA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVN0cmluZ0ZvclJhbmdl
UGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUmFu
Z2U6cmFuZ2VdXTsKKyAgICBpZiAoIVtzdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIFtzdHJpbmcgY3JlYXRl
SlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1
cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQg
bGVuZ3RoKQoreworICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVu
Z3RoKTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0F0dHJpYnV0ZWRTdHJp
bmcqIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUg
Zm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOnJhbmdlXV07CisgICAgaWYgKCFb
c3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0cmluZyBjbGFzc11dKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICAKKyAgICBOU1N0cmluZyogc3RyaW5nV2l0aEF0dHJzID0gW3N0cmlu
ZyBkZXNjcmlwdGlvbl07CisgICAgcmV0dXJuIFtzdHJpbmdXaXRoQXR0cnMgY3JlYXRlSlNTdHJp
bmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsK
K30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJ
c01pc3NwZWxsZWQodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBO
U1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7CisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBdHRyaWJ1dGVkU3RyaW5nKiBzdHJpbmcgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVkU3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNW
YWx1ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1dOworICAgIGlmICghW3N0cmluZyBpc0tpbmRPZkNs
YXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgTlNEaWN0aW9uYXJ5KiBhdHRycyA9IFtzdHJpbmcgYXR0cmlidXRlc0F0SW5kZXg6MCBl
ZmZlY3RpdmVSYW5nZTpuaWxdOworICAgIGlmKFtbYXR0cnMgb2JqZWN0Rm9yS2V5Ok5TQWNjZXNz
aWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlXSBib29sVmFsdWVdKQorICAgICAgICByZXR1
cm4gdHJ1ZTsgICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVy
biBmYWxzZTsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCogc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwgSlNTdHJpbmdS
ZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0KQoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkqIHBhcmFtZXRlciA9IFtOU011
dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOworICAgIFtwYXJhbWV0ZXIgc2V0T2JqZWN0Oihp
c0RpcmVjdGlvbk5leHQpID8gQCJBWERpcmVjdGlvbk5leHQiIDogQCJBWERpcmVjdGlvblByZXZp
b3VzIiBmb3JLZXk6QCJBWERpcmVjdGlvbiJdOworICAgIFtwYXJhbWV0ZXIgc2V0T2JqZWN0OltO
U051bWJlciBudW1iZXJXaXRoSW50OjFdIGZvcktleTpAIkFYUmVzdWx0c0xpbWl0Il07CisgICAg
aWYgKHN0YXJ0RWxlbWVudCkKKyAgICAgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6KGlkKXN0YXJ0
RWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSBmb3JLZXk6QCJBWFN0YXJ0RWxlbWVudCJdOwor
ICAgIGlmIChzZWFyY2hLZXkpCisgICAgICAgIFtwYXJhbWV0ZXIgc2V0T2JqZWN0OltOU1N0cmlu
ZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoS2V5XSBmb3JLZXk6QCJBWFNlYXJjaEtleSJd
OworICAgIGlmIChzZWFyY2hUZXh0ICYmIEpTU3RyaW5nR2V0TGVuZ3RoKHNlYXJjaFRleHQpKQor
ICAgICAgICBbcGFyYW1ldGVyIHNldE9iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5n
UmVmOnNlYXJjaFRleHRdIGZvcktleTpAIkFYU2VhcmNoVGV4dCJdOworICAgIAorICAgIGlkIHVp
RWxlbWVudCA9IFtbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVUlF
bGVtZW50c0ZvclNlYXJjaFByZWRpY2F0ZSIgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcl0gbGFzdE9i
amVjdF07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZSh1aUVsZW1l
bnQpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30K
KworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJp
YnV0ZXNPZkNvbHVtbkhlYWRlcnMoKQoreworICAgIC8vIG5vdCB5ZXQgZGVmaW5lZCBpbiBBcHBL
aXQuLi4gb2RkCisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogY29s
dW1uSGVhZGVyc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWENvbHVtbkhlYWRlclVJRWxlbWVudHMiXTsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+ID4gY29sdW1uSGVhZGVyc1ZlY3RvcjsKKyAgICBjb252ZXJ0TlNBcnJh
eVRvVmVjdG9yKGNvbHVtbkhlYWRlcnNBcnJheSwgY29sdW1uSGVhZGVyc1ZlY3Rvcik7CisgICAg
cmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjb2x1bW5IZWFkZXJzVmVjdG9yKTsKKyAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dI
ZWFkZXJzKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBy
b3dIZWFkZXJzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYUm93SGVhZGVyVUlFbGVtZW50cyJdOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gPiByb3dIZWFkZXJzVmVjdG9yOworICAgIGNvbnZlcnROU0FycmF5VG9WZWN0
b3Iocm93SGVhZGVyc0FycmF5LCByb3dIZWFkZXJzVmVjdG9yKTsKKyAgICByZXR1cm4gZGVzY3Jp
cHRpb25PZkVsZW1lbnRzKHJvd0hlYWRlcnNWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMoKQoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGNvbHVtbnNBcnJheSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNvbHVtbnNB
dHRyaWJ1dGVdOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBj
b2x1bW5zVmVjdG9yOworICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3IoY29sdW1uc0FycmF5LCBj
b2x1bW5zVmVjdG9yKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbnNW
ZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZlJvd3MoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5T
QXJyYXkqIHJvd3NBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gPiByb3dzVmVjdG9yOworICAgIGNvbnZlcnROU0FycmF5VG9WZWN0
b3Iocm93c0FycmF5LCByb3dzVmVjdG9yKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1l
bnRzKHJvd3NWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscygpCit7CisgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCisgICAgTlNBcnJheSogY2VsbHNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhWaXNpYmxlQ2VsbHMiXTsKKyAgICBWZWN0b3I8UmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY2VsbHNWZWN0b3I7CisgICAgY29udmVydE5TQXJy
YXlUb1ZlY3RvcihjZWxsc0FycmF5LCBjZWxsc1ZlY3Rvcik7CisgICAgcmV0dXJuIGRlc2NyaXB0
aW9uT2ZFbGVtZW50cyhjZWxsc1ZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVhZGVyKCkKK3sKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICBpZCBoZWFkZXJPYmplY3QgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVdOworICAg
IGlmICghaGVhZGVyT2JqZWN0KQorICAgICAgICByZXR1cm4gW0AiIiBjcmVhdGVKU1N0cmluZ1Jl
Zl07CisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGhl
YWRlclZlY3RvcjsKKyAgICBoZWFkZXJWZWN0b3IuYXBwZW5kKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNyZWF0ZShoZWFkZXJPYmplY3QpKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1l
bnRzKGhlYWRlclZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAg
IHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93Q291bnQoKQor
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1
dGVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30K
KworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkNvdW50KCkKK3sKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXJyYXlBdHRyaWJ1dGVDb3VudDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEluVGFibGUoKQoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIE5TTnVtYmVyKiBpbmRleE51bWJlciA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUluZGV4QXR0cmlidXRlXTsK
KyAgICBpZiAoaW5kZXhOdW1iZXIpCisgICAgICAgIHJldHVybiBbaW5kZXhOdW1iZXIgaW50VmFs
dWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAtMTsKK30KKwor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0luZGV4
UmFuZ2UoKQoreworICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01ha2VSYW5nZSgwLDApOworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TVmFsdWUqIGluZGV4UmFuZ2UgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUm93SW5kZXhSYW5nZSJdOworICAg
IGlmIChpbmRleFJhbmdlKQorICAgICAgICByYW5nZSA9IFtpbmRleFJhbmdlIHJhbmdlVmFsdWVd
OworICAgIE5TTXV0YWJsZVN0cmluZyogcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAInslZCwgJWR9IixyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVu
Z3RoXTsKKyAgICByZXR1cm4gW3JhbmdlRGVzY3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkluZGV4
UmFuZ2UoKQoreworICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01ha2VSYW5nZSgwLDApOworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TTnVtYmVyKiBpbmRleFJhbmdlID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENvbHVtbkluZGV4UmFuZ2UiXTsK
KyAgICBpZiAoaW5kZXhSYW5nZSkKKyAgICAgICAgcmFuZ2UgPSBbaW5kZXhSYW5nZSByYW5nZVZh
bHVlXTsKKyAgICBOU011dGFibGVTdHJpbmcqIHJhbmdlRGVzY3JpcHRpb24gPSBbTlNNdXRhYmxl
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ7JWQsICVkfSIscmFuZ2UubG9jYXRpb24sIHJhbmdl
Lmxlbmd0aF07CisgICAgcmV0dXJuIFtyYW5nZURlc2NyaXB0aW9uIGNyZWF0ZUpTU3RyaW5nUmVm
XTsgICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOwor
fQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sLCB1bnNpZ25lZCByb3cpCit7
CisgICAgTlNBcnJheSAqY29sUm93QXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOltO
U051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6Y29sXSwgW05TTnVtYmVyIG51bWJlcldpdGhV
bnNpZ25lZEludDpyb3ddLCBuaWxdOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENlbGxGb3JDb2x1bW5BbmRSb3ciIGZvclBhcmFtZXRl
cjpjb2xSb3dBcnJheV0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAgCisKKyAgICBy
ZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QKK3sKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y3JlYXRlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eUhvcml6b250YWxTY3JvbGxCYXJBdHRyaWJ1dGVdKTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TICAgIAorICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFy
KCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZlcnRpY2FsU2Nyb2xsQmFyQXR0cmlidXRlXSk7Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAgICAgCit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSgpCit7Cisg
ICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TVmFsdWUgKmluZGV4UmFuZ2UgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRS
YW5nZUF0dHJpYnV0ZV07CisgICAgaWYgKGluZGV4UmFuZ2UpCisgICAgICAgIHJhbmdlID0gW2lu
ZGV4UmFuZ2UgcmFuZ2VWYWx1ZV07CisgICAgTlNNdXRhYmxlU3RyaW5nICpyYW5nZURlc2NyaXB0
aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAieyVkLCAlZH0iLHJhbmdl
LmxvY2F0aW9uLCByYW5nZS5sZW5ndGhdOworICAgIHJldHVybiBbcmFuZ2VEZXNjcmlwdGlvbiBj
cmVhdGVKU1N0cmluZ1JlZl07ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAK
KyAgICByZXR1cm4gMDsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxl
Y3RlZFRleHRSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IE5TUmFuZ2UgdGV4dFJhbmdlID0gTlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7CisgICAg
TlNWYWx1ZSAqdGV4dFJhbmdlVmFsdWUgPSBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTp0ZXh0UmFu
Z2VdOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eVNldFZhbHVlOnRleHRSYW5nZVZhbHVlIGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxp
dHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlbWVudCgpCit7CisgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5UGVy
Zm9ybUFjdGlvbjpOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRBY3Rpb25dOworICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1l
bnQoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3NpYmlsaXR5RGVjcmVtZW50QWN0aW9uXTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2hvd01lbnUoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3NpYmlsaXR5U2hvd01l
bnVBY3Rpb25dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpwcmVzcygpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5UGVyZm9ybUFjdGlvbjpOU0FjY2Vzc2liaWxp
dHlQcmVzc0FjdGlvbl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICBOU0FycmF5KiBhcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDplbGVtZW50LT5wbGF0
Zm9ybVVJRWxlbWVudCgpXTsKKyAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTph
cnJheSBmb3JBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0
ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAKK30KKworSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1ZSgpIGNv
bnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNvZGluZygpCit7CisgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgpCit7CisgICAgcmV0
dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKQoreworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TVVJMICp1cmwgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGVdOworICAgIHJl
dHVybiBbW3VybCBhYnNvbHV0ZVN0cmluZ10gY3JlYXRlSlNTdHJpbmdSZWZdOyAgICAKKyAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIG5pbDsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVm
IGZ1bmN0aW9uQ2FsbGJhY2spCit7CisgICAgaWYgKCFmdW5jdGlvbkNhbGxiYWNrKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgCisgICAgLy8gTWFjIHByb2dyYW1tZXJzIHNob3VsZCBub3QgYmUg
YWRkaW5nIG1vcmUgdGhhbiBvbmUgbm90aWZpY2F0aW9uIGxpc3RlbmVyIHBlciBlbGVtZW50Lgor
ICAgIC8vIE90aGVyIHBsYXRmb3JtcyBtYXkgYmUgZGlmZmVyZW50LgorICAgIGlmIChtX25vdGlm
aWNhdGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX25vdGlmaWNhdGlv
bkhhbmRsZXIgPSBbW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGFsbG9jXSBpbml0
V2l0aFBsYXRmb3JtRWxlbWVudDpwbGF0Zm9ybVVJRWxlbWVudCgpXTsKKyAgICBbbV9ub3RpZmlj
YXRpb25IYW5kbGVyIHNldENhbGxiYWNrOmZ1bmN0aW9uQ2FsbGJhY2tdOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0
aW9uTGlzdGVuZXIoKQoreworICAgIC8vIE1hYyBwcm9ncmFtbWVycyBzaG91bGQgbm90IGJlIHRy
eWluZyB0byByZW1vdmUgYSBsaXN0ZW5lciB0aGF0J3MgYWxyZWFkeSByZW1vdmVkLgorICAgIEFT
U0VSVChtX25vdGlmaWNhdGlvbkhhbmRsZXIpOworCisgICAgW21fbm90aWZpY2F0aW9uSGFuZGxl
ciByZWxlYXNlXTsKKyAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSBuaWw7CisgICAgCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2Fi
bGUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlKCkgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc09mZlNjcmVlbigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NvbGxh
cHNlZCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQoKSBjb25zdAor
eworICAgIEJPT0wgcmVzdWx0ID0gTk87CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgcmVzdWx0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkXTsKKyAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1cCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYSGFzUG9wdXAiXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05T
TnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKKyAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZUZvY3VzKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZVNlbGVjdGlvbigpCit7
CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFkZFNlbGVjdGlvbigpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbigpCit7CisgICAgLy8gRklY
TUU6IGltcGxlbWVudAorfQorCisvLyBUZXh0IG1hcmtlcnMKK1Bhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJh
bmdlRm9yRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVSUVs
ZW1lbnQiIGZvclBhcmFtZXRlcjplbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpXTsKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5n
ZSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQor
CitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIE5TTnVtYmVyKiBsZW5ndGhWYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMZW5ndGhGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFt
ZXRlcjooaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIHJldHVybiBb
bGVuZ3RoVmFsdWUgaW50VmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAK
KyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiB0ZXh0TWFya2VyKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWFByZXZpb3VzVGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjoo
aWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHByZXZpb3VzTWFya2VyKTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJh
bWV0ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShuZXh0TWFya2VyKTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogbWFya2VyUmFuZ2UpCit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdGV4dFN0cmluZyA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZv
clBhcmFtZXRlcjooaWQpbWFya2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOwor
ICAgIHJldHVybiBbdGV4dFN0cmluZyBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0YXJ0TWFya2VyLCBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFya2VyKQoreworICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIE5TQXJyYXkqIHRleHRNYXJrZXJzID0gW05TQXJyYXkgYXJyYXlXaXRo
T2JqZWN0czooaWQpc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCAoaWQpZW5kTWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgbmlsXTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2Ug
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlclJh
bmdlRm9yVW5vcmRlcmVkVGV4dE1hcmtlcnMiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2Vyc107Cisg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2Vy
UmFuZ2UpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsK
K30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KGlk
KXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7ICAgIAorfQorCitQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQorewor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFu
Z2UoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1h
cmtlcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOyAg
ICAKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJGb3JQb3NpdGlvbiIgZm9yUGFy
YW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFBvaW50Ok5TTWFrZVBvaW50KHgsIHkpXV07CisgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOyAgICAKK30KKworUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
Y2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IG1hcmtlcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB1aUVsZW1l
bnQgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVUlFbGVtZW50
Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCltYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHVpRWxlbWVu
dCk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOyAgCit9
CisKK30gLy8gbmFtZXNwYWNlIFdUUgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQkocmV2aXNpb24gOTg5NzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjAsNSArNjAsMTEgQEAKIHsKICAgICByZXR1cm4gSlNTdHJpbmdSZXRhaW4odXJs
KTsgLy8gRG8gbm90aGluZyBvbiBtYWMuCiB9CisgICAgCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpCit7CisgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IHBsYXRmb3JtTmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIm1hYyIpKTsKKyAgICByZXR1cm4gcGxhdGZvcm1OYW1lOworfQogCiB9IC8vIG5h
bWVzcGFjZSBXVFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5o
CShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlX2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZV9oCisKKyNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIENGVHlwZVJlZiBQbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZTsKKyNlbHNlCit0eXBlZGVmIHZvaWQqIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlOworI2Vu
ZGlmCisKK25hbWVzcGFjZSBXVFIgeworICAgIAorY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gY3JlYXRlKFBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlPiBjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSYpOworICAg
IAorICAgIH5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKCk7CisgICAgCisgICAgUGxhdGZv
cm1UZXh0TWFya2VyUmFuZ2UgcGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIEpTQ2xhc3NSZWYgd3JhcHBlckNsYXNzKCk7CisgICAgCisgICAgc3RhdGljIEpTT2Jq
ZWN0UmVmIG1ha2VKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoSlNDb250ZXh0UmVmLCBj
b25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJik7CisgICAgYm9vbCBpc0VxdWFsKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKKyAgICAKK3ByaXZhdGU6CisgICAgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZShQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSk7CisgICAgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlJik7CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxQbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZT4gbV90ZXh0TWFya2VyUmFuZ2U7CisjZWxzZQorICAgIFBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlIG1fdGV4dE1hcmtlclJhbmdlOworI2VuZGlmCit9OworICAgIAorI2lmICFQ
TEFURk9STShNQUMpCitpbmxpbmUgYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpp
c0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsgfQor
I2VuZGlmCisgICAgCit9IC8vIG5hbWVzcGFjZSBXVFIKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2VfaApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkocmV2aXNpb24gOTg5NzcpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVf
aAogI2RlZmluZSBJbmplY3RlZEJ1bmRsZV9oCiAKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgpAQCAt
NTYsNiArNTcsNyBAQAogICAgIEdDQ29udHJvbGxlciogZ2NDb250cm9sbGVyKCkgeyByZXR1cm4g
bV9nY0NvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICBFdmVudFNlbmRpbmdDb250cm9sbGVyKiBldmVu
dFNlbmRpbmdDb250cm9sbGVyKCkgeyByZXR1cm4gbV9ldmVudFNlbmRpbmdDb250cm9sbGVyLmdl
dCgpOyB9CiAgICAgVGV4dElucHV0Q29udHJvbGxlciogdGV4dElucHV0Q29udHJvbGxlcigpIHsg
cmV0dXJuIG1fdGV4dElucHV0Q29udHJvbGxlci5nZXQoKTsgfQorICAgIEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZ2V0KCk7IH0KIAogICAgIEluamVjdGVkQnVuZGxlUGFnZSogcGFnZSgp
IGNvbnN0OwogICAgIHNpemVfdCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VzLnNp
emUoKTsgfQpAQCAtMTA1LDYgKzEwNyw3IEBACiAgICAgV0tCdW5kbGVQYWdlR3JvdXBSZWYgbV9w
YWdlR3JvdXA7CiAgICAgVmVjdG9yPE93blB0cjxJbmplY3RlZEJ1bmRsZVBhZ2U+ID4gbV9wYWdl
czsKIAorICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjsKICAgICBSZWZQdHI8TGF5b3V0VGVzdENvbnRyb2xsZXI+IG1fbGF5b3V0VGVz
dENvbnRyb2xsZXI7CiAgICAgUmVmUHRyPEdDQ29udHJvbGxlcj4gbV9nY0NvbnRyb2xsZXI7CiAg
ICAgUmVmUHRyPEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI+IG1fZXZlbnRTZW5kaW5nQ29udHJvbGxl
cjsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDk4OTc3KQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNiArMTkwLDggQEAKICAgICB2b2lkIGNhbGxGb2N1c1dl
YlZpZXdDYWxsYmFjaygpOwogICAgIHZvaWQgY2FsbFNldEJhY2tpbmdTY2FsZUZhY3RvckNhbGxi
YWNrKCk7CiAKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKCk7Cisg
ICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgd2FpdFRvRHVtcFdhdGNoZG9n
VGltZXJJbnRlcnZhbDsKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKKworI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5o
IgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZS5oIgorI2luY2x1ZGUgIkpTQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tC
dW5kbGVQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2VQcml2YXRlLmg+CisK
K25hbWVzcGFjZSBXVFIgeworCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPiBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKTsKK30KKworQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkKK3sKK30KKworQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI6On5BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpCit7Cit9CisKK3ZvaWQgQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6Om1ha2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIHdpbmRvd09iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHNl
dFByb3BlcnR5KGNvbnRleHQsIHdpbmRvd09iamVjdCwgImFjY2Vzc2liaWxpdHlDb250cm9sbGVy
IiwgdGhpcywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSwgZXhjZXB0aW9uKTsKK30KKworSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6d3JhcHBlckNsYXNzKCkKK3sKKyAgICByZXR1cm4gSlNBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDbGFzcygpOworfQorCitQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290
RWxlbWVudCgpCit7CisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6
c2hhcmVkKCkucGFnZSgpLT5wYWdlKCk7CisgICAgdm9pZCogcm9vdCA9IFdLQWNjZXNzaWJpbGl0
eVJvb3RPYmplY3QocGFnZSk7CisgICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNyZWF0ZShzdGF0aWNfY2FzdDxQbGF0Zm9ybVVJRWxlbWVudD4ocm9vdCkpOyAgICAKK30K
KworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjo6Zm9jdXNlZEVsZW1lbnQoKQoreworICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpOworICAgIHZvaWQqIHJvb3QgPSBX
S0FjY2Vzc2liaWxpdHlGb2N1c2VkT2JqZWN0KHBhZ2UpOworICAgIAorICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoc3RhdGljX2Nhc3Q8UGxhdGZvcm1VSUVsZW1lbnQ+
KHJvb3QpKTsgICAgCit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAg
ICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVtZW50ID0gcm9vdEVsZW1lbnQo
KTsKKyAgICByZXR1cm4gdWlFbGVtZW50LT5lbGVtZW50QXRQb2ludCh4LCB5KTsKK30KKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdUUgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1h
a2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZp
bGUuYW0JKHJldmlzaW9uIDk4OTc3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtl
ZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTAgQEAKIG5vaW5zdF9MVExJQlJB
UklFUyArPSBMaWJyYXJpZXMvbGliVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlLmxhCiAKIHdlYmtp
dHRlc3RydW5uZXJfYnVpbHRfc291cmNlcyArPSBcCisJRGVyaXZlZFNvdXJjZXMvSW5qZWN0ZWRC
dW5kbGUvSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0lu
amVjdGVkQnVuZGxlL0pTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIFwK
KwlEZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0dDQ29udHJvbGxl
ci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0luamVjdGVkQnVuZGxlL0pTTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwIFwKQEAgLTcwLDYgKzc0LDE0IEBACiBCVUlMVF9TT1VSQ0VTICs9ICQod2Via2l0
dGVzdHJ1bm5lcl9idWlsdF9zb3VyY2VzKQogCiBMaWJyYXJpZXNfbGliVGVzdFJ1bm5lckluamVj
dGVkQnVuZGxlX2xhX1NPVVJDRVMgPSBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgXAorCVRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBcCisJVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5j
cHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmggXAorCVRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5j
cHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
dGl2YXRlRm9udHMuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9KU1dyYXBwYWJsZS5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0pTV3JhcHBlci5jcHAgXApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci93aW4vSW5qZWN0ZWRCdW5kbGUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd2luL0luamVjdGVkQnVuZGxlLnZjcHJvagkocmV2aXNpb24gOTg5NzcpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9JbmplY3RlZEJ1bmRsZS52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTM5NCw2ICszOTQsMjE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEJpbmRpbmdzXEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmlkbCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
PgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxl
YXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8
VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxp
dGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5k
bGVcQmluZGluZ3NcQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRsIgorCQkJCT4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
RGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxCaW5kaW5nc1xBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlLmlkbCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVn
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQmluZGluZ3Nc
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdf
QWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8
VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19D
RkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fp
cm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0
aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8
VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVj
dGVkQnVuZGxlXEJpbmRpbmdzXEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsIgogCQkJCT4KIAkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTYxOCw2ICs4MjYsMzggQEAKIAkJCU5hbWU9IkRlcml2
ZWQgU291cmNlcyIKIAkJCT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVs
YXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAiCiAJCQkJPgogCQkJPC9G
aWxlPgpAQCAtNjUxLDYgKzg5MSwzOCBAQAogCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZp
bGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuY3BwIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4u
XEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisJCQk+CisJCTwvRmls
ZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIuY3BwIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2
ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisJCQk+
CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVc
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZp
bGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZS5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9
Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIgorCQkJPgorCQk8
L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRp
dmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVx3aW5cQWN0aXZhdGVGb250cy5jcHAiCiAJCQk+CiAJ
CTwvRmlsZT4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMubWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHJldmlzaW9uIDk4OTc3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291
cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiwxMCBAQAogIwogCiBJTlRFUkZB
Q0VTID0gXAorICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyIFwKKyAgICBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciBcCisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBcCisgICAgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCBcCiAgICAgRXZlbnRTZW5kaW5nQ29udHJvbGxlciBcCiAgICAg
R0NDb250cm9sbGVyIFwKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciBcCkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTg5NzcpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsMTcgQEAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAJCTBGNTE2OUNCMTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1MTY5
Q0ExNDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgKi87IH07CiAJCTBGNTE2OUND
MTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1MTY5Q0ExNDQ1MjIyRDAwRTBBOUQ3IC8q
IFdlYktpdC5mcmFtZXdvcmsgKi87IH07CisJCTI5MjEwRUFFMTQ0Q0FDQjcwMDgzNUJCNSAvKiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5MjEwRUE5MTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcCAqLzsgfTsKKwkJMjkyMTBFQjAxNDRDQUNCRDAwODM1QkI1IC8qIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI5MjEwRUEyMTQ0Q0FBQTUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5jcHAgKi87IH07CisJCTI5MjEwRUI0MTQ0Q0FDRDUwMDgzNUJCNSAvKiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyOTIxMEVCMTE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIuY3BwICovOyB9OworCQkyOTIxMEVCNTE0NENBQ0Q1MDA4MzVCQjUgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyOTIxMEVCMzE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJNYWMubW0gKi87IH07CisJCTI5MjEwRURBMTQ0Q0MzRUEwMDgzNUJCNSAvKiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjkyMTBFQUIxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRNYWMubW0gKi87IH07CisJCTI5MjEwRURCMTQ0Q0Q0NzkwMDgzNUJCNSAvKiBKU0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU4MzkxM0QwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmNwcCAqLzsgfTsKKwkJMjkyMTBFRTExNDRDREIyNjAwODM1QkI1IC8qIEpTQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyOTIxMEVEQjE0NjcyN0U3MTE4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcCAqLzsgfTsKKwkJMjlBOEZDQ0IxNDVFRjAyRTAwOTA0NUE2IC8qIEpTQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjkyMTBFRTExNDRDREU2Nzg5ODE1RUU1IC8qIEpTQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuY3BwICovOyB9OworCQkyOUE4RkNERDE0NUYwMzM3MDA5MDQ1QTYgLyogSlNB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QThGQ0UxMzQ1RTcwMjEwMDZBQTVBNiAvKiBKU0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovOyB9OworCQkyOUE4RkNFMjE0NUYwMzdCMDA5
MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4RkNFMTE0NUYwMzdCMDA5MDQ1QTYg
LyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgKi87IH07CisJCTI5QThGQ0U1MTQ1
RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBOEZDRTQxNDVGMDQ2
NDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0gKi87IH07CiAJ
CTUzMjJGQjQzMTNGREEwQ0QwMDQxQUJDQyAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMyMkZCNDExM0ZE
QTBDRDAwNDFBQkNDIC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgKi87IH07CiAJCTUzMjJG
QjQ2MTNGREEwRUEwMDQxQUJDQyAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMjJGQjQ0MTNGREEwRUEwMDQxQUJD
QyAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCAqLzsgfTsKIAkJNTY0MUUyRDAxNDMzNUU5NTAwODMw
N0U1IC8qIEpTVGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NjQxRTJDRTE0MzM1RTk1MDA4MzA3RTUgLyogSlNUZXh0
SW5wdXRDb250cm9sbGVyLmNwcCAqLzsgfTsKQEAgLTg2LDYgKzk3LDI3IEBACiAKIC8qIEJlZ2lu
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkwRjUxNjlDQTE0NDUyMjJEMDBFMEE5RDcg
LyogV2ViS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gV2ViS2l0LmZyYW1ld29yazsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMjkyMTBFQTIxNDRDQUFBNTAw
ODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQTMxNDRDQUFBNTAwODM1QkI1IC8qIEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEw
RUE4MTQ0Q0FCODgwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVBOTE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MjkyMTBFQUExNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVBQjE0NENBQ0IyMDA4MzVCQjUgLyog
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW07IHBhdGggPSBtYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MjkyMTBFQjExNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQjIxNDRDQUNENDAw
ODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTI5MjEwRUIzMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVEQjE0Njcy
N0U3MTE4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTI5MjEwRURC
MTQ2NzI3RTgxMTgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkyOTIxMEVEQzE0NENE
NTZFMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTI5MjEwRUUxMTQ0Q0RFNjc4OTgxNUVFNSAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1
bm5lci9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKKwkJMjkyMTBFRTExNDVDREU2Nzg5ODE1RUU1IC8qIEpTQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1
bm5lci9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CisJCTI5QThGQ0M1MTQ1QjkzQzYwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOUE4RkNEMjE0NUVGOEYy
MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTI5QThGQ0RGMTQ1RjAzNTgwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlBOEZDRTExNDVGMDM3
QjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5QThGQ0UxMzQ1RTcwMjEwMDZBQTVB
NiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJ
MjlBOEZDRTEzNDVFNzAyMTAwNkFBNUE3IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCTI5QThGQ0U0MTQ1RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzhENDQyMjEzMzQ2RDAwMDA2QTc3N0IgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNv
bmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIzMEUxNjEzOEM3OEJGMDBC
Q0NGQ0EgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBh
dGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTQxODE3MzFCMTM4QUQzOUQwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1
cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQ29yZVRlc3RTdXBw
b3J0Lmg7IHBhdGggPSBXZWJDb3JlVGVzdFN1cHBvcnQvV2ViQ29yZVRlc3RTdXBwb3J0Lmg7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0xMDAsNiArMTMyLDggQEAKIAkJ
NTY2NEE0OTkxNDMyNjM4NDAwODg4MUJFIC8qIFRleHRJbnB1dENvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dElucHV0Q29udHJvbGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NjcwQjgyNjEzODZGQzEzMDAyRUIzNTUgLyogRXZlbnRT
ZW5kZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNlbmRl
clByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU2NzBCODI3MTM4NkZDQTUw
MDJFQjM1NSAvKiBFdmVudFNlbmRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRXZlbnRTZW5kZXJQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTgzOTEzRDAxNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVu
bmVyL0pTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQk1ODM5MTNEMTE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVu
bmVyL0pTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJNjUxMEE3NzcxMUVDNjQzODAwNDEwODY3IC8qIEFIRU1fX19fLlRURiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5h
bWUgPSAiQUhFTV9fX18uVFRGIjsgcGF0aCA9ICJmb250cy9BSEVNX19fXy5UVEYiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2NTEwQTc3ODExRUM2NDM4MDA0MTA4NjcgLyogQ29sb3JC
aXRzLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGZpbGU7IG5hbWUgPSBDb2xvckJpdHMudHRmOyBwYXRoID0gZm9udHMvQ29sb3JCaXRzLnR0Zjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMEE3NzkxMUVDNjQzODAwNDEwODY3IC8q
IFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IFdlYktpdFdlaWdodFdhdGNoZXIxMDAu
dHRmOyBwYXRoID0gZm9udHMvV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGY7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNDcsNiArMjgxLDI0IEBACiAJCQluYW1lID0gUHJvZHVjdHM7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkyOUE4RkNFMDE0NUYwMzVEMDA5
MDQ1QTYgLyogQWNjZXNzaWJpbGl0eSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJMjkyMTBFQTIxNDRDQUFBNTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmNwcCAqLywKKwkJCQkyOTIxMEVBMzE0NENBQUE1MDA4MzVCQjUgLyogQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuaCAqLywKKwkJCQkyOTIxMEVBOTE0NENBQ0IyMDA4MzVCQjUgLyog
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi8sCisJCQkJMjkyMTBFQUExNDRDQUNCMjAwODM1
QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAqLywKKwkJCQkyOTIxMEVBQjE0NENBQ0Iy
MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLywKKwkJCQkyOTIxMEVC
MTE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovLAorCQkJ
CTI5MjEwRUIyMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oICov
LAorCQkJCTI5MjEwRUIzMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ck1hYy5tbSAqLywKKwkJCQkyOUE4RkNFMTE0NUYwMzdCMDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZS5jcHAgKi8sCisJCQkJMjlBOEZDREYxNDVGMDM1ODAwOTA0NUE2IC8q
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCAqLywKKwkJCQkyOUE4RkNFNDE0NUYwNDY0
MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbSAqLywKKwkJCSk7
CisJCQluYW1lID0gQWNjZXNzaWJpbGl0eTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCTY1RUI4NTlFMTFFQzY3Q0MwMDM0RDMwMCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjU5LDYgKzMxMSw3IEBACiAJCUJDMTRFNEUw
MTIwRTAyRjkwMDgyNkMwQyAvKiBDb250cm9sbGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMjlBOEZDRTAxNDVGMDM1RDAwOTA0NUE2IC8qIEFjY2Vz
c2liaWxpdHkgKi8sCiAJCQkJQkM4RkQ4QzkxMjBFNTI3RjAwRjNFNzFBIC8qIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIuY3BwICovLAogCQkJCUJDOEZEOEM4MTIwRTUyN0YwMEYzRTcxQSAvKiBFdmVu
dFNlbmRpbmdDb250cm9sbGVyLmggKi8sCiAJCQkJQkMxNEU0RDkxMjBFMDJEMDAwODI2QzBDIC8q
IEdDQ29udHJvbGxlci5jcHAgKi8sCkBAIC0zNDUsNiArMzk4LDEwIEBACiAJCQkJQkM5NTJDMEUx
MUYzQjk3QjAwMzM5OEI0IC8qIEpTV3JhcHBhYmxlLmggKi8sCiAJCQkJQkM5NTJDMEMxMUYzQjk2
NTAwMzM5OEI0IC8qIEpTV3JhcHBlci5jcHAgKi8sCiAJCQkJQkM5NTJDMEIxMUYzQjk2NTAwMzM5
OEI0IC8qIEpTV3JhcHBlci5oICovLAorCQkJCTI5MjEwRUE4MTQ0Q0FCODgwMDgzNUJCNSAvKiBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwgKi8sCisJCQkJMjlBOEZDQzUxNDVCOTNDNjAwOTA0
NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbCAqLywKKwkJCQkyOUE4RkNEMjE0NUVG
OEYyMDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGwgKi8sCisJCQkJ
MjkyMTBFREMxNDRDRDU2RTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsICov
LAogCQkJCUJDOEZEOENCMTIwRTUyQjAwMEYzRTcxQSAvKiBFdmVudFNlbmRpbmdDb250cm9sbGVy
LmlkbCAqLywKIAkJCQlCQzE0RTRFMTEyMEUwMzIwMDA4MjZDMEMgLyogR0NDb250cm9sbGVyLmlk
bCAqLywKIAkJCQlCQzk1MkVEMjExRjNDMjlGMDAzMzk4QjQgLyogTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaWRsICovLApAQCAtMzU2LDYgKzQxMywxNCBAQAogCQlCQzk1MkQzQTExRjNCRjFGMDAzMzk4
QjQgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk1ODM5MTNEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5jcHAgKi8sCisJCQkJNTgzOTEzRDExNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCAqLywKKwkJCQkyOTIxMEVFMTE0NENERTY3ODk4MTVFRTUg
LyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8sCisJCQkJMjkyMTBFRTExNDVDREU2
Nzg5ODE1RUU1IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCAqLywKKwkJCQkyOUE4RkNF
MTM0NUU3MDIxMDA2QUE1QTYgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCAq
LywKKwkJCQkyOUE4RkNFMTM0NUU3MDIxMDA2QUE1QTcgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlLmggKi8sCisJCQkJMjkyMTBFREIxNDY3MjdFNzExODM1QkI1IC8qIEpTQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHAgKi8sCisJCQkJMjkyMTBFREIxNDY3MjdFODExODM1QkI1IC8q
IEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oICovLAogCQkJCUJDOEZEOEQwMTIwRTU0NUIwMEYz
RTcxQSAvKiBKU0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwICovLAogCQkJCUJDOEZEOEQxMTIw
RTU0NUIwMEYzRTcxQSAvKiBKU0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCAqLywKIAkJCQlCQzE0
RTRFODEyMEUwM0Q4MDA4MjZDMEMgLyogSlNHQ0NvbnRyb2xsZXIuY3BwICovLApAQCAtNTE2LDYg
KzU4MSwxNyBAQAogCQkJCUMwQ0U3MjBCMTI0N0M5MzMwMEJDMEVDNCAvKiBMYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU2NjRBNDlBMTQzMjYzODQwMDg4ODFC
RSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU2NDFFMkQw
MTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMjkyMTBFQUUxNDRDQUNCNzAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFQjAxNDRDQUNCRDAwODM1QkI1IC8qIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5MjEwRUI0MTQ0
Q0FDRDUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkyOTIxMEVCNTE0NENBQ0Q1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkyOTIxMEVEQTE0NENDM0VBMDA4MzVCQjUgLyog
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTI5MjEwRURC
MTQ0Q0Q0NzkwMDgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTI5MjEwRUUxMTQ0Q0RCMjYwMDgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjlBOEZDQ0IxNDVFRjAyRTAwOTA0NUE2
IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjlB
OEZDREQxNDVGMDMzNzAwOTA0NUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkyOUE4RkNFMjE0NUYwMzdCMDA5MDQ1QTYgLyogQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOUE4RkNFNTE0
NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbSBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZAkocmV2aXNp
b24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQJKHdvcmtp
bmcgY29weSkKQEAgLTc0MSwxNSArNzQxLDkgQEAKIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWlu
LXBhZGRpbmctd2l0aC1tdWx0aXBsZS1saW5lLWJveGVzLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9u
L3NoaWZ0LWNsaWNrLmh0bWwKIAotIyBJbXBsZW1lbnQgYWNjZXNpdGlsaXR5IHN1cHBvcnQgdG8g
V2ViS2l0MgotcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvYXJpYS1yb2xlcy11bmlnbm9yZWQu
aHRtbAotcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvYXJpYS1zbGlkZXItcmVxdWlyZWQtYXR0
cmlidXRlcy5odG1sCi1wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWhpZXJh
cmNoeS5odG1sCi1wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy10ZXh0
LWZvY3VzLmh0bWwKLXBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2lucHV0LXNsaWRlci5odG1s
Ci1wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9saXN0LWl0ZW1zLWFsd2F5cy1leHBvc2VkLmh0
bWwKLXBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L29iamVjdC13aXRoLXRpdGxlLmh0bWwKLXBs
YXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RhYmxlLWhpZXJhcmNoeS5odG1sCisjIEltcGxlbWVu
dCBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQgZm9yIFdlYktpdDIKK2FjY2Vzc2liaWxpdHkKK3BsYXRm
b3JtL2d0ay9hY2Nlc3NpYmlsaXR5CiAKICMgSW1wbGVtZW50IHRleHRJbnB1dENvbnRyb2xsZXIu
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UgaW50ZXJmYWNlCiBmYXN0L2Zvcm1zL2N1cnNvci1h
dC1lZGl0YWJsZS1jb250ZW50LWJvdW5kYXJ5Lmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1jaGlsZHJlbi13aGVuLWFyaWEtcm9sZS1jaGFu
Z2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMuaHRtbAkocmV2aXNp
b24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91cGRh
dGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw3IEBACiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJlbnQi
KS5mb2N1cygpOwogICAgICAgICB2YXIgcGFyZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Zm9jdXNlZEVsZW1lbnQ7CiAgICAgICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGRBdEluZGV4KDAp
LnJvbGUiLCAiJ0FYUm9sZTogQVhCdXR0b24nIik7Ci0gICAgICAgIHNob3VsZEJlKCJwYXJlbnQu
Y2hpbGRBdEluZGV4KDEpLnJvbGUiLCAiJ0FYUm9sZTogJyIpOworICAgICAgICBzaG91bGRCZVRy
dWUoInBhcmVudC5jaGlsZEF0SW5kZXgoMSkgPT0gbnVsbCB8fCBwYXJlbnQuY2hpbGRBdEluZGV4
KDEpLmlzVmFsaWQgPT0gZmFsc2UiKTsKICAgCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJidXR0b24xIikucmVtb3ZlQXR0cmlidXRlKCJyb2xlIik7CiAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJidXR0b24yIikuc2V0QXR0cmlidXRlKCJyb2xlIiwgImJ1dHRvbiIp
OwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dGJveC1y
b2xlLXJlcG9ydHMtbm90aWZpY2F0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLW5vdGlmaWNh
dGlvbnMuaHRtbAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS90ZXh0Ym94LXJvbGUtcmVwb3J0cy1ub3RpZmljYXRpb25zLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEyLDYgKzEyLDcgQEAKIDxkaXYgcm9sZT0idGV4dGJveCIgaWQ9ImFy
aWFUZXh0Qm94IiBhcmlhLW11bHRpbGluZT0iZmFsc2UiIHRhYmluZGV4PSIwIj5Tb21lIHRleHQg
aW4gYSB0ZXh0Ym94LjwvZGl2PgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0Pgor
ICAgIHZhciB0ZXh0Ym94QXhFbGVtZW50OwogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CiAgICAgICAgIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKQEAgLTIwLDcgKzIxLDcg
QEAKIAogICAgICAgICB2YXIgYXJpYVRleHRCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
YXJpYVRleHRCb3giKTsKICAgICAgICAgYXJpYVRleHRCb3guZm9jdXMoKTsKLSAgICAgICAgdmFy
IHRleHRib3hBeEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dDsKKyAgICAgICAgdGV4dGJveEF4RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50OwogICAgICAgICB0ZXh0Ym94QXhFbGVtZW50LmFkZE5vdGlmaWNhdGlvbkxp
c3RlbmVyKGxvZ05vdGlmaWNhdGlvbik7CiAgICAgICAgIHBlbmRpbmdOb3RpZmljYXRpb25zID0g
MzsKICAgICAgICAgYXJpYVRleHRCb3guZmlyc3RDaGlsZC5kZWxldGVEYXRhKDAsIDUpOwpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9uLWVs
ZW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rpb24tZWxlbWVudHMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA5ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0
bWwtc2VjdGlvbi1lbGVtZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwLDkg
KzIwLDcgQEAKIFBBU1MgYm9keS5jaGlsZEF0SW5kZXgoNCkuc3Vicm9sZSBpcyAnQVhTdWJyb2xl
OiBBWExhbmRtYXJrTmF2aWdhdGlvbicKIFBBU1MgYm9keS5jaGlsZEF0SW5kZXgoNSkuc3Vicm9s
ZSBpcyAnQVhTdWJyb2xlOiBBWExhbmRtYXJrQ29tcGxlbWVudGFyeScKIFBBU1MgYm9keS5jaGls
ZEF0SW5kZXgoNikuY2hpbGRBdEluZGV4KDApLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogJwotUEFT
UyBib2R5LmNoaWxkQXRJbmRleCg2KS5jaGlsZEF0SW5kZXgoMSkuc3Vicm9sZSBpcyAnQVhTdWJy
b2xlOiAnCiBQQVNTIGJvZHkuY2hpbGRBdEluZGV4KDcpLmNoaWxkQXRJbmRleCgwKS5zdWJyb2xl
IGlzICdBWFN1YnJvbGU6ICcKLVBBU1MgYm9keS5jaGlsZEF0SW5kZXgoNykuY2hpbGRBdEluZGV4
KDEpLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA5ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3VwZGF0ZS1jaGlsZHJlbi13aGVuLWFyaWEtcm9sZS1jaGFuZ2VzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAKIAogCiBQQVNTIHBhcmVudC5jaGlsZEF0SW5kZXgo
MCkucm9sZSBpcyAnQVhSb2xlOiBBWEJ1dHRvbicKLVBBU1MgcGFyZW50LmNoaWxkQXRJbmRleCgx
KS5yb2xlIGlzICdBWFJvbGU6ICcKK1BBU1MgcGFyZW50LmNoaWxkQXRJbmRleCgxKSA9PSBudWxs
IHx8IHBhcmVudC5jaGlsZEF0SW5kZXgoMSkuaXNWYWxpZCA9PSBmYWxzZSBpcyB0cnVlCiBQQVNT
IHBhcmVudC5jaGlsZEF0SW5kZXgoMCkucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCiBQ
QVNTIHBhcmVudC5jaGlsZEF0SW5kZXgoMSkucm9sZSBpcyAnQVhSb2xlOiBBWEJ1dHRvbicKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1wcmVkaWNhdGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGljYXRlLmh0
bWwJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvc2VhcmNoLXByZWRpY2F0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3
IEBACiA8aW5wdXQgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJDaGVja2JveCIgLz4gY2hlY2tib3g8
YnIgLz4KIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiIC8+CiA8L2Zvcm0+Ci08
aW1nIGlkPSJpbWFnZSIgc3JjPSJyZXNvdXJjZXMvY2FrZS5wbmciIC8+Cis8aW1nIGlkPSJpbWFn
ZSIgc3JjPSJyZXNvdXJjZXMvY2FrZS5wbmciIGFsdD0iVGVzdCI+CiA8aDE+Zmlyc3QgaGVhZGlu
ZyBsZXZlbCAxPC9oMT4KIDxoMT5zZWNvbmQgaGVhZGluZyBsZXZlbCAxPC9oMT4KIDxoMj5oZWFk
aW5nIGxldmVsIDI8L2gyPgpAQCAtNTIsMTQgKzUyLDEzIEBACiAgICAgICAgIHZhciBzdGFydEVs
ZW1lbnQ7CiAgICAgICAgIHZhciBpc0RpcmVjdGlvbk5leHQ7CiAgICAgICAgIHZhciBzZWFyY2hL
ZXk7Ci0gICAgICAgIHZhciBzZWFyY2hUZXh0OworICAgICAgICB2YXIgc2VhcmNoVGV4dCA9ICIi
OwogICAgICAgICB2YXIgcmVzdWx0RWxlbWVudDsKICAgICAgICAgCiAgICAgICAgIC8vIEFueSBl
bGVtZW50LgogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9
IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEFueVR5cGVTZWFyY2hLZXkiOwotICAgICAg
ICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVs
ZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rp
b25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0
RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKICAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGJsb2NrcXVv
dGUgbGV2ZWwgMSciKTsKQEAgLTY4LDcgKzY3LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwog
ICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhC
bG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7
CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNl
YXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBz
ZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhS
b2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0
SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBibG9ja3F1b3RlIGxldmVs
IDEnIik7CkBAIC03Nyw3ICs3NSw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAg
aXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYQmxvY2txdW90
ZVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRF
bGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3Rh
cnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIiwgIidBWFZhbHVlOiBzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpAQCAtODYsNyAr
ODMsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9
IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEJvbGRGb250U2VhcmNoS2V5IjsKLSAgICAg
ICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJF
bGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0
aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgi
cmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNh
bnMtc2VyaWYgYmxhY2sgYm9sZCB0ZXh0IHdpdGggdW5kZXJsaW5lJyIpOwpAQCAtOTUsNyArOTEs
NiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRy
dWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEJ1dHRvblNlYXJjaEtleSI7Ci0gICAgICAgIHNl
YXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVu
dC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5l
eHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVt
ZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhCdXR0b24nIik7CiAgICAgICAgIApAQCAtMTAzLDcgKzk4
LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0
cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhDaGVja0JveFNlYXJjaEtleSI7Ci0gICAgICAg
IHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxl
bWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlv
bk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhDaGVja0JveCciKTsKICAgICAgICAgCkBAIC0xMTEs
NyArMTA1LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5l
eHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhDaGVja0JveFNlYXJjaEtleSI7Ci0g
ICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFp
bmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0Rp
cmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhDaGVja0JveCciKTsKICAgICAgICAgCkBA
IC0xMTksNyArMTEyLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVj
dGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhEaWZmZXJlbnRUeXBlU2Vh
cmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1l
bnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVs
ZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAg
c2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7
CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVl
OiBmaXJzdCBibG9ja3F1b3RlIGxldmVsIDEnIik7CkBAIC0xMjgsNyArMTIwLDYgQEAKICAgICAg
ICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDIpOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAg
ICBzZWFyY2hLZXkgPSAiQVhGb250Q2hhbmdlU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4
dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxl
bWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2Vh
cmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9s
ZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVu
dC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRh
bGljIHRleHQnIik7CkBAIC0xMzcsNyArMTI4LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDIpOwog
ICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhG
b250Q29sb3JDaGFuZ2VTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAg
ICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNo
UHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJj
aFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6
IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2VyaWYgYmx1ZSBpdGFsaWMgdGV4dCciKTsK
QEAgLTE0OSw3ICsxMzksNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGly
ZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEdyYXBoaWNTZWFyY2hL
ZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9
IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVu
dCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSW1hZ2UnIik7CiAgICAgICAg
IApAQCAtMTU3LDcgKzE0Niw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNE
aXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGluZ0xldmVs
MVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRF
bGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3Rh
cnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIp
OwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5n
VmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGhlYWRpbmcgbGV2ZWwgMSciKTsKQEAgLTE2Niw3ICsx
NTQsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9
IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDJTZWFyY2hLZXkiOwot
ICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRh
aW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNE
aXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgi
cmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBoZWFkaW5nIGxldmVsIDInIik7CkBAIC0xNzUsNyArMTYyLDYgQEAKICAgICAgICAgc3Rh
cnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFy
Y2hLZXkgPSAiQVhIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9
IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNo
S2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIs
ICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50
LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBsZXZlbCAz
JyIpOwpAQCAtMTg0LDcgKzE3MCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAg
aXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGluZ0xl
dmVsNFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1
bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUo
c3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5n
JyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3Ry
aW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgNCciKTsKQEAgLTE5Myw3ICsxNzgs
NiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRy
dWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDVTZWFyY2hLZXkiOwotICAg
ICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5l
ckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJl
Y3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVz
dWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVl
OiBoZWFkaW5nIGxldmVsIDUnIik7CkBAIC0yMDIsNyArMTg2LDYgQEAKICAgICAgICAgc3RhcnRF
bGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hL
ZXkgPSAiQVhIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51
bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZv
clNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5
LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICIn
QVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNo
aWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBsZXZlbCA2JyIp
OwpAQCAtMjExLDcgKzE5NCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCg2KTsKICAgICAgICAgaXNE
aXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGluZ1NhbWVM
ZXZlbFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1
bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUo
c3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5n
JyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3Ry
aW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBoZWFkaW5nIGxldmVsIDEnIik7CkBAIC0yMjAs
NyArMjAyLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5l
eHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nU2VhcmNoS2V5IjsKLSAg
ICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWlu
ZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGly
ZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJl
c3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1
ZTogZmlyc3QgaGVhZGluZyBsZXZlbCAxJyIpOwpAQCAtMjI5LDcgKzIxMCw2IEBACiAgICAgICAg
IHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNo
aWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAg
c2VhcmNoS2V5ID0gIkFYSXRhbGljRm9udFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQg
PSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJj
aEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUi
LCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzZXJpZiBibHVlIGl0YWxp
YyB0ZXh0JyIpOwpAQCAtMjM4LDcgKzIxOCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAg
ICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYTGFu
ZG1hcmtTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVz
dWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRl
KHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwog
ICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAn
Iik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN1YnJvbGUiLCAiJ0FYU3Vicm9s
ZTogQVhMYW5kbWFya0Jhbm5lciciKTsKQEAgLTI0Nyw3ICsyMjYsNiBAQAogICAgICAgICBzdGFy
dEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0
SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJj
aEtleSA9ICJBWExpbmtTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAg
ICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNo
UHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJj
aFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6
IEFYTGluayciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBsaW5rJyIpOwpAQCAtMjU2LDcgKzIzNCw2IEBA
CiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsK
ICAgICAgICAgc2VhcmNoS2V5ID0gIkFYTGlzdFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRl
eHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVs
ZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNl
YXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJv
bGUiLCAiJ0FYUm9sZTogQVhMaXN0JyIpOwogICAgICAgICAKQEAgLTI2NCw3ICsyNDEsNiBAQAog
ICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAg
ICAgICAgIHNlYXJjaEtleSA9ICJBWExpdmVSZWdpb25TZWFyY2hLZXkiOwotICAgICAgICBzZWFy
Y2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQu
dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0
LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVu
dC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEFSSUFMaXZlJykiLCAiJ3BvbGl0ZSciKTsK
QEAgLTI3Niw3ICsyNTIsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGly
ZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFBsYWluVGV4dFNlYXJj
aEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50
ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVt
ZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNo
b3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOwog
ICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTog
Zmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpAQCAtMjg1LDcgKzI2MCw2IEBACiAgICAgICAg
IHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNo
aWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAg
c2VhcmNoS2V5ID0gIkFYUmFkaW9Hcm91cFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQg
PSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJj
aEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUi
LCAiJ0FYUm9sZTogQVhSYWRpb0dyb3VwJyIpOwogICAgICAgICAKQEAgLTI5Myw3ICsyNjcsNiBA
QAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7
CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFNhbWVUeXBlU2VhcmNoS2V5IjsKLSAgICAgICAgc2Vh
cmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50
LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4
dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1l
bnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0
RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBi
bG9ja3F1b3RlIGxldmVsIDEnIik7CkBAIC0zMDIsNyArMjc1LDYgQEAKICAgICAgICAgc3RhcnRF
bGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hL
ZXkgPSAiQVhTdGF0aWNUZXh0U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7
CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNl
YXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBz
ZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhS
b2xlOiBBWFN0YXRpY1RleHQnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0
cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCBibG9ja3F1b3RlIGxldmVsIDEnIik7CkBAIC0z
MTEsNyArMjgzLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDIpOwogICAgICAgICBpc0RpcmVjdGlv
bk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhTdHlsZUNoYW5nZVNlYXJjaEtl
eSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0g
Y29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50
LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAgICAg
c2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidB
WFZhbHVlOiBzZXJpZiBibHVlIGl0YWxpYyB0ZXh0JyIpOwpAQCAtMzIwLDcgKzI5MSw2IEBACiAg
ICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50LmNoaWxkQXRJbmRleCgxOCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAg
ICAgICAgIHNlYXJjaEtleSA9ICJBWFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5IjsKLSAgICAgICAg
c2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVt
ZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9u
TmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFRhYmxlJyIpOwogICAgICAgICBzaG91bGRCZSgicmVz
dWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgw
KS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Vjb25kIHRhYmxlIGhlYWRpbmcgbGV2ZWwgMSci
KTsKQEAgLTMyOSw3ICsyOTksNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlz
RGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFRhYmxlU2VhcmNo
S2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQg
PSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1l
bnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFRhYmxlJyIpOwogICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDAp
LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogZmlyc3QgdGFibGUgaGVh
ZGluZyBsZXZlbCAxJyIpOwpAQCAtMzM4LDcgKzMwNyw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0g
IkFYVGV4dEZpZWxkU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAg
ICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFBy
ZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hU
ZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBB
WFRleHRGaWVsZCciKTsKICAgICAgICAgCkBAIC0zNDYsNyArMzE0LDYgQEAKICAgICAgICAgc3Rh
cnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFy
Y2hLZXkgPSAiQVhVbmRlcmxpbmVTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVs
bDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9y
U2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXks
IHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidB
WFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Fucy1zZXJpZiBibGFjayBib2xk
IHRleHQgd2l0aCB1bmRlcmxpbmUnIik7CkBAIC0zNTUsNyArMzIyLDYgQEAKICAgICAgICAgc3Rh
cnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFy
Y2hLZXkgPSAiQVhVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9
IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNo
S2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIs
ICInQVhSb2xlOiBBWExpbmsnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNo
aWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogbGluayciKTsKQEAgLTM2Niw3
ICszMzIsNyBAQAogICAgICAgICAvLyBQcmV2aW91cyB0ZXh0IHNlYXJjaC4KICAgICAgICAgc3Rh
cnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRB
dEluZGV4KDEwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gZmFsc2U7Ci0gICAgICAgIHNl
YXJjaEtleSA9IG51bGw7CisgICAgICAgIHNlYXJjaEtleSA9ICIiOwogICAgICAgICBzZWFyY2hU
ZXh0ID0gInNhbnMtc2VyaWYgYmxhY2sgYm9sZCB0ZXh0IHdpdGggdW5kZXJsaW5lIjsKICAgICAg
ICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRl
eHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFY
U3RhdGljVGV4dCciKTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50cy5odG1sCShy
ZXZpc2lvbiA5ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L2h0bWwtc2VjdGlvbi1lbGVtZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMSArNDYs
OSBAQAogCiAgICAgICAgICAgLy8gV2hlbiBhIGhlYWRlciBhbmQgZm9vdGVyIGFyZSBpbnNpZGUg
YW4gYXJ0aWNsZSwgdGhleSBzaG91bGQgbm90IGJlIGxhbmRtYXJrcy4KICAgICAgICAgICBzaG91
bGRCZSgiYm9keS5jaGlsZEF0SW5kZXgoNikuY2hpbGRBdEluZGV4KDApLnN1YnJvbGUiLCAiJ0FY
U3Vicm9sZTogJyIpOwotICAgICAgICAgIHNob3VsZEJlKCJib2R5LmNoaWxkQXRJbmRleCg2KS5j
aGlsZEF0SW5kZXgoMSkuc3Vicm9sZSIsICInQVhTdWJyb2xlOiAnIik7CiAKICAgICAgICAgICAv
LyBXaGVuIGEgaGVhZGVyIGFuZCBmb290ZXIgYXJlIGluc2lkZSBhIHNlY3Rpb24sIHRoZXkgc2hv
dWxkIG5vdCBiZSBsYW5kbWFya3MuCiAgICAgICAgICAgc2hvdWxkQmUoImJvZHkuY2hpbGRBdElu
ZGV4KDcpLmNoaWxkQXRJbmRleCgwKS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6ICciKTsKLSAgICAg
ICAgICBzaG91bGRCZSgiYm9keS5jaGlsZEF0SW5kZXgoNykuY2hpbGRBdEluZGV4KDEpLnN1YnJv
bGUiLCAiJ0FYU3Vicm9sZTogJyIpOwogICAgIH0KIAogICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4td2syL1NraXBwZWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLXdrMi9Ta2lwcGVkCShyZXZpc2lvbiA5
ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi13azIvU2tpcHBlZAkod29ya2luZyBj
b3B5KQpAQCAtMjYsMTAgKzI2LDkgQEAKICMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICMKIAotIyBXZWJLaXQyIG5lZWRz
IHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eQotIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQyMTMwPgotIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQg
YWNjZXNzaWJpbGl0eS1yZWxhdGVkIERSVCBBUElzCi0jIDxodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDIxMzE+CisjIFdpbmRvd3MgZG9lcyBub3Qgc3VwcG9ydCBXZWJL
aXQyIGFjY2Vzc2liaWxpdHkuCisjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzEyOTY+CithY2Nlc3NpYmlsaXR5CiBwbGF0Zm9ybS93aW4vYWNjZXNzaWJpbGl0eQog
CiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgYW4gaW1wbGVtZW50YXRpb24gb2YgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEljb25DaGFuZ2VzCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBl
ZAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDExIEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMgU1RBUlQgT0YgKDEpIENsYXNzaWZpZWQgZmFpbHVyZXMg
d2l0aCBidWcgcmVwb3J0cwogCi0jIFdlYktpdDIgbmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmls
aXR5Ci0jIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxMzA+Ci0j
IFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5LXJlbGF0ZWQg
RFJUIEFQSXMKLSMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjEz
MT4KLWFjY2Vzc2liaWxpdHkKLXBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5CisjIEFYIHRlc3Rz
IHRoYXQgcmVxdWlyZSBoaXQgdGVzdGluZyBkbyBub3Qgd29yayBpbiBXSzIuCisjIDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEyOTg+CitwbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9odG1sLXNsaWRlci1pbmRpY2F0b3IuaHRtbAorcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvbGlzdGJveC1oaXQtdGVzdC5odG1sCitwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9pZnJhbWUtd2l0aC10aXRsZS1jb3JyZWN0LWhpZXJhcmNoeS5odG1sCiAKICMgU29tZSBjb21w
b3NpdGluZyB0ZXN0cyBmbGFrZXkKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODM1ND4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJl
bGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Fy
aWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC01LDcgKzUsNyBAQAogCiAKIFBBU1MgdGV4dC5kZXNjcmlwdGlvbiBpcyAnQVhEZXNjcmlw
dGlvbjogU2h1dCBkb3duIGNvbXB1dGVyIGFmdGVyIDEwIG1pbnV0ZXMnCi1QQVNTIHRleHQudGl0
bGVVSUVsZW1lbnQoKS5pc1ZhbGlkIGlzIGZhbHNlCitQQVNTIHRleHQudGl0bGVVSUVsZW1lbnQo
KSAhPSBudWxsICYmIHRleHQudGl0bGVVSUVsZW1lbnQoKS5pc1ZhbGlkIGlzIGZhbHNlCiBQQVNT
IGxhYmVsRWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9h
cmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLmh0bWwJ
KHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVs
bGVkYnktb3ZlcnJpZGVzLWxhYmVsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcg
QEAKICAgICAgICAgICBzaG91bGRCZSgidGV4dC5kZXNjcmlwdGlvbiIsICInQVhEZXNjcmlwdGlv
bjogU2h1dCBkb3duIGNvbXB1dGVyIGFmdGVyIDEwIG1pbnV0ZXMnIik7CiAKICAgICAgICAgICAv
LyBUaGVyZSBzaG91bGQgYmUgbm8gdGl0bGUgVUkgZWxlbWVudC4KLSAgICAgICAgICBzaG91bGRC
ZSgidGV4dC50aXRsZVVJRWxlbWVudCgpLmlzVmFsaWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICBz
aG91bGRCZSgidGV4dC50aXRsZVVJRWxlbWVudCgpICE9IG51bGwgJiYgdGV4dC50aXRsZVVJRWxl
bWVudCgpLmlzVmFsaWQiLCAiZmFsc2UiKTsKICAgICAgICAgICAKICAgICAgICAgICAvLyBUaGUg
bGFiZWwgZWxlbWVudCBpcyBpbiBhIGdyb3VwLCBpbiBhIGdyb3VwLCBpbiB0aGUgd2ViIGFyZWEu
CiAgICAgICAgICAgdmFyIGxhYmVsRWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnJv
b3RFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDAp
LmNoaWxkQXRJbmRleCgwKTsKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGgtYXMt
dGl0bGUtdWkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Ro
LWFzLXRpdGxlLXVpLmh0bWwJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS90aC1hcy10aXRsZS11aS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw3
IEBACiAgICAgICAgICAgICBib2R5LmZvY3VzKCk7CiAgICAgICAgICAgICB2YXIgZ3JvdXAgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMSk7CiAg
ICAgICAgICAgICB2YXIgZ3JvdXAyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDMpOwotCi0gICAgICAgICAgICBpZiAoZ3JvdXAudGl0bGVVSUVs
ZW1lbnQoKS5hbGxBdHRyaWJ1dGVzKCkgIT0gIiIgJiYgZ3JvdXAyLnRpdGxlVUlFbGVtZW50KCku
YWxsQXR0cmlidXRlcygpID09ICIiKQorICAgICAgICAgICAgaWYgKGdyb3VwLnRpdGxlVUlFbGVt
ZW50KCkuYWxsQXR0cmlidXRlcygpICE9ICIiICYmIChncm91cDIudGl0bGVVSUVsZW1lbnQoKSA9
PSBudWxsIHx8IGdyb3VwMi50aXRsZVVJRWxlbWVudCgpLmFsbEF0dHJpYnV0ZXMoKSA9PSAiIikp
IAogICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlBhc3MiOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIkZhaWwiOwpJbmRl
eDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub24tZGF0YS10YWJsZS1jZWxsLXRpdGxlLXVp
LWVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25v
bi1kYXRhLXRhYmxlLWNlbGwtdGl0bGUtdWktZWxlbWVudC5odG1sCShyZXZpc2lvbiA5ODk3NykK
KysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbm9uLWRhdGEtdGFibGUtY2VsbC10aXRsZS11
aS1lbGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDkgQEAKICAgICAgICAg
ICAgIC8vIGdldCB0aGUgPHRoPnNraXA8L3RoPiBlbGVtZW50CiAgICAgICAgICAgICB2YXIgZ3Jv
dXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgo
NSk7CiAgICAgICAgICAgICB2YXIgdGl0bGVVSSA9IGdyb3VwLnRpdGxlVUlFbGVtZW50KCk7Ci0g
ICAgICAgICAgICB2YXIgYWxsQXR0cmlidXRlcyA9IHRpdGxlVUkuYWxsQXR0cmlidXRlcygpOwor
ICAgICAgICAgICAgdmFyIGFsbEF0dHJpYnV0ZXMgPSAiIjsKKyAgICAgICAgICAgIGlmICh0aXRs
ZVVJKQorICAgICAgICAgICAgICAgIGFsbEF0dHJpYnV0ZXMgPSB0aXRsZVVJLmFsbEF0dHJpYnV0
ZXMoKTsKIAogICAgICAgICAgICAgLy8gdmVyaWZ5IGl0IGhhcyBubyB0aXRsZSB1aSBlbGVtZW50
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghYWxsQXR0cmlidXRlcykgewpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gOTkwODcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzNSBAQAorMjAxMS0xMS0wMiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hA
YXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBh
Y2Nlc3NpYmlsaXR5LXJlbGF0ZWQgRFJUIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMxCisKKyAgICAgICAgQ2xlYW51cCB0ZXN0cyBhbmQg
c2tpcCBsaXN0cyBzbyB0aGF0IGFjY2Vzc2liaWxpdHkgdGVzdHMgY2FuIHJ1bgorICAgICAgICBp
biBXSzIuIFRoaXMgbW9zdGx5IGludm9sdmVkIGhhbmRsaW5nIHJldHVybmVkIGVsZW1lbnRzIHRo
YXQgbWlnaHQgYmUgbmlsLAorICAgICAgICBzb21ldGhpbmcgdGhhdCBkaWQgbm90IGhhcHBlbiBp
biBEUlQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1s
YWJlbC5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbm9uLWRhdGEtdGFibGUtY2VsbC10
aXRsZS11aS1lbGVtZW50Lmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS90aC1hcy10aXRs
ZS11aS5odG1sOgorICAgICAgICAgICAgIE1ha2Ugc3VyZSBhIG5pbCB0aXRsZVVJRWxlbWVudCBp
cyBhY2NvdW50ZWQgZm9yIGluIHRoZXNlIHRlc3RzLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay13
azIvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNl
Y3Rpb24tZWxlbWVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50cy5odG1sOgorICAgICAgICAgICAgIFJlbW92
ZSBuaWwgZWxlbWVudCBhY2Nlc3MgdGhhdCBpcyB1bm5lY2Vzc2FyeS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGljYXRlLmh0bWw6CisgICAgICAgICAg
ICAgQWRkIGFuIGFsdCB0YWcgdG8gPGltZz4gc28gdGhhdCBpdCBhbHdheXMgc2hvd3MgdXAgaW4g
dGhlIEFYIHRyZWUuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dGJv
eC1yb2xlLXJlcG9ydHMtbm90aWZpY2F0aW9ucy5odG1sOgorICAgICAgICAgICAgIFJlbW92ZSB0
aGUgbm90aWZpY2F0aW9uIGxpc3RlbmVyIHByb3Blcmx5ICh3YXMgY2F1c2luZyBmbGFraW5lc3Mp
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1jaGlsZHJlbi13
aGVuLWFyaWEtcm9sZS1jaGFuZ2VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy5o
dG1sOgorICAgICAgICAgICAgIEFjY291bnQgZm9yIHdoZW4gZWxlbWVudCdzIHJldHVybmVkIGFy
ZSBuaWwuCisgICAgICAgICogcGxhdGZvcm0vd2luLXdrMi9Ta2lwcGVkOgorICAgICAgICAgICAg
IFNraXAgYWxsIGFjY2Vzc2liaWxpdHkgdGVzdHMgb24gd2luLgorICAgICAgICAqIHBsYXRmb3Jt
L3drMi9Ta2lwcGVkOgorICAgICAgICAgICAgIFNraXAgYWxsIGFjY2Vzc2liaWxpdHkgdGVzdHMg
b24gZ3RrLgorCiAyMDExLTExLTAyICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgTWF0Y2ggYWxsb3dlZCBDU1Mgc3RyaW5nIGNoYXJhY3RlcnMgdG8gRmly
ZWZveCBhbmQgT3BlcmEgYnJvd3NlcnMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113414</attachid>
            <date>2011-11-02 18:34:10 -0700</date>
            <delta_ts>2011-11-03 08:40:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>180895</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA5OTEyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDcgQEAKIF9f
Wk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTEwcm9vdE9iamVjdEV2CiBfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUxOHJvb3RPYmplY3RGb3JGcmFtZUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3Jl
MTNBWE9iamVjdENhY2hlMjFnQWNjZXNzaWJpbGl0eUVuYWJsZWRFCitfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUyM2ZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlRVBLTlNfNFBhZ2VFCiBfX1pON1dl
YkNvcmUxM0FYT2JqZWN0Q2FjaGU0MmdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNl
RW5hYmxlZEUKIF9fWk43V2ViQ29yZTEzSFRUUEhlYWRlck1hcEMxRXYKIF9fWk43V2ViQ29yZTEz
SFRUUEhlYWRlck1hcEQxRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MTI4KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTEtMTEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1yZWxhdGVk
IERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MjEzMQorCisgICAgICAgIE1pbm9yIGNoYW5nZXMgbmVlZGVkIHRvIHN1cHBvcnQgQVggdGVz
dGluZyBpbiBXS1Rlc3RSdW5uZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgICAgICBFeHBvc2UgZm9j
dXNlZFVJRWxlbWVudEZvclBhZ2Ugc28gdGhhdCB0aGUgV0syIGluamVjdGVkIGJ1bmRsZSBjYW4g
cmV0cmlldmUgaXQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKToKKyAgICAgICAgICAgIFJlbW92ZSBhbiB1bm5jZXNzYXJ5IGFzc2VydCB0aGF0IHdhcyBj
YXVzaW5nIGlzc3VlcyB3aXRoIHRoZSBXSzIgdGVzdCBydW4uCisKIDIwMTEtMTEtMDIgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSB1c2FnZSBvZiBT
dHJpbmdJbXBsIHdpdGggU3RyaW5nIHdoZXJlIHBvc3NpYmxlIGluIENoYXJhY3RlckRhdGEgYW5k
IFRleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lvbiA5
OTEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OTUsNyArNDk1LDggQEAKIAog
c3RhdGljIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgp
KTsKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQW55VHlwZVNlYXJj
aEtleTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCog
c2VhcmNoS2V5TWFwID0gY3JlYXRlQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCgpOwogICAgIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgJKHJldmlzaW9uIDk5
MTI4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDkgQEAKIFdL
X0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNvbmZpcm1Db21wb3NpdGlvbihXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VDb25maXJtQ29tcG9zaXRpb25X
aXRoVGV4dChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGV4dCk7CiAKK1dLX0VY
UE9SVCB2b2lkKiBXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KFdLQnVuZGxlUGFnZVJlZik7CitX
S19FWFBPUlQgdm9pZCogV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdChXS0J1bmRsZVBhZ2VS
ZWYpOyAgICAKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDk5MTI4KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNywxMSBAQAogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUg
IldlYlVSTFJlcXVlc3QuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvQWNjZXNzaWJpbGl0eU9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMTI2LDYgKzEzMCw0NiBA
QAogICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPm1haW5XZWJGcmFtZSgpKTsKIH0K
IAordm9pZCogV0tBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZikKK3sKKyAgICBpZiAoIXBhZ2VSZWYpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFdl
YkNvcmU6OlBhZ2UqIHBhZ2UgPSB0b0ltcGwocGFnZVJlZiktPmNvcmVQYWdlKCk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBXZWJDb3JlOjpGcmFtZSogY29y
ZSA9IHBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghY29yZSB8fCAhY29yZS0+ZG9jdW1lbnQo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOworCisgICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dCogcm9vdCA9IGNvcmUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgp
OworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIHJv
b3QtPndyYXBwZXIoKTsKK30KKwordm9pZCogV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICBpZiAoIXBhZ2VSZWYpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSB0b0ltcGwocGFnZVJlZikt
PmNvcmVQYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKKworICAgIFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKKyAgICBpZiAoIWZvY3VzZWRP
YmplY3QpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBmb2N1c2VkT2JqZWN0
LT53cmFwcGVyKCk7Cit9CisKIHZvaWQgV0tCdW5kbGVQYWdlU3RvcExvYWRpbmcoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zdG9wTG9hZGluZygpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gOTkxMjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMS0wMiAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIg
bmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgRFJUIEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMxCisKKyAgICAgICAg
QWxsb3cgdGhlIGluamVjdGVkIGJ1bmRsZSB0byByZXRyaWV2ZSB0aGUgZm9jdXNlZCBhbmQgcm9v
dCBhY2Nlc3NpYmlsaXR5CisgICAgICAgIG9iamVjdHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0
KToKKyAgICAgICAgKFdLQWNjZXNzaWJpbGl0eUZvY3VzZWRPYmplY3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oOgorCiAy
MDExLTExLTAyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgRGUtdmlydHVhbGl6ZSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcwpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
OTkxMjgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMzEg
QEAKKzIwMTEtMTEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1y
ZWxhdGVkIERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjEzMQorCisgICAgICAgIFBvcnQgdGhlIEFYIGNvZGUgaW4gRFJUIHRvIFdLVGVz
dFJ1bm5lciBieSB1c2luZyBJREwuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0Rlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6fkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
Om1ha2VXaW5kb3dPYmplY3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6d3JhcHBlckNsYXNzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OnJvb3RFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZv
Y3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmVs
ZW1lbnRBdFBvaW50KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6bG9nRm9jdXNFdmVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6bG9nVmFsdWVDaGFuZ2VFdmVudHMpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cyk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25M
aXN0ZW5lcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpub3RpZmlj
YXRpb25SZWNlaXZlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpy
ZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcDogQWRkZWQuCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6fkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OndyYXBwZXJDbGFzcyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlci5oOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OnBsYXRmb3JtVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OndyYXBwZXJDbGFzcyk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
Lmg6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpw
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmlzRXF1
YWwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3
cmFwcGVyQ2xhc3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Zh
bGlkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWspOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5k
ZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Ny
b2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxT
Y3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFs
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdl
Rm9yRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRN
YXJrZXJSYW5nZUxlbmd0aCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlckZvclBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGxhdGZvcm1VSUVsZW1lbnQp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbDog
QWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmlkbDogQWRkZWQuCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmlkbDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGU6OmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2xlYXJXaW5kb3dGb3JGcmFtZSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW06IEFkZGVkLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbCk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1h
Yy5tbTogQWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6
OmlzRXF1YWwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06IEFkZGVkLgorICAgICAgICAoK1tOU1N0cmlu
ZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAgICgtW05TU3RyaW5nIGNyZWF0ZUpT
U3RyaW5nUmVmXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
IGluaXRXaXRoUGxhdGZvcm1FbGVtZW50Ol0pOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyIF9ub3RpZmljYXRpb25SZWNlaXZlZDpdKToKKyAgICAgICAgKC1bQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgc2V0Q2FsbGJhY2s6XSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCk6CisgICAgICAgIChXVFI6OmRlc2NyaXB0aW9uT2ZWYWx1ZSk6CisgICAgICAgIChXVFI6OmF0
dHJpYnV0ZXNPZkVsZW1lbnQpOgorICAgICAgICAoV1RSOjpjb25jYXRlbmF0ZUF0dHJpYnV0ZUFu
ZFZhbHVlKToKKyAgICAgICAgKFdUUjo6Y29udmVydE5TQXJyYXlUb1ZlY3Rvcik6CisgICAgICAg
IChXVFI6OmRlc2NyaXB0aW9uT2ZFbGVtZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtzKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJl
bkNvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRS
b3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVV
SUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRF
bGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2Vk
QnlSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZMaW5rZWRVSUVsZW1lbnRzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNldHRhYmxlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmli
dXRlTmFtZXMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbik6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGFuZ3VhZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpoZWxwVGV4dCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoZWlnaHQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjbGlja1BvaW50WCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNsaWNrUG9pbnRZKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50
VmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbik6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3VwcG9y
dGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFibGVkKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzcGVhayk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFJc0dyYWJiZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhRHJvcEVmZmVjdHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpsaW5lRm9ySW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
YW5nZUZvckxpbmUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3Vu
ZHNGb3JSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmlu
Z0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmli
dXRlZFN0cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVy
cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJv
d0hlYWRlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZDb2x1bW5zKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mUm93cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZlZpc2libGVDZWxscyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJvd0NvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y29sdW1uQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
bmRleEluVGFibGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJ
bmRleFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1u
SW5kZXhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxG
b3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
b3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aW5jcmVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZGVjcmVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2hvd01lbnUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcyk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFs
dWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29k
aW5nKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxp
c3RlbmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2Fi
bGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJs
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT2ZmU2NyZWVuKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1cCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphZGRTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpyZW1vdmVTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludCk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcik6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybU5hbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybU5hbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdU
Ujo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vSW5qZWN0ZWRCdW5kbGUudmNwcm9qOgorCiAy
MDExLTExLTAyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjk4NzU5LXI5ODc3Myk6IHBsYXRmb3JtL21hYy9mb250cy9jb2xvci1iaXRtYXAu
aHRtbCBmYWlsaW5nIG9uIExpb24gSW50ZWwgRGVidWcgKFRlc3RzKQpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaCIKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV1RSIHsKKyAgICAKK1Bhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVh
dGUoUGxhdGZvcm1UZXh0TWFya2VyIG1hcmtlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG1hcmtlcikpOworfQorCitQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKGNvbnN0
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihtYXJrZXIpKTsKK30KKworQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlciBt
YXJrZXIpCisgICAgOiBtX3RleHRNYXJrZXIobWFya2VyKQoreworfQorCitBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoY29uc3QgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXImIG1hcmtlcikKKyAgICA6IG1fdGV4dE1hcmtlcihtYXJrZXIucGxhdGZvcm1UZXh0
TWFya2VyKCkpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIoKQoreworfQorCitQbGF0Zm9ybVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6OnBsYXRmb3JtVGV4dE1hcmtlcigpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIHJldHVybiBtX3RleHRNYXJrZXIuZ2V0KCk7CisjZWxpZgorICAgIHJldHVybiBtX3Rl
eHRNYXJrZXI7CisjZW5kaWYKK30KKyAgICAKK0pTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OndyYXBwZXJDbGFzcygpCit7CisgICAgcmV0dXJuIEpTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OmFjY2Vzc2liaWxpdHlUZXh0TWFya2VyQ2xhc3MoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RSCisKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkpTQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRy
Lmg+CisKK25hbWVzcGFjZSBXVFIgeworCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShQbGF0Zm9ybVVJRWxlbWVudCB1aUVs
ZW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KHVpRWxlbWVudCkpOworfQorICAgIAorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCYgdWlFbGVtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCh1aUVsZW1lbnQpKTsKK30KKworSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp3cmFwcGVyQ2xhc3MoKQoreworICAgIHJldHVybiBKU0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFjY2Vzc2liaWxpdHlVSUVsZW1lbnRDbGFzcygpOworfQorICAgIAorLy8gSW1wbGVt
ZW50YXRpb24KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1ZhbGlkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9lbGVtZW50OyAgICAgICAgICAgIAorfQorICAgIAorLy8gVW5zdXBw
b3J0ZWQgbWV0aG9kcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4KKyNpZiAhUExBVEZPUk0oTUFDKQor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrKCkg
eyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnJhbmdlRm9yTGluZShpbnQgbGluZSkgeyByZXR1cm4gMDsgfQordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQq
KSBjb25zdCB7IH0KK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hp
bGRyZW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgo
dW5zaWduZWQpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9sbGJhcigpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiAw
OyB9CisKKy8vIFRleHQgbWFya2VyIHN1cHBvcnQgKG9ubHkgc3VwcG9ydGVkIG9uIHRoZSBNYWMg
cmlnaHQgbm93KQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQqKSB7IHJldHVybiAwOyB9CitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJl
dHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIDA7IH0KK1Bh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKikgeyByZXR1cm4gMDsgfQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4gMDsgfQorUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJl
dHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGludCB5KSB7IHJldHVybiAw
OyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJl
dHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsg
cmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSopIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKFdJTikKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBvdGhl
ckVsZW1lbnQpCit7CisgICAgcmV0dXJuIHBsYXRmb3JtVUlFbGVtZW50KCkgPT0gb3RoZXJFbGVt
ZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdU
UgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCShyZXZpc2lvbiAwKQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdUUiB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciA6IHB1Ymxp
YyBKU1dyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI+IGNyZWF0ZSgpOworICAgIH5BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigp
OworCisgICAgdm9pZCBtYWtlV2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYg
d2luZG93T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOworICAgIHZpcnR1YWwgSlNDbGFz
c1JlZiB3cmFwcGVyQ2xhc3MoKTsKKyAgICAKKyAgICAvLyBDb250cm9sbGVyIE1ldGhvZHMgLSBw
bGF0Zm9ybS1pbmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMKKyAgICBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IHJvb3RFbGVtZW50KCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBmb2N1c2VkRWxlbWVudCgpOworICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KTsKKworICAgIC8v
IEhlcmUgZm9yIGNvbnNpc3RlbmN5IHdpdGggRFJULiBOb3QgaW1wbGVtZW50ZWQgYmVjYXVzZSB0
aGV5IGRvbid0IGRvIGFueXRoaW5nIG9uIHRoZSBNYWMuCisgICAgdm9pZCBsb2dGb2N1c0V2ZW50
cygpIHsgfQorICAgIHZvaWQgbG9nVmFsdWVDaGFuZ2VFdmVudHMoKSB7IH0KKyAgICB2b2lkIGxv
Z1Njcm9sbGluZ1N0YXJ0RXZlbnRzKCkgeyB9CisgICAgdm9pZCBsb2dBY2Nlc3NpYmlsaXR5RXZl
bnRzKCkgeyB9CisgICAgdm9pZCBhZGROb3RpZmljYXRpb25MaXN0ZW5lcihBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KiwgSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKSB7IH0KKyAgICB2b2lkIG5v
dGlmaWNhdGlvblJlY2VpdmVkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBKU1N0cmluZ1JlZiBl
dmVudE5hbWUpIHsgfQorICAgIAorICAgIHZvaWQgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpIHsg
fQorCitwcml2YXRlOgorICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVFIKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyX2gKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcl9oCisj
ZGVmaW5lIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyX2gKKworI2luY2x1ZGUgIkpTV3JhcHBhYmxl
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgQ0ZUeXBlUmVmIFBs
YXRmb3JtVGV4dE1hcmtlcjsKKyNlbHNlCit0eXBlZGVmIHZvaWQqIFBsYXRmb3JtVGV4dE1hcmtl
cjsKKyNlbmRpZgorCituYW1lc3BhY2UgV1RSIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgOiBwdWJsaWMgSlNXcmFwcGFi
bGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2VyKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyJik7CisKKyAgICB+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKTsKKyAgICAKKyAgICBQbGF0
Zm9ybVRleHRNYXJrZXIgcGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3Q7CisgICAgdmlydHVhbCBK
U0NsYXNzUmVmIHdyYXBwZXJDbGFzcygpOworCisgICAgc3RhdGljIEpTT2JqZWN0UmVmIG1ha2VK
U0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyKEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXImKTsKKyAgICBib29sIGlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoUGxhdGZvcm1U
ZXh0TWFya2VyKTsKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihjb25zdCBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciYpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxQbGF0
Zm9ybVRleHRNYXJrZXI+IG1fdGV4dE1hcmtlcjsKKyNlbHNlCisgICAgUGxhdGZvcm1UZXh0TWFy
a2VyIG1fdGV4dE1hcmtlcjsKKyNlbmRpZgorfTsKKworI2lmICFQTEFURk9STShNQUMpCitpbmxp
bmUgYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciopIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RS
CisgICAgCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJfaApJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDEyIEBACiAgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0NoYXIqPihw
YXRoLmNvbnN0RGF0YSgpKSwgcGF0aC5sZW5ndGgoKSk7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygicXQiKSk7CisgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV1RSCiAKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlclF0Lm1vYyIK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAwKQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudF9oCisj
ZGVmaW5lIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRfaAorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgi
CisjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
T2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBQ
TEFURk9STShNQUMpCisjaWZkZWYgX19PQkpDX18KK3R5cGVkZWYgaWQgUGxhdGZvcm1VSUVsZW1l
bnQ7CisjZWxzZQordHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QqIFBsYXRmb3JtVUlFbGVtZW50
OworI2VuZGlmCisjZWxpZiBQTEFURk9STShXSU4pCisjdW5kZWYgX1dJTlNPQ0tBUElfCisjZGVm
aW5lIF9XSU5TT0NLQVBJXyAvLyBQcmV2ZW50IGluY2x1c2lvbiBvZiB3aW5zb2NrLmggaW4gd2lu
ZG93cy5oCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgorI2luY2x1ZGUgPG9sZWFjYy5o
PgorCit0eXBlZGVmIENPTVB0cjxJQWNjZXNzaWJsZT4gUGxhdGZvcm1VSUVsZW1lbnQ7CisjZWxp
ZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8YXRrL2F0ay5oPgordHlwZWRlZiBBdGtPYmplY3Qq
IFBsYXRmb3JtVUlFbGVtZW50OworI2Vsc2UKK3R5cGVkZWYgdm9pZCogUGxhdGZvcm1VSUVsZW1l
bnQ7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpZmRlZiBfX09CSkNfXwordHlwZWRl
ZiBpZCBOb3RpZmljYXRpb25IYW5kbGVyOworI2Vsc2UKK3R5cGVkZWYgc3RydWN0IG9iamNfb2Jq
ZWN0KiBOb3RpZmljYXRpb25IYW5kbGVyOworI2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIFdU
UiB7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgOiBwdWJsaWMgSlNXcmFwcGFibGUg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IGNyZWF0ZShQbGF0Zm9ybVVJRWxlbWVudCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsK
KworICAgIH5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCk7CisKKyAgICBQbGF0Zm9ybVVJRWxlbWVu
dCBwbGF0Zm9ybVVJRWxlbWVudCgpIHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIHZpcnR1YWwg
SlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKTsKKworICAgIHN0YXRpYyBKU09iamVjdFJlZiBtYWtl
SlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCYpOworCisgICAgYm9vbCBpc0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQq
IG90aGVyRWxlbWVudCk7CisgICAgCisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBlbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpOworICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gY2hpbGRBdEluZGV4KHVuc2lnbmVkKTsKKyAgICB1bnNpZ25lZCBp
bmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopOworICAgIGludCBjaGlsZHJlbkNv
dW50KCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB0aXRsZVVJRWxl
bWVudCgpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gcGFyZW50RWxl
bWVudCgpOworCisgICAgdm9pZCB0YWtlRm9jdXMoKTsKKyAgICB2b2lkIHRha2VTZWxlY3Rpb24o
KTsKKyAgICB2b2lkIGFkZFNlbGVjdGlvbigpOworICAgIHZvaWQgcmVtb3ZlU2VsZWN0aW9uKCk7
CisKKyAgICAvLyBNZXRob2RzIC0gcGxhdGZvcm0taW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25z
CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFsbEF0dHJpYnV0ZXMoKTsKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cygpOworICAg
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gbGlua2VkVUlFbGVtZW50QXRJbmRl
eCh1bnNpZ25lZCk7CisgICAgCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0
ZXNPZkRvY3VtZW50TGlua3MoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmli
dXRlc09mQ2hpbGRyZW4oKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGFyYW1ldGVy
aXplZEF0dHJpYnV0ZU5hbWVzKCk7CisgICAgdm9pZCBpbmNyZW1lbnQoKTsKKyAgICB2b2lkIGRl
Y3JlbWVudCgpOworICAgIHZvaWQgc2hvd01lbnUoKTsKKyAgICB2b2lkIHByZXNzKCk7CisKKyAg
ICAvLyBBdHRyaWJ1dGVzIC0gcGxhdGZvcm0taW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCisg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmVmIGF0dHJpYnV0ZSk7CisgICAgZG91YmxlIG51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmVmIGF0dHJpYnV0ZSk7CisgICAgYm9vbCBib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYg
YXR0cmlidXRlKTsKKyAgICBib29sIGlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSk7CisgICAgYm9vbCBpc0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmIGF0dHJp
YnV0ZSk7CisgICAgYm9vbCBpc0FjdGlvblN1cHBvcnRlZChKU1N0cmluZ1JlZiBhY3Rpb24pOwor
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByb2xlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IHN1YnJvbGUoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcm9sZURl
c2NyaXB0aW9uKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRpdGxlKCk7CisgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGRlc2NyaXB0aW9uKCk7CisgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IGxhbmd1YWdlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0
cmluZ1ZhbHVlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFjY2Vzc2liaWxpdHlW
YWx1ZSgpIGNvbnN0OworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBoZWxwVGV4dCgpIGNv
bnN0OworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBvcmllbnRhdGlvbigpIGNvbnN0Owor
ICAgIGRvdWJsZSB4KCk7CisgICAgZG91YmxlIHkoKTsKKyAgICBkb3VibGUgd2lkdGgoKTsKKyAg
ICBkb3VibGUgaGVpZ2h0KCk7CisgICAgZG91YmxlIGludFZhbHVlKCkgY29uc3Q7CisgICAgZG91
YmxlIG1pblZhbHVlKCk7CisgICAgZG91YmxlIG1heFZhbHVlKCk7CisgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IHZhbHVlRGVzY3JpcHRpb24oKTsKKyAgICBpbnQgaW5zZXJ0aW9uUG9pbnRM
aW5lTnVtYmVyKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNlbGVjdGVkVGV4dFJh
bmdlKCk7CisgICAgYm9vbCBpc0VuYWJsZWQoKTsKKyAgICBib29sIGlzUmVxdWlyZWQoKSBjb25z
dDsKKyAgICAKKyAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0OworICAgIGJvb2wgaXNGb2N1c2Fi
bGUoKSBjb25zdDsKKyAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25zdDsKKyAgICBib29sIGlzU2Vs
ZWN0YWJsZSgpIGNvbnN0OworICAgIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFNlbGVjdGVkQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopIGNvbnN0Owor
ICAgIHVuc2lnbmVkIHNlbGVjdGVkQ2hpbGRyZW5Db3VudCgpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gc2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQp
IGNvbnN0OworICAgIAorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworICAgIGJvb2wgaXNFeHBh
bmRlZCgpIGNvbnN0OworICAgIGJvb2wgaXNDaGVja2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc1Zp
c2libGUoKSBjb25zdDsKKyAgICBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Q7CisgICAgYm9vbCBp
c0NvbGxhcHNlZCgpIGNvbnN0OworICAgIGJvb2wgaXNJZ25vcmVkKCkgY29uc3Q7CisgICAgYm9v
bCBoYXNQb3B1cCgpIGNvbnN0OworICAgIGludCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0Owor
ICAgIGRvdWJsZSBjbGlja1BvaW50WCgpOworICAgIGRvdWJsZSBjbGlja1BvaW50WSgpOworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBkb2N1bWVudEVuY29kaW5nKCk7CisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IGRvY3VtZW50VVJJKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHVybCgpOworCisgICAgLy8gQ1NTMy1zcGVlY2ggcHJvcGVydGllcy4KKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gc3BlYWsoKTsKKyAgICAKKyAgICAvLyBUYWJsZS1zcGVjaWZp
YyBhdHRyaWJ1dGVzCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkNv
bHVtbkhlYWRlcnMoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09m
Um93SGVhZGVycygpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZD
b2x1bW5zKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZlJvd3Mo
KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mVmlzaWJsZUNlbGxz
KCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkhlYWRlcigpOwor
ICAgIGludCBpbmRleEluVGFibGUoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcm93
SW5kZXhSYW5nZSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb2x1bW5JbmRleFJh
bmdlKCk7CisgICAgaW50IHJvd0NvdW50KCk7CisgICAgaW50IGNvbHVtbkNvdW50KCk7CisgICAg
CisgICAgLy8gVHJlZS9PdXRsaW5lIHNwZWNpZmljIGF0dHJpYnV0ZXMKKyAgICBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCk7Cisg
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBkaXNjbG9zZWRCeVJvdygpOwor
ICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZGlzY2xvc2VkUm93QXRJbmRl
eCh1bnNpZ25lZCk7CisKKyAgICAvLyBBUklBIHNwZWNpZmljCisgICAgUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkKTsKKyAg
ICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFyaWFGbG93VG9FbGVtZW50QXRJ
bmRleCh1bnNpZ25lZCk7CisKKyAgICAvLyBBUklBIERyYWcgYW5kIERyb3AKKyAgICBib29sIGFy
aWFJc0dyYWJiZWQoKSBjb25zdDsKKyAgICAvLyBBIHNwYWNlIGNvbmNhdGVudGF0ZWQgc3RyaW5n
IG9mIGFsbCB0aGUgZHJvcCBlZmZlY3RzLgorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBh
cmlhRHJvcEVmZmVjdHMoKSBjb25zdDsKKyAgICAKKyAgICAvLyBQYXJhbWV0ZXJpemVkIGF0dHJp
YnV0ZXMKKyAgICBpbnQgbGluZUZvckluZGV4KGludCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHJhbmdlRm9yTGluZShpbnQpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBi
b3VuZHNGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2
b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdGb3JSYW5nZSh1bnNpZ25l
ZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIGJvb2wgYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKHVuc2ln
bmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gdWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpTU3RyaW5nUmVm
IHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCk7CisgICAgCisgICAgLy8gVGFibGUt
c3BlY2lmaWMKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGNlbGxGb3JD
b2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOworCisgICAgLy8gU2Ny
b2xsYXJlYS1zcGVjaWZpYworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
aG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdDsKKworICAgIC8vIFRleHQgbWFy
a2Vycy4KKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRN
YXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopOyAgICAKKyAgICBQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogZW5kTWFya2VyKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyPiBzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSopOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IGVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSopOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHRleHRN
YXJrZXJGb3JQb2ludChpbnQgeCwgaW50IHkpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IHByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciop
OworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IG5leHRUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBhY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKKyAgICBpbnQgdGV4
dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKKyAgICAK
KyAgICAvLyBOb3RpZmljYXRpb25zCisgICAgLy8gRnVuY3Rpb24gY2FsbGJhY2sgc2hvdWxkIHRh
a2Ugb25lIGFyZ3VtZW50LCB0aGUgbmFtZSBvZiB0aGUgbm90aWZpY2F0aW9uLgorICAgIGJvb2wg
YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKKyAg
ICAvLyBNYWtlIHN1cmUgeW91IGNhbGwgcmVtb3ZlLCBiZWNhdXNlIHlvdSBjYW4ndCByZWx5IG9u
IG9iamVjdHMgYmVpbmcgZGVhbGxvY2F0ZWQgaW4gYSB0aW1lbHkgZmFzaGlvbi4KKyAgICBib29s
IHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgCitwcml2YXRlOgorICAgIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOworICAgIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOworCisgICAgdm9pZCBnZXRM
aW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYp
OworICAgIHZvaWQgZ2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+ID4mKTsKKyAgICB2b2lkIGdldENoaWxkcmVuKFZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gPiYpOworICAgIHZvaWQgZ2V0Q2hpbGRyZW5XaXRoUmFuZ2UoVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiwgdW5zaWduZWQgbG9jYXRpb24s
IHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICBQbGF0Zm9ybVVJRWxlbWVudCBtX2VsZW1lbnQ7Cisg
ICAgCisgICAgLy8gQSByZXRhaW5lZCwgcGxhdGZvcm0gc3BlY2lmaWMgb2JqZWN0IHVzZWQgdG8g
aGVscCBtYW5hZ2Ugbm90aWZpY2F0aW9ucyBmb3IgdGhpcyBvYmplY3QuCisjaWYgUExBVEZPUk0o
TUFDKQorICAgIE5vdGlmaWNhdGlvbkhhbmRsZXIgbV9ub3RpZmljYXRpb25IYW5kbGVyOworI2Vu
ZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXVFIKKyAgICAKKyNlbmRpZiAvLyBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50X2gKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAJKHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw0ICs2NSwxMCBAQAogICAgIHJldHVybiB1cmw7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiZ3RrIikpOworICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIuaCIKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbmNsdWRlICJK
U0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXVFIgeworICAgIAorUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjpjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgbWFya2VyUmFuZ2UpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSk7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UmIG1hcmtlclJhbmdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkpOworfQorCitBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKFBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlIG1hcmtlclJhbmdlKQorICAgIDogbV90ZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSYgbWFy
a2VyUmFuZ2UpCisgICAgOiBtX3RleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZS5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpKQoreworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgpCit7Cit9CisKK1BsYXRmb3JtVGV4dE1hcmtl
clJhbmdlIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0dXJuIG1fdGV4dE1hcmtl
clJhbmdlLmdldCgpOworI2VsaWYKKyAgICByZXR1cm4gbV90ZXh0TWFya2VyUmFuZ2U7CisjZW5k
aWYKK30KKyAgICAKK0pTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6d3Jh
cHBlckNsYXNzKCkKK3sKKyAgICByZXR1cm4gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjphY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlQ2xhc3MoKTsKK30KKyAgICAKK30gLy8gbmFt
ZXNwYWNlIFdUUgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNCArNjQsMTAgQEAKICAgICByZXR1cm4gSlNTdHJpbmdSZXRhaW4odXJsKTsgLy8gVE9ETy4K
IH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0
Zm9ybU5hbWUoKQoreworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUo
QWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ3aW4iKSk7CisgICAgcmV0dXJu
IHBsYXRmb3JtTmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbAkocmV2aXNpb24gMCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworbW9kdWxlIFdUUiB7CisKKyAgICBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBy
b290RWxlbWVudDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQgZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxl
bWVudEF0UG9pbnQoaW4gaW50IHgsIGluIGludCB5KTsKKyAgICAgICAgCisgICAgICAgIHZvaWQg
YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50
LCBpbiBvYmplY3QgZnVuY3Rpb25DYWxsYmFjayk7CisgICAgICAgIHZvaWQgbm90aWZpY2F0aW9u
UmVjZWl2ZWQoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50LCBpbiBET01TdHJpbmcg
ZXZlbnROYW1lKTsKKworICAgICAgICB2b2lkIGxvZ0ZvY3VzRXZlbnRzKCk7CisgICAgICAgIHZv
aWQgbG9nVmFsdWVDaGFuZ2VFdmVudHMoKTsKKyAgICAgICAgdm9pZCBsb2dTY3JvbGxpbmdTdGFy
dEV2ZW50cygpOworICAgICAgICB2b2lkIGxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKTsKKyAgICAg
ICAgdm9pZCByZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CisgICAgfTsKKworfQpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRs
CShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmlkbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBXVFIgeworCisgICAgaW50ZXJmYWNl
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgeworICAgICAgICBib29sZWFuIGlzRXF1YWwo
aW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBvdGhlck1hcmtlclJhbmdlKTsKKyAgICB9
OworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5pZGwJKHJldmlzaW9uIDApCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K21vZHVsZSBXVFIgeworCisgICAgaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHsK
KyAgICAgICAgYm9vbGVhbiBpc0VxdWFsKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIG90aGVy
TWFya2VyKTsKKyAgICB9OworCit9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5pZGwJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBXVFIgewor
CisgICAgaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgeworICAgICAgICBib29sZWFu
IGlzRXF1YWwoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBvdGhlckVsZW1lbnQpOworCisgICAg
ICAgIC8vIEVsZW1lbnQgYWNjZXNzLgorICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVs
ZW1lbnRBdFBvaW50KGluIGludCB4LCBpbiBpbnQgeSk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgY2hpbGRBdEluZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICB1
bnNpZ25lZCBsb25nIGluZGV4T2ZDaGlsZChpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGNoaWxk
KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBsaW5rZWRVSUVsZW1lbnRBdEluZGV4
KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IHNlbGVjdGVkQ2hpbGRBdEluZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICB2
b2lkIHNldFNlbGVjdGVkQ2hpbGQoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50KTsK
KyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB0aXRsZVVJRWxlbWVudCgpOworICAgICAg
ICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgCisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcm9sZTsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBzdWJyb2xlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHJvbGVEZXNjcmlwdGlvbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyB0aXRsZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBkZXNj
cmlwdGlvbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBoZWxwVGV4dDsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZURlc2NyaXB0aW9uOworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVybDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBzcGVhazsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBvcmllbnRhdGlvbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBpbnNlcnRpb25Q
b2ludExpbmVOdW1iZXI7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc2Vs
ZWN0ZWRUZXh0UmFuZ2U7CisgICAgCisgICAgICAgIERPTVN0cmluZyBzdHJpbmdBdHRyaWJ1dGVW
YWx1ZShpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGRvdWJsZSBudW1iZXJBdHRyaWJ1dGVW
YWx1ZShpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGJvb2xlYW4gYm9vbEF0dHJpYnV0ZVZh
bHVlKGluIERPTVN0cmluZyBhdHRyKTsKKyAgICAgICAgYm9vbGVhbiBpc0F0dHJpYnV0ZVN1cHBv
cnRlZChpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGJvb2xlYW4gaXNBdHRyaWJ1dGVTZXR0
YWJsZShpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGJvb2xlYW4gaXNBY3Rpb25TdXBwb3J0
ZWQoaW4gRE9NU3RyaW5nIGF0dHIpOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgc3RyaW5nVmFsdWU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgaW50VmFs
dWU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgbWluVmFsdWU7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBpbnQgbWF4VmFsdWU7CisgICAgICAgIAorICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0VuYWJsZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIGlzUmVxdWlyZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IGlzRm9jdXNlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNTZWxlY3Rl
ZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNNdWx0aVNlbGVjdGFibGU7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRXhwYW5kZWQ7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzQ2hlY2tlZDsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gaXNWaXNpYmxlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBpc0NvbGxhcHNlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
aGFzUG9wdXA7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzSWdub3JlZDsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNPZmZTY3JlZW47CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVmFsaWQ7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBpbnQgaGllcmFyY2hpY2FsTGV2ZWw7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIGFyaWFJc0dyYWJiZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgYXJpYURyb3BFZmZlY3RzOworICAgICAgICAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGludCB4OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IHk7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBpbnQgd2lkdGg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBp
bnQgaGVpZ2h0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IGNsaWNrUG9pbnRYOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IGNsaWNrUG9pbnRZOworCisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBpbnQgY2hpbGRyZW5Db3VudDsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGludCBzZWxlY3RlZENoaWxkcmVuQ291bnQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBpbnQgcm93Q291bnQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgY29sdW1u
Q291bnQ7CisKKyAgICAgICAgLy8gQWN0aW9ucy4KKyAgICAgICAgdm9pZCBpbmNyZW1lbnQoKTsK
KyAgICAgICAgdm9pZCBkZWNyZW1lbnQoKTsKKyAgICAgICAgdm9pZCBwcmVzcygpOworICAgICAg
ICB2b2lkIHNob3dNZW51KCk7CisKKyAgICAgICAgLy8gQXR0cmlidXRlIGluZm8uCisgICAgICAg
IERPTVN0cmluZyBhbGxBdHRyaWJ1dGVzKCk7CisgICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVz
T2ZDaGlsZHJlbigpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mTGlua2VkVUlFbGVt
ZW50cygpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcygpOwor
ICAgICAgICAKKyAgICAgICAgLy8gVGFibGUgaW5mby4KKyAgICAgICAgRE9NU3RyaW5nIGF0dHJp
YnV0ZXNPZkNvbHVtbkhlYWRlcnMoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZlJv
d0hlYWRlcnMoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZkNvbHVtbnMoKTsKKyAg
ICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZlJvd3MoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0
dHJpYnV0ZXNPZlZpc2libGVDZWxscygpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09m
SGVhZGVyKCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgY2VsbEZvckNvbHVtbkFu
ZFJvdyhpbiB1bnNpZ25lZCBsb25nIGNvbHVtbiwgaW4gdW5zaWduZWQgbG9uZyByb3cpOworICAg
ICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHNlbGVjdGVkUm93QXRJbmRleChpbiB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBkaXNjbG9zZWRC
eVJvdygpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGRpc2Nsb3NlZFJvd0F0SW5k
ZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIGludCBpbmRleEluVGFibGUoKTsK
KyAgICAgICAgRE9NU3RyaW5nIHJvd0luZGV4UmFuZ2UoKTsKKyAgICAgICAgRE9NU3RyaW5nIGNv
bHVtbkluZGV4UmFuZ2UoKTsKKyAgICAgICAgaW50IHJvd0NvdW50KCk7CisgICAgICAgIGludCBj
b2x1bW5Db3VudCgpOworICAgIAorICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGFyaWFP
d25zRWxlbWVudEF0SW5kZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQgYXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KGluIHVuc2lnbmVkIGxv
bmcgaW5kZXgpOworCisgICAgICAgIC8vIFBhcmFtYXRlcml6ZWQgYXR0cmlidXRlcy4KKyAgICAg
ICAgRE9NU3RyaW5nIHBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcygpOworICAgICAgICBpbnQg
bGluZUZvckluZGV4KGluIGludCBpbmRleCk7CisgICAgICAgIERPTVN0cmluZyByYW5nZUZvckxp
bmUoaW4gaW50IGluZGV4KTsKKyAgICAgICAgRE9NU3RyaW5nIGJvdW5kc0ZvclJhbmdlKGluIHVu
c2lnbmVkIGxvbmcgbG9jYXRpb24sIGluIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKKyAgICAgICAg
RE9NU3RyaW5nIHN0cmluZ0ZvclJhbmdlKGluIHVuc2lnbmVkIGxvbmcgbG9jYXRpb24sIGluIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZWRTdHJpbmdG
b3JSYW5nZShpbiB1bnNpZ25lZCBsb25nIGxvY2F0aW9uLCBpbiB1bnNpZ25lZCBsb25nIGxlbmd0
aCk7CisgICAgICAgIGJvb2xlYW4gYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKGlu
IHVuc2lnbmVkIGxvbmcgbG9jYXRpb24sIGluIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKKyAgICAg
ICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoaW4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCBzdGFydEVsZW1lbnQsIGluIGJvb2xlYW4gaXNEaXJlY3Rp
b25OZXh0LCBpbiBET01TdHJpbmcgc2VhcmNoS2V5LCBpbiBET01TdHJpbmcgc2VhcmNoVGV4dCk7
CisgICAgICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoaW4gdW5zaWduZWQgbG9uZyBsb2Nh
dGlvbiwgaW4gdW5zaWduZWQgbG9uZyBsZW5ndGgpOworCisgICAgICAgIC8vIFNjcm9sbCBhcmVh
IGF0dHJpYnV0ZXMuCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IGhvcml6b250YWxTY3JvbGxiYXI7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IHZlcnRpY2FsU2Nyb2xsYmFyOworCisgICAgICAgIC8vIFRl
eHQgbWFya2Vycy4KKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFy
a2VyUmFuZ2VGb3JFbGVtZW50KGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxlbWVudCk7ICAg
IAorICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMoaW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgc3RhcnRNYXJrZXIsIGluIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyIGVuZE1hcmtlcik7CisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIHN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShpbiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlIHJhbmdlKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIg
ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShpbiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlIHJhbmdlKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgdGV4dE1hcmtl
ckZvclBvaW50KGluIGludCB4LCBpbiBpbnQgeSk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIHByZXZpb3VzVGV4dE1hcmtlcihpbiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBtYXJr
ZXIpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBuZXh0VGV4dE1hcmtlcihpbiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBtYXJrZXIpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IGFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihpbiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciBtYXJrZXIpOworICAgICAgICBET01TdHJpbmcgc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgcmFuZ2UpOworICAgICAgICBp
bnQgdGV4dE1hcmtlclJhbmdlTGVuZ3RoKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ug
cmFuZ2UpOworCisgICAgICAgIC8vIE5vdGlmaWNhdGlvbiBzdXBwb3J0LgorICAgICAgICBib29s
ZWFuIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGluIG9iamVjdCBjYWxsYmFja0Z1bmN0aW9uKTsK
KyAgICAgICAgYm9vbGVhbiByZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgICAgICAK
KyAgICB9OworCit9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9s
bGVyLmlkbAkocmV2aXNpb24gOTkxMjgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMTMxLDYgKzEzMSw4IEBACiAgICAgICAgIHZvaWQgc2V0QmFja2luZ1NjYWxlRmFjdG9y
KGluIGRvdWJsZSBiYWNraW5nU2NhbGVGYWN0b3IsIGluIG9iamVjdCBjYWxsYmFjayk7CiAKICAg
ICAgICAgdm9pZCBzZXRXaW5kb3dJc0tleShpbiBib29sZWFuIGlzS2V5KTsKKyAgICAgICAgCisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcGxhdGZvcm1OYW1lOwogICAgIH07
CiAKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDk5MTI4KQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTUsNiArNjU1LDggQEAKICAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuZ2NDb250cm9sbGVyKCktPm1ha2VXaW5kb3dPYmplY3QoY29udGV4dCwgd2lu
ZG93LCAmZXhjZXB0aW9uKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuZXZlbnRTZW5k
aW5nQ29udHJvbGxlcigpLT5tYWtlV2luZG93T2JqZWN0KGNvbnRleHQsIHdpbmRvdywgJmV4Y2Vw
dGlvbik7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRleHRJbnB1dENvbnRyb2xsZXIo
KS0+bWFrZVdpbmRvd09iamVjdChjb250ZXh0LCB3aW5kb3csICZleGNlcHRpb24pOworICAgIElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpLT5tYWtlV2lu
ZG93T2JqZWN0KGNvbnRleHQsIHdpbmRvdywgJmV4Y2VwdGlvbik7CisKICNpZiBQTEFURk9STShR
VCkKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KGNv
bnRleHQpOwogI2Vsc2UKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiA5OTEyOCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDcgQEAKICAgICBtX2djQ29udHJvbGxlciA9
IEdDQ29udHJvbGxlcjo6Y3JlYXRlKCk7CiAgICAgbV9ldmVudFNlbmRpbmdDb250cm9sbGVyID0g
RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y3JlYXRlKCk7CiAgICAgbV90ZXh0SW5wdXRDb250cm9s
bGVyID0gVGV4dElucHV0Q29udHJvbGxlcjo6Y3JlYXRlKCk7CisgICAgbV9hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlciA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUoKTsKIAogICAgIFdL
QnVuZGxlU2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MobV9idW5kbGUsIGZhbHNlKTsKICAgICBX
S0J1bmRsZVJlbW92ZUFsbFZpc2l0ZWRMaW5rcyhtX2J1bmRsZSk7CkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0JKHJldmlzaW9uIDAp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdUUiB7CisgICAgCiti
b29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSogb3RoZXIpCit7CisgICAgcmV0dXJuIFsoaWQpcGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UoKSBpc0VxdWFsOihpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07
Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXVFIKKwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0JKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5t
bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5o
IgorCituYW1lc3BhY2UgV1RSIHsKKworYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNF
cXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogb3RoZXIpCit7CisgICAgcmV0dXJuIFsoaWQp
cGxhdGZvcm1UZXh0TWFya2VyKCkgaXNFcXVhbDooaWQpb3RoZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCisKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0J
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbXBvcnQgIkluamVjdGVkQnVuZGxlLmgiCisjaW1wb3J0
ICJJbmplY3RlZEJ1bmRsZVBhZ2UuaCIKKworI2ltcG9ydCA8QXBwS2l0L05TQWNjZXNzaWJpbGl0
eS5oPgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdS
ZWYuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmQ0YuaD4KKyNpbXBvcnQg
PFdlYktpdDIvV0tCdW5kbGVGcmFtZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2lt
cG9ydCA8d3RmL1ZlY3Rvci5oPgorCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5T3duc0F0dHJp
YnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlIEAiQVhPd25zIgorI2Vu
ZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZQorI2RlZmluZSBO
U0FjY2Vzc2liaWxpdHlHcmFiYmVkQXR0cmlidXRlIEAiQVhHcmFiYmVkIgorI2VuZGlmCisKKyNp
Zm5kZWYgTlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGUgQCJBWERyb3BFZmZlY3RzIgorI2VuZGlmCisK
Ky8vIElmIGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZSBpcyBwYXNzZWQgaW4sIGl0IHdpbGwgcmFp
c2UgYW4gYWNjZXNzaWJpbGl0eSBleGNlcHRpb24uIFRoZXNlIGFyZSB1c3VhbGx5IGNhdWdodCBi
eSB0aGUgQWNjZXNzaWJpbGl0eSBSdW50aW1lIHRvIGluZm9ybQorLy8gdGhlIEFYIGNsaWVudCBh
cHAgb2YgdGhlIGVycm9yLiBIb3dldmVyLCBEUlQgaXMgdGhlIEFYIGNsaWVudCBhcHAsIHNvIGl0
IG11c3QgY2F0Y2ggdGhlc2UgZXhjZXB0aW9ucy4KKyNkZWZpbmUgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TIEB0cnkgeworI2RlZmluZSBFTkRfQVhfT0JKQ19FWENFUFRJT05TIH0gQGNhdGNoKE5T
RXhjZXB0aW9uICplKSB7IGlmICghW1tlIG5hbWVdIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlFeGNlcHRpb25dKSBAdGhyb3c7IH0KKworCit0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5v
dGlmaWNhdGlvbkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLCB2
b2lkKiBjb250ZXh0KTsKKworQGludGVyZmFjZSBOU09iamVjdCAoV2ViS2l0QWNjZXNzaWJpbGl0
eUFkZGl0aW9ucykKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1
ZXM6KE5TU3RyaW5nICopYXR0cmlidXRlIGluZGV4OihOU1VJbnRlZ2VyKWluZGV4IG1heENvdW50
OihOU1VJbnRlZ2VyKW1heENvdW50OworLSAodm9pZClhY2Nlc3NpYmlsaXR5U2V0U2hvdWxkUmVw
b3N0Tm90aWZpY2F0aW9uczooQk9PTClyZXBvc3Q7CistIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxp
dHlJbmRleE9mQ2hpbGQ6KGlkKWNoaWxkOworLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5QXJy
YXlBdHRyaWJ1dGVDb3VudDooTlNTdHJpbmcgKilhdHRyaWJ1dGU7CitAZW5kCisKK0BpbnRlcmZh
Y2UgTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQorKyAoTlNTdHJpbmcgKilzdHJpbmdX
aXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmOworLSAoSlNTdHJpbmdSZWYp
Y3JlYXRlSlNTdHJpbmdSZWY7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBOU1N0cmluZyAoSlNT
dHJpbmdSZWZBZGRpdGlvbnMpCisKKysgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVm
OihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgoreworICAgIGlmICghanNTdHJpbmdSZWYpCisgICAg
ICAgIHJldHVybiBOVUxMOworICAgIAorICAgIENGU3RyaW5nUmVmIGNmU3RyaW5nID0gSlNTdHJp
bmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpOworICAgIHJl
dHVybiBbKE5TU3RyaW5nICopY2ZTdHJpbmcgYXV0b3JlbGVhc2VdOworfQorCistIChKU1N0cmlu
Z1JlZiljcmVhdGVKU1N0cmluZ1JlZgoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZygoQ0ZTdHJpbmdSZWYpc2VsZik7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciA6IE5TT2JqZWN0Cit7CisgICAgaWQgbV9wbGF0
Zm9ybUVsZW1lbnQ7CisgICAgSlNWYWx1ZVJlZiBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJh
Y2s7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyCisKKy0gKGlkKWluaXRXaXRoUGxhdGZvcm1FbGVtZW50OihpZClwbGF0Zm9ybUVs
ZW1lbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworCisgICAgbV9wbGF0Zm9ybUVsZW1l
bnQgPSBwbGF0Zm9ybUVsZW1lbnQ7CisgICAgCisgICAgLy8gT25jZSBhbiBvYmplY3Qgc3RhcnRz
IHJlcXVlc3Rpbmcgbm90aWZpY2F0aW9ucywgaXQncyBvbiBmb3IgdGhlIGR1cmF0aW9uIG9mIHRo
ZSBwcm9ncmFtLgorICAgIC8vIFRoaXMgaXMgdG8gYXZvaWQgYW55IHJhY2UgY29uZGl0aW9ucyBi
ZXR3ZWVuIHRlc3RzIHR1cm5pbmcgdGhpcyBmbGFnIG9uIGFuZCBvZmYuIEluc3RlYWQKKyAgICAv
LyBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBjYW4ganVzdCBsaXN0ZW4gd2hlbiB0
aGV5IHdhbnQgdG8uCisgICAgW21fcGxhdGZvcm1FbGVtZW50IGFjY2Vzc2liaWxpdHlTZXRTaG91
bGRSZXBvc3ROb3RpZmljYXRpb25zOllFU107CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfbm90aWZp
Y2F0aW9uUmVjZWl2ZWQ6KSBuYW1lOkAiQVhEUlROb3RpZmljYXRpb24iIG9iamVjdDpuaWxdOwor
CisgICAgcmV0dXJuIHNlbGY7Cit9CisgCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOworCisg
ICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUo
V1RSOjpJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29u
dGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5G
cmFtZSk7CisgICAgCisgICAgSlNWYWx1ZVVucHJvdGVjdChjb250ZXh0LCBtX25vdGlmaWNhdGlv
bkZ1bmN0aW9uQ2FsbGJhY2spOworICAgIG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayA9
IDA7CisgICAgCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKV9ub3RpZmljYXRp
b25SZWNlaXZlZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBOU1N0cmlu
ZyAqbm90aWZpY2F0aW9uTmFtZSA9IFtbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JL
ZXk6QCJub3RpZmljYXRpb25OYW1lIl07CisgICAgaWYgKCFub3RpZmljYXRpb25OYW1lKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1
bmRsZVBhZ2VHZXRNYWluRnJhbWUoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgp
LT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEph
dmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4ganNOb3RpZmljYXRpb24oQWRvcHQsIFtub3RpZmljYXRpb25OYW1lIGNyZWF0ZUpTU3RyaW5n
UmVmXSk7CisgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRl
eHQsIGpzTm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNv
bnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxs
YmFjayksIDAsIDEsICZhcmd1bWVudCwgMCk7Cit9CisKKy0gKHZvaWQpc2V0Q2FsbGJhY2s6KEpT
VmFsdWVSZWYpY2FsbGJhY2sKK3sKKyAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICByZXR1cm47
CisgCisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWlu
RnJhbWUoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAg
IEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0
KG1haW5GcmFtZSk7CisKKyAgICAvLyBSZWxlYXNlIHRoZSBvbGQgY2FsbGJhY2suCisgICAgaWYg
KG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaykgCisgICAgICAgIEpTVmFsdWVVbnByb3Rl
Y3QoY29udGV4dCwgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKTsKKyAgICAKKyAgICBt
X25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBKU1ZhbHVlUHJv
dGVjdChjb250ZXh0LCBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2spOworfQorCitAZW5k
CisKK25hbWVzcGFjZSBXVFIgeworCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCisgICAgOiBtX2VsZW1lbnQo
ZWxlbWVudCkKKyAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQoreworICAgIC8vIEZJWE1F
OiBhcEB3ZWJraXQub3JnIHNheXMgT2JqQyBvYmplY3RzIG5lZWQgdG8gYmUgQ0ZSZXRhaW5lZC9D
RlJlbGVhc2UgdG8gYmUgR0MtY29tcGxpYW50IG9uIHRoZSBtYWMuCisgICAgW21fZWxlbWVudCBy
ZXRhaW5dOworfQorCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVyKQorICAgIDogbV9lbGVtZW50
KG90aGVyLm1fZWxlbWVudCkKKyAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQoreworICAg
IFttX2VsZW1lbnQgcmV0YWluXTsKK30KKworQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoKQoreworICAgIC8vIFRoZSBub3RpZmljYXRpb24gaGFuZGxlciBz
aG91bGQgYmUgbmlsIGJlY2F1c2UgcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKSBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCBpbiB0aGUgdGVzdC4KKyAgICBBU1NFUlQoIW1fbm90aWZpY2F0aW9u
SGFuZGxlcik7CisgICAgW21fZWxlbWVudCByZWxlYXNlXTsKK30KKworc3RhdGljIE5TU3RyaW5n
KiBkZXNjcmlwdGlvbk9mVmFsdWUoaWQgdmFsdWVPYmplY3QsIGlkIGZvY3VzZWRBY2Nlc3NpYmls
aXR5T2JqZWN0KQoreworICAgIGlmICghdmFsdWVPYmplY3QpCisgICAgICAgIHJldHVybiBOVUxM
OworCisgICAgaWYgKFt2YWx1ZU9iamVjdCBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0p
CisgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxhcnJheSBvZiBz
aXplICVkPiIsIFsoTlNBcnJheSopdmFsdWVPYmplY3QgY291bnRdXTsKKworICAgIGlmIChbdmFs
dWVPYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJu
IFsoTlNOdW1iZXIqKXZhbHVlT2JqZWN0IHN0cmluZ1ZhbHVlXTsKKworICAgIGlmIChbdmFsdWVP
YmplY3QgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11dKSB7CisgICAgICAgIE5TU3RyaW5n
KiB0eXBlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOlt2YWx1ZU9iamVjdCBvYmpDVHlw
ZV0gZW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXTsKKyAgICAgICAgTlNWYWx1ZSogdmFs
dWUgPSAoTlNWYWx1ZSopdmFsdWVPYmplY3Q7CisgICAgICAgIGlmIChbdHlwZSByYW5nZU9mU3Ry
aW5nOkAiTlNSZWN0Il0ubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIk5TUmVjdDogJUAiLCBOU1N0cmluZ0Zyb21SZWN0KFt2YWx1ZSBy
ZWN0VmFsdWVdKV07CisgICAgICAgIGlmIChbdHlwZSByYW5nZU9mU3RyaW5nOkAiTlNQb2ludCJd
Lmxlbmd0aCA+IDApCisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJOU1BvaW50OiAlQCIsIE5TU3RyaW5nRnJvbVBvaW50KFt2YWx1ZSBwb2ludFZhbHVlXSld
OworICAgICAgICBpZiAoW3R5cGUgcmFuZ2VPZlN0cmluZzpAIk5TU2l6ZSJdLmxlbmd0aCA+IDAp
CisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJOU1NpemU6
ICVAIiwgTlNTdHJpbmdGcm9tU2l6ZShbdmFsdWUgc2l6ZVZhbHVlXSldOworICAgICAgICBpZiAo
W3R5cGUgcmFuZ2VPZlN0cmluZzpAIk5TUmFuZ2UiXS5sZW5ndGggPiAwKQorICAgICAgICAgICAg
cmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTlNSYW5nZTogJUAiLCBOU1N0cmlu
Z0Zyb21SYW5nZShbdmFsdWUgcmFuZ2VWYWx1ZV0pXTsKKyAgICB9CisKKyAgICAvLyBTdHJpcCBh
YnNvbHV0ZSBVUkwgcGF0aHMKKyAgICBOU1N0cmluZyogZGVzY3JpcHRpb24gPSBbdmFsdWVPYmpl
Y3QgZGVzY3JpcHRpb25dOworICAgIE5TUmFuZ2UgcmFuZ2UgPSBbZGVzY3JpcHRpb24gcmFuZ2VP
ZlN0cmluZzpAIkxheW91dFRlc3RzIl07CisgICAgaWYgKHJhbmdlLmxlbmd0aCkKKyAgICAgICAg
cmV0dXJuIFtkZXNjcmlwdGlvbiBzdWJzdHJpbmdGcm9tSW5kZXg6cmFuZ2UubG9jYXRpb25dOwor
CisgICAgLy8gU3RyaXAgcG9pbnRlciBsb2NhdGlvbnMKKyAgICBpZiAoW2Rlc2NyaXB0aW9uIHJh
bmdlT2ZTdHJpbmc6QCIweCJdLmxlbmd0aCkgeworICAgICAgICBOU1N0cmluZyogcm9sZSA9IFtm
b2N1c2VkQWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV07CisgICAgICAgIE5TU3RyaW5nKiB0aXRsZSA9IFtm
b2N1c2VkQWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGVdOworICAgICAgICBpZiAoW3RpdGxlIGxlbmd0aF0p
CisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICcl
QCc+Iiwgcm9sZSwgdGl0bGVdOworICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCI8JUA+Iiwgcm9sZV07CisgICAgfQorICAgIAorICAgIHJldHVybiBbdmFsdWVPYmpl
Y3QgZGVzY3JpcHRpb25dOworfQorCitzdGF0aWMgTlNTdHJpbmcqIGF0dHJpYnV0ZXNPZkVsZW1l
bnQoaWQgYWNjZXNzaWJpbGl0eU9iamVjdCkKK3sKKyAgICBOU0FycmF5KiBzdXBwb3J0ZWRBdHRy
aWJ1dGVzID0gW2FjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVz
XTsKKworICAgIE5TTXV0YWJsZVN0cmluZyogYXR0cmlidXRlc1N0cmluZyA9IFtOU011dGFibGVT
dHJpbmcgc3RyaW5nXTsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBbc3VwcG9ydGVk
QXR0cmlidXRlcyBjb3VudF07ICsraSkgeworICAgICAgICBOU1N0cmluZyogYXR0cmlidXRlID0g
W3N1cHBvcnRlZEF0dHJpYnV0ZXMgb2JqZWN0QXRJbmRleDppXTsKKyAgICAgICAgCisgICAgICAg
IC8vIFJpZ2h0IG5vdywgcG9zaXRpb24gcHJvdmlkZXMgdXNlbGVzcyBhbmQgc2NyZWVuLXNwZWNp
ZmljIGluZm9ybWF0aW9uLCBzbyB3ZSBkbyBub3QKKyAgICAgICAgLy8gd2FudCB0byBpbmNsdWRl
IGl0IGZvciB0aGUgc2FrZSBvZiB1bml2ZXJzYWxseSBwYXNzaW5nIHRlc3RzLgorICAgICAgICBp
ZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFBvc2l0aW9uIl0pCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIC8vIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTogY2FuIHRocm93IGFuIGlmIGFuIGF0dHJpYnV0ZSBpcyBub3QgcmV0dXJuZWQuCisgICAg
ICAgIC8vIEZvciBEdW1wUmVuZGVyVHJlZSdzIHB1cnBvc2UsIHdlIHNob3VsZCBpZ25vcmUgdGhv
c2UgZXhjZXB0aW9ucworICAgICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAg
aWQgdmFsdWVPYmplY3QgPSBbYWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6YXR0cmlidXRlXTsKKyAgICAgICAgTlNTdHJpbmcqIHZhbHVlID0gZGVzY3JpcHRp
b25PZlZhbHVlKHZhbHVlT2JqZWN0LCBhY2Nlc3NpYmlsaXR5T2JqZWN0KTsKKyAgICAgICAgW2F0
dHJpYnV0ZXNTdHJpbmcgYXBwZW5kRm9ybWF0OkAiJUA6ICVAXG4iLCBhdHRyaWJ1dGUsIHZhbHVl
XTsKKyAgICAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gYXR0cmlidXRlc1N0cmluZzsKK30KKworc3RhdGljIEpTU3RyaW5nUmVmIGNvbmNhdGVuYXRl
QXR0cmlidXRlQW5kVmFsdWUoTlNTdHJpbmcqIGF0dHJpYnV0ZSwgTlNTdHJpbmcqIHZhbHVlKQor
eworICAgIFZlY3RvcjxVbmlDaGFyPiBidWZmZXIoW2F0dHJpYnV0ZSBsZW5ndGhdKTsKKyAgICBb
YXR0cmlidXRlIGdldENoYXJhY3RlcnM6YnVmZmVyLmRhdGEoKV07CisgICAgYnVmZmVyLmFwcGVu
ZCgnOicpOworICAgIGJ1ZmZlci5hcHBlbmQoJyAnKTsKKworICAgIFZlY3RvcjxVbmlDaGFyPiB2
YWx1ZUJ1ZmZlcihbdmFsdWUgbGVuZ3RoXSk7CisgICAgW3ZhbHVlIGdldENoYXJhY3RlcnM6dmFs
dWVCdWZmZXIuZGF0YSgpXTsKKyAgICBidWZmZXIuYXBwZW5kKHZhbHVlQnVmZmVyKTsKKworICAg
IHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOworfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKE5TQXJy
YXkqIGFycmF5LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1l
bnRWZWN0b3IpCit7CisgICAgTlNVSW50ZWdlciBjb3VudCA9IFthcnJheSBjb3VudF07CisgICAg
Zm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgZWxlbWVudFZl
Y3Rvci5hcHBlbmQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFthcnJheSBvYmplY3RB
dEluZGV4OmldKSk7Cit9CisKK3N0YXRpYyBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbk9mRWxlbWVu
dHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9y
KQoreworICAgIE5TTXV0YWJsZVN0cmluZyogYWxsRWxlbWVudFN0cmluZyA9IFtOU011dGFibGVT
dHJpbmcgc3RyaW5nXTsKKyAgICBzaXplX3Qgc2l6ZSA9IGVsZW1lbnRWZWN0b3Iuc2l6ZSgpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnQgPSBlbGVtZW50VmVjdG9yW2ldOworICAg
ICAgICBOU1N0cmluZyogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNPZkVsZW1lbnQodWlFbGVtZW50
LT5wbGF0Zm9ybVVJRWxlbWVudCgpKTsKKyAgICAgICAgW2FsbEVsZW1lbnRTdHJpbmcgYXBwZW5k
Rm9ybWF0OkAiJUBcbi0tLS0tLS0tLS0tLVxuIiwgYXR0cmlidXRlc107CisgICAgfQorICAgIAor
ICAgIHJldHVybiBbYWxsRWxlbWVudFN0cmluZyBjcmVhdGVKU1N0cmluZ1JlZl07Cit9CisKK3Zv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogbGlua2VkRWxlbWVudHMgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRV
SUVsZW1lbnRzQXR0cmlidXRlXTsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGxpbmtlZEVs
ZW1lbnRzLCBlbGVtZW50VmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogbGlua0VsZW1lbnRzID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmtVSUVsZW1lbnRzIl07Cisg
ICAgY29udmVydE5TQXJyYXlUb1ZlY3RvcihsaW5rRWxlbWVudHMsIGVsZW1lbnRWZWN0b3IpOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpnZXRDaGlsZHJlbihWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4m
IGVsZW1lbnRWZWN0b3IpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNB
cnJheSogY2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgY29udmVydE5TQXJyYXlUb1Zl
Y3RvcihjaGlsZHJlbiwgZWxlbWVudFZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdl
KFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3Rvciwg
dW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBjaGlsZHJlbiA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRl
IGluZGV4OmxvY2F0aW9uIG1heENvdW50Omxlbmd0aF07CisgICAgY29udmVydE5TQXJyYXlUb1Zl
Y3RvcihjaGlsZHJlbiwgZWxlbWVudFZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VudCgpCit7Cisg
ICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNoaWxkcmVuOworICAg
IGdldENoaWxkcmVuKGNoaWxkcmVuKTsKKyAgICAKKyAgICByZXR1cm4gY2hpbGRyZW4uc2l6ZSgp
OworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICBpZCBlbGVtZW50
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpOU01ha2VQb2ludCh4LCB5KV07Cisg
ICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoZWxlbWVudCk7Cit9CisKK3Vuc2lnbmVkIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KiBlbGVtZW50KQoreworICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlJbmRleE9m
Q2hpbGQ6ZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07Cit9CisKK1Bhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4
KHVuc2lnbmVkIGluZGV4KQoreworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gPiBjaGlsZHJlbjsKKyAgICBnZXRDaGlsZHJlbldpdGhSYW5nZShjaGlsZHJlbiwgaW5k
ZXgsIDEpOworCisgICAgaWYgKGNoaWxkcmVuLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4g
Y2hpbGRyZW5bMF07CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRl
eCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBO
U0FycmF5KiBvYmplY3RzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV07CisgICAgaWYgKGluZGV4
IDwgW29iamVjdHMgY291bnRdKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y3JlYXRlKFtvYmplY3RzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50
QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBOU0FycmF5KiBvYmplY3RzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3duc0F0dHJpYnV0ZV07CisgICAgaWYgKGluZGV4IDwgW29i
amVjdHMgY291bnRdKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3Jl
YXRlKFtvYmplY3RzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdElu
ZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IE5TQXJyYXkqIG9iamVjdHMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlXTsKKyAgICBpZiAoaW5k
ZXggPCBbb2JqZWN0cyBjb3VudF0pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjcmVhdGUoW29iamVjdHMgb2JqZWN0QXRJbmRleDppbmRleF0pOworICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dB
dEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIE5TQXJyYXkqIHJvd3MgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRSb3dzQXR0cmlidXRlXTsKKyAgICBpZiAoaW5kZXgg
PCBbcm93cyBjb3VudF0pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
cmVhdGUoW3Jvd3Mgb2JqZWN0QXRJbmRleDppbmRleF0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKworICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2ln
bmVkIGluZGV4KSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5T
QXJyYXkqIGFycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgaWYgKGluZGV4IDwg
W2FycmF5IGNvdW50XSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNy
ZWF0ZShbYXJyYXkgb2JqZWN0QXRJbmRleDppbmRleF0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVDb3VudDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxl
Y3RlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCisgICAgTlNBcnJheSogcm93cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV07CisgICAgaWYg
KGluZGV4IDwgW3Jvd3MgY291bnRdKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y3JlYXRlKFtyb3dzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQo
KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIGFjY2Vzc2liaWxpdHlP
YmplY3QgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CisgICAgaWYgKGFjY2Vzc2liaWxpdHlPYmpl
Y3QpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoYWNjZXNz
aWJpbGl0eU9iamVjdCk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJl
dHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIGlkIGFjY2Vzc2liaWxpdHlPYmplY3QgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGVdOworICAg
IGlmIChhY2Nlc3NpYmlsaXR5T2JqZWN0KQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y3JlYXRlKGFjY2Vzc2liaWxpdHlPYmplY3QpOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdygpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgYWNjZXNzaWJpbGl0eU9iamVj
dCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eURpc2Nsb3NlZEJ5Um93QXR0cmlidXRlXTsKKyAgICBpZiAoYWNjZXNzaWJpbGl0eU9iamVjdCkK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShhY2Nlc3NpYmls
aXR5T2JqZWN0KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJu
IDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRzKCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gbGlua2VkRWxlbWVudHM7CisgICAgZ2V0TGlua2VkVUlF
bGVtZW50cyhsaW5rZWRFbGVtZW50cyk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50
cyhsaW5rZWRFbGVtZW50cyk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKCkKK3sKKyAgICBWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gbGlua0VsZW1lbnRzOworICAgIGdl
dERvY3VtZW50TGlua3MobGlua0VsZW1lbnRzKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVs
ZW1lbnRzKGxpbmtFbGVtZW50cyk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDaGlsZHJlbigpCit7CisgICAgVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNoaWxkcmVuOworICAgIGdldENoaWxk
cmVuKGNoaWxkcmVuKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNoaWxkcmVu
KTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFsbEF0dHJpYnV0ZXMoKQoreworICAgIE5TU3RyaW5nKiBhdHRyaWJ1dGVzID0gYXR0cmlidXRl
c09mRWxlbWVudChtX2VsZW1lbnQpOworICAgIHJldHVybiBbYXR0cmlidXRlcyBjcmVhdGVKU1N0
cmluZ1JlZl07Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCit7Cisg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVm
OmF0dHJpYnV0ZV1dOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpT
U3RyaW5nUmVmOmF0dHJpYnV0ZV1dOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBkb3VibGVWYWx1ZV07CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0
aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
TlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJu
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUlzQXR0cmlidXRlU2V0dGFibGU6W05TU3RyaW5nIHN0
cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gW1ttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSBjb250YWluc09iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0
aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMoKQoreworICAg
IE5TQXJyYXkqIHN1cHBvcnRlZFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVzID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzXTsKKyAgICAKKyAgICBOU011
dGFibGVTdHJpbmcqIGF0dHJpYnV0ZXNTdHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107
CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3N1cHBvcnRlZFBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGVzIGNvdW50XTsgKytpKSB7CisgICAgICAgIFthdHRyaWJ1dGVzU3RyaW5nIGFwcGVu
ZEZvcm1hdDpAIiVAXG4iLCBbc3VwcG9ydGVkUGFyYW1ldGVyaXplZEF0dHJpYnV0ZXMgb2JqZWN0
QXRJbmRleDppXV07CisgICAgfQorICAgIAorICAgIHJldHVybiBbYXR0cmlidXRlc1N0cmluZyBj
cmVhdGVKU1N0cmluZ1JlZl07Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpyb2xlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBOU1N0cmluZyAqcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXSwgbV9l
bGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9s
ZSIsIHJvbGUpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4g
MDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN1YnJvbGUoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TU3RyaW5n
KiByb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOwor
ICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhTdWJyb2xlIiwgcm9s
ZSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3Jp
cHRpb24oKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TU3RyaW5nKiBy
b2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVu
dCk7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFJvbGVEZXNj
cmlwdGlvbiIsIHJvbGUpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRpdGxlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1N0
cmluZyogdGl0bGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQp
OworICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhUaXRsZSIsIHRp
dGxlKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKwor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0
aW9uKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBkZXNjcmlwdGlv
biA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7Cisg
ICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWERlc2NyaXB0aW9uIiwg
ZGVzY3JpcHRpb24pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAw
OworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXSwg
bV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFY
T3JpZW50YXRpb24iLCBkZXNjcmlwdGlvbik7ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKworICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmli
dXRlXSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1
ZShAIkFYVmFsdWUiLCBkZXNjcmlwdGlvbik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwor
CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExhbmd1YWdlIl0sIG1fZWxlbWVudCk7CisgICAg
cmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWExhbmd1YWdlIiwgZGVzY3Jp
cHRpb24pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRl
eHQoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIGRlc2Ny
aXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhlbHBBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAg
IHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhIZWxwIiwgZGVzY3JpcHRp
b24pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30K
KworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngoKQoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIE5TVmFsdWUqIHBvc2l0aW9uVmFsdWUgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0
ZV07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oW3Bvc2l0aW9uVmFsdWUgcG9pbnRW
YWx1ZV0ueCk7ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1
cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnkoKQoreworICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TVmFsdWUqIHBvc2l0aW9uVmFsdWUgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlQb3Np
dGlvbkF0dHJpYnV0ZV07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oW3Bvc2l0aW9u
VmFsdWUgcG9pbnRWYWx1ZV0ueSk7ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICAKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OndpZHRoKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVlKiBz
aXplVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlTaXplQXR0cmlidXRlXTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihb
c2l6ZVZhbHVlIHNpemVWYWx1ZV0ud2lkdGgpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICAKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmhlaWdodCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNWYWx1
ZSogc2l6ZVZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJs
ZT4oW3NpemVWYWx1ZSBzaXplVmFsdWVdLmhlaWdodCk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIAorICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y2xpY2tQb2ludFgoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIE5TVmFsdWUqIHBvc2l0aW9uVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYQ2xpY2tQb2ludCJdOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3Vi
bGU+KFtwb3NpdGlvblZhbHVlIHBvaW50VmFsdWVdLngpOyAgICAgICAgCisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFkoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIE5TVmFsdWUqIHBvc2l0aW9uVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQ2xpY2tQb2ludCJdOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxkb3VibGU+KFtwb3NpdGlvblZhbHVlIHBvaW50VmFsdWVdLnkpOworICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbKE5TTnVt
YmVyKil2YWx1ZSBkb3VibGVWYWx1ZV07IAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKwor
ICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWlu
VmFsdWUoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TWlu
VmFsdWVBdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIg
Y2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIqKXZhbHVlIGRvdWJsZVZhbHVlXTsg
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2Rv
dWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSgpCit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV07CisgICAgaWYg
KFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4g
WyhOU051bWJlciopdmFsdWUgZG91YmxlVmFsdWVdOyAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisKKyAgICByZXR1cm4gMC4wOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbigpCit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgTlNTdHJpbmcqIHZhbHVlRGVzY3JpcHRpb24gPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZURlc2Ny
aXB0aW9uQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlRGVzY3JpcHRpb24gaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgIHJldHVybiBbdmFsdWVEZXNjcmlwdGlvbiBj
cmVhdGVKU1N0cmluZ1JlZl07CisKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0
dXJuIDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExp
bmVOdW1iZXIoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
SW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2lu
ZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbKE5TTnVtYmVyICop
dmFsdWUgaW50VmFsdWVdOyAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAg
cmV0dXJuIC0xOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3Vw
cG9ydGVkKEpTU3RyaW5nUmVmIGFjdGlvbikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBOU0FycmF5KiBhY3Rpb25zID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QWN0aW9u
TmFtZXNdOworICAgIHJldHVybiBbYWN0aW9ucyBjb250YWluc09iamVjdDpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEpTU3RyaW5nUmVmOmFjdGlvbl1dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNFbmFibGVkKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2
YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eUVuYWJsZWRBdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUmVxdWlyZWQiXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9m
Q2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVl
XTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCgpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQXR0cmlidXRlXTsKKyAgICBpZiAo
W3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBb
dmFsdWUgYm9vbFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5k
ZWQoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
RXhwYW5kZWRBdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1i
ZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKCkgY29uc3QKK3sKKyAgICAvLyBPbiB0aGUg
TWFjLCBpbnRWYWx1ZSgpPT0xIGlmIGEgYSBjaGVja2FibGUgY29udHJvbCBpcyBjaGVja2VkLgor
ICAgIHJldHVybiBpbnRWYWx1ZSgpID09IDE7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zdXJlTGV2ZWxBdHRyaWJ1dGVdOworICAgIGlmIChb
dmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2
YWx1ZSBpbnRWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJu
IDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzcGVhaygpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRFJUU3BlZWNoQXR0
cmlidXRlIl07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KQorICAgICAgICByZXR1cm4gW3ZhbHVlIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgICAgIAorICAgIHJldHVybiAwOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQoKSBjb25zdAoreworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZV07CisgICAgaWYg
KFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4g
W3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXJpYURyb3BFZmZlY3RzKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3RzQXR0cmlidXRlXTsKKyAgICBpZiAoIVt2
YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiAwOwor
CisgICAgTlNNdXRhYmxlU3RyaW5nKiBkcm9wRWZmZWN0cyA9IFtOU011dGFibGVTdHJpbmcgc3Ry
aW5nXTsKKyAgICBOU0ludGVnZXIgbGVuZ3RoID0gW3ZhbHVlIGNvdW50XTsKKyAgICBmb3IgKE5T
SW50ZWdlciBrID0gMDsgayA8IGxlbmd0aDsgKytrKSB7CisgICAgICAgIFtkcm9wRWZmZWN0cyBh
cHBlbmRTdHJpbmc6W3ZhbHVlIG9iamVjdEF0SW5kZXg6a11dOworICAgICAgICBpZiAoayA8IGxl
bmd0aCAtIDEpCisgICAgICAgICAgICBbZHJvcEVmZmVjdHMgYXBwZW5kU3RyaW5nOkAiLCJdOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gW2Ryb3BFZmZlY3RzIGNyZWF0ZUpTU3RyaW5nUmVmXTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKKy8v
IHBhcmFtZXRlcml6ZWQgYXR0cmlidXRlcworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxp
bmVGb3JJbmRleChpbnQgaW5kZXgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRl
cjpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDppbmRleF1dOworICAgIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIgKil2
YWx1ZSBpbnRWYWx1ZV07IAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVy
biAtMTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJhbmdlRm9yTGluZShpbnQgbGluZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eVJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFy
YW1ldGVyOltOU051bWJlciBudW1iZXJXaXRoSW50OmxpbmVdXTsKKyAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSkgeworICAgICAgICByZXR1cm4gW05TU3RyaW5n
RnJvbVJhbmdlKFt2YWx1ZSByYW5nZVZhbHVlXSkgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIH0K
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3VuZHNGb3JS
YW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIE5TUmFuZ2Ug
cmFuZ2UgPSBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUJvdW5kc0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKKyAgICBO
U1JlY3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwwLDAsMCk7CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0pCisgICAgICAgIHJlY3QgPSBbdmFsdWUgcmVjdFZhbHVl
XTsgCisgICAgCisgICAgLy8gZG9uJ3QgcmV0dXJuIHBvc2l0aW9uIGluZm9ybWF0aW9uIGJlY2F1
c2UgaXQgaXMgcGxhdGZvcm0gZGVwZW5kZW50CisgICAgTlNNdXRhYmxlU3RyaW5nKiBib3VuZHNE
ZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInt7JWYsICVm
fSwgeyVmLCAlZn19IiwtMS4wZiwtMS4wZixyZWN0LnNpemUud2lkdGgscmVjdC5zaXplLmhlaWdo
dF07CisgICAgcmV0dXJuIFtib3VuZHNEZXNjcmlwdGlvbiBjcmVhdGVKU1N0cmluZ1JlZl07Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFu
Z2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBOU1JhbmdlIHJh
bmdlID0gTlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7CisgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCisgICAgaWQgc3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmli
dXRlIGZvclBhcmFtZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1dOworICAgIGlm
ICghW3N0cmluZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICByZXR1
cm4gMDsKKyAgICAKKyAgICByZXR1cm4gW3N0cmluZyBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmlu
Z0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgTlNS
YW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5QXR0cmlidXRl
ZFN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05TVmFs
dWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKKyAgICBpZiAoIVtzdHJpbmcgaXNLaW5kT2ZDbGFz
czpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHJldHVybiAwOworICAgIAor
ICAgIE5TU3RyaW5nKiBzdHJpbmdXaXRoQXR0cnMgPSBbc3RyaW5nIGRlc2NyaXB0aW9uXTsKKyAg
ICByZXR1cm4gW3N0cmluZ1dpdGhBdHRycyBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25l
ZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01h
a2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdl
OnJhbmdlXV07CisgICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0
cmluZyBjbGFzc11dKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBOU0RpY3Rpb25hcnkq
IGF0dHJzID0gW3N0cmluZyBhdHRyaWJ1dGVzQXRJbmRleDowIGVmZmVjdGl2ZVJhbmdlOm5pbF07
CisgICAgaWYoW1thdHRycyBvYmplY3RGb3JLZXk6TlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRl
eHRBdHRyaWJ1dGVdIGJvb2xWYWx1ZV0pCisgICAgICAgIHJldHVybiB0cnVlOyAgICAKKyAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVp
RWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVs
ZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1N0cmluZ1JlZiBzZWFyY2hLZXksIEpTU3Ry
aW5nUmVmIHNlYXJjaFRleHQpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
TlNNdXRhYmxlRGljdGlvbmFyeSogcGFyYW1ldGVyID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGlj
dGlvbmFyeV07CisgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6KGlzRGlyZWN0aW9uTmV4dCkgPyBA
IkFYRGlyZWN0aW9uTmV4dCIgOiBAIkFYRGlyZWN0aW9uUHJldmlvdXMiIGZvcktleTpAIkFYRGly
ZWN0aW9uIl07CisgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6MV0gZm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXTsKKyAgICBpZiAoc3RhcnRFbGVtZW50KQor
ICAgICAgICBbcGFyYW1ldGVyIHNldE9iamVjdDooaWQpc3RhcnRFbGVtZW50LT5wbGF0Zm9ybVVJ
RWxlbWVudCgpIGZvcktleTpAIkFYU3RhcnRFbGVtZW50Il07CisgICAgaWYgKHNlYXJjaEtleSkK
KyAgICAgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmlu
Z1JlZjpzZWFyY2hLZXldIGZvcktleTpAIkFYU2VhcmNoS2V5Il07CisgICAgaWYgKHNlYXJjaFRl
eHQgJiYgSlNTdHJpbmdHZXRMZW5ndGgoc2VhcmNoVGV4dCkpCisgICAgICAgIFtwYXJhbWV0ZXIg
c2V0T2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoVGV4dF0gZm9y
S2V5OkAiQVhTZWFyY2hUZXh0Il07CisgICAgCisgICAgaWQgdWlFbGVtZW50ID0gW1ttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhVSUVsZW1lbnRzRm9yU2VhcmNoUHJl
ZGljYXRlIiBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyXSBsYXN0T2JqZWN0XTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHVpRWxlbWVudCk7CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVy
cygpCit7CisgICAgLy8gbm90IHlldCBkZWZpbmVkIGluIEFwcEtpdC4uLiBvZGQKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBjb2x1bW5IZWFkZXJzQXJyYXkgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQ29sdW1uSGVhZGVyVUlF
bGVtZW50cyJdOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBj
b2x1bW5IZWFkZXJzVmVjdG9yOworICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3IoY29sdW1uSGVh
ZGVyc0FycmF5LCBjb2x1bW5IZWFkZXJzVmVjdG9yKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25P
ZkVsZW1lbnRzKGNvbHVtbkhlYWRlcnNWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd0hlYWRlcnMoKQoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIHJvd0hlYWRlcnNBcnJheSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSb3dIZWFkZXJVSUVsZW1l
bnRzIl07CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IHJvd0hl
YWRlcnNWZWN0b3I7CisgICAgY29udmVydE5TQXJyYXlUb1ZlY3Rvcihyb3dIZWFkZXJzQXJyYXks
IHJvd0hlYWRlcnNWZWN0b3IpOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMocm93
SGVhZGVyc1ZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJl
dHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlc09mQ29sdW1ucygpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgTlNBcnJheSogY29sdW1uc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07CisgICAgVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNvbHVtbnNWZWN0b3I7CisgICAg
Y29udmVydE5TQXJyYXlUb1ZlY3Rvcihjb2x1bW5zQXJyYXksIGNvbHVtbnNWZWN0b3IpOworICAg
IHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY29sdW1uc1ZlY3Rvcik7CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cygpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogcm93c0FycmF5ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um93
c0F0dHJpYnV0ZV07CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+
IHJvd3NWZWN0b3I7CisgICAgY29udmVydE5TQXJyYXlUb1ZlY3Rvcihyb3dzQXJyYXksIHJvd3NW
ZWN0b3IpOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMocm93c1ZlY3Rvcik7Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09m
VmlzaWJsZUNlbGxzKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0Fy
cmF5KiBjZWxsc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWFZpc2libGVDZWxscyJdOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gPiBjZWxsc1ZlY3RvcjsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGNlbGxzQXJy
YXksIGNlbGxzVmVjdG9yKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNlbGxz
VmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7
Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZIZWFkZXIoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IGlkIGhlYWRlck9iamVjdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV07CisgICAgaWYgKCFoZWFkZXJPYmplY3Qp
CisgICAgICAgIHJldHVybiBbQCIiIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICAKKyAgICBWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gaGVhZGVyVmVjdG9yOworICAgIGhl
YWRlclZlY3Rvci5hcHBlbmQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGhlYWRlck9i
amVjdCkpOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoaGVhZGVyVmVjdG9yKTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2lu
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dDb3VudCgpCit7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCisgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUFycmF5QXR0
cmlidXRlQ291bnQ6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y29sdW1uQ291bnQoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmluZGV4SW5UYWJsZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
TlNOdW1iZXIqIGluZGV4TnVtYmVyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVdOworICAgIGlmIChpbmRleE51bWJl
cikKKyAgICAgICAgcmV0dXJuIFtpbmRleE51bWJlciBpbnRWYWx1ZV07CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIC0xOworfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SW5kZXhSYW5nZSgpCit7CisgICAgTlNS
YW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKDAsMCk7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgTlNWYWx1ZSogaW5kZXhSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhSb3dJbmRleFJhbmdlIl07CisgICAgaWYgKGluZGV4UmFuZ2UpCisg
ICAgICAgIHJhbmdlID0gW2luZGV4UmFuZ2UgcmFuZ2VWYWx1ZV07CisgICAgTlNNdXRhYmxlU3Ry
aW5nKiByYW5nZURlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAieyVkLCAlZH0iLHJhbmdlLmxvY2F0aW9uLCByYW5nZS5sZW5ndGhdOworICAgIHJldHVybiBb
cmFuZ2VEZXNjcmlwdGlvbiBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhSYW5nZSgpCit7CisgICAgTlNS
YW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKDAsMCk7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgTlNOdW1iZXIqIGluZGV4UmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYQ29sdW1uSW5kZXhSYW5nZSJdOworICAgIGlmIChpbmRleFJhbmdl
KQorICAgICAgICByYW5nZSA9IFtpbmRleFJhbmdlIHJhbmdlVmFsdWVdOworICAgIE5TTXV0YWJs
ZVN0cmluZyogcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAInslZCwgJWR9IixyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoXTsKKyAgICByZXR1
cm4gW3JhbmdlRGVzY3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOyAgICAKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVt
bkFuZFJvdyh1bnNpZ25lZCBjb2wsIHVuc2lnbmVkIHJvdykKK3sKKyAgICBOU0FycmF5ICpjb2xS
b3dBcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W05TTnVtYmVyIG51bWJlcldpdGhV
bnNpZ25lZEludDpjb2xdLCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJvd10sIG5p
bF07CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNyZWF0ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYQ2VsbEZvckNvbHVtbkFuZFJvdyIgZm9yUGFyYW1ldGVyOmNvbFJvd0FycmF5XSk7Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAKKworICAgIHJldHVybiAwOworfQorCitQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhv
cml6b250YWxTY3JvbGxiYXIoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5SG9yaXpvbnRhbFNjcm9s
bEJhckF0dHJpYnV0ZV0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAgCisgICAgCisg
ICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdAoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjcmVhdGUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1dGVdKTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TICAgICAgICAKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdlKCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0g
TlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgTlNWYWx1ZSAqaW5kZXhSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dFJhbmdlQXR0cmlidXRlXTsKKyAg
ICBpZiAoaW5kZXhSYW5nZSkKKyAgICAgICAgcmFuZ2UgPSBbaW5kZXhSYW5nZSByYW5nZVZhbHVl
XTsKKyAgICBOU011dGFibGVTdHJpbmcgKnJhbmdlRGVzY3JpcHRpb24gPSBbTlNNdXRhYmxlU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ7JWQsICVkfSIscmFuZ2UubG9jYXRpb24sIHJhbmdlLmxl
bmd0aF07CisgICAgcmV0dXJuIFtyYW5nZURlc2NyaXB0aW9uIGNyZWF0ZUpTU3RyaW5nUmVmXTsg
ICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKHVuc2ln
bmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgTlNSYW5nZSB0ZXh0UmFuZ2Ug
PSBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBOU1ZhbHVlICp0ZXh0UmFuZ2VW
YWx1ZSA9IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOnRleHRSYW5nZV07CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6dGV4
dFJhbmdlVmFsdWUgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dFJhbmdl
QXR0cmlidXRlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW5jcmVtZW50KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOk5TQWNjZXNz
aWJpbGl0eUluY3JlbWVudEFjdGlvbl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudCgpCit7CisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5UGVyZm9ybUFj
dGlvbjpOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb25dOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzaG93TWVudSgpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5UGVyZm9ybUFjdGlvbjpOU0FjY2Vzc2liaWxpdHlTaG93TWVudUFjdGlvbl07CisgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBy
ZXNzKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOk5TQWNjZXNzaWJpbGl0eVByZXNzQWN0aW9uXTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2V0U2VsZWN0ZWRDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KSBjb25z
dAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGFycmF5ID0g
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OmVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCldOwor
ICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVNldFZhbHVlOmFycmF5IGZvckF0dHJpYnV0ZTpO
U0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TICAgIAorfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eVZhbHVlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhN
RTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpkb2N1bWVudEVuY29kaW5nKCkKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnVybCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgTlNVUkwgKnVybCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07CisgICAgcmV0dXJuIFtbdXJsIGFic29sdXRl
U3RyaW5nXSBjcmVhdGVKU1N0cmluZ1JlZl07ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICAKKyAgICByZXR1cm4gbmlsOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjaykK
K3sKKyAgICBpZiAoIWZ1bmN0aW9uQ2FsbGJhY2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAK
KyAgICAvLyBNYWMgcHJvZ3JhbW1lcnMgc2hvdWxkIG5vdCBiZSBhZGRpbmcgbW9yZSB0aGFuIG9u
ZSBub3RpZmljYXRpb24gbGlzdGVuZXIgcGVyIGVsZW1lbnQuCisgICAgLy8gT3RoZXIgcGxhdGZv
cm1zIG1heSBiZSBkaWZmZXJlbnQuCisgICAgaWYgKG1fbm90aWZpY2F0aW9uSGFuZGxlcikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IFtbQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgYWxsb2NdIGluaXRXaXRoUGxhdGZvcm1FbGVtZW50
OnBsYXRmb3JtVUlFbGVtZW50KCldOworICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc2V0Q2Fs
bGJhY2s6ZnVuY3Rpb25DYWxsYmFja107CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCit7Cisg
ICAgLy8gTWFjIHByb2dyYW1tZXJzIHNob3VsZCBub3QgYmUgdHJ5aW5nIHRvIHJlbW92ZSBhIGxp
c3RlbmVyIHRoYXQncyBhbHJlYWR5IHJlbW92ZWQuCisgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9u
SGFuZGxlcik7CisKKyAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHJlbGVhc2VdOworICAgIG1f
bm90aWZpY2F0aW9uSGFuZGxlciA9IG5pbDsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNWaXNpYmxlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT2ZmU2NyZWVuKCkg
Y29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ29sbGFwc2VkKCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCgpIGNvbnN0Cit7CisgICAgQk9PTCByZXN1bHQg
PSBOTzsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXN1bHQgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhh
c1BvcHVwKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2
YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhIYXNQb3B1
cCJdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAg
ICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0YWtlRm9jdXMoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlU2VsZWN0aW9uKCkKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9uKCkK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cmVtb3ZlU2VsZWN0aW9uKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisK
Ky8vIFRleHQgbWFya2VycworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVJRWxlbWVudCIgZm9yUGFyYW1ldGVy
OmVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSogcmFuZ2UpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNOdW1i
ZXIqIGxlbmd0aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihpZClyYW5nZS0+cGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgcmV0dXJuIFtsZW5ndGhWYWx1ZSBpbnRWYWx1
ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQor
CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJr
ZXIpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgcHJldmlvdXNNYXJr
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpj
cmVhdGUocHJldmlvdXNNYXJrZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAK
KyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIHRleHRNYXJrZXIpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
aWQgbmV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhOZXh0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpdGV4dE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcjo6Y3JlYXRlKG5leHRNYXJrZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBpZCB0ZXh0U3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihpZCltYXJr
ZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgcmV0dXJuIFt0ZXh0U3Ry
aW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAg
CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKiBlbmRNYXJrZXIpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNB
cnJheSogdGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1h
cmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1h
cmtlcigpLCBuaWxdOworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVbm9yZGVyZWRUZXh0
TWFya2VycyIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXJzXTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFu
Z2UpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdGV4dE1hcmtlciA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooaWQpcmFuZ2UtPnBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3Jl
YXRlKHRleHRNYXJrZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsgICAgCit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCit7CisgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCisgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJh
bWV0ZXI6KGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7ICAgIAorfQorCitQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyRm9yUG9pbnQoaW50IHgsIGludCB5KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYVGV4dE1hcmtlckZvclBvc2l0aW9uIiBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFs
dWVXaXRoUG9pbnQ6TlNNYWtlUG9pbnQoeCwgeSldXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIDA7ICAgIAorfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHVpRWxlbWVudCA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIiBmb3JQ
YXJhbWV0ZXI6KGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUodWlFbGVtZW50KTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7ICAKK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RSCisKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZp
c2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw1ICs2MCwx
MSBAQAogewogICAgIHJldHVybiBKU1N0cmluZ1JldGFpbih1cmwpOyAvLyBEbyBub3RoaW5nIG9u
IG1hYy4KIH0KKyAgICAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGxh
dGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibWFjIikpOwor
ICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgJKHJldmlzaW9uIDApCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2VfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlX2gKKwor
I2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmpl
Y3RSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
K3R5cGVkZWYgQ0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlOworI2Vsc2UKK3R5cGVk
ZWYgdm9pZCogUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U7CisjZW5kaWYKKworbmFtZXNwYWNlIFdU
UiB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIDogcHVibGljIEpT
V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlPiBjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IGNyZWF0ZShjb25z
dCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJik7CisgICAgCisgICAgfkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UoKTsKKyAgICAKKyAgICBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBw
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGNvbnN0OworICAgIHZpcnR1YWwgSlNDbGFzc1JlZiB3
cmFwcGVyQ2xhc3MoKTsKKyAgICAKKyAgICBzdGF0aWMgSlNPYmplY3RSZWYgbWFrZUpTQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZShKU0NvbnRleHRSZWYsIGNvbnN0IEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UmKTsKKyAgICBib29sIGlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSopOworICAgIAorcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKTsKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UmKTsKKyAgICAKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlPiBtX3Rl
eHRNYXJrZXJSYW5nZTsKKyNlbHNlCisgICAgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgbV90ZXh0
TWFya2VyUmFuZ2U7CisjZW5kaWYKK307CisgICAgCisjaWYgIVBMQVRGT1JNKE1BQykKK2lubGlu
ZSBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmlzRXF1YWwoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKyAgICAKK30gLy8g
bmFtZXNwYWNlIFdUUgorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZV9o
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI2lmbmRlZiBJbmplY3RlZEJ1bmRsZV9oCiAjZGVmaW5lIEluamVjdGVk
QnVuZGxlX2gKIAorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCkBAIC01Niw2ICs1Nyw3IEBACiAgICAg
R0NDb250cm9sbGVyKiBnY0NvbnRyb2xsZXIoKSB7IHJldHVybiBtX2djQ29udHJvbGxlci5nZXQo
KTsgfQogICAgIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIqIGV2ZW50U2VuZGluZ0NvbnRyb2xsZXIo
KSB7IHJldHVybiBtX2V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICBUZXh0SW5w
dXRDb250cm9sbGVyKiB0ZXh0SW5wdXRDb250cm9sbGVyKCkgeyByZXR1cm4gbV90ZXh0SW5wdXRD
b250cm9sbGVyLmdldCgpOyB9CisgICAgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKCkgeyByZXR1cm4gbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5nZXQo
KTsgfQogCiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlKiBwYWdlKCkgY29uc3Q7CiAgICAgc2l6ZV90
IHBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZXMuc2l6ZSgpOyB9CkBAIC0xMDUsNiAr
MTA3LDcgQEAKICAgICBXS0J1bmRsZVBhZ2VHcm91cFJlZiBtX3BhZ2VHcm91cDsKICAgICBWZWN0
b3I8T3duUHRyPEluamVjdGVkQnVuZGxlUGFnZT4gPiBtX3BhZ2VzOwogCisgICAgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyPiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOwogICAgIFJl
ZlB0cjxMYXlvdXRUZXN0Q29udHJvbGxlcj4gbV9sYXlvdXRUZXN0Q29udHJvbGxlcjsKICAgICBS
ZWZQdHI8R0NDb250cm9sbGVyPiBtX2djQ29udHJvbGxlcjsKICAgICBSZWZQdHI8RXZlbnRTZW5k
aW5nQ29udHJvbGxlcj4gbV9ldmVudFNlbmRpbmdDb250cm9sbGVyOwpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAkocmV2aXNpb24gOTkxMjgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE5MCw2ICsxOTAsOCBAQAogICAgIHZvaWQgY2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrKCk7CiAg
ICAgdm9pZCBjYWxsU2V0QmFja2luZ1NjYWxlRmFjdG9yQ2FsbGJhY2soKTsKIAorICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUoKTsKKyAgICAKIHByaXZhdGU6CiAgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckludGVydmFsOwogCklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisjaW5jbHVkZSAiSW5qZWN0
ZWRCdW5kbGVQYWdlLmgiCisjaW5jbHVkZSAiSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgor
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJL
aXQyL1dLQnVuZGxlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2UuaD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KKworbmFtZXNwYWNlIFdUUiB7CisK
K1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpOworfQorCitBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIoKQoreworfQorCitBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6fkFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKCkKK3sKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bWFr
ZVdpbmRvd09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgd2luZG93T2Jq
ZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgc2V0UHJvcGVydHkoY29udGV4dCwg
d2luZG93T2JqZWN0LCAiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIiLCB0aGlzLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCBleGNl
cHRpb24pOworfQorCitKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjp3cmFwcGVy
Q2xhc3MoKQoreworICAgIHJldHVybiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3Np
YmlsaXR5Q29udHJvbGxlckNsYXNzKCk7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50KCkKK3sKKyAgICBX
S0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBh
Z2UoKTsKKyAgICB2b2lkKiByb290ID0gV0tBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdChwYWdlKTsK
KyAgICAKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHN0YXRpY19j
YXN0PFBsYXRmb3JtVUlFbGVtZW50Pihyb290KSk7ICAgIAorfQorCitQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVu
dCgpCit7CisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkucGFnZSgpLT5wYWdlKCk7CisgICAgdm9pZCogcm9vdCA9IFdLQWNjZXNzaWJpbGl0eUZvY3Vz
ZWRPYmplY3QocGFnZSk7CisgICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNyZWF0ZShzdGF0aWNfY2FzdDxQbGF0Zm9ybVVJRWxlbWVudD4ocm9vdCkpOyAgICAKK30KKwor
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KQoreworICAgIFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiB1aUVsZW1lbnQgPSByb290RWxlbWVudCgpOworICAgIHJldHVybiB1aUVs
ZW1lbnQtPmVsZW1lbnRBdFBvaW50KHgsIHkpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV1RS
CisKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gOTkx
MjgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw2ICs2MiwxMCBAQAogbm9pbnN0X0xUTElCUkFSSUVTICs9IExpYnJhcmllcy9s
aWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUubGEKIAogd2Via2l0dGVzdHJ1bm5lcl9idWlsdF9z
b3VyY2VzICs9IFwKKwlEZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSW5qZWN0ZWRCdW5kbGUvSlNBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0luamVjdGVkQnVuZGxl
L0pTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0lu
amVjdGVkQnVuZGxlL0pTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL0luamVjdGVkQnVuZGxlL0pTRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL0luamVjdGVkQnVuZGxlL0pTR0NDb250cm9sbGVyLmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvSW5qZWN0ZWRCdW5kbGUvSlNMYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgXApAQCAtNzAs
NiArNzQsMTQgQEAKIEJVSUxUX1NPVVJDRVMgKz0gJCh3ZWJraXR0ZXN0cnVubmVyX2J1aWx0X3Nv
dXJjZXMpCiAKIExpYnJhcmllc19saWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfbGFfU09VUkNF
UyA9IFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBcCisJVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oIFwKKwlU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuY3BwIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBcCisJVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggXAogCVRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWN0aXZhdGVGb250cy5oIFwKIAlU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0pTV3JhcHBhYmxl
LmggXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvSlNX
cmFwcGVyLmNwcCBcCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9JbmplY3RlZEJ1
bmRsZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vSW5q
ZWN0ZWRCdW5kbGUudmNwcm9qCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvd2luL0luamVjdGVkQnVuZGxlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzk0LDYg
KzM5NCwyMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQmluZGluZ3NcQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRs
IgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURM
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
TUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxCaW5kaW5nc1xBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlci5pZGwiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVs
ZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZM
aXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8
VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVu
ZGxlXEJpbmRpbmdzXEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRsIgorCQkJCT4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01J
RExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJ
Lz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxCaW5kaW5nc1xBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmlkbCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVn
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQmluZGluZ3Nc
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgpAQCAtNjE4LDYgKzgyNiwzOCBAQAogCQkJTmFtZT0iRGVyaXZlZCBTb3VyY2VzIgogCQkJPgog
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFdmVu
dFNlbmRpbmdDb250cm9sbGVyLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC02NTEsNiArODkx
LDM4IEBACiAJCQk8L0ZpbGU+CiAJCTwvRmlsdGVyPgogCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRo
PSIuLlxJbmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAiCisJCQk+CisJ
CTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVs
YXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAi
CisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRC
dW5kbGVcQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8Rmls
ZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlLmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRo
PSIuLlxJbmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgiCisJCQk+
CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVc
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJ
CVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
IgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVk
QnVuZGxlXHdpblxBY3RpdmF0ZUZvbnRzLmNwcCIKIAkJCT4KIAkJPC9GaWxlPgpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gOTkxMjgp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDEwIEBACiAjCiAKIElOVEVSRkFDRVMgPSBcCisgICAgQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIgXAorICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIFwKKyAgICBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIFwKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IFwKICAgICBFdmVudFNlbmRpbmdDb250cm9sbGVyIFwKICAgICBHQ0NvbnRyb2xsZXIgXAogICAg
IExheW91dFRlc3RDb250cm9sbGVyIFwKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2Vi
S2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0
VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw2ICsyMywxNyBAQAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAkJMEY1MTY5
Q0IxNDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUxNjlDQTE0NDUyMjJEMDBFMEE5RDcg
LyogV2ViS2l0LmZyYW1ld29yayAqLzsgfTsKIAkJMEY1MTY5Q0MxNDQ1MjIyRDAwRTBBOUQ3IC8q
IFdlYktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjUxNjlDQTE0NDUyMjJEMDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayAq
LzsgfTsKKwkJMjkyMTBFQUUxNDRDQUNCNzAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjky
MTBFQTkxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICovOyB9
OworCQkyOTIxMEVCMDE0NENBQ0JEMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBF
QTIxNDRDQUFBNTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLzsgfTsK
KwkJMjkyMTBFQjQxNDRDQUNENTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUIx
MTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi87IH07CisJ
CTI5MjEwRUI1MTQ0Q0FDRDUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUIz
MTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSAqLzsgfTsK
KwkJMjkyMTBFREExNDRDQzNFQTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIxMEVB
QjE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLzsgfTsK
KwkJMjkyMTBFREIxNDRDRDQ3OTAwODM1QkI1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTgzOTEz
RDAxNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwICovOyB9
OworCQkyOTIxMEVFMTE0NENEQjI2MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEw
RURCMTQ2NzI3RTcxMTgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICovOyB9
OworCQkyOUE4RkNDQjE0NUVGMDJFMDA5MDQ1QTYgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIx
MEVFMTE0NENERTY3ODk4MTVFRTUgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi87
IH07CisJCTI5QThGQ0REMTQ1RjAzMzcwMDkwNDVBNiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjlBOEZDRTEzNDVFNzAyMTAwNkFBNUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZS5jcHAgKi87IH07CisJCTI5QThGQ0UyMTQ1RjAzN0IwMDkwNDVBNiAvKiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI5QThGQ0UxMTQ1RjAzN0IwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlLmNwcCAqLzsgfTsKKwkJMjlBOEZDRTUxNDVGMDQ2NDAwOTA0NUE2IC8qIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4RkNFNDE0NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbSAqLzsgfTsKIAkJNTMyMkZCNDMxM0ZEQTBDRDAw
NDFBQkNDIC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzIyRkI0MTEzRkRBMENEMDA0MUFCQ0MgLyogQ3lj
bGljUmVkdW5kYW5jeUNoZWNrLmNwcCAqLzsgfTsKIAkJNTMyMkZCNDYxM0ZEQTBFQTAwNDFBQkND
IC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTMyMkZCNDQxM0ZEQTBFQTAwNDFBQkNDIC8qIFBpeGVsRHVtcFN1cHBv
cnQuY3BwICovOyB9OwogCQk1NjQxRTJEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNUZXh0SW5wdXRD
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU2NDFFMkNFMTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3Bw
ICovOyB9OwpAQCAtODYsNiArOTcsMjcgQEAKIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBz
ZWN0aW9uICovCiAJCTBGNTE2OUNBMTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJhbWV3b3Jr
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBl
ci5mcmFtZXdvcms7IHBhdGggPSBXZWJLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQkyOTIxMEVBMjE0NENBQUE1MDA4MzVCQjUgLyogQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyOTIxMEVBMzE0NENBQUE1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQTgxNDRDQUI4ODAwODM1QkI1
IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTI5MjEwRUE5MTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVBQTE0NENBQ0IyMDA4
MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTI5MjEwRUFCMTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVCMTE0NENBQ0Q0MDA4
MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVCMjE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBF
QjMxNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJNYWMubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEwRURCMTQ2NzI3RTcxMTgzNUJCNSAvKiBKU0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMjkyMTBFREIxNDY3MjdFODExODM1QkI1IC8q
IEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTI5MjEwRURDMTQ0Q0Q1NkUwMDgzNUJCNSAvKiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFRTEx
NDRDREU2Nzg5ODE1RUU1IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5j
cHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQky
OTIxMEVFMTE0NUNERTY3ODk4MTVFRTUgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMjlB
OEZDQzUxNDVCOTNDNjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5QThGQ0QyMTQ1RUY4RjIwMDkwNDVBNiAvKiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlBOEZDREYxNDVGMDM1ODAw
OTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyOUE4RkNFMTE0NUYwMzdCMDA5MDQ1QTYgLyogQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMjlBOEZDRTEzNDVFNzAyMTAwNkFBNUE2IC8qIEpTQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkyOUE4RkNFMTM0NUU3MDIxMDA2
QUE1QTcgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMjlBOEZD
RTQxNDVGMDQ2NDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlTWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OEQ0NDIyMTMzNDZEMDAw
MDZBNzc3QiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMjMwRTE2MTM4Qzc4QkYwMEJDQ0ZDQSAvKiBsaWJXZWJDb3Jl
VGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0
U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDE4
MTczMUIxMzhBRDM5RDAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJDb3JlVGVzdFN1cHBvcnQuaDsgcGF0aCA9IFdlYkNv
cmVUZXN0U3VwcG9ydC9XZWJDb3JlVGVzdFN1cHBvcnQuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKQEAgLTEwMCw2ICsxMzIsOCBAQAogCQk1NjY0QTQ5OTE0MzI2Mzg0MDA4
ODgxQkUgLyogVGV4dElucHV0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZXh0SW5wdXRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU2NzBCODI2MTM4NkZDMTMwMDJFQjM1NSAvKiBFdmVudFNlbmRlclByb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50U2VuZGVyUHJveHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTY3MEI4MjcxMzg2RkNBNTAwMkVCMzU1IC8qIEV2ZW50U2Vu
ZGVyUHJveHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFdmVu
dFNlbmRlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1ODM5MTNEMDE0
MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNw
cDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTU4
MzkxM0QxMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
aDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk2NTEw
QTc3NzExRUM2NDM4MDA0MTA4NjcgLyogQUhFTV9fX18uVFRGICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9ICJBSEVNX19fXy5UVEYi
OyBwYXRoID0gImZvbnRzL0FIRU1fX19fLlRURiI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1MTBBNzc4MTFFQzY0MzgwMDQxMDg2NyAvKiBDb2xvckJpdHMudHRmICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IENvbG9y
Qml0cy50dGY7IHBhdGggPSBmb250cy9Db2xvckJpdHMudHRmOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTEwQTc3OTExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hl
cjEwMC50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBmaWxlOyBuYW1lID0gV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGY7IHBhdGggPSBmb250cy9X
ZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI0Nyw2ICsyODEsMjQgQEAKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CiAJCX07CisJCTI5QThGQ0UwMTQ1RjAzNUQwMDkwNDVBNiAvKiBBY2Nlc3NpYmls
aXR5ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkyOTIx
MEVBMjE0NENBQUE1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwICovLAor
CQkJCTI5MjEwRUEzMTQ0Q0FBQTUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5o
ICovLAorCQkJCTI5MjEwRUE5MTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmNwcCAqLywKKwkJCQkyOTIxMEVBQTE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oICovLAorCQkJCTI5MjEwRUFCMTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tICovLAorCQkJCTI5MjEwRUIxMTQ0Q0FDRDQwMDgzNUJCNSAv
KiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8sCisJCQkJMjkyMTBFQjIxNDRDQUNENDAw
ODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8sCisJCQkJMjkyMTBFQjMxNDRD
QUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tICovLAorCQkJCTI5
QThGQ0UxMTQ1RjAzN0IwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNw
cCAqLywKKwkJCQkyOUE4RkNERjE0NUYwMzU4MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZS5oICovLAorCQkJCTI5QThGQ0U0MTQ1RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBBY2Nlc3Np
YmlsaXR5OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNjVFQjg1OUUxMUVD
NjdDQzAwMzREMzAwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC0yNTksNiArMzExLDcgQEAKIAkJQkMxNEU0RTAxMjBFMDJGOTAwODI2QzBDIC8q
IENvbnRyb2xsZXJzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQkyOUE4RkNFMDE0NUYwMzVEMDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eSAqLywKIAkJCQlC
QzhGRDhDOTEyMEU1MjdGMDBGM0U3MUEgLyogRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgKi8s
CiAJCQkJQkM4RkQ4QzgxMjBFNTI3RjAwRjNFNzFBIC8qIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
aCAqLywKIAkJCQlCQzE0RTREOTEyMEUwMkQwMDA4MjZDMEMgLyogR0NDb250cm9sbGVyLmNwcCAq
LywKQEAgLTM0NSw2ICszOTgsMTAgQEAKIAkJCQlCQzk1MkMwRTExRjNCOTdCMDAzMzk4QjQgLyog
SlNXcmFwcGFibGUuaCAqLywKIAkJCQlCQzk1MkMwQzExRjNCOTY1MDAzMzk4QjQgLyogSlNXcmFw
cGVyLmNwcCAqLywKIAkJCQlCQzk1MkMwQjExRjNCOTY1MDAzMzk4QjQgLyogSlNXcmFwcGVyLmgg
Ki8sCisJCQkJMjkyMTBFQTgxNDRDQUI4ODAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmlkbCAqLywKKwkJCQkyOUE4RkNDNTE0NUI5M0M2MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaWRsICovLAorCQkJCTI5QThGQ0QyMTQ1RUY4RjIwMDkwNDVBNiAvKiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmlkbCAqLywKKwkJCQkyOTIxMEVEQzE0NENENTZFMDA4
MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwgKi8sCiAJCQkJQkM4RkQ4Q0IxMjBF
NTJCMDAwRjNFNzFBIC8qIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsICovLAogCQkJCUJDMTRF
NEUxMTIwRTAzMjAwMDgyNkMwQyAvKiBHQ0NvbnRyb2xsZXIuaWRsICovLAogCQkJCUJDOTUyRUQy
MTFGM0MyOUYwMDMzOThCNCAvKiBMYXlvdXRUZXN0Q29udHJvbGxlci5pZGwgKi8sCkBAIC0zNTYs
NiArNDEzLDE0IEBACiAJCUJDOTUyRDNBMTFGM0JGMUYwMDMzOThCNCAvKiBEZXJpdmVkIFNvdXJj
ZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTU4Mzkx
M0QwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLywK
KwkJCQk1ODM5MTNEMTE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5oICovLAorCQkJCTI5MjEwRUUxMTQ0Q0RFNjc4OTgxNUVFNSAvKiBKU0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyLmNwcCAqLywKKwkJCQkyOTIxMEVFMTE0NUNERTY3ODk4MTVFRTUgLyogSlNBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5oICovLAorCQkJCTI5QThGQ0UxMzQ1RTcwMjEwMDZBQTVBNiAv
KiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovLAorCQkJCTI5QThGQ0UxMzQ1
RTcwMjEwMDZBQTVBNyAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCAqLywKKwkJ
CQkyOTIxMEVEQjE0NjcyN0U3MTE4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNw
cCAqLywKKwkJCQkyOTIxMEVEQjE0NjcyN0U4MTE4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmggKi8sCiAJCQkJQkM4RkQ4RDAxMjBFNTQ1QjAwRjNFNzFBIC8qIEpTRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJQkM4RkQ4RDExMjBFNTQ1QjAwRjNFNzFBIC8qIEpT
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5oICovLAogCQkJCUJDMTRFNEU4MTIwRTAzRDgwMDgyNkMw
QyAvKiBKU0dDQ29udHJvbGxlci5jcHAgKi8sCkBAIC01MTYsNiArNTgxLDE3IEBACiAJCQkJQzBD
RTcyMEIxMjQ3QzkzMzAwQkMwRUM0IC8qIExheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTY2NEE0OUExNDMyNjM4NDAwODg4MUJFIC8qIFRleHRJbnB1dENvbnRy
b2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTY0MUUyRDAxNDMzNUU5NTAwODMwN0U1IC8q
IEpTVGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOTIxMEVBRTE0
NENBQ0I3MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkyOTIxMEVCMDE0NENBQ0JEMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFQjQxNDRDQUNENTAwODM1QkI1IC8qIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5MjEwRUI1MTQ0
Q0FDRDUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTI5MjEwRURBMTQ0Q0MzRUEwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFREIxNDRDRDQ3OTAwODM1QkI1IC8q
IEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBF
RTExNDRDREIyNjAwODM1QkI1IC8qIEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkyOUE4RkNDQjE0NUVGMDJFMDA5MDQ1QTYgLyogSlNBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOUE4RkNERDE0NUYwMzM3MDA5MDQ1
QTYgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTI5QThGQ0UyMTQ1RjAzN0IwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5QThGQ0U1MTQ1RjA0NjQwMDkwNDVBNiAvKiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCShyZXZpc2lvbiA5ODk3NykKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNzQxLDE1
ICs3NDEsOSBAQAogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tcGFkZGluZy13aXRoLW11bHRp
cGxlLWxpbmUtYm94ZXMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vc2hpZnQtY2xpY2suaHRtbAog
Ci0jIEltcGxlbWVudCBhY2Nlc2l0aWxpdHkgc3VwcG9ydCB0byBXZWJLaXQyCi1wbGF0Zm9ybS9n
dGsvYWNjZXNzaWJpbGl0eS9hcmlhLXJvbGVzLXVuaWdub3JlZC5odG1sCi1wbGF0Zm9ybS9ndGsv
YWNjZXNzaWJpbGl0eS9hcmlhLXNsaWRlci1yZXF1aXJlZC1hdHRyaWJ1dGVzLmh0bWwKLXBsYXRm
b3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtaGllcmFyY2h5Lmh0bWwKLXBsYXRmb3Jt
L2d0ay9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLXRleHQtZm9jdXMuaHRtbAotcGxhdGZv
cm0vZ3RrL2FjY2Vzc2liaWxpdHkvaW5wdXQtc2xpZGVyLmh0bWwKLXBsYXRmb3JtL2d0ay9hY2Nl
c3NpYmlsaXR5L2xpc3QtaXRlbXMtYWx3YXlzLWV4cG9zZWQuaHRtbAotcGxhdGZvcm0vZ3RrL2Fj
Y2Vzc2liaWxpdHkvb2JqZWN0LXdpdGgtdGl0bGUuaHRtbAotcGxhdGZvcm0vZ3RrL2FjY2Vzc2li
aWxpdHkvdGFibGUtaGllcmFyY2h5Lmh0bWwKKyMgSW1wbGVtZW50IGFjY2Vzc2liaWxpdHkgc3Vw
cG9ydCBmb3IgV2ViS2l0MgorYWNjZXNzaWJpbGl0eQorcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxp
dHkKIAogIyBJbXBsZW1lbnQgdGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSBpbnRlcmZhY2UKIGZhc3QvZm9ybXMvY3Vyc29yLWF0LWVkaXRhYmxlLWNvbnRlbnQt
Ym91bmRhcnkuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRy
ZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy5odG1sCShyZXZpc2lvbiA5ODk3NykKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1jaGlsZHJlbi13aGVuLWFy
aWEtcm9sZS1jaGFuZ2VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhcmVudCIpLmZvY3VzKCk7CiAgICAgICAg
IHZhciBwYXJlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKICAg
ICAgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZEF0SW5kZXgoMCkucm9sZSIsICInQVhSb2xlOiBB
WEJ1dHRvbiciKTsKLSAgICAgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZEF0SW5kZXgoMSkucm9s
ZSIsICInQVhSb2xlOiAnIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgicGFyZW50LmNoaWxkQXRJ
bmRleCgxKSA9PSBudWxsIHx8IHBhcmVudC5jaGlsZEF0SW5kZXgoMSkuaXNWYWxpZCA9PSBmYWxz
ZSIpOwogICAKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjEiKS5yZW1v
dmVBdHRyaWJ1dGUoInJvbGUiKTsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1
dHRvbjIiKS5zZXRBdHRyaWJ1dGUoInJvbGUiLCAiYnV0dG9uIik7CkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0Ym94LXJvbGUtcmVwb3J0cy1ub3RpZmlj
YXRpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvdGV4dGJveC1yb2xlLXJlcG9ydHMtbm90aWZpY2F0aW9ucy5odG1sCShyZXZpc2lv
biA5ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRi
b3gtcm9sZS1yZXBvcnRzLW5vdGlmaWNhdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIs
NiArMTIsNyBAQAogPGRpdiByb2xlPSJ0ZXh0Ym94IiBpZD0iYXJpYVRleHRCb3giIGFyaWEtbXVs
dGlsaW5lPSJmYWxzZSIgdGFiaW5kZXg9IjAiPlNvbWUgdGV4dCBpbiBhIHRleHRib3guPC9kaXY+
CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+CisgICAgdmFyIHRleHRib3hBeEVs
ZW1lbnQ7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKIApAQCAtMjAsNyArMjEsNyBAQAogCiAgICAgICAgIHZhciBh
cmlhVGV4dEJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcmlhVGV4dEJveCIpOwogICAg
ICAgICBhcmlhVGV4dEJveC5mb2N1cygpOwotICAgICAgICB2YXIgdGV4dGJveEF4RWxlbWVudCA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICB0ZXh0Ym94
QXhFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CiAgICAg
ICAgIHRleHRib3hBeEVsZW1lbnQuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIobG9nTm90aWZpY2F0
aW9uKTsKICAgICAgICAgcGVuZGluZ05vdGlmaWNhdGlvbnMgPSAzOwogICAgICAgICBhcmlhVGV4
dEJveC5maXJzdENoaWxkLmRlbGV0ZURhdGEoMCwgNSk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rpb24tZWxlbWVudHMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0
bWwtc2VjdGlvbi1lbGVtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9uLWVsZW1lbnRz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAsOSArMjAsNyBAQAogUEFTUyBib2R5
LmNoaWxkQXRJbmRleCg0KS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTGFuZG1hcmtOYXZpZ2F0
aW9uJwogUEFTUyBib2R5LmNoaWxkQXRJbmRleCg1KS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFY
TGFuZG1hcmtDb21wbGVtZW50YXJ5JwogUEFTUyBib2R5LmNoaWxkQXRJbmRleCg2KS5jaGlsZEF0
SW5kZXgoMCkuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiAnCi1QQVNTIGJvZHkuY2hpbGRBdEluZGV4
KDYpLmNoaWxkQXRJbmRleCgxKS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6ICcKIFBBU1MgYm9keS5j
aGlsZEF0SW5kZXgoNykuY2hpbGRBdEluZGV4KDApLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogJwot
UEFTUyBib2R5LmNoaWxkQXRJbmRleCg3KS5jaGlsZEF0SW5kZXgoMSkuc3Vicm9sZSBpcyAnQVhT
dWJyb2xlOiAnCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExF
VEUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1j
aGlsZHJlbi13aGVuLWFyaWEtcm9sZS1jaGFuZ2VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRyZW4t
d2hlbi1hcmlhLXJvbGUtY2hhbmdlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk4OTc3KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdXBkYXRlLWNoaWxkcmVuLXdo
ZW4tYXJpYS1yb2xlLWNoYW5nZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcg
KzUsNyBAQAogCiAKIFBBU1MgcGFyZW50LmNoaWxkQXRJbmRleCgwKS5yb2xlIGlzICdBWFJvbGU6
IEFYQnV0dG9uJwotUEFTUyBwYXJlbnQuY2hpbGRBdEluZGV4KDEpLnJvbGUgaXMgJ0FYUm9sZTog
JworUEFTUyBwYXJlbnQuY2hpbGRBdEluZGV4KDEpID09IG51bGwgfHwgcGFyZW50LmNoaWxkQXRJ
bmRleCgxKS5pc1ZhbGlkID09IGZhbHNlIGlzIHRydWUKIFBBU1MgcGFyZW50LmNoaWxkQXRJbmRl
eCgwKS5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKIFBBU1MgcGFyZW50LmNoaWxkQXRJ
bmRleCgxKS5yb2xlIGlzICdBWFJvbGU6IEFYQnV0dG9uJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
c2VhcmNoLXByZWRpY2F0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1wcmVkaWNhdGUuaHRtbAkocmV2aXNpb24gOTg5Nzcp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGlj
YXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4LDcgQEAKIDxpbnB1dCB0eXBlPSJj
aGVja2JveCIgdmFsdWU9IkNoZWNrYm94IiAvPiBjaGVja2JveDxiciAvPgogPGlucHV0IHR5cGU9
InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgLz4KIDwvZm9ybT4KLTxpbWcgaWQ9ImltYWdlIiBzcmM9
InJlc291cmNlcy9jYWtlLnBuZyIgLz4KKzxpbWcgaWQ9ImltYWdlIiBzcmM9InJlc291cmNlcy9j
YWtlLnBuZyIgYWx0PSJUZXN0Ij4KIDxoMT5maXJzdCBoZWFkaW5nIGxldmVsIDE8L2gxPgogPGgx
PnNlY29uZCBoZWFkaW5nIGxldmVsIDE8L2gxPgogPGgyPmhlYWRpbmcgbGV2ZWwgMjwvaDI+CkBA
IC01MiwxNCArNTIsMTMgQEAKICAgICAgICAgdmFyIHN0YXJ0RWxlbWVudDsKICAgICAgICAgdmFy
IGlzRGlyZWN0aW9uTmV4dDsKICAgICAgICAgdmFyIHNlYXJjaEtleTsKLSAgICAgICAgdmFyIHNl
YXJjaFRleHQ7CisgICAgICAgIHZhciBzZWFyY2hUZXh0ID0gIiI7CiAgICAgICAgIHZhciByZXN1
bHRFbGVtZW50OwogICAgICAgICAKICAgICAgICAgLy8gQW55IGVsZW1lbnQuCiAgICAgICAgIHN0
YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2Vh
cmNoS2V5ID0gIkFYQW55VHlwZVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxs
OwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JT
ZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwg
c2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FY
Um9sZTogQVhTdGF0aWNUZXh0JyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5z
dHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpAQCAt
NjgsNyArNjcsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9u
TmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEJsb2NrcXVvdGVTYW1lTGV2ZWxT
ZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxl
bWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0
RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CiAg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1
ZSIsICInQVhWYWx1ZTogc2Vjb25kIGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKQEAgLTc3LDcgKzc1
LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0
cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhCbG9ja3F1b3RlU2VhcmNoS2V5IjsKLSAgICAg
ICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJF
bGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0
aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgi
cmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNl
Y29uZCBibG9ja3F1b3RlIGxldmVsIDEnIik7CkBAIC04Niw3ICs4Myw2IEBACiAgICAgICAgIHN0
YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2Vh
cmNoS2V5ID0gIkFYQm9sZEZvbnRTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVs
bDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9y
U2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXks
IHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidB
WFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Fucy1zZXJpZiBibGFjayBib2xk
IHRleHQgd2l0aCB1bmRlcmxpbmUnIik7CkBAIC05NSw3ICs5MSw2IEBACiAgICAgICAgIHN0YXJ0
RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJ
bmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNo
S2V5ID0gIkFYQnV0dG9uU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAg
ICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJj
aFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFy
Y2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xl
OiBBWEJ1dHRvbiciKTsKICAgICAgICAgCkBAIC0xMDMsNyArOTgsNiBAQAogICAgICAgICBzdGFy
dEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0
SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJj
aEtleSA9ICJBWENoZWNrQm94U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7
CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNl
YXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBz
ZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhS
b2xlOiBBWENoZWNrQm94JyIpOwogICAgICAgICAKQEAgLTExMSw3ICsxMDUsNiBAQAogICAgICAg
ICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5j
aGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAg
IHNlYXJjaEtleSA9ICJBWENoZWNrQm94U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9
IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNo
S2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIs
ICInQVhSb2xlOiBBWENoZWNrQm94JyIpOwogICAgICAgICAKQEAgLTExOSw3ICsxMTIsNiBAQAog
ICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAg
ICAgICAgIHNlYXJjaEtleSA9ICJBWERpZmZlcmVudFR5cGVTZWFyY2hLZXkiOwotICAgICAgICBz
ZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1l
bnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25O
ZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxl
bWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKICAgICAgICAgc2hvdWxkQmUo
InJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGJsb2NrcXVvdGUg
bGV2ZWwgMSciKTsKQEAgLTEyOCw3ICsxMjAsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMik7CiAg
ICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEZv
bnRDaGFuZ2VTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAg
cmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGlj
YXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQp
OwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3Jv
dXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5z
dHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2VyaWYgYmx1ZSBpdGFsaWMgdGV4dCciKTsKQEAgLTEz
Nyw3ICsxMjgsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMik7CiAgICAgICAgIGlzRGlyZWN0aW9u
TmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEZvbnRDb2xvckNoYW5nZVNlYXJj
aEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50
ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVt
ZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNo
b3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwg
IidBWFZhbHVlOiBzZXJpZiBibHVlIGl0YWxpYyB0ZXh0JyIpOwpAQCAtMTQ5LDcgKzEzOSw2IEBA
CiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsK
ICAgICAgICAgc2VhcmNoS2V5ID0gIkFYR3JhcGhpY1NlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJj
aFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51
aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQs
IHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50
LnJvbGUiLCAiJ0FYUm9sZTogQVhJbWFnZSciKTsKICAgICAgICAgCkBAIC0xNTcsNyArMTQ2LDYg
QEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNl
ZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVl
OwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5IjsKLSAgICAg
ICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJF
bGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0
aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTog
Zmlyc3QgaGVhZGluZyBsZXZlbCAxJyIpOwpAQCAtMTY2LDcgKzE1NCw2IEBACiAgICAgICAgIHN0
YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2Vh
cmNoS2V5ID0gIkFYSGVhZGluZ0xldmVsMlNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQg
PSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJj
aEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUi
LCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVu
dC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwg
MiciKTsKQEAgLTE3NSw3ICsxNjIsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAg
IGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdM
ZXZlbDNTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVz
dWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRl
KHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwog
ICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGlu
ZyciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0
cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDMnIik7CkBAIC0xODQsNyArMTcw
LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0
cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5IjsKLSAg
ICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWlu
ZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGly
ZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJl
c3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1
ZTogaGVhZGluZyBsZXZlbCA0JyIpOwpAQCAtMTkzLDcgKzE3OCw2IEBACiAgICAgICAgIHN0YXJ0
RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJ
bmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNo
S2V5ID0gIkFYSGVhZGluZ0xldmVsNVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBu
dWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtl
eSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAi
J0FYUm9sZTogQVhIZWFkaW5nJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5j
aGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgNSci
KTsKQEAgLTIwMiw3ICsxODYsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlz
RGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZl
bDZTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0
RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0
YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAg
ICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyci
KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmlu
Z1ZhbHVlIiwgIidBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDYnIik7CkBAIC0yMTEsNyArMTk0LDYg
QEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNl
ZEVsZW1lbnQuY2hpbGRBdEluZGV4KDYpOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVl
OwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5IjsKLSAg
ICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWlu
ZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGly
ZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJl
c3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1
ZTogc2Vjb25kIGhlYWRpbmcgbGV2ZWwgMSciKTsKQEAgLTIyMCw3ICsyMDIsNiBAQAogICAgICAg
ICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5j
aGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAg
IHNlYXJjaEtleSA9ICJBWEhlYWRpbmdTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0g
bnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50
Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hL
ZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwg
IidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCBoZWFkaW5nIGxl
dmVsIDEnIik7CkBAIC0yMjksNyArMjEwLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAg
ICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhJdGFs
aWNGb250U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJl
c3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0
ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3Vw
JyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3Ry
aW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnIik7CkBAIC0yMzgs
NyArMjE4LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5l
eHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhMYW5kbWFya1NlYXJjaEtleSI7Ci0g
ICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFp
bmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0Rp
cmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWExhbmRtYXJrQmFubmVy
JyIpOwpAQCAtMjQ3LDcgKzIyNiw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAg
aXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYTGlua1NlYXJj
aEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50
ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVt
ZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNo
b3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhMaW5rJyIpOwogICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAi
J0FYVmFsdWU6IGxpbmsnIik7CkBAIC0yNTYsNyArMjM0LDYgQEAKICAgICAgICAgc3RhcnRFbGVt
ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkg
PSAiQVhMaXN0U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAg
IHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRp
Y2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0
KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWExp
c3QnIik7CiAgICAgICAgIApAQCAtMjY0LDcgKzI0MSw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0g
IkFYTGl2ZVJlZ2lvblNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAg
ICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQ
cmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNo
VGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTog
QVhHcm91cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nQXR0cmli
dXRlVmFsdWUoJ0FYQVJJQUxpdmUnKSIsICIncG9saXRlJyIpOwpAQCAtMjc2LDcgKzI1Miw2IEBA
CiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsK
ICAgICAgICAgc2VhcmNoS2V5ID0gIkFYUGxhaW5UZXh0U2VhcmNoS2V5IjsKLSAgICAgICAgc2Vh
cmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50
LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4
dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1l
bnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CiAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCBibG9ja3F1b3RlIGxl
dmVsIDEnIik7CkBAIC0yODUsNyArMjYwLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAg
ICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhSYWRp
b0dyb3VwU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJl
c3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0
ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFJhZGlv
R3JvdXAnIik7CiAgICAgICAgIApAQCAtMjkzLDcgKzI2Nyw2IEBACiAgICAgICAgIHN0YXJ0RWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5
ID0gIkFYU2FtZVR5cGVTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAg
ICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNo
UHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJj
aFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6
IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Vjb25kIGJsb2NrcXVvdGUgbGV2ZWwgMSci
KTsKQEAgLTMwMiw3ICsyNzUsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlz
RGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFN0YXRpY1RleHRT
ZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxl
bWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0
RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCci
KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFs
dWU6IGZpcnN0IGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKQEAgLTMxMSw3ICsyODMsNiBAQAogICAg
ICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dC5jaGlsZEF0SW5kZXgoMik7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAg
ICAgIHNlYXJjaEtleSA9ICJBWFN0eWxlQ2hhbmdlU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNo
VGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVp
RWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwg
c2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
cm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxl
bWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlcmlmIGJsdWUg
aXRhbGljIHRleHQnIik7CkBAIC0zMjAsNyArMjkxLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDE4
KTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0g
IkFYVGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsK
ICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNl
YXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJv
bGU6IEFYVGFibGUnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJ
bmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidB
WFZhbHVlOiBzZWNvbmQgdGFibGUgaGVhZGluZyBsZXZlbCAxJyIpOwpAQCAtMzI5LDcgKzI5OSw2
IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1
ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYVGFibGVTZWFyY2hLZXkiOwotICAgICAgICBzZWFy
Y2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQu
dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0
LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVu
dC5yb2xlIiwgIidBWFJvbGU6IEFYVGFibGUnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLnN0
cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCB0YWJsZSBoZWFkaW5nIGxldmVsIDEnIik7CkBA
IC0zMzgsNyArMzA3LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVj
dGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhUZXh0RmllbGRTZWFyY2hL
ZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9
IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVu
dCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYVGV4dEZpZWxkJyIpOwogICAg
ICAgICAKQEAgLTM0Niw3ICszMTQsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAg
IGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFVuZGVybGlu
ZVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRF
bGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3Rh
cnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIiwgIidBWFZhbHVlOiBzYW5zLXNlcmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVuZGVybGlu
ZSciKTsKQEAgLTM1NSw3ICszMjIsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAg
IGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFVudmlzaXRl
ZExpbmtTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVz
dWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRl
KHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwog
ICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYTGluayci
KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmlu
Z1ZhbHVlIiwgIidBWFZhbHVlOiBsaW5rJyIpOwpAQCAtMzY2LDcgKzMzMiw3IEBACiAgICAgICAg
IC8vIFByZXZpb3VzIHRleHQgc2VhcmNoLgogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMTApOwogICAgICAg
ICBpc0RpcmVjdGlvbk5leHQgPSBmYWxzZTsKLSAgICAgICAgc2VhcmNoS2V5ID0gbnVsbDsKKyAg
ICAgICAgc2VhcmNoS2V5ID0gIiI7CiAgICAgICAgIHNlYXJjaFRleHQgPSAic2Fucy1zZXJpZiBi
bGFjayBib2xkIHRleHQgd2l0aCB1bmRlcmxpbmUiOwogICAgICAgICByZXN1bHRFbGVtZW50ID0g
Y29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50
LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOwpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9uLWVs
ZW1lbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvaHRtbC1zZWN0aW9uLWVsZW1lbnRzLmh0bWwJKHJldmlzaW9uIDk4OTc3KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9uLWVsZW1l
bnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDExICs0Niw5IEBACiAKICAgICAgICAgICAv
LyBXaGVuIGEgaGVhZGVyIGFuZCBmb290ZXIgYXJlIGluc2lkZSBhbiBhcnRpY2xlLCB0aGV5IHNo
b3VsZCBub3QgYmUgbGFuZG1hcmtzLgogICAgICAgICAgIHNob3VsZEJlKCJib2R5LmNoaWxkQXRJ
bmRleCg2KS5jaGlsZEF0SW5kZXgoMCkuc3Vicm9sZSIsICInQVhTdWJyb2xlOiAnIik7Ci0gICAg
ICAgICAgc2hvdWxkQmUoImJvZHkuY2hpbGRBdEluZGV4KDYpLmNoaWxkQXRJbmRleCgxKS5zdWJy
b2xlIiwgIidBWFN1YnJvbGU6ICciKTsKIAogICAgICAgICAgIC8vIFdoZW4gYSBoZWFkZXIgYW5k
IGZvb3RlciBhcmUgaW5zaWRlIGEgc2VjdGlvbiwgdGhleSBzaG91bGQgbm90IGJlIGxhbmRtYXJr
cy4KICAgICAgICAgICBzaG91bGRCZSgiYm9keS5jaGlsZEF0SW5kZXgoNykuY2hpbGRBdEluZGV4
KDApLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogJyIpOwotICAgICAgICAgIHNob3VsZEJlKCJib2R5
LmNoaWxkQXRJbmRleCg3KS5jaGlsZEF0SW5kZXgoMSkuc3Vicm9sZSIsICInQVhTdWJyb2xlOiAn
Iik7CiAgICAgfQogCiAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi13azIvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4td2syL1NraXBwZWQJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luLXdrMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYs
OSBAQAogIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogIwogCi0jIFdlYktpdDIgbmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3Np
YmlsaXR5Ci0jIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxMzA+
Ci0jIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5LXJlbGF0
ZWQgRFJUIEFQSXMKLSMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MjEzMT4KKyMgV2luZG93cyBkb2VzIG5vdCBzdXBwb3J0IFdlYktpdDIgYWNjZXNzaWJpbGl0eS4K
KyMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTI5Nj4KK2FjY2Vz
c2liaWxpdHkKIHBsYXRmb3JtL3dpbi9hY2Nlc3NpYmlsaXR5CiAKICMgV2ViS2l0VGVzdFJ1bm5l
ciBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wSWNv
bkNoYW5nZXMKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCShyZXZpc2lvbiA5ODk3NykK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCwxMiArMzgsMTEgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
ICMjIyBTVEFSVCBPRiAoMSkgQ2xhc3NpZmllZCBmYWlsdXJlcyB3aXRoIGJ1ZyByZXBvcnRzCiAK
LSMgV2ViS2l0MiBuZWVkcyB0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHkKLSMgPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjEzMD4KLSMgV2ViS2l0VGVzdFJ1bm5lciBu
ZWVkcyB0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHktcmVsYXRlZCBEUlQgQVBJcwotIyA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMxPgotYWNjZXNzaWJpbGl0eQot
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkKKyMgQVggdGVzdHMgdGhhdCByZXF1aXJlIGhpdCB0
ZXN0aW5nIGRvIG5vdCB3b3JrIGluIFdLMi4KKyMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTI5OD4KK3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWwtc2xp
ZGVyLWluZGljYXRvci5odG1sCitwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9saXN0Ym94LWhp
dC10ZXN0Lmh0bWwKK3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS13aXRoLXRpdGxl
LWNvcnJlY3QtaGllcmFyY2h5Lmh0bWwKIAogIyBTb21lIGNvbXBvc2l0aW5nIHRlc3RzIGZsYWtl
eQogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MzU0PgpJbmRl
eDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxh
YmVsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5
ODk3NykKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92ZXJy
aWRlcy1sYWJlbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiAK
IAogUEFTUyB0ZXh0LmRlc2NyaXB0aW9uIGlzICdBWERlc2NyaXB0aW9uOiBTaHV0IGRvd24gY29t
cHV0ZXIgYWZ0ZXIgMTAgbWludXRlcycKLVBBU1MgdGV4dC50aXRsZVVJRWxlbWVudCgpLmlzVmFs
aWQgaXMgZmFsc2UKK1BBU1MgdGV4dC50aXRsZVVJRWxlbWVudCgpICE9IG51bGwgJiYgdGV4dC50
aXRsZVVJRWxlbWVudCgpLmlzVmFsaWQgaXMgZmFsc2UKIFBBU1MgbGFiZWxFbGVtZW50LnJvbGUg
aXMgJ0FYUm9sZTogQVhTdGF0aWNUZXh0JwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS1vdmVy
cmlkZXMtbGFiZWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwuaHRtbAkocmV2aXNpb24gOTg5NzcpCisr
KyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFi
ZWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogICAgICAgICAgIHNob3Vs
ZEJlKCJ0ZXh0LmRlc2NyaXB0aW9uIiwgIidBWERlc2NyaXB0aW9uOiBTaHV0IGRvd24gY29tcHV0
ZXIgYWZ0ZXIgMTAgbWludXRlcyciKTsKIAogICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBiZSBu
byB0aXRsZSBVSSBlbGVtZW50LgotICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRpdGxlVUlFbGVt
ZW50KCkuaXNWYWxpZCIsICJmYWxzZSIpOworICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRpdGxl
VUlFbGVtZW50KCkgIT0gbnVsbCAmJiB0ZXh0LnRpdGxlVUlFbGVtZW50KCkuaXNWYWxpZCIsICJm
YWxzZSIpOwogICAgICAgICAgIAogICAgICAgICAgIC8vIFRoZSBsYWJlbCBlbGVtZW50IGlzIGlu
IGEgZ3JvdXAsIGluIGEgZ3JvdXAsIGluIHRoZSB3ZWIgYXJlYS4KICAgICAgICAgICB2YXIgbGFi
ZWxFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApOwpJ
bmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90aC1hcy10aXRsZS11aS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGgtYXMtdGl0bGUtdWkuaHRtbAko
cmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RoLWFzLXRpdGxl
LXVpLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDcgQEAKICAgICAgICAgICAgIGJv
ZHkuZm9jdXMoKTsKICAgICAgICAgICAgIHZhciBncm91cCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgxKTsKICAgICAgICAgICAgIHZhciBncm91
cDIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgo
Myk7Ci0KLSAgICAgICAgICAgIGlmIChncm91cC50aXRsZVVJRWxlbWVudCgpLmFsbEF0dHJpYnV0
ZXMoKSAhPSAiIiAmJiBncm91cDIudGl0bGVVSUVsZW1lbnQoKS5hbGxBdHRyaWJ1dGVzKCkgPT0g
IiIpCisgICAgICAgICAgICBpZiAoZ3JvdXAudGl0bGVVSUVsZW1lbnQoKS5hbGxBdHRyaWJ1dGVz
KCkgIT0gIiIgJiYgKGdyb3VwMi50aXRsZVVJRWxlbWVudCgpID09IG51bGwgfHwgZ3JvdXAyLnRp
dGxlVUlFbGVtZW50KCkuYWxsQXR0cmlidXRlcygpID09ICIiKSkgCiAgICAgICAgICAgICAgICAg
cmVzdWx0LmlubmVyVGV4dCArPSAiUGFzcyI7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiRmFpbCI7CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L25vbi1kYXRhLXRhYmxlLWNlbGwtdGl0bGUtdWktZWxlbWVudC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbm9uLWRhdGEtdGFibGUtY2VsbC10
aXRsZS11aS1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9ub24tZGF0YS10YWJsZS1jZWxsLXRpdGxlLXVpLWVsZW1lbnQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsOSBAQAogICAgICAgICAgICAgLy8gZ2V0IHRoZSA8dGg+
c2tpcDwvdGg+IGVsZW1lbnQKICAgICAgICAgICAgIHZhciBncm91cCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCg1KTsKICAgICAgICAgICAgIHZh
ciB0aXRsZVVJID0gZ3JvdXAudGl0bGVVSUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHZhciBhbGxB
dHRyaWJ1dGVzID0gdGl0bGVVSS5hbGxBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICB2YXIgYWxs
QXR0cmlidXRlcyA9ICIiOworICAgICAgICAgICAgaWYgKHRpdGxlVUkpCisgICAgICAgICAgICAg
ICAgYWxsQXR0cmlidXRlcyA9IHRpdGxlVUkuYWxsQXR0cmlidXRlcygpOwogCiAgICAgICAgICAg
ICAvLyB2ZXJpZnkgaXQgaGFzIG5vIHRpdGxlIHVpIGVsZW1lbnQgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKCFhbGxBdHRyaWJ1dGVzKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTEyOCkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisy
MDExLTExLTAyICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHktcmVsYXRl
ZCBEUlQgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDIxMzEKKworICAgICAgICBDbGVhbnVwIHRlc3RzIGFuZCBza2lwIGxpc3RzIHNvIHRoYXQg
YWNjZXNzaWJpbGl0eSB0ZXN0cyBjYW4gcnVuCisgICAgICAgIGluIFdLMi4gVGhpcyBtb3N0bHkg
aW52b2x2ZWQgaGFuZGxpbmcgcmV0dXJuZWQgZWxlbWVudHMgdGhhdCBtaWdodCBiZSBuaWwsCisg
ICAgICAgIHNvbWV0aGluZyB0aGF0IGRpZCBub3QgaGFwcGVuIGluIERSVC4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJp
YS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLmh0bWw6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9ub24tZGF0YS10YWJsZS1jZWxsLXRpdGxlLXVpLWVsZW1lbnQuaHRt
bDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RoLWFzLXRpdGxlLXVpLmh0bWw6CisgICAgICAg
ICAgICAgTWFrZSBzdXJlIGEgbmlsIHRpdGxlVUlFbGVtZW50IGlzIGFjY291bnRlZCBmb3IgaW4g
dGhlc2UgdGVzdHMuCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50cy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0
aW9uLWVsZW1lbnRzLmh0bWw6CisgICAgICAgICAgICAgUmVtb3ZlIG5pbCBlbGVtZW50IGFjY2Vz
cyB0aGF0IGlzIHVubmVjZXNzYXJ5LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L3NlYXJjaC1wcmVkaWNhdGUuaHRtbDoKKyAgICAgICAgICAgICBBZGQgYW4gYWx0IHRhZyB0
byA8aW1nPiBzbyB0aGF0IGl0IGFsd2F5cyBzaG93cyB1cCBpbiB0aGUgQVggdHJlZS4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0Ym94LXJvbGUtcmVwb3J0cy1ub3Rp
ZmljYXRpb25zLmh0bWw6CisgICAgICAgICAgICAgUmVtb3ZlIHRoZSBub3RpZmljYXRpb24gbGlz
dGVuZXIgcHJvcGVybHkgKHdhcyBjYXVzaW5nIGZsYWtpbmVzcykuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5n
ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Vw
ZGF0ZS1jaGlsZHJlbi13aGVuLWFyaWEtcm9sZS1jaGFuZ2VzLmh0bWw6CisgICAgICAgICAgICAg
QWNjb3VudCBmb3Igd2hlbiBlbGVtZW50J3MgcmV0dXJuZWQgYXJlIG5pbC4KKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4td2syL1NraXBwZWQ6CisgICAgICAgICAgICAgU2tpcCBhbGwgYWNjZXNzaWJp
bGl0eSB0ZXN0cyBvbiB3aW4uCisgICAgICAgICogcGxhdGZvcm0vd2syL1NraXBwZWQ6CisgICAg
ICAgICAgICAgU2tpcCBhbGwgYWNjZXNzaWJpbGl0eSB0ZXN0cyBvbiBndGsuCisKIDIwMTEtMTEt
MDIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
IChyOTg3NTktcjk4NzczKTogcGxhdGZvcm0vbWFjL2ZvbnRzL2NvbG9yLWJpdG1hcC5odG1sIGZh
aWxpbmcgb24gTGlvbiBJbnRlbCBEZWJ1ZyAoVGVzdHMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113497</attachid>
            <date>2011-11-03 08:40:00 -0700</date>
            <delta_ts>2011-11-03 09:50:27 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>181071</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA5OTEyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDcgQEAKIF9f
Wk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTEwcm9vdE9iamVjdEV2CiBfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUxOHJvb3RPYmplY3RGb3JGcmFtZUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3Jl
MTNBWE9iamVjdENhY2hlMjFnQWNjZXNzaWJpbGl0eUVuYWJsZWRFCitfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUyM2ZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlRVBLTlNfNFBhZ2VFCiBfX1pON1dl
YkNvcmUxM0FYT2JqZWN0Q2FjaGU0MmdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNl
RW5hYmxlZEUKIF9fWk43V2ViQ29yZTEzSFRUUEhlYWRlck1hcEMxRXYKIF9fWk43V2ViQ29yZTEz
SFRUUEhlYWRlck1hcEQxRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MTI4KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTEtMTEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1yZWxhdGVk
IERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MjEzMQorCisgICAgICAgIE1pbm9yIGNoYW5nZXMgbmVlZGVkIHRvIHN1cHBvcnQgQVggdGVz
dGluZyBpbiBXS1Rlc3RSdW5uZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgICAgICBFeHBvc2UgZm9j
dXNlZFVJRWxlbWVudEZvclBhZ2Ugc28gdGhhdCB0aGUgV0syIGluamVjdGVkIGJ1bmRsZSBjYW4g
cmV0cmlldmUgaXQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKToKKyAgICAgICAgICAgIFJlbW92ZSBhbiB1bm5jZXNzYXJ5IGFzc2VydCB0aGF0IHdhcyBj
YXVzaW5nIGlzc3VlcyB3aXRoIHRoZSBXSzIgdGVzdCBydW4uCisKIDIwMTEtMTEtMDIgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSB1c2FnZSBvZiBT
dHJpbmdJbXBsIHdpdGggU3RyaW5nIHdoZXJlIHBvc3NpYmxlIGluIENoYXJhY3RlckRhdGEgYW5k
IFRleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lvbiA5
OTEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OTUsNyArNDk1LDggQEAKIAog
c3RhdGljIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgp
KTsKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQW55VHlwZVNlYXJj
aEtleTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCog
c2VhcmNoS2V5TWFwID0gY3JlYXRlQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCgpOwogICAgIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgJKHJldmlzaW9uIDk5
MTI4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDkgQEAKIFdL
X0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNvbmZpcm1Db21wb3NpdGlvbihXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VDb25maXJtQ29tcG9zaXRpb25X
aXRoVGV4dChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGV4dCk7CiAKK1dLX0VY
UE9SVCB2b2lkKiBXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KFdLQnVuZGxlUGFnZVJlZik7CitX
S19FWFBPUlQgdm9pZCogV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdChXS0J1bmRsZVBhZ2VS
ZWYpOyAgICAKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDk5MTI4KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNywxMSBAQAogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUg
IldlYlVSTFJlcXVlc3QuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvQWNjZXNzaWJpbGl0eU9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMTI2LDYgKzEzMCw0NiBA
QAogICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPm1haW5XZWJGcmFtZSgpKTsKIH0K
IAordm9pZCogV0tBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZikKK3sKKyAgICBpZiAoIXBhZ2VSZWYpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFdl
YkNvcmU6OlBhZ2UqIHBhZ2UgPSB0b0ltcGwocGFnZVJlZiktPmNvcmVQYWdlKCk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBXZWJDb3JlOjpGcmFtZSogY29y
ZSA9IHBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghY29yZSB8fCAhY29yZS0+ZG9jdW1lbnQo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOworCisgICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dCogcm9vdCA9IGNvcmUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgp
OworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIHJv
b3QtPndyYXBwZXIoKTsKK30KKwordm9pZCogV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICBpZiAoIXBhZ2VSZWYpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSB0b0ltcGwocGFnZVJlZikt
PmNvcmVQYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKKworICAgIFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKKyAgICBpZiAoIWZvY3VzZWRP
YmplY3QpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBmb2N1c2VkT2JqZWN0
LT53cmFwcGVyKCk7Cit9CisKIHZvaWQgV0tCdW5kbGVQYWdlU3RvcExvYWRpbmcoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zdG9wTG9hZGluZygpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gOTkxMjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMS0wMiAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIg
bmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgRFJUIEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMxCisKKyAgICAgICAg
QWxsb3cgdGhlIGluamVjdGVkIGJ1bmRsZSB0byByZXRyaWV2ZSB0aGUgZm9jdXNlZCBhbmQgcm9v
dCBhY2Nlc3NpYmlsaXR5CisgICAgICAgIG9iamVjdHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0
KToKKyAgICAgICAgKFdLQWNjZXNzaWJpbGl0eUZvY3VzZWRPYmplY3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oOgorCiAy
MDExLTExLTAyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgRGUtdmlydHVhbGl6ZSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcwpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
OTkxMjgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMzEg
QEAKKzIwMTEtMTEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1y
ZWxhdGVkIERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjEzMQorCisgICAgICAgIFBvcnQgdGhlIEFYIGNvZGUgaW4gRFJUIHRvIFdLVGVz
dFJ1bm5lciBieSB1c2luZyBJREwuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0Rlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6fkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
Om1ha2VXaW5kb3dPYmplY3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6d3JhcHBlckNsYXNzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OnJvb3RFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZv
Y3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmVs
ZW1lbnRBdFBvaW50KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6bG9nRm9jdXNFdmVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6bG9nVmFsdWVDaGFuZ2VFdmVudHMpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cyk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25M
aXN0ZW5lcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpub3RpZmlj
YXRpb25SZWNlaXZlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpy
ZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcDogQWRkZWQuCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6fkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OndyYXBwZXJDbGFzcyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlci5oOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OnBsYXRmb3JtVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OndyYXBwZXJDbGFzcyk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
Lmg6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpw
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmlzRXF1
YWwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3
cmFwcGVyQ2xhc3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Zh
bGlkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWspOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5k
ZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Ny
b2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxT
Y3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFs
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdl
Rm9yRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRN
YXJrZXJSYW5nZUxlbmd0aCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlckZvclBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGxhdGZvcm1VSUVsZW1lbnQp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbDog
QWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmlkbDogQWRkZWQuCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmlkbDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGU6OmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2xlYXJXaW5kb3dGb3JGcmFtZSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW06IEFkZGVkLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbCk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1h
Yy5tbTogQWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6
OmlzRXF1YWwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06IEFkZGVkLgorICAgICAgICAoK1tOU1N0cmlu
ZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAgICgtW05TU3RyaW5nIGNyZWF0ZUpT
U3RyaW5nUmVmXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
IGluaXRXaXRoUGxhdGZvcm1FbGVtZW50Ol0pOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyIF9ub3RpZmljYXRpb25SZWNlaXZlZDpdKToKKyAgICAgICAgKC1bQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgc2V0Q2FsbGJhY2s6XSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCk6CisgICAgICAgIChXVFI6OmRlc2NyaXB0aW9uT2ZWYWx1ZSk6CisgICAgICAgIChXVFI6OmF0
dHJpYnV0ZXNPZkVsZW1lbnQpOgorICAgICAgICAoV1RSOjpjb25jYXRlbmF0ZUF0dHJpYnV0ZUFu
ZFZhbHVlKToKKyAgICAgICAgKFdUUjo6Y29udmVydE5TQXJyYXlUb1ZlY3Rvcik6CisgICAgICAg
IChXVFI6OmRlc2NyaXB0aW9uT2ZFbGVtZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtzKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJl
bkNvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRS
b3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVV
SUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRF
bGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2Vk
QnlSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZMaW5rZWRVSUVsZW1lbnRzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNldHRhYmxlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmli
dXRlTmFtZXMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbik6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGFuZ3VhZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpoZWxwVGV4dCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoZWlnaHQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjbGlja1BvaW50WCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNsaWNrUG9pbnRZKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50
VmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbik6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3VwcG9y
dGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFibGVkKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzcGVhayk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFJc0dyYWJiZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhRHJvcEVmZmVjdHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpsaW5lRm9ySW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
YW5nZUZvckxpbmUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3Vu
ZHNGb3JSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmlu
Z0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmli
dXRlZFN0cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVy
cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJv
d0hlYWRlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZDb2x1bW5zKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mUm93cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZlZpc2libGVDZWxscyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJvd0NvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y29sdW1uQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
bmRleEluVGFibGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJ
bmRleFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1u
SW5kZXhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxG
b3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
b3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aW5jcmVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZGVjcmVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2hvd01lbnUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcyk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFs
dWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29k
aW5nKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxp
c3RlbmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2Fi
bGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJs
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT2ZmU2NyZWVuKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1cCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphZGRTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpyZW1vdmVTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludCk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcik6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybU5hbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybU5hbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdU
Ujo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vSW5qZWN0ZWRCdW5kbGUudmNwcm9qOgorCiAy
MDExLTExLTAyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjk4NzU5LXI5ODc3Myk6IHBsYXRmb3JtL21hYy9mb250cy9jb2xvci1iaXRtYXAu
aHRtbCBmYWlsaW5nIG9uIExpb24gSW50ZWwgRGVidWcgKFRlc3RzKQpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaCIKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV1RSIHsKKyAgICAKK1Bhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVh
dGUoUGxhdGZvcm1UZXh0TWFya2VyIG1hcmtlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG1hcmtlcikpOworfQorCitQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKGNvbnN0
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihtYXJrZXIpKTsKK30KKworQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlciBt
YXJrZXIpCisgICAgOiBtX3RleHRNYXJrZXIobWFya2VyKQoreworfQorCitBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoY29uc3QgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXImIG1hcmtlcikKKyAgICA6IG1fdGV4dE1hcmtlcihtYXJrZXIucGxhdGZvcm1UZXh0
TWFya2VyKCkpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIoKQoreworfQorCitQbGF0Zm9ybVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6OnBsYXRmb3JtVGV4dE1hcmtlcigpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIHJldHVybiBtX3RleHRNYXJrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBtX3Rl
eHRNYXJrZXI7CisjZW5kaWYKK30KKyAgICAKK0pTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OndyYXBwZXJDbGFzcygpCit7CisgICAgcmV0dXJuIEpTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OmFjY2Vzc2liaWxpdHlUZXh0TWFya2VyQ2xhc3MoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RSCisKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkpTQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRy
Lmg+CisKK25hbWVzcGFjZSBXVFIgeworCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShQbGF0Zm9ybVVJRWxlbWVudCB1aUVs
ZW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KHVpRWxlbWVudCkpOworfQorICAgIAorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCYgdWlFbGVtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCh1aUVsZW1lbnQpKTsKK30KKworSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp3cmFwcGVyQ2xhc3MoKQoreworICAgIHJldHVybiBKU0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFjY2Vzc2liaWxpdHlVSUVsZW1lbnRDbGFzcygpOworfQorICAgIAorLy8gSW1wbGVt
ZW50YXRpb24KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1ZhbGlkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9lbGVtZW50OyAgICAgICAgICAgIAorfQorICAgIAorLy8gVW5zdXBw
b3J0ZWQgbWV0aG9kcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4KKyNpZiAhUExBVEZPUk0oTUFDKQor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrKCkg
eyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnJhbmdlRm9yTGluZShpbnQgbGluZSkgeyByZXR1cm4gMDsgfQordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQq
KSBjb25zdCB7IH0KK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hp
bGRyZW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgo
dW5zaWduZWQpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9sbGJhcigpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiAw
OyB9CisKKy8vIFRleHQgbWFya2VyIHN1cHBvcnQgKG9ubHkgc3VwcG9ydGVkIG9uIHRoZSBNYWMg
cmlnaHQgbm93KQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQqKSB7IHJldHVybiAwOyB9CitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJl
dHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIDA7IH0KK1Bh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKikgeyByZXR1cm4gMDsgfQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4gMDsgfQorUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJl
dHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGludCB5KSB7IHJldHVybiAw
OyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJl
dHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsg
cmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSopIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKFdJTikKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBvdGhl
ckVsZW1lbnQpCit7CisgICAgcmV0dXJuIHBsYXRmb3JtVUlFbGVtZW50KCkgPT0gb3RoZXJFbGVt
ZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdU
UgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCShyZXZpc2lvbiAwKQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdUUiB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciA6IHB1Ymxp
YyBKU1dyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI+IGNyZWF0ZSgpOworICAgIH5BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigp
OworCisgICAgdm9pZCBtYWtlV2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYg
d2luZG93T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOworICAgIHZpcnR1YWwgSlNDbGFz
c1JlZiB3cmFwcGVyQ2xhc3MoKTsKKyAgICAKKyAgICAvLyBDb250cm9sbGVyIE1ldGhvZHMgLSBw
bGF0Zm9ybS1pbmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMKKyAgICBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IHJvb3RFbGVtZW50KCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBmb2N1c2VkRWxlbWVudCgpOworICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KTsKKworICAgIC8v
IEhlcmUgZm9yIGNvbnNpc3RlbmN5IHdpdGggRFJULiBOb3QgaW1wbGVtZW50ZWQgYmVjYXVzZSB0
aGV5IGRvbid0IGRvIGFueXRoaW5nIG9uIHRoZSBNYWMuCisgICAgdm9pZCBsb2dGb2N1c0V2ZW50
cygpIHsgfQorICAgIHZvaWQgbG9nVmFsdWVDaGFuZ2VFdmVudHMoKSB7IH0KKyAgICB2b2lkIGxv
Z1Njcm9sbGluZ1N0YXJ0RXZlbnRzKCkgeyB9CisgICAgdm9pZCBsb2dBY2Nlc3NpYmlsaXR5RXZl
bnRzKCkgeyB9CisgICAgdm9pZCBhZGROb3RpZmljYXRpb25MaXN0ZW5lcihBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KiwgSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKSB7IH0KKyAgICB2b2lkIG5v
dGlmaWNhdGlvblJlY2VpdmVkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBKU1N0cmluZ1JlZiBl
dmVudE5hbWUpIHsgfQorICAgIAorICAgIHZvaWQgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpIHsg
fQorCitwcml2YXRlOgorICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVFIKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyX2gKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcl9oCisj
ZGVmaW5lIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyX2gKKworI2luY2x1ZGUgIkpTV3JhcHBhYmxl
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgQ0ZUeXBlUmVmIFBs
YXRmb3JtVGV4dE1hcmtlcjsKKyNlbHNlCit0eXBlZGVmIHZvaWQqIFBsYXRmb3JtVGV4dE1hcmtl
cjsKKyNlbmRpZgorCituYW1lc3BhY2UgV1RSIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgOiBwdWJsaWMgSlNXcmFwcGFi
bGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2VyKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyJik7CisKKyAgICB+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKTsKKyAgICAKKyAgICBQbGF0
Zm9ybVRleHRNYXJrZXIgcGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3Q7CisgICAgdmlydHVhbCBK
U0NsYXNzUmVmIHdyYXBwZXJDbGFzcygpOworCisgICAgc3RhdGljIEpTT2JqZWN0UmVmIG1ha2VK
U0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyKEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXImKTsKKyAgICBib29sIGlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoUGxhdGZvcm1U
ZXh0TWFya2VyKTsKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihjb25zdCBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciYpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxQbGF0
Zm9ybVRleHRNYXJrZXI+IG1fdGV4dE1hcmtlcjsKKyNlbHNlCisgICAgUGxhdGZvcm1UZXh0TWFy
a2VyIG1fdGV4dE1hcmtlcjsKKyNlbmRpZgorfTsKKworI2lmICFQTEFURk9STShNQUMpCitpbmxp
bmUgYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciopIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RS
CisgICAgCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJfaApJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDEyIEBACiAgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0NoYXIqPihw
YXRoLmNvbnN0RGF0YSgpKSwgcGF0aC5sZW5ndGgoKSk7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygicXQiKSk7CisgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV1RSCiAKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlclF0Lm1vYyIK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAwKQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudF9oCisj
ZGVmaW5lIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRfaAorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgi
CisjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
T2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBQ
TEFURk9STShNQUMpCisjaWZkZWYgX19PQkpDX18KK3R5cGVkZWYgaWQgUGxhdGZvcm1VSUVsZW1l
bnQ7CisjZWxzZQordHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QqIFBsYXRmb3JtVUlFbGVtZW50
OworI2VuZGlmCisjZWxpZiBQTEFURk9STShXSU4pCisjdW5kZWYgX1dJTlNPQ0tBUElfCisjZGVm
aW5lIF9XSU5TT0NLQVBJXyAvLyBQcmV2ZW50IGluY2x1c2lvbiBvZiB3aW5zb2NrLmggaW4gd2lu
ZG93cy5oCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgorI2luY2x1ZGUgPG9sZWFjYy5o
PgorCit0eXBlZGVmIENPTVB0cjxJQWNjZXNzaWJsZT4gUGxhdGZvcm1VSUVsZW1lbnQ7CisjZWxp
ZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8YXRrL2F0ay5oPgordHlwZWRlZiBBdGtPYmplY3Qq
IFBsYXRmb3JtVUlFbGVtZW50OworI2Vsc2UKK3R5cGVkZWYgdm9pZCogUGxhdGZvcm1VSUVsZW1l
bnQ7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpZmRlZiBfX09CSkNfXwordHlwZWRl
ZiBpZCBOb3RpZmljYXRpb25IYW5kbGVyOworI2Vsc2UKK3R5cGVkZWYgc3RydWN0IG9iamNfb2Jq
ZWN0KiBOb3RpZmljYXRpb25IYW5kbGVyOworI2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIFdU
UiB7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgOiBwdWJsaWMgSlNXcmFwcGFibGUg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IGNyZWF0ZShQbGF0Zm9ybVVJRWxlbWVudCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsK
KworICAgIH5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCk7CisKKyAgICBQbGF0Zm9ybVVJRWxlbWVu
dCBwbGF0Zm9ybVVJRWxlbWVudCgpIHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIHZpcnR1YWwg
SlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKTsKKworICAgIHN0YXRpYyBKU09iamVjdFJlZiBtYWtl
SlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCYpOworCisgICAgYm9vbCBpc0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQq
IG90aGVyRWxlbWVudCk7CisgICAgCisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBlbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpOworICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gY2hpbGRBdEluZGV4KHVuc2lnbmVkKTsKKyAgICB1bnNpZ25lZCBp
bmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopOworICAgIGludCBjaGlsZHJlbkNv
dW50KCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB0aXRsZVVJRWxl
bWVudCgpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gcGFyZW50RWxl
bWVudCgpOworCisgICAgdm9pZCB0YWtlRm9jdXMoKTsKKyAgICB2b2lkIHRha2VTZWxlY3Rpb24o
KTsKKyAgICB2b2lkIGFkZFNlbGVjdGlvbigpOworICAgIHZvaWQgcmVtb3ZlU2VsZWN0aW9uKCk7
CisKKyAgICAvLyBNZXRob2RzIC0gcGxhdGZvcm0taW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25z
CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFsbEF0dHJpYnV0ZXMoKTsKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cygpOworICAg
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gbGlua2VkVUlFbGVtZW50QXRJbmRl
eCh1bnNpZ25lZCk7CisgICAgCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0
ZXNPZkRvY3VtZW50TGlua3MoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmli
dXRlc09mQ2hpbGRyZW4oKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGFyYW1ldGVy
aXplZEF0dHJpYnV0ZU5hbWVzKCk7CisgICAgdm9pZCBpbmNyZW1lbnQoKTsKKyAgICB2b2lkIGRl
Y3JlbWVudCgpOworICAgIHZvaWQgc2hvd01lbnUoKTsKKyAgICB2b2lkIHByZXNzKCk7CisKKyAg
ICAvLyBBdHRyaWJ1dGVzIC0gcGxhdGZvcm0taW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCisg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmVmIGF0dHJpYnV0ZSk7CisgICAgZG91YmxlIG51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmVmIGF0dHJpYnV0ZSk7CisgICAgYm9vbCBib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYg
YXR0cmlidXRlKTsKKyAgICBib29sIGlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSk7CisgICAgYm9vbCBpc0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmIGF0dHJp
YnV0ZSk7CisgICAgYm9vbCBpc0FjdGlvblN1cHBvcnRlZChKU1N0cmluZ1JlZiBhY3Rpb24pOwor
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByb2xlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IHN1YnJvbGUoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcm9sZURl
c2NyaXB0aW9uKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRpdGxlKCk7CisgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGRlc2NyaXB0aW9uKCk7CisgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IGxhbmd1YWdlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0
cmluZ1ZhbHVlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFjY2Vzc2liaWxpdHlW
YWx1ZSgpIGNvbnN0OworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBoZWxwVGV4dCgpIGNv
bnN0OworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBvcmllbnRhdGlvbigpIGNvbnN0Owor
ICAgIGRvdWJsZSB4KCk7CisgICAgZG91YmxlIHkoKTsKKyAgICBkb3VibGUgd2lkdGgoKTsKKyAg
ICBkb3VibGUgaGVpZ2h0KCk7CisgICAgZG91YmxlIGludFZhbHVlKCkgY29uc3Q7CisgICAgZG91
YmxlIG1pblZhbHVlKCk7CisgICAgZG91YmxlIG1heFZhbHVlKCk7CisgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IHZhbHVlRGVzY3JpcHRpb24oKTsKKyAgICBpbnQgaW5zZXJ0aW9uUG9pbnRM
aW5lTnVtYmVyKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNlbGVjdGVkVGV4dFJh
bmdlKCk7CisgICAgYm9vbCBpc0VuYWJsZWQoKTsKKyAgICBib29sIGlzUmVxdWlyZWQoKSBjb25z
dDsKKyAgICAKKyAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0OworICAgIGJvb2wgaXNGb2N1c2Fi
bGUoKSBjb25zdDsKKyAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25zdDsKKyAgICBib29sIGlzU2Vs
ZWN0YWJsZSgpIGNvbnN0OworICAgIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFNlbGVjdGVkQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopIGNvbnN0Owor
ICAgIHVuc2lnbmVkIHNlbGVjdGVkQ2hpbGRyZW5Db3VudCgpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gc2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQp
IGNvbnN0OworICAgIAorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworICAgIGJvb2wgaXNFeHBh
bmRlZCgpIGNvbnN0OworICAgIGJvb2wgaXNDaGVja2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc1Zp
c2libGUoKSBjb25zdDsKKyAgICBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Q7CisgICAgYm9vbCBp
c0NvbGxhcHNlZCgpIGNvbnN0OworICAgIGJvb2wgaXNJZ25vcmVkKCkgY29uc3Q7CisgICAgYm9v
bCBoYXNQb3B1cCgpIGNvbnN0OworICAgIGludCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0Owor
ICAgIGRvdWJsZSBjbGlja1BvaW50WCgpOworICAgIGRvdWJsZSBjbGlja1BvaW50WSgpOworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBkb2N1bWVudEVuY29kaW5nKCk7CisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IGRvY3VtZW50VVJJKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHVybCgpOworCisgICAgLy8gQ1NTMy1zcGVlY2ggcHJvcGVydGllcy4KKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gc3BlYWsoKTsKKyAgICAKKyAgICAvLyBUYWJsZS1zcGVjaWZp
YyBhdHRyaWJ1dGVzCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkNv
bHVtbkhlYWRlcnMoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09m
Um93SGVhZGVycygpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZD
b2x1bW5zKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZlJvd3Mo
KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mVmlzaWJsZUNlbGxz
KCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkhlYWRlcigpOwor
ICAgIGludCBpbmRleEluVGFibGUoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcm93
SW5kZXhSYW5nZSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb2x1bW5JbmRleFJh
bmdlKCk7CisgICAgaW50IHJvd0NvdW50KCk7CisgICAgaW50IGNvbHVtbkNvdW50KCk7CisgICAg
CisgICAgLy8gVHJlZS9PdXRsaW5lIHNwZWNpZmljIGF0dHJpYnV0ZXMKKyAgICBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCk7Cisg
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBkaXNjbG9zZWRCeVJvdygpOwor
ICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZGlzY2xvc2VkUm93QXRJbmRl
eCh1bnNpZ25lZCk7CisKKyAgICAvLyBBUklBIHNwZWNpZmljCisgICAgUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkKTsKKyAg
ICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFyaWFGbG93VG9FbGVtZW50QXRJ
bmRleCh1bnNpZ25lZCk7CisKKyAgICAvLyBBUklBIERyYWcgYW5kIERyb3AKKyAgICBib29sIGFy
aWFJc0dyYWJiZWQoKSBjb25zdDsKKyAgICAvLyBBIHNwYWNlIGNvbmNhdGVudGF0ZWQgc3RyaW5n
IG9mIGFsbCB0aGUgZHJvcCBlZmZlY3RzLgorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBh
cmlhRHJvcEVmZmVjdHMoKSBjb25zdDsKKyAgICAKKyAgICAvLyBQYXJhbWV0ZXJpemVkIGF0dHJp
YnV0ZXMKKyAgICBpbnQgbGluZUZvckluZGV4KGludCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHJhbmdlRm9yTGluZShpbnQpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBi
b3VuZHNGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2
b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdGb3JSYW5nZSh1bnNpZ25l
ZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIGJvb2wgYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKHVuc2ln
bmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gdWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpTU3RyaW5nUmVm
IHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCk7CisgICAgCisgICAgLy8gVGFibGUt
c3BlY2lmaWMKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGNlbGxGb3JD
b2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOworCisgICAgLy8gU2Ny
b2xsYXJlYS1zcGVjaWZpYworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
aG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdDsKKworICAgIC8vIFRleHQgbWFy
a2Vycy4KKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRN
YXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopOyAgICAKKyAgICBQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogZW5kTWFya2VyKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyPiBzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSopOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IGVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSopOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHRleHRN
YXJrZXJGb3JQb2ludChpbnQgeCwgaW50IHkpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IHByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciop
OworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IG5leHRUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBhY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKKyAgICBpbnQgdGV4
dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKKyAgICAK
KyAgICAvLyBOb3RpZmljYXRpb25zCisgICAgLy8gRnVuY3Rpb24gY2FsbGJhY2sgc2hvdWxkIHRh
a2Ugb25lIGFyZ3VtZW50LCB0aGUgbmFtZSBvZiB0aGUgbm90aWZpY2F0aW9uLgorICAgIGJvb2wg
YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKKyAg
ICAvLyBNYWtlIHN1cmUgeW91IGNhbGwgcmVtb3ZlLCBiZWNhdXNlIHlvdSBjYW4ndCByZWx5IG9u
IG9iamVjdHMgYmVpbmcgZGVhbGxvY2F0ZWQgaW4gYSB0aW1lbHkgZmFzaGlvbi4KKyAgICBib29s
IHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgCitwcml2YXRlOgorICAgIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOworICAgIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOworCisgICAgdm9pZCBnZXRM
aW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYp
OworICAgIHZvaWQgZ2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+ID4mKTsKKyAgICB2b2lkIGdldENoaWxkcmVuKFZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gPiYpOworICAgIHZvaWQgZ2V0Q2hpbGRyZW5XaXRoUmFuZ2UoVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiwgdW5zaWduZWQgbG9jYXRpb24s
IHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICBQbGF0Zm9ybVVJRWxlbWVudCBtX2VsZW1lbnQ7Cisg
ICAgCisgICAgLy8gQSByZXRhaW5lZCwgcGxhdGZvcm0gc3BlY2lmaWMgb2JqZWN0IHVzZWQgdG8g
aGVscCBtYW5hZ2Ugbm90aWZpY2F0aW9ucyBmb3IgdGhpcyBvYmplY3QuCisjaWYgUExBVEZPUk0o
TUFDKQorICAgIE5vdGlmaWNhdGlvbkhhbmRsZXIgbV9ub3RpZmljYXRpb25IYW5kbGVyOworI2Vu
ZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXVFIKKyAgICAKKyNlbmRpZiAvLyBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50X2gKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAJKHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw0ICs2NSwxMCBAQAogICAgIHJldHVybiB1cmw7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiZ3RrIikpOworICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIuaCIKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbmNsdWRlICJK
U0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXVFIgeworICAgIAorUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjpjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgbWFya2VyUmFuZ2UpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSk7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UmIG1hcmtlclJhbmdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkpOworfQorCitBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKFBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlIG1hcmtlclJhbmdlKQorICAgIDogbV90ZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSYgbWFy
a2VyUmFuZ2UpCisgICAgOiBtX3RleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZS5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpKQoreworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgpCit7Cit9CisKK1BsYXRmb3JtVGV4dE1hcmtl
clJhbmdlIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0dXJuIG1fdGV4dE1hcmtl
clJhbmdlLmdldCgpOworI2Vsc2UKKyAgICByZXR1cm4gbV90ZXh0TWFya2VyUmFuZ2U7CisjZW5k
aWYKK30KKyAgICAKK0pTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6d3Jh
cHBlckNsYXNzKCkKK3sKKyAgICByZXR1cm4gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjphY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlQ2xhc3MoKTsKK30KKyAgICAKK30gLy8gbmFt
ZXNwYWNlIFdUUgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNCArNjQsMTAgQEAKICAgICByZXR1cm4gSlNTdHJpbmdSZXRhaW4odXJsKTsgLy8gVE9ETy4K
IH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0
Zm9ybU5hbWUoKQoreworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUo
QWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ3aW4iKSk7CisgICAgcmV0dXJu
IHBsYXRmb3JtTmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbAkocmV2aXNpb24gMCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworbW9kdWxlIFdUUiB7CisKKyAgICBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBy
b290RWxlbWVudDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQgZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxl
bWVudEF0UG9pbnQoaW4gaW50IHgsIGluIGludCB5KTsKKyAgICAgICAgCisgICAgICAgIHZvaWQg
YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50
LCBpbiBvYmplY3QgZnVuY3Rpb25DYWxsYmFjayk7CisgICAgICAgIHZvaWQgbm90aWZpY2F0aW9u
UmVjZWl2ZWQoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50LCBpbiBET01TdHJpbmcg
ZXZlbnROYW1lKTsKKworICAgICAgICB2b2lkIGxvZ0ZvY3VzRXZlbnRzKCk7CisgICAgICAgIHZv
aWQgbG9nVmFsdWVDaGFuZ2VFdmVudHMoKTsKKyAgICAgICAgdm9pZCBsb2dTY3JvbGxpbmdTdGFy
dEV2ZW50cygpOworICAgICAgICB2b2lkIGxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKTsKKyAgICAg
ICAgdm9pZCByZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CisgICAgfTsKKworfQpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRs
CShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmlkbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBXVFIgeworCisgICAgaW50ZXJmYWNl
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgeworICAgICAgICBib29sZWFuIGlzRXF1YWwo
aW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBvdGhlck1hcmtlclJhbmdlKTsKKyAgICB9
OworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5pZGwJKHJldmlzaW9uIDApCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K21vZHVsZSBXVFIgeworCisgICAgaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHsK
KyAgICAgICAgYm9vbGVhbiBpc0VxdWFsKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIG90aGVy
TWFya2VyKTsKKyAgICB9OworCit9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5pZGwJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBXVFIgewor
CisgICAgaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgeworICAgICAgICBib29sZWFu
IGlzRXF1YWwoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBvdGhlckVsZW1lbnQpOworCisgICAg
ICAgIC8vIEVsZW1lbnQgYWNjZXNzLgorICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVs
ZW1lbnRBdFBvaW50KGluIGludCB4LCBpbiBpbnQgeSk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgY2hpbGRBdEluZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICB1
bnNpZ25lZCBsb25nIGluZGV4T2ZDaGlsZChpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGNoaWxk
KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBsaW5rZWRVSUVsZW1lbnRBdEluZGV4
KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IHNlbGVjdGVkQ2hpbGRBdEluZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICB2
b2lkIHNldFNlbGVjdGVkQ2hpbGQoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50KTsK
KyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB0aXRsZVVJRWxlbWVudCgpOworICAgICAg
ICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgCisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcm9sZTsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBzdWJyb2xlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHJvbGVEZXNjcmlwdGlvbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyB0aXRsZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBkZXNj
cmlwdGlvbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBoZWxwVGV4dDsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZURlc2NyaXB0aW9uOworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVybDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBzcGVhazsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBvcmllbnRhdGlvbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBpbnNlcnRpb25Q
b2ludExpbmVOdW1iZXI7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc2Vs
ZWN0ZWRUZXh0UmFuZ2U7CisgICAgCisgICAgICAgIERPTVN0cmluZyBzdHJpbmdBdHRyaWJ1dGVW
YWx1ZShpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGRvdWJsZSBudW1iZXJBdHRyaWJ1dGVW
YWx1ZShpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGJvb2xlYW4gYm9vbEF0dHJpYnV0ZVZh
bHVlKGluIERPTVN0cmluZyBhdHRyKTsKKyAgICAgICAgYm9vbGVhbiBpc0F0dHJpYnV0ZVN1cHBv
cnRlZChpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGJvb2xlYW4gaXNBdHRyaWJ1dGVTZXR0
YWJsZShpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGJvb2xlYW4gaXNBY3Rpb25TdXBwb3J0
ZWQoaW4gRE9NU3RyaW5nIGF0dHIpOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgc3RyaW5nVmFsdWU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgaW50VmFs
dWU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgbWluVmFsdWU7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBpbnQgbWF4VmFsdWU7CisgICAgICAgIAorICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0VuYWJsZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIGlzUmVxdWlyZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IGlzRm9jdXNlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNTZWxlY3Rl
ZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNNdWx0aVNlbGVjdGFibGU7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRXhwYW5kZWQ7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzQ2hlY2tlZDsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gaXNWaXNpYmxlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBpc0NvbGxhcHNlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
aGFzUG9wdXA7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzSWdub3JlZDsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNPZmZTY3JlZW47CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVmFsaWQ7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBpbnQgaGllcmFyY2hpY2FsTGV2ZWw7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIGFyaWFJc0dyYWJiZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgYXJpYURyb3BFZmZlY3RzOworICAgICAgICAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGludCB4OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IHk7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBpbnQgd2lkdGg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBp
bnQgaGVpZ2h0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IGNsaWNrUG9pbnRYOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IGNsaWNrUG9pbnRZOworCisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBpbnQgY2hpbGRyZW5Db3VudDsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGludCBzZWxlY3RlZENoaWxkcmVuQ291bnQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBpbnQgcm93Q291bnQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgY29sdW1u
Q291bnQ7CisKKyAgICAgICAgLy8gQWN0aW9ucy4KKyAgICAgICAgdm9pZCBpbmNyZW1lbnQoKTsK
KyAgICAgICAgdm9pZCBkZWNyZW1lbnQoKTsKKyAgICAgICAgdm9pZCBwcmVzcygpOworICAgICAg
ICB2b2lkIHNob3dNZW51KCk7CisKKyAgICAgICAgLy8gQXR0cmlidXRlIGluZm8uCisgICAgICAg
IERPTVN0cmluZyBhbGxBdHRyaWJ1dGVzKCk7CisgICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVz
T2ZDaGlsZHJlbigpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mTGlua2VkVUlFbGVt
ZW50cygpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcygpOwor
ICAgICAgICAKKyAgICAgICAgLy8gVGFibGUgaW5mby4KKyAgICAgICAgRE9NU3RyaW5nIGF0dHJp
YnV0ZXNPZkNvbHVtbkhlYWRlcnMoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZlJv
d0hlYWRlcnMoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZkNvbHVtbnMoKTsKKyAg
ICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZlJvd3MoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0
dHJpYnV0ZXNPZlZpc2libGVDZWxscygpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09m
SGVhZGVyKCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgY2VsbEZvckNvbHVtbkFu
ZFJvdyhpbiB1bnNpZ25lZCBsb25nIGNvbHVtbiwgaW4gdW5zaWduZWQgbG9uZyByb3cpOworICAg
ICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHNlbGVjdGVkUm93QXRJbmRleChpbiB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBkaXNjbG9zZWRC
eVJvdygpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGRpc2Nsb3NlZFJvd0F0SW5k
ZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIGludCBpbmRleEluVGFibGUoKTsK
KyAgICAgICAgRE9NU3RyaW5nIHJvd0luZGV4UmFuZ2UoKTsKKyAgICAgICAgRE9NU3RyaW5nIGNv
bHVtbkluZGV4UmFuZ2UoKTsKKyAgICAgICAgaW50IHJvd0NvdW50KCk7CisgICAgICAgIGludCBj
b2x1bW5Db3VudCgpOworICAgIAorICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGFyaWFP
d25zRWxlbWVudEF0SW5kZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQgYXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KGluIHVuc2lnbmVkIGxv
bmcgaW5kZXgpOworCisgICAgICAgIC8vIFBhcmFtYXRlcml6ZWQgYXR0cmlidXRlcy4KKyAgICAg
ICAgRE9NU3RyaW5nIHBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcygpOworICAgICAgICBpbnQg
bGluZUZvckluZGV4KGluIGludCBpbmRleCk7CisgICAgICAgIERPTVN0cmluZyByYW5nZUZvckxp
bmUoaW4gaW50IGluZGV4KTsKKyAgICAgICAgRE9NU3RyaW5nIGJvdW5kc0ZvclJhbmdlKGluIHVu
c2lnbmVkIGxvbmcgbG9jYXRpb24sIGluIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKKyAgICAgICAg
RE9NU3RyaW5nIHN0cmluZ0ZvclJhbmdlKGluIHVuc2lnbmVkIGxvbmcgbG9jYXRpb24sIGluIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZWRTdHJpbmdG
b3JSYW5nZShpbiB1bnNpZ25lZCBsb25nIGxvY2F0aW9uLCBpbiB1bnNpZ25lZCBsb25nIGxlbmd0
aCk7CisgICAgICAgIGJvb2xlYW4gYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKGlu
IHVuc2lnbmVkIGxvbmcgbG9jYXRpb24sIGluIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKKyAgICAg
ICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoaW4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCBzdGFydEVsZW1lbnQsIGluIGJvb2xlYW4gaXNEaXJlY3Rp
b25OZXh0LCBpbiBET01TdHJpbmcgc2VhcmNoS2V5LCBpbiBET01TdHJpbmcgc2VhcmNoVGV4dCk7
CisgICAgICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoaW4gdW5zaWduZWQgbG9uZyBsb2Nh
dGlvbiwgaW4gdW5zaWduZWQgbG9uZyBsZW5ndGgpOworCisgICAgICAgIC8vIFNjcm9sbCBhcmVh
IGF0dHJpYnV0ZXMuCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IGhvcml6b250YWxTY3JvbGxiYXI7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IHZlcnRpY2FsU2Nyb2xsYmFyOworCisgICAgICAgIC8vIFRl
eHQgbWFya2Vycy4KKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFy
a2VyUmFuZ2VGb3JFbGVtZW50KGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxlbWVudCk7ICAg
IAorICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMoaW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgc3RhcnRNYXJrZXIsIGluIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyIGVuZE1hcmtlcik7CisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIHN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShpbiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlIHJhbmdlKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIg
ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShpbiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlIHJhbmdlKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgdGV4dE1hcmtl
ckZvclBvaW50KGluIGludCB4LCBpbiBpbnQgeSk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIHByZXZpb3VzVGV4dE1hcmtlcihpbiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBtYXJr
ZXIpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBuZXh0VGV4dE1hcmtlcihpbiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBtYXJrZXIpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IGFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihpbiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciBtYXJrZXIpOworICAgICAgICBET01TdHJpbmcgc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgcmFuZ2UpOworICAgICAgICBp
bnQgdGV4dE1hcmtlclJhbmdlTGVuZ3RoKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ug
cmFuZ2UpOworCisgICAgICAgIC8vIE5vdGlmaWNhdGlvbiBzdXBwb3J0LgorICAgICAgICBib29s
ZWFuIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGluIG9iamVjdCBjYWxsYmFja0Z1bmN0aW9uKTsK
KyAgICAgICAgYm9vbGVhbiByZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgICAgICAK
KyAgICB9OworCit9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9s
bGVyLmlkbAkocmV2aXNpb24gOTkxMjgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMTMxLDYgKzEzMSw4IEBACiAgICAgICAgIHZvaWQgc2V0QmFja2luZ1NjYWxlRmFjdG9y
KGluIGRvdWJsZSBiYWNraW5nU2NhbGVGYWN0b3IsIGluIG9iamVjdCBjYWxsYmFjayk7CiAKICAg
ICAgICAgdm9pZCBzZXRXaW5kb3dJc0tleShpbiBib29sZWFuIGlzS2V5KTsKKyAgICAgICAgCisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcGxhdGZvcm1OYW1lOwogICAgIH07
CiAKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDk5MTI4KQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTUsNiArNjU1LDggQEAKICAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuZ2NDb250cm9sbGVyKCktPm1ha2VXaW5kb3dPYmplY3QoY29udGV4dCwgd2lu
ZG93LCAmZXhjZXB0aW9uKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuZXZlbnRTZW5k
aW5nQ29udHJvbGxlcigpLT5tYWtlV2luZG93T2JqZWN0KGNvbnRleHQsIHdpbmRvdywgJmV4Y2Vw
dGlvbik7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRleHRJbnB1dENvbnRyb2xsZXIo
KS0+bWFrZVdpbmRvd09iamVjdChjb250ZXh0LCB3aW5kb3csICZleGNlcHRpb24pOworICAgIElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpLT5tYWtlV2lu
ZG93T2JqZWN0KGNvbnRleHQsIHdpbmRvdywgJmV4Y2VwdGlvbik7CisKICNpZiBQTEFURk9STShR
VCkKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KGNv
bnRleHQpOwogI2Vsc2UKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiA5OTEyOCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDcgQEAKICAgICBtX2djQ29udHJvbGxlciA9
IEdDQ29udHJvbGxlcjo6Y3JlYXRlKCk7CiAgICAgbV9ldmVudFNlbmRpbmdDb250cm9sbGVyID0g
RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y3JlYXRlKCk7CiAgICAgbV90ZXh0SW5wdXRDb250cm9s
bGVyID0gVGV4dElucHV0Q29udHJvbGxlcjo6Y3JlYXRlKCk7CisgICAgbV9hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlciA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUoKTsKIAogICAgIFdL
QnVuZGxlU2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MobV9idW5kbGUsIGZhbHNlKTsKICAgICBX
S0J1bmRsZVJlbW92ZUFsbFZpc2l0ZWRMaW5rcyhtX2J1bmRsZSk7CkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0JKHJldmlzaW9uIDAp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdUUiB7CisgICAgCiti
b29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSogb3RoZXIpCit7CisgICAgcmV0dXJuIFsoaWQpcGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UoKSBpc0VxdWFsOihpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07
Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXVFIKKwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0JKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5t
bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5o
IgorCituYW1lc3BhY2UgV1RSIHsKKworYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNF
cXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogb3RoZXIpCit7CisgICAgcmV0dXJuIFsoaWQp
cGxhdGZvcm1UZXh0TWFya2VyKCkgaXNFcXVhbDooaWQpb3RoZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCisKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0J
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbXBvcnQgIkluamVjdGVkQnVuZGxlLmgiCisjaW1wb3J0
ICJJbmplY3RlZEJ1bmRsZVBhZ2UuaCIKKworI2ltcG9ydCA8QXBwS2l0L05TQWNjZXNzaWJpbGl0
eS5oPgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdS
ZWYuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmQ0YuaD4KKyNpbXBvcnQg
PFdlYktpdDIvV0tCdW5kbGVGcmFtZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2lt
cG9ydCA8d3RmL1ZlY3Rvci5oPgorCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5T3duc0F0dHJp
YnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlIEAiQVhPd25zIgorI2Vu
ZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZQorI2RlZmluZSBO
U0FjY2Vzc2liaWxpdHlHcmFiYmVkQXR0cmlidXRlIEAiQVhHcmFiYmVkIgorI2VuZGlmCisKKyNp
Zm5kZWYgTlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGUgQCJBWERyb3BFZmZlY3RzIgorI2VuZGlmCisK
Ky8vIElmIGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZSBpcyBwYXNzZWQgaW4sIGl0IHdpbGwgcmFp
c2UgYW4gYWNjZXNzaWJpbGl0eSBleGNlcHRpb24uIFRoZXNlIGFyZSB1c3VhbGx5IGNhdWdodCBi
eSB0aGUgQWNjZXNzaWJpbGl0eSBSdW50aW1lIHRvIGluZm9ybQorLy8gdGhlIEFYIGNsaWVudCBh
cHAgb2YgdGhlIGVycm9yLiBIb3dldmVyLCBEUlQgaXMgdGhlIEFYIGNsaWVudCBhcHAsIHNvIGl0
IG11c3QgY2F0Y2ggdGhlc2UgZXhjZXB0aW9ucy4KKyNkZWZpbmUgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TIEB0cnkgeworI2RlZmluZSBFTkRfQVhfT0JKQ19FWENFUFRJT05TIH0gQGNhdGNoKE5T
RXhjZXB0aW9uICplKSB7IGlmICghW1tlIG5hbWVdIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlFeGNlcHRpb25dKSBAdGhyb3c7IH0KKworCit0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5v
dGlmaWNhdGlvbkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLCB2
b2lkKiBjb250ZXh0KTsKKworQGludGVyZmFjZSBOU09iamVjdCAoV2ViS2l0QWNjZXNzaWJpbGl0
eUFkZGl0aW9ucykKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1
ZXM6KE5TU3RyaW5nICopYXR0cmlidXRlIGluZGV4OihOU1VJbnRlZ2VyKWluZGV4IG1heENvdW50
OihOU1VJbnRlZ2VyKW1heENvdW50OworLSAodm9pZClhY2Nlc3NpYmlsaXR5U2V0U2hvdWxkUmVw
b3N0Tm90aWZpY2F0aW9uczooQk9PTClyZXBvc3Q7CistIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxp
dHlJbmRleE9mQ2hpbGQ6KGlkKWNoaWxkOworLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5QXJy
YXlBdHRyaWJ1dGVDb3VudDooTlNTdHJpbmcgKilhdHRyaWJ1dGU7CitAZW5kCisKK0BpbnRlcmZh
Y2UgTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQorKyAoTlNTdHJpbmcgKilzdHJpbmdX
aXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmOworLSAoSlNTdHJpbmdSZWYp
Y3JlYXRlSlNTdHJpbmdSZWY7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBOU1N0cmluZyAoSlNT
dHJpbmdSZWZBZGRpdGlvbnMpCisKKysgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVm
OihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgoreworICAgIGlmICghanNTdHJpbmdSZWYpCisgICAg
ICAgIHJldHVybiBOVUxMOworICAgIAorICAgIENGU3RyaW5nUmVmIGNmU3RyaW5nID0gSlNTdHJp
bmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpOworICAgIHJl
dHVybiBbKE5TU3RyaW5nICopY2ZTdHJpbmcgYXV0b3JlbGVhc2VdOworfQorCistIChKU1N0cmlu
Z1JlZiljcmVhdGVKU1N0cmluZ1JlZgoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZygoQ0ZTdHJpbmdSZWYpc2VsZik7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciA6IE5TT2JqZWN0Cit7CisgICAgaWQgbV9wbGF0
Zm9ybUVsZW1lbnQ7CisgICAgSlNWYWx1ZVJlZiBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJh
Y2s7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyCisKKy0gKGlkKWluaXRXaXRoUGxhdGZvcm1FbGVtZW50OihpZClwbGF0Zm9ybUVs
ZW1lbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworCisgICAgbV9wbGF0Zm9ybUVsZW1l
bnQgPSBwbGF0Zm9ybUVsZW1lbnQ7CisgICAgCisgICAgLy8gT25jZSBhbiBvYmplY3Qgc3RhcnRz
IHJlcXVlc3Rpbmcgbm90aWZpY2F0aW9ucywgaXQncyBvbiBmb3IgdGhlIGR1cmF0aW9uIG9mIHRo
ZSBwcm9ncmFtLgorICAgIC8vIFRoaXMgaXMgdG8gYXZvaWQgYW55IHJhY2UgY29uZGl0aW9ucyBi
ZXR3ZWVuIHRlc3RzIHR1cm5pbmcgdGhpcyBmbGFnIG9uIGFuZCBvZmYuIEluc3RlYWQKKyAgICAv
LyBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBjYW4ganVzdCBsaXN0ZW4gd2hlbiB0
aGV5IHdhbnQgdG8uCisgICAgW21fcGxhdGZvcm1FbGVtZW50IGFjY2Vzc2liaWxpdHlTZXRTaG91
bGRSZXBvc3ROb3RpZmljYXRpb25zOllFU107CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfbm90aWZp
Y2F0aW9uUmVjZWl2ZWQ6KSBuYW1lOkAiQVhEUlROb3RpZmljYXRpb24iIG9iamVjdDpuaWxdOwor
CisgICAgcmV0dXJuIHNlbGY7Cit9CisgCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOworCisg
ICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUo
V1RSOjpJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29u
dGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5G
cmFtZSk7CisgICAgCisgICAgSlNWYWx1ZVVucHJvdGVjdChjb250ZXh0LCBtX25vdGlmaWNhdGlv
bkZ1bmN0aW9uQ2FsbGJhY2spOworICAgIG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayA9
IDA7CisgICAgCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKV9ub3RpZmljYXRp
b25SZWNlaXZlZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBOU1N0cmlu
ZyAqbm90aWZpY2F0aW9uTmFtZSA9IFtbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JL
ZXk6QCJub3RpZmljYXRpb25OYW1lIl07CisgICAgaWYgKCFub3RpZmljYXRpb25OYW1lKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1
bmRsZVBhZ2VHZXRNYWluRnJhbWUoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgp
LT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEph
dmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4ganNOb3RpZmljYXRpb24oQWRvcHQsIFtub3RpZmljYXRpb25OYW1lIGNyZWF0ZUpTU3RyaW5n
UmVmXSk7CisgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRl
eHQsIGpzTm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNv
bnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxs
YmFjayksIDAsIDEsICZhcmd1bWVudCwgMCk7Cit9CisKKy0gKHZvaWQpc2V0Q2FsbGJhY2s6KEpT
VmFsdWVSZWYpY2FsbGJhY2sKK3sKKyAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICByZXR1cm47
CisgCisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWlu
RnJhbWUoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAg
IEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0
KG1haW5GcmFtZSk7CisKKyAgICAvLyBSZWxlYXNlIHRoZSBvbGQgY2FsbGJhY2suCisgICAgaWYg
KG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaykgCisgICAgICAgIEpTVmFsdWVVbnByb3Rl
Y3QoY29udGV4dCwgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKTsKKyAgICAKKyAgICBt
X25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBKU1ZhbHVlUHJv
dGVjdChjb250ZXh0LCBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2spOworfQorCitAZW5k
CisKK25hbWVzcGFjZSBXVFIgeworCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCisgICAgOiBtX2VsZW1lbnQo
ZWxlbWVudCkKKyAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQoreworICAgIC8vIEZJWE1F
OiBhcEB3ZWJraXQub3JnIHNheXMgT2JqQyBvYmplY3RzIG5lZWQgdG8gYmUgQ0ZSZXRhaW5lZC9D
RlJlbGVhc2UgdG8gYmUgR0MtY29tcGxpYW50IG9uIHRoZSBtYWMuCisgICAgW21fZWxlbWVudCBy
ZXRhaW5dOworfQorCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVyKQorICAgIDogbV9lbGVtZW50
KG90aGVyLm1fZWxlbWVudCkKKyAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQoreworICAg
IFttX2VsZW1lbnQgcmV0YWluXTsKK30KKworQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoKQoreworICAgIC8vIFRoZSBub3RpZmljYXRpb24gaGFuZGxlciBz
aG91bGQgYmUgbmlsIGJlY2F1c2UgcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKSBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCBpbiB0aGUgdGVzdC4KKyAgICBBU1NFUlQoIW1fbm90aWZpY2F0aW9u
SGFuZGxlcik7CisgICAgW21fZWxlbWVudCByZWxlYXNlXTsKK30KKworc3RhdGljIE5TU3RyaW5n
KiBkZXNjcmlwdGlvbk9mVmFsdWUoaWQgdmFsdWVPYmplY3QsIGlkIGZvY3VzZWRBY2Nlc3NpYmls
aXR5T2JqZWN0KQoreworICAgIGlmICghdmFsdWVPYmplY3QpCisgICAgICAgIHJldHVybiBOVUxM
OworCisgICAgaWYgKFt2YWx1ZU9iamVjdCBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0p
CisgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxhcnJheSBvZiBz
aXplICVkPiIsIFsoTlNBcnJheSopdmFsdWVPYmplY3QgY291bnRdXTsKKworICAgIGlmIChbdmFs
dWVPYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJu
IFsoTlNOdW1iZXIqKXZhbHVlT2JqZWN0IHN0cmluZ1ZhbHVlXTsKKworICAgIGlmIChbdmFsdWVP
YmplY3QgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11dKSB7CisgICAgICAgIE5TU3RyaW5n
KiB0eXBlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOlt2YWx1ZU9iamVjdCBvYmpDVHlw
ZV0gZW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXTsKKyAgICAgICAgTlNWYWx1ZSogdmFs
dWUgPSAoTlNWYWx1ZSopdmFsdWVPYmplY3Q7CisgICAgICAgIGlmIChbdHlwZSByYW5nZU9mU3Ry
aW5nOkAiTlNSZWN0Il0ubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIk5TUmVjdDogJUAiLCBOU1N0cmluZ0Zyb21SZWN0KFt2YWx1ZSBy
ZWN0VmFsdWVdKV07CisgICAgICAgIGlmIChbdHlwZSByYW5nZU9mU3RyaW5nOkAiTlNQb2ludCJd
Lmxlbmd0aCA+IDApCisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJOU1BvaW50OiAlQCIsIE5TU3RyaW5nRnJvbVBvaW50KFt2YWx1ZSBwb2ludFZhbHVlXSld
OworICAgICAgICBpZiAoW3R5cGUgcmFuZ2VPZlN0cmluZzpAIk5TU2l6ZSJdLmxlbmd0aCA+IDAp
CisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJOU1NpemU6
ICVAIiwgTlNTdHJpbmdGcm9tU2l6ZShbdmFsdWUgc2l6ZVZhbHVlXSldOworICAgICAgICBpZiAo
W3R5cGUgcmFuZ2VPZlN0cmluZzpAIk5TUmFuZ2UiXS5sZW5ndGggPiAwKQorICAgICAgICAgICAg
cmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTlNSYW5nZTogJUAiLCBOU1N0cmlu
Z0Zyb21SYW5nZShbdmFsdWUgcmFuZ2VWYWx1ZV0pXTsKKyAgICB9CisKKyAgICAvLyBTdHJpcCBh
YnNvbHV0ZSBVUkwgcGF0aHMKKyAgICBOU1N0cmluZyogZGVzY3JpcHRpb24gPSBbdmFsdWVPYmpl
Y3QgZGVzY3JpcHRpb25dOworICAgIE5TUmFuZ2UgcmFuZ2UgPSBbZGVzY3JpcHRpb24gcmFuZ2VP
ZlN0cmluZzpAIkxheW91dFRlc3RzIl07CisgICAgaWYgKHJhbmdlLmxlbmd0aCkKKyAgICAgICAg
cmV0dXJuIFtkZXNjcmlwdGlvbiBzdWJzdHJpbmdGcm9tSW5kZXg6cmFuZ2UubG9jYXRpb25dOwor
CisgICAgLy8gU3RyaXAgcG9pbnRlciBsb2NhdGlvbnMKKyAgICBpZiAoW2Rlc2NyaXB0aW9uIHJh
bmdlT2ZTdHJpbmc6QCIweCJdLmxlbmd0aCkgeworICAgICAgICBOU1N0cmluZyogcm9sZSA9IFtm
b2N1c2VkQWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV07CisgICAgICAgIE5TU3RyaW5nKiB0aXRsZSA9IFtm
b2N1c2VkQWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGVdOworICAgICAgICBpZiAoW3RpdGxlIGxlbmd0aF0p
CisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICcl
QCc+Iiwgcm9sZSwgdGl0bGVdOworICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCI8JUA+Iiwgcm9sZV07CisgICAgfQorICAgIAorICAgIHJldHVybiBbdmFsdWVPYmpl
Y3QgZGVzY3JpcHRpb25dOworfQorCitzdGF0aWMgTlNTdHJpbmcqIGF0dHJpYnV0ZXNPZkVsZW1l
bnQoaWQgYWNjZXNzaWJpbGl0eU9iamVjdCkKK3sKKyAgICBOU0FycmF5KiBzdXBwb3J0ZWRBdHRy
aWJ1dGVzID0gW2FjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVz
XTsKKworICAgIE5TTXV0YWJsZVN0cmluZyogYXR0cmlidXRlc1N0cmluZyA9IFtOU011dGFibGVT
dHJpbmcgc3RyaW5nXTsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBbc3VwcG9ydGVk
QXR0cmlidXRlcyBjb3VudF07ICsraSkgeworICAgICAgICBOU1N0cmluZyogYXR0cmlidXRlID0g
W3N1cHBvcnRlZEF0dHJpYnV0ZXMgb2JqZWN0QXRJbmRleDppXTsKKyAgICAgICAgCisgICAgICAg
IC8vIFJpZ2h0IG5vdywgcG9zaXRpb24gcHJvdmlkZXMgdXNlbGVzcyBhbmQgc2NyZWVuLXNwZWNp
ZmljIGluZm9ybWF0aW9uLCBzbyB3ZSBkbyBub3QKKyAgICAgICAgLy8gd2FudCB0byBpbmNsdWRl
IGl0IGZvciB0aGUgc2FrZSBvZiB1bml2ZXJzYWxseSBwYXNzaW5nIHRlc3RzLgorICAgICAgICBp
ZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFBvc2l0aW9uIl0pCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIC8vIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTogY2FuIHRocm93IGFuIGlmIGFuIGF0dHJpYnV0ZSBpcyBub3QgcmV0dXJuZWQuCisgICAg
ICAgIC8vIEZvciBEdW1wUmVuZGVyVHJlZSdzIHB1cnBvc2UsIHdlIHNob3VsZCBpZ25vcmUgdGhv
c2UgZXhjZXB0aW9ucworICAgICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAg
aWQgdmFsdWVPYmplY3QgPSBbYWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6YXR0cmlidXRlXTsKKyAgICAgICAgTlNTdHJpbmcqIHZhbHVlID0gZGVzY3JpcHRp
b25PZlZhbHVlKHZhbHVlT2JqZWN0LCBhY2Nlc3NpYmlsaXR5T2JqZWN0KTsKKyAgICAgICAgW2F0
dHJpYnV0ZXNTdHJpbmcgYXBwZW5kRm9ybWF0OkAiJUA6ICVAXG4iLCBhdHRyaWJ1dGUsIHZhbHVl
XTsKKyAgICAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gYXR0cmlidXRlc1N0cmluZzsKK30KKworc3RhdGljIEpTU3RyaW5nUmVmIGNvbmNhdGVuYXRl
QXR0cmlidXRlQW5kVmFsdWUoTlNTdHJpbmcqIGF0dHJpYnV0ZSwgTlNTdHJpbmcqIHZhbHVlKQor
eworICAgIFZlY3RvcjxVbmlDaGFyPiBidWZmZXIoW2F0dHJpYnV0ZSBsZW5ndGhdKTsKKyAgICBb
YXR0cmlidXRlIGdldENoYXJhY3RlcnM6YnVmZmVyLmRhdGEoKV07CisgICAgYnVmZmVyLmFwcGVu
ZCgnOicpOworICAgIGJ1ZmZlci5hcHBlbmQoJyAnKTsKKworICAgIFZlY3RvcjxVbmlDaGFyPiB2
YWx1ZUJ1ZmZlcihbdmFsdWUgbGVuZ3RoXSk7CisgICAgW3ZhbHVlIGdldENoYXJhY3RlcnM6dmFs
dWVCdWZmZXIuZGF0YSgpXTsKKyAgICBidWZmZXIuYXBwZW5kKHZhbHVlQnVmZmVyKTsKKworICAg
IHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOworfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKE5TQXJy
YXkqIGFycmF5LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1l
bnRWZWN0b3IpCit7CisgICAgTlNVSW50ZWdlciBjb3VudCA9IFthcnJheSBjb3VudF07CisgICAg
Zm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgZWxlbWVudFZl
Y3Rvci5hcHBlbmQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFthcnJheSBvYmplY3RB
dEluZGV4OmldKSk7Cit9CisKK3N0YXRpYyBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbk9mRWxlbWVu
dHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9y
KQoreworICAgIE5TTXV0YWJsZVN0cmluZyogYWxsRWxlbWVudFN0cmluZyA9IFtOU011dGFibGVT
dHJpbmcgc3RyaW5nXTsKKyAgICBzaXplX3Qgc2l6ZSA9IGVsZW1lbnRWZWN0b3Iuc2l6ZSgpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnQgPSBlbGVtZW50VmVjdG9yW2ldOworICAg
ICAgICBOU1N0cmluZyogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNPZkVsZW1lbnQodWlFbGVtZW50
LT5wbGF0Zm9ybVVJRWxlbWVudCgpKTsKKyAgICAgICAgW2FsbEVsZW1lbnRTdHJpbmcgYXBwZW5k
Rm9ybWF0OkAiJUBcbi0tLS0tLS0tLS0tLVxuIiwgYXR0cmlidXRlc107CisgICAgfQorICAgIAor
ICAgIHJldHVybiBbYWxsRWxlbWVudFN0cmluZyBjcmVhdGVKU1N0cmluZ1JlZl07Cit9CisKK3Zv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogbGlua2VkRWxlbWVudHMgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRV
SUVsZW1lbnRzQXR0cmlidXRlXTsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGxpbmtlZEVs
ZW1lbnRzLCBlbGVtZW50VmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogbGlua0VsZW1lbnRzID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmtVSUVsZW1lbnRzIl07Cisg
ICAgY29udmVydE5TQXJyYXlUb1ZlY3RvcihsaW5rRWxlbWVudHMsIGVsZW1lbnRWZWN0b3IpOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpnZXRDaGlsZHJlbihWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4m
IGVsZW1lbnRWZWN0b3IpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNB
cnJheSogY2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgY29udmVydE5TQXJyYXlUb1Zl
Y3RvcihjaGlsZHJlbiwgZWxlbWVudFZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdl
KFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3Rvciwg
dW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBjaGlsZHJlbiA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRl
IGluZGV4OmxvY2F0aW9uIG1heENvdW50Omxlbmd0aF07CisgICAgY29udmVydE5TQXJyYXlUb1Zl
Y3RvcihjaGlsZHJlbiwgZWxlbWVudFZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VudCgpCit7Cisg
ICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNoaWxkcmVuOworICAg
IGdldENoaWxkcmVuKGNoaWxkcmVuKTsKKyAgICAKKyAgICByZXR1cm4gY2hpbGRyZW4uc2l6ZSgp
OworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICBpZCBlbGVtZW50
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpOU01ha2VQb2ludCh4LCB5KV07Cisg
ICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoZWxlbWVudCk7Cit9CisKK3Vuc2lnbmVkIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KiBlbGVtZW50KQoreworICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlJbmRleE9m
Q2hpbGQ6ZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07Cit9CisKK1Bhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4
KHVuc2lnbmVkIGluZGV4KQoreworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gPiBjaGlsZHJlbjsKKyAgICBnZXRDaGlsZHJlbldpdGhSYW5nZShjaGlsZHJlbiwgaW5k
ZXgsIDEpOworCisgICAgaWYgKGNoaWxkcmVuLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4g
Y2hpbGRyZW5bMF07CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRl
eCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBO
U0FycmF5KiBvYmplY3RzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV07CisgICAgaWYgKGluZGV4
IDwgW29iamVjdHMgY291bnRdKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y3JlYXRlKFtvYmplY3RzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50
QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBOU0FycmF5KiBvYmplY3RzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3duc0F0dHJpYnV0ZV07CisgICAgaWYgKGluZGV4IDwgW29i
amVjdHMgY291bnRdKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3Jl
YXRlKFtvYmplY3RzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdElu
ZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IE5TQXJyYXkqIG9iamVjdHMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlXTsKKyAgICBpZiAoaW5k
ZXggPCBbb2JqZWN0cyBjb3VudF0pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjcmVhdGUoW29iamVjdHMgb2JqZWN0QXRJbmRleDppbmRleF0pOworICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dB
dEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIE5TQXJyYXkqIHJvd3MgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRSb3dzQXR0cmlidXRlXTsKKyAgICBpZiAoaW5kZXgg
PCBbcm93cyBjb3VudF0pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
cmVhdGUoW3Jvd3Mgb2JqZWN0QXRJbmRleDppbmRleF0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKworICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2ln
bmVkIGluZGV4KSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5T
QXJyYXkqIGFycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgaWYgKGluZGV4IDwg
W2FycmF5IGNvdW50XSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNy
ZWF0ZShbYXJyYXkgb2JqZWN0QXRJbmRleDppbmRleF0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVDb3VudDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxl
Y3RlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCisgICAgTlNBcnJheSogcm93cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV07CisgICAgaWYg
KGluZGV4IDwgW3Jvd3MgY291bnRdKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y3JlYXRlKFtyb3dzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQo
KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIGFjY2Vzc2liaWxpdHlP
YmplY3QgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CisgICAgaWYgKGFjY2Vzc2liaWxpdHlPYmpl
Y3QpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoYWNjZXNz
aWJpbGl0eU9iamVjdCk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJl
dHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIGlkIGFjY2Vzc2liaWxpdHlPYmplY3QgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGVdOworICAg
IGlmIChhY2Nlc3NpYmlsaXR5T2JqZWN0KQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y3JlYXRlKGFjY2Vzc2liaWxpdHlPYmplY3QpOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdygpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgYWNjZXNzaWJpbGl0eU9iamVj
dCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eURpc2Nsb3NlZEJ5Um93QXR0cmlidXRlXTsKKyAgICBpZiAoYWNjZXNzaWJpbGl0eU9iamVjdCkK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShhY2Nlc3NpYmls
aXR5T2JqZWN0KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJu
IDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRzKCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gbGlua2VkRWxlbWVudHM7CisgICAgZ2V0TGlua2VkVUlF
bGVtZW50cyhsaW5rZWRFbGVtZW50cyk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50
cyhsaW5rZWRFbGVtZW50cyk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKCkKK3sKKyAgICBWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gbGlua0VsZW1lbnRzOworICAgIGdl
dERvY3VtZW50TGlua3MobGlua0VsZW1lbnRzKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVs
ZW1lbnRzKGxpbmtFbGVtZW50cyk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDaGlsZHJlbigpCit7CisgICAgVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNoaWxkcmVuOworICAgIGdldENoaWxk
cmVuKGNoaWxkcmVuKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNoaWxkcmVu
KTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFsbEF0dHJpYnV0ZXMoKQoreworICAgIE5TU3RyaW5nKiBhdHRyaWJ1dGVzID0gYXR0cmlidXRl
c09mRWxlbWVudChtX2VsZW1lbnQpOworICAgIHJldHVybiBbYXR0cmlidXRlcyBjcmVhdGVKU1N0
cmluZ1JlZl07Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCit7Cisg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVm
OmF0dHJpYnV0ZV1dOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpT
U3RyaW5nUmVmOmF0dHJpYnV0ZV1dOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBkb3VibGVWYWx1ZV07CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0
aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
TlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJu
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUlzQXR0cmlidXRlU2V0dGFibGU6W05TU3RyaW5nIHN0
cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gW1ttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSBjb250YWluc09iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0
aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMoKQoreworICAg
IE5TQXJyYXkqIHN1cHBvcnRlZFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVzID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzXTsKKyAgICAKKyAgICBOU011
dGFibGVTdHJpbmcqIGF0dHJpYnV0ZXNTdHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107
CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3N1cHBvcnRlZFBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGVzIGNvdW50XTsgKytpKSB7CisgICAgICAgIFthdHRyaWJ1dGVzU3RyaW5nIGFwcGVu
ZEZvcm1hdDpAIiVAXG4iLCBbc3VwcG9ydGVkUGFyYW1ldGVyaXplZEF0dHJpYnV0ZXMgb2JqZWN0
QXRJbmRleDppXV07CisgICAgfQorICAgIAorICAgIHJldHVybiBbYXR0cmlidXRlc1N0cmluZyBj
cmVhdGVKU1N0cmluZ1JlZl07Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpyb2xlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBOU1N0cmluZyAqcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXSwgbV9l
bGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9s
ZSIsIHJvbGUpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4g
MDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN1YnJvbGUoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TU3RyaW5n
KiByb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOwor
ICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhTdWJyb2xlIiwgcm9s
ZSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3Jp
cHRpb24oKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TU3RyaW5nKiBy
b2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVu
dCk7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFJvbGVEZXNj
cmlwdGlvbiIsIHJvbGUpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRpdGxlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1N0
cmluZyogdGl0bGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQp
OworICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhUaXRsZSIsIHRp
dGxlKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKwor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0
aW9uKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBkZXNjcmlwdGlv
biA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7Cisg
ICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWERlc2NyaXB0aW9uIiwg
ZGVzY3JpcHRpb24pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAw
OworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXSwg
bV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFY
T3JpZW50YXRpb24iLCBkZXNjcmlwdGlvbik7ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKworICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmli
dXRlXSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1
ZShAIkFYVmFsdWUiLCBkZXNjcmlwdGlvbik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwor
CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExhbmd1YWdlIl0sIG1fZWxlbWVudCk7CisgICAg
cmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWExhbmd1YWdlIiwgZGVzY3Jp
cHRpb24pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRl
eHQoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIGRlc2Ny
aXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhlbHBBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAg
IHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhIZWxwIiwgZGVzY3JpcHRp
b24pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30K
KworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngoKQoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIE5TVmFsdWUqIHBvc2l0aW9uVmFsdWUgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0
ZV07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oW3Bvc2l0aW9uVmFsdWUgcG9pbnRW
YWx1ZV0ueCk7ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1
cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnkoKQoreworICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TVmFsdWUqIHBvc2l0aW9uVmFsdWUgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlQb3Np
dGlvbkF0dHJpYnV0ZV07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oW3Bvc2l0aW9u
VmFsdWUgcG9pbnRWYWx1ZV0ueSk7ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICAKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OndpZHRoKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVlKiBz
aXplVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlTaXplQXR0cmlidXRlXTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihb
c2l6ZVZhbHVlIHNpemVWYWx1ZV0ud2lkdGgpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICAKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmhlaWdodCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNWYWx1
ZSogc2l6ZVZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJs
ZT4oW3NpemVWYWx1ZSBzaXplVmFsdWVdLmhlaWdodCk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIAorICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y2xpY2tQb2ludFgoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIE5TVmFsdWUqIHBvc2l0aW9uVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYQ2xpY2tQb2ludCJdOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3Vi
bGU+KFtwb3NpdGlvblZhbHVlIHBvaW50VmFsdWVdLngpOyAgICAgICAgCisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFkoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIE5TVmFsdWUqIHBvc2l0aW9uVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQ2xpY2tQb2ludCJdOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxkb3VibGU+KFtwb3NpdGlvblZhbHVlIHBvaW50VmFsdWVdLnkpOworICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbKE5TTnVt
YmVyKil2YWx1ZSBkb3VibGVWYWx1ZV07IAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKwor
ICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWlu
VmFsdWUoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TWlu
VmFsdWVBdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIg
Y2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIqKXZhbHVlIGRvdWJsZVZhbHVlXTsg
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2Rv
dWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSgpCit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV07CisgICAgaWYg
KFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4g
WyhOU051bWJlciopdmFsdWUgZG91YmxlVmFsdWVdOyAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisKKyAgICByZXR1cm4gMC4wOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbigpCit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgTlNTdHJpbmcqIHZhbHVlRGVzY3JpcHRpb24gPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZURlc2Ny
aXB0aW9uQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlRGVzY3JpcHRpb24gaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgIHJldHVybiBbdmFsdWVEZXNjcmlwdGlvbiBj
cmVhdGVKU1N0cmluZ1JlZl07CisKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0
dXJuIDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExp
bmVOdW1iZXIoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
SW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2lu
ZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbKE5TTnVtYmVyICop
dmFsdWUgaW50VmFsdWVdOyAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAg
cmV0dXJuIC0xOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3Vw
cG9ydGVkKEpTU3RyaW5nUmVmIGFjdGlvbikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBOU0FycmF5KiBhY3Rpb25zID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QWN0aW9u
TmFtZXNdOworICAgIHJldHVybiBbYWN0aW9ucyBjb250YWluc09iamVjdDpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEpTU3RyaW5nUmVmOmFjdGlvbl1dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNFbmFibGVkKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2
YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eUVuYWJsZWRBdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUmVxdWlyZWQiXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9m
Q2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVl
XTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCgpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQXR0cmlidXRlXTsKKyAgICBpZiAo
W3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBb
dmFsdWUgYm9vbFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5k
ZWQoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
RXhwYW5kZWRBdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1i
ZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKCkgY29uc3QKK3sKKyAgICAvLyBPbiB0aGUg
TWFjLCBpbnRWYWx1ZSgpPT0xIGlmIGEgYSBjaGVja2FibGUgY29udHJvbCBpcyBjaGVja2VkLgor
ICAgIHJldHVybiBpbnRWYWx1ZSgpID09IDE7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zdXJlTGV2ZWxBdHRyaWJ1dGVdOworICAgIGlmIChb
dmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2
YWx1ZSBpbnRWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJu
IDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzcGVhaygpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRFJUU3BlZWNoQXR0
cmlidXRlIl07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KQorICAgICAgICByZXR1cm4gW3ZhbHVlIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgICAgIAorICAgIHJldHVybiAwOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQoKSBjb25zdAoreworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZV07CisgICAgaWYg
KFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4g
W3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXJpYURyb3BFZmZlY3RzKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3RzQXR0cmlidXRlXTsKKyAgICBpZiAoIVt2
YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiAwOwor
CisgICAgTlNNdXRhYmxlU3RyaW5nKiBkcm9wRWZmZWN0cyA9IFtOU011dGFibGVTdHJpbmcgc3Ry
aW5nXTsKKyAgICBOU0ludGVnZXIgbGVuZ3RoID0gW3ZhbHVlIGNvdW50XTsKKyAgICBmb3IgKE5T
SW50ZWdlciBrID0gMDsgayA8IGxlbmd0aDsgKytrKSB7CisgICAgICAgIFtkcm9wRWZmZWN0cyBh
cHBlbmRTdHJpbmc6W3ZhbHVlIG9iamVjdEF0SW5kZXg6a11dOworICAgICAgICBpZiAoayA8IGxl
bmd0aCAtIDEpCisgICAgICAgICAgICBbZHJvcEVmZmVjdHMgYXBwZW5kU3RyaW5nOkAiLCJdOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gW2Ryb3BFZmZlY3RzIGNyZWF0ZUpTU3RyaW5nUmVmXTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKKy8v
IHBhcmFtZXRlcml6ZWQgYXR0cmlidXRlcworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxp
bmVGb3JJbmRleChpbnQgaW5kZXgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRl
cjpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDppbmRleF1dOworICAgIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIgKil2
YWx1ZSBpbnRWYWx1ZV07IAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVy
biAtMTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJhbmdlRm9yTGluZShpbnQgbGluZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eVJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFy
YW1ldGVyOltOU051bWJlciBudW1iZXJXaXRoSW50OmxpbmVdXTsKKyAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSkgeworICAgICAgICByZXR1cm4gW05TU3RyaW5n
RnJvbVJhbmdlKFt2YWx1ZSByYW5nZVZhbHVlXSkgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIH0K
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3VuZHNGb3JS
YW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIE5TUmFuZ2Ug
cmFuZ2UgPSBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUJvdW5kc0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKKyAgICBO
U1JlY3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwwLDAsMCk7CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0pCisgICAgICAgIHJlY3QgPSBbdmFsdWUgcmVjdFZhbHVl
XTsgCisgICAgCisgICAgLy8gZG9uJ3QgcmV0dXJuIHBvc2l0aW9uIGluZm9ybWF0aW9uIGJlY2F1
c2UgaXQgaXMgcGxhdGZvcm0gZGVwZW5kZW50CisgICAgTlNNdXRhYmxlU3RyaW5nKiBib3VuZHNE
ZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInt7JWYsICVm
fSwgeyVmLCAlZn19IiwtMS4wZiwtMS4wZixyZWN0LnNpemUud2lkdGgscmVjdC5zaXplLmhlaWdo
dF07CisgICAgcmV0dXJuIFtib3VuZHNEZXNjcmlwdGlvbiBjcmVhdGVKU1N0cmluZ1JlZl07Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFu
Z2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBOU1JhbmdlIHJh
bmdlID0gTlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7CisgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCisgICAgaWQgc3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmli
dXRlIGZvclBhcmFtZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1dOworICAgIGlm
ICghW3N0cmluZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICByZXR1
cm4gMDsKKyAgICAKKyAgICByZXR1cm4gW3N0cmluZyBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmlu
Z0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgTlNS
YW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5QXR0cmlidXRl
ZFN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05TVmFs
dWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKKyAgICBpZiAoIVtzdHJpbmcgaXNLaW5kT2ZDbGFz
czpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHJldHVybiAwOworICAgIAor
ICAgIE5TU3RyaW5nKiBzdHJpbmdXaXRoQXR0cnMgPSBbc3RyaW5nIGRlc2NyaXB0aW9uXTsKKyAg
ICByZXR1cm4gW3N0cmluZ1dpdGhBdHRycyBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25l
ZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01h
a2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdl
OnJhbmdlXV07CisgICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0
cmluZyBjbGFzc11dKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBOU0RpY3Rpb25hcnkq
IGF0dHJzID0gW3N0cmluZyBhdHRyaWJ1dGVzQXRJbmRleDowIGVmZmVjdGl2ZVJhbmdlOm5pbF07
CisgICAgaWYoW1thdHRycyBvYmplY3RGb3JLZXk6TlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRl
eHRBdHRyaWJ1dGVdIGJvb2xWYWx1ZV0pCisgICAgICAgIHJldHVybiB0cnVlOyAgICAKKyAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVp
RWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVs
ZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1N0cmluZ1JlZiBzZWFyY2hLZXksIEpTU3Ry
aW5nUmVmIHNlYXJjaFRleHQpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
TlNNdXRhYmxlRGljdGlvbmFyeSogcGFyYW1ldGVyID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGlj
dGlvbmFyeV07CisgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6KGlzRGlyZWN0aW9uTmV4dCkgPyBA
IkFYRGlyZWN0aW9uTmV4dCIgOiBAIkFYRGlyZWN0aW9uUHJldmlvdXMiIGZvcktleTpAIkFYRGly
ZWN0aW9uIl07CisgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6MV0gZm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXTsKKyAgICBpZiAoc3RhcnRFbGVtZW50KQor
ICAgICAgICBbcGFyYW1ldGVyIHNldE9iamVjdDooaWQpc3RhcnRFbGVtZW50LT5wbGF0Zm9ybVVJ
RWxlbWVudCgpIGZvcktleTpAIkFYU3RhcnRFbGVtZW50Il07CisgICAgaWYgKHNlYXJjaEtleSkK
KyAgICAgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmlu
Z1JlZjpzZWFyY2hLZXldIGZvcktleTpAIkFYU2VhcmNoS2V5Il07CisgICAgaWYgKHNlYXJjaFRl
eHQgJiYgSlNTdHJpbmdHZXRMZW5ndGgoc2VhcmNoVGV4dCkpCisgICAgICAgIFtwYXJhbWV0ZXIg
c2V0T2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoVGV4dF0gZm9y
S2V5OkAiQVhTZWFyY2hUZXh0Il07CisgICAgCisgICAgaWQgdWlFbGVtZW50ID0gW1ttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhVSUVsZW1lbnRzRm9yU2VhcmNoUHJl
ZGljYXRlIiBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyXSBsYXN0T2JqZWN0XTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHVpRWxlbWVudCk7CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVy
cygpCit7CisgICAgLy8gbm90IHlldCBkZWZpbmVkIGluIEFwcEtpdC4uLiBvZGQKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBjb2x1bW5IZWFkZXJzQXJyYXkgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQ29sdW1uSGVhZGVyVUlF
bGVtZW50cyJdOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBj
b2x1bW5IZWFkZXJzVmVjdG9yOworICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3IoY29sdW1uSGVh
ZGVyc0FycmF5LCBjb2x1bW5IZWFkZXJzVmVjdG9yKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25P
ZkVsZW1lbnRzKGNvbHVtbkhlYWRlcnNWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd0hlYWRlcnMoKQoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIHJvd0hlYWRlcnNBcnJheSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSb3dIZWFkZXJVSUVsZW1l
bnRzIl07CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IHJvd0hl
YWRlcnNWZWN0b3I7CisgICAgY29udmVydE5TQXJyYXlUb1ZlY3Rvcihyb3dIZWFkZXJzQXJyYXks
IHJvd0hlYWRlcnNWZWN0b3IpOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMocm93
SGVhZGVyc1ZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJl
dHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlc09mQ29sdW1ucygpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgTlNBcnJheSogY29sdW1uc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07CisgICAgVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNvbHVtbnNWZWN0b3I7CisgICAg
Y29udmVydE5TQXJyYXlUb1ZlY3Rvcihjb2x1bW5zQXJyYXksIGNvbHVtbnNWZWN0b3IpOworICAg
IHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY29sdW1uc1ZlY3Rvcik7CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cygpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogcm93c0FycmF5ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um93
c0F0dHJpYnV0ZV07CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+
IHJvd3NWZWN0b3I7CisgICAgY29udmVydE5TQXJyYXlUb1ZlY3Rvcihyb3dzQXJyYXksIHJvd3NW
ZWN0b3IpOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMocm93c1ZlY3Rvcik7Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09m
VmlzaWJsZUNlbGxzKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0Fy
cmF5KiBjZWxsc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWFZpc2libGVDZWxscyJdOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gPiBjZWxsc1ZlY3RvcjsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGNlbGxzQXJy
YXksIGNlbGxzVmVjdG9yKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNlbGxz
VmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7
Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZIZWFkZXIoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IGlkIGhlYWRlck9iamVjdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV07CisgICAgaWYgKCFoZWFkZXJPYmplY3Qp
CisgICAgICAgIHJldHVybiBbQCIiIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICAKKyAgICBWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gaGVhZGVyVmVjdG9yOworICAgIGhl
YWRlclZlY3Rvci5hcHBlbmQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGhlYWRlck9i
amVjdCkpOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoaGVhZGVyVmVjdG9yKTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2lu
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dDb3VudCgpCit7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCisgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUFycmF5QXR0
cmlidXRlQ291bnQ6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y29sdW1uQ291bnQoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmluZGV4SW5UYWJsZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
TlNOdW1iZXIqIGluZGV4TnVtYmVyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVdOworICAgIGlmIChpbmRleE51bWJl
cikKKyAgICAgICAgcmV0dXJuIFtpbmRleE51bWJlciBpbnRWYWx1ZV07CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIC0xOworfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SW5kZXhSYW5nZSgpCit7CisgICAgTlNS
YW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKDAsMCk7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgTlNWYWx1ZSogaW5kZXhSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhSb3dJbmRleFJhbmdlIl07CisgICAgaWYgKGluZGV4UmFuZ2UpCisg
ICAgICAgIHJhbmdlID0gW2luZGV4UmFuZ2UgcmFuZ2VWYWx1ZV07CisgICAgTlNNdXRhYmxlU3Ry
aW5nKiByYW5nZURlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAieyVkLCAlZH0iLHJhbmdlLmxvY2F0aW9uLCByYW5nZS5sZW5ndGhdOworICAgIHJldHVybiBb
cmFuZ2VEZXNjcmlwdGlvbiBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhSYW5nZSgpCit7CisgICAgTlNS
YW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKDAsMCk7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgTlNOdW1iZXIqIGluZGV4UmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYQ29sdW1uSW5kZXhSYW5nZSJdOworICAgIGlmIChpbmRleFJhbmdl
KQorICAgICAgICByYW5nZSA9IFtpbmRleFJhbmdlIHJhbmdlVmFsdWVdOworICAgIE5TTXV0YWJs
ZVN0cmluZyogcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAInslZCwgJWR9IixyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoXTsKKyAgICByZXR1
cm4gW3JhbmdlRGVzY3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOyAgICAKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVt
bkFuZFJvdyh1bnNpZ25lZCBjb2wsIHVuc2lnbmVkIHJvdykKK3sKKyAgICBOU0FycmF5ICpjb2xS
b3dBcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W05TTnVtYmVyIG51bWJlcldpdGhV
bnNpZ25lZEludDpjb2xdLCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnJvd10sIG5p
bF07CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNyZWF0ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYQ2VsbEZvckNvbHVtbkFuZFJvdyIgZm9yUGFyYW1ldGVyOmNvbFJvd0FycmF5XSk7Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAKKworICAgIHJldHVybiAwOworfQorCitQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhv
cml6b250YWxTY3JvbGxiYXIoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5SG9yaXpvbnRhbFNjcm9s
bEJhckF0dHJpYnV0ZV0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAgCisgICAgCisg
ICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdAoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjcmVhdGUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1dGVdKTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TICAgICAgICAKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdlKCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0g
TlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgTlNWYWx1ZSAqaW5kZXhSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dFJhbmdlQXR0cmlidXRlXTsKKyAg
ICBpZiAoaW5kZXhSYW5nZSkKKyAgICAgICAgcmFuZ2UgPSBbaW5kZXhSYW5nZSByYW5nZVZhbHVl
XTsKKyAgICBOU011dGFibGVTdHJpbmcgKnJhbmdlRGVzY3JpcHRpb24gPSBbTlNNdXRhYmxlU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ7JWQsICVkfSIscmFuZ2UubG9jYXRpb24sIHJhbmdlLmxl
bmd0aF07CisgICAgcmV0dXJuIFtyYW5nZURlc2NyaXB0aW9uIGNyZWF0ZUpTU3RyaW5nUmVmXTsg
ICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKHVuc2ln
bmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgTlNSYW5nZSB0ZXh0UmFuZ2Ug
PSBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBOU1ZhbHVlICp0ZXh0UmFuZ2VW
YWx1ZSA9IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOnRleHRSYW5nZV07CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6dGV4
dFJhbmdlVmFsdWUgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dFJhbmdl
QXR0cmlidXRlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW5jcmVtZW50KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOk5TQWNjZXNz
aWJpbGl0eUluY3JlbWVudEFjdGlvbl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudCgpCit7CisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5UGVyZm9ybUFj
dGlvbjpOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb25dOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzaG93TWVudSgpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5UGVyZm9ybUFjdGlvbjpOU0FjY2Vzc2liaWxpdHlTaG93TWVudUFjdGlvbl07CisgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBy
ZXNzKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOk5TQWNjZXNzaWJpbGl0eVByZXNzQWN0aW9uXTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2V0U2VsZWN0ZWRDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KSBjb25z
dAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGFycmF5ID0g
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OmVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCldOwor
ICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVNldFZhbHVlOmFycmF5IGZvckF0dHJpYnV0ZTpO
U0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TICAgIAorfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eVZhbHVlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhN
RTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpkb2N1bWVudEVuY29kaW5nKCkKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnVybCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgTlNVUkwgKnVybCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07CisgICAgcmV0dXJuIFtbdXJsIGFic29sdXRl
U3RyaW5nXSBjcmVhdGVKU1N0cmluZ1JlZl07ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICAKKyAgICByZXR1cm4gbmlsOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjaykK
K3sKKyAgICBpZiAoIWZ1bmN0aW9uQ2FsbGJhY2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAK
KyAgICAvLyBNYWMgcHJvZ3JhbW1lcnMgc2hvdWxkIG5vdCBiZSBhZGRpbmcgbW9yZSB0aGFuIG9u
ZSBub3RpZmljYXRpb24gbGlzdGVuZXIgcGVyIGVsZW1lbnQuCisgICAgLy8gT3RoZXIgcGxhdGZv
cm1zIG1heSBiZSBkaWZmZXJlbnQuCisgICAgaWYgKG1fbm90aWZpY2F0aW9uSGFuZGxlcikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IFtbQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgYWxsb2NdIGluaXRXaXRoUGxhdGZvcm1FbGVtZW50
OnBsYXRmb3JtVUlFbGVtZW50KCldOworICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc2V0Q2Fs
bGJhY2s6ZnVuY3Rpb25DYWxsYmFja107CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCit7Cisg
ICAgLy8gTWFjIHByb2dyYW1tZXJzIHNob3VsZCBub3QgYmUgdHJ5aW5nIHRvIHJlbW92ZSBhIGxp
c3RlbmVyIHRoYXQncyBhbHJlYWR5IHJlbW92ZWQuCisgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9u
SGFuZGxlcik7CisKKyAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHJlbGVhc2VdOworICAgIG1f
bm90aWZpY2F0aW9uSGFuZGxlciA9IG5pbDsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNWaXNpYmxlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT2ZmU2NyZWVuKCkg
Y29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ29sbGFwc2VkKCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCgpIGNvbnN0Cit7CisgICAgQk9PTCByZXN1bHQg
PSBOTzsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXN1bHQgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhh
c1BvcHVwKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2
YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhIYXNQb3B1
cCJdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAg
ICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0YWtlRm9jdXMoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlU2VsZWN0aW9uKCkKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9uKCkK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cmVtb3ZlU2VsZWN0aW9uKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisK
Ky8vIFRleHQgbWFya2VycworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVJRWxlbWVudCIgZm9yUGFyYW1ldGVy
OmVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSogcmFuZ2UpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNOdW1i
ZXIqIGxlbmd0aFZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihpZClyYW5nZS0+cGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgcmV0dXJuIFtsZW5ndGhWYWx1ZSBpbnRWYWx1
ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQor
CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJr
ZXIpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgcHJldmlvdXNNYXJr
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpj
cmVhdGUocHJldmlvdXNNYXJrZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAK
KyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIHRleHRNYXJrZXIpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
aWQgbmV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhOZXh0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpdGV4dE1hcmtl
ci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcjo6Y3JlYXRlKG5leHRNYXJrZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBpZCB0ZXh0U3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihpZCltYXJr
ZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgcmV0dXJuIFt0ZXh0U3Ry
aW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAg
CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKiBlbmRNYXJrZXIpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNB
cnJheSogdGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFydE1h
cmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1h
cmtlcigpLCBuaWxdOworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVbm9yZGVyZWRUZXh0
TWFya2VycyIgZm9yUGFyYW1ldGVyOnRleHRNYXJrZXJzXTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFu
Z2UpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdGV4dE1hcmtlciA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooaWQpcmFuZ2UtPnBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3Jl
YXRlKHRleHRNYXJrZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsgICAgCit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCit7CisgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCisgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJh
bWV0ZXI6KGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7ICAgIAorfQorCitQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyRm9yUG9pbnQoaW50IHgsIGludCB5KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYVGV4dE1hcmtlckZvclBvc2l0aW9uIiBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFs
dWVXaXRoUG9pbnQ6TlNNYWtlUG9pbnQoeCwgeSldXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIDA7ICAgIAorfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHVpRWxlbWVudCA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIiBmb3JQ
YXJhbWV0ZXI6KGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUodWlFbGVtZW50KTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7ICAKK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RSCisKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZp
c2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw1ICs2MCwx
MSBAQAogewogICAgIHJldHVybiBKU1N0cmluZ1JldGFpbih1cmwpOyAvLyBEbyBub3RoaW5nIG9u
IG1hYy4KIH0KKyAgICAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGxh
dGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibWFjIikpOwor
ICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgJKHJldmlzaW9uIDApCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2VfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlX2gKKwor
I2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmpl
Y3RSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
K3R5cGVkZWYgQ0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlOworI2Vsc2UKK3R5cGVk
ZWYgdm9pZCogUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U7CisjZW5kaWYKKworbmFtZXNwYWNlIFdU
UiB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIDogcHVibGljIEpT
V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlPiBjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IGNyZWF0ZShjb25z
dCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJik7CisgICAgCisgICAgfkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UoKTsKKyAgICAKKyAgICBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBw
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGNvbnN0OworICAgIHZpcnR1YWwgSlNDbGFzc1JlZiB3
cmFwcGVyQ2xhc3MoKTsKKyAgICAKKyAgICBzdGF0aWMgSlNPYmplY3RSZWYgbWFrZUpTQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZShKU0NvbnRleHRSZWYsIGNvbnN0IEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UmKTsKKyAgICBib29sIGlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSopOworICAgIAorcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKTsKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UmKTsKKyAgICAKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlPiBtX3Rl
eHRNYXJrZXJSYW5nZTsKKyNlbHNlCisgICAgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgbV90ZXh0
TWFya2VyUmFuZ2U7CisjZW5kaWYKK307CisgICAgCisjaWYgIVBMQVRGT1JNKE1BQykKK2lubGlu
ZSBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmlzRXF1YWwoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKyAgICAKK30gLy8g
bmFtZXNwYWNlIFdUUgorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZV9o
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI2lmbmRlZiBJbmplY3RlZEJ1bmRsZV9oCiAjZGVmaW5lIEluamVjdGVk
QnVuZGxlX2gKIAorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCkBAIC01Niw2ICs1Nyw3IEBACiAgICAg
R0NDb250cm9sbGVyKiBnY0NvbnRyb2xsZXIoKSB7IHJldHVybiBtX2djQ29udHJvbGxlci5nZXQo
KTsgfQogICAgIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIqIGV2ZW50U2VuZGluZ0NvbnRyb2xsZXIo
KSB7IHJldHVybiBtX2V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICBUZXh0SW5w
dXRDb250cm9sbGVyKiB0ZXh0SW5wdXRDb250cm9sbGVyKCkgeyByZXR1cm4gbV90ZXh0SW5wdXRD
b250cm9sbGVyLmdldCgpOyB9CisgICAgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKCkgeyByZXR1cm4gbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5nZXQo
KTsgfQogCiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlKiBwYWdlKCkgY29uc3Q7CiAgICAgc2l6ZV90
IHBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZXMuc2l6ZSgpOyB9CkBAIC0xMDUsNiAr
MTA3LDcgQEAKICAgICBXS0J1bmRsZVBhZ2VHcm91cFJlZiBtX3BhZ2VHcm91cDsKICAgICBWZWN0
b3I8T3duUHRyPEluamVjdGVkQnVuZGxlUGFnZT4gPiBtX3BhZ2VzOwogCisgICAgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyPiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOwogICAgIFJl
ZlB0cjxMYXlvdXRUZXN0Q29udHJvbGxlcj4gbV9sYXlvdXRUZXN0Q29udHJvbGxlcjsKICAgICBS
ZWZQdHI8R0NDb250cm9sbGVyPiBtX2djQ29udHJvbGxlcjsKICAgICBSZWZQdHI8RXZlbnRTZW5k
aW5nQ29udHJvbGxlcj4gbV9ldmVudFNlbmRpbmdDb250cm9sbGVyOwpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAkocmV2aXNpb24gOTkxMjgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE5MCw2ICsxOTAsOCBAQAogICAgIHZvaWQgY2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrKCk7CiAg
ICAgdm9pZCBjYWxsU2V0QmFja2luZ1NjYWxlRmFjdG9yQ2FsbGJhY2soKTsKIAorICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUoKTsKKyAgICAKIHByaXZhdGU6CiAgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckludGVydmFsOwogCklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisjaW5jbHVkZSAiSW5qZWN0
ZWRCdW5kbGVQYWdlLmgiCisjaW5jbHVkZSAiSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgor
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJL
aXQyL1dLQnVuZGxlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2UuaD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KKworbmFtZXNwYWNlIFdUUiB7CisK
K1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpOworfQorCitBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIoKQoreworfQorCitBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6fkFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKCkKK3sKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bWFr
ZVdpbmRvd09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgd2luZG93T2Jq
ZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgc2V0UHJvcGVydHkoY29udGV4dCwg
d2luZG93T2JqZWN0LCAiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIiLCB0aGlzLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCBleGNl
cHRpb24pOworfQorCitKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjp3cmFwcGVy
Q2xhc3MoKQoreworICAgIHJldHVybiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3Np
YmlsaXR5Q29udHJvbGxlckNsYXNzKCk7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50KCkKK3sKKyAgICAv
LyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgb24gV2luZG93cy4KKyNpZiBQTEFURk9STShXSU4pCisg
ICAgcmV0dXJuIDA7CisjZW5kaWYKKworICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpOworICAgIHZvaWQqIHJvb3QgPSBXS0Fj
Y2Vzc2liaWxpdHlSb290T2JqZWN0KHBhZ2UpOworICAgIAorICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjcmVhdGUoc3RhdGljX2Nhc3Q8UGxhdGZvcm1VSUVsZW1lbnQ+KHJvb3Qp
KTsgICAgCit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50KCkKK3sKKyAgICAvLyBGSVhNRTogTWFrZSB0
aGlzIHdvcmsgb24gV2luZG93cy4KKyNpZiBQTEFURk9STShXSU4pCisgICAgcmV0dXJuIDA7Cisj
ZW5kaWYKKyAgICAKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5wYWdlKCktPnBhZ2UoKTsKKyAgICB2b2lkKiByb290ID0gV0tBY2Nlc3NpYmlsaXR5
Rm9jdXNlZE9iamVjdChwYWdlKTsKKyAgICAKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y3JlYXRlKHN0YXRpY19jYXN0PFBsYXRmb3JtVUlFbGVtZW50Pihyb290KSk7ICAgIAor
fQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250
cm9sbGVyOjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IHVpRWxlbWVudCA9IHJvb3RFbGVtZW50KCk7CisgICAgcmV0dXJu
IHVpRWxlbWVudC0+ZWxlbWVudEF0UG9pbnQoeCwgeSk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFj
ZSBXVFIKKwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lv
biA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0JKHdvcmtp
bmcgY29weSkKQEAgLTYyLDYgKzYyLDEwIEBACiBub2luc3RfTFRMSUJSQVJJRVMgKz0gTGlicmFy
aWVzL2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZS5sYQogCiB3ZWJraXR0ZXN0cnVubmVyX2J1
aWx0X3NvdXJjZXMgKz0gXAorCURlcml2ZWRTb3VyY2VzL0luamVjdGVkQnVuZGxlL0pTQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9K
U0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSW5qZWN0ZWRC
dW5kbGUvSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBcCisJRGVyaXZlZFNvdXJj
ZXMvSW5qZWN0ZWRCdW5kbGUvSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBcCiAJRGVyaXZl
ZFNvdXJjZXMvSW5qZWN0ZWRCdW5kbGUvSlNFdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvSW5qZWN0ZWRCdW5kbGUvSlNHQ0NvbnRyb2xsZXIuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBcCkBA
IC03MCw2ICs3NCwxNCBAQAogQlVJTFRfU09VUkNFUyArPSAkKHdlYmtpdHRlc3RydW5uZXJfYnVp
bHRfc291cmNlcykKIAogTGlicmFyaWVzX2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9sYV9T
T1VSQ0VTID0gXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuY3BwIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggXAorCVRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIFwKKwlUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgg
XAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZS5jcHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oIFwKKwlUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIFwKKwlUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBc
CiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY3RpdmF0ZUZvbnRzLmgg
XAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvSlNXcmFw
cGFibGUuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9KU1dyYXBwZXIuY3BwIFwKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL0luamVj
dGVkQnVuZGxlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dp
bi9JbmplY3RlZEJ1bmRsZS52Y3Byb2oJKHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci93aW4vSW5qZWN0ZWRCdW5kbGUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTQsNiArMzk0LDIxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxCaW5kaW5nc1xBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5pZGwiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNN
SURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNN
SURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEJpbmRpbmdzXEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NG
TGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWly
b19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rp
b258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0
ZWRCdW5kbGVcQmluZGluZ3NcQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGwiCisJCQkJ
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEJpbmRpbmdzXEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaWRsIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
RGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxCaW5k
aW5nc1xFdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1
cmF0aW9uCkBAIC02MTgsNiArODI2LDM4IEBACiAJCQlOYW1lPSJEZXJpdmVkIFNvdXJjZXMiCiAJ
CQk+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAiCisJCQkJPgor
CQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTY1MSw2
ICs4OTEsMzggQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWxlCisJCQlSZWxhdGl2
ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCIKKwkJ
CT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRs
ZVxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
LmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmpl
Y3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oIgorCQkJPgorCQk8L0ZpbGU+CisJ
CTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UuY3BwIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2
ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCIK
KwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1
bmRsZVxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8Rmls
ZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cSW5q
ZWN0ZWRCdW5kbGVcd2luXEFjdGl2YXRlRm9udHMuY3BwIgogCQkJPgogCQk8L0ZpbGU+CkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA5
OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMubWFrZQkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTAgQEAKICMKIAogSU5URVJGQUNFUyA9IFwKKyAgICBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlciBcCisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgXAor
ICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgXAorICAgIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQgXAogICAgIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIgXAogICAgIEdDQ29udHJvbGxlciBc
CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIgXApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDYgKzIzLDE3IEBACiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCQkw
RjUxNjlDQjE0NDUyMjJEMDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTE2OUNBMTQ0NTIyMkQwMEUw
QTlENyAvKiBXZWJLaXQuZnJhbWV3b3JrICovOyB9OwogCQkwRjUxNjlDQzE0NDUyMjJEMDBFMEE5
RDcgLyogV2ViS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNTE2OUNBMTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJhbWV3
b3JrICovOyB9OworCQkyOTIxMEVBRTE0NENBQ0I3MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyOTIxMEVBOTE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAg
Ki87IH07CisJCTI5MjEwRUIwMTQ0Q0FDQkQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
OTIxMEVBMjE0NENBQUE1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwICov
OyB9OworCQkyOTIxMEVCNDE0NENBQ0Q1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjky
MTBFQjExNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLzsg
fTsKKwkJMjkyMTBFQjUxNDRDQUNENTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjky
MTBFQjMxNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tICov
OyB9OworCQkyOTIxMEVEQTE0NENDM0VBMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5
MjEwRUFCMTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICov
OyB9OworCQkyOTIxMEVEQjE0NENENDc5MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
ODM5MTNEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAg
Ki87IH07CisJCTI5MjEwRUUxMTQ0Q0RCMjYwMDgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjkyMTBFREIxNDY3MjdFNzExODM1QkI1IC8qIEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAg
Ki87IH07CisJCTI5QThGQ0NCMTQ1RUYwMkUwMDkwNDVBNiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI5MjEwRUUxMTQ0Q0RFNjc4OTgxNUVFNSAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNw
cCAqLzsgfTsKKwkJMjlBOEZDREQxNDVGMDMzNzAwOTA0NUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyOUE4RkNFMTM0NUU3MDIxMDA2QUE1QTYgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlLmNwcCAqLzsgfTsKKwkJMjlBOEZDRTIxNDVGMDM3QjAwOTA0NUE2IC8qIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjlBOEZDRTExNDVGMDM3QjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UuY3BwICovOyB9OworCQkyOUE4RkNFNTE0NUYwNDY0MDA5MDQ1QTYg
LyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QThGQ0U0MTQ1RjA0NjQwMDkwNDVBNiAvKiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tICovOyB9OwogCQk1MzIyRkI0MzEzRkRB
MENEMDA0MUFCQ0MgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMjJGQjQxMTNGREEwQ0QwMDQxQUJDQyAv
KiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwICovOyB9OwogCQk1MzIyRkI0NjEzRkRBMEVBMDA0
MUFCQ0MgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzIyRkI0NDEzRkRBMEVBMDA0MUFCQ0MgLyogUGl4ZWxEdW1w
U3VwcG9ydC5jcHAgKi87IH07CiAJCTU2NDFFMkQwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJ
bnB1dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTY0MUUyQ0UxNDMzNUU5NTAwODMwN0U1IC8qIEpTVGV4dElucHV0Q29udHJvbGxl
ci5jcHAgKi87IH07CkBAIC04Niw2ICs5NywyNyBAQAogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJl
bmNlIHNlY3Rpb24gKi8KIAkJMEY1MTY5Q0ExNDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFt
ZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3
cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IFdlYktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTI5MjEwRUEyMTQ0Q0FBQTUwMDgzNUJCNSAvKiBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTI5MjEwRUEzMTQ0Q0FBQTUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVBODE0NENBQjg4MDA4
MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMjkyMTBFQTkxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEwRUFBMTQ0Q0FD
QjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQUIxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEwRUIxMTQ0Q0FD
RDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEwRUIyMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
OTIxMEVCMzE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlck1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFREIxNDY3MjdFNzExODM1QkI1IC8q
IEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkyOTIxMEVEQjE0NjcyN0U4MTE4MzVC
QjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMjkyMTBFREMxNDRDRDU2RTAwODM1QkI1IC8q
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIx
MEVFMTE0NENERTY3ODk4MTVFRTUgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CisJCTI5MjEwRUUxMTQ1Q0RFNjc4OTgxNUVFNSAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlci5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQkyOUE4RkNDNTE0NUI5M0M2MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlBOEZDRDIxNDVFRjhGMjAwOTA0NUE2IC8qIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOUE4RkNERjE0NUYw
MzU4MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5QThGQ0UxMTQ1RjAzN0IwMDkwNDVBNiAvKiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyOUE4RkNFMTM0NUU3MDIxMDA2QUE1QTYgLyogSlNBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHA7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5j
cHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTI5QThGQ0UxMzQ1RTcw
MjEwMDZBQTVBNyAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmg7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQky
OUE4RkNFNDE0NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2VNYWMubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc4RDQ0MjIxMzM0
NkQwMDAwNkE3NzdCIC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyMzBFMTYxMzhDNzhCRjAwQkNDRkNBIC8qIGxpYldl
YkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29y
ZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk0MTgxNzMxQjEzOEFEMzlEMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkNvcmVUZXN0U3VwcG9ydC5oOyBwYXRoID0g
V2ViQ29yZVRlc3RTdXBwb3J0L1dlYkNvcmVUZXN0U3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMTAwLDYgKzEzMiw4IEBACiAJCTU2NjRBNDk5MTQzMjYz
ODQwMDg4ODFCRSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRleHRJbnB1dENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTY3MEI4MjYxMzg2RkMxMzAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRTZW5kZXJQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NjcwQjgyNzEzODZGQ0E1MDAyRUIzNTUgLyogRXZl
bnRTZW5kZXJQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEV2ZW50U2VuZGVyUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU4Mzkx
M0QwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
KwkJNTgzOTEzRDExNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTY1MTBBNzc3MTFFQzY0MzgwMDQxMDg2NyAvKiBBSEVNX19fXy5UVEYgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gIkFIRU1fX19f
LlRURiI7IHBhdGggPSAiZm9udHMvQUhFTV9fX18uVFRGIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNjUxMEE3NzgxMUVDNjQzODAwNDEwODY3IC8qIENvbG9yQml0cy50dGYgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0g
Q29sb3JCaXRzLnR0ZjsgcGF0aCA9IGZvbnRzL0NvbG9yQml0cy50dGY7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1MTBBNzc5MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRX
YXRjaGVyMTAwLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGZpbGU7IG5hbWUgPSBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZjsgcGF0aCA9IGZv
bnRzL1dlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjQ3LDYgKzI4MSwyNCBAQAogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMjlBOEZDRTAxNDVGMDM1RDAwOTA0NUE2IC8qIEFjY2Vz
c2liaWxpdHkgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTI5MjEwRUEyMTQ0Q0FBQTUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAg
Ki8sCisJCQkJMjkyMTBFQTMxNDRDQUFBNTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmggKi8sCisJCQkJMjkyMTBFQTkxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwICovLAorCQkJCTI5MjEwRUFBMTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmggKi8sCisJCQkJMjkyMTBFQUIxNDRDQUNCMjAwODM1QkI1IC8qIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gKi8sCisJCQkJMjkyMTBFQjExNDRDQUNENDAwODM1
QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLywKKwkJCQkyOTIxMEVCMjE0NENB
Q0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCAqLywKKwkJCQkyOTIxMEVC
MzE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gKi8sCisJ
CQkJMjlBOEZDRTExNDVGMDM3QjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UuY3BwICovLAorCQkJCTI5QThGQ0RGMTQ1RjAzNTgwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlLmggKi8sCisJCQkJMjlBOEZDRTQxNDVGMDQ2NDAwOTA0NUE2IC8qIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IEFj
Y2Vzc2liaWxpdHk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk2NUVCODU5
RTExRUM2N0NDMDAzNEQzMDAgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTI1OSw2ICszMTEsNyBAQAogCQlCQzE0RTRFMDEyMEUwMkY5MDA4MjZD
MEMgLyogQ29udHJvbGxlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTI5QThGQ0UwMTQ1RjAzNUQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5ICovLAog
CQkJCUJDOEZEOEM5MTIwRTUyN0YwMEYzRTcxQSAvKiBFdmVudFNlbmRpbmdDb250cm9sbGVyLmNw
cCAqLywKIAkJCQlCQzhGRDhDODEyMEU1MjdGMDBGM0U3MUEgLyogRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5oICovLAogCQkJCUJDMTRFNEQ5MTIwRTAyRDAwMDgyNkMwQyAvKiBHQ0NvbnRyb2xsZXIu
Y3BwICovLApAQCAtMzQ1LDYgKzM5OCwxMCBAQAogCQkJCUJDOTUyQzBFMTFGM0I5N0IwMDMzOThC
NCAvKiBKU1dyYXBwYWJsZS5oICovLAogCQkJCUJDOTUyQzBDMTFGM0I5NjUwMDMzOThCNCAvKiBK
U1dyYXBwZXIuY3BwICovLAogCQkJCUJDOTUyQzBCMTFGM0I5NjUwMDMzOThCNCAvKiBKU1dyYXBw
ZXIuaCAqLywKKwkJCQkyOTIxMEVBODE0NENBQjg4MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuaWRsICovLAorCQkJCTI5QThGQ0M1MTQ1QjkzQzYwMDkwNDVBNiAvKiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlci5pZGwgKi8sCisJCQkJMjlBOEZDRDIxNDVFRjhGMjAwOTA0NUE2IC8q
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRsICovLAorCQkJCTI5MjEwRURDMTQ0Q0Q1
NkUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbCAqLywKIAkJCQlCQzhGRDhD
QjEyMEU1MkIwMDBGM0U3MUEgLyogRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwgKi8sCiAJCQkJ
QkMxNEU0RTExMjBFMDMyMDAwODI2QzBDIC8qIEdDQ29udHJvbGxlci5pZGwgKi8sCiAJCQkJQkM5
NTJFRDIxMUYzQzI5RjAwMzM5OEI0IC8qIExheW91dFRlc3RDb250cm9sbGVyLmlkbCAqLywKQEAg
LTM1Niw2ICs0MTMsMTQgQEAKIAkJQkM5NTJEM0ExMUYzQkYxRjAwMzM5OEI0IC8qIERlcml2ZWQg
U291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NTgzOTEzRDAxNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3Bw
ICovLAorCQkJCTU4MzkxM0QxMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmggKi8sCisJCQkJMjkyMTBFRTExNDRDREU2Nzg5ODE1RUU1IC8qIEpTQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIuY3BwICovLAorCQkJCTI5MjEwRUUxMTQ1Q0RFNjc4OTgxNUVFNSAvKiBK
U0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8sCisJCQkJMjlBOEZDRTEzNDVFNzAyMTAwNkFB
NUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgKi8sCisJCQkJMjlBOEZD
RTEzNDVFNzAyMTAwNkFBNUE3IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oICov
LAorCQkJCTI5MjEwRURCMTQ2NzI3RTcxMTgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwICovLAorCQkJCTI5MjEwRURCMTQ2NzI3RTgxMTgzNUJCNSAvKiBKU0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaCAqLywKIAkJCQlCQzhGRDhEMDEyMEU1NDVCMDBGM0U3MUEgLyogSlNFdmVu
dFNlbmRpbmdDb250cm9sbGVyLmNwcCAqLywKIAkJCQlCQzhGRDhEMTEyMEU1NDVCMDBGM0U3MUEg
LyogSlNFdmVudFNlbmRpbmdDb250cm9sbGVyLmggKi8sCiAJCQkJQkMxNEU0RTgxMjBFMDNEODAw
ODI2QzBDIC8qIEpTR0NDb250cm9sbGVyLmNwcCAqLywKQEAgLTUxNiw2ICs1ODEsMTcgQEAKIAkJ
CQlDMENFNzIwQjEyNDdDOTMzMDBCQzBFQzQgLyogTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQk1NjY0QTQ5QTE0MzI2Mzg0MDA4ODgxQkUgLyogVGV4dElucHV0
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NjQxRTJEMDE0MzM1RTk1MDA4MzA3
RTUgLyogSlNUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5MjEw
RUFFMTQ0Q0FDQjcwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTI5MjEwRUIwMTQ0Q0FDQkQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOTIxMEVCNDE0NENBQ0Q1MDA4MzVCQjUg
LyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBF
QjUxNDRDQUNENTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJMjkyMTBFREExNDRDQzNFQTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkyOTIxMEVEQjE0NENENDc5MDA4MzVC
QjUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQky
OTIxMEVFMTE0NENEQjI2MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTI5QThGQ0NCMTQ1RUYwMkUwMDkwNDVBNiAvKiBKU0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5QThGQ0REMTQ1RjAzMzcw
MDkwNDVBNiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMjlBOEZDRTIxNDVGMDM3QjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjlBOEZDRTUxNDVGMDQ2NDAwOTA0NUE2
IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQJKHJldmlzaW9uIDk4OTc3KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC03
NDEsMTUgKzc0MSw5IEBACiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1wYWRkaW5nLXdpdGgt
bXVsdGlwbGUtbGluZS1ib3hlcy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9zaGlmdC1jbGljay5o
dG1sCiAKLSMgSW1wbGVtZW50IGFjY2VzaXRpbGl0eSBzdXBwb3J0IHRvIFdlYktpdDIKLXBsYXRm
b3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2FyaWEtcm9sZXMtdW5pZ25vcmVkLmh0bWwKLXBsYXRmb3Jt
L2d0ay9hY2Nlc3NpYmlsaXR5L2FyaWEtc2xpZGVyLXJlcXVpcmVkLWF0dHJpYnV0ZXMuaHRtbAot
cGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1oaWVyYXJjaHkuaHRtbAotcGxh
dGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctdGV4dC1mb2N1cy5odG1sCi1w
bGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9pbnB1dC1zbGlkZXIuaHRtbAotcGxhdGZvcm0vZ3Rr
L2FjY2Vzc2liaWxpdHkvbGlzdC1pdGVtcy1hbHdheXMtZXhwb3NlZC5odG1sCi1wbGF0Zm9ybS9n
dGsvYWNjZXNzaWJpbGl0eS9vYmplY3Qtd2l0aC10aXRsZS5odG1sCi1wbGF0Zm9ybS9ndGsvYWNj
ZXNzaWJpbGl0eS90YWJsZS1oaWVyYXJjaHkuaHRtbAorIyBJbXBsZW1lbnQgYWNjZXNzaWJpbGl0
eSBzdXBwb3J0IGZvciBXZWJLaXQyCithY2Nlc3NpYmlsaXR5CitwbGF0Zm9ybS9ndGsvYWNjZXNz
aWJpbGl0eQogCiAjIEltcGxlbWVudCB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlIGludGVyZmFjZQogZmFzdC9mb3Jtcy9jdXJzb3ItYXQtZWRpdGFibGUtY29u
dGVudC1ib3VuZGFyeS5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1j
aGlsZHJlbi13aGVuLWFyaWEtcm9sZS1jaGFuZ2VzLmh0bWwJKHJldmlzaW9uIDk4OTc3KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdXBkYXRlLWNoaWxkcmVuLXdo
ZW4tYXJpYS1yb2xlLWNoYW5nZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBA
QAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyZW50IikuZm9jdXMoKTsKICAg
ICAgICAgdmFyIHBhcmVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50
OwogICAgICAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkQXRJbmRleCgwKS5yb2xlIiwgIidBWFJv
bGU6IEFYQnV0dG9uJyIpOwotICAgICAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkQXRJbmRleCgx
KS5yb2xlIiwgIidBWFJvbGU6ICciKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJwYXJlbnQuY2hp
bGRBdEluZGV4KDEpID09IG51bGwgfHwgcGFyZW50LmNoaWxkQXRJbmRleCgxKS5pc1ZhbGlkID09
IGZhbHNlIik7CiAgIAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uMSIp
LnJlbW92ZUF0dHJpYnV0ZSgicm9sZSIpOwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiYnV0dG9uMiIpLnNldEF0dHJpYnV0ZSgicm9sZSIsICJidXR0b24iKTsKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLW5v
dGlmaWNhdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS90ZXh0Ym94LXJvbGUtcmVwb3J0cy1ub3RpZmljYXRpb25zLmh0bWwJKHJl
dmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
dGV4dGJveC1yb2xlLXJlcG9ydHMtbm90aWZpY2F0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xMiw2ICsxMiw3IEBACiA8ZGl2IHJvbGU9InRleHRib3giIGlkPSJhcmlhVGV4dEJveCIgYXJp
YS1tdWx0aWxpbmU9ImZhbHNlIiB0YWJpbmRleD0iMCI+U29tZSB0ZXh0IGluIGEgdGV4dGJveC48
L2Rpdj4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KKyAgICB2YXIgdGV4dGJv
eEF4RWxlbWVudDsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewogICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogCkBAIC0yMCw3ICsyMSw3IEBACiAKICAgICAgICAg
dmFyIGFyaWFUZXh0Qm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFyaWFUZXh0Qm94Iik7
CiAgICAgICAgIGFyaWFUZXh0Qm94LmZvY3VzKCk7Ci0gICAgICAgIHZhciB0ZXh0Ym94QXhFbGVt
ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHRl
eHRib3hBeEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsK
ICAgICAgICAgdGV4dGJveEF4RWxlbWVudC5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihsb2dOb3Rp
ZmljYXRpb24pOwogICAgICAgICBwZW5kaW5nTm90aWZpY2F0aW9ucyA9IDM7CiAgICAgICAgIGFy
aWFUZXh0Qm94LmZpcnN0Q2hpbGQuZGVsZXRlRGF0YSgwLCA1KTsKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50cy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvaHRtbC1zZWN0aW9uLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTg5NzcpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rpb24tZWxl
bWVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw5ICsyMCw3IEBACiBQQVNT
IGJvZHkuY2hpbGRBdEluZGV4KDQpLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhMYW5kbWFya05h
dmlnYXRpb24nCiBQQVNTIGJvZHkuY2hpbGRBdEluZGV4KDUpLnN1YnJvbGUgaXMgJ0FYU3Vicm9s
ZTogQVhMYW5kbWFya0NvbXBsZW1lbnRhcnknCiBQQVNTIGJvZHkuY2hpbGRBdEluZGV4KDYpLmNo
aWxkQXRJbmRleCgwKS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6ICcKLVBBU1MgYm9keS5jaGlsZEF0
SW5kZXgoNikuY2hpbGRBdEluZGV4KDEpLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogJwogUEFTUyBi
b2R5LmNoaWxkQXRJbmRleCg3KS5jaGlsZEF0SW5kZXgoMCkuc3Vicm9sZSBpcyAnQVhTdWJyb2xl
OiAnCi1QQVNTIGJvZHkuY2hpbGRBdEluZGV4KDcpLmNoaWxkQXRJbmRleCgxKS5zdWJyb2xlIGlz
ICdBWFN1YnJvbGU6ICcKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdXBk
YXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1jaGls
ZHJlbi13aGVuLWFyaWEtcm9sZS1jaGFuZ2VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTg5Nzcp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRy
ZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTUsNyArNSw3IEBACiAKIAogUEFTUyBwYXJlbnQuY2hpbGRBdEluZGV4KDApLnJvbGUgaXMgJ0FY
Um9sZTogQVhCdXR0b24nCi1QQVNTIHBhcmVudC5jaGlsZEF0SW5kZXgoMSkucm9sZSBpcyAnQVhS
b2xlOiAnCitQQVNTIHBhcmVudC5jaGlsZEF0SW5kZXgoMSkgPT0gbnVsbCB8fCBwYXJlbnQuY2hp
bGRBdEluZGV4KDEpLmlzVmFsaWQgPT0gZmFsc2UgaXMgdHJ1ZQogUEFTUyBwYXJlbnQuY2hpbGRB
dEluZGV4KDApLnJvbGUgaXMgJ0FYUm9sZTogQVhTdGF0aWNUZXh0JwogUEFTUyBwYXJlbnQuY2hp
bGRBdEluZGV4KDEpLnJvbGUgaXMgJ0FYUm9sZTogQVhCdXR0b24nCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9zZWFyY2gtcHJlZGljYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VhcmNoLXByZWRpY2F0ZS5odG1sCShyZXZpc2lvbiA5
ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1w
cmVkaWNhdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAogPGlucHV0IHR5
cGU9ImNoZWNrYm94IiB2YWx1ZT0iQ2hlY2tib3giIC8+IGNoZWNrYm94PGJyIC8+CiA8aW5wdXQg
dHlwZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiAvPgogPC9mb3JtPgotPGltZyBpZD0iaW1hZ2Ui
IHNyYz0icmVzb3VyY2VzL2Nha2UucG5nIiAvPgorPGltZyBpZD0iaW1hZ2UiIHNyYz0icmVzb3Vy
Y2VzL2Nha2UucG5nIiBhbHQ9IlRlc3QiPgogPGgxPmZpcnN0IGhlYWRpbmcgbGV2ZWwgMTwvaDE+
CiA8aDE+c2Vjb25kIGhlYWRpbmcgbGV2ZWwgMTwvaDE+CiA8aDI+aGVhZGluZyBsZXZlbCAyPC9o
Mj4KQEAgLTUyLDE0ICs1MiwxMyBAQAogICAgICAgICB2YXIgc3RhcnRFbGVtZW50OwogICAgICAg
ICB2YXIgaXNEaXJlY3Rpb25OZXh0OwogICAgICAgICB2YXIgc2VhcmNoS2V5OwotICAgICAgICB2
YXIgc2VhcmNoVGV4dDsKKyAgICAgICAgdmFyIHNlYXJjaFRleHQgPSAiIjsKICAgICAgICAgdmFy
IHJlc3VsdEVsZW1lbnQ7CiAgICAgICAgIAogICAgICAgICAvLyBBbnkgZWxlbWVudC4KICAgICAg
ICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAg
ICBzZWFyY2hLZXkgPSAiQVhBbnlUeXBlU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9
IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNo
S2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIs
ICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVt
ZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCBibG9ja3F1b3RlIGxldmVsIDEnIik7
CkBAIC02OCw3ICs2Nyw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJl
Y3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYQmxvY2txdW90ZVNhbWVM
ZXZlbFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1
bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUo
c3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCci
KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmlu
Z1ZhbHVlIiwgIidBWFZhbHVlOiBzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpAQCAtNzcs
NyArNzUsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4
dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEJsb2NrcXVvdGVTZWFyY2hLZXkiOwot
ICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRh
aW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNE
aXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgi
cmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1
ZTogc2Vjb25kIGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKQEAgLTg2LDcgKzgzLDYgQEAKICAgICAg
ICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAg
ICBzZWFyY2hLZXkgPSAiQVhCb2xkRm9udFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQg
PSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJj
aEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUi
LCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzYW5zLXNlcmlmIGJsYWNr
IGJvbGQgdGV4dCB3aXRoIHVuZGVybGluZSciKTsKQEAgLTk1LDcgKzkxLDYgQEAKICAgICAgICAg
c3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hp
bGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBz
ZWFyY2hLZXkgPSAiQVhCdXR0b25TZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVs
bDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9y
U2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXks
IHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidB
WFJvbGU6IEFYQnV0dG9uJyIpOwogICAgICAgICAKQEAgLTEwMyw3ICs5OCw2IEBACiAgICAgICAg
IHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNo
aWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAg
c2VhcmNoS2V5ID0gIkFYQ2hlY2tCb3hTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0g
bnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50
Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hL
ZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwg
IidBWFJvbGU6IEFYQ2hlY2tCb3gnIik7CiAgICAgICAgIApAQCAtMTExLDcgKzEwNSw2IEBACiAg
ICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAg
ICAgICAgc2VhcmNoS2V5ID0gIkFYQ2hlY2tCb3hTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hU
ZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlF
bGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBz
ZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5y
b2xlIiwgIidBWFJvbGU6IEFYQ2hlY2tCb3gnIik7CiAgICAgICAgIApAQCAtMTE5LDcgKzExMiw2
IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1
ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYRGlmZmVyZW50VHlwZVNlYXJjaEtleSI7Ci0gICAg
ICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVy
RWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVj
dGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOwogICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogZmlyc3QgYmxvY2tx
dW90ZSBsZXZlbCAxJyIpOwpAQCAtMTI4LDcgKzEyMCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgy
KTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0g
IkFYRm9udENoYW5nZVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAg
ICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQ
cmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNo
VGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTog
QVhHcm91cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzZXJpZiBibHVlIGl0YWxpYyB0ZXh0JyIpOwpA
QCAtMTM3LDcgKzEyOCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgyKTsKICAgICAgICAgaXNEaXJl
Y3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYRm9udENvbG9yQ2hhbmdl
U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVs
ZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFy
dEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwog
ICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFs
dWUiLCAiJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnIik7CkBAIC0xNDksNyArMTM5
LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0
cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhHcmFwaGljU2VhcmNoS2V5IjsKLSAgICAgICAg
c2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVt
ZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9u
TmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEltYWdlJyIpOwogICAgICAgICAKQEAgLTE1Nyw3ICsx
NDYsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9
IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDFTZWFyY2hLZXkiOwot
ICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRh
aW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNE
aXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgi
cmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBmaXJzdCBoZWFkaW5nIGxldmVsIDEnIik7CkBAIC0xNjYsNyArMTU0LDYgQEAKICAgICAg
ICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAg
ICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNo
VGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVp
RWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwg
c2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
cm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBs
ZXZlbCAyJyIpOwpAQCAtMTc1LDcgKzE2Miw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAg
ICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVh
ZGluZ0xldmVsM1NlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAg
ICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVk
aWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4
dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhI
ZWFkaW5nJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgo
MCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgMyciKTsKQEAgLTE4NCw3
ICsxNzAsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4
dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDRTZWFyY2hLZXki
OwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNv
bnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwg
aXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRC
ZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAgICAgICAg
c2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidB
WFZhbHVlOiBoZWFkaW5nIGxldmVsIDQnIik7CkBAIC0xOTMsNyArMTc4LDYgQEAKICAgICAgICAg
c3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hp
bGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBz
ZWFyY2hLZXkgPSAiQVhIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4
dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxl
bWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2Vh
cmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9s
ZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVt
ZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBsZXZl
bCA1JyIpOwpAQCAtMjAyLDcgKzE4Niw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAg
ICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGlu
Z0xldmVsNlNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICBy
ZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNh
dGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7
CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFk
aW5nJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCku
c3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgNiciKTsKQEAgLTIxMSw3ICsx
OTQsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoNik7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9
IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXki
OwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNv
bnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwg
aXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRC
ZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAgICAgICAg
c2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidB
WFZhbHVlOiBzZWNvbmQgaGVhZGluZyBsZXZlbCAxJyIpOwpAQCAtMjIwLDcgKzIwMiw2IEBACiAg
ICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAg
ICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGluZ1NlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRl
eHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVs
ZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNl
YXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJv
bGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxl
bWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGhlYWRp
bmcgbGV2ZWwgMSciKTsKQEAgLTIyOSw3ICsyMTAsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7
CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJB
WEl0YWxpY0ZvbnRTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAg
ICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRl
eHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFY
R3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2VyaWYgYmx1ZSBpdGFsaWMgdGV4dCciKTsKQEAg
LTIzOCw3ICsyMTgsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0
aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWExhbmRtYXJrU2VhcmNoS2V5
IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBj
b250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQs
IGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTGFuZG1hcmtC
YW5uZXInIik7CkBAIC0yNDcsNyArMjI2LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAg
ICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhMaW5r
U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVs
ZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFy
dEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWExpbmsnIik7CiAg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1
ZSIsICInQVhWYWx1ZTogbGluayciKTsKQEAgLTI1Niw3ICsyMzQsNiBAQAogICAgICAgICBzdGFy
dEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0
SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJj
aEtleSA9ICJBWExpc3RTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAg
ICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNo
UHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJj
aFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6
IEFYTGlzdCciKTsKICAgICAgICAgCkBAIC0yNjQsNyArMjQxLDYgQEAKICAgICAgICAgc3RhcnRF
bGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hL
ZXkgPSAiQVhMaXZlUmVnaW9uU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7
CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNl
YXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBz
ZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhS
b2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdB
dHRyaWJ1dGVWYWx1ZSgnQVhBUklBTGl2ZScpIiwgIidwb2xpdGUnIik7CkBAIC0yNzYsNyArMjUy
LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0
cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhQbGFpblRleHRTZWFyY2hLZXkiOwotICAgICAg
ICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVs
ZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rp
b25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0
RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKICAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGJsb2NrcXVv
dGUgbGV2ZWwgMSciKTsKQEAgLTI4NSw3ICsyNjAsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7
CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJB
WFJhZGlvR3JvdXBTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAg
ICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRl
eHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFY
UmFkaW9Hcm91cCciKTsKICAgICAgICAgCkBAIC0yOTMsNyArMjY3LDYgQEAKICAgICAgICAgc3Rh
cnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFy
Y2hLZXkgPSAiQVhTYW1lVHlwZVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxs
OwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JT
ZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwg
c2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FY
Um9sZTogQVhHcm91cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzZWNvbmQgYmxvY2txdW90ZSBsZXZl
bCAxJyIpOwpAQCAtMzAyLDcgKzI3NSw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAg
ICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYU3RhdGlj
VGV4dFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1
bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUo
c3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNU
ZXh0JyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICIn
QVhWYWx1ZTogZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpAQCAtMzExLDcgKzI4Myw2IEBA
CiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50LmNoaWxkQXRJbmRleCgyKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsK
ICAgICAgICAgc2VhcmNoS2V5ID0gIkFYU3R5bGVDaGFuZ2VTZWFyY2hLZXkiOwotICAgICAgICBz
ZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1l
bnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25O
ZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxl
bWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2VyaWYg
Ymx1ZSBpdGFsaWMgdGV4dCciKTsKQEAgLTMyMCw3ICsyOTEsNiBAQAogICAgICAgICBzdGFydEVs
ZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5k
ZXgoMTgpOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hL
ZXkgPSAiQVhUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBu
dWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtl
eSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAi
J0FYUm9sZTogQVhUYWJsZSciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hp
bGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IHNlY29uZCB0YWJsZSBoZWFkaW5nIGxldmVsIDEnIik7CkBAIC0zMjksNyAr
Mjk5LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Zm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQg
PSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhUYWJsZVNlYXJjaEtleSI7Ci0gICAgICAg
IHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxl
bWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlv
bk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhUYWJsZSciKTsKICAgICAgICAgc2hvdWxkQmUoInJl
c3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgo
MCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IHRhYmxlIGhlYWRpbmcgbGV2ZWwgMSci
KTsKQEAgLTMzOCw3ICszMDcsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlz
RGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFRleHRGaWVsZFNl
YXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVt
ZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRF
bGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAg
IHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhUZXh0RmllbGQnIik7
CiAgICAgICAgIApAQCAtMzQ2LDcgKzMxNCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAg
ICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYVW5k
ZXJsaW5lU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJl
c3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0
ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3Vw
JyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3Ry
aW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNhbnMtc2VyaWYgYmxhY2sgYm9sZCB0ZXh0IHdpdGggdW5k
ZXJsaW5lJyIpOwpAQCAtMzU1LDcgKzMyMiw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAg
ICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYVW52
aXNpdGVkTGlua1NlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAg
ICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVk
aWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4
dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhM
aW5rJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCku
c3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGxpbmsnIik7CkBAIC0zNjYsNyArMzMyLDcgQEAKICAg
ICAgICAgLy8gUHJldmlvdXMgdGV4dCBzZWFyY2guCiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgxMCk7CiAg
ICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IGZhbHNlOwotICAgICAgICBzZWFyY2hLZXkgPSBudWxs
OworICAgICAgICBzZWFyY2hLZXkgPSAiIjsKICAgICAgICAgc2VhcmNoVGV4dCA9ICJzYW5zLXNl
cmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVuZGVybGluZSI7CiAgICAgICAgIHJlc3VsdEVsZW1l
bnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVs
ZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAg
c2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rp
b24tZWxlbWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rpb24tZWxlbWVudHMuaHRtbAkocmV2aXNpb24gOTg5Nzcp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rpb24t
ZWxlbWVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTEgKzQ2LDkgQEAKIAogICAgICAg
ICAgIC8vIFdoZW4gYSBoZWFkZXIgYW5kIGZvb3RlciBhcmUgaW5zaWRlIGFuIGFydGljbGUsIHRo
ZXkgc2hvdWxkIG5vdCBiZSBsYW5kbWFya3MuCiAgICAgICAgICAgc2hvdWxkQmUoImJvZHkuY2hp
bGRBdEluZGV4KDYpLmNoaWxkQXRJbmRleCgwKS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6ICciKTsK
LSAgICAgICAgICBzaG91bGRCZSgiYm9keS5jaGlsZEF0SW5kZXgoNikuY2hpbGRBdEluZGV4KDEp
LnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogJyIpOwogCiAgICAgICAgICAgLy8gV2hlbiBhIGhlYWRl
ciBhbmQgZm9vdGVyIGFyZSBpbnNpZGUgYSBzZWN0aW9uLCB0aGV5IHNob3VsZCBub3QgYmUgbGFu
ZG1hcmtzLgogICAgICAgICAgIHNob3VsZEJlKCJib2R5LmNoaWxkQXRJbmRleCg3KS5jaGlsZEF0
SW5kZXgoMCkuc3Vicm9sZSIsICInQVhTdWJyb2xlOiAnIik7Ci0gICAgICAgICAgc2hvdWxkQmUo
ImJvZHkuY2hpbGRBdEluZGV4KDcpLmNoaWxkQXRJbmRleCgxKS5zdWJyb2xlIiwgIidBWFN1YnJv
bGU6ICciKTsKICAgICB9CiAKICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLXdrMi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi13azIvU2tpcHBlZAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4td2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEw
ICsyNiw5IEBACiAjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjCiAKLSMgV2ViS2l0MiBuZWVkcyB0byBzdXBwb3J0IGFj
Y2Vzc2liaWxpdHkKLSMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MjEzMD4KLSMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHkt
cmVsYXRlZCBEUlQgQVBJcwotIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQyMTMxPgorIyBXaW5kb3dzIGRvZXMgbm90IHN1cHBvcnQgV2ViS2l0MiBhY2Nlc3NpYmls
aXR5LgorIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMjk2Pgor
YWNjZXNzaWJpbGl0eQogcGxhdGZvcm0vd2luL2FjY2Vzc2liaWxpdHkKIAogIyBXZWJLaXRUZXN0
UnVubmVyIG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIG9mIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBJY29uQ2hhbmdlcwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQJKHJldmlzaW9uIDk4
OTc3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDEyICszOCwxMSBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwogIyMjIFNUQVJUIE9GICgxKSBDbGFzc2lmaWVkIGZhaWx1cmVzIHdpdGggYnVnIHJlcG9y
dHMKIAotIyBXZWJLaXQyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eQotIyA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMwPgotIyBXZWJLaXRUZXN0UnVu
bmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1yZWxhdGVkIERSVCBBUElzCi0jIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxMzE+Ci1hY2Nlc3NpYmls
aXR5Ci1wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eQorIyBBWCB0ZXN0cyB0aGF0IHJlcXVpcmUg
aGl0IHRlc3RpbmcgZG8gbm90IHdvcmsgaW4gV0syLgorIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxMjk4PgorcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRt
bC1zbGlkZXItaW5kaWNhdG9yLmh0bWwKK3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2xpc3Ri
b3gtaGl0LXRlc3QuaHRtbAorcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaWZyYW1lLXdpdGgt
dGl0bGUtY29ycmVjdC1oaWVyYXJjaHkuaHRtbAogCiAjIFNvbWUgY29tcG9zaXRpbmcgdGVzdHMg
Zmxha2V5CiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzNTQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS1vdmVycmlk
ZXMtbGFiZWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnkt
b3ZlcnJpZGVzLWxhYmVsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcg
QEAKIAogCiBQQVNTIHRleHQuZGVzY3JpcHRpb24gaXMgJ0FYRGVzY3JpcHRpb246IFNodXQgZG93
biBjb21wdXRlciBhZnRlciAxMCBtaW51dGVzJwotUEFTUyB0ZXh0LnRpdGxlVUlFbGVtZW50KCku
aXNWYWxpZCBpcyBmYWxzZQorUEFTUyB0ZXh0LnRpdGxlVUlFbGVtZW50KCkgIT0gbnVsbCAmJiB0
ZXh0LnRpdGxlVUlFbGVtZW50KCkuaXNWYWxpZCBpcyBmYWxzZQogUEFTUyBsYWJlbEVsZW1lbnQu
cm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5
LW92ZXJyaWRlcy1sYWJlbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC5odG1sCShyZXZpc2lvbiA5ODk3
NykKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRl
cy1sYWJlbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgICAg
c2hvdWxkQmUoInRleHQuZGVzY3JpcHRpb24iLCAiJ0FYRGVzY3JpcHRpb246IFNodXQgZG93biBj
b21wdXRlciBhZnRlciAxMCBtaW51dGVzJyIpOwogCiAgICAgICAgICAgLy8gVGhlcmUgc2hvdWxk
IGJlIG5vIHRpdGxlIFVJIGVsZW1lbnQuCi0gICAgICAgICAgc2hvdWxkQmUoInRleHQudGl0bGVV
SUVsZW1lbnQoKS5pc1ZhbGlkIiwgImZhbHNlIik7CisgICAgICAgICAgc2hvdWxkQmUoInRleHQu
dGl0bGVVSUVsZW1lbnQoKSAhPSBudWxsICYmIHRleHQudGl0bGVVSUVsZW1lbnQoKS5pc1ZhbGlk
IiwgImZhbHNlIik7CiAgICAgICAgICAgCiAgICAgICAgICAgLy8gVGhlIGxhYmVsIGVsZW1lbnQg
aXMgaW4gYSBncm91cCwgaW4gYSBncm91cCwgaW4gdGhlIHdlYiBhcmVhLgogICAgICAgICAgIHZh
ciBsYWJlbEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5yb290RWxlbWVudC5jaGls
ZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgo
MCk7CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RoLWFzLXRpdGxlLXVpLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90aC1hcy10aXRsZS11aS5o
dG1sCShyZXZpc2lvbiA5ODk3NykKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGgtYXMt
dGl0bGUtdWkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNyBAQAogICAgICAgICAg
ICAgYm9keS5mb2N1cygpOwogICAgICAgICAgICAgdmFyIGdyb3VwID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDEpOwogICAgICAgICAgICAgdmFy
IGdyb3VwMiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJ
bmRleCgzKTsKLQotICAgICAgICAgICAgaWYgKGdyb3VwLnRpdGxlVUlFbGVtZW50KCkuYWxsQXR0
cmlidXRlcygpICE9ICIiICYmIGdyb3VwMi50aXRsZVVJRWxlbWVudCgpLmFsbEF0dHJpYnV0ZXMo
KSA9PSAiIikKKyAgICAgICAgICAgIGlmIChncm91cC50aXRsZVVJRWxlbWVudCgpLmFsbEF0dHJp
YnV0ZXMoKSAhPSAiIiAmJiAoZ3JvdXAyLnRpdGxlVUlFbGVtZW50KCkgPT0gbnVsbCB8fCBncm91
cDIudGl0bGVVSUVsZW1lbnQoKS5hbGxBdHRyaWJ1dGVzKCkgPT0gIiIpKSAKICAgICAgICAgICAg
ICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJQYXNzIjsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJGYWlsIjsKSW5kZXg6IExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbm9uLWRhdGEtdGFibGUtY2VsbC10aXRsZS11aS1lbGVtZW50Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub24tZGF0YS10YWJsZS1j
ZWxsLXRpdGxlLXVpLWVsZW1lbnQuaHRtbAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L25vbi1kYXRhLXRhYmxlLWNlbGwtdGl0bGUtdWktZWxlbWVudC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw5IEBACiAgICAgICAgICAgICAvLyBnZXQgdGhl
IDx0aD5za2lwPC90aD4gZWxlbWVudAogICAgICAgICAgICAgdmFyIGdyb3VwID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDUpOwogICAgICAgICAg
ICAgdmFyIHRpdGxlVUkgPSBncm91cC50aXRsZVVJRWxlbWVudCgpOwotICAgICAgICAgICAgdmFy
IGFsbEF0dHJpYnV0ZXMgPSB0aXRsZVVJLmFsbEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgIHZh
ciBhbGxBdHRyaWJ1dGVzID0gIiI7CisgICAgICAgICAgICBpZiAodGl0bGVVSSkKKyAgICAgICAg
ICAgICAgICBhbGxBdHRyaWJ1dGVzID0gdGl0bGVVSS5hbGxBdHRyaWJ1dGVzKCk7CiAKICAgICAg
ICAgICAgIC8vIHZlcmlmeSBpdCBoYXMgbm8gdGl0bGUgdWkgZWxlbWVudCAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAoIWFsbEF0dHJpYnV0ZXMpIHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MTI4
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTEtMTEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1y
ZWxhdGVkIERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjEzMQorCisgICAgICAgIENsZWFudXAgdGVzdHMgYW5kIHNraXAgbGlzdHMgc28g
dGhhdCBhY2Nlc3NpYmlsaXR5IHRlc3RzIGNhbiBydW4KKyAgICAgICAgaW4gV0syLiBUaGlzIG1v
c3RseSBpbnZvbHZlZCBoYW5kbGluZyByZXR1cm5lZCBlbGVtZW50cyB0aGF0IG1pZ2h0IGJlIG5p
bCwKKyAgICAgICAgc29tZXRoaW5nIHRoYXQgZGlkIG5vdCBoYXBwZW4gaW4gRFJULgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwuaHRtbDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L25vbi1kYXRhLXRhYmxlLWNlbGwtdGl0bGUtdWktZWxlbWVu
dC5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGgtYXMtdGl0bGUtdWkuaHRtbDoKKyAg
ICAgICAgICAgICBNYWtlIHN1cmUgYSBuaWwgdGl0bGVVSUVsZW1lbnQgaXMgYWNjb3VudGVkIGZv
ciBpbiB0aGVzZSB0ZXN0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL1NraXBwZWQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9uLWVsZW1lbnRz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1s
LXNlY3Rpb24tZWxlbWVudHMuaHRtbDoKKyAgICAgICAgICAgICBSZW1vdmUgbmlsIGVsZW1lbnQg
YWNjZXNzIHRoYXQgaXMgdW5uZWNlc3NhcnkuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvc2VhcmNoLXByZWRpY2F0ZS5odG1sOgorICAgICAgICAgICAgIEFkZCBhbiBhbHQg
dGFnIHRvIDxpbWc+IHNvIHRoYXQgaXQgYWx3YXlzIHNob3dzIHVwIGluIHRoZSBBWCB0cmVlLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRz
LW5vdGlmaWNhdGlvbnMuaHRtbDoKKyAgICAgICAgICAgICBSZW1vdmUgdGhlIG5vdGlmaWNhdGlv
biBsaXN0ZW5lciBwcm9wZXJseSAod2FzIGNhdXNpbmcgZmxha2luZXNzKS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUt
Y2hhbmdlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMuaHRtbDoKKyAgICAgICAg
ICAgICBBY2NvdW50IGZvciB3aGVuIGVsZW1lbnQncyByZXR1cm5lZCBhcmUgbmlsLgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi13azIvU2tpcHBlZDoKKyAgICAgICAgICAgICBTa2lwIGFsbCBhY2Nl
c3NpYmlsaXR5IHRlc3RzIG9uIHdpbi4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvU2tpcHBlZDoK
KyAgICAgICAgICAgICBTa2lwIGFsbCBhY2Nlc3NpYmlsaXR5IHRlc3RzIG9uIGd0ay4KKwogMjAx
MS0xMS0wMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHI5ODc1OS1yOTg3NzMpOiBwbGF0Zm9ybS9tYWMvZm9udHMvY29sb3ItYml0bWFwLmh0
bWwgZmFpbGluZyBvbiBMaW9uIEludGVsIERlYnVnIChUZXN0cykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113509</attachid>
            <date>2011-11-03 09:50:27 -0700</date>
            <delta_ts>2011-11-03 10:25:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>181053</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA5OTEyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDcgQEAKIF9f
Wk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTEwcm9vdE9iamVjdEV2CiBfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUxOHJvb3RPYmplY3RGb3JGcmFtZUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3Jl
MTNBWE9iamVjdENhY2hlMjFnQWNjZXNzaWJpbGl0eUVuYWJsZWRFCitfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUyM2ZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlRVBLTlNfNFBhZ2VFCiBfX1pON1dl
YkNvcmUxM0FYT2JqZWN0Q2FjaGU0MmdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNl
RW5hYmxlZEUKIF9fWk43V2ViQ29yZTEzSFRUUEhlYWRlck1hcEMxRXYKIF9fWk43V2ViQ29yZTEz
SFRUUEhlYWRlck1hcEQxRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MTI4KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTEtMTEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1yZWxhdGVk
IERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MjEzMQorCisgICAgICAgIE1pbm9yIGNoYW5nZXMgbmVlZGVkIHRvIHN1cHBvcnQgQVggdGVz
dGluZyBpbiBXS1Rlc3RSdW5uZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgICAgICBFeHBvc2UgZm9j
dXNlZFVJRWxlbWVudEZvclBhZ2Ugc28gdGhhdCB0aGUgV0syIGluamVjdGVkIGJ1bmRsZSBjYW4g
cmV0cmlldmUgaXQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKToKKyAgICAgICAgICAgIFJlbW92ZSBhbiB1bm5jZXNzYXJ5IGFzc2VydCB0aGF0IHdhcyBj
YXVzaW5nIGlzc3VlcyB3aXRoIHRoZSBXSzIgdGVzdCBydW4uCisKIDIwMTEtMTEtMDIgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSB1c2FnZSBvZiBT
dHJpbmdJbXBsIHdpdGggU3RyaW5nIHdoZXJlIHBvc3NpYmxlIGluIENoYXJhY3RlckRhdGEgYW5k
IFRleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lvbiA5
OTEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OTUsNyArNDk1LDggQEAKIAog
c3RhdGljIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgp
KTsKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQW55VHlwZVNlYXJj
aEtleTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCog
c2VhcmNoS2V5TWFwID0gY3JlYXRlQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCgpOwogICAgIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgJKHJldmlzaW9uIDk5
MTI4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDkgQEAKIFdL
X0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNvbmZpcm1Db21wb3NpdGlvbihXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VDb25maXJtQ29tcG9zaXRpb25X
aXRoVGV4dChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGV4dCk7CiAKK1dLX0VY
UE9SVCB2b2lkKiBXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KFdLQnVuZGxlUGFnZVJlZik7CitX
S19FWFBPUlQgdm9pZCogV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdChXS0J1bmRsZVBhZ2VS
ZWYpOyAgICAKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDk5MTI4KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNywxMSBAQAogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUg
IldlYlVSTFJlcXVlc3QuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvQWNjZXNzaWJpbGl0eU9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMTI2LDYgKzEzMCw0NiBA
QAogICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPm1haW5XZWJGcmFtZSgpKTsKIH0K
IAordm9pZCogV0tBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZikKK3sKKyAgICBpZiAoIXBhZ2VSZWYpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFdl
YkNvcmU6OlBhZ2UqIHBhZ2UgPSB0b0ltcGwocGFnZVJlZiktPmNvcmVQYWdlKCk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBXZWJDb3JlOjpGcmFtZSogY29y
ZSA9IHBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghY29yZSB8fCAhY29yZS0+ZG9jdW1lbnQo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOworCisgICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dCogcm9vdCA9IGNvcmUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgp
OworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIHJv
b3QtPndyYXBwZXIoKTsKK30KKwordm9pZCogV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICBpZiAoIXBhZ2VSZWYpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSB0b0ltcGwocGFnZVJlZikt
PmNvcmVQYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKKworICAgIFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKKyAgICBpZiAoIWZvY3VzZWRP
YmplY3QpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBmb2N1c2VkT2JqZWN0
LT53cmFwcGVyKCk7Cit9CisKIHZvaWQgV0tCdW5kbGVQYWdlU3RvcExvYWRpbmcoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zdG9wTG9hZGluZygpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gOTkxMjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMS0wMiAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIg
bmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgRFJUIEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMxCisKKyAgICAgICAg
QWxsb3cgdGhlIGluamVjdGVkIGJ1bmRsZSB0byByZXRyaWV2ZSB0aGUgZm9jdXNlZCBhbmQgcm9v
dCBhY2Nlc3NpYmlsaXR5CisgICAgICAgIG9iamVjdHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0
KToKKyAgICAgICAgKFdLQWNjZXNzaWJpbGl0eUZvY3VzZWRPYmplY3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oOgorCiAy
MDExLTExLTAyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgRGUtdmlydHVhbGl6ZSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcwpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
OTkxMjgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMzEg
QEAKKzIwMTEtMTEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1y
ZWxhdGVkIERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjEzMQorCisgICAgICAgIFBvcnQgdGhlIEFYIGNvZGUgaW4gRFJUIHRvIFdLVGVz
dFJ1bm5lciBieSB1c2luZyBJREwuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0Rlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6fkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
Om1ha2VXaW5kb3dPYmplY3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6d3JhcHBlckNsYXNzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OnJvb3RFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZv
Y3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmVs
ZW1lbnRBdFBvaW50KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6bG9nRm9jdXNFdmVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6bG9nVmFsdWVDaGFuZ2VFdmVudHMpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cyk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25M
aXN0ZW5lcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpub3RpZmlj
YXRpb25SZWNlaXZlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpy
ZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcDogQWRkZWQuCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6fkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OndyYXBwZXJDbGFzcyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlci5oOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OnBsYXRmb3JtVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OndyYXBwZXJDbGFzcyk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
Lmg6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpw
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmlzRXF1
YWwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3
cmFwcGVyQ2xhc3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Zh
bGlkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWspOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5k
ZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Ny
b2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxT
Y3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFs
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdl
Rm9yRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRN
YXJrZXJSYW5nZUxlbmd0aCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlckZvclBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGxhdGZvcm1VSUVsZW1lbnQp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbDog
QWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmlkbDogQWRkZWQuCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmlkbDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGU6OmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2xlYXJXaW5kb3dGb3JGcmFtZSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW06IEFkZGVkLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbCk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1h
Yy5tbTogQWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6
OmlzRXF1YWwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06IEFkZGVkLgorICAgICAgICAoK1tOU1N0cmlu
ZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAgICgtW05TU3RyaW5nIGNyZWF0ZUpT
U3RyaW5nUmVmXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
IGluaXRXaXRoUGxhdGZvcm1FbGVtZW50Ol0pOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyIF9ub3RpZmljYXRpb25SZWNlaXZlZDpdKToKKyAgICAgICAgKC1bQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgc2V0Q2FsbGJhY2s6XSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCk6CisgICAgICAgIChXVFI6OmRlc2NyaXB0aW9uT2ZWYWx1ZSk6CisgICAgICAgIChXVFI6OmF0
dHJpYnV0ZXNPZkVsZW1lbnQpOgorICAgICAgICAoV1RSOjpjb25jYXRlbmF0ZUF0dHJpYnV0ZUFu
ZFZhbHVlKToKKyAgICAgICAgKFdUUjo6Y29udmVydE5TQXJyYXlUb1ZlY3Rvcik6CisgICAgICAg
IChXVFI6OmRlc2NyaXB0aW9uT2ZFbGVtZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtzKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJl
bkNvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRS
b3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVV
SUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRF
bGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2Vk
QnlSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZMaW5rZWRVSUVsZW1lbnRzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNldHRhYmxlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmli
dXRlTmFtZXMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbik6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGFuZ3VhZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpoZWxwVGV4dCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoZWlnaHQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjbGlja1BvaW50WCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNsaWNrUG9pbnRZKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50
VmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbik6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3VwcG9y
dGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFibGVkKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzcGVhayk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFJc0dyYWJiZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhRHJvcEVmZmVjdHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpsaW5lRm9ySW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
YW5nZUZvckxpbmUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3Vu
ZHNGb3JSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmlu
Z0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmli
dXRlZFN0cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVy
cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJv
d0hlYWRlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZDb2x1bW5zKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mUm93cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZlZpc2libGVDZWxscyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJvd0NvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y29sdW1uQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
bmRleEluVGFibGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJ
bmRleFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1u
SW5kZXhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxG
b3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
b3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aW5jcmVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZGVjcmVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2hvd01lbnUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcyk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFs
dWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29k
aW5nKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxp
c3RlbmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2Fi
bGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJs
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT2ZmU2NyZWVuKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1cCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphZGRTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpyZW1vdmVTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludCk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcik6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybU5hbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybU5hbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdU
Ujo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vSW5qZWN0ZWRCdW5kbGUudmNwcm9qOgorCiAy
MDExLTExLTAyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjk4NzU5LXI5ODc3Myk6IHBsYXRmb3JtL21hYy9mb250cy9jb2xvci1iaXRtYXAu
aHRtbCBmYWlsaW5nIG9uIExpb24gSW50ZWwgRGVidWcgKFRlc3RzKQpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaCIKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV1RSIHsKKyAgICAKK1Bhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVh
dGUoUGxhdGZvcm1UZXh0TWFya2VyIG1hcmtlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG1hcmtlcikpOworfQorCitQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKGNvbnN0
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihtYXJrZXIpKTsKK30KKworQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlciBt
YXJrZXIpCisgICAgOiBtX3RleHRNYXJrZXIobWFya2VyKQoreworfQorCitBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoY29uc3QgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXImIG1hcmtlcikKKyAgICA6IG1fdGV4dE1hcmtlcihtYXJrZXIucGxhdGZvcm1UZXh0
TWFya2VyKCkpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIoKQoreworfQorCitQbGF0Zm9ybVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6OnBsYXRmb3JtVGV4dE1hcmtlcigpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIHJldHVybiBtX3RleHRNYXJrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBtX3Rl
eHRNYXJrZXI7CisjZW5kaWYKK30KKyAgICAKK0pTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OndyYXBwZXJDbGFzcygpCit7CisgICAgcmV0dXJuIEpTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OmFjY2Vzc2liaWxpdHlUZXh0TWFya2VyQ2xhc3MoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RSCisKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkpTQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRy
Lmg+CisKK25hbWVzcGFjZSBXVFIgeworCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShQbGF0Zm9ybVVJRWxlbWVudCB1aUVs
ZW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KHVpRWxlbWVudCkpOworfQorICAgIAorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCYgdWlFbGVtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCh1aUVsZW1lbnQpKTsKK30KKworSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp3cmFwcGVyQ2xhc3MoKQoreworICAgIHJldHVybiBKU0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFjY2Vzc2liaWxpdHlVSUVsZW1lbnRDbGFzcygpOworfQorICAgIAorLy8gSW1wbGVt
ZW50YXRpb24KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1ZhbGlkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9lbGVtZW50OyAgICAgICAgICAgIAorfQorICAgIAorLy8gVW5zdXBw
b3J0ZWQgbWV0aG9kcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4KKyNpZiAhUExBVEZPUk0oTUFDKQor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrKCkg
eyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnJhbmdlRm9yTGluZShpbnQgbGluZSkgeyByZXR1cm4gMDsgfQordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQq
KSBjb25zdCB7IH0KK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hp
bGRyZW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgo
dW5zaWduZWQpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9sbGJhcigpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiAw
OyB9CisKKy8vIFRleHQgbWFya2VyIHN1cHBvcnQgKG9ubHkgc3VwcG9ydGVkIG9uIHRoZSBNYWMg
cmlnaHQgbm93KQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQqKSB7IHJldHVybiAwOyB9CitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJl
dHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIDA7IH0KK1Bh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKikgeyByZXR1cm4gMDsgfQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4gMDsgfQorUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJl
dHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGludCB5KSB7IHJldHVybiAw
OyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJl
dHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsg
cmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSopIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKFdJTikKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBvdGhl
ckVsZW1lbnQpCit7CisgICAgcmV0dXJuIHBsYXRmb3JtVUlFbGVtZW50KCkgPT0gb3RoZXJFbGVt
ZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdU
UgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCShyZXZpc2lvbiAwKQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdUUiB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciA6IHB1Ymxp
YyBKU1dyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI+IGNyZWF0ZSgpOworICAgIH5BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigp
OworCisgICAgdm9pZCBtYWtlV2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYg
d2luZG93T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOworICAgIHZpcnR1YWwgSlNDbGFz
c1JlZiB3cmFwcGVyQ2xhc3MoKTsKKyAgICAKKyAgICAvLyBDb250cm9sbGVyIE1ldGhvZHMgLSBw
bGF0Zm9ybS1pbmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMKKyAgICBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IHJvb3RFbGVtZW50KCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBmb2N1c2VkRWxlbWVudCgpOworICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KTsKKworICAgIC8v
IEhlcmUgZm9yIGNvbnNpc3RlbmN5IHdpdGggRFJULiBOb3QgaW1wbGVtZW50ZWQgYmVjYXVzZSB0
aGV5IGRvbid0IGRvIGFueXRoaW5nIG9uIHRoZSBNYWMuCisgICAgdm9pZCBsb2dGb2N1c0V2ZW50
cygpIHsgfQorICAgIHZvaWQgbG9nVmFsdWVDaGFuZ2VFdmVudHMoKSB7IH0KKyAgICB2b2lkIGxv
Z1Njcm9sbGluZ1N0YXJ0RXZlbnRzKCkgeyB9CisgICAgdm9pZCBsb2dBY2Nlc3NpYmlsaXR5RXZl
bnRzKCkgeyB9CisgICAgdm9pZCBhZGROb3RpZmljYXRpb25MaXN0ZW5lcihBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KiwgSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKSB7IH0KKyAgICB2b2lkIG5v
dGlmaWNhdGlvblJlY2VpdmVkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBKU1N0cmluZ1JlZiBl
dmVudE5hbWUpIHsgfQorICAgIAorICAgIHZvaWQgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpIHsg
fQorCitwcml2YXRlOgorICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVFIKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyX2gKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcl9oCisj
ZGVmaW5lIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyX2gKKworI2luY2x1ZGUgIkpTV3JhcHBhYmxl
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgQ0ZUeXBlUmVmIFBs
YXRmb3JtVGV4dE1hcmtlcjsKKyNlbHNlCit0eXBlZGVmIHZvaWQqIFBsYXRmb3JtVGV4dE1hcmtl
cjsKKyNlbmRpZgorCituYW1lc3BhY2UgV1RSIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgOiBwdWJsaWMgSlNXcmFwcGFi
bGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2VyKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyJik7CisKKyAgICB+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoKTsKKyAgICAKKyAgICBQbGF0
Zm9ybVRleHRNYXJrZXIgcGxhdGZvcm1UZXh0TWFya2VyKCkgY29uc3Q7CisgICAgdmlydHVhbCBK
U0NsYXNzUmVmIHdyYXBwZXJDbGFzcygpOworCisgICAgc3RhdGljIEpTT2JqZWN0UmVmIG1ha2VK
U0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyKEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXImKTsKKyAgICBib29sIGlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoUGxhdGZvcm1U
ZXh0TWFya2VyKTsKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihjb25zdCBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciYpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxQbGF0
Zm9ybVRleHRNYXJrZXI+IG1fdGV4dE1hcmtlcjsKKyNlbHNlCisgICAgUGxhdGZvcm1UZXh0TWFy
a2VyIG1fdGV4dE1hcmtlcjsKKyNlbmRpZgorfTsKKworI2lmICFQTEFURk9STShNQUMpCitpbmxp
bmUgYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciopIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RS
CisgICAgCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJfaApJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDEyIEBACiAgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0NoYXIqPihw
YXRoLmNvbnN0RGF0YSgpKSwgcGF0aC5sZW5ndGgoKSk7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygicXQiKSk7CisgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV1RSCiAKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlclF0Lm1vYyIK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAwKQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudF9oCisj
ZGVmaW5lIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRfaAorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgi
CisjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
T2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBQ
TEFURk9STShNQUMpCisjaWZkZWYgX19PQkpDX18KK3R5cGVkZWYgaWQgUGxhdGZvcm1VSUVsZW1l
bnQ7CisjZWxzZQordHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QqIFBsYXRmb3JtVUlFbGVtZW50
OworI2VuZGlmCisjZWxpZiBQTEFURk9STShXSU4pCisjdW5kZWYgX1dJTlNPQ0tBUElfCisjZGVm
aW5lIF9XSU5TT0NLQVBJXyAvLyBQcmV2ZW50IGluY2x1c2lvbiBvZiB3aW5zb2NrLmggaW4gd2lu
ZG93cy5oCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgorI2luY2x1ZGUgPG9sZWFjYy5o
PgorCit0eXBlZGVmIENPTVB0cjxJQWNjZXNzaWJsZT4gUGxhdGZvcm1VSUVsZW1lbnQ7CisjZWxp
ZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8YXRrL2F0ay5oPgordHlwZWRlZiBBdGtPYmplY3Qq
IFBsYXRmb3JtVUlFbGVtZW50OworI2Vsc2UKK3R5cGVkZWYgdm9pZCogUGxhdGZvcm1VSUVsZW1l
bnQ7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpZmRlZiBfX09CSkNfXwordHlwZWRl
ZiBpZCBOb3RpZmljYXRpb25IYW5kbGVyOworI2Vsc2UKK3R5cGVkZWYgc3RydWN0IG9iamNfb2Jq
ZWN0KiBOb3RpZmljYXRpb25IYW5kbGVyOworI2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIFdU
UiB7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgOiBwdWJsaWMgSlNXcmFwcGFibGUg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IGNyZWF0ZShQbGF0Zm9ybVVJRWxlbWVudCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsK
KworICAgIH5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCk7CisKKyAgICBQbGF0Zm9ybVVJRWxlbWVu
dCBwbGF0Zm9ybVVJRWxlbWVudCgpIHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIHZpcnR1YWwg
SlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKTsKKworICAgIHN0YXRpYyBKU09iamVjdFJlZiBtYWtl
SlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCYpOworCisgICAgYm9vbCBpc0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQq
IG90aGVyRWxlbWVudCk7CisgICAgCisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBlbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpOworICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gY2hpbGRBdEluZGV4KHVuc2lnbmVkKTsKKyAgICB1bnNpZ25lZCBp
bmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopOworICAgIGludCBjaGlsZHJlbkNv
dW50KCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB0aXRsZVVJRWxl
bWVudCgpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gcGFyZW50RWxl
bWVudCgpOworCisgICAgdm9pZCB0YWtlRm9jdXMoKTsKKyAgICB2b2lkIHRha2VTZWxlY3Rpb24o
KTsKKyAgICB2b2lkIGFkZFNlbGVjdGlvbigpOworICAgIHZvaWQgcmVtb3ZlU2VsZWN0aW9uKCk7
CisKKyAgICAvLyBNZXRob2RzIC0gcGxhdGZvcm0taW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25z
CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFsbEF0dHJpYnV0ZXMoKTsKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cygpOworICAg
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gbGlua2VkVUlFbGVtZW50QXRJbmRl
eCh1bnNpZ25lZCk7CisgICAgCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0
ZXNPZkRvY3VtZW50TGlua3MoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmli
dXRlc09mQ2hpbGRyZW4oKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGFyYW1ldGVy
aXplZEF0dHJpYnV0ZU5hbWVzKCk7CisgICAgdm9pZCBpbmNyZW1lbnQoKTsKKyAgICB2b2lkIGRl
Y3JlbWVudCgpOworICAgIHZvaWQgc2hvd01lbnUoKTsKKyAgICB2b2lkIHByZXNzKCk7CisKKyAg
ICAvLyBBdHRyaWJ1dGVzIC0gcGxhdGZvcm0taW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCisg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmVmIGF0dHJpYnV0ZSk7CisgICAgZG91YmxlIG51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmVmIGF0dHJpYnV0ZSk7CisgICAgYm9vbCBib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYg
YXR0cmlidXRlKTsKKyAgICBib29sIGlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSk7CisgICAgYm9vbCBpc0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmIGF0dHJp
YnV0ZSk7CisgICAgYm9vbCBpc0FjdGlvblN1cHBvcnRlZChKU1N0cmluZ1JlZiBhY3Rpb24pOwor
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByb2xlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IHN1YnJvbGUoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcm9sZURl
c2NyaXB0aW9uKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRpdGxlKCk7CisgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGRlc2NyaXB0aW9uKCk7CisgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IGxhbmd1YWdlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0
cmluZ1ZhbHVlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFjY2Vzc2liaWxpdHlW
YWx1ZSgpIGNvbnN0OworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBoZWxwVGV4dCgpIGNv
bnN0OworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBvcmllbnRhdGlvbigpIGNvbnN0Owor
ICAgIGRvdWJsZSB4KCk7CisgICAgZG91YmxlIHkoKTsKKyAgICBkb3VibGUgd2lkdGgoKTsKKyAg
ICBkb3VibGUgaGVpZ2h0KCk7CisgICAgZG91YmxlIGludFZhbHVlKCkgY29uc3Q7CisgICAgZG91
YmxlIG1pblZhbHVlKCk7CisgICAgZG91YmxlIG1heFZhbHVlKCk7CisgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IHZhbHVlRGVzY3JpcHRpb24oKTsKKyAgICBpbnQgaW5zZXJ0aW9uUG9pbnRM
aW5lTnVtYmVyKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNlbGVjdGVkVGV4dFJh
bmdlKCk7CisgICAgYm9vbCBpc0VuYWJsZWQoKTsKKyAgICBib29sIGlzUmVxdWlyZWQoKSBjb25z
dDsKKyAgICAKKyAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0OworICAgIGJvb2wgaXNGb2N1c2Fi
bGUoKSBjb25zdDsKKyAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25zdDsKKyAgICBib29sIGlzU2Vs
ZWN0YWJsZSgpIGNvbnN0OworICAgIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFNlbGVjdGVkQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopIGNvbnN0Owor
ICAgIHVuc2lnbmVkIHNlbGVjdGVkQ2hpbGRyZW5Db3VudCgpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gc2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQp
IGNvbnN0OworICAgIAorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworICAgIGJvb2wgaXNFeHBh
bmRlZCgpIGNvbnN0OworICAgIGJvb2wgaXNDaGVja2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc1Zp
c2libGUoKSBjb25zdDsKKyAgICBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Q7CisgICAgYm9vbCBp
c0NvbGxhcHNlZCgpIGNvbnN0OworICAgIGJvb2wgaXNJZ25vcmVkKCkgY29uc3Q7CisgICAgYm9v
bCBoYXNQb3B1cCgpIGNvbnN0OworICAgIGludCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0Owor
ICAgIGRvdWJsZSBjbGlja1BvaW50WCgpOworICAgIGRvdWJsZSBjbGlja1BvaW50WSgpOworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBkb2N1bWVudEVuY29kaW5nKCk7CisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IGRvY3VtZW50VVJJKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHVybCgpOworCisgICAgLy8gQ1NTMy1zcGVlY2ggcHJvcGVydGllcy4KKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gc3BlYWsoKTsKKyAgICAKKyAgICAvLyBUYWJsZS1zcGVjaWZp
YyBhdHRyaWJ1dGVzCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkNv
bHVtbkhlYWRlcnMoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09m
Um93SGVhZGVycygpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZD
b2x1bW5zKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZlJvd3Mo
KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mVmlzaWJsZUNlbGxz
KCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkhlYWRlcigpOwor
ICAgIGludCBpbmRleEluVGFibGUoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcm93
SW5kZXhSYW5nZSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb2x1bW5JbmRleFJh
bmdlKCk7CisgICAgaW50IHJvd0NvdW50KCk7CisgICAgaW50IGNvbHVtbkNvdW50KCk7CisgICAg
CisgICAgLy8gVHJlZS9PdXRsaW5lIHNwZWNpZmljIGF0dHJpYnV0ZXMKKyAgICBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCk7Cisg
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBkaXNjbG9zZWRCeVJvdygpOwor
ICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZGlzY2xvc2VkUm93QXRJbmRl
eCh1bnNpZ25lZCk7CisKKyAgICAvLyBBUklBIHNwZWNpZmljCisgICAgUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBhcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkKTsKKyAg
ICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFyaWFGbG93VG9FbGVtZW50QXRJ
bmRleCh1bnNpZ25lZCk7CisKKyAgICAvLyBBUklBIERyYWcgYW5kIERyb3AKKyAgICBib29sIGFy
aWFJc0dyYWJiZWQoKSBjb25zdDsKKyAgICAvLyBBIHNwYWNlIGNvbmNhdGVudGF0ZWQgc3RyaW5n
IG9mIGFsbCB0aGUgZHJvcCBlZmZlY3RzLgorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBh
cmlhRHJvcEVmZmVjdHMoKSBjb25zdDsKKyAgICAKKyAgICAvLyBQYXJhbWV0ZXJpemVkIGF0dHJp
YnV0ZXMKKyAgICBpbnQgbGluZUZvckluZGV4KGludCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHJhbmdlRm9yTGluZShpbnQpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBi
b3VuZHNGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2
b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdGb3JSYW5nZSh1bnNpZ25l
ZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIGJvb2wgYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKHVuc2ln
bmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gdWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpTU3RyaW5nUmVm
IHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCk7CisgICAgCisgICAgLy8gVGFibGUt
c3BlY2lmaWMKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGNlbGxGb3JD
b2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOworCisgICAgLy8gU2Ny
b2xsYXJlYS1zcGVjaWZpYworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
aG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdDsKKworICAgIC8vIFRleHQgbWFy
a2Vycy4KKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRN
YXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopOyAgICAKKyAgICBQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogZW5kTWFya2VyKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyPiBzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSopOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IGVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSopOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHRleHRN
YXJrZXJGb3JQb2ludChpbnQgeCwgaW50IHkpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IHByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciop
OworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IG5leHRUZXh0TWFya2Vy
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBhY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKKyAgICBpbnQgdGV4
dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKKyAgICAK
KyAgICAvLyBOb3RpZmljYXRpb25zCisgICAgLy8gRnVuY3Rpb24gY2FsbGJhY2sgc2hvdWxkIHRh
a2Ugb25lIGFyZ3VtZW50LCB0aGUgbmFtZSBvZiB0aGUgbm90aWZpY2F0aW9uLgorICAgIGJvb2wg
YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKKyAg
ICAvLyBNYWtlIHN1cmUgeW91IGNhbGwgcmVtb3ZlLCBiZWNhdXNlIHlvdSBjYW4ndCByZWx5IG9u
IG9iamVjdHMgYmVpbmcgZGVhbGxvY2F0ZWQgaW4gYSB0aW1lbHkgZmFzaGlvbi4KKyAgICBib29s
IHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgCitwcml2YXRlOgorICAgIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQpOworICAgIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOworCisgICAgdm9pZCBnZXRM
aW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYp
OworICAgIHZvaWQgZ2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+ID4mKTsKKyAgICB2b2lkIGdldENoaWxkcmVuKFZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gPiYpOworICAgIHZvaWQgZ2V0Q2hpbGRyZW5XaXRoUmFuZ2UoVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiwgdW5zaWduZWQgbG9jYXRpb24s
IHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICBQbGF0Zm9ybVVJRWxlbWVudCBtX2VsZW1lbnQ7Cisg
ICAgCisgICAgLy8gQSByZXRhaW5lZCwgcGxhdGZvcm0gc3BlY2lmaWMgb2JqZWN0IHVzZWQgdG8g
aGVscCBtYW5hZ2Ugbm90aWZpY2F0aW9ucyBmb3IgdGhpcyBvYmplY3QuCisjaWYgUExBVEZPUk0o
TUFDKQorICAgIE5vdGlmaWNhdGlvbkhhbmRsZXIgbV9ub3RpZmljYXRpb25IYW5kbGVyOworI2Vu
ZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXVFIKKyAgICAKKyNlbmRpZiAvLyBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50X2gKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAJKHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw0ICs2NSwxMCBAQAogICAgIHJldHVybiB1cmw7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiZ3RrIikpOworICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIuaCIKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbmNsdWRlICJK
U0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXVFIgeworICAgIAorUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjpjcmVhdGUoUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgbWFya2VyUmFuZ2UpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSk7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UmIG1hcmtlclJhbmdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkpOworfQorCitBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKFBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlIG1hcmtlclJhbmdlKQorICAgIDogbV90ZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSYgbWFy
a2VyUmFuZ2UpCisgICAgOiBtX3RleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZS5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpKQoreworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgpCit7Cit9CisKK1BsYXRmb3JtVGV4dE1hcmtl
clJhbmdlIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0dXJuIG1fdGV4dE1hcmtl
clJhbmdlLmdldCgpOworI2Vsc2UKKyAgICByZXR1cm4gbV90ZXh0TWFya2VyUmFuZ2U7CisjZW5k
aWYKK30KKyAgICAKK0pTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6d3Jh
cHBlckNsYXNzKCkKK3sKKyAgICByZXR1cm4gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjphY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlQ2xhc3MoKTsKK30KKyAgICAKK30gLy8gbmFt
ZXNwYWNlIFdUUgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNCArNjQsMTAgQEAKICAgICByZXR1cm4gSlNTdHJpbmdSZXRhaW4odXJsKTsgLy8gVE9ETy4K
IH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0
Zm9ybU5hbWUoKQoreworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUo
QWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ3aW4iKSk7CisgICAgcmV0dXJu
IHBsYXRmb3JtTmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbAkocmV2aXNpb24gMCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworbW9kdWxlIFdUUiB7CisKKyAgICBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBy
b290RWxlbWVudDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQgZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxl
bWVudEF0UG9pbnQoaW4gaW50IHgsIGluIGludCB5KTsKKyAgICAgICAgCisgICAgICAgIHZvaWQg
YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50
LCBpbiBvYmplY3QgZnVuY3Rpb25DYWxsYmFjayk7CisgICAgICAgIHZvaWQgbm90aWZpY2F0aW9u
UmVjZWl2ZWQoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50LCBpbiBET01TdHJpbmcg
ZXZlbnROYW1lKTsKKworICAgICAgICB2b2lkIGxvZ0ZvY3VzRXZlbnRzKCk7CisgICAgICAgIHZv
aWQgbG9nVmFsdWVDaGFuZ2VFdmVudHMoKTsKKyAgICAgICAgdm9pZCBsb2dTY3JvbGxpbmdTdGFy
dEV2ZW50cygpOworICAgICAgICB2b2lkIGxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKTsKKyAgICAg
ICAgdm9pZCByZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CisgICAgfTsKKworfQpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRs
CShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmlkbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBXVFIgeworCisgICAgaW50ZXJmYWNl
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgeworICAgICAgICBib29sZWFuIGlzRXF1YWwo
aW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBvdGhlck1hcmtlclJhbmdlKTsKKyAgICB9
OworCit9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmlkbAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRsCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIFdUUiB7CisKKyAgICBpbnRlcmZh
Y2UgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgeworICAgICAgICBib29sZWFuIGlzRXF1YWwoaW4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgb3RoZXJNYXJrZXIpOworICAgIH07CisKK30KSW5kZXg6
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAkocmV2aXNp
b24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworbW9kdWxlIFdUUiB7CisKKyAgICBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCB7CisgICAgICAgIGJvb2xlYW4gaXNFcXVhbChpbiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IG90aGVyRWxlbWVudCk7CisKKyAgICAgICAgLy8gRWxlbWVudCBhY2Nlc3MuCisgICAg
ICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxlbWVudEF0UG9pbnQoaW4gaW50IHgsIGluIGlu
dCB5KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBjaGlsZEF0SW5kZXgoaW4gdW5z
aWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgaW5kZXhPZkNoaWxkKGlu
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgY2hpbGQpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IGxpbmtlZFVJRWxlbWVudEF0SW5kZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7Cisg
ICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgc2VsZWN0ZWRDaGlsZEF0SW5kZXgoaW4gdW5z
aWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIHZvaWQgc2V0U2VsZWN0ZWRDaGlsZChpbiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IGVsZW1lbnQpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50IHRpdGxlVUlFbGVtZW50KCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgcGFy
ZW50RWxlbWVudCgpOworICAgICAgICAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyByb2xlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHN1YnJvbGU7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcm9sZURlc2NyaXB0aW9uOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRpdGxlOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2NyaXB0aW9uOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGxhbmd1YWdlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGhlbHBUZXh0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHZhbHVlRGVzY3JpcHRpb247CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
dXJsOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNwZWFrOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG9yaWVudGF0aW9uOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgaW50IGluc2VydGlvblBvaW50TGluZU51bWJlcjsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzZWxlY3RlZFRleHRSYW5nZTsKKyAgICAKKyAgICAg
ICAgRE9NU3RyaW5nIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKGluIERPTVN0cmluZyBhdHRyKTsKKyAg
ICAgICAgZG91YmxlIG51bWJlckF0dHJpYnV0ZVZhbHVlKGluIERPTVN0cmluZyBhdHRyKTsKKyAg
ICAgICAgYm9vbGVhbiBib29sQXR0cmlidXRlVmFsdWUoaW4gRE9NU3RyaW5nIGF0dHIpOworICAg
ICAgICBib29sZWFuIGlzQXR0cmlidXRlU3VwcG9ydGVkKGluIERPTVN0cmluZyBhdHRyKTsKKyAg
ICAgICAgYm9vbGVhbiBpc0F0dHJpYnV0ZVNldHRhYmxlKGluIERPTVN0cmluZyBhdHRyKTsKKyAg
ICAgICAgYm9vbGVhbiBpc0FjdGlvblN1cHBvcnRlZChpbiBET01TdHJpbmcgYXR0cik7CisKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzdHJpbmdWYWx1ZTsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGludCBpbnRWYWx1ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGludCBtaW5WYWx1ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBtYXhWYWx1
ZTsKKyAgICAgICAgCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRW5hYmxl
ZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNSZXF1aXJlZDsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNGb2N1c2VkOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1NlbGVjdGVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBpc011bHRpU2VsZWN0YWJsZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gaXNFeHBhbmRlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
aXNDaGVja2VkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1Zpc2libGU7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzQ29sbGFwc2VkOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBoYXNQb3B1cDsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gaXNJZ25vcmVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBpc09mZlNjcmVlbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
aXNWYWxpZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBoaWVyYXJjaGljYWxMZXZl
bDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYXJpYUlzR3JhYmJlZDsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBhcmlhRHJvcEVmZmVjdHM7CisgICAg
ICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IHg7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBpbnQgeTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCB3aWR0aDsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBoZWlnaHQ7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBpbnQgY2xpY2tQb2ludFg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBp
bnQgY2xpY2tQb2ludFk7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBjaGlsZHJl
bkNvdW50OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IHNlbGVjdGVkQ2hpbGRyZW5D
b3VudDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCByb3dDb3VudDsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGludCBjb2x1bW5Db3VudDsKKworICAgICAgICAvLyBBY3Rpb25z
LgorICAgICAgICB2b2lkIGluY3JlbWVudCgpOworICAgICAgICB2b2lkIGRlY3JlbWVudCgpOwor
ICAgICAgICB2b2lkIHByZXNzKCk7CisgICAgICAgIHZvaWQgc2hvd01lbnUoKTsKKworICAgICAg
ICAvLyBBdHRyaWJ1dGUgaW5mby4KKyAgICAgICAgRE9NU3RyaW5nIGFsbEF0dHJpYnV0ZXMoKTsK
KyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZkNoaWxkcmVuKCk7CisgICAgICAgIERPTVN0
cmluZyBhdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRzKCk7CisgICAgICAgIERPTVN0cmluZyBh
dHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKCk7CisgICAgICAgIAorICAgICAgICAvLyBUYWJsZSBp
bmZvLgorICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpOworICAg
ICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mUm93SGVhZGVycygpOworICAgICAgICBET01TdHJp
bmcgYXR0cmlidXRlc09mQ29sdW1ucygpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09m
Um93cygpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mVmlzaWJsZUNlbGxzKCk7Cisg
ICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVzT2ZIZWFkZXIoKTsKKyAgICAgICAgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCBjZWxsRm9yQ29sdW1uQW5kUm93KGluIHVuc2lnbmVkIGxvbmcgY29sdW1u
LCBpbiB1bnNpZ25lZCBsb25nIHJvdyk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
c2VsZWN0ZWRSb3dBdEluZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IGRpc2Nsb3NlZEJ5Um93KCk7CisgICAgICAgIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQgZGlzY2xvc2VkUm93QXRJbmRleChpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsK
KyAgICAgICAgaW50IGluZGV4SW5UYWJsZSgpOworICAgICAgICBET01TdHJpbmcgcm93SW5kZXhS
YW5nZSgpOworICAgICAgICBET01TdHJpbmcgY29sdW1uSW5kZXhSYW5nZSgpOworICAgICAgICBp
bnQgcm93Q291bnQoKTsKKyAgICAgICAgaW50IGNvbHVtbkNvdW50KCk7CisgICAgCisgICAgICAg
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgYXJpYU93bnNFbGVtZW50QXRJbmRleChpbiB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBhcmlhRmxvd1Rv
RWxlbWVudEF0SW5kZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisKKyAgICAgICAgLy8gUGFy
YW1hdGVyaXplZCBhdHRyaWJ1dGVzLgorICAgICAgICBET01TdHJpbmcgcGFyYW1ldGVyaXplZEF0
dHJpYnV0ZU5hbWVzKCk7CisgICAgICAgIGludCBsaW5lRm9ySW5kZXgoaW4gaW50IGluZGV4KTsK
KyAgICAgICAgRE9NU3RyaW5nIHJhbmdlRm9yTGluZShpbiBpbnQgaW5kZXgpOworICAgICAgICBE
T01TdHJpbmcgYm91bmRzRm9yUmFuZ2UoaW4gdW5zaWduZWQgbG9uZyBsb2NhdGlvbiwgaW4gdW5z
aWduZWQgbG9uZyBsZW5ndGgpOworICAgICAgICBET01TdHJpbmcgc3RyaW5nRm9yUmFuZ2UoaW4g
dW5zaWduZWQgbG9uZyBsb2NhdGlvbiwgaW4gdW5zaWduZWQgbG9uZyBsZW5ndGgpOworICAgICAg
ICBET01TdHJpbmcgYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKGluIHVuc2lnbmVkIGxvbmcgbG9j
YXRpb24sIGluIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKKyAgICAgICAgYm9vbGVhbiBhdHRyaWJ1
dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQoaW4gdW5zaWduZWQgbG9uZyBsb2NhdGlvbiwgaW4g
dW5zaWduZWQgbG9uZyBsZW5ndGgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHVp
RWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHN0YXJ0
RWxlbWVudCwgaW4gYm9vbGVhbiBpc0RpcmVjdGlvbk5leHQsIGluIERPTVN0cmluZyBzZWFyY2hL
ZXksIGluIERPTVN0cmluZyBzZWFyY2hUZXh0KTsKKyAgICAgICAgdm9pZCBzZXRTZWxlY3RlZFRl
eHRSYW5nZShpbiB1bnNpZ25lZCBsb25nIGxvY2F0aW9uLCBpbiB1bnNpZ25lZCBsb25nIGxlbmd0
aCk7CisKKyAgICAgICAgLy8gU2Nyb2xsIGFyZWEgYXR0cmlidXRlcy4KKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgaG9yaXpvbnRhbFNjcm9sbGJhcjsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgdmVydGlj
YWxTY3JvbGxiYXI7CisKKyAgICAgICAgLy8gVGV4dCBtYXJrZXJzLgorICAgICAgICBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlIHRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoaW4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBlbGVtZW50KTsgICAgCisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UgdGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhpbiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBzdGFydE1hcmtlciwgaW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgZW5kTWFya2Vy
KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgc3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgcmFuZ2UpOworICAg
ICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBlbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgcmFuZ2UpOworICAgICAgICBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciB0ZXh0TWFya2VyRm9yUG9pbnQoaW4gaW50IHgsIGluIGludCB5
KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgcHJldmlvdXNUZXh0TWFya2VyKGlu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIG1hcmtlcik7CisgICAgICAgIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyIG5leHRUZXh0TWFya2VyKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIG1hcmtl
cik7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIG1hcmtlcik7CisgICAgICAg
IERPTVN0cmluZyBzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoaW4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSByYW5nZSk7CisgICAgICAgIGludCB0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoaW4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSByYW5nZSk7CisKKyAgICAgICAgLy8gTm90aWZp
Y2F0aW9uIHN1cHBvcnQuCisgICAgICAgIGJvb2xlYW4gYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIo
aW4gb2JqZWN0IGNhbGxiYWNrRnVuY3Rpb24pOworICAgICAgICBib29sZWFuIHJlbW92ZU5vdGlm
aWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIAorICAgIH07CisKK30KSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiA5OTEyOCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDggQEAKICAgICAg
ICAgdm9pZCBzZXRCYWNraW5nU2NhbGVGYWN0b3IoaW4gZG91YmxlIGJhY2tpbmdTY2FsZUZhY3Rv
ciwgaW4gb2JqZWN0IGNhbGxiYWNrKTsKIAogICAgICAgICB2b2lkIHNldFdpbmRvd0lzS2V5KGlu
IGJvb2xlYW4gaXNLZXkpOworICAgICAgICAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBwbGF0Zm9ybU5hbWU7CiAgICAgfTsKIAogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmNwcAkocmV2aXNpb24gOTkxMjgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1NSw2
ICs2NTUsOCBAQAogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5nY0NvbnRyb2xsZXIoKS0+
bWFrZVdpbmRvd09iamVjdChjb250ZXh0LCB3aW5kb3csICZleGNlcHRpb24pOwogICAgIEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5ldmVudFNlbmRpbmdDb250cm9sbGVyKCktPm1ha2VXaW5kb3dP
YmplY3QoY29udGV4dCwgd2luZG93LCAmZXhjZXB0aW9uKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6
c2hhcmVkKCkudGV4dElucHV0Q29udHJvbGxlcigpLT5tYWtlV2luZG93T2JqZWN0KGNvbnRleHQs
IHdpbmRvdywgJmV4Y2VwdGlvbik7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKCktPm1ha2VXaW5kb3dPYmplY3QoY29udGV4dCwgd2luZG93LCAm
ZXhjZXB0aW9uKTsKKwogI2lmIFBMQVRGT1JNKFFUKQogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjppbmplY3RJbnRlcm5hbHNPYmplY3QoY29udGV4dCk7CiAjZWxzZQpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAJKHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw2ICsx
OTIsNyBAQAogICAgIG1fZ2NDb250cm9sbGVyID0gR0NDb250cm9sbGVyOjpjcmVhdGUoKTsKICAg
ICBtX2V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgPSBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjcmVh
dGUoKTsKICAgICBtX3RleHRJbnB1dENvbnRyb2xsZXIgPSBUZXh0SW5wdXRDb250cm9sbGVyOjpj
cmVhdGUoKTsKKyAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OmNyZWF0ZSgpOwogCiAgICAgV0tCdW5kbGVTZXRTaG91bGRUcmFja1Zpc2l0ZWRM
aW5rcyhtX2J1bmRsZSwgZmFsc2UpOwogICAgIFdLQnVuZGxlUmVtb3ZlQWxsVmlzaXRlZExpbmtz
KG1fYnVuZGxlKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZU1hYy5tbQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0JKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5o
IgorCituYW1lc3BhY2UgV1RSIHsKKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZTo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBvdGhlcikKK3sKKyAg
ICByZXR1cm4gWyhpZClwbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGlzRXF1YWw6KGlkKW90aGVy
LT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdU
UgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbQko
cmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBv
cnQgIkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisKK25hbWVzcGFjZSBXVFIgeworCitib29s
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiBvdGhlcikKK3sKKyAgICByZXR1cm4gWyhpZClwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFs
OihpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworfQorCit9IC8vIG5hbWVzcGFjZSBX
VFIKKwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShy
ZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDI4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgorI2ltcG9y
dCAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbXBvcnQgIkluamVjdGVkQnVuZGxlUGFnZS5oIgorCisj
aW1wb3J0IDxBcHBLaXQvTlNBY2Nlc3NpYmlsaXR5Lmg+CisjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSlNTdHJpbmdSZWZDRi5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS0J1bmRsZUZyYW1lLmg+Cisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKKworI2lm
bmRlZiBOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eU93bnNBdHRyaWJ1dGUgQCJBWE93bnMiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxp
dHlHcmFiYmVkQXR0cmlidXRlCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1
dGUgQCJBWEdyYWJiZWQiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlEcm9wRWZm
ZWN0c0F0dHJpYnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0
ZSBAIkFYRHJvcEVmZmVjdHMiCisjZW5kaWYKKworLy8gSWYgYW4gdW5zdXBwb3J0ZWQgYXR0cmli
dXRlIGlzIHBhc3NlZCBpbiwgaXQgd2lsbCByYWlzZSBhbiBhY2Nlc3NpYmlsaXR5IGV4Y2VwdGlv
bi4gVGhlc2UgYXJlIHVzdWFsbHkgY2F1Z2h0IGJ5IHRoZSBBY2Nlc3NpYmlsaXR5IFJ1bnRpbWUg
dG8gaW5mb3JtCisvLyB0aGUgQVggY2xpZW50IGFwcCBvZiB0aGUgZXJyb3IuIEhvd2V2ZXIsIERS
VCBpcyB0aGUgQVggY2xpZW50IGFwcCwgc28gaXQgbXVzdCBjYXRjaCB0aGVzZSBleGNlcHRpb25z
LgorI2RlZmluZSBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMgQHRyeSB7CisjZGVmaW5lIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmUpIHsgaWYgKCFbW2UgbmFt
ZV0gaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbl0pIEB0aHJvdzsgfQor
CisKK3R5cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1l
bnQsIE5TU3RyaW5nKiBub3RpZmljYXRpb24sIHZvaWQqIGNvbnRleHQpOworCitAaW50ZXJmYWNl
IE5TT2JqZWN0IChXZWJLaXRBY2Nlc3NpYmlsaXR5QWRkaXRpb25zKQorLSAoTlNBcnJheSAqKWFj
Y2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVlczooTlNTdHJpbmcgKilhdHRyaWJ1dGUgaW5k
ZXg6KE5TVUludGVnZXIpaW5kZXggbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQ7CistICh2
b2lkKWFjY2Vzc2liaWxpdHlTZXRTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zOihCT09MKXJlcG9z
dDsKKy0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGlsZDooaWQpY2hpbGQ7Cist
IChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAq
KWF0dHJpYnV0ZTsKK0BlbmQKKworQGludGVyZmFjZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRp
dGlvbnMpCisrIChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYp
anNTdHJpbmdSZWY7CistIChKU1N0cmluZ1JlZiljcmVhdGVKU1N0cmluZ1JlZjsKK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKKworKyAoTlNT
dHJpbmcgKilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCit7
CisgICAgaWYgKCFqc1N0cmluZ1JlZikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgCisgICAg
Q0ZTdHJpbmdSZWYgY2ZTdHJpbmcgPSBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBqc1N0cmluZ1JlZik7CisgICAgcmV0dXJuIFsoTlNTdHJpbmcgKiljZlN0cmluZyBh
dXRvcmVsZWFzZV07Cit9CisKKy0gKEpTU3RyaW5nUmVmKWNyZWF0ZUpTU3RyaW5nUmVmCit7Cisg
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilzZWxmKTsK
K30KKworQGVuZAorCitAaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
IDogTlNPYmplY3QKK3sKKyAgICBpZCBtX3BsYXRmb3JtRWxlbWVudDsKKyAgICBKU1ZhbHVlUmVm
IG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjazsKK30KKworQGVuZAorCitAaW1wbGVtZW50
YXRpb24gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIKKworLSAoaWQpaW5pdFdpdGhQ
bGF0Zm9ybUVsZW1lbnQ6KGlkKXBsYXRmb3JtRWxlbWVudAoreworICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CisKKyAgICBtX3BsYXRmb3JtRWxlbWVudCA9IHBsYXRmb3JtRWxlbWVudDsKKyAgICAK
KyAgICAvLyBPbmNlIGFuIG9iamVjdCBzdGFydHMgcmVxdWVzdGluZyBub3RpZmljYXRpb25zLCBp
dCdzIG9uIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHByb2dyYW0uCisgICAgLy8gVGhpcyBpcyB0
byBhdm9pZCBhbnkgcmFjZSBjb25kaXRpb25zIGJldHdlZW4gdGVzdHMgdHVybmluZyB0aGlzIGZs
YWcgb24gYW5kIG9mZi4gSW5zdGVhZAorICAgIC8vIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyIGNhbiBqdXN0IGxpc3RlbiB3aGVuIHRoZXkgd2FudCB0by4KKyAgICBbbV9wbGF0Zm9y
bUVsZW1lbnQgYWNjZXNzaWJpbGl0eVNldFNob3VsZFJlcG9zdE5vdGlmaWNhdGlvbnM6WUVTXTsK
KyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9ub3RpZmljYXRpb25SZWNlaXZlZDopIG5hbWU6QCJBWERS
VE5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbF07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKyAKKy0g
KHZvaWQpZGVhbGxvYworeworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CisKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFt
ZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShXVFI6OkluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5wYWdlKCktPnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZy
YW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyAgICAKKyAgICBKU1ZhbHVlVW5w
cm90ZWN0KGNvbnRleHQsIG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayk7CisgICAgbV9u
b3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrID0gMDsKKyAgICAKKyAgICBbc3VwZXIgZGVhbGxv
Y107Cit9CisKKy0gKHZvaWQpX25vdGlmaWNhdGlvblJlY2VpdmVkOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbgoreworICAgIE5TU3RyaW5nICpub3RpZmljYXRpb25OYW1lID0gW1tub3Rp
ZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpAIm5vdGlmaWNhdGlvbk5hbWUiXTsKKyAg
ICBpZiAoIW5vdGlmaWNhdGlvbk5hbWUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBXS0J1
bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShXVFI6Oklu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVm
IGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsK
KworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBqc05vdGlmaWNhdGlvbihBZG9wdCwgW25v
dGlmaWNhdGlvbk5hbWUgY3JlYXRlSlNTdHJpbmdSZWZdKTsKKyAgICBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50ID0gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwganNOb3RpZmljYXRpb24uZ2V0KCkpOwor
ICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJl
Zj4obV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKSwgMCwgMSwgJmFyZ3VtZW50LCAwKTsK
K30KKworLSAodm9pZClzZXRDYWxsYmFjazooSlNWYWx1ZVJlZiljYWxsYmFjaworeworICAgIGlm
ICghY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKyAKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1h
aW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShXVFI6OkluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1
bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKworICAgIC8vIFJlbGVh
c2UgdGhlIG9sZCBjYWxsYmFjay4KKyAgICBpZiAobV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxi
YWNrKSAKKyAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChjb250ZXh0LCBtX25vdGlmaWNhdGlvbkZ1
bmN0aW9uQ2FsbGJhY2spOworICAgIAorICAgIG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFj
ayA9IGNhbGxiYWNrOworICAgIEpTVmFsdWVQcm90ZWN0KGNvbnRleHQsIG1fbm90aWZpY2F0aW9u
RnVuY3Rpb25DYWxsYmFjayk7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdUUiB7CisKK0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1l
bnQgZWxlbWVudCkKKyAgICA6IG1fZWxlbWVudChlbGVtZW50KQorICAgICwgbV9ub3RpZmljYXRp
b25IYW5kbGVyKDApCit7CisgICAgLy8gRklYTUU6IGFwQHdlYmtpdC5vcmcgc2F5cyBPYmpDIG9i
amVjdHMgbmVlZCB0byBiZSBDRlJldGFpbmVkL0NGUmVsZWFzZSB0byBiZSBHQy1jb21wbGlhbnQg
b24gdGhlIG1hYy4KKyAgICBbbV9lbGVtZW50IHJldGFpbl07Cit9CisKK0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCYgb3RoZXIpCisgICAgOiBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQorICAgICwgbV9u
b3RpZmljYXRpb25IYW5kbGVyKDApCit7CisgICAgW21fZWxlbWVudCByZXRhaW5dOworfQorCitB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCit7CisgICAg
Ly8gVGhlIG5vdGlmaWNhdGlvbiBoYW5kbGVyIHNob3VsZCBiZSBuaWwgYmVjYXVzZSByZW1vdmVO
b3RpZmljYXRpb25MaXN0ZW5lcigpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGluIHRoZSB0ZXN0
LgorICAgIEFTU0VSVCghbV9ub3RpZmljYXRpb25IYW5kbGVyKTsKKyAgICBbbV9lbGVtZW50IHJl
bGVhc2VdOworfQorCitzdGF0aWMgTlNTdHJpbmcqIGRlc2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1
ZU9iamVjdCwgaWQgZm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplY3QpCit7CisgICAgaWYgKCF2YWx1
ZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoW3ZhbHVlT2JqZWN0IGlz
S2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiPGFycmF5IG9mIHNpemUgJWQ+IiwgWyhOU0FycmF5Kil2YWx1ZU9i
amVjdCBjb3VudF1dOworCisgICAgaWYgKFt2YWx1ZU9iamVjdCBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gWyhOU051bWJlciopdmFsdWVPYmplY3Qgc3Ry
aW5nVmFsdWVdOworCisgICAgaWYgKFt2YWx1ZU9iamVjdCBpc0tpbmRPZkNsYXNzOltOU1ZhbHVl
IGNsYXNzXV0pIHsKKyAgICAgICAgTlNTdHJpbmcqIHR5cGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENTdHJpbmc6W3ZhbHVlT2JqZWN0IG9iakNUeXBlXSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5j
b2RpbmddOworICAgICAgICBOU1ZhbHVlKiB2YWx1ZSA9IChOU1ZhbHVlKil2YWx1ZU9iamVjdDsK
KyAgICAgICAgaWYgKFt0eXBlIHJhbmdlT2ZTdHJpbmc6QCJOU1JlY3QiXS5sZW5ndGggPiAwKQor
ICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTlNSZWN0OiAl
QCIsIE5TU3RyaW5nRnJvbVJlY3QoW3ZhbHVlIHJlY3RWYWx1ZV0pXTsKKyAgICAgICAgaWYgKFt0
eXBlIHJhbmdlT2ZTdHJpbmc6QCJOU1BvaW50Il0ubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHJl
dHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIk5TUG9pbnQ6ICVAIiwgTlNTdHJpbmdG
cm9tUG9pbnQoW3ZhbHVlIHBvaW50VmFsdWVdKV07CisgICAgICAgIGlmIChbdHlwZSByYW5nZU9m
U3RyaW5nOkAiTlNTaXplIl0ubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIk5TU2l6ZTogJUAiLCBOU1N0cmluZ0Zyb21TaXplKFt2YWx1
ZSBzaXplVmFsdWVdKV07CisgICAgICAgIGlmIChbdHlwZSByYW5nZU9mU3RyaW5nOkAiTlNSYW5n
ZSJdLmxlbmd0aCA+IDApCisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJOU1JhbmdlOiAlQCIsIE5TU3RyaW5nRnJvbVJhbmdlKFt2YWx1ZSByYW5nZVZhbHVl
XSldOworICAgIH0KKworICAgIC8vIFN0cmlwIGFic29sdXRlIFVSTCBwYXRocworICAgIE5TU3Ry
aW5nKiBkZXNjcmlwdGlvbiA9IFt2YWx1ZU9iamVjdCBkZXNjcmlwdGlvbl07CisgICAgTlNSYW5n
ZSByYW5nZSA9IFtkZXNjcmlwdGlvbiByYW5nZU9mU3RyaW5nOkAiTGF5b3V0VGVzdHMiXTsKKyAg
ICBpZiAocmFuZ2UubGVuZ3RoKQorICAgICAgICByZXR1cm4gW2Rlc2NyaXB0aW9uIHN1YnN0cmlu
Z0Zyb21JbmRleDpyYW5nZS5sb2NhdGlvbl07CisKKyAgICAvLyBTdHJpcCBwb2ludGVyIGxvY2F0
aW9ucworICAgIGlmIChbZGVzY3JpcHRpb24gcmFuZ2VPZlN0cmluZzpAIjB4Il0ubGVuZ3RoKSB7
CisgICAgICAgIE5TU3RyaW5nKiByb2xlID0gW2ZvY3VzZWRBY2Nlc3NpYmlsaXR5T2JqZWN0IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXTsK
KyAgICAgICAgTlNTdHJpbmcqIHRpdGxlID0gW2ZvY3VzZWRBY2Nlc3NpYmlsaXR5T2JqZWN0IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV07
CisgICAgICAgIGlmIChbdGl0bGUgbGVuZ3RoXSkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogJyVAJz4iLCByb2xlLCB0aXRsZV07CisgICAgICAg
IHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQD4iLCByb2xlXTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIFt2YWx1ZU9iamVjdCBkZXNjcmlwdGlvbl07Cit9CisKK3N0YXRp
YyBOU1N0cmluZyogYXR0cmlidXRlc09mRWxlbWVudChpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0KQor
eworICAgIE5TQXJyYXkqIHN1cHBvcnRlZEF0dHJpYnV0ZXMgPSBbYWNjZXNzaWJpbGl0eU9iamVj
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdOworCisgICAgTlNNdXRhYmxlU3RyaW5nKiBh
dHRyaWJ1dGVzU3RyaW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgIGZvciAoTlNV
SW50ZWdlciBpID0gMDsgaSA8IFtzdXBwb3J0ZWRBdHRyaWJ1dGVzIGNvdW50XTsgKytpKSB7Cisg
ICAgICAgIE5TU3RyaW5nKiBhdHRyaWJ1dGUgPSBbc3VwcG9ydGVkQXR0cmlidXRlcyBvYmplY3RB
dEluZGV4OmldOworICAgICAgICAKKyAgICAgICAgLy8gUmlnaHQgbm93LCBwb3NpdGlvbiBwcm92
aWRlcyB1c2VsZXNzIGFuZCBzY3JlZW4tc3BlY2lmaWMgaW5mb3JtYXRpb24sIHNvIHdlIGRvIG5v
dAorICAgICAgICAvLyB3YW50IHRvIGluY2x1ZGUgaXQgZm9yIHRoZSBzYWtlIG9mIHVuaXZlcnNh
bGx5IHBhc3NpbmcgdGVzdHMuCisgICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzpAIkFYUG9zaXRpb24iXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAg
ICAgLy8gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOiBjYW4gdGhyb3cgYW4gaWYgYW4gYXR0
cmlidXRlIGlzIG5vdCByZXR1cm5lZC4KKyAgICAgICAgLy8gRm9yIER1bXBSZW5kZXJUcmVlJ3Mg
cHVycG9zZSwgd2Ugc2hvdWxkIGlnbm9yZSB0aG9zZSBleGNlcHRpb25zCisgICAgICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgICAgICBpZCB2YWx1ZU9iamVjdCA9IFthY2Nlc3NpYmls
aXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGVdOworICAgICAg
ICBOU1N0cmluZyogdmFsdWUgPSBkZXNjcmlwdGlvbk9mVmFsdWUodmFsdWVPYmplY3QsIGFjY2Vz
c2liaWxpdHlPYmplY3QpOworICAgICAgICBbYXR0cmlidXRlc1N0cmluZyBhcHBlbmRGb3JtYXQ6
QCIlQDogJUBcbiIsIGF0dHJpYnV0ZSwgdmFsdWVdOworICAgICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisgICAgfQorICAgIAorICAgIHJldHVybiBhdHRyaWJ1dGVzU3RyaW5nOworfQorCitz
dGF0aWMgSlNTdHJpbmdSZWYgY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyog
YXR0cmlidXRlLCBOU1N0cmluZyogdmFsdWUpCit7CisgICAgVmVjdG9yPFVuaUNoYXI+IGJ1ZmZl
cihbYXR0cmlidXRlIGxlbmd0aF0pOworICAgIFthdHRyaWJ1dGUgZ2V0Q2hhcmFjdGVyczpidWZm
ZXIuZGF0YSgpXTsKKyAgICBidWZmZXIuYXBwZW5kKCc6Jyk7CisgICAgYnVmZmVyLmFwcGVuZCgn
ICcpOworCisgICAgVmVjdG9yPFVuaUNoYXI+IHZhbHVlQnVmZmVyKFt2YWx1ZSBsZW5ndGhdKTsK
KyAgICBbdmFsdWUgZ2V0Q2hhcmFjdGVyczp2YWx1ZUJ1ZmZlci5kYXRhKCldOworICAgIGJ1ZmZl
ci5hcHBlbmQodmFsdWVCdWZmZXIpOworCisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Cit9CisKK3N0YXRpYyB2b2lk
IGNvbnZlcnROU0FycmF5VG9WZWN0b3IoTlNBcnJheSogYXJyYXksIFZlY3RvcjxSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3RvcikKK3sKKyAgICBOU1VJbnRlZ2Vy
IGNvdW50ID0gW2FycmF5IGNvdW50XTsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBj
b3VudDsgKytpKQorICAgICAgICBlbGVtZW50VmVjdG9yLmFwcGVuZChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjcmVhdGUoW2FycmF5IG9iamVjdEF0SW5kZXg6aV0pKTsKK30KKworc3RhdGljIEpT
U3RyaW5nUmVmIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCit7CisgICAgTlNNdXRhYmxlU3RyaW5nKiBh
bGxFbGVtZW50U3RyaW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgIHNpemVfdCBz
aXplID0gZWxlbWVudFZlY3Rvci5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHVpRWxl
bWVudCA9IGVsZW1lbnRWZWN0b3JbaV07CisgICAgICAgIE5TU3RyaW5nKiBhdHRyaWJ1dGVzID0g
YXR0cmlidXRlc09mRWxlbWVudCh1aUVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkpOworICAg
ICAgICBbYWxsRWxlbWVudFN0cmluZyBhcHBlbmRGb3JtYXQ6QCIlQFxuLS0tLS0tLS0tLS0tXG4i
LCBhdHRyaWJ1dGVzXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFthbGxFbGVtZW50U3RyaW5n
IGNyZWF0ZUpTU3RyaW5nUmVmXTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpn
ZXRMaW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
PiYgZWxlbWVudFZlY3RvcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBO
U0FycmF5KiBsaW5rZWRFbGVtZW50cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGVdOworICAgIGNv
bnZlcnROU0FycmF5VG9WZWN0b3IobGlua2VkRWxlbWVudHMsIGVsZW1lbnRWZWN0b3IpOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpnZXREb2N1bWVudExpbmtzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
PiYgZWxlbWVudFZlY3RvcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBO
U0FycmF5KiBsaW5rRWxlbWVudHMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYTGlua1VJRWxlbWVudHMiXTsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGxp
bmtFbGVtZW50cywgZWxlbWVudFZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwor
fQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKFZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3RvcikKK3sKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBjaGlsZHJlbiA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmli
dXRlXTsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGNoaWxkcmVuLCBlbGVtZW50VmVjdG9y
KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Z2V0Q2hpbGRyZW5XaXRoUmFuZ2UoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yLCB1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQg
bGVuZ3RoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGNo
aWxkcmVuID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6TlNB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUgaW5kZXg6bG9jYXRpb24gbWF4Q291bnQ6bGVu
Z3RoXTsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGNoaWxkcmVuLCBlbGVtZW50VmVjdG9y
KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjaGlsZHJlbkNvdW50KCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+ID4gY2hpbGRyZW47CisgICAgZ2V0Q2hpbGRyZW4oY2hpbGRyZW4pOworICAg
IAorICAgIHJldHVybiBjaGlsZHJlbi5zaXplKCk7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQoaW50
IHgsIGludCB5KQoreworICAgIGlkIGVsZW1lbnQgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlI
aXRUZXN0Ok5TTWFrZVBvaW50KHgsIHkpXTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0
ZShlbGVtZW50KTsKK30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhP
ZkNoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGlsZDplbGVtZW50LT5wbGF0Zm9ybVVJRWxl
bWVudCgpXTsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNoaWxkcmVuOworICAgIGdldENo
aWxkcmVuV2l0aFJhbmdlKGNoaWxkcmVuLCBpbmRleCwgMSk7CisKKyAgICBpZiAoY2hpbGRyZW4u
c2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBjaGlsZHJlblswXTsKKyAgICByZXR1cm4gMDsK
K30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpsaW5rZWRVSUVsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIG9iamVjdHMgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1l
bnRzQXR0cmlidXRlXTsKKyAgICBpZiAoaW5kZXggPCBbb2JqZWN0cyBjb3VudF0pCisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW29iamVjdHMgb2JqZWN0QXRJ
bmRleDppbmRleF0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1
cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorewor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIG9iamVjdHMgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlPd25zQXR0
cmlidXRlXTsKKyAgICBpZiAoaW5kZXggPCBbb2JqZWN0cyBjb3VudF0pCisgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW29iamVjdHMgb2JqZWN0QXRJbmRleDpp
bmRleF0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsK
K30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogb2JqZWN0cyA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxl
bWVudHNBdHRyaWJ1dGVdOworICAgIGlmIChpbmRleCA8IFtvYmplY3RzIGNvdW50XSkKKyAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbb2JqZWN0cyBvYmplY3RB
dEluZGV4OmluZGV4XSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJl
dHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7Cisg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogcm93cyA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJv
d3NBdHRyaWJ1dGVdOworICAgIGlmIChpbmRleCA8IFtyb3dzIGNvdW50XSkKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbcm93cyBvYmplY3RBdEluZGV4Omlu
ZGV4XSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisK
K1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogYXJyYXkgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVu
QXR0cmlidXRlXTsKKyAgICBpZiAoaW5kZXggPCBbYXJyYXkgY291bnRdKQorICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFthcnJheSBvYmplY3RBdEluZGV4Omlu
ZGV4XSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOwor
fQorCit1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291
bnQoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50Ok5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KworICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiByb3dzID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2Vs
ZWN0ZWRSb3dzQXR0cmlidXRlXTsKKyAgICBpZiAoaW5kZXggPCBbcm93cyBjb3VudF0pCisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW3Jvd3Mgb2JqZWN0QXRJ
bmRleDppbmRleF0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1
cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCisgICAgaWQgYWNjZXNzaWJpbGl0eU9iamVjdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRl
XTsKKyAgICBpZiAoYWNjZXNzaWJpbGl0eU9iamVjdCkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShhY2Nlc3NpYmlsaXR5T2JqZWN0KTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVu
dCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgYWNjZXNzaWJpbGl0
eU9iamVjdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eVBhcmVudEF0dHJpYnV0ZV07CisgICAgaWYgKGFjY2Vzc2liaWxpdHlPYmplY3QpCisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoYWNjZXNzaWJpbGl0
eU9iamVjdCk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAw
OworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkQnlSb3dBdHRyaWJ1dGVdOwor
ICAgIGlmIChhY2Nlc3NpYmlsaXR5T2JqZWN0KQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y3JlYXRlKGFjY2Vzc2liaWxpdHlPYmplY3QpOworICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVu
dHMoKQoreworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBsaW5r
ZWRFbGVtZW50czsKKyAgICBnZXRMaW5rZWRVSUVsZW1lbnRzKGxpbmtlZEVsZW1lbnRzKTsKKyAg
ICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGxpbmtlZEVsZW1lbnRzKTsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZkRvY3VtZW50TGlua3MoKQoreworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gPiBsaW5rRWxlbWVudHM7CisgICAgZ2V0RG9jdW1lbnRMaW5rcyhsaW5rRWxlbWVudHMp
OworICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMobGlua0VsZW1lbnRzKTsKK30KKwor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0
ZXNPZkNoaWxkcmVuKCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+ID4gY2hpbGRyZW47CisgICAgZ2V0Q2hpbGRyZW4oY2hpbGRyZW4pOworICAgIHJldHVybiBk
ZXNjcmlwdGlvbk9mRWxlbWVudHMoY2hpbGRyZW4pOworfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcygpCit7CisgICAgTlNT
dHJpbmcqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzT2ZFbGVtZW50KG1fZWxlbWVudCk7CisgICAg
cmV0dXJuIFthdHRyaWJ1dGVzIGNyZWF0ZUpTU3RyaW5nUmVmXTsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVl
KEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltO
U1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVl
IGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICBy
ZXR1cm4gMDsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAg
aWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1
cm4gW3ZhbHVlIGRvdWJsZVZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAg
CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0
dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07Cisg
ICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICBy
ZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SXNB
dHRyaWJ1dGVTZXR0YWJsZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0
ZV1dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQo
SlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIHJldHVybiBbW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdIGNvbnRh
aW5zT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFtZXRl
cml6ZWRBdHRyaWJ1dGVOYW1lcygpCit7CisgICAgTlNBcnJheSogc3VwcG9ydGVkUGFyYW1ldGVy
aXplZEF0dHJpYnV0ZXMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0
cmlidXRlTmFtZXNdOworICAgIAorICAgIE5TTXV0YWJsZVN0cmluZyogYXR0cmlidXRlc1N0cmlu
ZyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7
IGkgPCBbc3VwcG9ydGVkUGFyYW1ldGVyaXplZEF0dHJpYnV0ZXMgY291bnRdOyArK2kpIHsKKyAg
ICAgICAgW2F0dHJpYnV0ZXNTdHJpbmcgYXBwZW5kRm9ybWF0OkAiJUBcbiIsIFtzdXBwb3J0ZWRQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlcyBvYmplY3RBdEluZGV4OmldXTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIFthdHRyaWJ1dGVzU3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUoKQorewor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TU3RyaW5nICpyb2xlID0gZGVzY3Jp
cHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIHJldHVybiBjb25jYXRl
bmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhSb2xlIiwgcm9sZSk7CisgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSgpCit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgTlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUo
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vi
cm9sZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmli
dXRlQW5kVmFsdWUoQCJBWFN1YnJvbGUiLCByb2xlKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbigpCit7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCisgICAgTlNTdHJpbmcqIHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURl
c2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVB
dHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9sZURlc2NyaXB0aW9uIiwgcm9sZSk7CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUoKQoreworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TU3RyaW5nKiB0aXRsZSA9IGRlc2NyaXB0aW9uT2ZW
YWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlUaXRsZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0
cmlidXRlQW5kVmFsdWUoQCJBWFRpdGxlIiwgdGl0bGUpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKworICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24oKQoreworICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURlc2NyaXB0
aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1
dGVBbmRWYWx1ZShAIkFYRGVzY3JpcHRpb24iLCBkZXNjcmlwdGlvbik7CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlv
bk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIHJldHVybiBjb25j
YXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhPcmllbnRhdGlvbiIsIGRlc2NyaXB0aW9uKTsg
ICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1
ZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgZGVzY3JpcHRpb24g
PSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOworICAgIHJldHVy
biBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhWYWx1ZSIsIGRlc2NyaXB0aW9uKTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKK3sK
KyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2Ny
aXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
TGFuZ3VhZ2UiXSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVB
bmRWYWx1ZShAIkFYTGFuZ3VhZ2UiLCBkZXNjcmlwdGlvbik7CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUo
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5SGVs
cEF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRl
QW5kVmFsdWUoQCJBWEhlbHAiLCBkZXNjcmlwdGlvbik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6eCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNWYWx1ZSog
cG9zaXRpb25WYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlXTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZG91YmxlPihbcG9zaXRpb25WYWx1ZSBwb2ludFZhbHVlXS54KTsgICAgCisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6eSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgTlNWYWx1ZSogcG9zaXRpb25WYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlXTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8ZG91YmxlPihbcG9zaXRpb25WYWx1ZSBwb2ludFZhbHVlXS55KTsgICAgCisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwLjBmOworfQorCitk
b3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgoKQoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIE5TVmFsdWUqIHNpemVWYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtzaXplVmFsdWUgc2l6ZVZhbHVlXS53aWR0aCk7
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwLjBmOworfQor
Citkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVpZ2h0KCkKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVlKiBzaXplVmFsdWUgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihbc2l6ZVZhbHVlIHNpemVWYWx1ZV0uaGVp
Z2h0KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7
Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WCgpCit7Cisg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNWYWx1ZSogcG9zaXRpb25WYWx1ZSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDbGlja1BvaW50Il07
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oW3Bvc2l0aW9uVmFsdWUgcG9pbnRWYWx1
ZV0ueCk7ICAgICAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50
WSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNWYWx1ZSogcG9zaXRp
b25WYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDbGlj
a1BvaW50Il07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oW3Bvc2l0aW9uVmFsdWUg
cG9pbnRWYWx1ZV0ueSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJl
dHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWUo
KSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFs
dWVBdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xh
c3NdXSkKKyAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIqKXZhbHVlIGRvdWJsZVZhbHVlXTsgCisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJs
ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSgpCit7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZV07CisgICAgaWYgKFt2
YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gWyhO
U051bWJlciopdmFsdWUgZG91YmxlVmFsdWVdOyAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CisKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om1heFZhbHVlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1
ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eU1heFZhbHVlQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVt
YmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbKE5TTnVtYmVyKil2YWx1ZSBkb3VibGVWYWx1
ZV07IAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwLjA7Cit9CisK
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURl
c2NyaXB0aW9uKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1N0cmlu
ZyogdmFsdWVEZXNjcmlwdGlvbiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOworICAgIGlmIChb
dmFsdWVEZXNjcmlwdGlvbiBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAg
ICAgcmV0dXJuIFt2YWx1ZURlc2NyaXB0aW9uIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKworICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJlcigpCit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlJbnNlcnRpb25Qb2ludExpbmVOdW1iZXJBdHRy
aWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkK
KyAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIgKil2YWx1ZSBpbnRWYWx1ZV07IAorICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gLTE7Cit9CisKK2Jvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYWN0aW9uKQor
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGFjdGlvbnMgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBY3Rpb25OYW1lc107CisgICAgcmV0dXJuIFthY3Rpb25z
IGNvbnRhaW5zT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YWN0aW9uXV07
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VuYWJsZWQoKQoreworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZV07CisgICAg
aWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1
cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Jl
cXVpcmVkKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2
YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSZXF1aXJl
ZCJdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAg
ICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNGb2N1c2VkKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0
ZWQoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
U2VsZWN0ZWRBdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1i
ZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOworICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlFeHBhbmRlZEF0dHJpYnV0ZV07CisgICAgaWYg
KFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4g
W3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNr
ZWQoKSBjb25zdAoreworICAgIC8vIE9uIHRoZSBNYWMsIGludFZhbHVlKCk9PTEgaWYgYSBhIGNo
ZWNrYWJsZSBjb250cm9sIGlzIGNoZWNrZWQuCisgICAgcmV0dXJuIGludFZhbHVlKCkgPT0gMTsK
K30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKCkgY29u
c3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3N1
cmVMZXZlbEF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJl
ciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGludFZhbHVlXTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrKCkKK3sKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhEUlRTcGVlY2hBdHRyaWJ1dGUiXTsKKyAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgY3Jl
YXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgCisg
ICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3Jh
YmJlZCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFs
dWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlHcmFiYmVkQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVt
YmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKKyAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMoKSBj
b25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RHJvcEVm
ZmVjdHNBdHRyaWJ1dGVdOworICAgIGlmICghW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkg
Y2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBOU011dGFibGVTdHJpbmcqIGRyb3BF
ZmZlY3RzID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgIE5TSW50ZWdlciBsZW5ndGgg
PSBbdmFsdWUgY291bnRdOworICAgIGZvciAoTlNJbnRlZ2VyIGsgPSAwOyBrIDwgbGVuZ3RoOyAr
K2spIHsKKyAgICAgICAgW2Ryb3BFZmZlY3RzIGFwcGVuZFN0cmluZzpbdmFsdWUgb2JqZWN0QXRJ
bmRleDprXV07CisgICAgICAgIGlmIChrIDwgbGVuZ3RoIC0gMSkKKyAgICAgICAgICAgIFtkcm9w
RWZmZWN0cyBhcHBlbmRTdHJpbmc6QCIsIl07CisgICAgfQorICAgIAorICAgIHJldHVybiBbZHJv
cEVmZmVjdHMgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICAKKyAgICByZXR1cm4gMDsKK30KKworLy8gcGFyYW1ldGVyaXplZCBhdHRyaWJ1dGVzCitp
bnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KGludCBpbmRleCkKK3sKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxpbmVGb3JJbmRleFBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU051bWJlciBudW1iZXJXaXRoSW50Omlu
ZGV4XV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQor
ICAgICAgICByZXR1cm4gWyhOU051bWJlciAqKXZhbHVlIGludFZhbHVlXTsgCisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIC0xOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JMaW5lKGludCBsaW5lKQor
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UmFuZ2VGb3JMaW5l
UGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6bGluZV1dOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11d
KSB7CisgICAgICAgIHJldHVybiBbTlNTdHJpbmdGcm9tUmFuZ2UoW3ZhbHVlIHJhbmdlVmFsdWVd
KSBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgfQorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNp
Z25lZCBsZW5ndGgpCit7CisgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9u
LCBsZW5ndGgpOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Qm91
bmRzRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNWYWx1ZSB2
YWx1ZVdpdGhSYW5nZTpyYW5nZV1dOworICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVjdCgwLDAs
MCwwKTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSkKKyAg
ICAgICAgcmVjdCA9IFt2YWx1ZSByZWN0VmFsdWVdOyAKKyAgICAKKyAgICAvLyBkb24ndCByZXR1
cm4gcG9zaXRpb24gaW5mb3JtYXRpb24gYmVjYXVzZSBpdCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQK
KyAgICBOU011dGFibGVTdHJpbmcqIGJvdW5kc0Rlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAie3slZiwgJWZ9LCB7JWYsICVmfX0iLC0xLjBmLC0xLjBmLHJl
Y3Quc2l6ZS53aWR0aCxyZWN0LnNpemUuaGVpZ2h0XTsKKyAgICByZXR1cm4gW2JvdW5kc0Rlc2Ny
aXB0aW9uIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01ha2VSYW5nZShsb2NhdGlvbiwg
bGVuZ3RoKTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBzdHJpbmcgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdHJp
bmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZh
bHVlV2l0aFJhbmdlOnJhbmdlXV07CisgICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05T
U3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBbc3Ry
aW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAg
CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24s
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UobG9j
YXRpb24sIGxlbmd0aCk7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBdHRy
aWJ1dGVkU3RyaW5nKiBzdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlBdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVk
QXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1dOwor
ICAgIGlmICghW3N0cmluZyBpc0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3Nd
XSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgTlNTdHJpbmcqIHN0cmluZ1dpdGhBdHRy
cyA9IFtzdHJpbmcgZGVzY3JpcHRpb25dOworICAgIHJldHVybiBbc3RyaW5nV2l0aEF0dHJzIGNy
ZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAg
cmV0dXJuIDA7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0
cmluZ1JhbmdlSXNNaXNzcGVsbGVkKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOwor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3Ry
aW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5QXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJh
bWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKKyAgICBpZiAoIVtzdHJpbmcg
aXNLaW5kT2ZDbGFzczpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIE5TRGljdGlvbmFyeSogYXR0cnMgPSBbc3RyaW5nIGF0dHJpYnV0ZXNB
dEluZGV4OjAgZWZmZWN0aXZlUmFuZ2U6bmlsXTsKKyAgICBpZihbW2F0dHJzIG9iamVjdEZvcktl
eTpOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZV0gYm9vbFZhbHVlXSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQs
IEpTU3RyaW5nUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCkKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5KiBwYXJhbWV0
ZXIgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKyAgICBbcGFyYW1ldGVyIHNl
dE9iamVjdDooaXNEaXJlY3Rpb25OZXh0KSA/IEAiQVhEaXJlY3Rpb25OZXh0IiA6IEAiQVhEaXJl
Y3Rpb25QcmV2aW91cyIgZm9yS2V5OkAiQVhEaXJlY3Rpb24iXTsKKyAgICBbcGFyYW1ldGVyIHNl
dE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoxXSBmb3JLZXk6QCJBWFJlc3VsdHNMaW1p
dCJdOworICAgIGlmIChzdGFydEVsZW1lbnQpCisgICAgICAgIFtwYXJhbWV0ZXIgc2V0T2JqZWN0
OihpZClzdGFydEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVs
ZW1lbnQiXTsKKyAgICBpZiAoc2VhcmNoS2V5KQorICAgICAgICBbcGFyYW1ldGVyIHNldE9iamVj
dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnNlYXJjaEtleV0gZm9yS2V5OkAiQVhT
ZWFyY2hLZXkiXTsKKyAgICBpZiAoc2VhcmNoVGV4dCAmJiBKU1N0cmluZ0dldExlbmd0aChzZWFy
Y2hUZXh0KSkKKyAgICAgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dp
dGhKU1N0cmluZ1JlZjpzZWFyY2hUZXh0XSBmb3JLZXk6QCJBWFNlYXJjaFRleHQiXTsKKyAgICAK
KyAgICBpZCB1aUVsZW1lbnQgPSBbW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWFVJRWxlbWVudHNGb3JTZWFyY2hQcmVkaWNhdGUiIGZvclBhcmFtZXRlcjpwYXJhbWV0
ZXJdIGxhc3RPYmplY3RdOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVh
dGUodWlFbGVtZW50KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkKK3sKKyAgICAvLyBub3QgeWV0IGRlZmlu
ZWQgaW4gQXBwS2l0Li4uIG9kZAorICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5T
QXJyYXkqIGNvbHVtbkhlYWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOkAiQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzIl07CisgICAgVmVjdG9yPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNvbHVtbkhlYWRlcnNWZWN0b3I7CisgICAgY29u
dmVydE5TQXJyYXlUb1ZlY3Rvcihjb2x1bW5IZWFkZXJzQXJyYXksIGNvbHVtbkhlYWRlcnNWZWN0
b3IpOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY29sdW1uSGVhZGVyc1ZlY3Rv
cik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmli
dXRlc09mUm93SGVhZGVycygpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
TlNBcnJheSogcm93SGVhZGVyc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWFJvd0hlYWRlclVJRWxlbWVudHMiXTsKKyAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gcm93SGVhZGVyc1ZlY3RvcjsKKyAgICBjb252ZXJ0TlNB
cnJheVRvVmVjdG9yKHJvd0hlYWRlcnNBcnJheSwgcm93SGVhZGVyc1ZlY3Rvcik7CisgICAgcmV0
dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhyb3dIZWFkZXJzVmVjdG9yKTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5zKCkK
K3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBjb2x1bW5zQXJy
YXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlDb2x1bW5zQXR0cmlidXRlXTsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+ID4gY29sdW1uc1ZlY3RvcjsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGNvbHVt
bnNBcnJheSwgY29sdW1uc1ZlY3Rvcik7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50
cyhjb2x1bW5zVmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAg
cmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBOU0FycmF5KiByb3dzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKKyAgICBWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gcm93c1ZlY3RvcjsKKyAgICBjb252ZXJ0TlNB
cnJheVRvVmVjdG9yKHJvd3NBcnJheSwgcm93c1ZlY3Rvcik7CisgICAgcmV0dXJuIGRlc2NyaXB0
aW9uT2ZFbGVtZW50cyhyb3dzVmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMoKQoreworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGNlbGxzQXJyYXkgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVmlzaWJsZUNlbGxzIl07CisgICAgVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNlbGxzVmVjdG9yOworICAgIGNv
bnZlcnROU0FycmF5VG9WZWN0b3IoY2VsbHNBcnJheSwgY2VsbHNWZWN0b3IpOworICAgIHJldHVy
biBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY2VsbHNWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcigpCit7CisgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgaGVhZGVyT2JqZWN0ID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5SGVhZGVyQXR0cmli
dXRlXTsKKyAgICBpZiAoIWhlYWRlck9iamVjdCkKKyAgICAgICAgcmV0dXJuIFtAIiIgY3JlYXRl
SlNTdHJpbmdSZWZdOworICAgIAorICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gPiBoZWFkZXJWZWN0b3I7CisgICAgaGVhZGVyVmVjdG9yLmFwcGVuZChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjcmVhdGUoaGVhZGVyT2JqZWN0KSk7CisgICAgcmV0dXJuIGRlc2NyaXB0
aW9uT2ZFbGVtZW50cyhoZWFkZXJWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICAKKyAgICByZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJv
d0NvdW50KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3VudDpOU0FjY2Vzc2liaWxpdHlS
b3dzQXR0cmlidXRlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5Db3VudCgpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJp
YnV0ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOwor
fQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJblRhYmxlKCkKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU051bWJlciogaW5kZXhOdW1iZXIgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlJbmRleEF0
dHJpYnV0ZV07CisgICAgaWYgKGluZGV4TnVtYmVyKQorICAgICAgICByZXR1cm4gW2luZGV4TnVt
YmVyIGludFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4g
LTE7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb3dJbmRleFJhbmdlKCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCww
KTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVlKiBpbmRleFJhbmdl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJvd0luZGV4UmFu
Z2UiXTsKKyAgICBpZiAoaW5kZXhSYW5nZSkKKyAgICAgICAgcmFuZ2UgPSBbaW5kZXhSYW5nZSBy
YW5nZVZhbHVlXTsKKyAgICBOU011dGFibGVTdHJpbmcqIHJhbmdlRGVzY3JpcHRpb24gPSBbTlNN
dXRhYmxlU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ7JWQsICVkfSIscmFuZ2UubG9jYXRpb24s
IHJhbmdlLmxlbmd0aF07CisgICAgcmV0dXJuIFtyYW5nZURlc2NyaXB0aW9uIGNyZWF0ZUpTU3Ry
aW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7
Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
b2x1bW5JbmRleFJhbmdlKCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCww
KTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU051bWJlciogaW5kZXhSYW5n
ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDb2x1bW5JbmRl
eFJhbmdlIl07CisgICAgaWYgKGluZGV4UmFuZ2UpCisgICAgICAgIHJhbmdlID0gW2luZGV4UmFu
Z2UgcmFuZ2VWYWx1ZV07CisgICAgTlNNdXRhYmxlU3RyaW5nKiByYW5nZURlc2NyaXB0aW9uID0g
W05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAieyVkLCAlZH0iLHJhbmdlLmxvY2F0
aW9uLCByYW5nZS5sZW5ndGhdOworICAgIHJldHVybiBbcmFuZ2VEZXNjcmlwdGlvbiBjcmVhdGVK
U1N0cmluZ1JlZl07ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbCwgdW5zaWdu
ZWQgcm93KQoreworICAgIE5TQXJyYXkgKmNvbFJvd0FycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRo
T2JqZWN0czpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmNvbF0sIFtOU051bWJlciBu
dW1iZXJXaXRoVW5zaWduZWRJbnQ6cm93XSwgbmlsXTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDZWxsRm9yQ29sdW1uQW5kUm93IiBm
b3JQYXJhbWV0ZXI6Y29sUm93QXJyYXldKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TICAg
IAorCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0Cit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNyZWF0ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlXSk7CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUyAgICAKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNh
bFNjcm9sbGJhcigpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWZXJ0aWNhbFNjcm9sbEJhckF0dHJp
YnV0ZV0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAgICAgIAorfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0UmFu
Z2UoKQoreworICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsK
KyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVlICppbmRleFJhbmdlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2Vs
ZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGVdOworICAgIGlmIChpbmRleFJhbmdlKQorICAgICAgICBy
YW5nZSA9IFtpbmRleFJhbmdlIHJhbmdlVmFsdWVdOworICAgIE5TTXV0YWJsZVN0cmluZyAqcmFu
Z2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInslZCwg
JWR9IixyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoXTsKKyAgICByZXR1cm4gW3JhbmdlRGVz
Y3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICBOU1JhbmdlIHRleHRSYW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5n
dGgpOworICAgIE5TVmFsdWUgKnRleHRSYW5nZVZhbHVlID0gW05TVmFsdWUgdmFsdWVXaXRoUmFu
Z2U6dGV4dFJhbmdlXTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTp0ZXh0UmFuZ2VWYWx1ZSBmb3JBdHRyaWJ1dGU6TlNB
Y2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGVdOworICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQo
KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uXTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZGVjcmVtZW50KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOk5TQWNjZXNzaWJpbGl0eURlY3JlbWVu
dEFjdGlvbl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNob3dNZW51KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOk5TQWNjZXNzaWJp
bGl0eVNob3dNZW51QWN0aW9uXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKK3Zv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJlc3MoKQoreworICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246TlNB
Y2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb25dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCisgICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6ZWxl
bWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07CisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
U2V0VmFsdWU6YXJyYXkgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRy
ZW5BdHRyaWJ1dGVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAgCit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5
VmFsdWUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcoKQoreworICAg
IHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkoKQor
eworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJsKCkKK3sK
KyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1VSTCAqdXJsID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRl
XTsKKyAgICByZXR1cm4gW1t1cmwgYWJzb2x1dGVTdHJpbmddIGNyZWF0ZUpTU3RyaW5nUmVmXTsg
ICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBuaWw7Cit9
CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIo
SlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKQoreworICAgIGlmICghZnVuY3Rpb25DYWxsYmFj
aykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgIC8vIE1hYyBwcm9ncmFtbWVycyBzaG91
bGQgbm90IGJlIGFkZGluZyBtb3JlIHRoYW4gb25lIG5vdGlmaWNhdGlvbiBsaXN0ZW5lciBwZXIg
ZWxlbWVudC4KKyAgICAvLyBPdGhlciBwbGF0Zm9ybXMgbWF5IGJlIGRpZmZlcmVudC4KKyAgICBp
ZiAobV9ub3RpZmljYXRpb25IYW5kbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9u
b3RpZmljYXRpb25IYW5kbGVyID0gW1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBh
bGxvY10gaW5pdFdpdGhQbGF0Zm9ybUVsZW1lbnQ6cGxhdGZvcm1VSUVsZW1lbnQoKV07CisgICAg
W21fbm90aWZpY2F0aW9uSGFuZGxlciBzZXRDYWxsYmFjazpmdW5jdGlvbkNhbGxiYWNrXTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92
ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkKK3sKKyAgICAvLyBNYWMgcHJvZ3JhbW1lcnMgc2hvdWxk
IG5vdCBiZSB0cnlpbmcgdG8gcmVtb3ZlIGEgbGlzdGVuZXIgdGhhdCdzIGFscmVhZHkgcmVtb3Zl
ZC4KKyAgICBBU1NFUlQobV9ub3RpZmljYXRpb25IYW5kbGVyKTsKKworICAgIFttX25vdGlmaWNh
dGlvbkhhbmRsZXIgcmVsZWFzZV07CisgICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gbmlsOwor
ICAgIAorICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzRm9jdXNhYmxlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJs
ZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJsZSgpIGNv
bnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Zpc2libGUoKSBjb25zdAoreworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4oKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNDb2xsYXBzZWQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJZ25vcmVk
KCkgY29uc3QKK3sKKyAgICBCT09MIHJlc3VsdCA9IE5POworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIHJlc3VsdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUlzSWdub3JlZF07
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzUG9wdXAoKSBjb25zdAoreworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWEhhc1BvcHVwIl07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1
ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cygpCit7CisgICAgLy8gRklY
TUU6IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VTZWxl
Y3Rpb24oKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphZGRTZWxlY3Rpb24oKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
K30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQorewor
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKworLy8gVGV4dCBtYXJrZXJzCitQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRl
eHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkK
K3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2Ug
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlclJh
bmdlRm9yVUlFbGVtZW50IiBmb3JQYXJhbWV0ZXI6ZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQo
KV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0
TWFya2VyUmFuZ2UpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1
cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxl
bmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU051bWJlciogbGVuZ3RoVmFsdWUgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGVuZ3RoRm9yVGV4dE1hcmtlclJhbmdl
IiBmb3JQYXJhbWV0ZXI6KGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAg
ICByZXR1cm4gW2xlbmd0aFZhbHVlIGludFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBpZCBwcmV2aW91c01hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1RleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQ
YXJhbWV0ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShwcmV2aW91c01hcmtlcik7CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBuZXh0TWFya2VyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
ciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Cisg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUobmV4dE1hcmtlcik7Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlKQor
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHRleHRTdHJpbmcgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlIiBmb3JQYXJhbWV0ZXI6KGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZSgpXTsKKyAgICByZXR1cm4gW3RleHRTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFy
dE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKK3sKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiB0ZXh0TWFya2VycyA9IFtOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwg
KGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07CisgICAgaWQgdGV4dE1h
cmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRl
eHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRNYXJrZXJzIiBmb3JQYXJhbWV0ZXI6dGV4dE1h
cmtlcnNdOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUo
dGV4dE1hcmtlclJhbmdlKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAg
cmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFy
YW1ldGVyOihpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOyAgICAKK30KKworUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBy
YW5nZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB0ZXh0TWFya2Vy
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooaWQpcmFuZ2UtPnBsYXRmb3JtVGV4
dE1hcmtlclJhbmdlKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3Jl
YXRlKHRleHRNYXJrZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsgICAgCit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeCwgaW50IHkpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdGV4dE1hcmtlciA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyRm9yUG9zaXRp
b24iIGZvclBhcmFtZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhQb2ludDpOU01ha2VQb2ludCh4LCB5
KV1dOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJr
ZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsgICAg
Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiBtYXJrZXIpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
aWQgdWlFbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WFVJRWxlbWVudEZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpbWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0
ZSh1aUVsZW1lbnQpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1
cm4gMDsgIAorfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKKwpJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTYwLDUgKzYwLDExIEBACiB7CiAgICAgcmV0dXJuIEpTU3RyaW5n
UmV0YWluKHVybCk7IC8vIERvIG5vdGhpbmcgb24gbWFjLgogfQorICAgIAorSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUoKQoreworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJtYWMiKSk7CisgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKK30K
IAogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuaAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZV9oCisjZGVmaW5lIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2VfaAorCisjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBQTEFURk9STShNQUMp
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBDRlR5cGVSZWYgUGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2U7CisjZWxzZQordHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVRleHRNYXJrZXJS
YW5nZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV1RSIHsKKyAgICAKK2NsYXNzIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UgOiBwdWJsaWMgSlNXcmFwcGFibGUgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IGNyZWF0ZShQbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZT4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UmKTsKKyAgICAKKyAgICB+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgpOworICAgIAor
ICAgIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIHBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgY29u
c3Q7CisgICAgdmlydHVhbCBKU0NsYXNzUmVmIHdyYXBwZXJDbGFzcygpOworICAgIAorICAgIHN0
YXRpYyBKU09iamVjdFJlZiBtYWtlSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKEpTQ29u
dGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSYpOworICAgIGJvb2wg
aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CisgICAgCitwcml2YXRlOgor
ICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2Up
OworICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoY29uc3QgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSYpOworICAgIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBSZXRhaW5QdHI8
UGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U+IG1fdGV4dE1hcmtlclJhbmdlOworI2Vsc2UKKyAgICBQ
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBtX3RleHRNYXJrZXJSYW5nZTsKKyNlbmRpZgorfTsKKyAg
ICAKKyNpZiAhUExBVEZPUk0oTUFDKQoraW5saW5lIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZTo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4g
ZmFsc2U7IH0KKyNlbmRpZgorICAgIAorfSAvLyBuYW1lc3BhY2UgV1RSCisKKyNlbmRpZiAvLyBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlX2gKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJKHJldmlzaW9u
IDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEluamVj
dGVkQnVuZGxlX2gKICNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVfaAogCisjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFdmVudFNlbmRpbmdDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaCIKQEAgLTU2LDYgKzU3LDcgQEAKICAgICBHQ0NvbnRyb2xsZXIqIGdjQ29udHJvbGxlcigp
IHsgcmV0dXJuIG1fZ2NDb250cm9sbGVyLmdldCgpOyB9CiAgICAgRXZlbnRTZW5kaW5nQ29udHJv
bGxlciogZXZlbnRTZW5kaW5nQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fZXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5nZXQoKTsgfQogICAgIFRleHRJbnB1dENvbnRyb2xsZXIqIHRleHRJbnB1dENvbnRy
b2xsZXIoKSB7IHJldHVybiBtX3RleHRJbnB1dENvbnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlciogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSB7IHJldHVybiBt
X2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmdldCgpOyB9CiAKICAgICBJbmplY3RlZEJ1bmRsZVBh
Z2UqIHBhZ2UoKSBjb25zdDsKICAgICBzaXplX3QgcGFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlcy5zaXplKCk7IH0KQEAgLTEwNSw2ICsxMDcsNyBAQAogICAgIFdLQnVuZGxlUGFnZUdy
b3VwUmVmIG1fcGFnZUdyb3VwOwogICAgIFZlY3RvcjxPd25QdHI8SW5qZWN0ZWRCdW5kbGVQYWdl
PiA+IG1fcGFnZXM7CiAKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IG1fYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI7CiAgICAgUmVmUHRyPExheW91dFRlc3RDb250cm9sbGVyPiBt
X2xheW91dFRlc3RDb250cm9sbGVyOwogICAgIFJlZlB0cjxHQ0NvbnRyb2xsZXI+IG1fZ2NDb250
cm9sbGVyOwogICAgIFJlZlB0cjxFdmVudFNlbmRpbmdDb250cm9sbGVyPiBtX2V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA5OTEy
OCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDYgKzE5MCw4IEBACiAgICAgdm9pZCBj
YWxsRm9jdXNXZWJWaWV3Q2FsbGJhY2soKTsKICAgICB2b2lkIGNhbGxTZXRCYWNraW5nU2NhbGVG
YWN0b3JDYWxsYmFjaygpOwogCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBsYXRmb3Jt
TmFtZSgpOworICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHdhaXRUb0R1
bXBXYXRjaGRvZ1RpbWVySW50ZXJ2YWw7CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgi
CisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5qZWN0
ZWRCdW5kbGUuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2UuaCIKKyNpbmNsdWRlICJK
U0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGUuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQnVuZGxlUGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlUHJp
dmF0ZS5oPgorCituYW1lc3BhY2UgV1RSIHsKKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcj4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcik7Cit9CisKK0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpCit7Cit9CisKK0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjp+QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKQoreworfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjptYWtlV2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dPYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
K3sKKyAgICBzZXRQcm9wZXJ0eShjb250ZXh0LCB3aW5kb3dPYmplY3QsICJhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlciIsIHRoaXMsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUsIGV4Y2VwdGlvbik7Cit9CisKK0pTQ2xhc3NSZWYgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OndyYXBwZXJDbGFzcygpCit7CisgICAgcmV0dXJuIEpTQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2xhc3MoKTsKK30K
KworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjo6cm9vdEVsZW1lbnQoKQoreworICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayBvbiBX
aW5kb3dzLgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICByZXR1cm4gMDsKKyNlbHNlCisgICAgV0tC
dW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdl
KCk7CisgICAgdm9pZCogcm9vdCA9IFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QocGFnZSk7Cisg
ICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxQbGF0Zm9ybVVJRWxlbWVudD4ocm9vdCkpOyAgICAKKyNlbmRpZgorfQorCitQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2Vk
RWxlbWVudCgpCit7CisgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIG9uIFdpbmRvd3MuCisj
aWYgUExBVEZPUk0oV0lOKQorICAgIHJldHVybiAwOworI2Vsc2UgICAgCisgICAgV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCk7Cisg
ICAgdm9pZCogcm9vdCA9IFdLQWNjZXNzaWJpbGl0eUZvY3VzZWRPYmplY3QocGFnZSk7CisgICAg
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShzdGF0aWNfY2FzdDxQ
bGF0Zm9ybVVJRWxlbWVudD4ocm9vdCkpOyAgICAKKyNlbmRpZgorfQorCitQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjplbGVtZW50QXRQ
b2ludChpbnQgeCwgaW50IHkpCit7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IHVpRWxlbWVudCA9IHJvb3RFbGVtZW50KCk7CisgICAgcmV0dXJuIHVpRWxlbWVudC0+ZWxlbWVu
dEF0UG9pbnQoeCwgeSk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXVFIKKwpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTYyLDYg
KzYyLDEwIEBACiBub2luc3RfTFRMSUJSQVJJRVMgKz0gTGlicmFyaWVzL2xpYlRlc3RSdW5uZXJJ
bmplY3RlZEJ1bmRsZS5sYQogCiB3ZWJraXR0ZXN0cnVubmVyX2J1aWx0X3NvdXJjZXMgKz0gXAor
CURlcml2ZWRTb3VyY2VzL0luamVjdGVkQnVuZGxlL0pTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Y3BwIFwKKwlEZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSW5qZWN0ZWRCdW5kbGUvSlNBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSW5qZWN0ZWRCdW5kbGUv
SlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSW5qZWN0ZWRC
dW5kbGUvSlNFdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSW5q
ZWN0ZWRCdW5kbGUvSlNHQ0NvbnRyb2xsZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9JbmplY3Rl
ZEJ1bmRsZS9KU0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBcCkBAIC03MCw2ICs3NCwxNCBAQAog
QlVJTFRfU09VUkNFUyArPSAkKHdlYmtpdHRlc3RydW5uZXJfYnVpbHRfc291cmNlcykKIAogTGli
cmFyaWVzX2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9sYV9TT1VSQ0VTID0gXAorCVRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Y3BwIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmggXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggXAorCVRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAg
XAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZS5oIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBcCiAJVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY3RpdmF0ZUZvbnRzLmggXAogCVRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvSlNXcmFwcGFibGUuaCBcCiAJVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9KU1dyYXBwZXIuY3BwIFwK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL0luamVjdGVkQnVuZGxlLnZjcHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9JbmplY3RlZEJ1bmRsZS52
Y3Byb2oJKHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vSW5q
ZWN0ZWRCdW5kbGUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zOTQsNiArMzk0LDIxNCBAQAog
CQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3Rl
ZEJ1bmRsZVxCaW5kaW5nc1xBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwiCisJCQkJPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlE
TFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEJpbmRpbmdzXEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmlkbCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVn
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQmluZGluZ3Nc
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGwiCisJCQkJPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJ
CS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
RGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19D
YWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVh
c2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQ
cm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XEluamVjdGVkQnVuZGxlXEJpbmRpbmdzXEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsIgorCQkJ
CT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxCaW5kaW5nc1xFdmVudFNlbmRpbmdD
b250cm9sbGVyLmlkbCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC02MTgsNiAr
ODI2LDM4IEBACiAJCQlOYW1lPSJEZXJpdmVkIFNvdXJjZXMiCiAJCQk+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTY1MSw2ICs4OTEsMzggQEAKIAkJCTwv
RmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVk
QnVuZGxlXEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8
RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4u
XEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCIKKwkJCT4KKwkJPC9G
aWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlci5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2
ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3Bw
IgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVk
QnVuZGxlXEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCIKKwkJCT4KKwkJPC9GaWxlPgor
CQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRo
PSIuLlxJbmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisJCQk+CisJCTwv
RmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcd2luXEFj
dGl2YXRlRm9udHMuY3BwIgogCQkJPgogCQk8L0ZpbGU+CkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsMTAgQEAKICMKIAogSU5URVJGQUNFUyA9IFwKKyAgICBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlciBcCisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgXAorICAgIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UgXAorICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgXAogICAgIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXIgXAogICAgIEdDQ29udHJvbGxlciBcCiAgICAgTGF5b3V0VGVzdENv
bnRyb2xsZXIgXApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDE3IEBA
CiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCQkwRjUxNjlDQjE0NDUyMjJEMDBF
MEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTE2OUNBMTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJh
bWV3b3JrICovOyB9OwogCQkwRjUxNjlDQzE0NDUyMjJEMDBFMEE5RDcgLyogV2ViS2l0LmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NTE2OUNBMTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJhbWV3b3JrICovOyB9OworCQkyOTIx
MEVBRTE0NENBQ0I3MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIxMEVBOTE0NENBQ0Iy
MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi87IH07CisJCTI5MjEwRUIw
MTQ0Q0FDQkQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIxMEVBMjE0NENBQUE1MDA4
MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwICovOyB9OworCQkyOTIxMEVCNDE0
NENBQ0Q1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFQjExNDRDQUNENDAwODM1
QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLzsgfTsKKwkJMjkyMTBFQjUxNDRD
QUNENTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFQjMxNDRDQUNENDAwODM1
QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tICovOyB9OworCQkyOTIxMEVEQTE0
NENDM0VBMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUFCMTQ0Q0FDQjIwMDgz
NUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICovOyB9OworCQkyOTIxMEVEQjE0
NENENDc5MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODM5MTNEMDE0MzM1RTk1MDA4
MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi87IH07CisJCTI5MjEwRUUx
MTQ0Q0RCMjYwMDgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMTBFREIxNDY3MjdFNzEx
ODM1QkI1IC8qIEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi87IH07CisJCTI5QThGQ0NC
MTQ1RUYwMkUwMDkwNDVBNiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MjEwRUUxMTQ0Q0RFNjc4
OTgxNUVFNSAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLzsgfTsKKwkJMjlBOEZD
REQxNDVGMDMzNzAwOTA0NUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4RkNFMTM0
NUU3MDIxMDA2QUE1QTYgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCAqLzsg
fTsKKwkJMjlBOEZDRTIxNDVGMDM3QjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjlBOEZDRTExNDVGMDM3QjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uu
Y3BwICovOyB9OworCQkyOUE4RkNFNTE0NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI5QThGQ0U0MTQ1RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlTWFjLm1tICovOyB9OwogCQk1MzIyRkI0MzEzRkRBMENEMDA0MUFCQ0MgLyogQ3lj
bGljUmVkdW5kYW5jeUNoZWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzMjJGQjQxMTNGREEwQ0QwMDQxQUJDQyAvKiBDeWNsaWNSZWR1bmRhbmN5
Q2hlY2suY3BwICovOyB9OwogCQk1MzIyRkI0NjEzRkRBMEVBMDA0MUFCQ0MgLyogUGl4ZWxEdW1w
U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzIyRkI0NDEzRkRBMEVBMDA0MUFCQ0MgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgKi87IH07
CiAJCTU2NDFFMkQwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTY0MUUyQ0Ux
NDMzNUU5NTAwODMwN0U1IC8qIEpTVGV4dElucHV0Q29udHJvbGxlci5jcHAgKi87IH07CkBAIC04
Niw2ICs5NywyNyBAQAogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJ
MEY1MTY5Q0ExNDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsg
cGF0aCA9IFdlYktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CisJCTI5MjEwRUEyMTQ0Q0FBQTUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEwRUEzMTQ0
Q0FBQTUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVBODE0NENBQjg4MDA4MzVCQjUgLyogQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQTkxNDRD
QUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEwRUFBMTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjky
MTBFQUIxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEwRUIxMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTI5MjEwRUIyMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVCMzE0NENBQ0Q0MDA4
MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbTsgcGF0
aCA9IG1hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMjkyMTBFREIxNDY3MjdFNzExODM1QkI1IC8qIEpTQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1
bm5lci9KU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQkyOTIxMEVEQjE0NjcyN0U4MTE4MzVCQjUgLyogSlNBY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5l
ci9KU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKKwkJMjkyMTBFREMxNDRDRDU2RTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVFMTE0NENERTY3ODk4MTVF
RTUgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5j
cHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTI5MjEwRUUxMTQ1Q0RF
Njc4OTgxNUVFNSAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5o
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkyOUE4RkNDNTE0NUI5M0M2
MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMjlBOEZDRDIxNDVFRjhGMjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOUE4RkNERjE0NUYwMzU4MDA5MDQ1QTYgLyogQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTI5QThGQ0UxMTQ1RjAzN0IwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyOUE4RkNFMTM0NUU3MDIxMDA2QUE1QTYgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZS5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0
UnVubmVyL0pTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTI5QThGQ0UxMzQ1RTcwMjEwMDZBQTVBNyAvKiBKU0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkyOUE4RkNFNDE0NUYwNDY0MDA5
MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VN
YWMubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc4RDQ0MjIxMzM0NkQwMDAwNkE3NzdCIC8qIGNv
bmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEyMzBFMTYxMzhDNzhCRjAwQkNDRkNBIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5k
eWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJj
b21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGli
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0MTgxNzMxQjEzOEFEMzlE
MDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdlYkNvcmVUZXN0U3VwcG9ydC5oOyBwYXRoID0gV2ViQ29yZVRlc3RTdXBwb3J0
L1dlYkNvcmVUZXN0U3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwpAQCAtMTAwLDYgKzEzMiw4IEBACiAJCTU2NjRBNDk5MTQzMjYzODQwMDg4ODFCRSAvKiBUZXh0
SW5wdXRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJ
bnB1dENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTY3MEI4MjYx
Mzg2RkMxMzAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRXZlbnRTZW5kZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NjcwQjgyNzEzODZGQ0E1MDAyRUIzNTUgLyogRXZlbnRTZW5kZXJQcm94eS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEV2ZW50U2VuZGVyUHJveHku
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU4MzkxM0QwMTQzMzVFOTUwMDgzMDdF
NSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNw
cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNTgzOTEzRDExNDMzNUU5
NTAwODMwN0U1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTY1MTBBNzc3MTFFQzY0Mzgw
MDQxMDg2NyAvKiBBSEVNX19fXy5UVEYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gIkFIRU1fX19fLlRURiI7IHBhdGggPSAiZm9u
dHMvQUhFTV9fX18uVFRGIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMEE3Nzgx
MUVDNjQzODAwNDEwODY3IC8qIENvbG9yQml0cy50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gQ29sb3JCaXRzLnR0ZjsgcGF0
aCA9IGZvbnRzL0NvbG9yQml0cy50dGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
MTBBNzc5MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUg
PSBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZjsgcGF0aCA9IGZvbnRzL1dlYktpdFdlaWdodFdh
dGNoZXIxMDAudHRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ3LDYgKzI4MSwy
NCBAQAogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKKwkJMjlBOEZDRTAxNDVGMDM1RDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHkgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTI5MjEwRUEyMTQ0Q0FBQTUw
MDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8sCisJCQkJMjkyMTBFQTMx
NDRDQUFBNTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggKi8sCisJCQkJMjky
MTBFQTkxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICovLAor
CQkJCTI5MjEwRUFBMTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmgg
Ki8sCisJCQkJMjkyMTBFQUIxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0gKi8sCisJCQkJMjkyMTBFQjExNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyLmNwcCAqLywKKwkJCQkyOTIxMEVCMjE0NENBQ0Q0MDA4MzVCQjUgLyogQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIuaCAqLywKKwkJCQkyOTIxMEVCMzE0NENBQ0Q0MDA4MzVCQjUg
LyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gKi8sCisJCQkJMjlBOEZDRTExNDVGMDM3
QjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovLAorCQkJCTI5
QThGQ0RGMTQ1RjAzNTgwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgg
Ki8sCisJCQkJMjlBOEZDRTQxNDVGMDQ2NDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2VNYWMubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IEFjY2Vzc2liaWxpdHk7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk2NUVCODU5RTExRUM2N0NDMDAzNEQzMDAg
LyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI1
OSw2ICszMTEsNyBAQAogCQlCQzE0RTRFMDEyMEUwMkY5MDA4MjZDMEMgLyogQ29udHJvbGxlcnMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTI5QThGQ0Uw
MTQ1RjAzNUQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5ICovLAogCQkJCUJDOEZEOEM5MTIwRTUy
N0YwMEYzRTcxQSAvKiBFdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCAqLywKIAkJCQlCQzhGRDhD
ODEyMEU1MjdGMDBGM0U3MUEgLyogRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oICovLAogCQkJCUJD
MTRFNEQ5MTIwRTAyRDAwMDgyNkMwQyAvKiBHQ0NvbnRyb2xsZXIuY3BwICovLApAQCAtMzQ1LDYg
KzM5OCwxMCBAQAogCQkJCUJDOTUyQzBFMTFGM0I5N0IwMDMzOThCNCAvKiBKU1dyYXBwYWJsZS5o
ICovLAogCQkJCUJDOTUyQzBDMTFGM0I5NjUwMDMzOThCNCAvKiBKU1dyYXBwZXIuY3BwICovLAog
CQkJCUJDOTUyQzBCMTFGM0I5NjUwMDMzOThCNCAvKiBKU1dyYXBwZXIuaCAqLywKKwkJCQkyOTIx
MEVBODE0NENBQjg4MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsICovLAor
CQkJCTI5QThGQ0M1MTQ1QjkzQzYwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5p
ZGwgKi8sCisJCQkJMjlBOEZDRDIxNDVFRjhGMjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UuaWRsICovLAorCQkJCTI5MjEwRURDMTQ0Q0Q1NkUwMDgzNUJCNSAvKiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmlkbCAqLywKIAkJCQlCQzhGRDhDQjEyMEU1MkIwMDBGM0U3MUEg
LyogRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwgKi8sCiAJCQkJQkMxNEU0RTExMjBFMDMyMDAw
ODI2QzBDIC8qIEdDQ29udHJvbGxlci5pZGwgKi8sCiAJCQkJQkM5NTJFRDIxMUYzQzI5RjAwMzM5
OEI0IC8qIExheW91dFRlc3RDb250cm9sbGVyLmlkbCAqLywKQEAgLTM1Niw2ICs0MTMsMTQgQEAK
IAkJQkM5NTJEM0ExMUYzQkYxRjAwMzM5OEI0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTgzOTEzRDAxNDMzNUU5NTAw
ODMwN0U1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwICovLAorCQkJCTU4MzkxM0Qx
MTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggKi8sCisJCQkJ
MjkyMTBFRTExNDRDREU2Nzg5ODE1RUU1IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3Bw
ICovLAorCQkJCTI5MjEwRUUxMTQ1Q0RFNjc4OTgxNUVFNSAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyLmggKi8sCisJCQkJMjlBOEZDRTEzNDVFNzAyMTAwNkFBNUE2IC8qIEpTQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgKi8sCisJCQkJMjlBOEZDRTEzNDVFNzAyMTAwNkFBNUE3
IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oICovLAorCQkJCTI5MjEwRURCMTQ2
NzI3RTcxMTgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICovLAorCQkJCTI5
MjEwRURCMTQ2NzI3RTgxMTgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAqLywK
IAkJCQlCQzhGRDhEMDEyMEU1NDVCMDBGM0U3MUEgLyogSlNFdmVudFNlbmRpbmdDb250cm9sbGVy
LmNwcCAqLywKIAkJCQlCQzhGRDhEMTEyMEU1NDVCMDBGM0U3MUEgLyogSlNFdmVudFNlbmRpbmdD
b250cm9sbGVyLmggKi8sCiAJCQkJQkMxNEU0RTgxMjBFMDNEODAwODI2QzBDIC8qIEpTR0NDb250
cm9sbGVyLmNwcCAqLywKQEAgLTUxNiw2ICs1ODEsMTcgQEAKIAkJCQlDMENFNzIwQjEyNDdDOTMz
MDBCQzBFQzQgLyogTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1NjY0QTQ5QTE0MzI2Mzg0MDA4ODgxQkUgLyogVGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1NjQxRTJEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNUZXh0SW5wdXRD
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5MjEwRUFFMTQ0Q0FDQjcwMDgzNUJC
NSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5MjEw
RUIwMTQ0Q0FDQkQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkyOTIxMEVCNDE0NENBQ0Q1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFQjUxNDRDQUNENTAwODM1QkI1
IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjky
MTBFREExNDRDQzNFQTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gaW4g
U291cmNlcyAqLywKKwkJCQkyOTIxMEVEQjE0NENENDc5MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOTIxMEVFMTE0NENEQjI2MDA4
MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTI5QThGQ0NCMTQ1RUYwMkUwMDkwNDVBNiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTI5QThGQ0REMTQ1RjAzMzcwMDkwNDVBNiAvKiBKU0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjlBOEZDRTIx
NDVGMDM3QjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMjlBOEZDRTUxNDVGMDQ2NDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay13azIvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGstd2syL1NraXBwZWQJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrLXdrMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC03NDEsMTUgKzc0MSw5IEBACiBl
ZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1wYWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hl
cy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9zaGlmdC1jbGljay5odG1sCiAKLSMgSW1wbGVtZW50
IGFjY2VzaXRpbGl0eSBzdXBwb3J0IHRvIFdlYktpdDIKLXBsYXRmb3JtL2d0ay9hY2Nlc3NpYmls
aXR5L2FyaWEtcm9sZXMtdW5pZ25vcmVkLmh0bWwKLXBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5
L2FyaWEtc2xpZGVyLXJlcXVpcmVkLWF0dHJpYnV0ZXMuaHRtbAotcGxhdGZvcm0vZ3RrL2FjY2Vz
c2liaWxpdHkvYXJpYS10YWJsZS1oaWVyYXJjaHkuaHRtbAotcGxhdGZvcm0vZ3RrL2FjY2Vzc2li
aWxpdHkvY2FyZXQtYnJvd3NpbmctdGV4dC1mb2N1cy5odG1sCi1wbGF0Zm9ybS9ndGsvYWNjZXNz
aWJpbGl0eS9pbnB1dC1zbGlkZXIuaHRtbAotcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvbGlz
dC1pdGVtcy1hbHdheXMtZXhwb3NlZC5odG1sCi1wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9v
YmplY3Qtd2l0aC10aXRsZS5odG1sCi1wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90YWJsZS1o
aWVyYXJjaHkuaHRtbAorIyBJbXBsZW1lbnQgYWNjZXNzaWJpbGl0eSBzdXBwb3J0IGZvciBXZWJL
aXQyCithY2Nlc3NpYmlsaXR5CitwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eQogCiAjIEltcGxl
bWVudCB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlIGludGVy
ZmFjZQogZmFzdC9mb3Jtcy9jdXJzb3ItYXQtZWRpdGFibGUtY29udGVudC1ib3VuZGFyeS5odG1s
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91cGRhdGUtY2hp
bGRyZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1jaGlsZHJlbi13aGVuLWFyaWEt
cm9sZS1jaGFuZ2VzLmh0bWwJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5n
ZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicGFyZW50IikuZm9jdXMoKTsKICAgICAgICAgdmFyIHBhcmVudCA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwogICAgICAgICBzaG91bGRC
ZSgicGFyZW50LmNoaWxkQXRJbmRleCgwKS5yb2xlIiwgIidBWFJvbGU6IEFYQnV0dG9uJyIpOwot
ICAgICAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkQXRJbmRleCgxKS5yb2xlIiwgIidBWFJvbGU6
ICciKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJwYXJlbnQuY2hpbGRBdEluZGV4KDEpID09IG51
bGwgfHwgcGFyZW50LmNoaWxkQXRJbmRleCgxKS5pc1ZhbGlkID09IGZhbHNlIik7CiAgIAogICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uMSIpLnJlbW92ZUF0dHJpYnV0ZSgi
cm9sZSIpOwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uMiIpLnNldEF0
dHJpYnV0ZSgicm9sZSIsICJidXR0b24iKTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLW5vdGlmaWNhdGlvbnMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0
Ym94LXJvbGUtcmVwb3J0cy1ub3RpZmljYXRpb25zLmh0bWwJKHJldmlzaW9uIDk4OTc3KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dGJveC1yb2xlLXJlcG9y
dHMtbm90aWZpY2F0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw2ICsxMiw3IEBACiA8
ZGl2IHJvbGU9InRleHRib3giIGlkPSJhcmlhVGV4dEJveCIgYXJpYS1tdWx0aWxpbmU9ImZhbHNl
IiB0YWJpbmRleD0iMCI+U29tZSB0ZXh0IGluIGEgdGV4dGJveC48L2Rpdj4KIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KKyAgICB2YXIgdGV4dGJveEF4RWxlbWVudDsKICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikgewogICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwogCkBAIC0yMCw3ICsyMSw3IEBACiAKICAgICAgICAgdmFyIGFyaWFUZXh0Qm94ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFyaWFUZXh0Qm94Iik7CiAgICAgICAgIGFyaWFUZXh0
Qm94LmZvY3VzKCk7Ci0gICAgICAgIHZhciB0ZXh0Ym94QXhFbGVtZW50ID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHRleHRib3hBeEVsZW1lbnQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKICAgICAgICAgdGV4dGJveEF4
RWxlbWVudC5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihsb2dOb3RpZmljYXRpb24pOwogICAgICAg
ICBwZW5kaW5nTm90aWZpY2F0aW9ucyA9IDM7CiAgICAgICAgIGFyaWFUZXh0Qm94LmZpcnN0Q2hp
bGQuZGVsZXRlRGF0YSgwLCA1KTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9uLWVs
ZW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rpb24tZWxlbWVudHMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw5ICsyMCw3IEBACiBQQVNTIGJvZHkuY2hpbGRBdEluZGV4
KDQpLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhMYW5kbWFya05hdmlnYXRpb24nCiBQQVNTIGJv
ZHkuY2hpbGRBdEluZGV4KDUpLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhMYW5kbWFya0NvbXBs
ZW1lbnRhcnknCiBQQVNTIGJvZHkuY2hpbGRBdEluZGV4KDYpLmNoaWxkQXRJbmRleCgwKS5zdWJy
b2xlIGlzICdBWFN1YnJvbGU6ICcKLVBBU1MgYm9keS5jaGlsZEF0SW5kZXgoNikuY2hpbGRBdElu
ZGV4KDEpLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogJwogUEFTUyBib2R5LmNoaWxkQXRJbmRleCg3
KS5jaGlsZEF0SW5kZXgoMCkuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiAnCi1QQVNTIGJvZHkuY2hp
bGRBdEluZGV4KDcpLmNoaWxkQXRJbmRleCgxKS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6ICcKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4t
YXJpYS1yb2xlLWNoYW5nZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1jaGlsZHJlbi13aGVuLWFyaWEtcm9s
ZS1jaGFuZ2VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUt
Y2hhbmdlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiAKIAog
UEFTUyBwYXJlbnQuY2hpbGRBdEluZGV4KDApLnJvbGUgaXMgJ0FYUm9sZTogQVhCdXR0b24nCi1Q
QVNTIHBhcmVudC5jaGlsZEF0SW5kZXgoMSkucm9sZSBpcyAnQVhSb2xlOiAnCitQQVNTIHBhcmVu
dC5jaGlsZEF0SW5kZXgoMSkgPT0gbnVsbCB8fCBwYXJlbnQuY2hpbGRBdEluZGV4KDEpLmlzVmFs
aWQgPT0gZmFsc2UgaXMgdHJ1ZQogUEFTUyBwYXJlbnQuY2hpbGRBdEluZGV4KDApLnJvbGUgaXMg
J0FYUm9sZTogQVhTdGF0aWNUZXh0JwogUEFTUyBwYXJlbnQuY2hpbGRBdEluZGV4KDEpLnJvbGUg
aXMgJ0FYUm9sZTogQVhCdXR0b24nCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGlj
YXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvc2VhcmNoLXByZWRpY2F0ZS5odG1sCShyZXZpc2lvbiA5ODk3NykKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1wcmVkaWNhdGUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAogPGlucHV0IHR5cGU9ImNoZWNrYm94IiB2YWx1
ZT0iQ2hlY2tib3giIC8+IGNoZWNrYm94PGJyIC8+CiA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1
ZT0iU3VibWl0IiAvPgogPC9mb3JtPgotPGltZyBpZD0iaW1hZ2UiIHNyYz0icmVzb3VyY2VzL2Nh
a2UucG5nIiAvPgorPGltZyBpZD0iaW1hZ2UiIHNyYz0icmVzb3VyY2VzL2Nha2UucG5nIiBhbHQ9
IlRlc3QiPgogPGgxPmZpcnN0IGhlYWRpbmcgbGV2ZWwgMTwvaDE+CiA8aDE+c2Vjb25kIGhlYWRp
bmcgbGV2ZWwgMTwvaDE+CiA8aDI+aGVhZGluZyBsZXZlbCAyPC9oMj4KQEAgLTUyLDE0ICs1Miwx
MyBAQAogICAgICAgICB2YXIgc3RhcnRFbGVtZW50OwogICAgICAgICB2YXIgaXNEaXJlY3Rpb25O
ZXh0OwogICAgICAgICB2YXIgc2VhcmNoS2V5OwotICAgICAgICB2YXIgc2VhcmNoVGV4dDsKKyAg
ICAgICAgdmFyIHNlYXJjaFRleHQgPSAiIjsKICAgICAgICAgdmFyIHJlc3VsdEVsZW1lbnQ7CiAg
ICAgICAgIAogICAgICAgICAvLyBBbnkgZWxlbWVudC4KICAgICAgICAgc3RhcnRFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwog
ICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhB
bnlUeXBlU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJl
c3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0
ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRp
Y1RleHQnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwg
IidBWFZhbHVlOiBmaXJzdCBibG9ja3F1b3RlIGxldmVsIDEnIik7CkBAIC02OCw3ICs2Nyw2IEBA
CiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsK
ICAgICAgICAgc2VhcmNoS2V5ID0gIkFYQmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSI7Ci0g
ICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFp
bmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0Rp
cmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVl
OiBzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpAQCAtNzcsNyArNzUsNiBAQAogICAgICAg
ICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5j
aGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAg
IHNlYXJjaEtleSA9ICJBWEJsb2NrcXVvdGVTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0
ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVt
ZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFy
Y2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xl
IiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50
LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Vjb25kIGJsb2NrcXVv
dGUgbGV2ZWwgMSciKTsKQEAgLTg2LDcgKzgzLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwog
ICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhC
b2xkRm9udFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICBy
ZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNh
dGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7
CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91
cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0
cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzYW5zLXNlcmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVu
ZGVybGluZSciKTsKQEAgLTk1LDcgKzkxLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAg
ICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhCdXR0
b25TZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0
RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0
YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAg
ICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYQnV0dG9uJyIp
OwogICAgICAgICAKQEAgLTEwMyw3ICs5OCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAg
ICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYQ2hl
Y2tCb3hTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVz
dWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRl
KHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwog
ICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYQ2hlY2tC
b3gnIik7CiAgICAgICAgIApAQCAtMTExLDcgKzEwNSw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0g
IkFYQ2hlY2tCb3hTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAg
ICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRl
eHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFY
Q2hlY2tCb3gnIik7CiAgICAgICAgIApAQCAtMTE5LDcgKzExMiw2IEBACiAgICAgICAgIHN0YXJ0
RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJ
bmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNo
S2V5ID0gIkFYRGlmZmVyZW50VHlwZVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBu
dWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtl
eSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAi
J0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVu
dC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpA
QCAtMTI4LDcgKzEyMCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgyKTsKICAgICAgICAgaXNEaXJl
Y3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYRm9udENoYW5nZVNlYXJj
aEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50
ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVt
ZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNo
b3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwg
IidBWFZhbHVlOiBzZXJpZiBibHVlIGl0YWxpYyB0ZXh0JyIpOwpAQCAtMTM3LDcgKzEyOCw2IEBA
CiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50LmNoaWxkQXRJbmRleCgyKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsK
ICAgICAgICAgc2VhcmNoS2V5ID0gIkFYRm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5IjsKLSAgICAg
ICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJF
bGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0
aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgi
cmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNl
cmlmIGJsdWUgaXRhbGljIHRleHQnIik7CkBAIC0xNDksNyArMTM5LDYgQEAKICAgICAgICAgc3Rh
cnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFy
Y2hLZXkgPSAiQVhHcmFwaGljU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7
CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNl
YXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBz
ZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhS
b2xlOiBBWEltYWdlJyIpOwogICAgICAgICAKQEAgLTE1Nyw3ICsxNDYsNiBAQAogICAgICAgICBz
dGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGls
ZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNl
YXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDFTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0
ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVt
ZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFy
Y2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xl
IiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1l
bnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCBoZWFkaW5n
IGxldmVsIDEnIik7CkBAIC0xNjYsNyArMTU0LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwog
ICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhI
ZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAg
ICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFBy
ZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hU
ZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBB
WEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBsZXZlbCAyJyIpOwpAQCAtMTc1
LDcgKzE2Miw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25O
ZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGluZ0xldmVsM1NlYXJjaEtl
eSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0g
Y29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50
LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIpOwogICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAi
J0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgMyciKTsKQEAgLTE4NCw3ICsxNzAsNiBAQAogICAgICAg
ICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5j
aGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAg
IHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDRTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hU
ZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlF
bGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBz
ZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5y
b2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBoZWFkaW5nIGxl
dmVsIDQnIik7CkBAIC0xOTMsNyArMTc4LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAg
ICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhIZWFk
aW5nTGV2ZWw1U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAg
IHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRp
Y2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0
KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEhl
YWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBsZXZlbCA1JyIpOwpAQCAtMjAyLDcg
KzE4Niw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0
ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGluZ0xldmVsNlNlYXJjaEtleSI7
Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBp
c0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIpOwogICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FY
VmFsdWU6IGhlYWRpbmcgbGV2ZWwgNiciKTsKQEAgLTIxMSw3ICsxOTQsNiBAQAogICAgICAgICBz
dGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGls
ZEF0SW5kZXgoNik7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNl
YXJjaEtleSA9ICJBWEhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hU
ZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlF
bGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBz
ZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5y
b2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzZWNvbmQgaGVh
ZGluZyBsZXZlbCAxJyIpOwpAQCAtMjIwLDcgKzIwMiw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0g
IkFYSGVhZGluZ1NlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAg
ICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVk
aWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4
dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhI
ZWFkaW5nJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgo
MCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGhlYWRpbmcgbGV2ZWwgMSciKTsKQEAg
LTIyOSw3ICsyMTAsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0
aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEl0YWxpY0ZvbnRTZWFyY2hL
ZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9
IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVu
dCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAg
IHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICIn
QVhWYWx1ZTogc2VyaWYgYmx1ZSBpdGFsaWMgdGV4dCciKTsKQEAgLTIzOCw3ICsyMTgsNiBAQAog
ICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAg
ICAgICAgIHNlYXJjaEtleSA9ICJBWExhbmRtYXJrU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNo
VGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVp
RWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwg
c2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
cm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxl
bWVudC5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYTGFuZG1hcmtCYW5uZXInIik7CkBAIC0yNDcs
NyArMjI2LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5l
eHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhMaW5rU2VhcmNoS2V5IjsKLSAgICAg
ICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJF
bGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0
aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWExpbmsnIik7CiAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogbGlu
ayciKTsKQEAgLTI1Niw3ICsyMzQsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAg
IGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWExpc3RTZWFy
Y2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVu
dCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxl
bWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYTGlzdCciKTsKICAgICAg
ICAgCkBAIC0yNjQsNyArMjQxLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBp
c0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhMaXZlUmVnaW9u
U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVs
ZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFy
dEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwog
ICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhB
UklBTGl2ZScpIiwgIidwb2xpdGUnIik7CkBAIC0yNzYsNyArMjUyLDYgQEAKICAgICAgICAgc3Rh
cnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFy
Y2hLZXkgPSAiQVhQbGFpblRleHRTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVs
bDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9y
U2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXks
IHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidB
WFJvbGU6IEFYU3RhdGljVGV4dCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
c3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKQEAg
LTI4NSw3ICsyNjAsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0
aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFJhZGlvR3JvdXBTZWFyY2hL
ZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9
IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVu
dCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYUmFkaW9Hcm91cCciKTsKICAg
ICAgICAgCkBAIC0yOTMsNyArMjY3LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAg
ICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhTYW1lVHlw
ZVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRF
bGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3Rh
cnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIiwgIidBWFZhbHVlOiBzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpAQCAtMzAyLDcg
KzI3NSw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0
ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYU3RhdGljVGV4dFNlYXJjaEtleSI7Ci0g
ICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFp
bmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0Rp
cmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOwogICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogZmlyc3QgYmxv
Y2txdW90ZSBsZXZlbCAxJyIpOwpAQCAtMzExLDcgKzI4Myw2IEBACiAgICAgICAgIHN0YXJ0RWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRl
eCgyKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5
ID0gIkFYU3R5bGVDaGFuZ2VTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsK
ICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNl
YXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJv
bGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJ
bmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2VyaWYgYmx1ZSBpdGFsaWMgdGV4dCci
KTsKQEAgLTMyMCw3ICsyOTEsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMTgpOwogICAgICAgICBp
c0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhUYWJsZVNhbWVM
ZXZlbFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1
bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUo
c3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhUYWJsZSci
KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmNoaWxk
QXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29u
ZCB0YWJsZSBoZWFkaW5nIGxldmVsIDEnIik7CkBAIC0zMjksNyArMjk5LDYgQEAKICAgICAgICAg
c3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hp
bGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBz
ZWFyY2hLZXkgPSAiQVhUYWJsZVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxs
OwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JT
ZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwg
c2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FY
Um9sZTogQVhUYWJsZSciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAi
J0FYVmFsdWU6IGZpcnN0IHRhYmxlIGhlYWRpbmcgbGV2ZWwgMSciKTsKQEAgLTMzOCw3ICszMDcs
NiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRy
dWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFRleHRGaWVsZFNlYXJjaEtleSI7Ci0gICAgICAg
IHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxl
bWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlv
bk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhUZXh0RmllbGQnIik7CiAgICAgICAgIApAQCAtMzQ2
LDcgKzMxNCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25O
ZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYVW5kZXJsaW5lU2VhcmNoS2V5IjsK
LSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250
YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlz
RGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUo
InJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFs
dWU6IHNhbnMtc2VyaWYgYmxhY2sgYm9sZCB0ZXh0IHdpdGggdW5kZXJsaW5lJyIpOwpAQCAtMzU1
LDcgKzMyMiw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25O
ZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYVW52aXNpdGVkTGlua1NlYXJjaEtl
eSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0g
Y29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50
LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhMaW5rJyIpOwogICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FY
VmFsdWU6IGxpbmsnIik7CkBAIC0zNjYsNyArMzMyLDcgQEAKICAgICAgICAgLy8gUHJldmlvdXMg
dGV4dCBzZWFyY2guCiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgxMCk7CiAgICAgICAgIGlzRGlyZWN0aW9u
TmV4dCA9IGZhbHNlOwotICAgICAgICBzZWFyY2hLZXkgPSBudWxsOworICAgICAgICBzZWFyY2hL
ZXkgPSAiIjsKICAgICAgICAgc2VhcmNoVGV4dCA9ICJzYW5zLXNlcmlmIGJsYWNrIGJvbGQgdGV4
dCB3aXRoIHVuZGVybGluZSI7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVt
ZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9u
TmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rpb24tZWxlbWVudHMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1s
LXNlY3Rpb24tZWxlbWVudHMuaHRtbAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rpb24tZWxlbWVudHMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNDYsMTEgKzQ2LDkgQEAKIAogICAgICAgICAgIC8vIFdoZW4gYSBoZWFk
ZXIgYW5kIGZvb3RlciBhcmUgaW5zaWRlIGFuIGFydGljbGUsIHRoZXkgc2hvdWxkIG5vdCBiZSBs
YW5kbWFya3MuCiAgICAgICAgICAgc2hvdWxkQmUoImJvZHkuY2hpbGRBdEluZGV4KDYpLmNoaWxk
QXRJbmRleCgwKS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6ICciKTsKLSAgICAgICAgICBzaG91bGRC
ZSgiYm9keS5jaGlsZEF0SW5kZXgoNikuY2hpbGRBdEluZGV4KDEpLnN1YnJvbGUiLCAiJ0FYU3Vi
cm9sZTogJyIpOwogCiAgICAgICAgICAgLy8gV2hlbiBhIGhlYWRlciBhbmQgZm9vdGVyIGFyZSBp
bnNpZGUgYSBzZWN0aW9uLCB0aGV5IHNob3VsZCBub3QgYmUgbGFuZG1hcmtzLgogICAgICAgICAg
IHNob3VsZEJlKCJib2R5LmNoaWxkQXRJbmRleCg3KS5jaGlsZEF0SW5kZXgoMCkuc3Vicm9sZSIs
ICInQVhTdWJyb2xlOiAnIik7Ci0gICAgICAgICAgc2hvdWxkQmUoImJvZHkuY2hpbGRBdEluZGV4
KDcpLmNoaWxkQXRJbmRleCgxKS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6ICciKTsKICAgICB9CiAK
ICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luLXdrMi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi13azIvU2tpcHBlZAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4td2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiw5IEBACiAjIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAjCiAKLSMgV2ViS2l0MiBuZWVkcyB0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHkKLSMgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjEzMD4KLSMgV2ViS2l0VGVz
dFJ1bm5lciBuZWVkcyB0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHktcmVsYXRlZCBEUlQgQVBJcwot
IyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMxPgorIyBXaW5k
b3dzIGRvZXMgbm90IHN1cHBvcnQgV2ViS2l0MiBhY2Nlc3NpYmlsaXR5LgorIyA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMjk2PgorYWNjZXNzaWJpbGl0eQogcGxh
dGZvcm0vd2luL2FjY2Vzc2liaWxpdHkKIAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGFuIGlt
cGxlbWVudGF0aW9uIG9mIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBJY29uQ2hhbmdlcwpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICszOCwxMSBA
QAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIFNUQVJUIE9G
ICgxKSBDbGFzc2lmaWVkIGZhaWx1cmVzIHdpdGggYnVnIHJlcG9ydHMKIAotIyBXZWJLaXQyIG5l
ZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eQotIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQyMTMwPgotIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBv
cnQgYWNjZXNzaWJpbGl0eS1yZWxhdGVkIERSVCBBUElzCi0jIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxMzE+Ci1hY2Nlc3NpYmlsaXR5Ci1wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eQorIyBBWCB0ZXN0cyB0aGF0IHJlcXVpcmUgaGl0IHRlc3RpbmcgZG8gbm90
IHdvcmsgaW4gV0syLgorIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcxMjk4PgorcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zbGlkZXItaW5kaWNhdG9y
Lmh0bWwKK3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2xpc3Rib3gtaGl0LXRlc3QuaHRtbAor
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaWZyYW1lLXdpdGgtdGl0bGUtY29ycmVjdC1oaWVy
YXJjaHkuaHRtbAogCiAjIFNvbWUgY29tcG9zaXRpbmcgdGVzdHMgZmxha2V5CiAjIDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzNTQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxl
ZGJ5LW92ZXJyaWRlcy1sYWJlbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAKIAogCiBQQVNTIHRleHQu
ZGVzY3JpcHRpb24gaXMgJ0FYRGVzY3JpcHRpb246IFNodXQgZG93biBjb21wdXRlciBhZnRlciAx
MCBtaW51dGVzJwotUEFTUyB0ZXh0LnRpdGxlVUlFbGVtZW50KCkuaXNWYWxpZCBpcyBmYWxzZQor
UEFTUyB0ZXh0LnRpdGxlVUlFbGVtZW50KCkgIT0gbnVsbCAmJiB0ZXh0LnRpdGxlVUlFbGVtZW50
KCkuaXNWYWxpZCBpcyBmYWxzZQogUEFTUyBsYWJlbEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBB
WFN0YXRpY1RleHQnCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxl
ZGJ5LW92ZXJyaWRlcy1sYWJlbC5odG1sCShyZXZpc2lvbiA5ODk3NykKKysrIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgICAgc2hvdWxkQmUoInRleHQuZGVz
Y3JpcHRpb24iLCAiJ0FYRGVzY3JpcHRpb246IFNodXQgZG93biBjb21wdXRlciBhZnRlciAxMCBt
aW51dGVzJyIpOwogCiAgICAgICAgICAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIHRpdGxlIFVJIGVs
ZW1lbnQuCi0gICAgICAgICAgc2hvdWxkQmUoInRleHQudGl0bGVVSUVsZW1lbnQoKS5pc1ZhbGlk
IiwgImZhbHNlIik7CisgICAgICAgICAgc2hvdWxkQmUoInRleHQudGl0bGVVSUVsZW1lbnQoKSAh
PSBudWxsICYmIHRleHQudGl0bGVVSUVsZW1lbnQoKS5pc1ZhbGlkIiwgImZhbHNlIik7CiAgICAg
ICAgICAgCiAgICAgICAgICAgLy8gVGhlIGxhYmVsIGVsZW1lbnQgaXMgaW4gYSBncm91cCwgaW4g
YSBncm91cCwgaW4gdGhlIHdlYiBhcmVhLgogICAgICAgICAgIHZhciBsYWJlbEVsZW1lbnQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5yb290RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRB
dEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3RoLWFzLXRpdGxlLXVpLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90aC1hcy10aXRsZS11aS5odG1sCShyZXZpc2lvbiA5ODk3
NykKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGgtYXMtdGl0bGUtdWkuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNyBAQAogICAgICAgICAgICAgYm9keS5mb2N1cygpOwog
ICAgICAgICAgICAgdmFyIGdyb3VwID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDEpOwogICAgICAgICAgICAgdmFyIGdyb3VwMiA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgzKTsKLQotICAgICAg
ICAgICAgaWYgKGdyb3VwLnRpdGxlVUlFbGVtZW50KCkuYWxsQXR0cmlidXRlcygpICE9ICIiICYm
IGdyb3VwMi50aXRsZVVJRWxlbWVudCgpLmFsbEF0dHJpYnV0ZXMoKSA9PSAiIikKKyAgICAgICAg
ICAgIGlmIChncm91cC50aXRsZVVJRWxlbWVudCgpLmFsbEF0dHJpYnV0ZXMoKSAhPSAiIiAmJiAo
Z3JvdXAyLnRpdGxlVUlFbGVtZW50KCkgPT0gbnVsbCB8fCBncm91cDIudGl0bGVVSUVsZW1lbnQo
KS5hbGxBdHRyaWJ1dGVzKCkgPT0gIiIpKSAKICAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJU
ZXh0ICs9ICJQYXNzIjsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXN1bHQu
aW5uZXJUZXh0ICs9ICJGYWlsIjsKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbm9u
LWRhdGEtdGFibGUtY2VsbC10aXRsZS11aS1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub24tZGF0YS10YWJsZS1jZWxsLXRpdGxlLXVpLWVsZW1l
bnQuaHRtbAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25v
bi1kYXRhLXRhYmxlLWNlbGwtdGl0bGUtdWktZWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw5IEBACiAgICAgICAgICAgICAvLyBnZXQgdGhlIDx0aD5za2lwPC90aD4gZWxl
bWVudAogICAgICAgICAgICAgdmFyIGdyb3VwID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDUpOwogICAgICAgICAgICAgdmFyIHRpdGxlVUkgPSBn
cm91cC50aXRsZVVJRWxlbWVudCgpOwotICAgICAgICAgICAgdmFyIGFsbEF0dHJpYnV0ZXMgPSB0
aXRsZVVJLmFsbEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgIHZhciBhbGxBdHRyaWJ1dGVzID0g
IiI7CisgICAgICAgICAgICBpZiAodGl0bGVVSSkKKyAgICAgICAgICAgICAgICBhbGxBdHRyaWJ1
dGVzID0gdGl0bGVVSS5hbGxBdHRyaWJ1dGVzKCk7CiAKICAgICAgICAgICAgIC8vIHZlcmlmeSBp
dCBoYXMgbm8gdGl0bGUgdWkgZWxlbWVudCAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWFs
bEF0dHJpYnV0ZXMpIHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MTI4KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMTEtMDIgIENo
cmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXRUZXN0
UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1yZWxhdGVkIERSVCBBUElzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjEzMQorCisg
ICAgICAgIENsZWFudXAgdGVzdHMgYW5kIHNraXAgbGlzdHMgc28gdGhhdCBhY2Nlc3NpYmlsaXR5
IHRlc3RzIGNhbiBydW4KKyAgICAgICAgaW4gV0syLiBUaGlzIG1vc3RseSBpbnZvbHZlZCBoYW5k
bGluZyByZXR1cm5lZCBlbGVtZW50cyB0aGF0IG1pZ2h0IGJlIG5pbCwKKyAgICAgICAgc29tZXRo
aW5nIHRoYXQgZGlkIG5vdCBoYXBwZW4gaW4gRFJULgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnkt
b3ZlcnJpZGVzLWxhYmVsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Fy
aWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L25vbi1kYXRhLXRhYmxlLWNlbGwtdGl0bGUtdWktZWxlbWVudC5odG1sOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvdGgtYXMtdGl0bGUtdWkuaHRtbDoKKyAgICAgICAgICAgICBNYWtlIHN1
cmUgYSBuaWwgdGl0bGVVSUVsZW1lbnQgaXMgYWNjb3VudGVkIGZvciBpbiB0aGVzZSB0ZXN0cy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9uLWVsZW1lbnRzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rpb24tZWxlbWVudHMu
aHRtbDoKKyAgICAgICAgICAgICBSZW1vdmUgbmlsIGVsZW1lbnQgYWNjZXNzIHRoYXQgaXMgdW5u
ZWNlc3NhcnkuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VhcmNoLXBy
ZWRpY2F0ZS5odG1sOgorICAgICAgICAgICAgIEFkZCBhbiBhbHQgdGFnIHRvIDxpbWc+IHNvIHRo
YXQgaXQgYWx3YXlzIHNob3dzIHVwIGluIHRoZSBBWCB0cmVlLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLW5vdGlmaWNhdGlvbnMuaHRt
bDoKKyAgICAgICAgICAgICBSZW1vdmUgdGhlIG5vdGlmaWNhdGlvbiBsaXN0ZW5lciBwcm9wZXJs
eSAod2FzIGNhdXNpbmcgZmxha2luZXNzKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdXBkYXRlLWNoaWxkcmVu
LXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMuaHRtbDoKKyAgICAgICAgICAgICBBY2NvdW50IGZvciB3
aGVuIGVsZW1lbnQncyByZXR1cm5lZCBhcmUgbmlsLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi13
azIvU2tpcHBlZDoKKyAgICAgICAgICAgICBTa2lwIGFsbCBhY2Nlc3NpYmlsaXR5IHRlc3RzIG9u
IHdpbi4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvU2tpcHBlZDoKKyAgICAgICAgICAgICBTa2lw
IGFsbCBhY2Nlc3NpYmlsaXR5IHRlc3RzIG9uIGd0ay4KKwogMjAxMS0xMS0wMiAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHI5ODc1OS1yOTg3
NzMpOiBwbGF0Zm9ybS9tYWMvZm9udHMvY29sb3ItYml0bWFwLmh0bWwgZmFpbGluZyBvbiBMaW9u
IEludGVsIERlYnVnIChUZXN0cykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113518</attachid>
            <date>2011-11-03 10:25:30 -0700</date>
            <delta_ts>2011-11-03 11:00:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>188547</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA5OTEyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDcgQEAKIF9f
Wk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTEwcm9vdE9iamVjdEV2CiBfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUxOHJvb3RPYmplY3RGb3JGcmFtZUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3Jl
MTNBWE9iamVjdENhY2hlMjFnQWNjZXNzaWJpbGl0eUVuYWJsZWRFCitfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUyM2ZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlRVBLTlNfNFBhZ2VFCiBfX1pON1dl
YkNvcmUxM0FYT2JqZWN0Q2FjaGU0MmdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNl
RW5hYmxlZEUKIF9fWk43V2ViQ29yZTEzSFRUUEhlYWRlck1hcEMxRXYKIF9fWk43V2ViQ29yZTEz
SFRUUEhlYWRlck1hcEQxRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MTI4KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTEtMTEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1yZWxhdGVk
IERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MjEzMQorCisgICAgICAgIE1pbm9yIGNoYW5nZXMgbmVlZGVkIHRvIHN1cHBvcnQgQVggdGVz
dGluZyBpbiBXS1Rlc3RSdW5uZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgICAgICBFeHBvc2UgZm9j
dXNlZFVJRWxlbWVudEZvclBhZ2Ugc28gdGhhdCB0aGUgV0syIGluamVjdGVkIGJ1bmRsZSBjYW4g
cmV0cmlldmUgaXQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKToKKyAgICAgICAgICAgIFJlbW92ZSBhbiB1bm5jZXNzYXJ5IGFzc2VydCB0aGF0IHdhcyBj
YXVzaW5nIGlzc3VlcyB3aXRoIHRoZSBXSzIgdGVzdCBydW4uCisKIDIwMTEtMTEtMDIgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSB1c2FnZSBvZiBT
dHJpbmdJbXBsIHdpdGggU3RyaW5nIHdoZXJlIHBvc3NpYmxlIGluIENoYXJhY3RlckRhdGEgYW5k
IFRleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lvbiA5
OTEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OTUsNyArNDk1LDggQEAKIAog
c3RhdGljIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgp
KTsKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQW55VHlwZVNlYXJj
aEtleTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCog
c2VhcmNoS2V5TWFwID0gY3JlYXRlQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCgpOwogICAgIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgJKHJldmlzaW9uIDk5
MTI4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDkgQEAKIFdL
X0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNvbmZpcm1Db21wb3NpdGlvbihXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VDb25maXJtQ29tcG9zaXRpb25X
aXRoVGV4dChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGV4dCk7CiAKK1dLX0VY
UE9SVCB2b2lkKiBXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KFdLQnVuZGxlUGFnZVJlZik7CitX
S19FWFBPUlQgdm9pZCogV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdChXS0J1bmRsZVBhZ2VS
ZWYpOyAgICAKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDk5MTI4KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNywxMSBAQAogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUg
IldlYlVSTFJlcXVlc3QuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvQWNjZXNzaWJpbGl0eU9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMTI2LDYgKzEzMCw0NiBA
QAogICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPm1haW5XZWJGcmFtZSgpKTsKIH0K
IAordm9pZCogV0tBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZikKK3sKKyAgICBpZiAoIXBhZ2VSZWYpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFdl
YkNvcmU6OlBhZ2UqIHBhZ2UgPSB0b0ltcGwocGFnZVJlZiktPmNvcmVQYWdlKCk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBXZWJDb3JlOjpGcmFtZSogY29y
ZSA9IHBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghY29yZSB8fCAhY29yZS0+ZG9jdW1lbnQo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOworCisgICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dCogcm9vdCA9IGNvcmUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgp
OworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIHJv
b3QtPndyYXBwZXIoKTsKK30KKwordm9pZCogV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICBpZiAoIXBhZ2VSZWYpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSB0b0ltcGwocGFnZVJlZikt
PmNvcmVQYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKKworICAgIFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKKyAgICBpZiAoIWZvY3VzZWRP
YmplY3QpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBmb2N1c2VkT2JqZWN0
LT53cmFwcGVyKCk7Cit9CisKIHZvaWQgV0tCdW5kbGVQYWdlU3RvcExvYWRpbmcoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zdG9wTG9hZGluZygpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gOTkxMjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMS0wMiAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIg
bmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgRFJUIEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMxCisKKyAgICAgICAg
QWxsb3cgdGhlIGluamVjdGVkIGJ1bmRsZSB0byByZXRyaWV2ZSB0aGUgZm9jdXNlZCBhbmQgcm9v
dCBhY2Nlc3NpYmlsaXR5CisgICAgICAgIG9iamVjdHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0
KToKKyAgICAgICAgKFdLQWNjZXNzaWJpbGl0eUZvY3VzZWRPYmplY3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oOgorCiAy
MDExLTExLTAyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgRGUtdmlydHVhbGl6ZSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcwpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
OTkxMjgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMzEg
QEAKKzIwMTEtMTEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1y
ZWxhdGVkIERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjEzMQorCisgICAgICAgIFBvcnQgdGhlIEFYIGNvZGUgaW4gRFJUIHRvIFdLVGVz
dFJ1bm5lciBieSB1c2luZyBJREwuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0Rlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6fkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
Om1ha2VXaW5kb3dPYmplY3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6d3JhcHBlckNsYXNzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OnJvb3RFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZv
Y3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmVs
ZW1lbnRBdFBvaW50KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6bG9nRm9jdXNFdmVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6bG9nVmFsdWVDaGFuZ2VFdmVudHMpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cyk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25M
aXN0ZW5lcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpub3RpZmlj
YXRpb25SZWNlaXZlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpy
ZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcDogQWRkZWQuCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6fkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OndyYXBwZXJDbGFzcyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlci5oOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OnBsYXRmb3JtVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OndyYXBwZXJDbGFzcyk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
Lmg6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpw
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmlzRXF1
YWwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3
cmFwcGVyQ2xhc3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Zh
bGlkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWspOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5k
ZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Ny
b2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxT
Y3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFs
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdl
Rm9yRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRN
YXJrZXJSYW5nZUxlbmd0aCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlckZvclBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGxhdGZvcm1VSUVsZW1lbnQp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbDog
QWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmlkbDogQWRkZWQuCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmlkbDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGU6OmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2xlYXJXaW5kb3dGb3JGcmFtZSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW06IEFkZGVkLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbCk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1h
Yy5tbTogQWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6
OmlzRXF1YWwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06IEFkZGVkLgorICAgICAgICAoK1tOU1N0cmlu
ZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAgICgtW05TU3RyaW5nIGNyZWF0ZUpT
U3RyaW5nUmVmXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
IGluaXRXaXRoUGxhdGZvcm1FbGVtZW50Ol0pOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyIF9ub3RpZmljYXRpb25SZWNlaXZlZDpdKToKKyAgICAgICAgKC1bQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgc2V0Q2FsbGJhY2s6XSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCk6CisgICAgICAgIChXVFI6OmRlc2NyaXB0aW9uT2ZWYWx1ZSk6CisgICAgICAgIChXVFI6OmF0
dHJpYnV0ZXNPZkVsZW1lbnQpOgorICAgICAgICAoV1RSOjpjb25jYXRlbmF0ZUF0dHJpYnV0ZUFu
ZFZhbHVlKToKKyAgICAgICAgKFdUUjo6Y29udmVydE5TQXJyYXlUb1ZlY3Rvcik6CisgICAgICAg
IChXVFI6OmRlc2NyaXB0aW9uT2ZFbGVtZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtzKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJl
bkNvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRS
b3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVV
SUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRF
bGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2Vk
QnlSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZMaW5rZWRVSUVsZW1lbnRzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNldHRhYmxlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmli
dXRlTmFtZXMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbik6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGFuZ3VhZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpoZWxwVGV4dCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoZWlnaHQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjbGlja1BvaW50WCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNsaWNrUG9pbnRZKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50
VmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbik6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3VwcG9y
dGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFibGVkKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzcGVhayk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFJc0dyYWJiZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhRHJvcEVmZmVjdHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpsaW5lRm9ySW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
YW5nZUZvckxpbmUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3Vu
ZHNGb3JSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmlu
Z0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmli
dXRlZFN0cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVy
cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJv
d0hlYWRlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZDb2x1bW5zKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mUm93cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZlZpc2libGVDZWxscyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJvd0NvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y29sdW1uQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
bmRleEluVGFibGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJ
bmRleFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1u
SW5kZXhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxG
b3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
b3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aW5jcmVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZGVjcmVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2hvd01lbnUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcyk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFs
dWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29k
aW5nKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxp
c3RlbmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2Fi
bGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJs
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT2ZmU2NyZWVuKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1cCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphZGRTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpyZW1vdmVTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludCk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcik6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybU5hbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybU5hbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdU
Ujo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vSW5qZWN0ZWRCdW5kbGUudmNwcm9qOgorCiAy
MDExLTExLTAyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjk4NzU5LXI5ODc3Myk6IHBsYXRmb3JtL21hYy9mb250cy9jb2xvci1iaXRtYXAu
aHRtbCBmYWlsaW5nIG9uIExpb24gSW50ZWwgRGVidWcgKFRlc3RzKQpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaCIKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV1RSIHsKKyAgICAKK1Bhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVh
dGUoUGxhdGZvcm1UZXh0TWFya2VyIG1hcmtlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG1hcmtlcikpOworfQorCitQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKGNvbnN0
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihtYXJrZXIpKTsKK30KKworQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlciBt
YXJrZXIpCisgICAgOiBtX3RleHRNYXJrZXIobWFya2VyKQoreworfQorCitBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoY29uc3QgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXImIG1hcmtlcikKKyAgICA6IG1fdGV4dE1hcmtlcihtYXJrZXIucGxhdGZvcm1UZXh0
TWFya2VyKCkpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIoKQoreworfQorCitQbGF0Zm9ybVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6OnBsYXRmb3JtVGV4dE1hcmtlcigpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIHJldHVybiBtX3RleHRNYXJrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBtX3Rl
eHRNYXJrZXI7CisjZW5kaWYKK30KKyAgICAKK0pTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OndyYXBwZXJDbGFzcygpCit7CisgICAgcmV0dXJuIEpTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OmFjY2Vzc2liaWxpdHlUZXh0TWFya2VyQ2xhc3MoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RSCisKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTc2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisKKyNpbmNsdWRlICJKU0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0
ci5oPgorCituYW1lc3BhY2UgV1RSIHsKKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoUGxhdGZvcm1VSUVsZW1lbnQgdWlF
bGVtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCh1aUVsZW1lbnQpKTsKK30KKyAgICAKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQmIHVpRWxlbWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQodWlFbGVtZW50KSk7Cit9CisKK0pTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6d3JhcHBlckNsYXNzKCkKK3sKKyAgICByZXR1cm4gSlNBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2xhc3MoKTsKK30KKyAgICAKKy8vIEltcGxl
bWVudGF0aW9uCisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWYWxpZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZWxlbWVudDsgICAgICAgICAgICAKK30KKyAgICAKKy8vIFVuc3Vw
cG9ydGVkIG1ldGhvZHMgb24gdmFyaW91cyBwbGF0Zm9ybXMuIEFzIHRoZWlyIGltcGxlbWVudGVk
IG9uIG90aGVyIHBsYXRmb3JtcyB0aGlzIGxpc3Qgc2hvdWxkIGJlIG1vZGlmaWVkLgorI2lmICFQ
TEFURk9STShNQUMpCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KFBsYXRmb3JtVUlFbGVtZW50KSB7IH0KK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpIHsgfQorQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgeyB9Citib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopIHsg
cmV0dXJuIGZhbHNlOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KGludCwgaW50KSB7IHJldHVybiAwOyB9
CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQordW5zaWduZWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW5kZXhPZkNoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKSB7
IHJldHVybiAwOyB9CitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VudCgp
IHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQoKSB7IHJldHVybiAwOyB9CitQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVu
dEVsZW1lbnQoKSB7IHJldHVybiAwOyB9Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRh
a2VGb2N1cygpIHsgfQordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlU2VsZWN0aW9u
KCkgeyB9Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNlbGVjdGlvbigpIHsgfQor
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKSB7IH0KK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVz
KCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMoKSB7IHJldHVybiAwOyB9CitQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZEb2N1
bWVudExpbmtzKCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCkgeyByZXR1cm4gMDsgfQor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFtZXRl
cml6ZWRBdHRyaWJ1dGVOYW1lcygpIHsgcmV0dXJuIDA7IH0KK3ZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aW5jcmVtZW50KCkgeyB9Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRl
Y3JlbWVudCgpIHsgfQordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzaG93TWVudSgpIHsg
fQordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcygpIHsgfQorSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVl
KEpTU3RyaW5nUmVmKSB7IHJldHVybiAwOyB9Citkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYpIHsgcmV0dXJuIDA7IH0KK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmKSB7
IHJldHVybiBmYWxzZTsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0
ZVN1cHBvcnRlZChKU1N0cmluZ1JlZikgeyByZXR1cm4gZmFsc2U7IH0KK2Jvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1JlZikgeyByZXR1cm4g
ZmFsc2U7IH0KK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXBwb3J0ZWQo
SlNTdHJpbmdSZWYpIHsgcmV0dXJuIGZhbHNlOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKCkgeyByZXR1cm4g
MDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJv
bGVEZXNjcmlwdGlvbigpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSgpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpIHsgcmV0
dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpsYW5ndWFnZSgpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFs
dWUoKSBjb25zdCB7IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdCB7IHJldHVybiAwOyB9CitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRpb24oKSBj
b25zdCB7IHJldHVybiAwOyB9Citkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCgpIHsg
cmV0dXJuIDA7IH0KK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KCkgeyByZXR1cm4g
MDsgfQorZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndpZHRoKCkgeyByZXR1cm4gMDsg
fQorZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlaWdodCgpIHsgcmV0dXJuIDA7IH0K
K2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSgpIHsgcmV0dXJu
IDA7IH0KK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSgpIHsgcmV0dXJu
IDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2
YWx1ZURlc2NyaXB0aW9uKCkgeyByZXR1cm4gMDsgfQoraW50IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Omluc2VydGlvblBvaW50TGluZU51bWJlcigpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSgp
IHsgcmV0dXJuIDA7IH0KK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFibGVkKCkg
eyByZXR1cm4gZmFsc2U7IH0KK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJl
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Citib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3Rh
YmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2V0U2VsZWN0ZWRDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KikgY29uc3QgeyB9Cit1
bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQoKSBj
b25zdCB7IHJldHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkKSBjb25z
dCB7IHJldHVybiAwOyB9Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0NoZWNrZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc09mZlNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Citi
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ29sbGFwc2VkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJZ25vcmVkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzUG9wdXAo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQoraW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhp
ZXJhcmNoaWNhbExldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQorZG91YmxlIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRYKCkgeyByZXR1cm4gMDsgfQorZG91YmxlIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZKCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcoKSB7
IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZG9jdW1lbnRVUkkoKSB7IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJsKCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrKCkgeyByZXR1cm4g
MDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKSB7IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycygp
IHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5zKCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd3MoKSB7
IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlc09mVmlzaWJsZUNlbGxzKCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRl
cigpIHsgcmV0dXJuIDA7IH0KK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEluVGFi
bGUoKSB7IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cm93SW5kZXhSYW5nZSgpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKCkgeyBy
ZXR1cm4gMDsgfQoraW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0NvdW50KCkgeyByZXR1
cm4gMDsgfQoraW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkNvdW50KCkgeyByZXR1
cm4gMDsgfQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgodW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KK1Bh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZGlzY2xvc2VkQnlSb3coKSB7IHJldHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgodW5z
aWduZWQpIHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCkg
eyByZXR1cm4gMDsgfQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgodW5zaWduZWQpIHsgcmV0
dXJuIDA7IH0KK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXJpYURyb3BFZmZlY3RzKCkgY29uc3QgeyByZXR1cm4gMDsgfQoraW50
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQpIHsgcmV0dXJuIDA7IH0K
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZv
ckxpbmUoaW50KSB7IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Ym91bmRzRm9yUmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKSB7IHJl
dHVybiAwOyB9Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJh
bmdlKHVuc2lnbmVkLCB1bnNpZ25lZCkgeyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKSB7
IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkLCB1bnNpZ25lZCkgeyByZXR1
cm4gMDsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFu
Z2VJc01pc3NwZWxsZWQodW5zaWduZWQsIHVuc2lnbmVkKSB7IHJldHVybiBmYWxzZTsgfQorUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1
aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGJvb2ws
IEpTU3RyaW5nUmVmLCBKU1N0cmluZ1JlZikgeyByZXR1cm4gMDsgfQorUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1u
QW5kUm93KHVuc2lnbmVkLCB1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQorUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Ny
b2xsYmFyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0
aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZikgeyByZXR1cm4gZmFsc2U7IH0KK2Jvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKSB7IHJldHVybiBmYWxz
ZTsgfQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQqKSB7IHJldHVybiAwOyB9CitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1h
cmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiAw
OyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KikgeyByZXR1cm4gMDsgfQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4gMDsgfQorUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5
RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiAw
OyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50LCBpbnQpIHsgcmV0dXJuIDA7IH0KK1Bhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBy
ZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIDA7IH0K
K1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gMDsg
fQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikgeyByZXR1
cm4gMDsgfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdUUgorCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5oCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJfaAorI2RlZmluZSBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09i
amVjdFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2lmIFBMQVRGT1JNKFdJTikK
KyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdUUiB7CisgICAgCitj
bGFzcyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IGNyZWF0
ZSgpOworICAgIH5BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpOworCisgICAgdm9pZCBtYWtlV2lu
ZG93T2JqZWN0KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgd2luZG93T2JqZWN0LCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pOworICAgIHZpcnR1YWwgSlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKTsK
KyAgICAKKyAgICAvLyBDb250cm9sbGVyIE1ldGhvZHMgLSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBp
bXBsZW1lbnRhdGlvbnMKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHJv
b3RFbGVtZW50KCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBmb2N1
c2VkRWxlbWVudCgpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxl
bWVudEF0UG9pbnQoaW50IHgsIGludCB5KTsKKworICAgIC8vIEhlcmUgZm9yIGNvbnNpc3RlbmN5
IHdpdGggRFJULiBOb3QgaW1wbGVtZW50ZWQgYmVjYXVzZSB0aGV5IGRvbid0IGRvIGFueXRoaW5n
IG9uIHRoZSBNYWMuCisgICAgdm9pZCBsb2dGb2N1c0V2ZW50cygpIHsgfQorICAgIHZvaWQgbG9n
VmFsdWVDaGFuZ2VFdmVudHMoKSB7IH0KKyAgICB2b2lkIGxvZ1Njcm9sbGluZ1N0YXJ0RXZlbnRz
KCkgeyB9CisgICAgdm9pZCBsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkgeyB9CisgICAgdm9pZCBh
ZGROb3RpZmljYXRpb25MaXN0ZW5lcihBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiwgSlNWYWx1ZVJl
ZiBmdW5jdGlvbkNhbGxiYWNrKSB7IH0KKyAgICB2b2lkIG5vdGlmaWNhdGlvblJlY2VpdmVkKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBKU1N0cmluZ1JlZiBldmVudE5hbWUpIHsgfQorICAgIAor
ICAgIHZvaWQgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpIHsgfQorCitwcml2YXRlOgorICAgIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVFIKKworI2Vu
ZGlmIC8vIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyX2gKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcl9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyX2gKKworI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgQ0ZUeXBlUmVmIFBsYXRmb3JtVGV4dE1hcmtlcjsKKyNl
bHNlCit0eXBlZGVmIHZvaWQqIFBsYXRmb3JtVGV4dE1hcmtlcjsKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV1RSIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDsKKworY2xhc3MgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIgOiBwdWJsaWMgSlNXcmFwcGFibGUgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBjcmVhdGUoUGxhdGZvcm1U
ZXh0TWFya2VyKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gY3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJik7CisKKyAgICB+QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIoKTsKKyAgICAKKyAgICBQbGF0Zm9ybVRleHRNYXJrZXIgcGxhdGZv
cm1UZXh0TWFya2VyKCkgY29uc3Q7CisgICAgdmlydHVhbCBKU0NsYXNzUmVmIHdyYXBwZXJDbGFz
cygpOworCisgICAgc3RhdGljIEpTT2JqZWN0UmVmIG1ha2VKU0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXImKTsKKyAgICBi
b29sIGlzRXF1YWwoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICAKK3ByaXZhdGU6Cisg
ICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoUGxhdGZvcm1UZXh0TWFya2VyKTsKKyAgICBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcihjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciYpOworCisj
aWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxQbGF0Zm9ybVRleHRNYXJrZXI+IG1fdGV4
dE1hcmtlcjsKKyNlbHNlCisgICAgUGxhdGZvcm1UZXh0TWFya2VyIG1fdGV4dE1hcmtlcjsKKyNl
bmRpZgorfTsKKworI2lmICFQTEFURk9STShNQUMpCitpbmxpbmUgYm9vbCBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcjo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIGZh
bHNlOyB9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RSCisgICAgCisjZW5kaWYgLy8gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJfaApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg5LDYgKzg5LDEyIEBACiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0NoYXIqPihwYXRoLmNvbnN0RGF0YSgpKSwgcGF0
aC5sZW5ndGgoKSk7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
cGxhdGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicXQiKSk7
CisgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCiAKICNp
bmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlclF0Lm1vYyIKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudF9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnRfaAorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCIKKyNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgiCisjaW5jbHVkZSAiSlNXcmFwcGFi
bGUuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisjaWZkZWYg
X19PQkpDX18KK3R5cGVkZWYgaWQgUGxhdGZvcm1VSUVsZW1lbnQ7CisjZWxzZQordHlwZWRlZiBz
dHJ1Y3Qgb2JqY19vYmplY3QqIFBsYXRmb3JtVUlFbGVtZW50OworI2VuZGlmCisjZWxpZiBQTEFU
Rk9STShXSU4pCisjdW5kZWYgX1dJTlNPQ0tBUElfCisjZGVmaW5lIF9XSU5TT0NLQVBJXyAvLyBQ
cmV2ZW50IGluY2x1c2lvbiBvZiB3aW5zb2NrLmggaW4gd2luZG93cy5oCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL0NPTVB0ci5oPgorI2luY2x1ZGUgPG9sZWFjYy5oPgorCit0eXBlZGVmIENPTVB0cjxJ
QWNjZXNzaWJsZT4gUGxhdGZvcm1VSUVsZW1lbnQ7CisjZWxpZiBQTEFURk9STShHVEspCisjaW5j
bHVkZSA8YXRrL2F0ay5oPgordHlwZWRlZiBBdGtPYmplY3QqIFBsYXRmb3JtVUlFbGVtZW50Owor
I2Vsc2UKK3R5cGVkZWYgdm9pZCogUGxhdGZvcm1VSUVsZW1lbnQ7CisjZW5kaWYKKworI2lmIFBM
QVRGT1JNKE1BQykKKyNpZmRlZiBfX09CSkNfXwordHlwZWRlZiBpZCBOb3RpZmljYXRpb25IYW5k
bGVyOworI2Vsc2UKK3R5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBOb3RpZmljYXRpb25IYW5k
bGVyOworI2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIFdUUiB7CisKK2NsYXNzIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQgOiBwdWJsaWMgSlNXcmFwcGFibGUgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGNyZWF0ZShQbGF0Zm9ybVVJRWxl
bWVudCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY3Jl
YXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsKKworICAgIH5BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KCk7CisKKyAgICBQbGF0Zm9ybVVJRWxlbWVudCBwbGF0Zm9ybVVJRWxlbWVudCgp
IHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIHZpcnR1YWwgSlNDbGFzc1JlZiB3cmFwcGVyQ2xh
c3MoKTsKKworICAgIHN0YXRpYyBKU09iamVjdFJlZiBtYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOworCisgICAg
Ym9vbCBpc0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCk7CisgICAg
CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBlbGVtZW50QXRQb2ludChp
bnQgeCwgaW50IHkpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY2hp
bGRBdEluZGV4KHVuc2lnbmVkKTsKKyAgICB1bnNpZ25lZCBpbmRleE9mQ2hpbGQoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCopOworICAgIGludCBjaGlsZHJlbkNvdW50KCk7CisgICAgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB0aXRsZVVJRWxlbWVudCgpOworICAgIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gcGFyZW50RWxlbWVudCgpOworCisgICAgdm9pZCB0
YWtlRm9jdXMoKTsKKyAgICB2b2lkIHRha2VTZWxlY3Rpb24oKTsKKyAgICB2b2lkIGFkZFNlbGVj
dGlvbigpOworICAgIHZvaWQgcmVtb3ZlU2VsZWN0aW9uKCk7CisKKyAgICAvLyBNZXRob2RzIC0g
cGxhdGZvcm0taW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCisgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGFsbEF0dHJpYnV0ZXMoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
YXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cygpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gbGlua2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CisgICAgCisg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkRvY3VtZW50TGlua3MoKTsK
KyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mQ2hpbGRyZW4oKTsKKyAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCk7
CisgICAgdm9pZCBpbmNyZW1lbnQoKTsKKyAgICB2b2lkIGRlY3JlbWVudCgpOworICAgIHZvaWQg
c2hvd01lbnUoKTsKKyAgICB2b2lkIHByZXNzKCk7CisKKyAgICAvLyBBdHRyaWJ1dGVzIC0gcGxh
dGZvcm0taW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAg
ZG91YmxlIG51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAg
Ym9vbCBib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKKyAgICBib29s
IGlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAgYm9vbCBp
c0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAgYm9vbCBpc0Fj
dGlvblN1cHBvcnRlZChKU1N0cmluZ1JlZiBhY3Rpb24pOworICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiByb2xlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN1YnJvbGUoKTsK
KyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcm9sZURlc2NyaXB0aW9uKCk7CisgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRpdGxlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IGRlc2NyaXB0aW9uKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxhbmd1YWdl
KCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ1ZhbHVlKCk7CisgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFjY2Vzc2liaWxpdHlWYWx1ZSgpIGNvbnN0OworICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBoZWxwVGV4dCgpIGNvbnN0OworICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBvcmllbnRhdGlvbigpIGNvbnN0OworICAgIGRvdWJsZSB4KCk7CisgICAg
ZG91YmxlIHkoKTsKKyAgICBkb3VibGUgd2lkdGgoKTsKKyAgICBkb3VibGUgaGVpZ2h0KCk7Cisg
ICAgZG91YmxlIGludFZhbHVlKCkgY29uc3Q7CisgICAgZG91YmxlIG1pblZhbHVlKCk7CisgICAg
ZG91YmxlIG1heFZhbHVlKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHZhbHVlRGVz
Y3JpcHRpb24oKTsKKyAgICBpbnQgaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCk7CisgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNlbGVjdGVkVGV4dFJhbmdlKCk7CisgICAgYm9vbCBpc0Vu
YWJsZWQoKTsKKyAgICBib29sIGlzUmVxdWlyZWQoKSBjb25zdDsKKyAgICAKKyAgICBib29sIGlz
Rm9jdXNlZCgpIGNvbnN0OworICAgIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKKyAgICBib29s
IGlzU2VsZWN0ZWQoKSBjb25zdDsKKyAgICBib29sIGlzU2VsZWN0YWJsZSgpIGNvbnN0OworICAg
IGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFNlbGVjdGVkQ2hp
bGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopIGNvbnN0OworICAgIHVuc2lnbmVkIHNlbGVjdGVk
Q2hpbGRyZW5Db3VudCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gc2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQpIGNvbnN0OworICAgIAorICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0OworICAgIGJvb2wgaXNFeHBhbmRlZCgpIGNvbnN0OworICAgIGJv
b2wgaXNDaGVja2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsKKyAgICBi
b29sIGlzT2ZmU2NyZWVuKCkgY29uc3Q7CisgICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0Owor
ICAgIGJvb2wgaXNJZ25vcmVkKCkgY29uc3Q7CisgICAgYm9vbCBoYXNQb3B1cCgpIGNvbnN0Owor
ICAgIGludCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0OworICAgIGRvdWJsZSBjbGlja1BvaW50
WCgpOworICAgIGRvdWJsZSBjbGlja1BvaW50WSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBkb2N1bWVudEVuY29kaW5nKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGRv
Y3VtZW50VVJJKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHVybCgpOworCisgICAg
Ly8gQ1NTMy1zcGVlY2ggcHJvcGVydGllcy4KKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
c3BlYWsoKTsKKyAgICAKKyAgICAvLyBUYWJsZS1zcGVjaWZpYyBhdHRyaWJ1dGVzCisgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKTsKKyAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mUm93SGVhZGVycygpOworICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZDb2x1bW5zKCk7CisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZlJvd3MoKTsKKyAgICBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gYXR0cmlidXRlc09mVmlzaWJsZUNlbGxzKCk7CisgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkhlYWRlcigpOworICAgIGludCBpbmRleEluVGFibGUo
KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcm93SW5kZXhSYW5nZSgpOworICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb2x1bW5JbmRleFJhbmdlKCk7CisgICAgaW50IHJvd0Nv
dW50KCk7CisgICAgaW50IGNvbHVtbkNvdW50KCk7CisgICAgCisgICAgLy8gVHJlZS9PdXRsaW5l
IHNwZWNpZmljIGF0dHJpYnV0ZXMKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IHNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBkaXNjbG9zZWRCeVJvdygpOworICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gZGlzY2xvc2VkUm93QXRJbmRleCh1bnNpZ25lZCk7CisKKyAgICAv
LyBBUklBIHNwZWNpZmljCisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBh
cmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IGFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCk7CisKKyAg
ICAvLyBBUklBIERyYWcgYW5kIERyb3AKKyAgICBib29sIGFyaWFJc0dyYWJiZWQoKSBjb25zdDsK
KyAgICAvLyBBIHNwYWNlIGNvbmNhdGVudGF0ZWQgc3RyaW5nIG9mIGFsbCB0aGUgZHJvcCBlZmZl
Y3RzLgorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhcmlhRHJvcEVmZmVjdHMoKSBjb25z
dDsKKyAgICAKKyAgICAvLyBQYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZXMKKyAgICBpbnQgbGluZUZv
ckluZGV4KGludCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJhbmdlRm9yTGluZShp
bnQpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBib3VuZHNGb3JSYW5nZSh1bnNpZ25l
ZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJh
bmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBzdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlZFN0cmluZ0Zv
clJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgYXR0
cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVt
ZW50Rm9yU2VhcmNoUHJlZGljYXRlKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVu
dCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpTU3RyaW5nUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdS
ZWYgc2VhcmNoVGV4dCk7CisgICAgCisgICAgLy8gVGFibGUtc3BlY2lmaWMKKyAgICBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQg
Y29sdW1uLCB1bnNpZ25lZCByb3cpOworCisgICAgLy8gU2Nyb2xsYXJlYS1zcGVjaWZpYworICAg
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gaG9yaXpvbnRhbFNjcm9sbGJhcigp
IGNvbnN0OworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdmVydGljYWxT
Y3JvbGxiYXIoKSBjb25zdDsKKworICAgIC8vIFRleHQgbWFya2Vycy4KKyAgICBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCopOyAgICAKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFy
a2VyKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBzdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwor
ICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOworICAgIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHRleHRNYXJrZXJGb3JQb2ludChpbnQgeCwg
aW50IHkpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHByZXZpb3Vz
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIFBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IG5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKik7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBhY2Nlc3NpYmls
aXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKKyAgICBpbnQgdGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKKyAgICAKKyAgICAvLyBOb3RpZmljYXRpb25z
CisgICAgLy8gRnVuY3Rpb24gY2FsbGJhY2sgc2hvdWxkIHRha2Ugb25lIGFyZ3VtZW50LCB0aGUg
bmFtZSBvZiB0aGUgbm90aWZpY2F0aW9uLgorICAgIGJvb2wgYWRkTm90aWZpY2F0aW9uTGlzdGVu
ZXIoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKKyAgICAvLyBNYWtlIHN1cmUgeW91IGNh
bGwgcmVtb3ZlLCBiZWNhdXNlIHlvdSBjYW4ndCByZWx5IG9uIG9iamVjdHMgYmVpbmcgZGVhbGxv
Y2F0ZWQgaW4gYSB0aW1lbHkgZmFzaGlvbi4KKyAgICBib29sIHJlbW92ZU5vdGlmaWNhdGlvbkxp
c3RlbmVyKCk7CisgICAgCitwcml2YXRlOgorICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxh
dGZvcm1VSUVsZW1lbnQpOworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCYpOworCisgICAgUGxhdGZvcm1VSUVsZW1lbnQgbV9lbGVtZW50Owor
ICAgIAorICAgIC8vIEEgcmV0YWluZWQsIHBsYXRmb3JtIHNwZWNpZmljIG9iamVjdCB1c2VkIHRv
IGhlbHAgbWFuYWdlIG5vdGlmaWNhdGlvbnMgZm9yIHRoaXMgb2JqZWN0LgorI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBOb3RpZmljYXRpb25IYW5kbGVyIG1fbm90aWZpY2F0aW9uSGFuZGxlcjsKKwor
ICAgIHZvaWQgZ2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+ID4mKTsKKyAgICB2b2lkIGdldERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Jik7CisgICAgdm9pZCBnZXRDaGlsZHJlbihWZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKKyAgICB2b2lkIGdldENoaWxkcmVu
V2l0aFJhbmdlKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYsIHVuc2ln
bmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworI2VuZGlmCit9OworICAgIAorfSAvLyBu
YW1lc3BhY2UgV1RSCisgICAgCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudF9oCklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9MYXlvdXRUZXN0
Q29udHJvbGxlckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiA5
OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNCArNjUsMTAgQEAK
ICAgICByZXR1cm4gdXJsOwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpCit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHBsYXRmb3JtTmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImd0
ayIpKTsKKyAgICByZXR1cm4gcGxhdGZvcm1OYW1lOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAkocmV2aXNp
b24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5o
PgorCituYW1lc3BhY2UgV1RSIHsKKyAgICAKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKFBsYXRmb3Jt
VGV4dE1hcmtlclJhbmdlIG1hcmtlclJhbmdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkpOworfQorCitQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U6OmNyZWF0ZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJiBtYXJrZXJS
YW5nZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpKTsKK30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZShQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBtYXJr
ZXJSYW5nZSkKKyAgICA6IG1fdGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKQoreworfQorCitB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UmIG1hcmtlclJhbmdlKQorICAgIDog
bV90ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UucGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSkK
K3sKK30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6fkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UoKQoreworfQorCitQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlOjpwbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGNvbnN0Cit7Cisj
aWYgUExBVEZPUk0oTUFDKQorICAgIHJldHVybiBtX3RleHRNYXJrZXJSYW5nZS5nZXQoKTsKKyNl
bHNlCisgICAgcmV0dXJuIG1fdGV4dE1hcmtlclJhbmdlOworI2VuZGlmCit9CisgICAgCitKU0Ns
YXNzUmVmIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OndyYXBwZXJDbGFzcygpCit7Cisg
ICAgcmV0dXJuIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6YWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZUNsYXNzKCk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXVFIKKwpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gOTkx
MjgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDQgKzY0LDEwIEBACiAg
ICAgcmV0dXJuIEpTU3RyaW5nUmV0YWluKHVybCk7IC8vIFRPRE8uCiB9CiAKK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygid2luIikpOworICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5pZGwJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlk
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBXVFIg
eworCisgICAgaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyIHsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgcm9vdEVsZW1lbnQ7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGZvY3VzZWRFbGVt
ZW50OworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVsZW1lbnRBdFBvaW50KGluIGlu
dCB4LCBpbiBpbnQgeSk7CisgICAgICAgIAorICAgICAgICB2b2lkIGFkZE5vdGlmaWNhdGlvbkxp
c3RlbmVyKGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxlbWVudCwgaW4gb2JqZWN0IGZ1bmN0
aW9uQ2FsbGJhY2spOworICAgICAgICB2b2lkIG5vdGlmaWNhdGlvblJlY2VpdmVkKGluIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQgZWxlbWVudCwgaW4gRE9NU3RyaW5nIGV2ZW50TmFtZSk7CisKKyAg
ICAgICAgdm9pZCBsb2dGb2N1c0V2ZW50cygpOworICAgICAgICB2b2lkIGxvZ1ZhbHVlQ2hhbmdl
RXZlbnRzKCk7CisgICAgICAgIHZvaWQgbG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMoKTsKKyAgICAg
ICAgdm9pZCBsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCk7CisgICAgICAgIHZvaWQgcmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZSgpOworICAgIH07CisKK30KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmlkbAkocmV2aXNpb24gMCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZS5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCittb2R1bGUgV1RSIHsKKworICAgIGludGVyZmFjZSBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlIHsKKyAgICAgICAgYm9vbGVhbiBpc0VxdWFsKGluIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2Ugb3RoZXJNYXJrZXJSYW5nZSk7CisgICAgfTsKKworfQpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5pZGwJKHJldmlzaW9u
IDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK21vZHVsZSBXVFIgeworCisgICAgaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyIHsKKyAgICAgICAgYm9vbGVhbiBpc0VxdWFsKGluIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIG90aGVyTWFya2VyKTsKKyAgICB9OworCit9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJKHJldmlzaW9uIDApCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21v
ZHVsZSBXVFIgeworCisgICAgaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgeworICAg
ICAgICBib29sZWFuIGlzRXF1YWwoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBvdGhlckVsZW1l
bnQpOworCisgICAgICAgIC8vIEVsZW1lbnQgYWNjZXNzLgorICAgICAgICBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50IGVsZW1lbnRBdFBvaW50KGluIGludCB4LCBpbiBpbnQgeSk7CisgICAgICAgIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQgY2hpbGRBdEluZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgICAgICB1bnNpZ25lZCBsb25nIGluZGV4T2ZDaGlsZChpbiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IGNoaWxkKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBsaW5rZWRVSUVs
ZW1lbnRBdEluZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50IHNlbGVjdGVkQ2hpbGRBdEluZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgICAgICB2b2lkIHNldFNlbGVjdGVkQ2hpbGQoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCBlbGVtZW50KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB0aXRsZVVJRWxlbWVu
dCgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHBhcmVudEVsZW1lbnQoKTsKKyAg
ICAgICAgCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcm9sZTsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzdWJyb2xlOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJvbGVEZXNjcmlwdGlvbjsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyB0aXRsZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBkZXNjcmlwdGlvbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBsYW5ndWFnZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBoZWxwVGV4
dDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZURlc2NyaXB0aW9u
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVybDsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzcGVhazsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBvcmllbnRhdGlvbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGlu
dCBpbnNlcnRpb25Qb2ludExpbmVOdW1iZXI7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgc2VsZWN0ZWRUZXh0UmFuZ2U7CisgICAgCisgICAgICAgIERPTVN0cmluZyBzdHJp
bmdBdHRyaWJ1dGVWYWx1ZShpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGRvdWJsZSBudW1i
ZXJBdHRyaWJ1dGVWYWx1ZShpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGJvb2xlYW4gYm9v
bEF0dHJpYnV0ZVZhbHVlKGluIERPTVN0cmluZyBhdHRyKTsKKyAgICAgICAgYm9vbGVhbiBpc0F0
dHJpYnV0ZVN1cHBvcnRlZChpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGJvb2xlYW4gaXNB
dHRyaWJ1dGVTZXR0YWJsZShpbiBET01TdHJpbmcgYXR0cik7CisgICAgICAgIGJvb2xlYW4gaXNB
Y3Rpb25TdXBwb3J0ZWQoaW4gRE9NU3RyaW5nIGF0dHIpOworCisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgc3RyaW5nVmFsdWU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBpbnQgaW50VmFsdWU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgbWluVmFsdWU7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgbWF4VmFsdWU7CisgICAgICAgIAorICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0VuYWJsZWQ7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzUmVxdWlyZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIGlzRm9jdXNlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gaXNTZWxlY3RlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNNdWx0
aVNlbGVjdGFibGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRXhwYW5k
ZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzQ2hlY2tlZDsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNWaXNpYmxlOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0NvbGxhcHNlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gaGFzUG9wdXA7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IGlzSWdub3JlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNPZmZTY3Jl
ZW47CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVmFsaWQ7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgaGllcmFyY2hpY2FsTGV2ZWw7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIGFyaWFJc0dyYWJiZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgYXJpYURyb3BFZmZlY3RzOworICAgICAgICAKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGludCB4OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IHk7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgd2lkdGg7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBpbnQgaGVpZ2h0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IGNs
aWNrUG9pbnRYOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgaW50IGNsaWNrUG9pbnRZOwor
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgY2hpbGRyZW5Db3VudDsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGludCBzZWxlY3RlZENoaWxkcmVuQ291bnQ7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBpbnQgcm93Q291bnQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBpbnQgY29sdW1uQ291bnQ7CisKKyAgICAgICAgLy8gQWN0aW9ucy4KKyAgICAgICAgdm9pZCBp
bmNyZW1lbnQoKTsKKyAgICAgICAgdm9pZCBkZWNyZW1lbnQoKTsKKyAgICAgICAgdm9pZCBwcmVz
cygpOworICAgICAgICB2b2lkIHNob3dNZW51KCk7CisKKyAgICAgICAgLy8gQXR0cmlidXRlIGlu
Zm8uCisgICAgICAgIERPTVN0cmluZyBhbGxBdHRyaWJ1dGVzKCk7CisgICAgICAgIERPTVN0cmlu
ZyBhdHRyaWJ1dGVzT2ZDaGlsZHJlbigpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09m
TGlua2VkVUlFbGVtZW50cygpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mRG9jdW1l
bnRMaW5rcygpOworICAgICAgICAKKyAgICAgICAgLy8gVGFibGUgaW5mby4KKyAgICAgICAgRE9N
U3RyaW5nIGF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0
dHJpYnV0ZXNPZlJvd0hlYWRlcnMoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZkNv
bHVtbnMoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZlJvd3MoKTsKKyAgICAgICAg
RE9NU3RyaW5nIGF0dHJpYnV0ZXNPZlZpc2libGVDZWxscygpOworICAgICAgICBET01TdHJpbmcg
YXR0cmlidXRlc09mSGVhZGVyKCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgY2Vs
bEZvckNvbHVtbkFuZFJvdyhpbiB1bnNpZ25lZCBsb25nIGNvbHVtbiwgaW4gdW5zaWduZWQgbG9u
ZyByb3cpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHNlbGVjdGVkUm93QXRJbmRl
eChpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCBkaXNjbG9zZWRCeVJvdygpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGRpc2Ns
b3NlZFJvd0F0SW5kZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIGludCBpbmRl
eEluVGFibGUoKTsKKyAgICAgICAgRE9NU3RyaW5nIHJvd0luZGV4UmFuZ2UoKTsKKyAgICAgICAg
RE9NU3RyaW5nIGNvbHVtbkluZGV4UmFuZ2UoKTsKKyAgICAgICAgaW50IHJvd0NvdW50KCk7Cisg
ICAgICAgIGludCBjb2x1bW5Db3VudCgpOworICAgIAorICAgICAgICBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IGFyaWFPd25zRWxlbWVudEF0SW5kZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7Cisg
ICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgYXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KGlu
IHVuc2lnbmVkIGxvbmcgaW5kZXgpOworCisgICAgICAgIC8vIFBhcmFtYXRlcml6ZWQgYXR0cmli
dXRlcy4KKyAgICAgICAgRE9NU3RyaW5nIHBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcygpOwor
ICAgICAgICBpbnQgbGluZUZvckluZGV4KGluIGludCBpbmRleCk7CisgICAgICAgIERPTVN0cmlu
ZyByYW5nZUZvckxpbmUoaW4gaW50IGluZGV4KTsKKyAgICAgICAgRE9NU3RyaW5nIGJvdW5kc0Zv
clJhbmdlKGluIHVuc2lnbmVkIGxvbmcgbG9jYXRpb24sIGluIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
KTsKKyAgICAgICAgRE9NU3RyaW5nIHN0cmluZ0ZvclJhbmdlKGluIHVuc2lnbmVkIGxvbmcgbG9j
YXRpb24sIGluIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKKyAgICAgICAgRE9NU3RyaW5nIGF0dHJp
YnV0ZWRTdHJpbmdGb3JSYW5nZShpbiB1bnNpZ25lZCBsb25nIGxvY2F0aW9uLCBpbiB1bnNpZ25l
ZCBsb25nIGxlbmd0aCk7CisgICAgICAgIGJvb2xlYW4gYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNN
aXNzcGVsbGVkKGluIHVuc2lnbmVkIGxvbmcgbG9jYXRpb24sIGluIHVuc2lnbmVkIGxvbmcgbGVu
Z3RoKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB1aUVsZW1lbnRGb3JTZWFyY2hQ
cmVkaWNhdGUoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBzdGFydEVsZW1lbnQsIGluIGJvb2xl
YW4gaXNEaXJlY3Rpb25OZXh0LCBpbiBET01TdHJpbmcgc2VhcmNoS2V5LCBpbiBET01TdHJpbmcg
c2VhcmNoVGV4dCk7CisgICAgICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoaW4gdW5zaWdu
ZWQgbG9uZyBsb2NhdGlvbiwgaW4gdW5zaWduZWQgbG9uZyBsZW5ndGgpOworCisgICAgICAgIC8v
IFNjcm9sbCBhcmVhIGF0dHJpYnV0ZXMuCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IGhvcml6b250YWxTY3JvbGxiYXI7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHZlcnRpY2FsU2Nyb2xsYmFyOworCisg
ICAgICAgIC8vIFRleHQgbWFya2Vycy4KKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
ZWxlbWVudCk7ICAgIAorICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHRleHRN
YXJrZXJSYW5nZUZvck1hcmtlcnMoaW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgc3RhcnRNYXJr
ZXIsIGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGVuZE1hcmtlcik7CisgICAgICAgIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShpbiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHJhbmdlKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShpbiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlIHJhbmdlKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgdGV4dE1hcmtlckZvclBvaW50KGluIGludCB4LCBpbiBpbnQgeSk7CisgICAgICAgIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyIHByZXZpb3VzVGV4dE1hcmtlcihpbiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBtYXJrZXIpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBuZXh0VGV4
dE1hcmtlcihpbiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBtYXJrZXIpOworICAgICAgICBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IGFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihpbiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBtYXJrZXIpOworICAgICAgICBET01TdHJpbmcgc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgcmFuZ2Up
OworICAgICAgICBpbnQgdGV4dE1hcmtlclJhbmdlTGVuZ3RoKGluIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UgcmFuZ2UpOworCisgICAgICAgIC8vIE5vdGlmaWNhdGlvbiBzdXBwb3J0Lgor
ICAgICAgICBib29sZWFuIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGluIG9iamVjdCBjYWxsYmFj
a0Z1bmN0aW9uKTsKKyAgICAgICAgYm9vbGVhbiByZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigp
OworICAgICAgICAKKyAgICB9OworCit9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91
dFRlc3RDb250cm9sbGVyLmlkbAkocmV2aXNpb24gOTkxMjgpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw4IEBACiAgICAgICAgIHZvaWQgc2V0QmFja2lu
Z1NjYWxlRmFjdG9yKGluIGRvdWJsZSBiYWNraW5nU2NhbGVGYWN0b3IsIGluIG9iamVjdCBjYWxs
YmFjayk7CiAKICAgICAgICAgdm9pZCBzZXRXaW5kb3dJc0tleShpbiBib29sZWFuIGlzS2V5KTsK
KyAgICAgICAgCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcGxhdGZvcm1O
YW1lOwogICAgIH07CiAKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9u
IDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTUsNiArNjU1LDggQEAKICAgICBJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuZ2NDb250cm9sbGVyKCktPm1ha2VXaW5kb3dPYmplY3Qo
Y29udGV4dCwgd2luZG93LCAmZXhjZXB0aW9uKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkuZXZlbnRTZW5kaW5nQ29udHJvbGxlcigpLT5tYWtlV2luZG93T2JqZWN0KGNvbnRleHQsIHdp
bmRvdywgJmV4Y2VwdGlvbik7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRleHRJbnB1
dENvbnRyb2xsZXIoKS0+bWFrZVdpbmRvd09iamVjdChjb250ZXh0LCB3aW5kb3csICZleGNlcHRp
b24pOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cigpLT5tYWtlV2luZG93T2JqZWN0KGNvbnRleHQsIHdpbmRvdywgJmV4Y2VwdGlvbik7CisKICNp
ZiBQTEFURk9STShRVCkKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aW5qZWN0SW50ZXJu
YWxzT2JqZWN0KGNvbnRleHQpOwogI2Vsc2UKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lv
biA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDcgQEAKICAgICBtX2dj
Q29udHJvbGxlciA9IEdDQ29udHJvbGxlcjo6Y3JlYXRlKCk7CiAgICAgbV9ldmVudFNlbmRpbmdD
b250cm9sbGVyID0gRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y3JlYXRlKCk7CiAgICAgbV90ZXh0
SW5wdXRDb250cm9sbGVyID0gVGV4dElucHV0Q29udHJvbGxlcjo6Y3JlYXRlKCk7CisgICAgbV9h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlciA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUo
KTsKIAogICAgIFdLQnVuZGxlU2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MobV9idW5kbGUsIGZh
bHNlKTsKICAgICBXS0J1bmRsZVJlbW92ZUFsbFZpc2l0ZWRMaW5rcyhtX2J1bmRsZSk7CkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0J
KHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdU
UiB7CisgICAgCitib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmlzRXF1YWwoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogb3RoZXIpCit7CisgICAgcmV0dXJuIFsoaWQpcGxh
dGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBpc0VxdWFsOihpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UoKV07Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXVFIKKwpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0JKHJldmlzaW9uIDApCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlck1hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5oIgorCituYW1lc3BhY2UgV1RSIHsKKworYm9vbCBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcjo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogb3RoZXIpCit7CisgICAg
cmV0dXJuIFsoaWQpcGxhdGZvcm1UZXh0TWFya2VyKCkgaXNFcXVhbDooaWQpb3RoZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCisKSW5kZXg6IFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkocmV2aXNpb24gMCkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRNYWMubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQzMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbXBvcnQgIkluamVjdGVkQnVuZGxl
LmgiCisjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZVBhZ2UuaCIKKworI2ltcG9ydCA8QXBwS2l0L05T
QWNjZXNzaWJpbGl0eS5oPgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSlNTdHJpbmdSZWYuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmQ0Yu
aD4KKyNpbXBvcnQgPFdlYktpdDIvV0tCdW5kbGVGcmFtZS5oPgorI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5T3duc0F0dHJpYnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlIEAi
QVhPd25zIgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0
ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlHcmFiYmVkQXR0cmlidXRlIEAiQVhHcmFiYmVkIgor
I2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGUKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGUgQCJBWERyb3BFZmZlY3Rz
IgorI2VuZGlmCisKKy8vIElmIGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZSBpcyBwYXNzZWQgaW4s
IGl0IHdpbGwgcmFpc2UgYW4gYWNjZXNzaWJpbGl0eSBleGNlcHRpb24uIFRoZXNlIGFyZSB1c3Vh
bGx5IGNhdWdodCBieSB0aGUgQWNjZXNzaWJpbGl0eSBSdW50aW1lIHRvIGluZm9ybQorLy8gdGhl
IEFYIGNsaWVudCBhcHAgb2YgdGhlIGVycm9yLiBIb3dldmVyLCBEUlQgaXMgdGhlIEFYIGNsaWVu
dCBhcHAsIHNvIGl0IG11c3QgY2F0Y2ggdGhlc2UgZXhjZXB0aW9ucy4KKyNkZWZpbmUgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TIEB0cnkgeworI2RlZmluZSBFTkRfQVhfT0JKQ19FWENFUFRJT05T
IH0gQGNhdGNoKE5TRXhjZXB0aW9uICplKSB7IGlmICghW1tlIG5hbWVdIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlFeGNlcHRpb25dKSBAdGhyb3c7IH0KKworCit0eXBlZGVmIHZvaWQg
KCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90
aWZpY2F0aW9uLCB2b2lkKiBjb250ZXh0KTsKKworQGludGVyZmFjZSBOU09iamVjdCAoV2ViS2l0
QWNjZXNzaWJpbGl0eUFkZGl0aW9ucykKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6KE5TU3RyaW5nICopYXR0cmlidXRlIGluZGV4OihOU1VJbnRlZ2VyKWlu
ZGV4IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50OworLSAodm9pZClhY2Nlc3NpYmlsaXR5
U2V0U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9uczooQk9PTClyZXBvc3Q7CistIChOU1VJbnRlZ2Vy
KWFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6KGlkKWNoaWxkOworLSAoTlNVSW50ZWdlcilhY2Nl
c3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3VudDooTlNTdHJpbmcgKilhdHRyaWJ1dGU7CitAZW5k
CisKK0BpbnRlcmZhY2UgTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQorKyAoTlNTdHJp
bmcgKilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmOworLSAo
SlNTdHJpbmdSZWYpY3JlYXRlSlNTdHJpbmdSZWY7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBO
U1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCisKKysgKE5TU3RyaW5nICopc3RyaW5nV2l0
aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgoreworICAgIGlmICghanNTdHJp
bmdSZWYpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIAorICAgIENGU3RyaW5nUmVmIGNmU3Ry
aW5nID0gSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdS
ZWYpOworICAgIHJldHVybiBbKE5TU3RyaW5nICopY2ZTdHJpbmcgYXV0b3JlbGVhc2VdOworfQor
CistIChKU1N0cmluZ1JlZiljcmVhdGVKU1N0cmluZ1JlZgoreworICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpc2VsZik7Cit9CisKK0BlbmQKKworQGlu
dGVyZmFjZSBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciA6IE5TT2JqZWN0Cit7Cisg
ICAgaWQgbV9wbGF0Zm9ybUVsZW1lbnQ7CisgICAgSlNWYWx1ZVJlZiBtX25vdGlmaWNhdGlvbkZ1
bmN0aW9uQ2FsbGJhY2s7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEFjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25IYW5kbGVyCisKKy0gKGlkKWluaXRXaXRoUGxhdGZvcm1FbGVtZW50Oihp
ZClwbGF0Zm9ybUVsZW1lbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworCisgICAgbV9w
bGF0Zm9ybUVsZW1lbnQgPSBwbGF0Zm9ybUVsZW1lbnQ7CisgICAgCisgICAgLy8gT25jZSBhbiBv
YmplY3Qgc3RhcnRzIHJlcXVlc3Rpbmcgbm90aWZpY2F0aW9ucywgaXQncyBvbiBmb3IgdGhlIGR1
cmF0aW9uIG9mIHRoZSBwcm9ncmFtLgorICAgIC8vIFRoaXMgaXMgdG8gYXZvaWQgYW55IHJhY2Ug
Y29uZGl0aW9ucyBiZXR3ZWVuIHRlc3RzIHR1cm5pbmcgdGhpcyBmbGFnIG9uIGFuZCBvZmYuIElu
c3RlYWQKKyAgICAvLyBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBjYW4ganVzdCBs
aXN0ZW4gd2hlbiB0aGV5IHdhbnQgdG8uCisgICAgW21fcGxhdGZvcm1FbGVtZW50IGFjY2Vzc2li
aWxpdHlTZXRTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zOllFU107CisgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3Rvcihfbm90aWZpY2F0aW9uUmVjZWl2ZWQ6KSBuYW1lOkAiQVhEUlROb3RpZmljYXRpb24iIG9i
amVjdDpuaWxdOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisgCistICh2b2lkKWRlYWxsb2MKK3sK
KyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVy
OnNlbGZdOworCisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VH
ZXRNYWluRnJhbWUoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkp
OworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRD
b250ZXh0KG1haW5GcmFtZSk7CisgICAgCisgICAgSlNWYWx1ZVVucHJvdGVjdChjb250ZXh0LCBt
X25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2spOworICAgIG1fbm90aWZpY2F0aW9uRnVuY3Rp
b25DYWxsYmFjayA9IDA7CisgICAgCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lk
KV9ub3RpZmljYXRpb25SZWNlaXZlZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sK
KyAgICBOU1N0cmluZyAqbm90aWZpY2F0aW9uTmFtZSA9IFtbbm90aWZpY2F0aW9uIHVzZXJJbmZv
XSBvYmplY3RGb3JLZXk6QCJub3RpZmljYXRpb25OYW1lIl07CisgICAgaWYgKCFub3RpZmljYXRp
b25OYW1lKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWlu
RnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5k
bGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisKKyAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4ganNOb3RpZmljYXRpb24oQWRvcHQsIFtub3RpZmljYXRpb25OYW1lIGNy
ZWF0ZUpTU3RyaW5nUmVmXSk7CisgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtl
U3RyaW5nKGNvbnRleHQsIGpzTm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBKU09iamVjdENhbGxB
c0Z1bmN0aW9uKGNvbnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KG1fbm90aWZpY2F0aW9u
RnVuY3Rpb25DYWxsYmFjayksIDAsIDEsICZhcmd1bWVudCwgMCk7Cit9CisKKy0gKHZvaWQpc2V0
Q2FsbGJhY2s6KEpTVmFsdWVSZWYpY2FsbGJhY2sKK3sKKyAgICBpZiAoIWNhbGxiYWNrKQorICAg
ICAgICByZXR1cm47CisgCisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRs
ZVBhZ2VHZXRNYWluRnJhbWUoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5w
YWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFT
Y3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisKKyAgICAvLyBSZWxlYXNlIHRoZSBvbGQgY2FsbGJh
Y2suCisgICAgaWYgKG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaykgCisgICAgICAgIEpT
VmFsdWVVbnByb3RlY3QoY29udGV4dCwgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKTsK
KyAgICAKKyAgICBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAg
ICBKU1ZhbHVlUHJvdGVjdChjb250ZXh0LCBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2sp
OworfQorCitAZW5kCisKK25hbWVzcGFjZSBXVFIgeworCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCisgICAg
OiBtX2VsZW1lbnQoZWxlbWVudCkKKyAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQorewor
ICAgIC8vIEZJWE1FOiBhcEB3ZWJraXQub3JnIHNheXMgT2JqQyBvYmplY3RzIG5lZWQgdG8gYmUg
Q0ZSZXRhaW5lZC9DRlJlbGVhc2UgdG8gYmUgR0MtY29tcGxpYW50IG9uIHRoZSBtYWMuCisgICAg
W21fZWxlbWVudCByZXRhaW5dOworfQorCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVyKQorICAg
IDogbV9lbGVtZW50KG90aGVyLm1fZWxlbWVudCkKKyAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxl
cigwKQoreworICAgIFttX2VsZW1lbnQgcmV0YWluXTsKK30KKworQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQoreworICAgIC8vIFRoZSBub3RpZmljYXRp
b24gaGFuZGxlciBzaG91bGQgYmUgbmlsIGJlY2F1c2UgcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVu
ZXIoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBpbiB0aGUgdGVzdC4KKyAgICBBU1NFUlQoIW1f
bm90aWZpY2F0aW9uSGFuZGxlcik7CisgICAgW21fZWxlbWVudCByZWxlYXNlXTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQq
IG90aGVyRWxlbWVudCkKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1VSUVsZW1lbnQoKSA9PSBvdGhl
ckVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCk7Cit9CisgICAgCitzdGF0aWMgTlNTdHJpbmcq
IGRlc2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1ZU9iamVjdCwgaWQgZm9jdXNlZEFjY2Vzc2liaWxp
dHlPYmplY3QpCit7CisgICAgaWYgKCF2YWx1ZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7
CisKKyAgICBpZiAoW3ZhbHVlT2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkK
KyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGFycmF5IG9mIHNp
emUgJWQ+IiwgWyhOU0FycmF5Kil2YWx1ZU9iamVjdCBjb3VudF1dOworCisgICAgaWYgKFt2YWx1
ZU9iamVjdCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4g
WyhOU051bWJlciopdmFsdWVPYmplY3Qgc3RyaW5nVmFsdWVdOworCisgICAgaWYgKFt2YWx1ZU9i
amVjdCBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0pIHsKKyAgICAgICAgTlNTdHJpbmcq
IHR5cGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6W3ZhbHVlT2JqZWN0IG9iakNUeXBl
XSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddOworICAgICAgICBOU1ZhbHVlKiB2YWx1
ZSA9IChOU1ZhbHVlKil2YWx1ZU9iamVjdDsKKyAgICAgICAgaWYgKFt0eXBlIHJhbmdlT2ZTdHJp
bmc6QCJOU1JlY3QiXS5sZW5ndGggPiAwKQorICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiTlNSZWN0OiAlQCIsIE5TU3RyaW5nRnJvbVJlY3QoW3ZhbHVlIHJl
Y3RWYWx1ZV0pXTsKKyAgICAgICAgaWYgKFt0eXBlIHJhbmdlT2ZTdHJpbmc6QCJOU1BvaW50Il0u
bGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIk5TUG9pbnQ6ICVAIiwgTlNTdHJpbmdGcm9tUG9pbnQoW3ZhbHVlIHBvaW50VmFsdWVdKV07
CisgICAgICAgIGlmIChbdHlwZSByYW5nZU9mU3RyaW5nOkAiTlNTaXplIl0ubGVuZ3RoID4gMCkK
KyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIk5TU2l6ZTog
JUAiLCBOU1N0cmluZ0Zyb21TaXplKFt2YWx1ZSBzaXplVmFsdWVdKV07CisgICAgICAgIGlmIChb
dHlwZSByYW5nZU9mU3RyaW5nOkAiTlNSYW5nZSJdLmxlbmd0aCA+IDApCisgICAgICAgICAgICBy
ZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJOU1JhbmdlOiAlQCIsIE5TU3RyaW5n
RnJvbVJhbmdlKFt2YWx1ZSByYW5nZVZhbHVlXSldOworICAgIH0KKworICAgIC8vIFN0cmlwIGFi
c29sdXRlIFVSTCBwYXRocworICAgIE5TU3RyaW5nKiBkZXNjcmlwdGlvbiA9IFt2YWx1ZU9iamVj
dCBkZXNjcmlwdGlvbl07CisgICAgTlNSYW5nZSByYW5nZSA9IFtkZXNjcmlwdGlvbiByYW5nZU9m
U3RyaW5nOkAiTGF5b3V0VGVzdHMiXTsKKyAgICBpZiAocmFuZ2UubGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gW2Rlc2NyaXB0aW9uIHN1YnN0cmluZ0Zyb21JbmRleDpyYW5nZS5sb2NhdGlvbl07CisK
KyAgICAvLyBTdHJpcCBwb2ludGVyIGxvY2F0aW9ucworICAgIGlmIChbZGVzY3JpcHRpb24gcmFu
Z2VPZlN0cmluZzpAIjB4Il0ubGVuZ3RoKSB7CisgICAgICAgIE5TU3RyaW5nKiByb2xlID0gW2Zv
Y3VzZWRBY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXTsKKyAgICAgICAgTlNTdHJpbmcqIHRpdGxlID0gW2Zv
Y3VzZWRBY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV07CisgICAgICAgIGlmIChbdGl0bGUgbGVuZ3RoXSkK
KyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogJyVA
Jz4iLCByb2xlLCB0aXRsZV07CisgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIjwlQD4iLCByb2xlXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFt2YWx1ZU9iamVj
dCBkZXNjcmlwdGlvbl07Cit9CisKK3N0YXRpYyBOU1N0cmluZyogYXR0cmlidXRlc09mRWxlbWVu
dChpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0KQoreworICAgIE5TQXJyYXkqIHN1cHBvcnRlZEF0dHJp
YnV0ZXMgPSBbYWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNd
OworCisgICAgTlNNdXRhYmxlU3RyaW5nKiBhdHRyaWJ1dGVzU3RyaW5nID0gW05TTXV0YWJsZVN0
cmluZyBzdHJpbmddOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IFtzdXBwb3J0ZWRB
dHRyaWJ1dGVzIGNvdW50XTsgKytpKSB7CisgICAgICAgIE5TU3RyaW5nKiBhdHRyaWJ1dGUgPSBb
c3VwcG9ydGVkQXR0cmlidXRlcyBvYmplY3RBdEluZGV4OmldOworICAgICAgICAKKyAgICAgICAg
Ly8gUmlnaHQgbm93LCBwb3NpdGlvbiBwcm92aWRlcyB1c2VsZXNzIGFuZCBzY3JlZW4tc3BlY2lm
aWMgaW5mb3JtYXRpb24sIHNvIHdlIGRvIG5vdAorICAgICAgICAvLyB3YW50IHRvIGluY2x1ZGUg
aXQgZm9yIHRoZSBzYWtlIG9mIHVuaXZlcnNhbGx5IHBhc3NpbmcgdGVzdHMuCisgICAgICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUG9zaXRpb24iXSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgLy8gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOiBjYW4gdGhyb3cgYW4gaWYgYW4gYXR0cmlidXRlIGlzIG5vdCByZXR1cm5lZC4KKyAgICAg
ICAgLy8gRm9yIER1bXBSZW5kZXJUcmVlJ3MgcHVycG9zZSwgd2Ugc2hvdWxkIGlnbm9yZSB0aG9z
ZSBleGNlcHRpb25zCisgICAgICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgICAgICBp
ZCB2YWx1ZU9iamVjdCA9IFthY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTphdHRyaWJ1dGVdOworICAgICAgICBOU1N0cmluZyogdmFsdWUgPSBkZXNjcmlwdGlv
bk9mVmFsdWUodmFsdWVPYmplY3QsIGFjY2Vzc2liaWxpdHlPYmplY3QpOworICAgICAgICBbYXR0
cmlidXRlc1N0cmluZyBhcHBlbmRGb3JtYXQ6QCIlQDogJUBcbiIsIGF0dHJpYnV0ZSwgdmFsdWVd
OworICAgICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgfQorICAgIAorICAgIHJldHVy
biBhdHRyaWJ1dGVzU3RyaW5nOworfQorCitzdGF0aWMgSlNTdHJpbmdSZWYgY29uY2F0ZW5hdGVB
dHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyogYXR0cmlidXRlLCBOU1N0cmluZyogdmFsdWUpCit7
CisgICAgVmVjdG9yPFVuaUNoYXI+IGJ1ZmZlcihbYXR0cmlidXRlIGxlbmd0aF0pOworICAgIFth
dHRyaWJ1dGUgZ2V0Q2hhcmFjdGVyczpidWZmZXIuZGF0YSgpXTsKKyAgICBidWZmZXIuYXBwZW5k
KCc6Jyk7CisgICAgYnVmZmVyLmFwcGVuZCgnICcpOworCisgICAgVmVjdG9yPFVuaUNoYXI+IHZh
bHVlQnVmZmVyKFt2YWx1ZSBsZW5ndGhdKTsKKyAgICBbdmFsdWUgZ2V0Q2hhcmFjdGVyczp2YWx1
ZUJ1ZmZlci5kYXRhKCldOworICAgIGJ1ZmZlci5hcHBlbmQodmFsdWVCdWZmZXIpOworCisgICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbnZlcnROU0FycmF5VG9WZWN0b3IoTlNBcnJh
eSogYXJyYXksIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVu
dFZlY3RvcikKK3sKKyAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2FycmF5IGNvdW50XTsKKyAgICBm
b3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBlbGVtZW50VmVj
dG9yLmFwcGVuZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW2FycmF5IG9iamVjdEF0
SW5kZXg6aV0pKTsKK30KKworc3RhdGljIEpTU3RyaW5nUmVmIGRlc2NyaXB0aW9uT2ZFbGVtZW50
cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3Ip
Cit7CisgICAgTlNNdXRhYmxlU3RyaW5nKiBhbGxFbGVtZW50U3RyaW5nID0gW05TTXV0YWJsZVN0
cmluZyBzdHJpbmddOworICAgIHNpemVfdCBzaXplID0gZWxlbWVudFZlY3Rvci5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHVpRWxlbWVudCA9IGVsZW1lbnRWZWN0b3JbaV07CisgICAg
ICAgIE5TU3RyaW5nKiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlc09mRWxlbWVudCh1aUVsZW1lbnQt
PnBsYXRmb3JtVUlFbGVtZW50KCkpOworICAgICAgICBbYWxsRWxlbWVudFN0cmluZyBhcHBlbmRG
b3JtYXQ6QCIlQFxuLS0tLS0tLS0tLS0tXG4iLCBhdHRyaWJ1dGVzXTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIFthbGxFbGVtZW50U3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKK30KKwordm9p
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRMaW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3RvcikKK3sKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBsaW5rZWRFbGVtZW50cyA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJ
RWxlbWVudHNBdHRyaWJ1dGVdOworICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3IobGlua2VkRWxl
bWVudHMsIGVsZW1lbnRWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwor
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtzKFZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3RvcikKK3sKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBsaW5rRWxlbWVudHMgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGlua1VJRWxlbWVudHMiXTsKKyAg
ICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGxpbmtFbGVtZW50cywgZWxlbWVudFZlY3Rvcik7Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmdldENoaWxkcmVuKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYg
ZWxlbWVudFZlY3RvcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0Fy
cmF5KiBjaGlsZHJlbiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVj
dG9yKGNoaWxkcmVuLCBlbGVtZW50VmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW5XaXRoUmFuZ2Uo
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yLCB1
bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGNoaWxkcmVuID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUg
aW5kZXg6bG9jYXRpb24gbWF4Q291bnQ6bGVuZ3RoXTsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVj
dG9yKGNoaWxkcmVuLCBlbGVtZW50VmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KCkKK3sKKyAg
ICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY2hpbGRyZW47CisgICAg
Z2V0Q2hpbGRyZW4oY2hpbGRyZW4pOworICAgIAorICAgIHJldHVybiBjaGlsZHJlbi5zaXplKCk7
Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KQoreworICAgIGlkIGVsZW1lbnQg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlIaXRUZXN0Ok5TTWFrZVBvaW50KHgsIHkpXTsKKyAg
ICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KTsKK30KKwordW5zaWduZWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhPZkNoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQq
IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUluZGV4T2ZD
aGlsZDplbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpXTsKK30KKworUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgo
dW5zaWduZWQgaW5kZXgpCit7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiA+IGNoaWxkcmVuOworICAgIGdldENoaWxkcmVuV2l0aFJhbmdlKGNoaWxkcmVuLCBpbmRl
eCwgMSk7CisKKyAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBj
aGlsZHJlblswXTsKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRVSUVsZW1lbnRBdEluZGV4
KHVuc2lnbmVkIGluZGV4KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5T
QXJyYXkqIG9iamVjdHMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlXTsKKyAgICBpZiAoaW5kZXgg
PCBbb2JqZWN0cyBjb3VudF0pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjcmVhdGUoW29iamVjdHMgb2JqZWN0QXRJbmRleDppbmRleF0pOworICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRB
dEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIE5TQXJyYXkqIG9iamVjdHMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlXTsKKyAgICBpZiAoaW5kZXggPCBbb2Jq
ZWN0cyBjb3VudF0pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVh
dGUoW29iamVjdHMgb2JqZWN0QXRJbmRleDppbmRleF0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0SW5k
ZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
TlNBcnJheSogb2JqZWN0cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGVdOworICAgIGlmIChpbmRl
eCA8IFtvYmplY3RzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNyZWF0ZShbb2JqZWN0cyBvYmplY3RBdEluZGV4OmluZGV4XSk7CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0
SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgTlNBcnJheSogcm93cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdOworICAgIGlmIChpbmRleCA8
IFtyb3dzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNy
ZWF0ZShbcm93cyBvYmplY3RBdEluZGV4OmluZGV4XSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNB
cnJheSogYXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsKKyAgICBpZiAoaW5kZXggPCBb
YXJyYXkgY291bnRdKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3Jl
YXRlKFthcnJheSBvYmplY3RBdEluZGV4OmluZGV4XSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0
dHJpYnV0ZUNvdW50Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwOworfQorCitQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVj
dGVkUm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICBOU0FycmF5KiByb3dzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXTsKKyAgICBpZiAo
aW5kZXggPCBbcm93cyBjb3VudF0pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjcmVhdGUoW3Jvd3Mgb2JqZWN0QXRJbmRleDppbmRleF0pOworICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgp
Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgYWNjZXNzaWJpbGl0eU9i
amVjdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKKyAgICBpZiAoYWNjZXNzaWJpbGl0eU9iamVj
dCkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShhY2Nlc3Np
YmlsaXR5T2JqZWN0KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCisgICAgaWQgYWNjZXNzaWJpbGl0eU9iamVjdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZV07CisgICAg
aWYgKGFjY2Vzc2liaWxpdHlPYmplY3QpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjcmVhdGUoYWNjZXNzaWJpbGl0eU9iamVjdCk7CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KCkKK3sK
KyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
RGlzY2xvc2VkQnlSb3dBdHRyaWJ1dGVdOworICAgIGlmIChhY2Nlc3NpYmlsaXR5T2JqZWN0KQor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGFjY2Vzc2liaWxp
dHlPYmplY3QpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4g
MDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMoKQoreworICAgIFZlY3RvcjxSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBsaW5rZWRFbGVtZW50czsKKyAgICBnZXRMaW5rZWRVSUVs
ZW1lbnRzKGxpbmtlZEVsZW1lbnRzKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRz
KGxpbmtlZEVsZW1lbnRzKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkRvY3VtZW50TGlua3MoKQoreworICAgIFZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBsaW5rRWxlbWVudHM7CisgICAgZ2V0
RG9jdW1lbnRMaW5rcyhsaW5rRWxlbWVudHMpOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxl
bWVudHMobGlua0VsZW1lbnRzKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCkKK3sKKyAgICBWZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY2hpbGRyZW47CisgICAgZ2V0Q2hpbGRy
ZW4oY2hpbGRyZW4pOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY2hpbGRyZW4p
OworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YWxsQXR0cmlidXRlcygpCit7CisgICAgTlNTdHJpbmcqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVz
T2ZFbGVtZW50KG1fZWxlbWVudCk7CisgICAgcmV0dXJuIFthdHRyaWJ1dGVzIGNyZWF0ZUpTU3Ry
aW5nUmVmXTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6
YXR0cmlidXRlXV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0
ZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNT
dHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGRvdWJsZVZhbHVlXTsKKyAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJp
YnV0ZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRo
SlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltO
U051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVm
IGF0dHJpYnV0ZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SXNBdHRyaWJ1dGVTZXR0YWJsZTpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBbW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlTmFtZXNdIGNvbnRhaW5zT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRo
SlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IAorICAgIHJldHVybiBmYWxzZTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcygpCit7CisgICAg
TlNBcnJheSogc3VwcG9ydGVkUGFyYW1ldGVyaXplZEF0dHJpYnV0ZXMgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXNdOworICAgIAorICAgIE5TTXV0
YWJsZVN0cmluZyogYXR0cmlidXRlc1N0cmluZyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsK
KyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBbc3VwcG9ydGVkUGFyYW1ldGVyaXplZEF0
dHJpYnV0ZXMgY291bnRdOyArK2kpIHsKKyAgICAgICAgW2F0dHJpYnV0ZXNTdHJpbmcgYXBwZW5k
Rm9ybWF0OkAiJUBcbiIsIFtzdXBwb3J0ZWRQYXJhbWV0ZXJpemVkQXR0cmlidXRlcyBvYmplY3RB
dEluZGV4OmldXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFthdHRyaWJ1dGVzU3RyaW5nIGNy
ZWF0ZUpTU3RyaW5nUmVmXTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJvbGUoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIE5TU3RyaW5nICpyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdLCBtX2Vs
ZW1lbnQpOworICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhSb2xl
Iiwgcm9sZSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAw
OworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c3Vicm9sZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNTdHJpbmcq
IHJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7Cisg
ICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFN1YnJvbGUiLCByb2xl
KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlw
dGlvbigpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNTdHJpbmcqIHJv
bGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50
KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9sZURlc2Ny
aXB0aW9uIiwgcm9sZSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJl
dHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGl0bGUoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TU3Ry
aW5nKiB0aXRsZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7
CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFRpdGxlIiwgdGl0
bGUpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRp
b24oKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIGRlc2NyaXB0aW9u
ID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAg
ICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYRGVzY3JpcHRpb24iLCBk
ZXNjcmlwdGlvbik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7
Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpv
cmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
aWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdLCBt
X2VsZW1lbnQpOworICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhP
cmllbnRhdGlvbiIsIGRlc2NyaXB0aW9uKTsgICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UworCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCisgICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1
dGVdLCBtX2VsZW1lbnQpOworICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVl
KEAiQVhWYWx1ZSIsIGRlc2NyaXB0aW9uKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisK
KyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGFuZ3VhZ2UiXSwgbV9lbGVtZW50KTsKKyAgICBy
ZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYTGFuZ3VhZ2UiLCBkZXNjcmlw
dGlvbik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisK
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4
dCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgZGVzY3Jp
cHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5SGVscEF0dHJpYnV0ZV0sIG1fZWxlbWVudCk7CisgICAg
cmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWEhlbHAiLCBkZXNjcmlwdGlv
bik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQor
Citkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCgpCit7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCisgICAgTlNWYWx1ZSogcG9zaXRpb25WYWx1ZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRl
XTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihbcG9zaXRpb25WYWx1ZSBwb2ludFZh
bHVlXS54KTsgICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVy
biAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eSgpCit7CisgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNWYWx1ZSogcG9zaXRpb25WYWx1ZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVBvc2l0
aW9uQXR0cmlidXRlXTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihbcG9zaXRpb25W
YWx1ZSBwb2ludFZhbHVlXS55KTsgICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IAorICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
d2lkdGgoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TVmFsdWUqIHNp
emVWYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eVNpemVBdHRyaWJ1dGVdOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtz
aXplVmFsdWUgc2l6ZVZhbHVlXS53aWR0aCk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIAorICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aGVpZ2h0KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVl
KiBzaXplVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91Ymxl
Pihbc2l6ZVZhbHVlIHNpemVWYWx1ZV0uaGVpZ2h0KTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjbGlja1BvaW50WCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgTlNWYWx1ZSogcG9zaXRpb25WYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOkAiQVhDbGlja1BvaW50Il07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJs
ZT4oW3Bvc2l0aW9uVmFsdWUgcG9pbnRWYWx1ZV0ueCk7ICAgICAgICAKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCisgICAgTlNWYWx1ZSogcG9zaXRpb25WYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDbGlja1BvaW50Il07CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGRvdWJsZT4oW3Bvc2l0aW9uVmFsdWUgcG9pbnRWYWx1ZV0ueSk7CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWUoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFsoTlNOdW1i
ZXIqKXZhbHVlIGRvdWJsZVZhbHVlXTsgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisg
ICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5W
YWx1ZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlNaW5W
YWx1ZUF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBj
bGFzc11dKQorICAgICAgICByZXR1cm4gWyhOU051bWJlciopdmFsdWUgZG91YmxlVmFsdWVdOyAK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91
YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlKCkKK3sKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0cmlidXRlXTsKKyAgICBpZiAo
W3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBb
KE5TTnVtYmVyKil2YWx1ZSBkb3VibGVWYWx1ZV07IAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKworICAgIHJldHVybiAwLjA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uKCkKK3sKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICBOU1N0cmluZyogdmFsdWVEZXNjcmlwdGlvbiA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlRGVzY3Jp
cHRpb25BdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWVEZXNjcmlwdGlvbiBpc0tpbmRPZkNsYXNz
OltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICAgcmV0dXJuIFt2YWx1ZURlc2NyaXB0aW9uIGNy
ZWF0ZUpTU3RyaW5nUmVmXTsKKworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1
cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGlu
ZU51bWJlcigpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlJ
bnNlcnRpb25Qb2ludExpbmVOdW1iZXJBdHRyaWJ1dGVdOworICAgIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIgKil2
YWx1ZSBpbnRWYWx1ZV07IAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gLTE7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXBw
b3J0ZWQoSlNTdHJpbmdSZWYgYWN0aW9uKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIE5TQXJyYXkqIGFjdGlvbnMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBY3Rpb25O
YW1lc107CisgICAgcmV0dXJuIFthY3Rpb25zIGNvbnRhaW5zT2JqZWN0OltOU1N0cmluZyBzdHJp
bmdXaXRoSlNTdHJpbmdSZWY6YWN0aW9uXV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc0VuYWJsZWQoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5RW5hYmxlZEF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkKCkgY29uc3QKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhSZXF1aXJlZCJdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZD
bGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVd
OworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2VkKCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1dGVdOworICAgIGlmIChb
dmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFt2
YWx1ZSBib29sVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRl
ZCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlF
eHBhbmRlZEF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJl
ciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNrZWQoKSBjb25zdAoreworICAgIC8vIE9uIHRoZSBN
YWMsIGludFZhbHVlKCk9PTEgaWYgYSBhIGNoZWNrYWJsZSBjb250cm9sIGlzIGNoZWNrZWQuCisg
ICAgcmV0dXJuIGludFZhbHVlKCkgPT0gMTsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3N1cmVMZXZlbEF0dHJpYnV0ZV07CisgICAgaWYgKFt2
YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3Zh
bHVlIGludFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4g
MDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNwZWFrKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhEUlRTcGVlY2hBdHRy
aWJ1dGUiXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0p
CisgICAgICAgIHJldHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICAgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlHcmFiYmVkQXR0cmlidXRlXTsKKyAgICBpZiAo
W3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBb
dmFsdWUgYm9vbFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphcmlhRHJvcEVmZmVjdHMoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGVdOworICAgIGlmICghW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBOU011dGFibGVTdHJpbmcqIGRyb3BFZmZlY3RzID0gW05TTXV0YWJsZVN0cmluZyBzdHJp
bmddOworICAgIE5TSW50ZWdlciBsZW5ndGggPSBbdmFsdWUgY291bnRdOworICAgIGZvciAoTlNJ
bnRlZ2VyIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spIHsKKyAgICAgICAgW2Ryb3BFZmZlY3RzIGFw
cGVuZFN0cmluZzpbdmFsdWUgb2JqZWN0QXRJbmRleDprXV07CisgICAgICAgIGlmIChrIDwgbGVu
Z3RoIC0gMSkKKyAgICAgICAgICAgIFtkcm9wRWZmZWN0cyBhcHBlbmRTdHJpbmc6QCIsIl07Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBbZHJvcEVmZmVjdHMgY3JlYXRlSlNTdHJpbmdSZWZdOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworLy8g
cGFyYW1ldGVyaXplZCBhdHRyaWJ1dGVzCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlu
ZUZvckluZGV4KGludCBpbmRleCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eUxpbmVGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVy
OltOU051bWJlciBudW1iZXJXaXRoSW50OmluZGV4XV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gWyhOU051bWJlciAqKXZh
bHVlIGludFZhbHVlXTsgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJu
IC0xOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmFuZ2VGb3JMaW5lKGludCBsaW5lKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5UmFuZ2VGb3JMaW5lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJh
bWV0ZXI6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGluZV1dOworICAgIGlmIChbdmFsdWUgaXNL
aW5kT2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11dKSB7CisgICAgICAgIHJldHVybiBbTlNTdHJpbmdG
cm9tUmFuZ2UoW3ZhbHVlIHJhbmdlVmFsdWVdKSBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgfQor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0ZvclJh
bmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgTlNSYW5nZSBy
YW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Qm91bmRzRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmli
dXRlIGZvclBhcmFtZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1dOworICAgIE5T
UmVjdCByZWN0ID0gTlNNYWtlUmVjdCgwLDAsMCwwKTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9m
Q2xhc3M6W05TVmFsdWUgY2xhc3NdXSkKKyAgICAgICAgcmVjdCA9IFt2YWx1ZSByZWN0VmFsdWVd
OyAKKyAgICAKKyAgICAvLyBkb24ndCByZXR1cm4gcG9zaXRpb24gaW5mb3JtYXRpb24gYmVjYXVz
ZSBpdCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQKKyAgICBOU011dGFibGVTdHJpbmcqIGJvdW5kc0Rl
c2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAie3slZiwgJWZ9
LCB7JWYsICVmfX0iLC0xLjBmLC0xLjBmLHJlY3Quc2l6ZS53aWR0aCxyZWN0LnNpemUuaGVpZ2h0
XTsKKyAgICByZXR1cm4gW2JvdW5kc0Rlc2NyaXB0aW9uIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JSYW5n
ZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIE5TUmFuZ2UgcmFu
Z2UgPSBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBpZCBzdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOnJhbmdlXV07CisgICAgaWYg
KCFbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHJldHVy
biAwOworICAgIAorICAgIHJldHVybiBbc3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5n
Rm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBOU1Jh
bmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgTlNBdHRyaWJ1dGVkU3RyaW5nKiBzdHJpbmcgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlBdHRyaWJ1dGVk
U3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNWYWx1
ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1dOworICAgIGlmICghW3N0cmluZyBpc0tpbmRPZkNsYXNz
OltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisg
ICAgTlNTdHJpbmcqIHN0cmluZ1dpdGhBdHRycyA9IFtzdHJpbmcgZGVzY3JpcHRpb25dOworICAg
IHJldHVybiBbc3RyaW5nV2l0aEF0dHJzIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKHVuc2lnbmVk
IGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFr
ZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIE5TQXR0cmlidXRlZFN0cmluZyogc3RyaW5nID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5QXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlUGFy
YW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6
cmFuZ2VdXTsKKyAgICBpZiAoIVtzdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5TRGljdGlvbmFyeSog
YXR0cnMgPSBbc3RyaW5nIGF0dHJpYnV0ZXNBdEluZGV4OjAgZWZmZWN0aXZlUmFuZ2U6bmlsXTsK
KyAgICBpZihbW2F0dHJzIG9iamVjdEZvcktleTpOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkVGV4
dEF0dHJpYnV0ZV0gYm9vbFZhbHVlXSkKKyAgICAgICAgcmV0dXJuIHRydWU7ICAgIAorICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlF
bGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxl
bWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpTU3RyaW5nUmVmIHNlYXJjaEtleSwgSlNTdHJp
bmdSZWYgc2VhcmNoVGV4dCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBO
U011dGFibGVEaWN0aW9uYXJ5KiBwYXJhbWV0ZXIgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0
aW9uYXJ5XTsKKyAgICBbcGFyYW1ldGVyIHNldE9iamVjdDooaXNEaXJlY3Rpb25OZXh0KSA/IEAi
QVhEaXJlY3Rpb25OZXh0IiA6IEAiQVhEaXJlY3Rpb25QcmV2aW91cyIgZm9yS2V5OkAiQVhEaXJl
Y3Rpb24iXTsKKyAgICBbcGFyYW1ldGVyIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDoxXSBmb3JLZXk6QCJBWFJlc3VsdHNMaW1pdCJdOworICAgIGlmIChzdGFydEVsZW1lbnQpCisg
ICAgICAgIFtwYXJhbWV0ZXIgc2V0T2JqZWN0OihpZClzdGFydEVsZW1lbnQtPnBsYXRmb3JtVUlF
bGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXTsKKyAgICBpZiAoc2VhcmNoS2V5KQor
ICAgICAgICBbcGFyYW1ldGVyIHNldE9iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5n
UmVmOnNlYXJjaEtleV0gZm9yS2V5OkAiQVhTZWFyY2hLZXkiXTsKKyAgICBpZiAoc2VhcmNoVGV4
dCAmJiBKU1N0cmluZ0dldExlbmd0aChzZWFyY2hUZXh0KSkKKyAgICAgICAgW3BhcmFtZXRlciBz
ZXRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpzZWFyY2hUZXh0XSBmb3JL
ZXk6QCJBWFNlYXJjaFRleHQiXTsKKyAgICAKKyAgICBpZCB1aUVsZW1lbnQgPSBbW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudHNGb3JTZWFyY2hQcmVk
aWNhdGUiIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJdIGxhc3RPYmplY3RdOworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUodWlFbGVtZW50KTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJz
KCkKK3sKKyAgICAvLyBub3QgeWV0IGRlZmluZWQgaW4gQXBwS2l0Li4uIG9kZAorICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGNvbHVtbkhlYWRlcnNBcnJheSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDb2x1bW5IZWFkZXJVSUVs
ZW1lbnRzIl07CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNv
bHVtbkhlYWRlcnNWZWN0b3I7CisgICAgY29udmVydE5TQXJyYXlUb1ZlY3Rvcihjb2x1bW5IZWFk
ZXJzQXJyYXksIGNvbHVtbkhlYWRlcnNWZWN0b3IpOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9m
RWxlbWVudHMoY29sdW1uSGVhZGVyc1ZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycygpCit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogcm93SGVhZGVyc0FycmF5ID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJvd0hlYWRlclVJRWxlbWVu
dHMiXTsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gcm93SGVh
ZGVyc1ZlY3RvcjsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKHJvd0hlYWRlcnNBcnJheSwg
cm93SGVhZGVyc1ZlY3Rvcik7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhyb3dI
ZWFkZXJzVmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5zKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBOU0FycmF5KiBjb2x1bW5zQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKKyAgICBWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY29sdW1uc1ZlY3RvcjsKKyAgICBj
b252ZXJ0TlNBcnJheVRvVmVjdG9yKGNvbHVtbnNBcnJheSwgY29sdW1uc1ZlY3Rvcik7CisgICAg
cmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjb2x1bW5zVmVjdG9yKTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKCkKK3sK
KyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiByb3dzQXJyYXkgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb3dz
QXR0cmlidXRlXTsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4g
cm93c1ZlY3RvcjsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKHJvd3NBcnJheSwgcm93c1Zl
Y3Rvcik7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhyb3dzVmVjdG9yKTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZW
aXNpYmxlQ2VsbHMoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJy
YXkqIGNlbGxzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYVmlzaWJsZUNlbGxzIl07CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiA+IGNlbGxzVmVjdG9yOworICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3IoY2VsbHNBcnJh
eSwgY2VsbHNWZWN0b3IpOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY2VsbHNW
ZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZkhlYWRlcigpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
aWQgaGVhZGVyT2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5SGVhZGVyQXR0cmlidXRlXTsKKyAgICBpZiAoIWhlYWRlck9iamVjdCkK
KyAgICAgICAgcmV0dXJuIFtAIiIgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIAorICAgIFZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBoZWFkZXJWZWN0b3I7CisgICAgaGVh
ZGVyVmVjdG9yLmFwcGVuZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoaGVhZGVyT2Jq
ZWN0KSk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhoZWFkZXJWZWN0b3IpOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworaW50
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0NvdW50KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRy
aWJ1dGVDb3VudDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpjb2x1bW5Db3VudCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6
TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aW5kZXhJblRhYmxlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBO
U051bWJlciogaW5kZXhOdW1iZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV07CisgICAgaWYgKGluZGV4TnVtYmVy
KQorICAgICAgICByZXR1cm4gW2luZGV4TnVtYmVyIGludFZhbHVlXTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisKKyAgICByZXR1cm4gLTE7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlKCkKK3sKKyAgICBOU1Jh
bmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwwKTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBOU1ZhbHVlKiBpbmRleFJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWFJvd0luZGV4UmFuZ2UiXTsKKyAgICBpZiAoaW5kZXhSYW5nZSkKKyAg
ICAgICAgcmFuZ2UgPSBbaW5kZXhSYW5nZSByYW5nZVZhbHVlXTsKKyAgICBOU011dGFibGVTdHJp
bmcqIHJhbmdlRGVzY3JpcHRpb24gPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJ7JWQsICVkfSIscmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aF07CisgICAgcmV0dXJuIFty
YW5nZURlc2NyaXB0aW9uIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKCkKK3sKKyAgICBOU1Jh
bmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwwKTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBOU051bWJlciogaW5kZXhSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhDb2x1bW5JbmRleFJhbmdlIl07CisgICAgaWYgKGluZGV4UmFuZ2Up
CisgICAgICAgIHJhbmdlID0gW2luZGV4UmFuZ2UgcmFuZ2VWYWx1ZV07CisgICAgTlNNdXRhYmxl
U3RyaW5nKiByYW5nZURlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAieyVkLCAlZH0iLHJhbmdlLmxvY2F0aW9uLCByYW5nZS5sZW5ndGhdOworICAgIHJldHVy
biBbcmFuZ2VEZXNjcmlwdGlvbiBjcmVhdGVKU1N0cmluZ1JlZl07ICAgIAorICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1u
QW5kUm93KHVuc2lnbmVkIGNvbCwgdW5zaWduZWQgcm93KQoreworICAgIE5TQXJyYXkgKmNvbFJv
d0FycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpbTlNOdW1iZXIgbnVtYmVyV2l0aFVu
c2lnbmVkSW50OmNvbF0sIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6cm93XSwgbmls
XTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y3JlYXRlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhDZWxsRm9yQ29sdW1uQW5kUm93IiBmb3JQYXJhbWV0ZXI6Y29sUm93QXJyYXldKTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TICAgIAorCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9y
aXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlIb3Jpem9udGFsU2Nyb2xs
QmFyQXR0cmlidXRlXSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAKKyAgICAKKyAg
ICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0Cit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNyZWF0ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlWZXJ0aWNhbFNjcm9sbEJhckF0dHJpYnV0ZV0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMgICAgICAgIAorfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0UmFuZ2UoKQoreworICAgIE5TUmFuZ2UgcmFuZ2UgPSBO
U01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBOU1ZhbHVlICppbmRleFJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGVdOworICAg
IGlmIChpbmRleFJhbmdlKQorICAgICAgICByYW5nZSA9IFtpbmRleFJhbmdlIHJhbmdlVmFsdWVd
OworICAgIE5TTXV0YWJsZVN0cmluZyAqcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAInslZCwgJWR9IixyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVu
Z3RoXTsKKyAgICByZXR1cm4gW3JhbmdlRGVzY3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOyAg
ICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UodW5zaWdu
ZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBOU1JhbmdlIHRleHRSYW5nZSA9
IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworICAgIE5TVmFsdWUgKnRleHRSYW5nZVZh
bHVlID0gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6dGV4dFJhbmdlXTsKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTp0ZXh0
UmFuZ2VWYWx1ZSBmb3JBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VB
dHRyaWJ1dGVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3Np
YmlsaXR5SW5jcmVtZW50QWN0aW9uXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50KCkKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0
aW9uOk5TQWNjZXNzaWJpbGl0eURlY3JlbWVudEFjdGlvbl07CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNob3dNZW51KCkKK3sK
KyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlQZXJmb3JtQWN0aW9uOk5TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uXTsKKyAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJl
c3MoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb25dOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogYXJyYXkgPSBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3Q6ZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07Cisg
ICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6YXJyYXkgZm9yQXR0cmlidXRlOk5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOworICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMgICAgCit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFsdWUoKSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAw
KTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmRvY3VtZW50RW5jb2RpbmcoKQoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkoKQoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dXJsKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBOU1VSTCAqdXJsID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKKyAgICByZXR1cm4gW1t1cmwgYWJzb2x1dGVT
dHJpbmddIGNyZWF0ZUpTU3RyaW5nUmVmXTsgICAgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIAorICAgIHJldHVybiBuaWw7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKQor
eworICAgIGlmICghZnVuY3Rpb25DYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworIAor
ICAgIC8vIE1hYyBwcm9ncmFtbWVycyBzaG91bGQgbm90IGJlIGFkZGluZyBtb3JlIHRoYW4gb25l
IG5vdGlmaWNhdGlvbiBsaXN0ZW5lciBwZXIgZWxlbWVudC4KKyAgICAvLyBPdGhlciBwbGF0Zm9y
bXMgbWF5IGJlIGRpZmZlcmVudC4KKyAgICBpZiAobV9ub3RpZmljYXRpb25IYW5kbGVyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gW1tBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxvY10gaW5pdFdpdGhQbGF0Zm9ybUVsZW1lbnQ6
cGxhdGZvcm1VSUVsZW1lbnQoKV07CisgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzZXRDYWxs
YmFjazpmdW5jdGlvbkNhbGxiYWNrXTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkKK3sKKyAg
ICAvLyBNYWMgcHJvZ3JhbW1lcnMgc2hvdWxkIG5vdCBiZSB0cnlpbmcgdG8gcmVtb3ZlIGEgbGlz
dGVuZXIgdGhhdCdzIGFscmVhZHkgcmVtb3ZlZC4KKyAgICBBU1NFUlQobV9ub3RpZmljYXRpb25I
YW5kbGVyKTsKKworICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgcmVsZWFzZV07CisgICAgbV9u
b3RpZmljYXRpb25IYW5kbGVyID0gbmlsOworICAgIAorICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QKK3sKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c1Zpc2libGUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4oKSBj
b25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQoKSBjb25zdAoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNJZ25vcmVkKCkgY29uc3QKK3sKKyAgICBCT09MIHJlc3VsdCA9
IE5POworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJlc3VsdCA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUlzSWdub3JlZF07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFz
UG9wdXAoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEhhc1BvcHVw
Il07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAg
ICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRha2VGb2N1cygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24oKQoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGRTZWxlY3Rpb24oKQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpyZW1vdmVTZWxlY3Rpb24oKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwor
Ly8gVGV4dCBtYXJrZXJzCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVUlFbGVtZW50IiBmb3JQYXJhbWV0ZXI6
ZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOworICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKiByYW5nZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU051bWJl
ciogbGVuZ3RoVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYTGVuZ3RoRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KGlkKXJhbmdlLT5wbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICByZXR1cm4gW2xlbmd0aFZhbHVlIGludFZhbHVl
XTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisK
K1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtl
cikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBwcmV2aW91c01hcmtl
ciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2aW91c1Rl
eHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRm
b3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNy
ZWF0ZShwcmV2aW91c01hcmtlcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAor
ICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogdGV4dE1hcmtlcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBp
ZCBuZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WE5leHRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpjcmVhdGUobmV4dE1hcmtlcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIGlkIHRleHRTdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KGlkKW1hcmtl
clJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKKyAgICByZXR1cm4gW3RleHRTdHJp
bmcgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAK
KyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqIGVuZE1hcmtlcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0Fy
cmF5KiB0ZXh0TWFya2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCksIG5pbF07CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRN
YXJrZXJzIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlcnNdOworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5n
ZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB0ZXh0TWFya2VyID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFyYW1ldGVyOihpZClyYW5nZS0+cGxhdGZvcm1UZXh0
TWFya2VyUmFuZ2UoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVh
dGUodGV4dE1hcmtlcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJl
dHVybiAwOyAgICAKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFt
ZXRlcjooaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOworICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsgICAgCit9CisKK1Bhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJr
ZXJGb3JQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhUZXh0TWFya2VyRm9yUG9zaXRpb24iIGZvclBhcmFtZXRlcjpbTlNWYWx1ZSB2YWx1
ZVdpdGhQb2ludDpOU01ha2VQb2ludCh4LCB5KV1dOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICAKKyAgICByZXR1cm4gMDsgICAgCit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdWlFbGVtZW50ID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiIGZvclBh
cmFtZXRlcjooaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZSh1aUVsZW1lbnQpOworICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsgIAorfQorCit9IC8vIG5hbWVzcGFjZSBX
VFIKKwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlz
aW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
TGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTYwLDUgKzYwLDEx
IEBACiB7CiAgICAgcmV0dXJuIEpTU3RyaW5nUmV0YWluKHVybCk7IC8vIERvIG5vdGhpbmcgb24g
bWFjLgogfQorICAgIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybU5hbWUoKQoreworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0
Zm9ybU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJtYWMiKSk7Cisg
ICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaAkocmV2aXNpb24gMCkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZV9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VfaAorCisj
aW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVj
dFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
dHlwZWRlZiBDRlR5cGVSZWYgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U7CisjZWxzZQordHlwZWRl
ZiB2b2lkKiBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV1RS
IHsKKyAgICAKK2NsYXNzIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgOiBwdWJsaWMgSlNX
cmFwcGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IGNyZWF0ZShQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSk7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gY3JlYXRlKGNvbnN0
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UmKTsKKyAgICAKKyAgICB+QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSgpOworICAgIAorICAgIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIHBs
YXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgY29uc3Q7CisgICAgdmlydHVhbCBKU0NsYXNzUmVmIHdy
YXBwZXJDbGFzcygpOworICAgIAorICAgIHN0YXRpYyBKU09iamVjdFJlZiBtYWtlSlNBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlKEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSYpOworICAgIGJvb2wgaXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKik7CisgICAgCitwcml2YXRlOgorICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UoUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UpOworICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSYpOworICAgIAorI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U+IG1fdGV4
dE1hcmtlclJhbmdlOworI2Vsc2UKKyAgICBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBtX3RleHRN
YXJrZXJSYW5nZTsKKyNlbmRpZgorfTsKKyAgICAKKyNpZiAhUExBVEZPUk0oTUFDKQoraW5saW5l
IGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorICAgIAorfSAvLyBu
YW1lc3BhY2UgV1RSCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlX2gK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmgJKHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw3IEBACiAjaWZuZGVmIEluamVjdGVkQnVuZGxlX2gKICNkZWZpbmUgSW5qZWN0ZWRC
dW5kbGVfaAogCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJFdmVudFNlbmRpbmdDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIKQEAgLTU2LDYgKzU3LDcgQEAKICAgICBH
Q0NvbnRyb2xsZXIqIGdjQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fZ2NDb250cm9sbGVyLmdldCgp
OyB9CiAgICAgRXZlbnRTZW5kaW5nQ29udHJvbGxlciogZXZlbnRTZW5kaW5nQ29udHJvbGxlcigp
IHsgcmV0dXJuIG1fZXZlbnRTZW5kaW5nQ29udHJvbGxlci5nZXQoKTsgfQogICAgIFRleHRJbnB1
dENvbnRyb2xsZXIqIHRleHRJbnB1dENvbnRyb2xsZXIoKSB7IHJldHVybiBtX3RleHRJbnB1dENv
bnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmdldCgp
OyB9CiAKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2UqIHBhZ2UoKSBjb25zdDsKICAgICBzaXplX3Qg
cGFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlcy5zaXplKCk7IH0KQEAgLTEwNSw2ICsx
MDcsNyBAQAogICAgIFdLQnVuZGxlUGFnZUdyb3VwUmVmIG1fcGFnZUdyb3VwOwogICAgIFZlY3Rv
cjxPd25QdHI8SW5qZWN0ZWRCdW5kbGVQYWdlPiA+IG1fcGFnZXM7CiAKKyAgICBSZWZQdHI8QWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI+IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7CiAgICAgUmVm
UHRyPExheW91dFRlc3RDb250cm9sbGVyPiBtX2xheW91dFRlc3RDb250cm9sbGVyOwogICAgIFJl
ZlB0cjxHQ0NvbnRyb2xsZXI+IG1fZ2NDb250cm9sbGVyOwogICAgIFJlZlB0cjxFdmVudFNlbmRp
bmdDb250cm9sbGVyPiBtX2V2ZW50U2VuZGluZ0NvbnRyb2xsZXI7CkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTkwLDYgKzE5MCw4IEBACiAgICAgdm9pZCBjYWxsRm9jdXNXZWJWaWV3Q2FsbGJhY2soKTsKICAg
ICB2b2lkIGNhbGxTZXRCYWNraW5nU2NhbGVGYWN0b3JDYWxsYmFjaygpOwogCisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IHBsYXRmb3JtTmFtZSgpOworICAgIAogcHJpdmF0ZToKICAgICBz
dGF0aWMgY29uc3QgZG91YmxlIHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySW50ZXJ2YWw7CiAKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAwKQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRlICJJbmplY3Rl
ZEJ1bmRsZVBhZ2UuaCIKKyNpbmNsdWRlICJKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktp
dDIvV0tCdW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZS5oPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgorCituYW1lc3BhY2UgV1RSIHsKKwor
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcik7Cit9CisKK0FjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcigpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlDb250cm9sbGVyOjp+QWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIoKQoreworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjptYWtl
V2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dPYmpl
Y3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBzZXRQcm9wZXJ0eShjb250ZXh0LCB3
aW5kb3dPYmplY3QsICJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciIsIHRoaXMsIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUsIGV4Y2Vw
dGlvbik7Cit9CisKK0pTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OndyYXBwZXJD
bGFzcygpCit7CisgICAgcmV0dXJuIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyQ2xhc3MoKTsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQoreworICAgIC8v
IEZJWE1FOiBNYWtlIHRoaXMgd29yayBvbiBXaW5kb3dzLgorI2lmIFBMQVRGT1JNKFdJTikKKyAg
ICByZXR1cm4gMDsKKyNlbHNlCisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCk7CisgICAgdm9pZCogcm9vdCA9IFdLQWNjZXNz
aWJpbGl0eVJvb3RPYmplY3QocGFnZSk7CisgICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNyZWF0ZShzdGF0aWNfY2FzdDxQbGF0Zm9ybVVJRWxlbWVudD4ocm9vdCkpOyAg
ICAKKyNlbmRpZgorfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCgpCit7CisgICAgLy8gRklYTUU6IE1h
a2UgdGhpcyB3b3JrIG9uIFdpbmRvd3MuCisjaWYgUExBVEZPUk0oV0lOKQorICAgIHJldHVybiAw
OworI2Vsc2UgICAgCisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6
c2hhcmVkKCkucGFnZSgpLT5wYWdlKCk7CisgICAgdm9pZCogcm9vdCA9IFdLQWNjZXNzaWJpbGl0
eUZvY3VzZWRPYmplY3QocGFnZSk7CisgICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNyZWF0ZShzdGF0aWNfY2FzdDxQbGF0Zm9ybVVJRWxlbWVudD4ocm9vdCkpOyAgICAK
KyNlbmRpZgorfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHVpRWxlbWVudCA9IHJvb3RFbGVtZW50KCk7Cisg
ICAgcmV0dXJuIHVpRWxlbWVudC0+ZWxlbWVudEF0UG9pbnQoeCwgeSk7Cit9CisgICAgCit9IC8v
IG5hbWVzcGFjZSBXVFIKKwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmls
ZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFt
CShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDEwIEBACiBub2luc3RfTFRMSUJSQVJJRVMg
Kz0gTGlicmFyaWVzL2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZS5sYQogCiB3ZWJraXR0ZXN0
cnVubmVyX2J1aWx0X3NvdXJjZXMgKz0gXAorCURlcml2ZWRTb3VyY2VzL0luamVjdGVkQnVuZGxl
L0pTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9JbmplY3Rl
ZEJ1bmRsZS9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMv
SW5qZWN0ZWRCdW5kbGUvSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBcCisJRGVy
aXZlZFNvdXJjZXMvSW5qZWN0ZWRCdW5kbGUvSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvSW5qZWN0ZWRCdW5kbGUvSlNFdmVudFNlbmRpbmdDb250cm9sbGVy
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSW5qZWN0ZWRCdW5kbGUvSlNHQ0NvbnRyb2xsZXIuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0xheW91dFRlc3RDb250cm9sbGVy
LmNwcCBcCkBAIC03MCw2ICs3NCwxNCBAQAogQlVJTFRfU09VUkNFUyArPSAkKHdlYmtpdHRlc3Ry
dW5uZXJfYnVpbHRfc291cmNlcykKIAogTGlicmFyaWVzX2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1
bmRsZV9sYV9TT1VSQ0VTID0gXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggXAorCVRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIFwK
KwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyLmggXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oIFwKKwlUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIFwK
KwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY3RpdmF0
ZUZvbnRzLmggXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvSlNXcmFwcGFibGUuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9KU1dyYXBwZXIuY3BwIFwKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
d2luL0luamVjdGVkQnVuZGxlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL3dpbi9JbmplY3RlZEJ1bmRsZS52Y3Byb2oJKHJldmlzaW9uIDk5MTI4KQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vSW5qZWN0ZWRCdW5kbGUudmNwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTQsNiArMzk0LDIxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxCaW5kaW5nc1xBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5pZGwiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEJp
bmRpbmdzXEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbCIKKwkJCQk+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVn
X0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVs
ZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cSW5qZWN0ZWRCdW5kbGVcQmluZGluZ3NcQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5p
ZGwiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURM
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01J
RExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURM
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEJpbmRpbmdzXEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaWRsIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJl
bGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRl
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NG
TGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1
bmRsZVxCaW5kaW5nc1xFdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbCIKIAkJCQk+CiAJCQkJPEZp
bGVDb25maWd1cmF0aW9uCkBAIC02MTgsNiArODI2LDM4IEBACiAJCQlOYW1lPSJEZXJpdmVkIFNv
dXJjZXMiCiAJCQk+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4K
QEAgLTY1MSw2ICs4OTEsMzggQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWxlCisJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmpl
Y3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgorCQkJPgorCQk8L0ZpbGU+CisJ
CTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyLmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRo
PSIuLlxJbmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oIgorCQkJPgorCQk8
L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxJ
bmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCIKKwkJCT4KKwkJPC9GaWxl
PgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmplY3RlZEJ1bmRsZVxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0
aD0iLi5cSW5qZWN0ZWRCdW5kbGVcd2luXEFjdGl2YXRlRm9udHMuY3BwIgogCQkJPgogCQk8L0Zp
bGU+CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5tYWtlCShy
ZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMu
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTAgQEAKICMKIAogSU5URVJGQUNFUyA9
IFwKKyAgICBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciBcCisgICAgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIgXAorICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgXAorICAgIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQgXAogICAgIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIgXAogICAgIEdDQ29u
dHJvbGxlciBcCiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIgXApJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDYgKzIzLDE3IEBACiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlv
biAqLwogCQkwRjUxNjlDQjE0NDUyMjJEMDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTE2OUNBMTQ0
NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJhbWV3b3JrICovOyB9OwogCQkwRjUxNjlDQzE0NDUy
MjJEMDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTE2OUNBMTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJL
aXQuZnJhbWV3b3JrICovOyB9OworCQkyOTIxMEVBRTE0NENBQ0I3MDA4MzVCQjUgLyogQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyOTIxMEVBOTE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5jcHAgKi87IH07CisJCTI5MjEwRUIwMTQ0Q0FDQkQwMDgzNUJCNSAvKiBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyOTIxMEVBMjE0NENBQUE1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuY3BwICovOyB9OworCQkyOTIxMEVCNDE0NENBQ0Q1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjkyMTBFQjExNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
LmNwcCAqLzsgfTsKKwkJMjkyMTBFQjUxNDRDQUNENTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjkyMTBFQjMxNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
TWFjLm1tICovOyB9OworCQkyOTIxMEVEQTE0NENDM0VBMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI5MjEwRUFCMTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tICovOyB9OworCQkyOTIxMEVEQjE0NENENDc5MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1ODM5MTNEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5jcHAgKi87IH07CisJCTI5MjEwRUUxMTQ0Q0RCMjYwMDgzNUJCNSAvKiBKU0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjkyMTBFREIxNDY3MjdFNzExODM1QkI1IC8qIEpTQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5jcHAgKi87IH07CisJCTI5QThGQ0NCMTQ1RUYwMkUwMDkwNDVBNiAvKiBKU0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI5MjEwRUUxMTQ0Q0RFNjc4OTgxNUVFNSAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyLmNwcCAqLzsgfTsKKwkJMjlBOEZDREQxNDVGMDMzNzAwOTA0NUE2IC8qIEpTQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOUE4RkNFMTM0NUU3MDIxMDA2QUE1QTYgLyogSlNBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlLmNwcCAqLzsgfTsKKwkJMjlBOEZDRTIxNDVGMDM3QjAwOTA0NUE2
IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBOEZDRTExNDVGMDM3QjAwOTA0NUE2IC8qIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovOyB9OworCQkyOUE4RkNFNTE0NUYwNDY0
MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QThGQ0U0MTQ1RjA0NjQwMDkw
NDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tICovOyB9OwogCQk1MzIy
RkI0MzEzRkRBMENEMDA0MUFCQ0MgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMjJGQjQxMTNGREEwQ0Qw
MDQxQUJDQyAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwICovOyB9OwogCQk1MzIyRkI0NjEz
RkRBMEVBMDA0MUFCQ0MgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzIyRkI0NDEzRkRBMEVBMDA0MUFCQ0MgLyog
UGl4ZWxEdW1wU3VwcG9ydC5jcHAgKi87IH07CiAJCTU2NDFFMkQwMTQzMzVFOTUwMDgzMDdFNSAv
KiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTY0MUUyQ0UxNDMzNUU5NTAwODMwN0U1IC8qIEpTVGV4dElucHV0
Q29udHJvbGxlci5jcHAgKi87IH07CkBAIC04Niw2ICs5NywyNyBAQAogCiAvKiBCZWdpbiBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMEY1MTY5Q0ExNDQ1MjIyRDAwRTBBOUQ3IC8qIFdl
YktpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IFdlYktpdC5mcmFtZXdvcms7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTI5MjEwRUEyMTQ0Q0FBQTUwMDgzNUJC
NSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTI5MjEwRUEzMTQ0Q0FBQTUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVBODE0
NENBQjg4MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQTkxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEw
RUFBMTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQUIxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEw
RUIxMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEwRUIyMTQ0Q0FDRDQwMDgzNUJC
NSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyOTIxMEVCMzE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlck1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFREIxNDY3MjdFNzEx
ODM1QkI1IC8qIEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkyOTIxMEVEQjE0Njcy
N0U4MTE4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMjkyMTBFREMxNDRDRDU2RTAw
ODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyOTIxMEVFMTE0NENERTY3ODk4MTVFRTUgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIv
SlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCTI5MjEwRUUxMTQ1Q0RFNjc4OTgxNUVFNSAvKiBKU0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIv
SlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQkyOUE4RkNDNTE0NUI5M0M2MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlBOEZDRDIxNDVFRjhGMjAwOTA0
NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOUE4
RkNERjE0NUYwMzU4MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5QThGQ0UxMTQ1RjAzN0IwMDkw
NDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOUE4RkNFMTM0NUU3MDIxMDA2QUE1QTYgLyog
SlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHA7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTI5QThG
Q0UxMzQ1RTcwMjEwMDZBQTVBNyAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQkyOUE4RkNFNDE0NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc4
RDQ0MjIxMzM0NkQwMDAwNkE3NzdCIC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyMzBFMTYxMzhDNzhCRjAwQkNDRkNB
IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0g
bGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk0MTgxNzMxQjEzOEFEMzlEMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkNvcmVUZXN0U3VwcG9ydC5o
OyBwYXRoID0gV2ViQ29yZVRlc3RTdXBwb3J0L1dlYkNvcmVUZXN0U3VwcG9ydC5oOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMTAwLDYgKzEzMiw4IEBACiAJCTU2NjRB
NDk5MTQzMjYzODQwMDg4ODFCRSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1dENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTY3MEI4MjYxMzg2RkMxMzAwMkVCMzU1IC8qIEV2ZW50U2VuZGVy
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRTZW5kZXJQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NjcwQjgyNzEzODZGQ0E1MDAyRUIz
NTUgLyogRXZlbnRTZW5kZXJQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEV2ZW50U2VuZGVyUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU4MzkxM0QwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9K
U0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKKwkJNTgzOTEzRDExNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNBY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9K
U0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTY1MTBBNzc3MTFFQzY0MzgwMDQxMDg2NyAvKiBBSEVNX19fXy5UVEYgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0g
IkFIRU1fX19fLlRURiI7IHBhdGggPSAiZm9udHMvQUhFTV9fX18uVFRGIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMEE3NzgxMUVDNjQzODAwNDEwODY3IC8qIENvbG9yQml0cy50
dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxl
OyBuYW1lID0gQ29sb3JCaXRzLnR0ZjsgcGF0aCA9IGZvbnRzL0NvbG9yQml0cy50dGY7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTBBNzc5MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJL
aXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0Zjsg
cGF0aCA9IGZvbnRzL1dlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjQ3LDYgKzI4MSwyNCBAQAogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMjlBOEZDRTAxNDVGMDM1RDAwOTA0NUE2
IC8qIEFjY2Vzc2liaWxpdHkgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTI5MjEwRUEyMTQ0Q0FBQTUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5jcHAgKi8sCisJCQkJMjkyMTBFQTMxNDRDQUFBNTAwODM1QkI1IC8qIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmggKi8sCisJCQkJMjkyMTBFQTkxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwICovLAorCQkJCTI5MjEwRUFBMTQ0Q0FDQjIwMDgzNUJCNSAv
KiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggKi8sCisJCQkJMjkyMTBFQUIxNDRDQUNCMjAwODM1
QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gKi8sCisJCQkJMjkyMTBFQjExNDRD
QUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLywKKwkJCQkyOTIx
MEVCMjE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCAqLywKKwkJ
CQkyOTIxMEVCMzE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMu
bW0gKi8sCisJCQkJMjlBOEZDRTExNDVGMDM3QjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UuY3BwICovLAorCQkJCTI5QThGQ0RGMTQ1RjAzNTgwMDkwNDVBNiAvKiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmggKi8sCisJCQkJMjlBOEZDRTQxNDVGMDQ2NDAwOTA0
NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0gKi8sCisJCQkpOworCQkJ
bmFtZSA9IEFjY2Vzc2liaWxpdHk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQk2NUVCODU5RTExRUM2N0NDMDAzNEQzMDAgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI1OSw2ICszMTEsNyBAQAogCQlCQzE0RTRFMDEyMEUw
MkY5MDA4MjZDMEMgLyogQ29udHJvbGxlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTI5QThGQ0UwMTQ1RjAzNUQwMDkwNDVBNiAvKiBBY2Nlc3NpYmls
aXR5ICovLAogCQkJCUJDOEZEOEM5MTIwRTUyN0YwMEYzRTcxQSAvKiBFdmVudFNlbmRpbmdDb250
cm9sbGVyLmNwcCAqLywKIAkJCQlCQzhGRDhDODEyMEU1MjdGMDBGM0U3MUEgLyogRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5oICovLAogCQkJCUJDMTRFNEQ5MTIwRTAyRDAwMDgyNkMwQyAvKiBHQ0Nv
bnRyb2xsZXIuY3BwICovLApAQCAtMzQ1LDYgKzM5OCwxMCBAQAogCQkJCUJDOTUyQzBFMTFGM0I5
N0IwMDMzOThCNCAvKiBKU1dyYXBwYWJsZS5oICovLAogCQkJCUJDOTUyQzBDMTFGM0I5NjUwMDMz
OThCNCAvKiBKU1dyYXBwZXIuY3BwICovLAogCQkJCUJDOTUyQzBCMTFGM0I5NjUwMDMzOThCNCAv
KiBKU1dyYXBwZXIuaCAqLywKKwkJCQkyOTIxMEVBODE0NENBQjg4MDA4MzVCQjUgLyogQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuaWRsICovLAorCQkJCTI5QThGQ0M1MTQ1QjkzQzYwMDkwNDVBNiAv
KiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5pZGwgKi8sCisJCQkJMjlBOEZDRDIxNDVFRjhGMjAw
OTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRsICovLAorCQkJCTI5MjEw
RURDMTQ0Q0Q1NkUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbCAqLywKIAkJ
CQlCQzhGRDhDQjEyMEU1MkIwMDBGM0U3MUEgLyogRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwg
Ki8sCiAJCQkJQkMxNEU0RTExMjBFMDMyMDAwODI2QzBDIC8qIEdDQ29udHJvbGxlci5pZGwgKi8s
CiAJCQkJQkM5NTJFRDIxMUYzQzI5RjAwMzM5OEI0IC8qIExheW91dFRlc3RDb250cm9sbGVyLmlk
bCAqLywKQEAgLTM1Niw2ICs0MTMsMTQgQEAKIAkJQkM5NTJEM0ExMUYzQkYxRjAwMzM5OEI0IC8q
IERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJNTgzOTEzRDAxNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuY3BwICovLAorCQkJCTU4MzkxM0QxMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmggKi8sCisJCQkJMjkyMTBFRTExNDRDREU2Nzg5ODE1RUU1IC8qIEpT
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovLAorCQkJCTI5MjEwRUUxMTQ1Q0RFNjc4OTgx
NUVFNSAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8sCisJCQkJMjlBOEZDRTEzNDVF
NzAyMTAwNkFBNUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgKi8sCisJ
CQkJMjlBOEZDRTEzNDVFNzAyMTAwNkFBNUE3IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZS5oICovLAorCQkJCTI5MjEwRURCMTQ2NzI3RTcxMTgzNUJCNSAvKiBKU0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuY3BwICovLAorCQkJCTI5MjEwRURCMTQ2NzI3RTgxMTgzNUJCNSAvKiBKU0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAqLywKIAkJCQlCQzhGRDhEMDEyMEU1NDVCMDBGM0U3MUEg
LyogSlNFdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCAqLywKIAkJCQlCQzhGRDhEMTEyMEU1NDVC
MDBGM0U3MUEgLyogSlNFdmVudFNlbmRpbmdDb250cm9sbGVyLmggKi8sCiAJCQkJQkMxNEU0RTgx
MjBFMDNEODAwODI2QzBDIC8qIEpTR0NDb250cm9sbGVyLmNwcCAqLywKQEAgLTUxNiw2ICs1ODEs
MTcgQEAKIAkJCQlDMENFNzIwQjEyNDdDOTMzMDBCQzBFQzQgLyogTGF5b3V0VGVzdENvbnRyb2xs
ZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NjY0QTQ5QTE0MzI2Mzg0MDA4ODgxQkUgLyog
VGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NjQxRTJEMDE0MzM1
RTk1MDA4MzA3RTUgLyogSlNUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTI5MjEwRUFFMTQ0Q0FDQjcwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTI5MjEwRUIwMTQ0Q0FDQkQwMDgzNUJCNSAvKiBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOTIxMEVCNDE0NENBQ0Q1
MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMjkyMTBFQjUxNDRDQUNENTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFREExNDRDQzNFQTAwODM1QkI1IC8qIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkyOTIxMEVEQjE0NENE
NDc5MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkyOTIxMEVFMTE0NENEQjI2MDA4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5QThGQ0NCMTQ1RUYwMkUwMDkwNDVBNiAvKiBK
U0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5QThGQ0RE
MTQ1RjAzMzcwMDkwNDVBNiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMjlBOEZDRTIxNDVGMDM3QjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjlBOEZDRTUxNDVGMDQ2
NDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQJKHJldmlzaW9uIDk4
OTc3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCSh3b3JraW5nIGNv
cHkpCkBAIC03NDEsMTUgKzc0MSw5IEBACiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1wYWRk
aW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hlcy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9zaGlm
dC1jbGljay5odG1sCiAKLSMgSW1wbGVtZW50IGFjY2VzaXRpbGl0eSBzdXBwb3J0IHRvIFdlYktp
dDIKLXBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2FyaWEtcm9sZXMtdW5pZ25vcmVkLmh0bWwK
LXBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2FyaWEtc2xpZGVyLXJlcXVpcmVkLWF0dHJpYnV0
ZXMuaHRtbAotcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1oaWVyYXJjaHku
aHRtbAotcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctdGV4dC1mb2N1
cy5odG1sCi1wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9pbnB1dC1zbGlkZXIuaHRtbAotcGxh
dGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvbGlzdC1pdGVtcy1hbHdheXMtZXhwb3NlZC5odG1sCi1w
bGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9vYmplY3Qtd2l0aC10aXRsZS5odG1sCi1wbGF0Zm9y
bS9ndGsvYWNjZXNzaWJpbGl0eS90YWJsZS1oaWVyYXJjaHkuaHRtbAorIyBJbXBsZW1lbnQgYWNj
ZXNzaWJpbGl0eSBzdXBwb3J0IGZvciBXZWJLaXQyCithY2Nlc3NpYmlsaXR5CitwbGF0Zm9ybS9n
dGsvYWNjZXNzaWJpbGl0eQogCiAjIEltcGxlbWVudCB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlIGludGVyZmFjZQogZmFzdC9mb3Jtcy9jdXJzb3ItYXQtZWRp
dGFibGUtY29udGVudC1ib3VuZGFyeS5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3VwZGF0ZS1jaGlsZHJlbi13aGVuLWFyaWEtcm9sZS1jaGFuZ2VzLmh0bWwJKHJldmlzaW9uIDk4
OTc3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdXBkYXRlLWNo
aWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNyBAQAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyZW50IikuZm9j
dXMoKTsKICAgICAgICAgdmFyIHBhcmVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50OwogICAgICAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkQXRJbmRleCgwKS5yb2xl
IiwgIidBWFJvbGU6IEFYQnV0dG9uJyIpOwotICAgICAgICBzaG91bGRCZSgicGFyZW50LmNoaWxk
QXRJbmRleCgxKS5yb2xlIiwgIidBWFJvbGU6ICciKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJw
YXJlbnQuY2hpbGRBdEluZGV4KDEpID09IG51bGwgfHwgcGFyZW50LmNoaWxkQXRJbmRleCgxKS5p
c1ZhbGlkID09IGZhbHNlIik7CiAgIAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
YnV0dG9uMSIpLnJlbW92ZUF0dHJpYnV0ZSgicm9sZSIpOwogICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYnV0dG9uMiIpLnNldEF0dHJpYnV0ZSgicm9sZSIsICJidXR0b24iKTsKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1y
ZXBvcnRzLW5vdGlmaWNhdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0Ym94LXJvbGUtcmVwb3J0cy1ub3RpZmljYXRpb25z
Lmh0bWwJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvdGV4dGJveC1yb2xlLXJlcG9ydHMtbm90aWZpY2F0aW9ucy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMiw2ICsxMiw3IEBACiA8ZGl2IHJvbGU9InRleHRib3giIGlkPSJhcmlhVGV4
dEJveCIgYXJpYS1tdWx0aWxpbmU9ImZhbHNlIiB0YWJpbmRleD0iMCI+U29tZSB0ZXh0IGluIGEg
dGV4dGJveC48L2Rpdj4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KKyAgICB2
YXIgdGV4dGJveEF4RWxlbWVudDsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
ICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewogICAgICAgICB3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogCkBAIC0yMCw3ICsyMSw3IEBACiAK
ICAgICAgICAgdmFyIGFyaWFUZXh0Qm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFyaWFU
ZXh0Qm94Iik7CiAgICAgICAgIGFyaWFUZXh0Qm94LmZvY3VzKCk7Ci0gICAgICAgIHZhciB0ZXh0
Ym94QXhFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Cisg
ICAgICAgIHRleHRib3hBeEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudDsKICAgICAgICAgdGV4dGJveEF4RWxlbWVudC5hZGROb3RpZmljYXRpb25MaXN0ZW5l
cihsb2dOb3RpZmljYXRpb24pOwogICAgICAgICBwZW5kaW5nTm90aWZpY2F0aW9ucyA9IDM7CiAg
ICAgICAgIGFyaWFUZXh0Qm94LmZpcnN0Q2hpbGQuZGVsZXRlRGF0YSgwLCA1KTsKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9uLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
OTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNl
Y3Rpb24tZWxlbWVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw5ICsyMCw3
IEBACiBQQVNTIGJvZHkuY2hpbGRBdEluZGV4KDQpLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhM
YW5kbWFya05hdmlnYXRpb24nCiBQQVNTIGJvZHkuY2hpbGRBdEluZGV4KDUpLnN1YnJvbGUgaXMg
J0FYU3Vicm9sZTogQVhMYW5kbWFya0NvbXBsZW1lbnRhcnknCiBQQVNTIGJvZHkuY2hpbGRBdElu
ZGV4KDYpLmNoaWxkQXRJbmRleCgwKS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6ICcKLVBBU1MgYm9k
eS5jaGlsZEF0SW5kZXgoNikuY2hpbGRBdEluZGV4KDEpLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTog
JwogUEFTUyBib2R5LmNoaWxkQXRJbmRleCg3KS5jaGlsZEF0SW5kZXgoMCkuc3Vicm9sZSBpcyAn
QVhTdWJyb2xlOiAnCi1QQVNTIGJvZHkuY2hpbGRBdEluZGV4KDcpLmNoaWxkQXRJbmRleCgxKS5z
dWJyb2xlIGlzICdBWFN1YnJvbGU6ICcKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Vw
ZGF0ZS1jaGlsZHJlbi13aGVuLWFyaWEtcm9sZS1jaGFuZ2VzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91cGRh
dGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTUsNyArNSw3IEBACiAKIAogUEFTUyBwYXJlbnQuY2hpbGRBdEluZGV4KDApLnJv
bGUgaXMgJ0FYUm9sZTogQVhCdXR0b24nCi1QQVNTIHBhcmVudC5jaGlsZEF0SW5kZXgoMSkucm9s
ZSBpcyAnQVhSb2xlOiAnCitQQVNTIHBhcmVudC5jaGlsZEF0SW5kZXgoMSkgPT0gbnVsbCB8fCBw
YXJlbnQuY2hpbGRBdEluZGV4KDEpLmlzVmFsaWQgPT0gZmFsc2UgaXMgdHJ1ZQogUEFTUyBwYXJl
bnQuY2hpbGRBdEluZGV4KDApLnJvbGUgaXMgJ0FYUm9sZTogQVhTdGF0aWNUZXh0JwogUEFTUyBw
YXJlbnQuY2hpbGRBdEluZGV4KDEpLnJvbGUgaXMgJ0FYUm9sZTogQVhCdXR0b24nCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGljYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VhcmNoLXByZWRpY2F0ZS5odG1sCShy
ZXZpc2lvbiA5ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3NlYXJjaC1wcmVkaWNhdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAog
PGlucHV0IHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iQ2hlY2tib3giIC8+IGNoZWNrYm94PGJyIC8+
CiA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiAvPgogPC9mb3JtPgotPGltZyBp
ZD0iaW1hZ2UiIHNyYz0icmVzb3VyY2VzL2Nha2UucG5nIiAvPgorPGltZyBpZD0iaW1hZ2UiIHNy
Yz0icmVzb3VyY2VzL2Nha2UucG5nIiBhbHQ9IlRlc3QiPgogPGgxPmZpcnN0IGhlYWRpbmcgbGV2
ZWwgMTwvaDE+CiA8aDE+c2Vjb25kIGhlYWRpbmcgbGV2ZWwgMTwvaDE+CiA8aDI+aGVhZGluZyBs
ZXZlbCAyPC9oMj4KQEAgLTUyLDE0ICs1MiwxMyBAQAogICAgICAgICB2YXIgc3RhcnRFbGVtZW50
OwogICAgICAgICB2YXIgaXNEaXJlY3Rpb25OZXh0OwogICAgICAgICB2YXIgc2VhcmNoS2V5Owot
ICAgICAgICB2YXIgc2VhcmNoVGV4dDsKKyAgICAgICAgdmFyIHNlYXJjaFRleHQgPSAiIjsKICAg
ICAgICAgdmFyIHJlc3VsdEVsZW1lbnQ7CiAgICAgICAgIAogICAgICAgICAvLyBBbnkgZWxlbWVu
dC4KICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNl
ZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVl
OwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhBbnlUeXBlU2VhcmNoS2V5IjsKLSAgICAgICAgc2Vh
cmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50
LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4
dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1l
bnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CiAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCBibG9ja3F1b3RlIGxl
dmVsIDEnIik7CkBAIC02OCw3ICs2Nyw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAg
ICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYQmxvY2tx
dW90ZVNhbWVMZXZlbFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAg
ICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQ
cmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNo
VGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTog
QVhHcm91cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAxJyIp
OwpAQCAtNzcsNyArNzUsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGly
ZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEJsb2NrcXVvdGVTZWFy
Y2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVu
dCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxl
bWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CiAgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIs
ICInQVhWYWx1ZTogc2Vjb25kIGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKQEAgLTg2LDcgKzgzLDYg
QEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNl
ZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVl
OwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhCb2xkRm9udFNlYXJjaEtleSI7Ci0gICAgICAgIHNl
YXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVu
dC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5l
eHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVt
ZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzYW5zLXNl
cmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVuZGVybGluZSciKTsKQEAgLTk1LDcgKzkxLDYgQEAK
ICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwog
ICAgICAgICBzZWFyY2hLZXkgPSAiQVhCdXR0b25TZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hU
ZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlF
bGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBz
ZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5y
b2xlIiwgIidBWFJvbGU6IEFYQnV0dG9uJyIpOwogICAgICAgICAKQEAgLTEwMyw3ICs5OCw2IEBA
CiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsK
ICAgICAgICAgc2VhcmNoS2V5ID0gIkFYQ2hlY2tCb3hTZWFyY2hLZXkiOwotICAgICAgICBzZWFy
Y2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQu
dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0
LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVu
dC5yb2xlIiwgIidBWFJvbGU6IEFYQ2hlY2tCb3gnIik7CiAgICAgICAgIApAQCAtMTExLDcgKzEw
NSw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0g
dHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYQ2hlY2tCb3hTZWFyY2hLZXkiOwotICAgICAg
ICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVs
ZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rp
b25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0
RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYQ2hlY2tCb3gnIik7CiAgICAgICAgIApAQCAtMTE5
LDcgKzExMiw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25O
ZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYRGlmZmVyZW50VHlwZVNlYXJjaEtl
eSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0g
Y29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50
LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOwogICAg
ICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogZmly
c3QgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpAQCAtMTI4LDcgKzEyMCw2IEBACiAgICAgICAgIHN0
YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxk
QXRJbmRleCgyKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2Vh
cmNoS2V5ID0gIkFYRm9udENoYW5nZVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBu
dWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtl
eSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAi
J0FYUm9sZTogQVhHcm91cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hp
bGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzZXJpZiBibHVlIGl0YWxpYyB0
ZXh0JyIpOwpAQCAtMTM3LDcgKzEyOCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgyKTsKICAgICAg
ICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYRm9udENv
bG9yQ2hhbmdlU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAg
IHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRp
Y2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0
KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdy
b3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCku
c3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnIik7CkBAIC0x
NDksNyArMTM5LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlv
bk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhHcmFwaGljU2VhcmNoS2V5IjsK
LSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250
YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlz
RGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUo
InJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEltYWdlJyIpOwogICAgICAgICAKQEAg
LTE1Nyw3ICsxNDYsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0
aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDFTZWFy
Y2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVu
dCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxl
bWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVl
IiwgIidBWFZhbHVlOiBmaXJzdCBoZWFkaW5nIGxldmVsIDEnIik7CkBAIC0xNjYsNyArMTU0LDYg
QEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNl
ZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVl
OwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IjsKLSAgICAg
ICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJF
bGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0
aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTog
aGVhZGluZyBsZXZlbCAyJyIpOwpAQCAtMTc1LDcgKzE2Miw2IEBACiAgICAgICAgIHN0YXJ0RWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5
ID0gIkFYSGVhZGluZ0xldmVsM1NlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxs
OwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JT
ZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwg
c2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FY
Um9sZTogQVhIZWFkaW5nJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGls
ZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgMyciKTsK
QEAgLTE4NCw3ICsxNzAsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGly
ZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDRT
ZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxl
bWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0
RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIiwgIidBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDQnIik7CkBAIC0xOTMsNyArMTc4LDYgQEAK
ICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwog
ICAgICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IjsKLSAgICAgICAg
c2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVt
ZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9u
TmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVh
ZGluZyBsZXZlbCA1JyIpOwpAQCAtMjAyLDcgKzE4Niw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0g
IkFYSGVhZGluZ0xldmVsNlNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwog
ICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFy
Y2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2Vh
cmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9s
ZTogQVhIZWFkaW5nJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0
SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgNiciKTsKQEAg
LTIxMSw3ICsxOTQsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoNik7CiAgICAgICAgIGlzRGlyZWN0
aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdTYW1lTGV2ZWxT
ZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxl
bWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0
RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIiwgIidBWFZhbHVlOiBzZWNvbmQgaGVhZGluZyBsZXZlbCAxJyIpOwpAQCAtMjIwLDcgKzIw
Miw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0g
dHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGluZ1NlYXJjaEtleSI7Ci0gICAgICAg
IHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxl
bWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlv
bk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIpOwogICAgICAgICBzaG91bGRCZSgi
cmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZp
cnN0IGhlYWRpbmcgbGV2ZWwgMSciKTsKQEAgLTIyOSw3ICsyMTAsNiBAQAogICAgICAgICBzdGFy
dEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0
SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJj
aEtleSA9ICJBWEl0YWxpY0ZvbnRTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVs
bDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9y
U2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXks
IHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidB
WFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2VyaWYgYmx1ZSBpdGFsaWMgdGV4
dCciKTsKQEAgLTIzOCw3ICsyMTgsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAg
IGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWExhbmRtYXJr
U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVs
ZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFy
dEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwog
ICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFY
TGFuZG1hcmtCYW5uZXInIik7CkBAIC0yNDcsNyArMjI2LDYgQEAKICAgICAgICAgc3RhcnRFbGVt
ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkg
PSAiQVhMaW5rU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAg
IHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRp
Y2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0
KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWExp
bmsnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5z
dHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogbGluayciKTsKQEAgLTI1Niw3ICsyMzQsNiBAQAogICAg
ICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAg
ICAgIHNlYXJjaEtleSA9ICJBWExpc3RTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0g
bnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50
Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hL
ZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwg
IidBWFJvbGU6IEFYTGlzdCciKTsKICAgICAgICAgCkBAIC0yNjQsNyArMjQxLDYgQEAKICAgICAg
ICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAg
ICBzZWFyY2hLZXkgPSAiQVhMaXZlUmVnaW9uU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4
dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxl
bWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2Vh
cmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9s
ZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVu
dC5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhBUklBTGl2ZScpIiwgIidwb2xpdGUnIik7CkBAIC0y
NzYsNyArMjUyLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlv
bk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhQbGFpblRleHRTZWFyY2hLZXki
OwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNv
bnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwg
aXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRC
ZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKICAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0
IGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKQEAgLTI4NSw3ICsyNjAsNiBAQAogICAgICAgICBzdGFy
dEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0
SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJj
aEtleSA9ICJBWFJhZGlvR3JvdXBTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVs
bDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9y
U2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXks
IHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidB
WFJvbGU6IEFYUmFkaW9Hcm91cCciKTsKICAgICAgICAgCkBAIC0yOTMsNyArMjY3LDYgQEAKICAg
ICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAg
ICAgICBzZWFyY2hLZXkgPSAiQVhTYW1lVHlwZVNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRl
eHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVs
ZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNl
YXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJv
bGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1l
bnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzZWNvbmQgYmxvY2tx
dW90ZSBsZXZlbCAxJyIpOwpAQCAtMzAyLDcgKzI3NSw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0g
IkFYU3RhdGljVGV4dFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAg
ICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQ
cmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNo
VGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTog
QVhTdGF0aWNUZXh0JyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdW
YWx1ZSIsICInQVhWYWx1ZTogZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpAQCAtMzExLDcg
KzI4Myw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgyKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0
ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYU3R5bGVDaGFuZ2VTZWFyY2hLZXkiOwot
ICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRh
aW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNE
aXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgi
cmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1
ZTogc2VyaWYgYmx1ZSBpdGFsaWMgdGV4dCciKTsKQEAgLTMyMCw3ICsyOTEsNiBAQAogICAgICAg
ICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5j
aGlsZEF0SW5kZXgoMTgpOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAg
ICBzZWFyY2hLZXkgPSAiQVhUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJj
aFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51
aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQs
IHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50
LnJvbGUiLCAiJ0FYUm9sZTogQVhUYWJsZSciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuc3Ry
aW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCB0YWJsZSBoZWFkaW5nIGxldmVsIDEnIik7CkBA
IC0zMjksNyArMjk5LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVj
dGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhUYWJsZVNlYXJjaEtleSI7
Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBp
c0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhUYWJsZSciKTsKICAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGls
ZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IHRhYmxlIGhlYWRpbmcg
bGV2ZWwgMSciKTsKQEAgLTMzOCw3ICszMDcsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAg
ICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFRl
eHRGaWVsZFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICBy
ZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNh
dGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7
CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhUZXh0
RmllbGQnIik7CiAgICAgICAgIApAQCAtMzQ2LDcgKzMxNCw2IEBACiAgICAgICAgIHN0YXJ0RWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5
ID0gIkFYVW5kZXJsaW5lU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAg
ICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJj
aFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFy
Y2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xl
OiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNhbnMtc2VyaWYgYmxhY2sgYm9sZCB0ZXh0
IHdpdGggdW5kZXJsaW5lJyIpOwpAQCAtMzU1LDcgKzMyMiw2IEBACiAgICAgICAgIHN0YXJ0RWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5
ID0gIkFYVW52aXNpdGVkTGlua1NlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxs
OwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JT
ZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwg
c2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FY
Um9sZTogQVhMaW5rJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0
SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGxpbmsnIik7CkBAIC0zNjYsNyArMzMy
LDcgQEAKICAgICAgICAgLy8gUHJldmlvdXMgdGV4dCBzZWFyY2guCiAgICAgICAgIHN0YXJ0RWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRl
eCgxMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IGZhbHNlOwotICAgICAgICBzZWFyY2hL
ZXkgPSBudWxsOworICAgICAgICBzZWFyY2hLZXkgPSAiIjsKICAgICAgICAgc2VhcmNoVGV4dCA9
ICJzYW5zLXNlcmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVuZGVybGluZSI7CiAgICAgICAgIHJl
c3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0
ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRp
Y1RleHQnIik7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9o
dG1sLXNlY3Rpb24tZWxlbWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rpb24tZWxlbWVudHMuaHRtbAkocmV2aXNp
b24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1s
LXNlY3Rpb24tZWxlbWVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTEgKzQ2LDkgQEAK
IAogICAgICAgICAgIC8vIFdoZW4gYSBoZWFkZXIgYW5kIGZvb3RlciBhcmUgaW5zaWRlIGFuIGFy
dGljbGUsIHRoZXkgc2hvdWxkIG5vdCBiZSBsYW5kbWFya3MuCiAgICAgICAgICAgc2hvdWxkQmUo
ImJvZHkuY2hpbGRBdEluZGV4KDYpLmNoaWxkQXRJbmRleCgwKS5zdWJyb2xlIiwgIidBWFN1YnJv
bGU6ICciKTsKLSAgICAgICAgICBzaG91bGRCZSgiYm9keS5jaGlsZEF0SW5kZXgoNikuY2hpbGRB
dEluZGV4KDEpLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogJyIpOwogCiAgICAgICAgICAgLy8gV2hl
biBhIGhlYWRlciBhbmQgZm9vdGVyIGFyZSBpbnNpZGUgYSBzZWN0aW9uLCB0aGV5IHNob3VsZCBu
b3QgYmUgbGFuZG1hcmtzLgogICAgICAgICAgIHNob3VsZEJlKCJib2R5LmNoaWxkQXRJbmRleCg3
KS5jaGlsZEF0SW5kZXgoMCkuc3Vicm9sZSIsICInQVhTdWJyb2xlOiAnIik7Ci0gICAgICAgICAg
c2hvdWxkQmUoImJvZHkuY2hpbGRBdEluZGV4KDcpLmNoaWxkQXRJbmRleCgxKS5zdWJyb2xlIiwg
IidBWFN1YnJvbGU6ICciKTsKICAgICB9CiAKICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLXdrMi9Ta2lwcGVkCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi13azIvU2tpcHBlZAkocmV2aXNpb24gOTg5Nzcp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4td2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDEwICsyNiw5IEBACiAjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjCiAKLSMgV2ViS2l0MiBuZWVkcyB0byBz
dXBwb3J0IGFjY2Vzc2liaWxpdHkKLSMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjEzMD4KLSMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0byBzdXBwb3J0IGFjY2Vz
c2liaWxpdHktcmVsYXRlZCBEUlQgQVBJcwotIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQyMTMxPgorIyBXaW5kb3dzIGRvZXMgbm90IHN1cHBvcnQgV2ViS2l0MiBh
Y2Nlc3NpYmlsaXR5LgorIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcxMjk2PgorYWNjZXNzaWJpbGl0eQogcGxhdGZvcm0vd2luL2FjY2Vzc2liaWxpdHkKIAogIyBX
ZWJLaXRUZXN0UnVubmVyIG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIG9mIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBJY29uQ2hhbmdlcwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Nr
aXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQJKHJl
dmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDEyICszOCwxMSBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIwogIyMjIFNUQVJUIE9GICgxKSBDbGFzc2lmaWVkIGZhaWx1cmVzIHdpdGgg
YnVnIHJlcG9ydHMKIAotIyBXZWJLaXQyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eQot
IyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMwPgotIyBXZWJL
aXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1yZWxhdGVkIERSVCBB
UElzCi0jIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxMzE+Ci1h
Y2Nlc3NpYmlsaXR5Ci1wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eQorIyBBWCB0ZXN0cyB0aGF0
IHJlcXVpcmUgaGl0IHRlc3RpbmcgZG8gbm90IHdvcmsgaW4gV0syLgorIyA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMjk4PgorcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvaHRtbC1zbGlkZXItaW5kaWNhdG9yLmh0bWwKK3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L2xpc3Rib3gtaGl0LXRlc3QuaHRtbAorcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaWZy
YW1lLXdpdGgtdGl0bGUtY29ycmVjdC1oaWVyYXJjaHkuaHRtbAogCiAjIFNvbWUgY29tcG9zaXRp
bmcgdGVzdHMgZmxha2V5CiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDgzNTQ+CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRi
eS1vdmVycmlkZXMtbGFiZWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxh
YmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NSw3ICs1LDcgQEAKIAogCiBQQVNTIHRleHQuZGVzY3JpcHRpb24gaXMgJ0FYRGVzY3JpcHRpb246
IFNodXQgZG93biBjb21wdXRlciBhZnRlciAxMCBtaW51dGVzJwotUEFTUyB0ZXh0LnRpdGxlVUlF
bGVtZW50KCkuaXNWYWxpZCBpcyBmYWxzZQorUEFTUyB0ZXh0LnRpdGxlVUlFbGVtZW50KCkgIT0g
bnVsbCAmJiB0ZXh0LnRpdGxlVUlFbGVtZW50KCkuaXNWYWxpZCBpcyBmYWxzZQogUEFTUyBsYWJl
bEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1s
YWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC5odG1sCShyZXZp
c2lvbiA5ODk3NykKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5
LW92ZXJyaWRlcy1sYWJlbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAg
ICAgICAgICAgc2hvdWxkQmUoInRleHQuZGVzY3JpcHRpb24iLCAiJ0FYRGVzY3JpcHRpb246IFNo
dXQgZG93biBjb21wdXRlciBhZnRlciAxMCBtaW51dGVzJyIpOwogCiAgICAgICAgICAgLy8gVGhl
cmUgc2hvdWxkIGJlIG5vIHRpdGxlIFVJIGVsZW1lbnQuCi0gICAgICAgICAgc2hvdWxkQmUoInRl
eHQudGl0bGVVSUVsZW1lbnQoKS5pc1ZhbGlkIiwgImZhbHNlIik7CisgICAgICAgICAgc2hvdWxk
QmUoInRleHQudGl0bGVVSUVsZW1lbnQoKSAhPSBudWxsICYmIHRleHQudGl0bGVVSUVsZW1lbnQo
KS5pc1ZhbGlkIiwgImZhbHNlIik7CiAgICAgICAgICAgCiAgICAgICAgICAgLy8gVGhlIGxhYmVs
IGVsZW1lbnQgaXMgaW4gYSBncm91cCwgaW4gYSBncm91cCwgaW4gdGhlIHdlYiBhcmVhLgogICAg
ICAgICAgIHZhciBsYWJlbEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5yb290RWxl
bWVudC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGls
ZEF0SW5kZXgoMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RoLWFzLXRpdGxl
LXVpLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90aC1hcy10
aXRsZS11aS5odG1sCShyZXZpc2lvbiA5ODk3NykKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvdGgtYXMtdGl0bGUtdWkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNyBAQAog
ICAgICAgICAgICAgYm9keS5mb2N1cygpOwogICAgICAgICAgICAgdmFyIGdyb3VwID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDEpOwogICAgICAg
ICAgICAgdmFyIGdyb3VwMiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50
LmNoaWxkQXRJbmRleCgzKTsKLQotICAgICAgICAgICAgaWYgKGdyb3VwLnRpdGxlVUlFbGVtZW50
KCkuYWxsQXR0cmlidXRlcygpICE9ICIiICYmIGdyb3VwMi50aXRsZVVJRWxlbWVudCgpLmFsbEF0
dHJpYnV0ZXMoKSA9PSAiIikKKyAgICAgICAgICAgIGlmIChncm91cC50aXRsZVVJRWxlbWVudCgp
LmFsbEF0dHJpYnV0ZXMoKSAhPSAiIiAmJiAoZ3JvdXAyLnRpdGxlVUlFbGVtZW50KCkgPT0gbnVs
bCB8fCBncm91cDIudGl0bGVVSUVsZW1lbnQoKS5hbGxBdHRyaWJ1dGVzKCkgPT0gIiIpKSAKICAg
ICAgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJQYXNzIjsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJGYWlsIjsKSW5kZXg6IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbm9uLWRhdGEtdGFibGUtY2VsbC10aXRsZS11aS1lbGVt
ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub24tZGF0
YS10YWJsZS1jZWxsLXRpdGxlLXVpLWVsZW1lbnQuaHRtbAkocmV2aXNpb24gOTg5NzcpCisrKyBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vbi1kYXRhLXRhYmxlLWNlbGwtdGl0bGUtdWktZWxl
bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw5IEBACiAgICAgICAgICAgICAv
LyBnZXQgdGhlIDx0aD5za2lwPC90aD4gZWxlbWVudAogICAgICAgICAgICAgdmFyIGdyb3VwID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDUpOwog
ICAgICAgICAgICAgdmFyIHRpdGxlVUkgPSBncm91cC50aXRsZVVJRWxlbWVudCgpOwotICAgICAg
ICAgICAgdmFyIGFsbEF0dHJpYnV0ZXMgPSB0aXRsZVVJLmFsbEF0dHJpYnV0ZXMoKTsKKyAgICAg
ICAgICAgIHZhciBhbGxBdHRyaWJ1dGVzID0gIiI7CisgICAgICAgICAgICBpZiAodGl0bGVVSSkK
KyAgICAgICAgICAgICAgICBhbGxBdHRyaWJ1dGVzID0gdGl0bGVVSS5hbGxBdHRyaWJ1dGVzKCk7
CiAKICAgICAgICAgICAgIC8vIHZlcmlmeSBpdCBoYXMgbm8gdGl0bGUgdWkgZWxlbWVudCAgICAg
ICAgICAgCiAgICAgICAgICAgICBpZiAoIWFsbEF0dHJpYnV0ZXMpIHsKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDk5MTI4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzUgQEAKKzIwMTEtMTEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNz
aWJpbGl0eS1yZWxhdGVkIERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MjEzMQorCisgICAgICAgIENsZWFudXAgdGVzdHMgYW5kIHNraXAg
bGlzdHMgc28gdGhhdCBhY2Nlc3NpYmlsaXR5IHRlc3RzIGNhbiBydW4KKyAgICAgICAgaW4gV0sy
LiBUaGlzIG1vc3RseSBpbnZvbHZlZCBoYW5kbGluZyByZXR1cm5lZCBlbGVtZW50cyB0aGF0IG1p
Z2h0IGJlIG5pbCwKKyAgICAgICAgc29tZXRoaW5nIHRoYXQgZGlkIG5vdCBoYXBwZW4gaW4gRFJU
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwu
aHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L25vbi1kYXRhLXRhYmxlLWNlbGwtdGl0bGUt
dWktZWxlbWVudC5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGgtYXMtdGl0bGUtdWku
aHRtbDoKKyAgICAgICAgICAgICBNYWtlIHN1cmUgYSBuaWwgdGl0bGVVSUVsZW1lbnQgaXMgYWNj
b3VudGVkIGZvciBpbiB0aGVzZSB0ZXN0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL1Nr
aXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9u
LWVsZW1lbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9odG1sLXNlY3Rpb24tZWxlbWVudHMuaHRtbDoKKyAgICAgICAgICAgICBSZW1vdmUgbmls
IGVsZW1lbnQgYWNjZXNzIHRoYXQgaXMgdW5uZWNlc3NhcnkuCisgICAgICAgICogcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvc2VhcmNoLXByZWRpY2F0ZS5odG1sOgorICAgICAgICAgICAgIEFk
ZCBhbiBhbHQgdGFnIHRvIDxpbWc+IHNvIHRoYXQgaXQgYWx3YXlzIHNob3dzIHVwIGluIHRoZSBB
WCB0cmVlLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9s
ZS1yZXBvcnRzLW5vdGlmaWNhdGlvbnMuaHRtbDoKKyAgICAgICAgICAgICBSZW1vdmUgdGhlIG5v
dGlmaWNhdGlvbiBsaXN0ZW5lciBwcm9wZXJseSAod2FzIGNhdXNpbmcgZmxha2luZXNzKS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1h
cmlhLXJvbGUtY2hhbmdlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMuaHRtbDoK
KyAgICAgICAgICAgICBBY2NvdW50IGZvciB3aGVuIGVsZW1lbnQncyByZXR1cm5lZCBhcmUgbmls
LgorICAgICAgICAqIHBsYXRmb3JtL3dpbi13azIvU2tpcHBlZDoKKyAgICAgICAgICAgICBTa2lw
IGFsbCBhY2Nlc3NpYmlsaXR5IHRlc3RzIG9uIHdpbi4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIv
U2tpcHBlZDoKKyAgICAgICAgICAgICBTa2lwIGFsbCBhY2Nlc3NpYmlsaXR5IHRlc3RzIG9uIGd0
ay4KKwogMjAxMS0xMS0wMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04gKHI5ODc1OS1yOTg3NzMpOiBwbGF0Zm9ybS9tYWMvZm9udHMvY29sb3It
Yml0bWFwLmh0bWwgZmFpbGluZyBvbiBMaW9uIEludGVsIERlYnVnIChUZXN0cykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113524</attachid>
            <date>2011-11-03 11:00:49 -0700</date>
            <delta_ts>2011-11-15 15:03:46 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>188549</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA5OTEyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDcgQEAKIF9f
Wk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTEwcm9vdE9iamVjdEV2CiBfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUxOHJvb3RPYmplY3RGb3JGcmFtZUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3Jl
MTNBWE9iamVjdENhY2hlMjFnQWNjZXNzaWJpbGl0eUVuYWJsZWRFCitfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUyM2ZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlRVBLTlNfNFBhZ2VFCiBfX1pON1dl
YkNvcmUxM0FYT2JqZWN0Q2FjaGU0MmdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNl
RW5hYmxlZEUKIF9fWk43V2ViQ29yZTEzSFRUUEhlYWRlck1hcEMxRXYKIF9fWk43V2ViQ29yZTEz
SFRUUEhlYWRlck1hcEQxRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MTI4KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTEtMTEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1yZWxhdGVk
IERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MjEzMQorCisgICAgICAgIE1pbm9yIGNoYW5nZXMgbmVlZGVkIHRvIHN1cHBvcnQgQVggdGVz
dGluZyBpbiBXS1Rlc3RSdW5uZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgICAgICBFeHBvc2UgZm9j
dXNlZFVJRWxlbWVudEZvclBhZ2Ugc28gdGhhdCB0aGUgV0syIGluamVjdGVkIGJ1bmRsZSBjYW4g
cmV0cmlldmUgaXQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKToKKyAgICAgICAgICAgIFJlbW92ZSBhbiB1bm5jZXNzYXJ5IGFzc2VydCB0aGF0IHdhcyBj
YXVzaW5nIGlzc3VlcyB3aXRoIHRoZSBXSzIgdGVzdCBydW4uCisKIDIwMTEtMTEtMDIgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSB1c2FnZSBvZiBT
dHJpbmdJbXBsIHdpdGggU3RyaW5nIHdoZXJlIHBvc3NpYmxlIGluIENoYXJhY3RlckRhdGEgYW5k
IFRleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lvbiA5
OTEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OTUsNyArNDk1LDggQEAKIAog
c3RhdGljIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgp
KTsKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQW55VHlwZVNlYXJj
aEtleTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCog
c2VhcmNoS2V5TWFwID0gY3JlYXRlQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCgpOwogICAgIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgJKHJldmlzaW9uIDk5
MTI4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDkgQEAKIFdL
X0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNvbmZpcm1Db21wb3NpdGlvbihXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VDb25maXJtQ29tcG9zaXRpb25X
aXRoVGV4dChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGV4dCk7CiAKK1dLX0VY
UE9SVCB2b2lkKiBXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KFdLQnVuZGxlUGFnZVJlZik7CitX
S19FWFBPUlQgdm9pZCogV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdChXS0J1bmRsZVBhZ2VS
ZWYpOyAgICAKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDk5MTI4KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNywxMSBAQAogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUg
IldlYlVSTFJlcXVlc3QuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvQWNjZXNzaWJpbGl0eU9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMTI2LDYgKzEzMCw0NiBA
QAogICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPm1haW5XZWJGcmFtZSgpKTsKIH0K
IAordm9pZCogV0tBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZikKK3sKKyAgICBpZiAoIXBhZ2VSZWYpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFdl
YkNvcmU6OlBhZ2UqIHBhZ2UgPSB0b0ltcGwocGFnZVJlZiktPmNvcmVQYWdlKCk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBXZWJDb3JlOjpGcmFtZSogY29y
ZSA9IHBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghY29yZSB8fCAhY29yZS0+ZG9jdW1lbnQo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOworCisgICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dCogcm9vdCA9IGNvcmUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgp
OworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIHJv
b3QtPndyYXBwZXIoKTsKK30KKwordm9pZCogV0tBY2Nlc3NpYmlsaXR5Rm9jdXNlZE9iamVjdChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICBpZiAoIXBhZ2VSZWYpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSB0b0ltcGwocGFnZVJlZikt
PmNvcmVQYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKKworICAgIFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKKyAgICBpZiAoIWZvY3VzZWRP
YmplY3QpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBmb2N1c2VkT2JqZWN0
LT53cmFwcGVyKCk7Cit9CisKIHZvaWQgV0tCdW5kbGVQYWdlU3RvcExvYWRpbmcoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zdG9wTG9hZGluZygpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gOTkxMjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMS0wMiAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIg
bmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgRFJUIEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMxCisKKyAgICAgICAg
QWxsb3cgdGhlIGluamVjdGVkIGJ1bmRsZSB0byByZXRyaWV2ZSB0aGUgZm9jdXNlZCBhbmQgcm9v
dCBhY2Nlc3NpYmlsaXR5CisgICAgICAgIG9iamVjdHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0
KToKKyAgICAgICAgKFdLQWNjZXNzaWJpbGl0eUZvY3VzZWRPYmplY3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oOgorCiAy
MDExLTExLTAyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgRGUtdmlydHVhbGl6ZSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcwpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
OTkxMjgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMzEg
QEAKKzIwMTEtMTEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eS1y
ZWxhdGVkIERSVCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjEzMQorCisgICAgICAgIFBvcnQgdGhlIEFYIGNvZGUgaW4gRFJUIHRvIFdLVGVz
dFJ1bm5lciBieSB1c2luZyBJREwuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0Rlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6fkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
Om1ha2VXaW5kb3dPYmplY3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6d3JhcHBlckNsYXNzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OnJvb3RFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZv
Y3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmVs
ZW1lbnRBdFBvaW50KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6bG9nRm9jdXNFdmVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6bG9nVmFsdWVDaGFuZ2VFdmVudHMpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cyk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25M
aXN0ZW5lcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpub3RpZmlj
YXRpb25SZWNlaXZlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpy
ZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcDogQWRkZWQuCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6fkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OndyYXBwZXJDbGFzcyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlci5oOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OnBsYXRmb3JtVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OndyYXBwZXJDbGFzcyk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
Lmg6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpw
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmlzRXF1
YWwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3
cmFwcGVyQ2xhc3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Zh
bGlkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWspOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5k
ZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Ny
b2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxT
Y3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFs
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdl
Rm9yRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRN
YXJrZXJSYW5nZUxlbmd0aCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlckZvclBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGxhdGZvcm1VSUVsZW1lbnQp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbDog
QWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmlkbDogQWRkZWQuCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmlkbDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGU6OmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2xlYXJXaW5kb3dGb3JGcmFtZSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW06IEFkZGVkLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbCk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1h
Yy5tbTogQWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6
OmlzRXF1YWwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06IEFkZGVkLgorICAgICAgICAoK1tOU1N0cmlu
ZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAgICgtW05TU3RyaW5nIGNyZWF0ZUpT
U3RyaW5nUmVmXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
IGluaXRXaXRoUGxhdGZvcm1FbGVtZW50Ol0pOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyIF9ub3RpZmljYXRpb25SZWNlaXZlZDpdKToKKyAgICAgICAgKC1bQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgc2V0Q2FsbGJhY2s6XSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCk6CisgICAgICAgIChXVFI6OmRlc2NyaXB0aW9uT2ZWYWx1ZSk6CisgICAgICAgIChXVFI6OmF0
dHJpYnV0ZXNPZkVsZW1lbnQpOgorICAgICAgICAoV1RSOjpjb25jYXRlbmF0ZUF0dHJpYnV0ZUFu
ZFZhbHVlKToKKyAgICAgICAgKFdUUjo6Y29udmVydE5TQXJyYXlUb1ZlY3Rvcik6CisgICAgICAg
IChXVFI6OmRlc2NyaXB0aW9uT2ZFbGVtZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtzKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJl
bkNvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRS
b3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVV
SUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRF
bGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2Vk
QnlSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZMaW5rZWRVSUVsZW1lbnRzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNldHRhYmxlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmli
dXRlTmFtZXMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbik6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGFuZ3VhZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpoZWxwVGV4dCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoZWlnaHQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjbGlja1BvaW50WCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNsaWNrUG9pbnRZKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50
VmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbik6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3VwcG9y
dGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFibGVkKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzcGVhayk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFJc0dyYWJiZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhRHJvcEVmZmVjdHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpsaW5lRm9ySW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
YW5nZUZvckxpbmUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3Vu
ZHNGb3JSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmlu
Z0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmli
dXRlZFN0cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVy
cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJv
d0hlYWRlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZDb2x1bW5zKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mUm93cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZlZpc2libGVDZWxscyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJvd0NvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y29sdW1uQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
bmRleEluVGFibGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJ
bmRleFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1u
SW5kZXhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxG
b3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
b3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aW5jcmVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZGVjcmVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2hvd01lbnUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcyk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFs
dWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29k
aW5nKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxp
c3RlbmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2Fi
bGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJs
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT2ZmU2NyZWVuKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1cCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphZGRTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpyZW1vdmVTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludCk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcik6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybU5hbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybU5hbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdU
Ujo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vSW5qZWN0ZWRCdW5kbGUudmNwcm9qOgorCiAy
MDExLTExLTAyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjk4NzU5LXI5ODc3Myk6IHBsYXRmb3JtL21hYy9mb250cy9jb2xvci1iaXRtYXAu
aHRtbCBmYWlsaW5nIG9uIExpb24gSW50ZWwgRGVidWcgKFRlc3RzKQpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaCIKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV1RSIHsKKyAgICAKK1Bhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVh
dGUoUGxhdGZvcm1UZXh0TWFya2VyIG1hcmtlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG1hcmtlcikpOworfQorCitQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKGNvbnN0
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihtYXJrZXIpKTsKK30KKworQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlciBt
YXJrZXIpCisgICAgOiBtX3RleHRNYXJrZXIobWFya2VyKQoreworfQorCitBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoY29uc3QgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXImIG1hcmtlcikKKyAgICA6IG1fdGV4dE1hcmtlcihtYXJrZXIucGxhdGZvcm1UZXh0
TWFya2VyKCkpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIoKQoreworfQorCitQbGF0Zm9ybVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6OnBsYXRmb3JtVGV4dE1hcmtlcigpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIHJldHVybiBtX3RleHRNYXJrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBtX3Rl
eHRNYXJrZXI7CisjZW5kaWYKK30KKyAgICAKK0pTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OndyYXBwZXJDbGFzcygpCit7CisgICAgcmV0dXJuIEpTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OmFjY2Vzc2liaWxpdHlUZXh0TWFya2VyQ2xhc3MoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RSCisKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTc2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisKKyNpbmNsdWRlICJKU0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0
ci5oPgorCituYW1lc3BhY2UgV1RSIHsKKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoUGxhdGZvcm1VSUVsZW1lbnQgdWlF
bGVtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCh1aUVsZW1lbnQpKTsKK30KKyAgICAKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQmIHVpRWxlbWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQodWlFbGVtZW50KSk7Cit9CisKK0pTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6d3JhcHBlckNsYXNzKCkKK3sKKyAgICByZXR1cm4gSlNBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2xhc3MoKTsKK30KKyAgICAKKy8vIEltcGxl
bWVudGF0aW9uCisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWYWxpZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZWxlbWVudDsgICAgICAgICAgICAKK30KKyAgICAKKy8vIFVuc3Vw
cG9ydGVkIG1ldGhvZHMgb24gdmFyaW91cyBwbGF0Zm9ybXMuIEFzIHRoZWlyIGltcGxlbWVudGVk
IG9uIG90aGVyIHBsYXRmb3JtcyB0aGlzIGxpc3Qgc2hvdWxkIGJlIG1vZGlmaWVkLgorI2lmICFQ
TEFURk9STShNQUMpCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KFBsYXRmb3JtVUlFbGVtZW50KSB7IH0KK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpIHsgfQorQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKSB7IH0KK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kikg
eyByZXR1cm4gZmFsc2U7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQoaW50LCBpbnQpIHsgcmV0dXJuIDA7
IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y2hpbGRBdEluZGV4KHVuc2lnbmVkKSB7IHJldHVybiAwOyB9Cit1bnNpZ25lZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCop
IHsgcmV0dXJuIDA7IH0KK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50
KCkgeyByZXR1cm4gMDsgfQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpIHsgcmV0dXJuIDA7IH0KK1Bhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFy
ZW50RWxlbWVudCgpIHsgcmV0dXJuIDA7IH0KK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGFrZUZvY3VzKCkgeyB9Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VTZWxlY3Rp
b24oKSB7IH0KK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9uKCkgeyB9
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbigpIHsgfQorSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0
ZXMoKSB7IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cygpIHsgcmV0dXJuIDA7IH0K
K1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQorSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkRv
Y3VtZW50TGlua3MoKSB7IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRyZW4oKSB7IHJldHVybiAwOyB9
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1l
dGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkgeyByZXR1cm4gMDsgfQordm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjppbmNyZW1lbnQoKSB7IH0KK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZGVjcmVtZW50KCkgeyB9Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNob3dNZW51KCkg
eyB9Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKCkgeyB9CitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFs
dWUoSlNTdHJpbmdSZWYpIHsgcmV0dXJuIDA7IH0KK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikgeyByZXR1cm4gMDsgfQorYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYp
IHsgcmV0dXJuIGZhbHNlOyB9Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmli
dXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmKSB7IHJldHVybiBmYWxzZTsgfQorYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmKSB7IHJldHVy
biBmYWxzZTsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGlvblN1cHBvcnRl
ZChKU1N0cmluZ1JlZikgeyByZXR1cm4gZmFsc2U7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUoKSB7IHJldHVy
biAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cm9sZURlc2NyaXB0aW9uKCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKCkgeyBy
ZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Omxhbmd1YWdlKCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkgeyByZXR1cm4gMDsgfQorSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkg
eyByZXR1cm4gMDsgfQorZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnkoKSB7IHJldHVy
biAwOyB9Citkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgoKSB7IHJldHVybiAw
OyB9Citkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVpZ2h0KCkgeyByZXR1cm4gMDsg
fQorZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gMDsgfQorZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pblZhbHVlKCkgeyByZXR1
cm4gMDsgfQorZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlKCkgeyByZXR1
cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnZhbHVlRGVzY3JpcHRpb24oKSB7IHJldHVybiAwOyB9CitpbnQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdl
KCkgeyByZXR1cm4gMDsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VuYWJsZWQo
KSB7IHJldHVybiBmYWxzZTsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1JlcXVp
cmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNGb2N1c2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK2Jvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNNdWx0aVNlbGVj
dGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKSBjb25zdCB7IH0K
K3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRyZW5Db3VudCgp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRl
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzQ2hlY2tlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Citib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Citib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzT2ZmU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
K2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1
cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9Citkb3VibGUgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgoKSB7IHJldHVybiAwOyB9Citkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFkoKSB7IHJldHVybiAwOyB9CitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNvZGluZygp
IHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpkb2N1bWVudFVSSSgpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKSB7IHJldHVybiAwOyB9CitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWsoKSB7IHJldHVy
biAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJz
KCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMoKSB7IHJldHVybiAwOyB9CitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cygp
IHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMoKSB7IHJldHVybiAwOyB9CitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVh
ZGVyKCkgeyByZXR1cm4gMDsgfQoraW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4SW5U
YWJsZSgpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlKCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkluZGV4UmFuZ2UoKSB7
IHJldHVybiAwOyB9CitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93Q291bnQoKSB7IHJl
dHVybiAwOyB9CitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uQ291bnQoKSB7IHJl
dHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQor
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpkaXNjbG9zZWRCeVJvdygpIHsgcmV0dXJuIDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCh1
bnNpZ25lZCkgeyByZXR1cm4gMDsgfQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVk
KSB7IHJldHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCkgeyBy
ZXR1cm4gMDsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhSXNHcmFiYmVkKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMoKSBjb25zdCB7IHJldHVybiAwOyB9Citp
bnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KGludCkgeyByZXR1cm4gMDsg
fQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdl
Rm9yTGluZShpbnQpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpib3VuZHNGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWduZWQpIHsg
cmV0dXJuIDA7IH0KK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0
UmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKSB7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWduZWQp
IHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKSB7IHJl
dHVybiAwOyB9Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdS
YW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25lZCwgdW5zaWduZWQpIHsgcmV0dXJuIGZhbHNlOyB9CitQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiwgYm9v
bCwgSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKSB7IHJldHVybiAwOyB9CitQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1
bW5BbmRSb3codW5zaWduZWQsIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9CitQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxT
Y3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkgY29u
c3QgeyByZXR1cm4gMDsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmlj
YXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVmKSB7IHJldHVybiBmYWxzZTsgfQorYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpIHsgcmV0dXJuIGZh
bHNlOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCopIHsgcmV0dXJuIDA7IH0KK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0
TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopIHsgcmV0dXJu
IDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciosIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gMDsgfQorUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Rh
cnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UqKSB7IHJldHVybiAwOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiAwOyB9CitQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJu
IDA7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQsIGludCkgeyByZXR1cm4gMDsgfQorUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gMDsg
fQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiAw
OyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJl
dHVybiAwOyB9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RSCisKSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCisjZGVmaW5lIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyX2gKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
T2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaWYgUExBVEZPUk0oV0lO
KQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RSIHsKKyAgICAK
K2NsYXNzIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyIDogcHVibGljIEpTV3JhcHBhYmxlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gY3Jl
YXRlKCk7CisgICAgfkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIG1ha2VX
aW5kb3dPYmplY3QoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiB3aW5kb3dPYmplY3QsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbik7CisgICAgdmlydHVhbCBKU0NsYXNzUmVmIHdyYXBwZXJDbGFzcygp
OworICAgIAorICAgIC8vIENvbnRyb2xsZXIgTWV0aG9kcyAtIHBsYXRmb3JtLWluZGVwZW5kZW50
IGltcGxlbWVudGF0aW9ucworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
cm9vdEVsZW1lbnQoKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGZv
Y3VzZWRFbGVtZW50KCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBl
bGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpOworCisgICAgLy8gSGVyZSBmb3IgY29uc2lzdGVu
Y3kgd2l0aCBEUlQuIE5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIHRoZXkgZG9uJ3QgZG8gYW55dGhp
bmcgb24gdGhlIE1hYy4KKyAgICB2b2lkIGxvZ0ZvY3VzRXZlbnRzKCkgeyB9CisgICAgdm9pZCBs
b2dWYWx1ZUNoYW5nZUV2ZW50cygpIHsgfQorICAgIHZvaWQgbG9nU2Nyb2xsaW5nU3RhcnRFdmVu
dHMoKSB7IH0KKyAgICB2b2lkIGxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKSB7IH0KKyAgICB2b2lk
IGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBKU1ZhbHVl
UmVmIGZ1bmN0aW9uQ2FsbGJhY2spIHsgfQorICAgIHZvaWQgbm90aWZpY2F0aW9uUmVjZWl2ZWQo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIEpTU3RyaW5nUmVmIGV2ZW50TmFtZSkgeyB9CisgICAg
CisgICAgdm9pZCByZXNldFRvQ29uc2lzdGVudFN0YXRlKCkgeyB9CisKK3ByaXZhdGU6CisgICAg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdUUgorCisj
ZW5kaWYgLy8gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJfaApJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyX2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJfaAorCisjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBDRlR5cGVSZWYgUGxhdGZvcm1UZXh0TWFya2VyOwor
I2Vsc2UKK3R5cGVkZWYgdm9pZCogUGxhdGZvcm1UZXh0TWFya2VyOworI2VuZGlmCisKK25hbWVz
cGFjZSBXVFIgeworCitjbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OworCitjbGFzcyBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGNyZWF0ZShQbGF0Zm9y
bVRleHRNYXJrZXIpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBjcmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXImKTsKKworICAgIH5BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcigpOworICAgIAorICAgIFBsYXRmb3JtVGV4dE1hcmtlciBwbGF0
Zm9ybVRleHRNYXJrZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEpTQ2xhc3NSZWYgd3JhcHBlckNs
YXNzKCk7CisKKyAgICBzdGF0aWMgSlNPYmplY3RSZWYgbWFrZUpTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIoSlNDb250ZXh0UmVmLCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciYpOworICAg
IGJvb2wgaXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIAorcHJpdmF0ZToK
KyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXIpOworICAgIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJik7CisK
KyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPFBsYXRmb3JtVGV4dE1hcmtlcj4gbV90
ZXh0TWFya2VyOworI2Vsc2UKKyAgICBQbGF0Zm9ybVRleHRNYXJrZXIgbV90ZXh0TWFya2VyOwor
I2VuZGlmCit9OworCisjaWYgIVBMQVRGT1JNKE1BQykKK2lubGluZSBib29sIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4g
ZmFsc2U7IH0KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXVFIKKyAgICAKKyNlbmRpZiAvLyBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcl9oCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5jcHAJKHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODksNiArODksMTIgQEAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycyhyZWludGVycHJldF9jYXN0PGNvbnN0IEpTQ2hhcio+KHBhdGguY29uc3REYXRhKCkpLCBw
YXRoLmxlbmd0aCgpKTsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybU5hbWUoKQoreworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBwbGF0Zm9ybU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJxdCIp
KTsKKyAgICByZXR1cm4gcGxhdGZvcm1OYW1lOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKIAog
I2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyUXQubW9jIgpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50X2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudF9oCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oIgorI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCIKKyNpbmNsdWRlICJKU1dyYXBw
YWJsZS5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKyNpZmRl
ZiBfX09CSkNfXwordHlwZWRlZiBpZCBQbGF0Zm9ybVVJRWxlbWVudDsKKyNlbHNlCit0eXBlZGVm
IHN0cnVjdCBvYmpjX29iamVjdCogUGxhdGZvcm1VSUVsZW1lbnQ7CisjZW5kaWYKKyNlbGlmIFBM
QVRGT1JNKFdJTikKKyN1bmRlZiBfV0lOU09DS0FQSV8KKyNkZWZpbmUgX1dJTlNPQ0tBUElfIC8v
IFByZXZlbnQgaW5jbHVzaW9uIG9mIHdpbnNvY2suaCBpbiB3aW5kb3dzLmgKKworI2luY2x1ZGUg
PFdlYkNvcmUvQ09NUHRyLmg+CisjaW5jbHVkZSA8b2xlYWNjLmg+CisKK3R5cGVkZWYgQ09NUHRy
PElBY2Nlc3NpYmxlPiBQbGF0Zm9ybVVJRWxlbWVudDsKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyNp
bmNsdWRlIDxhdGsvYXRrLmg+Cit0eXBlZGVmIEF0a09iamVjdCogUGxhdGZvcm1VSUVsZW1lbnQ7
CisjZWxzZQordHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVVJRWxlbWVudDsKKyNlbmRpZgorCisjaWYg
UExBVEZPUk0oTUFDKQorI2lmZGVmIF9fT0JKQ19fCit0eXBlZGVmIGlkIE5vdGlmaWNhdGlvbkhh
bmRsZXI7CisjZWxzZQordHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QqIE5vdGlmaWNhdGlvbkhh
bmRsZXI7CisjZW5kaWYKKyNlbmRpZgorCituYW1lc3BhY2UgV1RSIHsKKworY2xhc3MgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY3JlYXRlKFBsYXRmb3JtVUlF
bGVtZW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBj
cmVhdGUoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOworCisgICAgfkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQoKTsKKworICAgIFBsYXRmb3JtVUlFbGVtZW50IHBsYXRmb3JtVUlFbGVtZW50
KCkgeyByZXR1cm4gbV9lbGVtZW50OyB9CisgICAgdmlydHVhbCBKU0NsYXNzUmVmIHdyYXBwZXJD
bGFzcygpOworCisgICAgc3RhdGljIEpTT2JqZWN0UmVmIG1ha2VKU0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQoSlNDb250ZXh0UmVmLCBjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Jik7CisKKyAg
ICBib29sIGlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogb3RoZXJFbGVtZW50KTsKKyAg
ICAKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGVsZW1lbnRBdFBvaW50
KGludCB4LCBpbnQgeSk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBj
aGlsZEF0SW5kZXgodW5zaWduZWQpOworICAgIHVuc2lnbmVkIGluZGV4T2ZDaGlsZChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Kik7CisgICAgaW50IGNoaWxkcmVuQ291bnQoKTsKKyAgICBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHRpdGxlVUlFbGVtZW50KCk7CisgICAgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBwYXJlbnRFbGVtZW50KCk7CisKKyAgICB2b2lk
IHRha2VGb2N1cygpOworICAgIHZvaWQgdGFrZVNlbGVjdGlvbigpOworICAgIHZvaWQgYWRkU2Vs
ZWN0aW9uKCk7CisgICAgdm9pZCByZW1vdmVTZWxlY3Rpb24oKTsKKworICAgIC8vIE1ldGhvZHMg
LSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMKKyAgICBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gYWxsQXR0cmlidXRlcygpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBhdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRzKCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBsaW5rZWRVSUVsZW1lbnRBdEluZGV4KHVuc2lnbmVkKTsKKyAgICAK
KyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcygp
OworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZDaGlsZHJlbigpOwor
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMo
KTsKKyAgICB2b2lkIGluY3JlbWVudCgpOworICAgIHZvaWQgZGVjcmVtZW50KCk7CisgICAgdm9p
ZCBzaG93TWVudSgpOworICAgIHZvaWQgcHJlc3MoKTsKKworICAgIC8vIEF0dHJpYnV0ZXMgLSBw
bGF0Zm9ybS1pbmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gc3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKKyAg
ICBkb3VibGUgbnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKKyAg
ICBib29sIGJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOworICAgIGJv
b2wgaXNBdHRyaWJ1dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKKyAgICBib29s
IGlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKKyAgICBib29sIGlz
QWN0aW9uU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGFjdGlvbik7CisgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IHJvbGUoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3Vicm9sZSgp
OworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByb2xlRGVzY3JpcHRpb24oKTsKKyAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdGl0bGUoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gZGVzY3JpcHRpb24oKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbGFuZ3Vh
Z2UoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nVmFsdWUoKTsKKyAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYWNjZXNzaWJpbGl0eVZhbHVlKCkgY29uc3Q7CisgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGhlbHBUZXh0KCkgY29uc3Q7CisgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IG9yaWVudGF0aW9uKCkgY29uc3Q7CisgICAgZG91YmxlIHgoKTsKKyAg
ICBkb3VibGUgeSgpOworICAgIGRvdWJsZSB3aWR0aCgpOworICAgIGRvdWJsZSBoZWlnaHQoKTsK
KyAgICBkb3VibGUgaW50VmFsdWUoKSBjb25zdDsKKyAgICBkb3VibGUgbWluVmFsdWUoKTsKKyAg
ICBkb3VibGUgbWF4VmFsdWUoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdmFsdWVE
ZXNjcmlwdGlvbigpOworICAgIGludCBpbnNlcnRpb25Qb2ludExpbmVOdW1iZXIoKTsKKyAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2VsZWN0ZWRUZXh0UmFuZ2UoKTsKKyAgICBib29sIGlz
RW5hYmxlZCgpOworICAgIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0OworICAgIAorICAgIGJvb2wg
aXNGb2N1c2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc0ZvY3VzYWJsZSgpIGNvbnN0OworICAgIGJv
b2wgaXNTZWxlY3RlZCgpIGNvbnN0OworICAgIGJvb2wgaXNTZWxlY3RhYmxlKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0OworICAgIHZvaWQgc2V0U2VsZWN0ZWRD
aGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KikgY29uc3Q7CisgICAgdW5zaWduZWQgc2VsZWN0
ZWRDaGlsZHJlbkNvdW50KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCkgY29uc3Q7CisgICAgCisgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3Q7CisgICAgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3Q7CisgICAg
Ym9vbCBpc0NoZWNrZWQoKSBjb25zdDsKKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0OworICAg
IGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdDsKKyAgICBib29sIGlzQ29sbGFwc2VkKCkgY29uc3Q7
CisgICAgYm9vbCBpc0lnbm9yZWQoKSBjb25zdDsKKyAgICBib29sIGhhc1BvcHVwKCkgY29uc3Q7
CisgICAgaW50IGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3Q7CisgICAgZG91YmxlIGNsaWNrUG9p
bnRYKCk7CisgICAgZG91YmxlIGNsaWNrUG9pbnRZKCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGRvY3VtZW50RW5jb2RpbmcoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
ZG9jdW1lbnRVUkkoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdXJsKCk7CisKKyAg
ICAvLyBDU1MzLXNwZWVjaCBwcm9wZXJ0aWVzLgorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBzcGVhaygpOworICAgIAorICAgIC8vIFRhYmxlLXNwZWNpZmljIGF0dHJpYnV0ZXMKKyAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpOworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCk7CisgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZXNPZkNvbHVtbnMoKTsKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mUm93cygpOworICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMoKTsKKyAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlc09mSGVhZGVyKCk7CisgICAgaW50IGluZGV4SW5UYWJs
ZSgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByb3dJbmRleFJhbmdlKCk7CisgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNvbHVtbkluZGV4UmFuZ2UoKTsKKyAgICBpbnQgcm93
Q291bnQoKTsKKyAgICBpbnQgY29sdW1uQ291bnQoKTsKKyAgICAKKyAgICAvLyBUcmVlL091dGxp
bmUgc3BlY2lmaWMgYXR0cmlidXRlcworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gc2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IGRpc2Nsb3NlZEJ5Um93KCk7CisgICAgUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBkaXNjbG9zZWRSb3dBdEluZGV4KHVuc2lnbmVkKTsKKworICAg
IC8vIEFSSUEgc3BlY2lmaWMKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IGFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQpOworICAgIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gYXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkKTsKKwor
ICAgIC8vIEFSSUEgRHJhZyBhbmQgRHJvcAorICAgIGJvb2wgYXJpYUlzR3JhYmJlZCgpIGNvbnN0
OworICAgIC8vIEEgc3BhY2UgY29uY2F0ZW50YXRlZCBzdHJpbmcgb2YgYWxsIHRoZSBkcm9wIGVm
ZmVjdHMuCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFyaWFEcm9wRWZmZWN0cygpIGNv
bnN0OworICAgIAorICAgIC8vIFBhcmFtZXRlcml6ZWQgYXR0cmlidXRlcworICAgIGludCBsaW5l
Rm9ySW5kZXgoaW50KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcmFuZ2VGb3JMaW5l
KGludCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGJvdW5kc0ZvclJhbmdlKHVuc2ln
bmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0
UmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IHN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVkU3RyaW5n
Rm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgYm9vbCBh
dHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQodW5zaWduZWQgbG9jYXRpb24sIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVs
ZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogc3RhcnRFbGVt
ZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwgSlNTdHJpbmdSZWYgc2VhcmNoS2V5LCBKU1N0cmlu
Z1JlZiBzZWFyY2hUZXh0KTsKKyAgICAKKyAgICAvLyBUYWJsZS1zcGVjaWZpYworICAgIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25l
ZCBjb2x1bW4sIHVuc2lnbmVkIHJvdyk7CisKKyAgICAvLyBTY3JvbGxhcmVhLXNwZWNpZmljCisg
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBob3Jpem9udGFsU2Nyb2xsYmFy
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB2ZXJ0aWNh
bFNjcm9sbGJhcigpIGNvbnN0OworCisgICAgLy8gVGV4dCBtYXJrZXJzLgorICAgIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gdGV4dE1hcmtlclJhbmdlRm9yRWxlbWVu
dChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kik7ICAgIAorICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gdGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRN
YXJrZXIpOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7
CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CisgICAgUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gdGV4dE1hcmtlckZvclBvaW50KGludCB4
LCBpbnQgeSk7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gcHJldmlv
dXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CisgICAgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gbmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOworICAgIGludCB0ZXh0TWFya2VyUmFuZ2VMZW5ndGgo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOworICAgIAorICAgIC8vIE5vdGlmaWNhdGlv
bnMKKyAgICAvLyBGdW5jdGlvbiBjYWxsYmFjayBzaG91bGQgdGFrZSBvbmUgYXJndW1lbnQsIHRo
ZSBuYW1lIG9mIHRoZSBub3RpZmljYXRpb24uCisgICAgYm9vbCBhZGROb3RpZmljYXRpb25MaXN0
ZW5lcihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spOworICAgIC8vIE1ha2Ugc3VyZSB5b3Ug
Y2FsbCByZW1vdmUsIGJlY2F1c2UgeW91IGNhbid0IHJlbHkgb24gb2JqZWN0cyBiZWluZyBkZWFs
bG9jYXRlZCBpbiBhIHRpbWVseSBmYXNoaW9uLgorICAgIGJvb2wgcmVtb3ZlTm90aWZpY2F0aW9u
TGlzdGVuZXIoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudChQ
bGF0Zm9ybVVJRWxlbWVudCk7CisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Jik7CisKKyAgICBQbGF0Zm9ybVVJRWxlbWVudCBtX2VsZW1lbnQ7
CisgICAgCisgICAgLy8gQSByZXRhaW5lZCwgcGxhdGZvcm0gc3BlY2lmaWMgb2JqZWN0IHVzZWQg
dG8gaGVscCBtYW5hZ2Ugbm90aWZpY2F0aW9ucyBmb3IgdGhpcyBvYmplY3QuCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIE5vdGlmaWNhdGlvbkhhbmRsZXIgbV9ub3RpZmljYXRpb25IYW5kbGVyOwor
CisgICAgdm9pZCBnZXRMaW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gPiYpOworICAgIHZvaWQgZ2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKKyAgICB2b2lkIGdldENoaWxkcmVuKFZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOworICAgIHZvaWQgZ2V0Q2hpbGRy
ZW5XaXRoUmFuZ2UoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiwgdW5z
aWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CisjZW5kaWYKK307CisgICAgCit9IC8v
IG5hbWVzcGFjZSBXVFIKKyAgICAKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50X2gK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9u
IDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw0ICs2NSwxMCBA
QAogICAgIHJldHVybiB1cmw7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gcGxhdGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Z3RrIikpOworICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdU
UgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwCShyZXZp
c2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCIKKworI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRy
Lmg+CisKK25hbWVzcGFjZSBXVFIgeworICAgIAorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoUGxhdGZv
cm1UZXh0TWFya2VyUmFuZ2UgbWFya2VyUmFuZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSk7Cit9CisKK1Bhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZTo6Y3JlYXRlKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UmIG1hcmtl
clJhbmdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZShtYXJrZXJSYW5nZSkpOworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIG1h
cmtlclJhbmdlKQorICAgIDogbV90ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpCit7Cit9CisK
K0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSYgbWFya2VyUmFuZ2UpCisgICAg
OiBtX3RleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZS5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgp
KQoreworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSgpCit7Cit9CisKK1BsYXRmb3JtVGV4dE1hcmtlclJhbmdlIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCkgY29uc3QKK3sK
KyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0dXJuIG1fdGV4dE1hcmtlclJhbmdlLmdldCgpOwor
I2Vsc2UKKyAgICByZXR1cm4gbV90ZXh0TWFya2VyUmFuZ2U7CisjZW5kaWYKK30KKyAgICAKK0pT
Q2xhc3NSZWYgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6d3JhcHBlckNsYXNzKCkKK3sK
KyAgICByZXR1cm4gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjphY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlQ2xhc3MoKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdUUgorCklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9MYXlvdXRUZXN0
Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiA5
OTEyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNCArNjQsMTAgQEAK
ICAgICByZXR1cm4gSlNTdHJpbmdSZXRhaW4odXJsKTsgLy8gVE9ETy4KIH0KIAorSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUoKQorewor
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUoQWRvcHQsIEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ3aW4iKSk7CisgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmlkbAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
aWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIFdU
UiB7CisKKyAgICBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgeworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCByb290RWxlbWVudDsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZm9jdXNlZEVs
ZW1lbnQ7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxlbWVudEF0UG9pbnQoaW4g
aW50IHgsIGluIGludCB5KTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgYWRkTm90aWZpY2F0aW9u
TGlzdGVuZXIoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50LCBpbiBvYmplY3QgZnVu
Y3Rpb25DYWxsYmFjayk7CisgICAgICAgIHZvaWQgbm90aWZpY2F0aW9uUmVjZWl2ZWQoaW4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50LCBpbiBET01TdHJpbmcgZXZlbnROYW1lKTsKKwor
ICAgICAgICB2b2lkIGxvZ0ZvY3VzRXZlbnRzKCk7CisgICAgICAgIHZvaWQgbG9nVmFsdWVDaGFu
Z2VFdmVudHMoKTsKKyAgICAgICAgdm9pZCBsb2dTY3JvbGxpbmdTdGFydEV2ZW50cygpOworICAg
ICAgICB2b2lkIGxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKTsKKyAgICAgICAgdm9pZCByZXNldFRv
Q29uc2lzdGVudFN0YXRlKCk7CisgICAgfTsKKworfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRsCShyZXZpc2lvbiAwKQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK21vZHVsZSBXVFIgeworCisgICAgaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UgeworICAgICAgICBib29sZWFuIGlzRXF1YWwoaW4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSBvdGhlck1hcmtlclJhbmdlKTsKKyAgICB9OworCit9CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbAkocmV2aXNp
b24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworbW9kdWxlIFdUUiB7CisKKyAgICBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgeworICAgICAgICBib29sZWFuIGlzRXF1YWwoaW4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIgb3RoZXJNYXJrZXIpOworICAgIH07CisKK30KSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
bW9kdWxlIFdUUiB7CisKKyAgICBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB7Cisg
ICAgICAgIGJvb2xlYW4gaXNFcXVhbChpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IG90aGVyRWxl
bWVudCk7CisKKyAgICAgICAgLy8gRWxlbWVudCBhY2Nlc3MuCisgICAgICAgIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQgZWxlbWVudEF0UG9pbnQoaW4gaW50IHgsIGluIGludCB5KTsKKyAgICAgICAg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCBjaGlsZEF0SW5kZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRl
eCk7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgaW5kZXhPZkNoaWxkKGluIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgY2hpbGQpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGxpbmtlZFVJ
RWxlbWVudEF0SW5kZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQgc2VsZWN0ZWRDaGlsZEF0SW5kZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRl
eCk7CisgICAgICAgIHZvaWQgc2V0U2VsZWN0ZWRDaGlsZChpbiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50IGVsZW1lbnQpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHRpdGxlVUlFbGVt
ZW50KCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgcGFyZW50RWxlbWVudCgpOwor
ICAgICAgICAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyByb2xlOworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHN1YnJvbGU7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcm9sZURlc2NyaXB0aW9uOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRpdGxlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGRlc2NyaXB0aW9uOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGxhbmd1YWdlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhlbHBU
ZXh0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlRGVzY3JpcHRp
b247CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJsOworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNwZWFrOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIG9yaWVudGF0aW9uOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
aW50IGluc2VydGlvblBvaW50TGluZU51bWJlcjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBzZWxlY3RlZFRleHRSYW5nZTsKKyAgICAKKyAgICAgICAgRE9NU3RyaW5nIHN0
cmluZ0F0dHJpYnV0ZVZhbHVlKGluIERPTVN0cmluZyBhdHRyKTsKKyAgICAgICAgZG91YmxlIG51
bWJlckF0dHJpYnV0ZVZhbHVlKGluIERPTVN0cmluZyBhdHRyKTsKKyAgICAgICAgYm9vbGVhbiBi
b29sQXR0cmlidXRlVmFsdWUoaW4gRE9NU3RyaW5nIGF0dHIpOworICAgICAgICBib29sZWFuIGlz
QXR0cmlidXRlU3VwcG9ydGVkKGluIERPTVN0cmluZyBhdHRyKTsKKyAgICAgICAgYm9vbGVhbiBp
c0F0dHJpYnV0ZVNldHRhYmxlKGluIERPTVN0cmluZyBhdHRyKTsKKyAgICAgICAgYm9vbGVhbiBp
c0FjdGlvblN1cHBvcnRlZChpbiBET01TdHJpbmcgYXR0cik7CisKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBzdHJpbmdWYWx1ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGludCBpbnRWYWx1ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBtaW5WYWx1
ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBtYXhWYWx1ZTsKKyAgICAgICAgCisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRW5hYmxlZDsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNSZXF1aXJlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gaXNGb2N1c2VkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBpc1NlbGVjdGVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc011
bHRpU2VsZWN0YWJsZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNFeHBh
bmRlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNDaGVja2VkOworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1Zpc2libGU7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzQ29sbGFwc2VkOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBoYXNQb3B1cDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gaXNJZ25vcmVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc09mZlNj
cmVlbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNWYWxpZDsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBoaWVyYXJjaGljYWxMZXZlbDsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYXJpYUlzR3JhYmJlZDsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBhcmlhRHJvcEVmZmVjdHM7CisgICAgICAgIAorICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgaW50IHg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQg
eTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCB3aWR0aDsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGludCBoZWlnaHQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQg
Y2xpY2tQb2ludFg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbnQgY2xpY2tQb2ludFk7
CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGludCBjaGlsZHJlbkNvdW50OworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgaW50IHNlbGVjdGVkQ2hpbGRyZW5Db3VudDsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGludCByb3dDb3VudDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGludCBjb2x1bW5Db3VudDsKKworICAgICAgICAvLyBBY3Rpb25zLgorICAgICAgICB2b2lk
IGluY3JlbWVudCgpOworICAgICAgICB2b2lkIGRlY3JlbWVudCgpOworICAgICAgICB2b2lkIHBy
ZXNzKCk7CisgICAgICAgIHZvaWQgc2hvd01lbnUoKTsKKworICAgICAgICAvLyBBdHRyaWJ1dGUg
aW5mby4KKyAgICAgICAgRE9NU3RyaW5nIGFsbEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgRE9NU3Ry
aW5nIGF0dHJpYnV0ZXNPZkNoaWxkcmVuKCk7CisgICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVz
T2ZMaW5rZWRVSUVsZW1lbnRzKCk7CisgICAgICAgIERPTVN0cmluZyBhdHRyaWJ1dGVzT2ZEb2N1
bWVudExpbmtzKCk7CisgICAgICAgIAorICAgICAgICAvLyBUYWJsZSBpbmZvLgorICAgICAgICBE
T01TdHJpbmcgYXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpOworICAgICAgICBET01TdHJpbmcg
YXR0cmlidXRlc09mUm93SGVhZGVycygpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09m
Q29sdW1ucygpOworICAgICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mUm93cygpOworICAgICAg
ICBET01TdHJpbmcgYXR0cmlidXRlc09mVmlzaWJsZUNlbGxzKCk7CisgICAgICAgIERPTVN0cmlu
ZyBhdHRyaWJ1dGVzT2ZIZWFkZXIoKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBj
ZWxsRm9yQ29sdW1uQW5kUm93KGluIHVuc2lnbmVkIGxvbmcgY29sdW1uLCBpbiB1bnNpZ25lZCBs
b25nIHJvdyk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgc2VsZWN0ZWRSb3dBdElu
ZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50IGRpc2Nsb3NlZEJ5Um93KCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZGlz
Y2xvc2VkUm93QXRJbmRleChpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICAgICAgaW50IGlu
ZGV4SW5UYWJsZSgpOworICAgICAgICBET01TdHJpbmcgcm93SW5kZXhSYW5nZSgpOworICAgICAg
ICBET01TdHJpbmcgY29sdW1uSW5kZXhSYW5nZSgpOworICAgICAgICBpbnQgcm93Q291bnQoKTsK
KyAgICAgICAgaW50IGNvbHVtbkNvdW50KCk7CisgICAgCisgICAgICAgIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgYXJpYU93bnNFbGVtZW50QXRJbmRleChpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsK
KyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBhcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgo
aW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisKKyAgICAgICAgLy8gUGFyYW1hdGVyaXplZCBhdHRy
aWJ1dGVzLgorICAgICAgICBET01TdHJpbmcgcGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCk7
CisgICAgICAgIGludCBsaW5lRm9ySW5kZXgoaW4gaW50IGluZGV4KTsKKyAgICAgICAgRE9NU3Ry
aW5nIHJhbmdlRm9yTGluZShpbiBpbnQgaW5kZXgpOworICAgICAgICBET01TdHJpbmcgYm91bmRz
Rm9yUmFuZ2UoaW4gdW5zaWduZWQgbG9uZyBsb2NhdGlvbiwgaW4gdW5zaWduZWQgbG9uZyBsZW5n
dGgpOworICAgICAgICBET01TdHJpbmcgc3RyaW5nRm9yUmFuZ2UoaW4gdW5zaWduZWQgbG9uZyBs
b2NhdGlvbiwgaW4gdW5zaWduZWQgbG9uZyBsZW5ndGgpOworICAgICAgICBET01TdHJpbmcgYXR0
cmlidXRlZFN0cmluZ0ZvclJhbmdlKGluIHVuc2lnbmVkIGxvbmcgbG9jYXRpb24sIGluIHVuc2ln
bmVkIGxvbmcgbGVuZ3RoKTsKKyAgICAgICAgYm9vbGVhbiBhdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJ
c01pc3NwZWxsZWQoaW4gdW5zaWduZWQgbG9uZyBsb2NhdGlvbiwgaW4gdW5zaWduZWQgbG9uZyBs
ZW5ndGgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHVpRWxlbWVudEZvclNlYXJj
aFByZWRpY2F0ZShpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHN0YXJ0RWxlbWVudCwgaW4gYm9v
bGVhbiBpc0RpcmVjdGlvbk5leHQsIGluIERPTVN0cmluZyBzZWFyY2hLZXksIGluIERPTVN0cmlu
ZyBzZWFyY2hUZXh0KTsKKyAgICAgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShpbiB1bnNp
Z25lZCBsb25nIGxvY2F0aW9uLCBpbiB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CisKKyAgICAgICAg
Ly8gU2Nyb2xsIGFyZWEgYXR0cmlidXRlcy4KKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQgaG9yaXpvbnRhbFNjcm9sbGJhcjsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgdmVydGljYWxTY3JvbGxiYXI7CisK
KyAgICAgICAgLy8gVGV4dCBtYXJrZXJzLgorICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlIHRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCBlbGVtZW50KTsgICAgCisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgdGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhpbiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBzdGFydE1h
cmtlciwgaW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgZW5kTWFya2VyKTsKKyAgICAgICAgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKGlu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgcmFuZ2UpOworICAgICAgICBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciBlbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKGluIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UgcmFuZ2UpOworICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciB0ZXh0TWFya2VyRm9yUG9pbnQoaW4gaW50IHgsIGluIGludCB5KTsKKyAgICAgICAgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgcHJldmlvdXNUZXh0TWFya2VyKGluIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyIG1hcmtlcik7CisgICAgICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIG5leHRU
ZXh0TWFya2VyKGluIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIG1hcmtlcik7CisgICAgICAgIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQgYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGlu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIG1hcmtlcik7CisgICAgICAgIERPTVN0cmluZyBzdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UoaW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSByYW5n
ZSk7CisgICAgICAgIGludCB0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoaW4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSByYW5nZSk7CisKKyAgICAgICAgLy8gTm90aWZpY2F0aW9uIHN1cHBvcnQu
CisgICAgICAgIGJvb2xlYW4gYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoaW4gb2JqZWN0IGNhbGxi
YWNrRnVuY3Rpb24pOworICAgICAgICBib29sZWFuIHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVy
KCk7CisgICAgICAgIAorICAgIH07CisKK30KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiA5OTEyOCkKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDggQEAKICAgICAgICAgdm9pZCBzZXRCYWNr
aW5nU2NhbGVGYWN0b3IoaW4gZG91YmxlIGJhY2tpbmdTY2FsZUZhY3RvciwgaW4gb2JqZWN0IGNh
bGxiYWNrKTsKIAogICAgICAgICB2b2lkIHNldFdpbmRvd0lzS2V5KGluIGJvb2xlYW4gaXNLZXkp
OworICAgICAgICAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwbGF0Zm9y
bU5hbWU7CiAgICAgfTsKIAogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNp
b24gOTkxMjgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1NSw2ICs2NTUsOCBAQAogICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5nY0NvbnRyb2xsZXIoKS0+bWFrZVdpbmRvd09iamVj
dChjb250ZXh0LCB3aW5kb3csICZleGNlcHRpb24pOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5ldmVudFNlbmRpbmdDb250cm9sbGVyKCktPm1ha2VXaW5kb3dPYmplY3QoY29udGV4dCwg
d2luZG93LCAmZXhjZXB0aW9uKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkudGV4dElu
cHV0Q29udHJvbGxlcigpLT5tYWtlV2luZG93T2JqZWN0KGNvbnRleHQsIHdpbmRvdywgJmV4Y2Vw
dGlvbik7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKCktPm1ha2VXaW5kb3dPYmplY3QoY29udGV4dCwgd2luZG93LCAmZXhjZXB0aW9uKTsKKwog
I2lmIFBMQVRGT1JNKFFUKQogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjppbmplY3RJbnRl
cm5hbHNPYmplY3QoY29udGV4dCk7CiAjZWxzZQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlz
aW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw2ICsxOTIsNyBAQAogICAgIG1f
Z2NDb250cm9sbGVyID0gR0NDb250cm9sbGVyOjpjcmVhdGUoKTsKICAgICBtX2V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIgPSBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjcmVhdGUoKTsKICAgICBtX3Rl
eHRJbnB1dENvbnRyb2xsZXIgPSBUZXh0SW5wdXRDb250cm9sbGVyOjpjcmVhdGUoKTsKKyAgICBt
X2FjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNyZWF0
ZSgpOwogCiAgICAgV0tCdW5kbGVTZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhtX2J1bmRsZSwg
ZmFsc2UpOwogICAgIFdLQnVuZGxlUmVtb3ZlQWxsVmlzaXRlZExpbmtzKG1fYnVuZGxlKTsKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5t
bQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oIgorCituYW1lc3BhY2Ug
V1RSIHsKKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVhbChB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBvdGhlcikKK3sKKyAgICByZXR1cm4gWyhpZClw
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGlzRXF1YWw6KGlkKW90aGVyLT5wbGF0Zm9ybVRleHRN
YXJrZXJSYW5nZSgpXTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdUUgorCkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbQkocmV2aXNpb24gMCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyTWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyLmgiCisKK25hbWVzcGFjZSBXVFIgeworCitib29sIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBvdGhlcikKK3sKKyAg
ICByZXR1cm4gWyhpZClwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFsOihpZClvdGhlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKKwpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiAwKQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDMzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgorI2ltcG9ydCAiSW5qZWN0ZWRCdW5k
bGUuaCIKKyNpbXBvcnQgIkluamVjdGVkQnVuZGxlUGFnZS5oIgorCisjaW1wb3J0IDxBcHBLaXQv
TlNBY2Nlc3NpYmlsaXR5Lmg+CisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU1N0cmluZ1JlZi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZD
Ri5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS0J1bmRsZUZyYW1lLmg+CisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKKworI2lmbmRlZiBOU0FjY2Vzc2li
aWxpdHlPd25zQXR0cmlidXRlCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGUg
QCJBWE93bnMiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlHcmFiYmVkQXR0cmli
dXRlCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGUgQCJBWEdyYWJiZWQi
CisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0ZQor
I2RlZmluZSBOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0ZSBAIkFYRHJvcEVmZmVj
dHMiCisjZW5kaWYKKworLy8gSWYgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIGlzIHBhc3NlZCBp
biwgaXQgd2lsbCByYWlzZSBhbiBhY2Nlc3NpYmlsaXR5IGV4Y2VwdGlvbi4gVGhlc2UgYXJlIHVz
dWFsbHkgY2F1Z2h0IGJ5IHRoZSBBY2Nlc3NpYmlsaXR5IFJ1bnRpbWUgdG8gaW5mb3JtCisvLyB0
aGUgQVggY2xpZW50IGFwcCBvZiB0aGUgZXJyb3IuIEhvd2V2ZXIsIERSVCBpcyB0aGUgQVggY2xp
ZW50IGFwcCwgc28gaXQgbXVzdCBjYXRjaCB0aGVzZSBleGNlcHRpb25zLgorI2RlZmluZSBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMgQHRyeSB7CisjZGVmaW5lIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmUpIHsgaWYgKCFbW2UgbmFtZV0gaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbl0pIEB0aHJvdzsgfQorCisKK3R5cGVkZWYgdm9p
ZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5nKiBu
b3RpZmljYXRpb24sIHZvaWQqIGNvbnRleHQpOworCitAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJL
aXRBY2Nlc3NpYmlsaXR5QWRkaXRpb25zKQorLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlBcnJh
eUF0dHJpYnV0ZVZhbHVlczooTlNTdHJpbmcgKilhdHRyaWJ1dGUgaW5kZXg6KE5TVUludGVnZXIp
aW5kZXggbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQ7CistICh2b2lkKWFjY2Vzc2liaWxp
dHlTZXRTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zOihCT09MKXJlcG9zdDsKKy0gKE5TVUludGVn
ZXIpYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGlsZDooaWQpY2hpbGQ7CistIChOU1VJbnRlZ2VyKWFj
Y2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKK0Bl
bmQKKworQGludGVyZmFjZSBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCisrIChOU1N0
cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWY7Cist
IChKU1N0cmluZ1JlZiljcmVhdGVKU1N0cmluZ1JlZjsKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKKworKyAoTlNTdHJpbmcgKilzdHJpbmdX
aXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCit7CisgICAgaWYgKCFqc1N0
cmluZ1JlZikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgCisgICAgQ0ZTdHJpbmdSZWYgY2ZT
dHJpbmcgPSBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmlu
Z1JlZik7CisgICAgcmV0dXJuIFsoTlNTdHJpbmcgKiljZlN0cmluZyBhdXRvcmVsZWFzZV07Cit9
CisKKy0gKEpTU3RyaW5nUmVmKWNyZWF0ZUpTU3RyaW5nUmVmCit7CisgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilzZWxmKTsKK30KKworQGVuZAorCitA
aW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIDogTlNPYmplY3QKK3sK
KyAgICBpZCBtX3BsYXRmb3JtRWxlbWVudDsKKyAgICBKU1ZhbHVlUmVmIG1fbm90aWZpY2F0aW9u
RnVuY3Rpb25DYWxsYmFjazsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIKKworLSAoaWQpaW5pdFdpdGhQbGF0Zm9ybUVsZW1lbnQ6
KGlkKXBsYXRmb3JtRWxlbWVudAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisKKyAgICBt
X3BsYXRmb3JtRWxlbWVudCA9IHBsYXRmb3JtRWxlbWVudDsKKyAgICAKKyAgICAvLyBPbmNlIGFu
IG9iamVjdCBzdGFydHMgcmVxdWVzdGluZyBub3RpZmljYXRpb25zLCBpdCdzIG9uIGZvciB0aGUg
ZHVyYXRpb24gb2YgdGhlIHByb2dyYW0uCisgICAgLy8gVGhpcyBpcyB0byBhdm9pZCBhbnkgcmFj
ZSBjb25kaXRpb25zIGJldHdlZW4gdGVzdHMgdHVybmluZyB0aGlzIGZsYWcgb24gYW5kIG9mZi4g
SW5zdGVhZAorICAgIC8vIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGNhbiBqdXN0
IGxpc3RlbiB3aGVuIHRoZXkgd2FudCB0by4KKyAgICBbbV9wbGF0Zm9ybUVsZW1lbnQgYWNjZXNz
aWJpbGl0eVNldFNob3VsZFJlcG9zdE5vdGlmaWNhdGlvbnM6WUVTXTsKKyAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKF9ub3RpZmljYXRpb25SZWNlaXZlZDopIG5hbWU6QCJBWERSVE5vdGlmaWNhdGlvbiIg
b2JqZWN0Om5pbF07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKyAKKy0gKHZvaWQpZGVhbGxvYwor
eworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2
ZXI6c2VsZl07CisKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFn
ZUdldE1haW5GcmFtZShXVFI6OkluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2Uo
KSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlw
dENvbnRleHQobWFpbkZyYW1lKTsKKyAgICAKKyAgICBKU1ZhbHVlVW5wcm90ZWN0KGNvbnRleHQs
IG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayk7CisgICAgbV9ub3RpZmljYXRpb25GdW5j
dGlvbkNhbGxiYWNrID0gMDsKKyAgICAKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZv
aWQpX25vdGlmaWNhdGlvblJlY2VpdmVkOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgor
eworICAgIE5TU3RyaW5nICpub3RpZmljYXRpb25OYW1lID0gW1tub3RpZmljYXRpb24gdXNlcklu
Zm9dIG9iamVjdEZvcktleTpAIm5vdGlmaWNhdGlvbk5hbWUiXTsKKyAgICBpZiAoIW5vdGlmaWNh
dGlvbk5hbWUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1h
aW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShXVFI6OkluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1
bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKworICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBqc05vdGlmaWNhdGlvbihBZG9wdCwgW25vdGlmaWNhdGlvbk5hbWUg
Y3JlYXRlSlNTdHJpbmdSZWZdKTsKKyAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50ID0gSlNWYWx1ZU1h
a2VTdHJpbmcoY29udGV4dCwganNOb3RpZmljYXRpb24uZ2V0KCkpOworICAgIEpTT2JqZWN0Q2Fs
bEFzRnVuY3Rpb24oY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4obV9ub3RpZmljYXRp
b25GdW5jdGlvbkNhbGxiYWNrKSwgMCwgMSwgJmFyZ3VtZW50LCAwKTsKK30KKworLSAodm9pZClz
ZXRDYWxsYmFjazooSlNWYWx1ZVJlZiljYWxsYmFjaworeworICAgIGlmICghY2FsbGJhY2spCisg
ICAgICAgIHJldHVybjsKKyAKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVu
ZGxlUGFnZUdldE1haW5GcmFtZShXVFI6OkluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCkt
PnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2
YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKworICAgIC8vIFJlbGVhc2UgdGhlIG9sZCBjYWxs
YmFjay4KKyAgICBpZiAobV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKSAKKyAgICAgICAg
SlNWYWx1ZVVucHJvdGVjdChjb250ZXh0LCBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2sp
OworICAgIAorICAgIG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayA9IGNhbGxiYWNrOwor
ICAgIEpTVmFsdWVQcm90ZWN0KGNvbnRleHQsIG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFj
ayk7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdUUiB7CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKKyAg
ICA6IG1fZWxlbWVudChlbGVtZW50KQorICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCit7
CisgICAgLy8gRklYTUU6IGFwQHdlYmtpdC5vcmcgc2F5cyBPYmpDIG9iamVjdHMgbmVlZCB0byBi
ZSBDRlJldGFpbmVkL0NGUmVsZWFzZSB0byBiZSBHQy1jb21wbGlhbnQgb24gdGhlIG1hYy4KKyAg
ICBbbV9lbGVtZW50IHJldGFpbl07Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgb3RoZXIpCisg
ICAgOiBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQorICAgICwgbV9ub3RpZmljYXRpb25IYW5k
bGVyKDApCit7CisgICAgW21fZWxlbWVudCByZXRhaW5dOworfQorCitBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCit7CisgICAgLy8gVGhlIG5vdGlmaWNh
dGlvbiBoYW5kbGVyIHNob3VsZCBiZSBuaWwgYmVjYXVzZSByZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lcigpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGluIHRoZSB0ZXN0LgorICAgIEFTU0VSVCgh
bV9ub3RpZmljYXRpb25IYW5kbGVyKTsKKyAgICBbbV9lbGVtZW50IHJlbGVhc2VdOworfQorCiti
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCogb3RoZXJFbGVtZW50KQoreworICAgIHJldHVybiBwbGF0Zm9ybVVJRWxlbWVudCgpID09IG90
aGVyRWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKTsKK30KKyAgICAKK3N0YXRpYyBOU1N0cmlu
ZyogZGVzY3JpcHRpb25PZlZhbHVlKGlkIHZhbHVlT2JqZWN0LCBpZCBmb2N1c2VkQWNjZXNzaWJp
bGl0eU9iamVjdCkKK3sKKyAgICBpZiAoIXZhbHVlT2JqZWN0KQorICAgICAgICByZXR1cm4gTlVM
TDsKKworICAgIGlmIChbdmFsdWVPYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11d
KQorICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8YXJyYXkgb2Yg
c2l6ZSAlZD4iLCBbKE5TQXJyYXkqKXZhbHVlT2JqZWN0IGNvdW50XV07CisKKyAgICBpZiAoW3Zh
bHVlT2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVy
biBbKE5TTnVtYmVyKil2YWx1ZU9iamVjdCBzdHJpbmdWYWx1ZV07CisKKyAgICBpZiAoW3ZhbHVl
T2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSkgeworICAgICAgICBOU1N0cmlu
ZyogdHlwZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpbdmFsdWVPYmplY3Qgb2JqQ1R5
cGVdIGVuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ107CisgICAgICAgIE5TVmFsdWUqIHZh
bHVlID0gKE5TVmFsdWUqKXZhbHVlT2JqZWN0OworICAgICAgICBpZiAoW3R5cGUgcmFuZ2VPZlN0
cmluZzpAIk5TUmVjdCJdLmxlbmd0aCA+IDApCisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJOU1JlY3Q6ICVAIiwgTlNTdHJpbmdGcm9tUmVjdChbdmFsdWUg
cmVjdFZhbHVlXSldOworICAgICAgICBpZiAoW3R5cGUgcmFuZ2VPZlN0cmluZzpAIk5TUG9pbnQi
XS5sZW5ndGggPiAwKQorICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiTlNQb2ludDogJUAiLCBOU1N0cmluZ0Zyb21Qb2ludChbdmFsdWUgcG9pbnRWYWx1ZV0p
XTsKKyAgICAgICAgaWYgKFt0eXBlIHJhbmdlT2ZTdHJpbmc6QCJOU1NpemUiXS5sZW5ndGggPiAw
KQorICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTlNTaXpl
OiAlQCIsIE5TU3RyaW5nRnJvbVNpemUoW3ZhbHVlIHNpemVWYWx1ZV0pXTsKKyAgICAgICAgaWYg
KFt0eXBlIHJhbmdlT2ZTdHJpbmc6QCJOU1JhbmdlIl0ubGVuZ3RoID4gMCkKKyAgICAgICAgICAg
IHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIk5TUmFuZ2U6ICVAIiwgTlNTdHJp
bmdGcm9tUmFuZ2UoW3ZhbHVlIHJhbmdlVmFsdWVdKV07CisgICAgfQorCisgICAgLy8gU3RyaXAg
YWJzb2x1dGUgVVJMIHBhdGhzCisgICAgTlNTdHJpbmcqIGRlc2NyaXB0aW9uID0gW3ZhbHVlT2Jq
ZWN0IGRlc2NyaXB0aW9uXTsKKyAgICBOU1JhbmdlIHJhbmdlID0gW2Rlc2NyaXB0aW9uIHJhbmdl
T2ZTdHJpbmc6QCJMYXlvdXRUZXN0cyJdOworICAgIGlmIChyYW5nZS5sZW5ndGgpCisgICAgICAg
IHJldHVybiBbZGVzY3JpcHRpb24gc3Vic3RyaW5nRnJvbUluZGV4OnJhbmdlLmxvY2F0aW9uXTsK
KworICAgIC8vIFN0cmlwIHBvaW50ZXIgbG9jYXRpb25zCisgICAgaWYgKFtkZXNjcmlwdGlvbiBy
YW5nZU9mU3RyaW5nOkAiMHgiXS5sZW5ndGgpIHsKKyAgICAgICAgTlNTdHJpbmcqIHJvbGUgPSBb
Zm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdOworICAgICAgICBOU1N0cmluZyogdGl0bGUgPSBb
Zm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlXTsKKyAgICAgICAgaWYgKFt0aXRsZSBsZW5ndGhd
KQorICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAn
JUAnPiIsIHJvbGUsIHRpdGxlXTsKKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiPCVAPiIsIHJvbGVdOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gW3ZhbHVlT2Jq
ZWN0IGRlc2NyaXB0aW9uXTsKK30KKworc3RhdGljIE5TU3RyaW5nKiBhdHRyaWJ1dGVzT2ZFbGVt
ZW50KGlkIGFjY2Vzc2liaWxpdHlPYmplY3QpCit7CisgICAgTlNBcnJheSogc3VwcG9ydGVkQXR0
cmlidXRlcyA9IFthY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1l
c107CisKKyAgICBOU011dGFibGVTdHJpbmcqIGF0dHJpYnV0ZXNTdHJpbmcgPSBbTlNNdXRhYmxl
U3RyaW5nIHN0cmluZ107CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3N1cHBvcnRl
ZEF0dHJpYnV0ZXMgY291bnRdOyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcqIGF0dHJpYnV0ZSA9
IFtzdXBwb3J0ZWRBdHRyaWJ1dGVzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgIAorICAgICAg
ICAvLyBSaWdodCBub3csIHBvc2l0aW9uIHByb3ZpZGVzIHVzZWxlc3MgYW5kIHNjcmVlbi1zcGVj
aWZpYyBpbmZvcm1hdGlvbiwgc28gd2UgZG8gbm90CisgICAgICAgIC8vIHdhbnQgdG8gaW5jbHVk
ZSBpdCBmb3IgdGhlIHNha2Ugb2YgdW5pdmVyc2FsbHkgcGFzc2luZyB0ZXN0cy4KKyAgICAgICAg
aWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhQb3NpdGlvbiJdKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICAvLyBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6IGNhbiB0aHJvdyBhbiBpZiBhbiBhdHRyaWJ1dGUgaXMgbm90IHJldHVybmVkLgorICAg
ICAgICAvLyBGb3IgRHVtcFJlbmRlclRyZWUncyBwdXJwb3NlLCB3ZSBzaG91bGQgaWdub3JlIHRo
b3NlIGV4Y2VwdGlvbnMKKyAgICAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgICAg
IGlkIHZhbHVlT2JqZWN0ID0gW2FjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOmF0dHJpYnV0ZV07CisgICAgICAgIE5TU3RyaW5nKiB2YWx1ZSA9IGRlc2NyaXB0
aW9uT2ZWYWx1ZSh2YWx1ZU9iamVjdCwgYWNjZXNzaWJpbGl0eU9iamVjdCk7CisgICAgICAgIFth
dHRyaWJ1dGVzU3RyaW5nIGFwcGVuZEZvcm1hdDpAIiVAOiAlQFxuIiwgYXR0cmlidXRlLCB2YWx1
ZV07CisgICAgICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIGF0dHJpYnV0ZXNTdHJpbmc7Cit9CisKK3N0YXRpYyBKU1N0cmluZ1JlZiBjb25jYXRlbmF0
ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TU3RyaW5nKiB2YWx1ZSkK
K3sKKyAgICBWZWN0b3I8VW5pQ2hhcj4gYnVmZmVyKFthdHRyaWJ1dGUgbGVuZ3RoXSk7CisgICAg
W2F0dHJpYnV0ZSBnZXRDaGFyYWN0ZXJzOmJ1ZmZlci5kYXRhKCldOworICAgIGJ1ZmZlci5hcHBl
bmQoJzonKTsKKyAgICBidWZmZXIuYXBwZW5kKCcgJyk7CisKKyAgICBWZWN0b3I8VW5pQ2hhcj4g
dmFsdWVCdWZmZXIoW3ZhbHVlIGxlbmd0aF0pOworICAgIFt2YWx1ZSBnZXRDaGFyYWN0ZXJzOnZh
bHVlQnVmZmVyLmRhdGEoKV07CisgICAgYnVmZmVyLmFwcGVuZCh2YWx1ZUJ1ZmZlcik7CisKKyAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKK30KKworc3RhdGljIHZvaWQgY29udmVydE5TQXJyYXlUb1ZlY3RvcihOU0Fy
cmF5KiBhcnJheSwgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVt
ZW50VmVjdG9yKQoreworICAgIE5TVUludGVnZXIgY291bnQgPSBbYXJyYXkgY291bnRdOworICAg
IGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGVsZW1lbnRW
ZWN0b3IuYXBwZW5kKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbYXJyYXkgb2JqZWN0
QXRJbmRleDppXSkpOworfQorCitzdGF0aWMgSlNTdHJpbmdSZWYgZGVzY3JpcHRpb25PZkVsZW1l
bnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3Rv
cikKK3sKKyAgICBOU011dGFibGVTdHJpbmcqIGFsbEVsZW1lbnRTdHJpbmcgPSBbTlNNdXRhYmxl
U3RyaW5nIHN0cmluZ107CisgICAgc2l6ZV90IHNpemUgPSBlbGVtZW50VmVjdG9yLnNpemUoKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVtZW50ID0gZWxlbWVudFZlY3RvcltpXTsKKyAg
ICAgICAgTlNTdHJpbmcqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzT2ZFbGVtZW50KHVpRWxlbWVu
dC0+cGxhdGZvcm1VSUVsZW1lbnQoKSk7CisgICAgICAgIFthbGxFbGVtZW50U3RyaW5nIGFwcGVu
ZEZvcm1hdDpAIiVAXG4tLS0tLS0tLS0tLS1cbiIsIGF0dHJpYnV0ZXNdOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gW2FsbEVsZW1lbnRTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdOworfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMoVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yKQoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGxpbmtlZEVsZW1lbnRzID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGlua2Vk
VUlFbGVtZW50c0F0dHJpYnV0ZV07CisgICAgY29udmVydE5TQXJyYXlUb1ZlY3RvcihsaW5rZWRF
bGVtZW50cywgZWxlbWVudFZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldERvY3VtZW50TGlua3MoVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yKQoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIGxpbmtFbGVtZW50cyA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMaW5rVUlFbGVtZW50cyJdOwor
ICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3IobGlua0VsZW1lbnRzLCBlbGVtZW50VmVjdG9yKTsK
KyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Z2V0Q2hpbGRyZW4oVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+
JiBlbGVtZW50VmVjdG9yKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5T
QXJyYXkqIGNoaWxkcmVuID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdOworICAgIGNvbnZlcnROU0FycmF5VG9W
ZWN0b3IoY2hpbGRyZW4sIGVsZW1lbnRWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5n
ZShWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3Is
IHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCisgICAgTlNBcnJheSogY2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVlczpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0
ZSBpbmRleDpsb2NhdGlvbiBtYXhDb3VudDpsZW5ndGhdOworICAgIGNvbnZlcnROU0FycmF5VG9W
ZWN0b3IoY2hpbGRyZW4sIGVsZW1lbnRWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQoKQorewor
ICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBjaGlsZHJlbjsKKyAg
ICBnZXRDaGlsZHJlbihjaGlsZHJlbik7CisgICAgCisgICAgcmV0dXJuIGNoaWxkcmVuLnNpemUo
KTsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgaWQgZWxlbWVu
dCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUhpdFRlc3Q6TlNNYWtlUG9pbnQoeCwgeSldOwor
ICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQpOworfQorCit1bnNpZ25lZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SW5kZXhP
ZkNoaWxkOmVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCldOworfQorCitQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRl
eCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+ID4gY2hpbGRyZW47CisgICAgZ2V0Q2hpbGRyZW5XaXRoUmFuZ2UoY2hpbGRyZW4sIGlu
ZGV4LCAxKTsKKworICAgIGlmIChjaGlsZHJlbi5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJu
IGNoaWxkcmVuWzBdOworICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5k
ZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
TlNBcnJheSogb2JqZWN0cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGVdOworICAgIGlmIChpbmRl
eCA8IFtvYmplY3RzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNyZWF0ZShbb2JqZWN0cyBvYmplY3RBdEluZGV4OmluZGV4XSk7CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVu
dEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgTlNBcnJheSogb2JqZWN0cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGVdOworICAgIGlmIChpbmRleCA8IFtv
YmplY3RzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNy
ZWF0ZShbb2JqZWN0cyBvYmplY3RBdEluZGV4OmluZGV4XSk7CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJ
bmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICBOU0FycmF5KiBvYmplY3RzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV07CisgICAgaWYgKGlu
ZGV4IDwgW29iamVjdHMgY291bnRdKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y3JlYXRlKFtvYmplY3RzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93
QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBOU0FycmF5KiByb3dzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV07CisgICAgaWYgKGluZGV4
IDwgW3Jvd3MgY291bnRdKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y3JlYXRlKFtyb3dzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNp
Z25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBO
U0FycmF5KiBhcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOworICAgIGlmIChpbmRleCA8
IFthcnJheSBjb3VudF0pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
cmVhdGUoW2FycmF5IG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRyZW5Db3VudCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUFycmF5
QXR0cmlidXRlQ291bnQ6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Vs
ZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIE5TQXJyYXkqIHJvd3MgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdOworICAgIGlm
IChpbmRleCA8IFtyb3dzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNyZWF0ZShbcm93cyBvYmplY3RBdEluZGV4OmluZGV4XSk7CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50
KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBhY2Nlc3NpYmlsaXR5
T2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOworICAgIGlmIChhY2Nlc3NpYmlsaXR5T2Jq
ZWN0KQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGFjY2Vz
c2liaWxpdHlPYmplY3QpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlXTsKKyAg
ICBpZiAoYWNjZXNzaWJpbGl0eU9iamVjdCkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNyZWF0ZShhY2Nlc3NpYmlsaXR5T2JqZWN0KTsKKyAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkQnlSb3coKQor
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIGFjY2Vzc2liaWxpdHlPYmpl
Y3QgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlEaXNjbG9zZWRCeVJvd0F0dHJpYnV0ZV07CisgICAgaWYgKGFjY2Vzc2liaWxpdHlPYmplY3Qp
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoYWNjZXNzaWJp
bGl0eU9iamVjdCk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVy
biAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cygpCit7CisgICAgVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGxpbmtlZEVsZW1lbnRzOworICAgIGdldExpbmtlZFVJ
RWxlbWVudHMobGlua2VkRWxlbWVudHMpOworICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVu
dHMobGlua2VkRWxlbWVudHMpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcygpCit7CisgICAgVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGxpbmtFbGVtZW50czsKKyAgICBn
ZXREb2N1bWVudExpbmtzKGxpbmtFbGVtZW50cyk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZF
bGVtZW50cyhsaW5rRWxlbWVudHMpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRyZW4oKQoreworICAgIFZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBjaGlsZHJlbjsKKyAgICBnZXRDaGls
ZHJlbihjaGlsZHJlbik7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjaGlsZHJl
bik7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphbGxBdHRyaWJ1dGVzKCkKK3sKKyAgICBOU1N0cmluZyogYXR0cmlidXRlcyA9IGF0dHJpYnV0
ZXNPZkVsZW1lbnQobV9lbGVtZW50KTsKKyAgICByZXR1cm4gW2F0dHJpYnV0ZXMgY3JlYXRlSlNT
dHJpbmdSZWZdOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQorewor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1Jl
ZjphdHRyaWJ1dGVdXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmli
dXRlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dpdGhK
U1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05T
TnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgZG91YmxlVmFsdWVdOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0
cmlidXRlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dp
dGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKKyAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVy
biBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOltOU1N0cmluZyBz
dHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCit7Cisg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIFtbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVOYW1lc10gY29udGFpbnNPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dp
dGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkKK3sKKyAg
ICBOU0FycmF5KiBzdXBwb3J0ZWRQYXJhbWV0ZXJpemVkQXR0cmlidXRlcyA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc107CisgICAgCisgICAgTlNN
dXRhYmxlU3RyaW5nKiBhdHRyaWJ1dGVzU3RyaW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdd
OworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IFtzdXBwb3J0ZWRQYXJhbWV0ZXJpemVk
QXR0cmlidXRlcyBjb3VudF07ICsraSkgeworICAgICAgICBbYXR0cmlidXRlc1N0cmluZyBhcHBl
bmRGb3JtYXQ6QCIlQFxuIiwgW3N1cHBvcnRlZFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVzIG9iamVj
dEF0SW5kZXg6aV1dOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gW2F0dHJpYnV0ZXNTdHJpbmcg
Y3JlYXRlSlNTdHJpbmdSZWZdOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgTlNTdHJpbmcgKnJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV0sIG1f
ZWxlbWVudCk7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFJv
bGUiLCByb2xlKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJu
IDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdWJyb2xlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1N0cmlu
Zyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsK
KyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYU3Vicm9sZSIsIHJv
bGUpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2Ny
aXB0aW9uKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1N0cmluZyog
cm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1l
bnQpOworICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhSb2xlRGVz
Y3JpcHRpb24iLCByb2xlKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAg
cmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0aXRsZSgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNT
dHJpbmcqIHRpdGxlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlXSwgbV9lbGVtZW50
KTsKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYVGl0bGUiLCB0
aXRsZSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIDA7Cit9CisK
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlw
dGlvbigpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgZGVzY3JpcHRp
b24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQpOwor
ICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhEZXNjcmlwdGlvbiIs
IGRlc2NyaXB0aW9uKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4g
MDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om9yaWVudGF0aW9uKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV0s
IG1fZWxlbWVudCk7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJB
WE9yaWVudGF0aW9uIiwgZGVzY3JpcHRpb24pOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJp
YnV0ZV0sIG1fZWxlbWVudCk7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFs
dWUoQCJBWFZhbHVlIiwgZGVzY3JpcHRpb24pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KworICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMYW5ndWFnZSJdLCBtX2VsZW1lbnQpOworICAg
IHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhMYW5ndWFnZSIsIGRlc2Ny
aXB0aW9uKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1cm4gMDsKK30K
KworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBU
ZXh0KCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBkZXNj
cmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlIZWxwQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAg
ICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYSGVscCIsIGRlc2NyaXB0
aW9uKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9
CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkKK3sKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVlKiBwb3NpdGlvblZhbHVlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1
dGVdOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtwb3NpdGlvblZhbHVlIHBvaW50
VmFsdWVdLngpOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KCkKK3sKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU1ZhbHVlKiBwb3NpdGlvblZhbHVlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UG9z
aXRpb25BdHRyaWJ1dGVdOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtwb3NpdGlv
blZhbHVlIHBvaW50VmFsdWVdLnkpOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp3aWR0aCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNWYWx1ZSog
c2l6ZVZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4o
W3NpemVWYWx1ZSBzaXplVmFsdWVdLndpZHRoKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CisgICAgCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpoZWlnaHQoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TVmFs
dWUqIHNpemVWYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3Vi
bGU+KFtzaXplVmFsdWUgc2l6ZVZhbHVlXS5oZWlnaHQpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKyAgICAKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNsaWNrUG9pbnRYKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICBOU1ZhbHVlKiBwb3NpdGlvblZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6QCJBWENsaWNrUG9pbnQiXTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91
YmxlPihbcG9zaXRpb25WYWx1ZSBwb2ludFZhbHVlXS54KTsgICAgICAgIAorICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBOU1ZhbHVlKiBwb3NpdGlvblZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENsaWNrUG9pbnQiXTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihbcG9zaXRpb25WYWx1ZSBwb2ludFZhbHVlXS55KTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gWyhOU051
bWJlciopdmFsdWUgZG91YmxlVmFsdWVdOyAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisK
KyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1p
blZhbHVlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU1p
blZhbHVlQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVy
IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbKE5TTnVtYmVyKil2YWx1ZSBkb3VibGVWYWx1ZV07
IAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAwLjBmOworfQorCitk
b3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWUoKQoreworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TWF4VmFsdWVBdHRyaWJ1dGVdOworICAgIGlm
IChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJu
IFsoTlNOdW1iZXIqKXZhbHVlIGRvdWJsZVZhbHVlXTsgCisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworCisgICAgcmV0dXJuIDAuMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24oKQoreworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIE5TU3RyaW5nKiB2YWx1ZURlc2NyaXB0aW9uID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNj
cmlwdGlvbkF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZURlc2NyaXB0aW9uIGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgICByZXR1cm4gW3ZhbHVlRGVzY3JpcHRpb24g
Y3JlYXRlSlNTdHJpbmdSZWZdOworCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJl
dHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5zZXJ0aW9uUG9pbnRM
aW5lTnVtYmVyKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1
ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eUluc2VydGlvblBvaW50TGluZU51bWJlckF0dHJpYnV0ZV07CisgICAgaWYgKFt2YWx1ZSBpc0tp
bmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gWyhOU051bWJlciAq
KXZhbHVlIGludFZhbHVlXTsgCisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAg
IHJldHVybiAtMTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGlvblN1
cHBvcnRlZChKU1N0cmluZ1JlZiBhY3Rpb24pCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgTlNBcnJheSogYWN0aW9ucyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUFjdGlv
bk5hbWVzXTsKKyAgICByZXR1cm4gW2FjdGlvbnMgY29udGFpbnNPYmplY3Q6W05TU3RyaW5nIHN0
cmluZ1dpdGhKU1N0cmluZ1JlZjphY3Rpb25dXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzRW5hYmxlZCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQg
dmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlFbmFibGVkQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05T
TnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKKyAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQoKSBjb25zdAoreworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWFJlcXVpcmVkIl07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1
ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQoKSBjb25zdAorewor
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZEF0dHJpYnV0ZV07CisgICAgaWYg
KFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICByZXR1cm4g
W3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFu
ZGVkKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1
ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eUV4cGFuZGVkQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVt
YmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKKyAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ2hlY2tlZCgpIGNvbnN0Cit7CisgICAgLy8gT24gdGhl
IE1hYywgaW50VmFsdWUoKT09MSBpZiBhIGEgY2hlY2thYmxlIGNvbnRyb2wgaXMgY2hlY2tlZC4K
KyAgICByZXR1cm4gaW50VmFsdWUoKSA9PSAxOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc3VyZUxldmVsQXR0cmlidXRlXTsKKyAgICBpZiAo
W3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBb
dmFsdWUgaW50VmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVy
biAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c3BlYWsoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWERSVFNwZWVjaEF0
dHJpYnV0ZSJdOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSkKKyAgICAgICAgcmV0dXJuIFt2YWx1ZSBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgICAgICAKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphcmlhSXNHcmFiYmVkKCkgY29uc3QKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdOworICAgIGlm
IChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJu
IFt2YWx1ZSBib29sVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cygpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlEcm9wRWZmZWN0c0F0dHJpYnV0ZV07CisgICAgaWYgKCFb
dmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIE5TTXV0YWJsZVN0cmluZyogZHJvcEVmZmVjdHMgPSBbTlNNdXRhYmxlU3RyaW5nIHN0
cmluZ107CisgICAgTlNJbnRlZ2VyIGxlbmd0aCA9IFt2YWx1ZSBjb3VudF07CisgICAgZm9yIChO
U0ludGVnZXIgayA9IDA7IGsgPCBsZW5ndGg7ICsraykgeworICAgICAgICBbZHJvcEVmZmVjdHMg
YXBwZW5kU3RyaW5nOlt2YWx1ZSBvYmplY3RBdEluZGV4OmtdXTsKKyAgICAgICAgaWYgKGsgPCBs
ZW5ndGggLSAxKQorICAgICAgICAgICAgW2Ryb3BFZmZlY3RzIGFwcGVuZFN0cmluZzpAIiwiXTsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIFtkcm9wRWZmZWN0cyBjcmVhdGVKU1N0cmluZ1JlZl07
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCisv
LyBwYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZXMKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojps
aW5lRm9ySW5kZXgoaW50IGluZGV4KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5TGluZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBmb3JQYXJhbWV0
ZXI6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6aW5kZXhdXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2lu
ZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbKE5TTnVtYmVyICop
dmFsdWUgaW50VmFsdWVdOyAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisKKyAgICByZXR1
cm4gLTE7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpyYW5nZUZvckxpbmUoaW50IGxpbmUpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlSYW5nZUZvckxpbmVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBh
cmFtZXRlcjpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpsaW5lXV07CisgICAgaWYgKFt2YWx1ZSBp
c0tpbmRPZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0pIHsKKyAgICAgICAgcmV0dXJuIFtOU1N0cmlu
Z0Zyb21SYW5nZShbdmFsdWUgcmFuZ2VWYWx1ZV0pIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICB9
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym91bmRzRm9y
UmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBOU1Jhbmdl
IHJhbmdlID0gTlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlCb3VuZHNGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRy
aWJ1dGUgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOnJhbmdlXV07CisgICAg
TlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0KDAsMCwwLDApOworICAgIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11dKQorICAgICAgICByZWN0ID0gW3ZhbHVlIHJlY3RWYWx1
ZV07IAorICAgIAorICAgIC8vIGRvbid0IHJldHVybiBwb3NpdGlvbiBpbmZvcm1hdGlvbiBiZWNh
dXNlIGl0IGlzIHBsYXRmb3JtIGRlcGVuZGVudAorICAgIE5TTXV0YWJsZVN0cmluZyogYm91bmRz
RGVzY3JpcHRpb24gPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ7eyVmLCAl
Zn0sIHslZiwgJWZ9fSIsLTEuMGYsLTEuMGYscmVjdC5zaXplLndpZHRoLHJlY3Quc2l6ZS5oZWln
aHRdOworICAgIHJldHVybiBbYm91bmRzRGVzY3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclJh
bmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgTlNSYW5nZSBy
YW5nZSA9IE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIGlkIHN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSBmb3JQYXJhbWV0ZXI6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKKyAgICBp
ZiAoIVtzdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgCisgICAgcmV0dXJuIFtzdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJp
bmdGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIE5T
UmFuZ2UgcmFuZ2UgPSBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIHN0cmluZyA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZWRTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOltOU1Zh
bHVlIHZhbHVlV2l0aFJhbmdlOnJhbmdlXV07CisgICAgaWYgKCFbc3RyaW5nIGlzS2luZE9mQ2xh
c3M6W05TQXR0cmlidXRlZFN0cmluZyBjbGFzc11dKQorICAgICAgICByZXR1cm4gMDsKKyAgICAK
KyAgICBOU1N0cmluZyogc3RyaW5nV2l0aEF0dHJzID0gW3N0cmluZyBkZXNjcmlwdGlvbl07Cisg
ICAgcmV0dXJuIFtzdHJpbmdXaXRoQXR0cnMgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQodW5zaWdu
ZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0gTlNN
YWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgTlNBdHRyaWJ1dGVkU3RyaW5nKiBzdHJpbmcgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlBdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2VQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlIGZvclBhcmFtZXRlcjpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5n
ZTpyYW5nZV1dOworICAgIGlmICghW3N0cmluZyBpc0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRT
dHJpbmcgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTlNEaWN0aW9uYXJ5
KiBhdHRycyA9IFtzdHJpbmcgYXR0cmlidXRlc0F0SW5kZXg6MCBlZmZlY3RpdmVSYW5nZTpuaWxd
OworICAgIGlmKFtbYXR0cnMgb2JqZWN0Rm9yS2V5Ok5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRU
ZXh0QXR0cmlidXRlXSBib29sVmFsdWVdKQorICAgICAgICByZXR1cm4gdHJ1ZTsgICAgCisgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1
aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogc3RhcnRF
bGVtZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwgSlNTdHJpbmdSZWYgc2VhcmNoS2V5LCBKU1N0
cmluZ1JlZiBzZWFyY2hUZXh0KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IE5TTXV0YWJsZURpY3Rpb25hcnkqIHBhcmFtZXRlciA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnldOworICAgIFtwYXJhbWV0ZXIgc2V0T2JqZWN0Oihpc0RpcmVjdGlvbk5leHQpID8g
QCJBWERpcmVjdGlvbk5leHQiIDogQCJBWERpcmVjdGlvblByZXZpb3VzIiBmb3JLZXk6QCJBWERp
cmVjdGlvbiJdOworICAgIFtwYXJhbWV0ZXIgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
SW50OjFdIGZvcktleTpAIkFYUmVzdWx0c0xpbWl0Il07CisgICAgaWYgKHN0YXJ0RWxlbWVudCkK
KyAgICAgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6KGlkKXN0YXJ0RWxlbWVudC0+cGxhdGZvcm1V
SUVsZW1lbnQoKSBmb3JLZXk6QCJBWFN0YXJ0RWxlbWVudCJdOworICAgIGlmIChzZWFyY2hLZXkp
CisgICAgICAgIFtwYXJhbWV0ZXIgc2V0T2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJp
bmdSZWY6c2VhcmNoS2V5XSBmb3JLZXk6QCJBWFNlYXJjaEtleSJdOworICAgIGlmIChzZWFyY2hU
ZXh0ICYmIEpTU3RyaW5nR2V0TGVuZ3RoKHNlYXJjaFRleHQpKQorICAgICAgICBbcGFyYW1ldGVy
IHNldE9iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnNlYXJjaFRleHRdIGZv
cktleTpAIkFYU2VhcmNoVGV4dCJdOworICAgIAorICAgIGlkIHVpRWxlbWVudCA9IFtbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVUlFbGVtZW50c0ZvclNlYXJjaFBy
ZWRpY2F0ZSIgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcl0gbGFzdE9iamVjdF07CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZSh1aUVsZW1lbnQpOworICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRl
cnMoKQoreworICAgIC8vIG5vdCB5ZXQgZGVmaW5lZCBpbiBBcHBLaXQuLi4gb2RkCisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSogY29sdW1uSGVhZGVyc0FycmF5ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENvbHVtbkhlYWRlclVJ
RWxlbWVudHMiXTsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4g
Y29sdW1uSGVhZGVyc1ZlY3RvcjsKKyAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKGNvbHVtbkhl
YWRlcnNBcnJheSwgY29sdW1uSGVhZGVyc1ZlY3Rvcik7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9u
T2ZFbGVtZW50cyhjb2x1bW5IZWFkZXJzVmVjdG9yKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCkKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiByb3dIZWFkZXJzQXJyYXkgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUm93SGVhZGVyVUlFbGVt
ZW50cyJdOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiByb3dI
ZWFkZXJzVmVjdG9yOworICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3Iocm93SGVhZGVyc0FycmF5
LCByb3dIZWFkZXJzVmVjdG9yKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJv
d0hlYWRlcnNWZWN0b3IpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICBy
ZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIE5TQXJyYXkqIGNvbHVtbnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdOworICAgIFZl
Y3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiBjb2x1bW5zVmVjdG9yOworICAg
IGNvbnZlcnROU0FycmF5VG9WZWN0b3IoY29sdW1uc0FycmF5LCBjb2x1bW5zVmVjdG9yKTsKKyAg
ICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNvbHVtbnNWZWN0b3IpOworICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd3MoKQor
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkqIHJvd3NBcnJheSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJv
d3NBdHRyaWJ1dGVdOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
PiByb3dzVmVjdG9yOworICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3Iocm93c0FycmF5LCByb3dz
VmVjdG9yKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJvd3NWZWN0b3IpOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZlZpc2libGVDZWxscygpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNB
cnJheSogY2VsbHNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhWaXNpYmxlQ2VsbHMiXTsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+ID4gY2VsbHNWZWN0b3I7CisgICAgY29udmVydE5TQXJyYXlUb1ZlY3RvcihjZWxsc0Fy
cmF5LCBjZWxsc1ZlY3Rvcik7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjZWxs
c1ZlY3Rvcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAw
OworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mSGVhZGVyKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICBpZCBoZWFkZXJPYmplY3QgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVdOworICAgIGlmICghaGVhZGVyT2JqZWN0
KQorICAgICAgICByZXR1cm4gW0AiIiBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgCisgICAgVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGhlYWRlclZlY3RvcjsKKyAgICBo
ZWFkZXJWZWN0b3IuYXBwZW5kKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShoZWFkZXJP
YmplY3QpKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGhlYWRlclZlY3Rvcik7
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitp
bnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93Q291bnQoKQoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0
dHJpYnV0ZUNvdW50Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOworICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNvbHVtbkNvdW50KCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3Vu
dDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjppbmRleEluVGFibGUoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IE5TTnVtYmVyKiBpbmRleE51bWJlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUluZGV4QXR0cmlidXRlXTsKKyAgICBpZiAoaW5kZXhOdW1i
ZXIpCisgICAgICAgIHJldHVybiBbaW5kZXhOdW1iZXIgaW50VmFsdWVdOworICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiAtMTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0luZGV4UmFuZ2UoKQoreworICAgIE5T
UmFuZ2UgcmFuZ2UgPSBOU01ha2VSYW5nZSgwLDApOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIE5TVmFsdWUqIGluZGV4UmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYUm93SW5kZXhSYW5nZSJdOworICAgIGlmIChpbmRleFJhbmdlKQor
ICAgICAgICByYW5nZSA9IFtpbmRleFJhbmdlIHJhbmdlVmFsdWVdOworICAgIE5TTXV0YWJsZVN0
cmluZyogcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAInslZCwgJWR9IixyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoXTsKKyAgICByZXR1cm4g
W3JhbmdlRGVzY3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkluZGV4UmFuZ2UoKQoreworICAgIE5T
UmFuZ2UgcmFuZ2UgPSBOU01ha2VSYW5nZSgwLDApOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIE5TTnVtYmVyKiBpbmRleFJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWENvbHVtbkluZGV4UmFuZ2UiXTsKKyAgICBpZiAoaW5kZXhSYW5n
ZSkKKyAgICAgICAgcmFuZ2UgPSBbaW5kZXhSYW5nZSByYW5nZVZhbHVlXTsKKyAgICBOU011dGFi
bGVTdHJpbmcqIHJhbmdlRGVzY3JpcHRpb24gPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJ7JWQsICVkfSIscmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aF07CisgICAgcmV0
dXJuIFtyYW5nZURlc2NyaXB0aW9uIGNyZWF0ZUpTU3RyaW5nUmVmXTsgICAgCisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1
bW5BbmRSb3codW5zaWduZWQgY29sLCB1bnNpZ25lZCByb3cpCit7CisgICAgTlNBcnJheSAqY29s
Um93QXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRo
VW5zaWduZWRJbnQ6Y29sXSwgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDpyb3ddLCBu
aWxdOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjcmVhdGUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWENlbGxGb3JDb2x1bW5BbmRSb3ciIGZvclBhcmFtZXRlcjpjb2xSb3dBcnJheV0pOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMgICAgCisKKyAgICByZXR1cm4gMDsKK30KKworUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
b3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhvcml6b250YWxTY3Jv
bGxCYXJBdHRyaWJ1dGVdKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TICAgIAorICAgIAor
ICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y3JlYXRlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eVZlcnRpY2FsU2Nyb2xsQmFyQXR0cmlidXRlXSk7CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUyAgICAgICAgCit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSgpCit7CisgICAgTlNSYW5nZSByYW5nZSA9
IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIE5TVmFsdWUgKmluZGV4UmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZV07Cisg
ICAgaWYgKGluZGV4UmFuZ2UpCisgICAgICAgIHJhbmdlID0gW2luZGV4UmFuZ2UgcmFuZ2VWYWx1
ZV07CisgICAgTlNNdXRhYmxlU3RyaW5nICpyYW5nZURlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAieyVkLCAlZH0iLHJhbmdlLmxvY2F0aW9uLCByYW5nZS5s
ZW5ndGhdOworICAgIHJldHVybiBbcmFuZ2VEZXNjcmlwdGlvbiBjcmVhdGVKU1N0cmluZ1JlZl07
ICAgIAorICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRSYW5nZSh1bnNp
Z25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIE5TUmFuZ2UgdGV4dFJhbmdl
ID0gTlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7CisgICAgTlNWYWx1ZSAqdGV4dFJhbmdl
VmFsdWUgPSBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTp0ZXh0UmFuZ2VdOworICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVNldFZhbHVlOnRl
eHRSYW5nZVZhbHVlIGZvckF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRSYW5n
ZUF0dHJpYnV0ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlbWVudCgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5UGVyZm9ybUFjdGlvbjpOU0FjY2Vz
c2liaWxpdHlJbmNyZW1lbnRBY3Rpb25dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnQoKQoreworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBlcmZvcm1B
Y3Rpb246TlNBY2Nlc3NpYmlsaXR5RGVjcmVtZW50QWN0aW9uXTsKKyAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2hvd01lbnUoKQor
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb25dOworICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpw
cmVzcygpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5UGVyZm9ybUFjdGlvbjpOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbl07Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNldFNlbGVjdGVkQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkgY29u
c3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5KiBhcnJheSA9
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDplbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpXTsK
KyAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTphcnJheSBmb3JBdHRyaWJ1dGU6
TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUyAgICAKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1ZSgpIGNvbnN0Cit7CisgICAgLy8gRklY
TUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAs
IDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZG9jdW1lbnRFbmNvZGluZygpCit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgpCit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIE5TVVJMICp1cmwgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGVdOworICAgIHJldHVybiBbW3VybCBhYnNvbHV0
ZVN0cmluZ10gY3JlYXRlSlNTdHJpbmdSZWZdOyAgICAKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgCisgICAgcmV0dXJuIG5pbDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2sp
Cit7CisgICAgaWYgKCFmdW5jdGlvbkNhbGxiYWNrKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
CisgICAgLy8gTWFjIHByb2dyYW1tZXJzIHNob3VsZCBub3QgYmUgYWRkaW5nIG1vcmUgdGhhbiBv
bmUgbm90aWZpY2F0aW9uIGxpc3RlbmVyIHBlciBlbGVtZW50LgorICAgIC8vIE90aGVyIHBsYXRm
b3JtcyBtYXkgYmUgZGlmZmVyZW50LgorICAgIGlmIChtX25vdGlmaWNhdGlvbkhhbmRsZXIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSBbW0FjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGFsbG9jXSBpbml0V2l0aFBsYXRmb3JtRWxlbWVu
dDpwbGF0Zm9ybVVJRWxlbWVudCgpXTsKKyAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHNldENh
bGxiYWNrOmZ1bmN0aW9uQ2FsbGJhY2tdOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQorewor
ICAgIC8vIE1hYyBwcm9ncmFtbWVycyBzaG91bGQgbm90IGJlIHRyeWluZyB0byByZW1vdmUgYSBs
aXN0ZW5lciB0aGF0J3MgYWxyZWFkeSByZW1vdmVkLgorICAgIEFTU0VSVChtX25vdGlmaWNhdGlv
bkhhbmRsZXIpOworCisgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciByZWxlYXNlXTsKKyAgICBt
X25vdGlmaWNhdGlvbkhhbmRsZXIgPSBuaWw7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdAoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzVmlzaWJsZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc09mZlNjcmVlbigp
IGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NvbGxhcHNlZCgpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQoKSBjb25zdAoreworICAgIEJPT0wgcmVzdWx0
ID0gTk87CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmVzdWx0ID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
YXNQb3B1cCgpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQg
dmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYSGFzUG9w
dXAiXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisg
ICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dGFrZUZvY3VzKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZVNlbGVjdGlvbigpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNlbGVjdGlvbigp
Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbigpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQor
CisvLyBUZXh0IG1hcmtlcnMKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVSUVsZW1lbnQiIGZvclBhcmFtZXRl
cjplbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UqIHJhbmdlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TTnVt
YmVyKiBsZW5ndGhWYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhMZW5ndGhGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooaWQpcmFuZ2UtPnBs
YXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIHJldHVybiBbbGVuZ3RoVmFsdWUgaW50VmFs
dWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30K
KworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFy
a2VyKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHByZXZpb3VzTWFy
a2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFByZXZpb3Vz
VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpdGV4dE1hcmtlci0+cGxh
dGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6
Y3JlYXRlKHByZXZpb3VzTWFya2VyKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAg
CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKiB0ZXh0TWFya2VyKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYTmV4dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OmNyZWF0ZShuZXh0TWFya2VyKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgCisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSogbWFya2VyUmFuZ2UpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgaWQgdGV4dFN0cmluZyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UiIGZvclBhcmFtZXRlcjooaWQpbWFy
a2VyUmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCldOworICAgIHJldHVybiBbdGV4dFN0
cmluZyBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogZW5kTWFya2VyKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5T
QXJyYXkqIHRleHRNYXJrZXJzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czooaWQpc3RhcnRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCAoaWQpZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRN
YXJrZXIoKSwgbmlsXTsKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVW5vcmRlcmVkVGV4
dE1hcmtlcnMiIGZvclBhcmFtZXRlcjp0ZXh0TWFya2Vyc107CisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOworICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJh
bmdlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHRleHRNYXJrZXIg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlIiBmb3JQYXJhbWV0ZXI6KGlkKXJhbmdlLT5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNy
ZWF0ZSh0ZXh0TWFya2VyKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAg
cmV0dXJuIDA7ICAgIAorfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQoreworICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSIgZm9yUGFy
YW1ldGVyOihpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKV07CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CisgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOyAgICAKK30KKworUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1h
cmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWFRleHRNYXJrZXJGb3JQb3NpdGlvbiIgZm9yUGFyYW1ldGVyOltOU1ZhbHVlIHZh
bHVlV2l0aFBvaW50Ok5TTWFrZVBvaW50KHgsIHkpXV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworICAgIAorICAgIHJldHVybiAwOyAgICAKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVu
dEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB1aUVsZW1lbnQgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVUlFbGVtZW50Rm9yVGV4dE1hcmtlciIgZm9y
UGFyYW1ldGVyOihpZCltYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHVpRWxlbWVudCk7CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOyAgCit9CisKK30gLy8gbmFtZXNwYWNl
IFdUUgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2
aXNpb24gOTkxMjgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjAsNSArNjAs
MTEgQEAKIHsKICAgICByZXR1cm4gSlNTdHJpbmdSZXRhaW4odXJsKTsgLy8gRG8gbm90aGluZyBv
biBtYWMuCiB9CisgICAgCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtTmFtZSgpCit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBs
YXRmb3JtTmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIm1hYyIpKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1OYW1lOworfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oCShyZXZpc2lvbiAwKQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlX2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZV9oCisK
KyNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2Jq
ZWN0UmVmLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
Cit0eXBlZGVmIENGVHlwZVJlZiBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZTsKKyNlbHNlCit0eXBl
ZGVmIHZvaWQqIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlOworI2VuZGlmCisKK25hbWVzcGFjZSBX
VFIgeworICAgIAorY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSA6IHB1YmxpYyBK
U1dyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZT4gY3JlYXRlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBjcmVhdGUoY29u
c3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSYpOworICAgIAorICAgIH5BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKCk7CisgICAgCisgICAgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2Ug
cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEpTQ2xhc3NSZWYg
d3JhcHBlckNsYXNzKCk7CisgICAgCisgICAgc3RhdGljIEpTT2JqZWN0UmVmIG1ha2VKU0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoSlNDb250ZXh0UmVmLCBjb25zdCBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlJik7CisgICAgYm9vbCBpc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqKTsKKyAgICAKK3ByaXZhdGU6CisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZShQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSk7CisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZShjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlJik7CisgICAgCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZT4gbV90
ZXh0TWFya2VyUmFuZ2U7CisjZWxzZQorICAgIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIG1fdGV4
dE1hcmtlclJhbmdlOworI2VuZGlmCit9OworICAgIAorI2lmICFQTEFURk9STShNQUMpCitpbmxp
bmUgYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjppc0VxdWFsKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisgICAgCit9IC8v
IG5hbWVzcGFjZSBXVFIKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Vf
aApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuaAkocmV2aXNpb24gOTkxMjgpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVfaAogI2RlZmluZSBJbmplY3Rl
ZEJ1bmRsZV9oCiAKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgpAQCAtNTYsNiArNTcsNyBAQAogICAg
IEdDQ29udHJvbGxlciogZ2NDb250cm9sbGVyKCkgeyByZXR1cm4gbV9nY0NvbnRyb2xsZXIuZ2V0
KCk7IH0KICAgICBFdmVudFNlbmRpbmdDb250cm9sbGVyKiBldmVudFNlbmRpbmdDb250cm9sbGVy
KCkgeyByZXR1cm4gbV9ldmVudFNlbmRpbmdDb250cm9sbGVyLmdldCgpOyB9CiAgICAgVGV4dElu
cHV0Q29udHJvbGxlciogdGV4dElucHV0Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fdGV4dElucHV0
Q29udHJvbGxlci5nZXQoKTsgfQorICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZ2V0
KCk7IH0KIAogICAgIEluamVjdGVkQnVuZGxlUGFnZSogcGFnZSgpIGNvbnN0OwogICAgIHNpemVf
dCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VzLnNpemUoKTsgfQpAQCAtMTA1LDYg
KzEwNyw3IEBACiAgICAgV0tCdW5kbGVQYWdlR3JvdXBSZWYgbV9wYWdlR3JvdXA7CiAgICAgVmVj
dG9yPE93blB0cjxJbmplY3RlZEJ1bmRsZVBhZ2U+ID4gbV9wYWdlczsKIAorICAgIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKICAgICBS
ZWZQdHI8TGF5b3V0VGVzdENvbnRyb2xsZXI+IG1fbGF5b3V0VGVzdENvbnRyb2xsZXI7CiAgICAg
UmVmUHRyPEdDQ29udHJvbGxlcj4gbV9nY0NvbnRyb2xsZXI7CiAgICAgUmVmUHRyPEV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXI+IG1fZXZlbnRTZW5kaW5nQ29udHJvbGxlcjsKSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRl
c3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTAsNiArMTkwLDggQEAKICAgICB2b2lkIGNhbGxGb2N1c1dlYlZpZXdDYWxsYmFjaygpOwog
ICAgIHZvaWQgY2FsbFNldEJhY2tpbmdTY2FsZUZhY3RvckNhbGxiYWNrKCk7CiAKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKCk7CisgICAgCiBwcml2YXRlOgogICAg
IHN0YXRpYyBjb25zdCBkb3VibGUgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJbnRlcnZhbDsKIApJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDApCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlUGFnZS5oIgorI2luY2x1ZGUgIkpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIK
KworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0J1bmRsZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+CisjaW5j
bHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2VQcml2YXRlLmg+CisKK25hbWVzcGFjZSBXVFIgewor
CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPiBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKTsKK30KKworQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKCkKK3sKK30KKworQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6On5BY2Nlc3NpYmls
aXR5Q29udHJvbGxlcigpCit7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6Om1h
a2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHdpbmRvd09i
amVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHNldFByb3BlcnR5KGNvbnRleHQs
IHdpbmRvd09iamVjdCwgImFjY2Vzc2liaWxpdHlDb250cm9sbGVyIiwgdGhpcywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSwgZXhj
ZXB0aW9uKTsKK30KKworSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6d3JhcHBl
ckNsYXNzKCkKK3sKKyAgICByZXR1cm4gSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJDbGFzcygpOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCgpCit7CisgICAg
Ly8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIG9uIFdpbmRvd3MuCisjaWYgUExBVEZPUk0oV0lOKQor
ICAgIHJldHVybiAwOworI2Vsc2UKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKTsKKyAgICB2b2lkKiByb290ID0gV0tBY2Nl
c3NpYmlsaXR5Um9vdE9iamVjdChwYWdlKTsKKyAgICAKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y3JlYXRlKHN0YXRpY19jYXN0PFBsYXRmb3JtVUlFbGVtZW50Pihyb290KSk7
ICAgIAorI2VuZGlmCit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50KCkKK3sKKyAgICAvLyBGSVhNRTog
TWFrZSB0aGlzIHdvcmsgb24gV2luZG93cy4KKyNpZiBQTEFURk9STShXSU4pCisgICAgcmV0dXJu
IDA7CisjZWxzZSAgICAKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKTsKKyAgICB2b2lkKiByb290ID0gV0tBY2Nlc3NpYmls
aXR5Rm9jdXNlZE9iamVjdChwYWdlKTsKKyAgICAKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y3JlYXRlKHN0YXRpY19jYXN0PFBsYXRmb3JtVUlFbGVtZW50Pihyb290KSk7ICAg
IAorI2VuZGlmCit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6OmVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICBS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVtZW50ID0gcm9vdEVsZW1lbnQoKTsK
KyAgICByZXR1cm4gdWlFbGVtZW50LT5lbGVtZW50QXRQb2ludCh4LCB5KTsKK30KKyAgICAKK30g
Ly8gbmFtZXNwYWNlIFdUUgorCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2Vm
aWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUu
YW0JKHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmls
ZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTAgQEAKIG5vaW5zdF9MVExJQlJBUklF
UyArPSBMaWJyYXJpZXMvbGliVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlLmxhCiAKIHdlYmtpdHRl
c3RydW5uZXJfYnVpbHRfc291cmNlcyArPSBcCisJRGVyaXZlZFNvdXJjZXMvSW5qZWN0ZWRCdW5k
bGUvSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0luamVj
dGVkQnVuZGxlL0pTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIFwKKwlEZXJpdmVkU291cmNl
cy9JbmplY3RlZEJ1bmRsZS9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIFwKKwlE
ZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZS9KU0dDQ29udHJvbGxlci5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL0luamVjdGVkQnVuZGxlL0pTTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwIFwKQEAgLTcwLDYgKzc0LDE0IEBACiBCVUlMVF9TT1VSQ0VTICs9ICQod2Via2l0dGVz
dHJ1bm5lcl9idWlsdF9zb3VyY2VzKQogCiBMaWJyYXJpZXNfbGliVGVzdFJ1bm5lckluamVjdGVk
QnVuZGxlX2xhX1NPVVJDRVMgPSBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBcCisJVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAg
XAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmggXAorCVRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAg
XAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjdGl2
YXRlRm9udHMuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9KU1dyYXBwYWJsZS5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0pTV3JhcHBlci5jcHAgXApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci93aW4vSW5qZWN0ZWRCdW5kbGUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvd2luL0luamVjdGVkQnVuZGxlLnZjcHJvagkocmV2aXNpb24gOTkxMjgpCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9JbmplY3RlZEJ1bmRsZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw2ICszOTQsMjE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEJpbmRpbmdzXEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmlkbCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVc
QmluZGluZ3NcQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRsIgorCQkJCT4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVi
dWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJS
ZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxJbmplY3RlZEJ1bmRsZVxCaW5kaW5nc1xBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
LmlkbCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01J
RExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
TUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ01J
RExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQmluZGluZ3NcQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
UmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxs
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxp
dGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9u
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVk
QnVuZGxlXEJpbmRpbmdzXEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsIgogCQkJCT4KIAkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTYxOCw2ICs4MjYsMzggQEAKIAkJCU5hbWU9IkRlcml2ZWQg
U291cmNlcyIKIAkJCT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNw
cCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRp
dmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAiCiAJCQkJPgogCQkJPC9GaWxl
PgpAQCAtNjUxLDYgKzg5MSwzOCBAQAogCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbGUK
KwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuY3BwIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXElu
amVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisJCQk+CisJCTwvRmlsZT4K
KwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuY3BwIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBh
dGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgiCisJCQk+CisJ
CTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUK
KwkJCVJlbGF0aXZlUGF0aD0iLi5cSW5qZWN0ZWRCdW5kbGVcQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZS5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4u
XEluamVjdGVkQnVuZGxlXEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIgorCQkJPgorCQk8L0Zp
bGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluamVjdGVkQnVuZGxlXEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQ
YXRoPSIuLlxJbmplY3RlZEJ1bmRsZVx3aW5cQWN0aXZhdGVGb250cy5jcHAiCiAJCQk+CiAJCTwv
RmlsZT4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMubWFrZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHJldmlzaW9uIDk5MTI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EZXJpdmVkU291cmNl
cy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiwxMCBAQAogIwogCiBJTlRFUkZBQ0VT
ID0gXAorICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyIFwKKyAgICBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBcCisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBcCisgICAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBcCiAgICAgRXZlbnRTZW5kaW5nQ29udHJvbGxlciBcCiAgICAgR0ND
b250cm9sbGVyIFwKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciBcCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTkxMjgpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMjMsNiArMjMsMTcgQEAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0
aW9uICovCiAJCTBGNTE2OUNCMTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1MTY5Q0Ex
NDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgKi87IH07CiAJCTBGNTE2OUNDMTQ0
NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1MTY5Q0ExNDQ1MjIyRDAwRTBBOUQ3IC8qIFdl
YktpdC5mcmFtZXdvcmsgKi87IH07CisJCTI5MjEwRUFFMTQ0Q0FDQjcwMDgzNUJCNSAvKiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI5MjEwRUE5MTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcCAqLzsgfTsKKwkJMjkyMTBFQjAxNDRDQUNCRDAwODM1QkI1IC8qIEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI5MjEwRUEyMTQ0Q0FBQTUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5jcHAgKi87IH07CisJCTI5MjEwRUI0MTQ0Q0FDRDUwMDgzNUJCNSAvKiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyOTIxMEVCMTE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIuY3BwICovOyB9OworCQkyOTIxMEVCNTE0NENBQ0Q1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyOTIxMEVCMzE0NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJNYWMubW0gKi87IH07CisJCTI5MjEwRURBMTQ0Q0MzRUEwMDgzNUJCNSAvKiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjkyMTBFQUIxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0gKi87IH07CisJCTI5MjEwRURCMTQ0Q0Q0NzkwMDgzNUJCNSAvKiBKU0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU4MzkxM0QwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmNwcCAqLzsgfTsKKwkJMjkyMTBFRTExNDRDREIyNjAwODM1QkI1IC8qIEpTQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyOTIxMEVEQjE0NjcyN0U3MTE4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcCAqLzsgfTsKKwkJMjlBOEZDQ0IxNDVFRjAyRTAwOTA0NUE2IC8qIEpTQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjkyMTBFRTExNDRDREU2Nzg5ODE1RUU1IC8qIEpTQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuY3BwICovOyB9OworCQkyOUE4RkNERDE0NUYwMzM3MDA5MDQ1QTYgLyogSlNBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI5QThGQ0UxMzQ1RTcwMjEwMDZBQTVBNiAvKiBKU0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovOyB9OworCQkyOUE4RkNFMjE0NUYwMzdCMDA5MDQ1
QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4RkNFMTE0NUYwMzdCMDA5MDQ1QTYgLyog
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgKi87IH07CisJCTI5QThGQ0U1MTQ1RjA0
NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBOEZDRTQxNDVGMDQ2NDAw
OTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0gKi87IH07CiAJCTUz
MjJGQjQzMTNGREEwQ0QwMDQxQUJDQyAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMyMkZCNDExM0ZEQTBD
RDAwNDFBQkNDIC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgKi87IH07CiAJCTUzMjJGQjQ2
MTNGREEwRUEwMDQxQUJDQyAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMjJGQjQ0MTNGREEwRUEwMDQxQUJDQyAv
KiBQaXhlbER1bXBTdXBwb3J0LmNwcCAqLzsgfTsKIAkJNTY0MUUyRDAxNDMzNUU5NTAwODMwN0U1
IC8qIEpTVGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NjQxRTJDRTE0MzM1RTk1MDA4MzA3RTUgLyogSlNUZXh0SW5w
dXRDb250cm9sbGVyLmNwcCAqLzsgfTsKQEAgLTg2LDYgKzk3LDI3IEBACiAKIC8qIEJlZ2luIFBC
WEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkwRjUxNjlDQTE0NDUyMjJEMDBFMEE5RDcgLyog
V2ViS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gV2ViS2l0LmZyYW1ld29yazsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMjkyMTBFQTIxNDRDQUFBNTAwODM1
QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQTMxNDRDQUFBNTAwODM1QkI1IC8qIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjEwRUE4
MTQ0Q0FCODgwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyOTIxMEVBOTE0NENBQ0IyMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjky
MTBFQUExNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVBQjE0NENBQ0IyMDA4MzVCQjUgLyogQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW07IHBhdGggPSBtYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjky
MTBFQjExNDRDQUNENDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkyMTBFQjIxNDRDQUNENDAwODM1
QkI1IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTI5MjEwRUIzMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyTWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIxMEVEQjE0NjcyN0U3
MTE4MzVCQjUgLyogSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTI5MjEwRURCMTQ2
NzI3RTgxMTgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkyOTIxMEVEQzE0NENENTZF
MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTI5MjEwRUUxMTQ0Q0RFNjc4OTgxNUVFNSAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5l
ci9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKKwkJMjkyMTBFRTExNDVDREU2Nzg5ODE1RUU1IC8qIEpTQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlci5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5l
ci9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCTI5QThGQ0M1MTQ1QjkzQzYwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOUE4RkNEMjE0NUVGOEYyMDA5
MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5
QThGQ0RGMTQ1RjAzNTgwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlBOEZDRTExNDVGMDM3QjAw
OTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5QThGQ0UxMzQ1RTcwMjEwMDZBQTVBNiAv
KiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMjlB
OEZDRTEzNDVFNzAyMTAwNkFBNUE3IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CisJCTI5QThGQ0U0MTQ1RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
NzhENDQyMjEzMzQ2RDAwMDA2QTc3N0IgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZp
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIzMEUxNjEzOEM3OEJGMDBCQ0NG
Q0EgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGgg
PSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTQxODE3MzFCMTM4QUQzOUQwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBv
cnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQ29yZVRlc3RTdXBwb3J0
Lmg7IHBhdGggPSBXZWJDb3JlVGVzdFN1cHBvcnQvV2ViQ29yZVRlc3RTdXBwb3J0Lmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0xMDAsNiArMTMyLDggQEAKIAkJNTY2
NEE0OTkxNDMyNjM4NDAwODg4MUJFIC8qIFRleHRJbnB1dENvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dElucHV0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NjcwQjgyNjEzODZGQzEzMDAyRUIzNTUgLyogRXZlbnRTZW5k
ZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNlbmRlclBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU2NzBCODI3MTM4NkZDQTUwMDJF
QjM1NSAvKiBFdmVudFNlbmRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRXZlbnRTZW5kZXJQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTgzOTEzRDAxNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNBY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVy
L0pTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk1ODM5MTNEMTE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVy
L0pTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJNjUxMEE3NzcxMUVDNjQzODAwNDEwODY3IC8qIEFIRU1fX19fLlRURiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUg
PSAiQUhFTV9fX18uVFRGIjsgcGF0aCA9ICJmb250cy9BSEVNX19fXy5UVEYiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2NTEwQTc3ODExRUM2NDM4MDA0MTA4NjcgLyogQ29sb3JCaXRz
LnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZp
bGU7IG5hbWUgPSBDb2xvckJpdHMudHRmOyBwYXRoID0gZm9udHMvQ29sb3JCaXRzLnR0Zjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMEE3NzkxMUVDNjQzODAwNDEwODY3IC8qIFdl
YktpdFdlaWdodFdhdGNoZXIxMDAudHRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRm
OyBwYXRoID0gZm9udHMvV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGY7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNDcsNiArMjgxLDI0IEBACiAJCQluYW1lID0gUHJvZHVjdHM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkyOUE4RkNFMDE0NUYwMzVEMDA5MDQ1
QTYgLyogQWNjZXNzaWJpbGl0eSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMjkyMTBFQTIxNDRDQUFBNTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmNwcCAqLywKKwkJCQkyOTIxMEVBMzE0NENBQUE1MDA4MzVCQjUgLyogQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuaCAqLywKKwkJCQkyOTIxMEVBOTE0NENBQ0IyMDA4MzVCQjUgLyogQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgKi8sCisJCQkJMjkyMTBFQUExNDRDQUNCMjAwODM1QkI1
IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCAqLywKKwkJCQkyOTIxMEVBQjE0NENBQ0IyMDA4
MzVCQjUgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLywKKwkJCQkyOTIxMEVCMTE0
NENBQ0Q0MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovLAorCQkJCTI5
MjEwRUIyMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oICovLAor
CQkJCTI5MjEwRUIzMTQ0Q0FDRDQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1h
Yy5tbSAqLywKKwkJCQkyOUE4RkNFMTE0NUYwMzdCMDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZS5jcHAgKi8sCisJCQkJMjlBOEZDREYxNDVGMDM1ODAwOTA0NUE2IC8qIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCAqLywKKwkJCQkyOUE4RkNFNDE0NUYwNDY0MDA5
MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbSAqLywKKwkJCSk7CisJ
CQluYW1lID0gQWNjZXNzaWJpbGl0eTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAJCTY1RUI4NTlFMTFFQzY3Q0MwMDM0RDMwMCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjU5LDYgKzMxMSw3IEBACiAJCUJDMTRFNEUwMTIw
RTAyRjkwMDgyNkMwQyAvKiBDb250cm9sbGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJMjlBOEZDRTAxNDVGMDM1RDAwOTA0NUE2IC8qIEFjY2Vzc2li
aWxpdHkgKi8sCiAJCQkJQkM4RkQ4QzkxMjBFNTI3RjAwRjNFNzFBIC8qIEV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIuY3BwICovLAogCQkJCUJDOEZEOEM4MTIwRTUyN0YwMEYzRTcxQSAvKiBFdmVudFNl
bmRpbmdDb250cm9sbGVyLmggKi8sCiAJCQkJQkMxNEU0RDkxMjBFMDJEMDAwODI2QzBDIC8qIEdD
Q29udHJvbGxlci5jcHAgKi8sCkBAIC0zNDUsNiArMzk4LDEwIEBACiAJCQkJQkM5NTJDMEUxMUYz
Qjk3QjAwMzM5OEI0IC8qIEpTV3JhcHBhYmxlLmggKi8sCiAJCQkJQkM5NTJDMEMxMUYzQjk2NTAw
MzM5OEI0IC8qIEpTV3JhcHBlci5jcHAgKi8sCiAJCQkJQkM5NTJDMEIxMUYzQjk2NTAwMzM5OEI0
IC8qIEpTV3JhcHBlci5oICovLAorCQkJCTI5MjEwRUE4MTQ0Q0FCODgwMDgzNUJCNSAvKiBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5pZGwgKi8sCisJCQkJMjlBOEZDQzUxNDVCOTNDNjAwOTA0NUE2
IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbCAqLywKKwkJCQkyOUE4RkNEMjE0NUVGOEYy
MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGwgKi8sCisJCQkJMjky
MTBFREMxNDRDRDU2RTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsICovLAog
CQkJCUJDOEZEOENCMTIwRTUyQjAwMEYzRTcxQSAvKiBFdmVudFNlbmRpbmdDb250cm9sbGVyLmlk
bCAqLywKIAkJCQlCQzE0RTRFMTEyMEUwMzIwMDA4MjZDMEMgLyogR0NDb250cm9sbGVyLmlkbCAq
LywKIAkJCQlCQzk1MkVEMjExRjNDMjlGMDAzMzk4QjQgLyogTGF5b3V0VGVzdENvbnRyb2xsZXIu
aWRsICovLApAQCAtMzU2LDYgKzQxMywxNCBAQAogCQlCQzk1MkQzQTExRjNCRjFGMDAzMzk4QjQg
LyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk1ODM5MTNEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5jcHAgKi8sCisJCQkJNTgzOTEzRDExNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuaCAqLywKKwkJCQkyOTIxMEVFMTE0NENERTY3ODk4MTVFRTUgLyog
SlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8sCisJCQkJMjkyMTBFRTExNDVDREU2Nzg5
ODE1RUU1IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCAqLywKKwkJCQkyOUE4RkNFMTM0
NUU3MDIxMDA2QUE1QTYgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCAqLywK
KwkJCQkyOUE4RkNFMTM0NUU3MDIxMDA2QUE1QTcgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlLmggKi8sCisJCQkJMjkyMTBFREIxNDY3MjdFNzExODM1QkI1IC8qIEpTQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHAgKi8sCisJCQkJMjkyMTBFREIxNDY3MjdFODExODM1QkI1IC8qIEpT
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oICovLAogCQkJCUJDOEZEOEQwMTIwRTU0NUIwMEYzRTcx
QSAvKiBKU0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwICovLAogCQkJCUJDOEZEOEQxMTIwRTU0
NUIwMEYzRTcxQSAvKiBKU0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCAqLywKIAkJCQlCQzE0RTRF
ODEyMEUwM0Q4MDA4MjZDMEMgLyogSlNHQ0NvbnRyb2xsZXIuY3BwICovLApAQCAtNTE2LDYgKzU4
MSwxNyBAQAogCQkJCUMwQ0U3MjBCMTI0N0M5MzMwMEJDMEVDNCAvKiBMYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU2NjRBNDlBMTQzMjYzODQwMDg4ODFCRSAv
KiBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU2NDFFMkQwMTQz
MzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMjkyMTBFQUUxNDRDQUNCNzAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMTBFQjAxNDRDQUNCRDAwODM1QkI1IC8qIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5MjEwRUI0MTQ0Q0FD
RDUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkyOTIxMEVCNTE0NENBQ0Q1MDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJN
YWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkyOTIxMEVEQTE0NENDM0VBMDA4MzVCQjUgLyogQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTI5MjEwRURCMTQ0
Q0Q0NzkwMDgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTI5MjEwRUUxMTQ0Q0RCMjYwMDgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjlBOEZDQ0IxNDVFRjAyRTAwOTA0NUE2IC8q
IEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjlBOEZD
REQxNDVGMDMzNzAwOTA0NUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkyOUE4RkNFMjE0NUYwMzdCMDA5MDQ1QTYgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOUE4RkNFNTE0NUYw
NDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZAkocmV2aXNpb24g
OTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQJKHdvcmtpbmcg
Y29weSkKQEAgLTc0MSwxNSArNzQxLDkgQEAKIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLXBh
ZGRpbmctd2l0aC1tdWx0aXBsZS1saW5lLWJveGVzLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3No
aWZ0LWNsaWNrLmh0bWwKIAotIyBJbXBsZW1lbnQgYWNjZXNpdGlsaXR5IHN1cHBvcnQgdG8gV2Vi
S2l0MgotcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvYXJpYS1yb2xlcy11bmlnbm9yZWQuaHRt
bAotcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvYXJpYS1zbGlkZXItcmVxdWlyZWQtYXR0cmli
dXRlcy5odG1sCi1wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWhpZXJhcmNo
eS5odG1sCi1wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy10ZXh0LWZv
Y3VzLmh0bWwKLXBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2lucHV0LXNsaWRlci5odG1sCi1w
bGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9saXN0LWl0ZW1zLWFsd2F5cy1leHBvc2VkLmh0bWwK
LXBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L29iamVjdC13aXRoLXRpdGxlLmh0bWwKLXBsYXRm
b3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RhYmxlLWhpZXJhcmNoeS5odG1sCisjIEltcGxlbWVudCBh
Y2Nlc3NpYmlsaXR5IHN1cHBvcnQgZm9yIFdlYktpdDIKK2FjY2Vzc2liaWxpdHkKK3BsYXRmb3Jt
L2d0ay9hY2Nlc3NpYmlsaXR5CiAKICMgSW1wbGVtZW50IHRleHRJbnB1dENvbnRyb2xsZXIuZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UgaW50ZXJmYWNlCiBmYXN0L2Zvcm1zL2N1cnNvci1hdC1l
ZGl0YWJsZS1jb250ZW50LWJvdW5kYXJ5Lmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1jaGlsZHJlbi13aGVuLWFyaWEtcm9sZS1jaGFuZ2Vz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvdXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMuaHRtbAkocmV2aXNpb24g
OTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS91cGRhdGUt
Y2hpbGRyZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw3ICsyNyw3IEBACiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJlbnQiKS5m
b2N1cygpOwogICAgICAgICB2YXIgcGFyZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQ7CiAgICAgICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGRBdEluZGV4KDApLnJv
bGUiLCAiJ0FYUm9sZTogQVhCdXR0b24nIik7Ci0gICAgICAgIHNob3VsZEJlKCJwYXJlbnQuY2hp
bGRBdEluZGV4KDEpLnJvbGUiLCAiJ0FYUm9sZTogJyIpOworICAgICAgICBzaG91bGRCZVRydWUo
InBhcmVudC5jaGlsZEF0SW5kZXgoMSkgPT0gbnVsbCB8fCBwYXJlbnQuY2hpbGRBdEluZGV4KDEp
LmlzVmFsaWQgPT0gZmFsc2UiKTsKICAgCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJidXR0b24xIikucmVtb3ZlQXR0cmlidXRlKCJyb2xlIik7CiAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJidXR0b24yIikuc2V0QXR0cmlidXRlKCJyb2xlIiwgImJ1dHRvbiIpOwpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dGJveC1yb2xl
LXJlcG9ydHMtbm90aWZpY2F0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLW5vdGlmaWNhdGlv
bnMuaHRtbAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS90ZXh0Ym94LXJvbGUtcmVwb3J0cy1ub3RpZmljYXRpb25zLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEyLDYgKzEyLDcgQEAKIDxkaXYgcm9sZT0idGV4dGJveCIgaWQ9ImFyaWFU
ZXh0Qm94IiBhcmlhLW11bHRpbGluZT0iZmFsc2UiIHRhYmluZGV4PSIwIj5Tb21lIHRleHQgaW4g
YSB0ZXh0Ym94LjwvZGl2PgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0PgorICAg
IHZhciB0ZXh0Ym94QXhFbGVtZW50OwogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CiAgICAgICAgIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKQEAgLTIwLDcgKzIxLDcgQEAK
IAogICAgICAgICB2YXIgYXJpYVRleHRCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJp
YVRleHRCb3giKTsKICAgICAgICAgYXJpYVRleHRCb3guZm9jdXMoKTsKLSAgICAgICAgdmFyIHRl
eHRib3hBeEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsK
KyAgICAgICAgdGV4dGJveEF4RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50OwogICAgICAgICB0ZXh0Ym94QXhFbGVtZW50LmFkZE5vdGlmaWNhdGlvbkxpc3Rl
bmVyKGxvZ05vdGlmaWNhdGlvbik7CiAgICAgICAgIHBlbmRpbmdOb3RpZmljYXRpb25zID0gMzsK
ICAgICAgICAgYXJpYVRleHRCb3guZmlyc3RDaGlsZC5kZWxldGVEYXRhKDAsIDUpOwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbC1zZWN0aW9uLWVsZW1l
bnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rpb24tZWxlbWVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA5ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWwt
c2VjdGlvbi1lbGVtZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwLDkgKzIw
LDcgQEAKIFBBU1MgYm9keS5jaGlsZEF0SW5kZXgoNCkuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBB
WExhbmRtYXJrTmF2aWdhdGlvbicKIFBBU1MgYm9keS5jaGlsZEF0SW5kZXgoNSkuc3Vicm9sZSBp
cyAnQVhTdWJyb2xlOiBBWExhbmRtYXJrQ29tcGxlbWVudGFyeScKIFBBU1MgYm9keS5jaGlsZEF0
SW5kZXgoNikuY2hpbGRBdEluZGV4KDApLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogJwotUEFTUyBi
b2R5LmNoaWxkQXRJbmRleCg2KS5jaGlsZEF0SW5kZXgoMSkuc3Vicm9sZSBpcyAnQVhTdWJyb2xl
OiAnCiBQQVNTIGJvZHkuY2hpbGRBdEluZGV4KDcpLmNoaWxkQXRJbmRleCgwKS5zdWJyb2xlIGlz
ICdBWFN1YnJvbGU6ICcKLVBBU1MgYm9keS5jaGlsZEF0SW5kZXgoNykuY2hpbGRBdEluZGV4KDEp
LnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
dXBkYXRlLWNoaWxkcmVuLXdoZW4tYXJpYS1yb2xlLWNoYW5nZXMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA5ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Vw
ZGF0ZS1jaGlsZHJlbi13aGVuLWFyaWEtcm9sZS1jaGFuZ2VzLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAKIAogCiBQQVNTIHBhcmVudC5jaGlsZEF0SW5kZXgoMCku
cm9sZSBpcyAnQVhSb2xlOiBBWEJ1dHRvbicKLVBBU1MgcGFyZW50LmNoaWxkQXRJbmRleCgxKS5y
b2xlIGlzICdBWFJvbGU6ICcKK1BBU1MgcGFyZW50LmNoaWxkQXRJbmRleCgxKSA9PSBudWxsIHx8
IHBhcmVudC5jaGlsZEF0SW5kZXgoMSkuaXNWYWxpZCA9PSBmYWxzZSBpcyB0cnVlCiBQQVNTIHBh
cmVudC5jaGlsZEF0SW5kZXgoMCkucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCiBQQVNT
IHBhcmVudC5jaGlsZEF0SW5kZXgoMSkucm9sZSBpcyAnQVhSb2xlOiBBWEJ1dHRvbicKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1wcmVkaWNhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGljYXRlLmh0bWwJ
KHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvc2VhcmNoLXByZWRpY2F0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBA
CiA8aW5wdXQgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJDaGVja2JveCIgLz4gY2hlY2tib3g8YnIg
Lz4KIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiIC8+CiA8L2Zvcm0+Ci08aW1n
IGlkPSJpbWFnZSIgc3JjPSJyZXNvdXJjZXMvY2FrZS5wbmciIC8+Cis8aW1nIGlkPSJpbWFnZSIg
c3JjPSJyZXNvdXJjZXMvY2FrZS5wbmciIGFsdD0iVGVzdCI+CiA8aDE+Zmlyc3QgaGVhZGluZyBs
ZXZlbCAxPC9oMT4KIDxoMT5zZWNvbmQgaGVhZGluZyBsZXZlbCAxPC9oMT4KIDxoMj5oZWFkaW5n
IGxldmVsIDI8L2gyPgpAQCAtNTIsMTQgKzUyLDEzIEBACiAgICAgICAgIHZhciBzdGFydEVsZW1l
bnQ7CiAgICAgICAgIHZhciBpc0RpcmVjdGlvbk5leHQ7CiAgICAgICAgIHZhciBzZWFyY2hLZXk7
Ci0gICAgICAgIHZhciBzZWFyY2hUZXh0OworICAgICAgICB2YXIgc2VhcmNoVGV4dCA9ICIiOwog
ICAgICAgICB2YXIgcmVzdWx0RWxlbWVudDsKICAgICAgICAgCiAgICAgICAgIC8vIEFueSBlbGVt
ZW50LgogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRy
dWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEFueVR5cGVTZWFyY2hLZXkiOwotICAgICAgICBz
ZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1l
bnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25O
ZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxl
bWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKICAgICAgICAgc2hvdWxkQmUo
InJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGJsb2NrcXVvdGUg
bGV2ZWwgMSciKTsKQEAgLTY4LDcgKzY3LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAg
ICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhCbG9j
a3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAg
ICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJj
aFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFy
Y2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xl
OiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBibG9ja3F1b3RlIGxldmVsIDEn
Iik7CkBAIC03Nyw3ICs3NSw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNE
aXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYQmxvY2txdW90ZVNl
YXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVt
ZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRF
bGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAg
IHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVl
IiwgIidBWFZhbHVlOiBzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpAQCAtODYsNyArODMs
NiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRy
dWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEJvbGRGb250U2VhcmNoS2V5IjsKLSAgICAgICAg
c2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVt
ZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9u
TmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVz
dWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNhbnMt
c2VyaWYgYmxhY2sgYm9sZCB0ZXh0IHdpdGggdW5kZXJsaW5lJyIpOwpAQCAtOTUsNyArOTEsNiBA
QAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7
CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEJ1dHRvblNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJj
aFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51
aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQs
IHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50
LnJvbGUiLCAiJ0FYUm9sZTogQVhCdXR0b24nIik7CiAgICAgICAgIApAQCAtMTAzLDcgKzk4LDYg
QEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNl
ZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVl
OwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhDaGVja0JveFNlYXJjaEtleSI7Ci0gICAgICAgIHNl
YXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVu
dC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5l
eHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVt
ZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhDaGVja0JveCciKTsKICAgICAgICAgCkBAIC0xMTEsNyAr
MTA1LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Zm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQg
PSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhDaGVja0JveFNlYXJjaEtleSI7Ci0gICAg
ICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVy
RWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVj
dGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhDaGVja0JveCciKTsKICAgICAgICAgCkBAIC0x
MTksNyArMTEyLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlv
bk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhEaWZmZXJlbnRUeXBlU2VhcmNo
S2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQg
PSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1l
bnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CiAg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBm
aXJzdCBibG9ja3F1b3RlIGxldmVsIDEnIik7CkBAIC0xMjgsNyArMTIwLDYgQEAKICAgICAgICAg
c3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hp
bGRBdEluZGV4KDIpOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBz
ZWFyY2hLZXkgPSAiQVhGb250Q2hhbmdlU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9
IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNo
S2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIs
ICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5j
aGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGlj
IHRleHQnIik7CkBAIC0xMzcsNyArMTI4LDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDIpOwogICAg
ICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhGb250
Q29sb3JDaGFuZ2VTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAg
ICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRl
eHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFY
R3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2VyaWYgYmx1ZSBpdGFsaWMgdGV4dCciKTsKQEAg
LTE0OSw3ICsxMzksNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0
aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEdyYXBoaWNTZWFyY2hLZXki
OwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNv
bnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwg
aXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRC
ZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSW1hZ2UnIik7CiAgICAgICAgIApA
QCAtMTU3LDcgKzE0Niw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJl
Y3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGluZ0xldmVsMVNl
YXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVt
ZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRF
bGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAg
IHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIpOwog
ICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFs
dWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGhlYWRpbmcgbGV2ZWwgMSciKTsKQEAgLTE2Niw3ICsxNTQs
NiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRy
dWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDJTZWFyY2hLZXkiOwotICAg
ICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5l
ckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJl
Y3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVz
dWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVl
OiBoZWFkaW5nIGxldmVsIDInIik7CkBAIC0xNzUsNyArMTYyLDYgQEAKICAgICAgICAgc3RhcnRF
bGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hL
ZXkgPSAiQVhIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51
bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZv
clNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5
LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICIn
QVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNo
aWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBsZXZlbCAzJyIp
OwpAQCAtMTg0LDcgKzE3MCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNE
aXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGluZ0xldmVs
NFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRF
bGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3Rh
cnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIp
OwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5n
VmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgNCciKTsKQEAgLTE5Myw3ICsxNzgsNiBA
QAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7
CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDVTZWFyY2hLZXkiOwotICAgICAg
ICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVs
ZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rp
b25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0
RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKICAgICAgICAgc2hvdWxkQmUo
InJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBo
ZWFkaW5nIGxldmVsIDUnIik7CkBAIC0yMDIsNyArMTg2LDYgQEAKICAgICAgICAgc3RhcnRFbGVt
ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkg
PSAiQVhIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7
CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNl
YXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBz
ZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhS
b2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBsZXZlbCA2JyIpOwpA
QCAtMjExLDcgKzE5NCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCg2KTsKICAgICAgICAgaXNEaXJl
Y3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGluZ1NhbWVMZXZl
bFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRF
bGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3Rh
cnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIp
OwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5n
VmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBoZWFkaW5nIGxldmVsIDEnIik7CkBAIC0yMjAsNyAr
MjAyLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Zm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQg
PSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nU2VhcmNoS2V5IjsKLSAgICAg
ICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJF
bGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0
aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CiAgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTog
Zmlyc3QgaGVhZGluZyBsZXZlbCAxJyIpOwpAQCAtMjI5LDcgKzIxMCw2IEBACiAgICAgICAgIHN0
YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2Vh
cmNoS2V5ID0gIkFYSXRhbGljRm9udFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBu
dWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtl
eSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAi
J0FYUm9sZTogQVhHcm91cCciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hp
bGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzZXJpZiBibHVlIGl0YWxpYyB0
ZXh0JyIpOwpAQCAtMjM4LDcgKzIxOCw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAg
ICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFYTGFuZG1h
cmtTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0
RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0
YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAg
ICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7
CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTog
QVhMYW5kbWFya0Jhbm5lciciKTsKQEAgLTI0Nyw3ICsyMjYsNiBAQAogICAgICAgICBzdGFydEVs
ZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtl
eSA9ICJBWExpbmtTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKICAgICAg
ICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRl
eHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFY
TGluayciKTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDAp
LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBsaW5rJyIpOwpAQCAtMjU2LDcgKzIzNCw2IEBACiAg
ICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50LmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAg
ICAgICAgc2VhcmNoS2V5ID0gIkFYTGlzdFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQg
PSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJj
aEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUi
LCAiJ0FYUm9sZTogQVhMaXN0JyIpOwogICAgICAgICAKQEAgLTI2NCw3ICsyNDEsNiBAQAogICAg
ICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAg
ICAgIHNlYXJjaEtleSA9ICJBWExpdmVSZWdpb25TZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hU
ZXh0ID0gbnVsbDsKICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlF
bGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBz
ZWFyY2hLZXksIHNlYXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5y
b2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVt
ZW50LnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEFSSUFMaXZlJykiLCAiJ3BvbGl0ZSciKTsKQEAg
LTI3Niw3ICsyNTIsNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0
aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFBsYWluVGV4dFNlYXJjaEtl
eSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0g
Y29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50
LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOwogICAg
ICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogZmly
c3QgYmxvY2txdW90ZSBsZXZlbCAxJyIpOwpAQCAtMjg1LDcgKzI2MCw2IEBACiAgICAgICAgIHN0
YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2Vh
cmNoS2V5ID0gIkFYUmFkaW9Hcm91cFNlYXJjaEtleSI7Ci0gICAgICAgIHNlYXJjaFRleHQgPSBu
dWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtl
eSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAi
J0FYUm9sZTogQVhSYWRpb0dyb3VwJyIpOwogICAgICAgICAKQEAgLTI5Myw3ICsyNjcsNiBAQAog
ICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAg
ICAgICAgIHNlYXJjaEtleSA9ICJBWFNhbWVUeXBlU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNo
VGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVp
RWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwg
c2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
cm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxl
bWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBibG9j
a3F1b3RlIGxldmVsIDEnIik7CkBAIC0zMDIsNyArMjc1LDYgQEAKICAgICAgICAgc3RhcnRFbGVt
ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkg
PSAiQVhTdGF0aWNUZXh0U2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAg
ICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJj
aFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFy
Y2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xl
OiBBWFN0YXRpY1RleHQnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0cmlu
Z1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCBibG9ja3F1b3RlIGxldmVsIDEnIik7CkBAIC0zMTEs
NyArMjgzLDYgQEAKICAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDIpOwogICAgICAgICBpc0RpcmVjdGlvbk5l
eHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hLZXkgPSAiQVhTdHlsZUNoYW5nZVNlYXJjaEtleSI7
Ci0gICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwogICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBp
c0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CiAgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKICAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBzZXJpZiBibHVlIGl0YWxpYyB0ZXh0JyIpOwpAQCAtMzIwLDcgKzI5MSw2IEBACiAgICAg
ICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50
LmNoaWxkQXRJbmRleCgxOCk7CiAgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CiAgICAg
ICAgIHNlYXJjaEtleSA9ICJBWFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5IjsKLSAgICAgICAgc2Vh
cmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50
LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4
dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1l
bnQucm9sZSIsICInQVhSb2xlOiBBWFRhYmxlJyIpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0
RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5z
dHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Vjb25kIHRhYmxlIGhlYWRpbmcgbGV2ZWwgMSciKTsK
QEAgLTMyOSw3ICsyOTksNiBAQAogICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CiAgICAgICAgIGlzRGly
ZWN0aW9uTmV4dCA9IHRydWU7CiAgICAgICAgIHNlYXJjaEtleSA9ICJBWFRhYmxlU2VhcmNoS2V5
IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBj
b250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQs
IGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFRhYmxlJyIpOwogICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLmNo
aWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogZmlyc3QgdGFibGUgaGVhZGlu
ZyBsZXZlbCAxJyIpOwpAQCAtMzM4LDcgKzMwNyw2IEBACiAgICAgICAgIHN0YXJ0RWxlbWVudCA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsK
ICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKICAgICAgICAgc2VhcmNoS2V5ID0gIkFY
VGV4dEZpZWxkU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CiAgICAgICAg
IHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRp
Y2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0
KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFRl
eHRGaWVsZCciKTsKICAgICAgICAgCkBAIC0zNDYsNyArMzE0LDYgQEAKICAgICAgICAgc3RhcnRF
bGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hL
ZXkgPSAiQVhVbmRlcmxpbmVTZWFyY2hLZXkiOwotICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsK
ICAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNl
YXJjaFRleHQpOwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJv
bGU6IEFYR3JvdXAnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJ
bmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Fucy1zZXJpZiBibGFjayBib2xkIHRl
eHQgd2l0aCB1bmRlcmxpbmUnIik7CkBAIC0zNTUsNyArMzIyLDYgQEAKICAgICAgICAgc3RhcnRF
bGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApOwogICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwogICAgICAgICBzZWFyY2hL
ZXkgPSAiQVhVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5IjsKLSAgICAgICAgc2VhcmNoVGV4dCA9IG51
bGw7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZv
clNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5
LCBzZWFyY2hUZXh0KTsKICAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICIn
QVhSb2xlOiBBWExpbmsnIik7CiAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogbGluayciKTsKQEAgLTM2Niw3ICsz
MzIsNyBAQAogICAgICAgICAvLyBQcmV2aW91cyB0ZXh0IHNlYXJjaC4KICAgICAgICAgc3RhcnRF
bGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDEwKTsKICAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gZmFsc2U7Ci0gICAgICAgIHNlYXJj
aEtleSA9IG51bGw7CisgICAgICAgIHNlYXJjaEtleSA9ICIiOwogICAgICAgICBzZWFyY2hUZXh0
ID0gInNhbnMtc2VyaWYgYmxhY2sgYm9sZCB0ZXh0IHdpdGggdW5kZXJsaW5lIjsKICAgICAgICAg
cmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGlj
YXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQp
OwogICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3Rh
dGljVGV4dCciKTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L2h0bWwtc2VjdGlvbi1lbGVtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50cy5odG1sCShyZXZp
c2lvbiA5ODk3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0
bWwtc2VjdGlvbi1lbGVtZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMSArNDYsOSBA
QAogCiAgICAgICAgICAgLy8gV2hlbiBhIGhlYWRlciBhbmQgZm9vdGVyIGFyZSBpbnNpZGUgYW4g
YXJ0aWNsZSwgdGhleSBzaG91bGQgbm90IGJlIGxhbmRtYXJrcy4KICAgICAgICAgICBzaG91bGRC
ZSgiYm9keS5jaGlsZEF0SW5kZXgoNikuY2hpbGRBdEluZGV4KDApLnN1YnJvbGUiLCAiJ0FYU3Vi
cm9sZTogJyIpOwotICAgICAgICAgIHNob3VsZEJlKCJib2R5LmNoaWxkQXRJbmRleCg2KS5jaGls
ZEF0SW5kZXgoMSkuc3Vicm9sZSIsICInQVhTdWJyb2xlOiAnIik7CiAKICAgICAgICAgICAvLyBX
aGVuIGEgaGVhZGVyIGFuZCBmb290ZXIgYXJlIGluc2lkZSBhIHNlY3Rpb24sIHRoZXkgc2hvdWxk
IG5vdCBiZSBsYW5kbWFya3MuCiAgICAgICAgICAgc2hvdWxkQmUoImJvZHkuY2hpbGRBdEluZGV4
KDcpLmNoaWxkQXRJbmRleCgwKS5zdWJyb2xlIiwgIidBWFN1YnJvbGU6ICciKTsKLSAgICAgICAg
ICBzaG91bGRCZSgiYm9keS5jaGlsZEF0SW5kZXgoNykuY2hpbGRBdEluZGV4KDEpLnN1YnJvbGUi
LCAiJ0FYU3Vicm9sZTogJyIpOwogICAgIH0KIAogICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4td2syL1NraXBwZWQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLXdrMi9Ta2lwcGVkCShyZXZpc2lvbiA5ODk3
NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi13azIvU2tpcHBlZAkod29ya2luZyBjb3B5
KQpAQCAtMjYsMTAgKzI2LDkgQEAKICMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICMKIAotIyBXZWJLaXQyIG5lZWRzIHRv
IHN1cHBvcnQgYWNjZXNzaWJpbGl0eQotIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQyMTMwPgotIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNj
ZXNzaWJpbGl0eS1yZWxhdGVkIERSVCBBUElzCi0jIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDIxMzE+CisjIFdpbmRvd3MgZG9lcyBub3Qgc3VwcG9ydCBXZWJLaXQy
IGFjY2Vzc2liaWxpdHkuCisjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzEyOTY+CithY2Nlc3NpYmlsaXR5CiBwbGF0Zm9ybS93aW4vYWNjZXNzaWJpbGl0eQogCiAj
IFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgYW4gaW1wbGVtZW50YXRpb24gb2YgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEljb25DaGFuZ2VzCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
U2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAko
cmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAkod29y
a2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDExIEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCiAjIyMgU1RBUlQgT0YgKDEpIENsYXNzaWZpZWQgZmFpbHVyZXMgd2l0
aCBidWcgcmVwb3J0cwogCi0jIFdlYktpdDIgbmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5
Ci0jIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxMzA+Ci0jIFdl
YktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgRFJU
IEFQSXMKLSMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjEzMT4K
LWFjY2Vzc2liaWxpdHkKLXBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5CisjIEFYIHRlc3RzIHRo
YXQgcmVxdWlyZSBoaXQgdGVzdGluZyBkbyBub3Qgd29yayBpbiBXSzIuCisjIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEyOTg+CitwbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9odG1sLXNsaWRlci1pbmRpY2F0b3IuaHRtbAorcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvbGlzdGJveC1oaXQtdGVzdC5odG1sCitwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9p
ZnJhbWUtd2l0aC10aXRsZS1jb3JyZWN0LWhpZXJhcmNoeS5odG1sCiAKICMgU29tZSBjb21wb3Np
dGluZyB0ZXN0cyBmbGFrZXkKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00ODM1ND4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxl
ZGJ5LW92ZXJyaWRlcy1sYWJlbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gOTg5NzcpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEt
bGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC01LDcgKzUsNyBAQAogCiAKIFBBU1MgdGV4dC5kZXNjcmlwdGlvbiBpcyAnQVhEZXNjcmlwdGlv
bjogU2h1dCBkb3duIGNvbXB1dGVyIGFmdGVyIDEwIG1pbnV0ZXMnCi1QQVNTIHRleHQudGl0bGVV
SUVsZW1lbnQoKS5pc1ZhbGlkIGlzIGZhbHNlCitQQVNTIHRleHQudGl0bGVVSUVsZW1lbnQoKSAh
PSBudWxsICYmIHRleHQudGl0bGVVSUVsZW1lbnQoKS5pc1ZhbGlkIGlzIGZhbHNlCiBQQVNTIGxh
YmVsRWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLmh0bWwJKHJl
dmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVk
Ynktb3ZlcnJpZGVzLWxhYmVsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAK
ICAgICAgICAgICBzaG91bGRCZSgidGV4dC5kZXNjcmlwdGlvbiIsICInQVhEZXNjcmlwdGlvbjog
U2h1dCBkb3duIGNvbXB1dGVyIGFmdGVyIDEwIG1pbnV0ZXMnIik7CiAKICAgICAgICAgICAvLyBU
aGVyZSBzaG91bGQgYmUgbm8gdGl0bGUgVUkgZWxlbWVudC4KLSAgICAgICAgICBzaG91bGRCZSgi
dGV4dC50aXRsZVVJRWxlbWVudCgpLmlzVmFsaWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICBzaG91
bGRCZSgidGV4dC50aXRsZVVJRWxlbWVudCgpICE9IG51bGwgJiYgdGV4dC50aXRsZVVJRWxlbWVu
dCgpLmlzVmFsaWQiLCAiZmFsc2UiKTsKICAgICAgICAgICAKICAgICAgICAgICAvLyBUaGUgbGFi
ZWwgZWxlbWVudCBpcyBpbiBhIGdyb3VwLCBpbiBhIGdyb3VwLCBpbiB0aGUgd2ViIGFyZWEuCiAg
ICAgICAgICAgdmFyIGxhYmVsRWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnJvb3RF
bGVtZW50LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLmNo
aWxkQXRJbmRleCgwKTsKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGgtYXMtdGl0
bGUtdWkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RoLWFz
LXRpdGxlLXVpLmh0bWwJKHJldmlzaW9uIDk4OTc3KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS90aC1hcy10aXRsZS11aS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw3IEBA
CiAgICAgICAgICAgICBib2R5LmZvY3VzKCk7CiAgICAgICAgICAgICB2YXIgZ3JvdXAgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMSk7CiAgICAg
ICAgICAgICB2YXIgZ3JvdXAyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQuY2hpbGRBdEluZGV4KDMpOwotCi0gICAgICAgICAgICBpZiAoZ3JvdXAudGl0bGVVSUVsZW1l
bnQoKS5hbGxBdHRyaWJ1dGVzKCkgIT0gIiIgJiYgZ3JvdXAyLnRpdGxlVUlFbGVtZW50KCkuYWxs
QXR0cmlidXRlcygpID09ICIiKQorICAgICAgICAgICAgaWYgKGdyb3VwLnRpdGxlVUlFbGVtZW50
KCkuYWxsQXR0cmlidXRlcygpICE9ICIiICYmIChncm91cDIudGl0bGVVSUVsZW1lbnQoKSA9PSBu
dWxsIHx8IGdyb3VwMi50aXRsZVVJRWxlbWVudCgpLmFsbEF0dHJpYnV0ZXMoKSA9PSAiIikpIAog
ICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlBhc3MiOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIkZhaWwiOwpJbmRleDog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub24tZGF0YS10YWJsZS1jZWxsLXRpdGxlLXVpLWVs
ZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vbi1k
YXRhLXRhYmxlLWNlbGwtdGl0bGUtdWktZWxlbWVudC5odG1sCShyZXZpc2lvbiA5ODk3NykKKysr
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbm9uLWRhdGEtdGFibGUtY2VsbC10aXRsZS11aS1l
bGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDkgQEAKICAgICAgICAgICAg
IC8vIGdldCB0aGUgPHRoPnNraXA8L3RoPiBlbGVtZW50CiAgICAgICAgICAgICB2YXIgZ3JvdXAg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoNSk7
CiAgICAgICAgICAgICB2YXIgdGl0bGVVSSA9IGdyb3VwLnRpdGxlVUlFbGVtZW50KCk7Ci0gICAg
ICAgICAgICB2YXIgYWxsQXR0cmlidXRlcyA9IHRpdGxlVUkuYWxsQXR0cmlidXRlcygpOworICAg
ICAgICAgICAgdmFyIGFsbEF0dHJpYnV0ZXMgPSAiIjsKKyAgICAgICAgICAgIGlmICh0aXRsZVVJ
KQorICAgICAgICAgICAgICAgIGFsbEF0dHJpYnV0ZXMgPSB0aXRsZVVJLmFsbEF0dHJpYnV0ZXMo
KTsKIAogICAgICAgICAgICAgLy8gdmVyaWZ5IGl0IGhhcyBubyB0aXRsZSB1aSBlbGVtZW50ICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmICghYWxsQXR0cmlidXRlcykgewpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gOTkxMjgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzNSBAQAorMjAxMS0xMS0wMiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBw
bGUuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBhY2Nl
c3NpYmlsaXR5LXJlbGF0ZWQgRFJUIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyMTMxCisKKyAgICAgICAgQ2xlYW51cCB0ZXN0cyBhbmQgc2tp
cCBsaXN0cyBzbyB0aGF0IGFjY2Vzc2liaWxpdHkgdGVzdHMgY2FuIHJ1bgorICAgICAgICBpbiBX
SzIuIFRoaXMgbW9zdGx5IGludm9sdmVkIGhhbmRsaW5nIHJldHVybmVkIGVsZW1lbnRzIHRoYXQg
bWlnaHQgYmUgbmlsLAorICAgICAgICBzb21ldGhpbmcgdGhhdCBkaWQgbm90IGhhcHBlbiBpbiBE
UlQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2FyaWEtbGFiZWxsZWRieS1vdmVycmlkZXMtbGFiZWwtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJl
bC5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbm9uLWRhdGEtdGFibGUtY2VsbC10aXRs
ZS11aS1lbGVtZW50Lmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS90aC1hcy10aXRsZS11
aS5odG1sOgorICAgICAgICAgICAgIE1ha2Ugc3VyZSBhIG5pbCB0aXRsZVVJRWxlbWVudCBpcyBh
Y2NvdW50ZWQgZm9yIGluIHRoZXNlIHRlc3RzLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIv
U2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sLXNlY3Rp
b24tZWxlbWVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L2h0bWwtc2VjdGlvbi1lbGVtZW50cy5odG1sOgorICAgICAgICAgICAgIFJlbW92ZSBu
aWwgZWxlbWVudCBhY2Nlc3MgdGhhdCBpcyB1bm5lY2Vzc2FyeS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGljYXRlLmh0bWw6CisgICAgICAgICAgICAg
QWRkIGFuIGFsdCB0YWcgdG8gPGltZz4gc28gdGhhdCBpdCBhbHdheXMgc2hvd3MgdXAgaW4gdGhl
IEFYIHRyZWUuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dGJveC1y
b2xlLXJlcG9ydHMtbm90aWZpY2F0aW9ucy5odG1sOgorICAgICAgICAgICAgIFJlbW92ZSB0aGUg
bm90aWZpY2F0aW9uIGxpc3RlbmVyIHByb3Blcmx5ICh3YXMgY2F1c2luZyBmbGFraW5lc3MpLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3VwZGF0ZS1jaGlsZHJlbi13aGVu
LWFyaWEtcm9sZS1jaGFuZ2VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS91cGRhdGUtY2hpbGRyZW4td2hlbi1hcmlhLXJvbGUtY2hhbmdlcy5odG1s
OgorICAgICAgICAgICAgIEFjY291bnQgZm9yIHdoZW4gZWxlbWVudCdzIHJldHVybmVkIGFyZSBu
aWwuCisgICAgICAgICogcGxhdGZvcm0vd2luLXdrMi9Ta2lwcGVkOgorICAgICAgICAgICAgIFNr
aXAgYWxsIGFjY2Vzc2liaWxpdHkgdGVzdHMgb24gd2luLgorICAgICAgICAqIHBsYXRmb3JtL3dr
Mi9Ta2lwcGVkOgorICAgICAgICAgICAgIFNraXAgYWxsIGFjY2Vzc2liaWxpdHkgdGVzdHMgb24g
Z3RrLgorCiAyMDExLTExLTAyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjk4NzU5LXI5ODc3Myk6IHBsYXRmb3JtL21hYy9mb250cy9jb2xv
ci1iaXRtYXAuaHRtbCBmYWlsaW5nIG9uIExpb24gSW50ZWwgRGVidWcgKFRlc3RzKQo=
</data>
<flag name="review"
          id="111920"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>