<?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>112800</bug_id>
          
          <creation_ts>2013-03-20 06:17:48 -0700</creation_ts>
          <short_desc>Allow port specific text track menu</short_desc>
          <delta_ts>2013-03-20 13:20:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>buildbot</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>859323</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-20 06:17:48 -0700</bug_when>
    <thetext>Not every port will want the text track menu to look or behave the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859324</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-03-20 06:17:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/13461749&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859333</commentid>
    <comment_count>2</comment_count>
      <attachid>194036</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-20 06:27:29 -0700</bug_when>
    <thetext>Created attachment 194036
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859336</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-20 06:29:54 -0700</bug_when>
    <thetext>Attachment 194036 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/media/track/track-user-preferences-expected.txt&apos;, u&apos;LayoutTests/media/track/track-user-preferences.html&apos;, u&apos;LayoutTests/media/video-controls-captions-trackmenu-localized.html&apos;, u&apos;LayoutTests/media/video-controls-captions-trackmenu-sorted.html&apos;, u&apos;LayoutTests/media/video-controls-captions-trackmenu.html&apos;, u&apos;LayoutTests/platform/mac/media/video-controls-captions-trackmenu-expected.txt&apos;, u&apos;LayoutTests/platform/mac/media/video-controls-captions-trackmenu-localized-expected.txt&apos;, u&apos;LayoutTests/platform/mac/media/video-controls-captions-trackmenu-sorted-expected.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/English.lproj/Localizable.strings&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.h&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.h&apos;, u&apos;Source/WebCore/html/shadow/MediaControls.cpp&apos;, u&apos;Source/WebCore/html/track/InbandTextTrack.cpp&apos;, u&apos;Source/WebCore/html/track/InbandTextTrack.h&apos;, u&apos;Source/WebCore/html/track/TextTrack.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrack.h&apos;, u&apos;Source/WebCore/html/track/TextTrackList.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrackList.h&apos;, u&apos;Source/WebCore/page/CaptionUserPreferences.cpp&apos;, u&apos;Source/WebCore/page/CaptionUserPreferences.h&apos;, u&apos;Source/WebCore/page/CaptionUserPreferencesMac.h&apos;, u&apos;Source/WebCore/page/CaptionUserPreferencesMac.mm&apos;, u&apos;Source/WebCore/platform/Language.cpp&apos;, u&apos;Source/WebCore/platform/LocalizedStrings.cpp&apos;, u&apos;Source/WebCore/platform/LocalizedStrings.h&apos;, u&apos;Source/WebCore/platform/graphics/InbandTextTrackPrivate.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.mm&apos;, u&apos;Source/WebCore/testing/InternalSettings.cpp&apos;]&quot; exit_code: 1
Source/WebCore/page/CaptionUserPreferences.h:80:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 32 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>859343</commentid>
    <comment_count>4</comment_count>
      <attachid>194036</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-20 06:32:23 -0700</bug_when>
    <thetext>Comment on attachment 194036
Proposed patch

Attachment 194036 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17200462</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859346</commentid>
    <comment_count>5</comment_count>
      <attachid>194036</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-20 06:34:13 -0700</bug_when>
    <thetext>Comment on attachment 194036
Proposed patch

Attachment 194036 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17195372</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859352</commentid>
    <comment_count>6</comment_count>
      <attachid>194036</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-20 06:45:53 -0700</bug_when>
    <thetext>Comment on attachment 194036
Proposed patch

Attachment 194036 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17214495</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859354</commentid>
    <comment_count>7</comment_count>
      <attachid>194041</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-20 06:46:56 -0700</bug_when>
    <thetext>Created attachment 194041
Update patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859361</commentid>
    <comment_count>8</comment_count>
      <attachid>194041</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-20 06:59:24 -0700</bug_when>
    <thetext>Comment on attachment 194041
Update patch.

Attachment 194041 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17246053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859373</commentid>
    <comment_count>9</comment_count>
      <attachid>194041</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-20 07:16:39 -0700</bug_when>
    <thetext>Comment on attachment 194041
Update patch.

Attachment 194041 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17137556</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859402</commentid>
    <comment_count>10</comment_count>
      <attachid>194054</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-20 07:49:03 -0700</bug_when>
    <thetext>Created attachment 194054
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859439</commentid>
    <comment_count>11</comment_count>
      <attachid>194054</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-20 08:19:49 -0700</bug_when>
    <thetext>Comment on attachment 194054
Updated patch.

Attachment 194054 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17136708

New failing tests:
media/video-controls-captions-trackmenu-localized.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859452</commentid>
    <comment_count>12</comment_count>
      <attachid>194054</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-20 08:40:16 -0700</bug_when>
    <thetext>Comment on attachment 194054
Updated patch.

Attachment 194054 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17190697</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859453</commentid>
    <comment_count>13</comment_count>
      <attachid>194067</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-20 08:42:49 -0700</bug_when>
    <thetext>Created attachment 194067
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859587</commentid>
    <comment_count>14</comment_count>
      <attachid>194067</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-03-20 11:50:37 -0700</bug_when>
    <thetext>Comment on attachment 194067
Updated patch.

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3199
&gt; +        else {
&gt;              track-&gt;setMode(TextTrack::showingKeyword());
&gt; -            if (captionPreferences &amp;&amp; track-&gt;language().length())
&gt; -                captionPreferences-&gt;setPreferredLanguage(track-&gt;language());
&gt;          }

Nit: does this end up with a single line else {} ?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3206
&gt; +    CaptionUserPreferences* captionPreferences = document()-&gt;page() ? document()-&gt;page()-&gt;group().captionPreferences() : 0;
&gt; +    if (captionPreferences) {
&gt; +        captionPreferences-&gt;setShouldShowCaptions(trackToSelect);
&gt; +        if (trackToSelect &amp;&amp; trackToSelect-&gt;language().length())
&gt; +            captionPreferences-&gt;setPreferredLanguage(trackToSelect-&gt;language());

Should this be wrapped in a PLATFORM(MAC) in case not every platform wants to set the preferred language based on the selected track?

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:887
&gt; +        menuItem-&gt;setAttribute(trackIndexAttributeName(), String::number(i), ASSERT_NO_EXCEPTION);

Do we still need this now we have the menu to track map?

&gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:123
&gt; +        return CaptionUserPreferences::shouldShowCaptions();
&gt; +    
&gt;      return MACaptionAppearanceGetShowCaptions(kMACaptionAppearanceDomainUser);

Nit: I think you&apos;re adding whitespace to the line here.

&gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:133
&gt; +        CaptionUserPreferences::setShouldShowCaptions(preference);
&gt;          return;
&gt;      }
&gt; -
&gt; +    
&gt;      MACaptionAppearanceSetShowCaptions(kMACaptionAppearanceDomainUser, preference);

Nit: and maybe here.

&gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:528
&gt; +#endif  // HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
&gt; +    
&gt; +static String trackDisplayName(TextTrack* track)

Nit: and maybe there too.

&gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:607
&gt; +    bool aIsPreferredLanguage = !codePointCompare(aLanguageDisplayName, preferredLanguageDisplayName);

Can you use equalIgnoringCase here?

&gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:610
&gt; +        return aIsPreferredLanguage ? true : false;

return aIsPreferredLanguage;

&gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:620
&gt; +        return aIsMainContent ? true : false;

return aIsMainContent;

&gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:627
&gt; +            return aIsMainContent ? true : false;

ditto

&gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:629
&gt; +            return bIsMainContent ? true : false;

ditto

&gt; Source/WebCore/platform/Language.cpp:160
&gt; -    if (!localeName.isNull() &amp;&amp; !localeName.isEmpty())
&gt; -        return CFLocaleCopyDisplayNameForPropertyValue(CFLocaleCopyCurrent(), kCFLocaleIdentifier, localeName.createCFString().get());
&gt; +    if (!localeName.isNull() &amp;&amp; !localeName.isEmpty()) {
&gt; +        RetainPtr&lt;CFLocaleRef&gt; currentLocale(AdoptCF, CFLocaleCopyCurrent());
&gt; +        return CFLocaleCopyDisplayNameForPropertyValue(currentLocale.get(), kCFLocaleIdentifier, localeName.createCFString().get());
&gt; +    }

My bad :(

&gt; Source/WebCore/platform/graphics/InbandTextTrackPrivate.h:59
&gt;      virtual Kind kind() const { return Subtitles; }
&gt; +
&gt;      virtual bool isClosedCaptions() const { return false; }

Super nit: you didn&apos;t separate these in InbandTextTrackPrivateAVFObjC.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859640</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-20 13:19:34 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 194067 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194067&amp;action=review
&gt; 
&gt; Nit: does this end up with a single line else {} ?
&gt; 
Fixed.

&gt; Should this be wrapped in a PLATFORM(MAC) in case not every platform wants to set the preferred language based on the selected track?
&gt; 
I ended up leaving this as-is because no other port implements the track menu yet and I figured anyone that doesn&apos;t want this behavior can change it when they do.

&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:887
&gt; &gt; +        menuItem-&gt;setAttribute(trackIndexAttributeName(), String::number(i), ASSERT_NO_EXCEPTION);
&gt; 
&gt; Do we still need this now we have the menu to track map?
&gt; 
Yes, for the &quot;Off&quot; menu item. I thought about creating a static TextTrack for it but decided not to. I might come back to this.

&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:123
&gt; &gt; +        return CaptionUserPreferences::shouldShowCaptions();
&gt; &gt; +    
&gt; &gt;      return MACaptionAppearanceGetShowCaptions(kMACaptionAppearanceDomainUser);
&gt; 
&gt; Nit: I think you&apos;re adding whitespace to the line here.
&gt; 
Fixed.

&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:133
&gt; &gt; +        CaptionUserPreferences::setShouldShowCaptions(preference);
&gt; &gt;          return;
&gt; &gt;      }
&gt; &gt; -
&gt; &gt; +    
&gt; &gt;      MACaptionAppearanceSetShowCaptions(kMACaptionAppearanceDomainUser, preference);
&gt; 
&gt; Nit: and maybe here.
&gt; 
Fixed.

&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:528
&gt; &gt; +#endif  // HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
&gt; &gt; +    
&gt; &gt; +static String trackDisplayName(TextTrack* track)
&gt; 
&gt; Nit: and maybe there too.
&gt; 
Fixed.

&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:610
&gt; &gt; +        return aIsPreferredLanguage ? true : false;
&gt; 
&gt; return aIsPreferredLanguage;
&gt; 
Duh - fixed.

&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:620
&gt; &gt; +        return aIsMainContent ? true : false;
&gt; 
&gt; return aIsMainContent;
&gt; 
Fixed.

&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:627
&gt; &gt; +            return aIsMainContent ? true : false;
&gt; 
&gt; ditto
&gt; 
Fixed.

&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMac.mm:629
&gt; &gt; +            return bIsMainContent ? true : false;
&gt; 
&gt; ditto
&gt; 
Fixed.

&gt; &gt; Source/WebCore/platform/graphics/InbandTextTrackPrivate.h:59
&gt; &gt;      virtual Kind kind() const { return Subtitles; }
&gt; &gt; +
&gt; &gt;      virtual bool isClosedCaptions() const { return false; }
&gt; 
&gt; Super nit: you didn&apos;t separate these in InbandTextTrackPrivateAVFObjC.h
&gt;
Fixed.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859641</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-20 13:19:59 -0700</bug_when>
    <thetext>Committed in r146380 : https://trac.webkit.org/r146380</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194036</attachid>
            <date>2013-03-20 06:27:29 -0700</date>
            <delta_ts>2013-03-20 06:46:56 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_13.txt</filename>
            <type>text/plain</type>
            <size>80860</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjIxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxMy0wMy0xOSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyBz
cGVjaWZpYyB0ZXh0IHRyYWNrIG1lbnUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZXhpc3RpbmcgdGVzdHMgdXBkYXRlZCBmb3Ig
Y2hhbmdlcy4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczog
QWRkIGxvY2FsaXphYmxlIHN0cmluZ3MgZm9yIHRleHQgdHJhY2sgbmFtZXMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IHVzZXJQcmVmZXJzQ2FwdGlvbnMgLT4gc2hvdWxk
U2hvd0NhcHRpb25zLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0U2Vs
ZWN0ZWRUZXh0VHJhY2spOiB0b2dnbGVUcmFja0F0SW5kZXggLT4gc2V0U2VsZWN0ZWRUZXh0VHJh
Y2suCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyUHJlZmVyc0NhcHRp
b25zKTogdXNlclByZWZlcnNDYXB0aW9ucyAtPiBzaG91bGRTaG93Q2FwdGlvbnMuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tL
aW5kKTogR2V0IHByZWZlcmVuY2VzIGZyb20gQ2FwdGlvblVzZXJQcmVmZXJlbmNlcworICAgICAg
ICAgICAgaW5zdGVhZCBvZiBmcm9tIFNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2spOiBSZW5hbWVkIGZyb20gdG9nZ2xlVHJh
Y2tBdEluZGV4LiBOb3cgdGFrZXMKKyAgICAgICAgICAgIGEgVGV4dFRyYWNrKiBpbnN0ZWFkIG9m
IGFuIGludC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWQpOiBEb24ndCBmb3JjZSBhIHJlY2FsY3VsYXRpb24gdW5sZXNzIAorICAg
ICAgICAgICAgY2FwdGlvbnMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgdG8gYXZvaWQgdW5uZWNlc3Nh
cnkgdGhyYXNoLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKTogVXNlIHRoZSBtZW51IHRvIHRyYWNrCisgICAgICAgICAgICBtYXAgaW5zdGVh
ZCBvZiBqdXN0IHRoZSB0cmFjayBpbmRleC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRlRGlzcGxheSk6IEJ1aWxkIGFu
ZCBjb25maWd1cmUgdGhlCisgICAgICAgICAgICBtZW51IGZyb20gdGhlIG1lbnUgdG8gdHJhY2sg
bWFwLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xp
c3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSk6IFN0YXJ0IHdpdGggYSBsaXN0CisgICAg
ICAgICAgICBvZiB0cmFja3MgYWxyZWFkeSBzb3J0ZWQgYWNjb3JkaW5nIHRvIHBsYXRmb3JtIHNw
ZWNpZmljIHJ1bGVzLiBCdWlsZCBhIG1lbnUgdG8gdHJhY2sgbWFwCisgICAgICAgICAgICBzbyB0
cmFja3MgYXJlIHJldGFpbmVkIHdoaWxlIHRoZSBtZW51IGlzIHZpc2libGUuCisgICAgICAgICog
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDoKKworICAgICAgICAqIGh0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6
dGV4dFRyYWNrUHJlZmVyZW5jZXNDaGFuZ2VkKTogQ2FsbCBjbG9zZWRDYXB0aW9uVHJhY2tzQ2hh
bmdlZCBzbyB0aGUKKyAgICAgICAgICAgIHRyYWNrIG1lbnUgd2lsbCBiZSByZWJ1aWx0IGJlZm9y
ZSBpdCBpcyBzaG93biBhZ2Fpbi4KKworICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRy
YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6Y29udGFpbnNPbmx5
Rm9yY2VkU3VidGl0bGVzKTogTmV3LCBwYXNzdGhyb3VnaCB0byB0aGUgcHJpdmF0ZSB0cmFjay4K
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6aXNNYWluUHJvZ3JhbUNvbnRlbnQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6aXNFYXN5VG9SZWFk
KTogRGl0dG8uCisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaDoKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0
VHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmNvbnRhaW5z
KTogTmV3LgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oOgorCisgICAgICAg
ICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMpOiBQdWxsIGluIGZy
b20gLmggZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp+
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6c2hvdWxkU2hvd0NhcHRpb25zKTogUmVuYW1lZCBmcm9tIHVzZXJQ
cmVmZXJzQ2FwdGlvbnMuIAorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6c2V0U2hvdWxkU2hvd0NhcHRpb25zKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclBy
ZWZlcnNTdWJ0aXRsZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzU3VidGl0bGVzKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVz
ZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2Fw
dGlvblVzZXJQcmVmZXJlbmNlczo6ZGlzcGxheU5hbWVGb3JUcmFjayk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c29ydGVkVHJhY2tMaXN0Rm9yTWVu
dSk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oOgorCisg
ICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmg6CisgICAgICAgICogcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6c2hvdWxkU2hvd0NhcHRpb25zKTogUmVuYW1lZCBmcm9tIHVz
ZXJQcmVmZXJzQ2FwdGlvbnMuIAorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYzo6dXNlclByZWZlcnNDYXB0aW9ucyk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzU3VidGl0bGVzKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjp0cmFja0Rpc3BsYXlOYW1lKTogVXBkYXRlIGxvZ2ljIHVzZWQgdG8gYnVp
bGQgdHJhY2sgdGl0bGUuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjOjpkaXNwbGF5TmFtZUZvclRyYWNrKTogQ2FsbCB0cmFja0Rpc3BsYXlOYW1lLgorICAgICAg
ICAoV2ViQ29yZTo6dGV4dFRyYWNrQ29tcGFyZSk6IFRleHQgdHJhY2sgdGl0bGUgc29ydCBjb21w
YXJpc29uIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYzo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSk6IE5ldy4gU29ydCB0aGUgbGlzdCBvZiB0cmFj
a3MKKyAgICAgICAgICAgIGFjY29yZGluZyB0byB0aXRsZSwgbGFuZ3VhZ2UsIGFuZCB1c2VyIHBy
ZWZlcmVuY2VzLgorCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZGlzcGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZSk6IERvbid0IGxlYWsgdGhlIENG
TG9jYWxlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRUcmFja0NvdW50cnlBbmRMYW5ndWFnZU1lbnVJdGVt
VGV4dCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRUcmFja0xhbmd1YWdlTWVudUl0ZW1U
ZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjbG9zZWRDYXB0aW9uVHJhY2tNZW51SXRl
bVRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNkaFRyYWNrTWVudUl0ZW1UZXh0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjplYXN5UmVhZGVyVHJhY2tNZW51SXRlbVRleHQpOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMp
OiBOZXcsIHJldHVybiBBVkZvdW5kYXRpb24gcHJvcGVydHkuCisgICAgICAgIChXZWJDb3JlOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQzo6aXNNYWluUHJvZ3JhbUNvbnRlbnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjppc0Vh
c3lUb1JlYWQpOiBEaXR0by4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRTaG91bGREaXNwbGF5
VHJhY2tLaW5kKTogU2V0IHNldHRpbmcgdmlhIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMKKyAgICAg
ICAgICAgIGluc3RlYWQgb2YgZnJvbSBTZXR0aW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsU2V0dGluZ3M6OnNob3VsZERpc3BsYXlUcmFja0tpbmQpOiBHZXQgc2V0dGluZyBmcm9tIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXMKKyAgICAgICAgICAgIGluc3RlYWQgb2YgZnJvbSBTZXR0aW5n
cy4KKwogMjAxMy0wMy0xOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KIAogICAgICAgICBbUXRdIFN1cHBvcnQga2VybmluZyBpbiBmYXN0IHBhdGggZm9u
dCByZW5kZXJpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFi
bGUuc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xv
Y2FsaXphYmxlLnN0cmluZ3MJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0Vu
Z2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQpAQCAtMTksMTIg
KzE5LDI3IEBACiAALwAqACAAdgBpAHMAaQBiAGwAZQAgAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAg
AHAAbAB1AGcALQBpAG4AIABoAG8AcwB0ACAAcAByAG8AYwBlAHMAcwAuACAAVABoAGUAIABmAGkA
cgBzAHQAIABhAHIAZwB1AG0AZQBuAHQAIABpAHMAIAB0AGgAZQAgAHAAbAB1AGcALQBpAG4AIABu
AGEAbQBlACAAYQBuAGQAIAB0AGgAZQAgAHMAZQBjAG8AbgBkACAAYQByAGcAdQBtAGUAbgB0ACAA
aQBzACAAdABoAGUAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4AIABuAGEAbQBlAC4AIAAqAC8ACiAA
IgAlAEAAIAAoACUAQAAgAEkAbgB0AGUAcgBuAGUAdAAgAHAAbAB1AGcALQBpAG4AKQAiACAAPQAg
ACIAJQBAACAAKAAlAEAAIABJAG4AdABlAHIAbgBlAHQAIABwAGwAdQBnAC0AaQBuACkAIgA7AAog
AAorAC8AKgAgAFQAZQB4AHQAIAB0AHIAYQBjAGsAIABkAGkAcwBwAGwAYQB5ACAAbgBhAG0AZQAg
AGYAbwByAG0AYQB0ACAAdABoAGEAdAAgAGkAbgBjAGwAdQBkAGUAcwAgAHQAaABlACAAbABhAG4A
ZwB1AGEAZwBlACAAbwBmACAAdABoAGUAIABzAHUAYgB0AGkAdABsAGUALAAgAGkAbgAgAHQAaABl
ACAAZgBvAHIAbQAgAG8AZgAgACcAVABpAHQAbABlACAAKABMAGEAbgBnAHUAYQBnAGUAKQAnACAA
KgAvAAorACIAJQBAACAAKAAlAEAAKQAiACAAPQAgACIAJQBAACAAKAAlAEAAKQAiADsACisACisA
LwAqACAAVABlAHgAdAAgAHQAcgBhAGMAawAgAGQAaQBzAHAAbABhAHkAIABuAGEAbQBlACAAZgBv
AHIAbQBhAHQAIAB0AGgAYQB0ACAAaQBuAGMAbAB1AGQAZQBzACAAdABoAGUAIABjAG8AdQBuAHQA
cgB5ACAAYQBuAGQAIABsAGEAbgBnAHUAYQBnAGUAIABvAGYAIAB0AGgAZQAgAHMAdQBiAHQAaQB0
AGwAZQAsACAAaQBuACAAdABoAGUAIABmAG8AcgBtACAAbwBmACAAJwBUAGkAdABsAGUAIAAoAEwA
YQBuAGcAdQBhAGcAZQAtAEMAbwB1AG4AdAByAHkAKQAnACAAKgAvAAorACIAJQBAACAAKAAlAEAA
LQAlAEAAKQAiACAAPQAgACIAJQBAACAAKAAlAEAALQAlAEAAKQAiADsACisACisALwAqACAAVABl
AHgAdAAgAHQAcgBhAGMAawAgAGMAbwBuAHQAYQBpAG4AcwAgAGMAbABvAHMAZQBkACAAYwBhAHAA
dABpAG8AbgBzACAAKgAvAAorACIAJQBAACAAQwBDACIAIAA9ACAAIgAlAEAAIABDAEMAIgA7AAor
AAorAC8AKgAgAFQAZQB4AHQAIAB0AHIAYQBjAGsAIABjAG8AbgB0AGEAaQBuAHMAIABzAGkAbQBw
AGwAaQBmAGkAZQBkACAAKAAzAHIAZAAgAGcAcgBhAGQAZQAgAGwAZQB2AGUAbAApACAAcwB1AGIA
dABpAHQAbABlAHMAIAAqAC8ACisAIgAlAEAAIABFAGEAcwB5ACAAUgBlAGEAZABlAHIAIgAgAD0A
IAAiACUAQAAgAEUAYQBzAHkAIABSAGUAYQBkAGUAcgAiADsACisACiAALwAqACAAdgBpAHMAaQBi
AGwAZQAgAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAgAG4AZQB0AHcAbwByAGsAIABwAHIAbwBjAGUA
cwBzAC4AIABUAGgAZQAgAGEAcgBnAHUAbQBlAG4AdAAgAGkAcwAgAHQAaABlACAAYQBwAHAAbABp
AGMAYQB0AGkAbwBuACAAbgBhAG0AZQAuACAAKgAvAAogACIAJQBAACAATgBlAHQAdwBvAHIAawBp
AG4AZwAiACAAPQAgACIAJQBAACAATgBlAHQAdwBvAHIAawBpAG4AZwAiADsACiAACiAALwAqACAA
dgBpAHMAaQBiAGwAZQAgAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAgAG8AZgBmAGwAaQBuAGUAIABz
AHQAbwByAGEAZwBlACAAcAByAG8AYwBlAHMAcwAuACAAVABoAGUAIABhAHIAZwB1AG0AZQBuAHQA
IABpAHMAIAB0AGgAZQAgAGEAcABwAGwAaQBjAGEAdABpAG8AbgAgAG4AYQBtAGUALgAgACoALwAK
IAAiACUAQAAgAE8AZgBmAGwAaQBuAGUAIABTAHQAbwByAGEAZwBlACIAIAA9ACAAIgAlAEAAIABP
AGYAZgBsAGkAbgBlACAAUwB0AG8AcgBhAGcAZQAiADsACiAACisALwAqACAAVABlAHgAdAAgAHQA
cgBhAGMAawAgAGMAbwBuAHQAYQBpAG4AcwAgAHMAdQBiAHQAaQB0AGwAZQBzACAAZgBvAHIAIAB0
AGgAZQAgAGQAZQBhAGYAIABhAG4AZAAgAGgAYQByAGQAIABvAGYAIABoAGUAYQByAGkAbgBnACAA
KgAvAAorACIAJQBAACAAUwBEAEgAIgAgAD0AIAAiACUAQAAgAFMARABIACIAOwAKKwAKIAAvACoA
IABWAGkAcwBpAGIAbABlACAAbgBhAG0AZQAgAG8AZgAgAHQAaABlACAAcwBoAGEAcgBlAGQAIAB3
AG8AcgBrAGUAcgAgAHAAcgBvAGMAZQBzAHMALgAgAFQAaABlACAAYQByAGcAdQBtAGUAbgB0ACAA
aQBzACAAdABoAGUAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4AIABuAGEAbQBlAC4AIAAqAC8ACiAA
IgAlAEAAIABTAGgAYQByAGUAZAAgAFcAbwByAGsAZQByACIAIAA9ACAAIgAlAEAAIABTAGgAYQBy
AGUAZAAgAFcAbwByAGsAZQByACIAOwAKIAAKQEAgLTUxNywxMiArNTMyLDEyIEBACiAALwAqACAA
VQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAgACoALwAKIAAiAFUAbgBkAGUAcgBsAGkA
bgBlACAAKABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACkAIgAgAD0AIAAiAFUAbgBk
AGUAcgBsAGkAbgBlACIAOwAKIAAKLQAvACoAIABNAGUAbgB1ACAAaQB0AGUAbQAgAGwAYQBiAGUA
bAAgAGYAbwByACAAYQAgAGMAbABvAHMAZQBkACAAYwBhAHAAdABpAG8AbgBzACAAdAByAGEAYwBr
ACAAdABoAGEAdAAgAGgAYQBzACAAbgBvACAAbwB0AGgAZQByACAAbgBhAG0AZQAgACoALwAKLQAi
AFUAbgBrAG4AbwB3AG4AIAAoAGMAbABvAHMAZQBkACAAYwBhAHAAdABpAG8AbgBzACAAdAByAGEA
YwBrACkAIgAgAD0AIAAiAFUAbgBrAG4AbwB3AG4AIgA7AAotAAogAC8AKgAgAFUAbgBrAG4AbwB3
AG4AIABmAGkAbABlAHMAaQB6AGUAIABGAFQAUAAgAGQAaQByAGUAYwB0AG8AcgB5ACAAbABpAHMA
dABpAG4AZwAgAGkAdABlAG0AIAAqAC8ACiAAIgBVAG4AawBuAG8AdwBuACAAKABmAGkAbABlAHMA
aQB6AGUAKQAiACAAPQAgACIAVQBuAGsAbgBvAHcAbgAiADsACiAACisALwAqACAATQBlAG4AdQAg
AGkAdABlAG0AIABsAGEAYgBlAGwAIABmAG8AcgAgAGEAIAB0AGUAeAB0ACAAdAByAGEAYwBrACAA
dABoAGEAdAAgAGgAYQBzACAAbgBvACAAbwB0AGgAZQByACAAbgBhAG0AZQAgACoALwAKKwAiAFUA
bgBrAG4AbwB3AG4AIAAoAHQAZQB4AHQAIAB0AHIAYQBjAGsAKQAiACAAPQAgACIAVQBuAGsAbgBv
AHcAbgAiADsACisACiAALwAqACAAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAgACoA
LwAKIAAiAFUAbgBsAGkAbgBrACAAKABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACkA
IgAgAD0AIAAiAFUAbgBsAGkAbgBrACIAOwAKIAAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIwLDcgKzMyMCw3
IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICAgICBpZiAoZG9j
dW1lbnQtPnBhZ2UoKSkgewogICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9u
UHJlZmVyZW5jZXMgPSBkb2N1bWVudC0+cGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNl
cygpOwogICAgICAgICBpZiAoY2FwdGlvblByZWZlcmVuY2VzLT51c2VySGFzQ2FwdGlvblByZWZl
cmVuY2VzKCkpCi0gICAgICAgICAgICBtX2Rpc2FibGVDYXB0aW9ucyA9ICFjYXB0aW9uUHJlZmVy
ZW5jZXMtPnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKKyAgICAgICAgICAgIG1fZGlzYWJsZUNhcHRp
b25zID0gIWNhcHRpb25QcmVmZXJlbmNlcy0+c2hvdWxkU2hvd0NhcHRpb25zKCk7CiAgICAgfQog
I2VuZGlmCiB9CkBAIC0yODYyLDcgKzI4NjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFNlbGVjdGVkVGV4dFRyCiAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7
CiAKICAgICBpZiAoIXBsYXRmb3JtVHJhY2spIHsKLSAgICAgICAgdG9nZ2xlVHJhY2tBdEluZGV4
KHRleHRUcmFja3NPZmZJbmRleCgpLCB0cnVlKTsKKyAgICAgICAgc2V0U2VsZWN0ZWRUZXh0VHJh
Y2soMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI4NzcsNyArMjg3Nyw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHIKIAogICAgIGlmIChpID09IG1f
dGV4dFRyYWNrcy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB0b2dnbGVUcmFja0F0
SW5kZXgoaSwgdHJ1ZSk7CisgICAgc2V0U2VsZWN0ZWRUZXh0VHJhY2sodGV4dFRyYWNrKTsKIH0K
IAogVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gPiBIVE1MTWVkaWFFbGVtZW50Ojpw
bGF0Zm9ybVRleHRUcmFja3MoKQpAQCAtMzA3Niw3ICszMDc2LDcgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50Ojp1c2VyUHJlZmVyc0NhcHRpbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBD
YXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBwYWdlLT5ncm91cCgp
LmNhcHRpb25QcmVmZXJlbmNlcygpOwotICAgIHJldHVybiBjYXB0aW9uUHJlZmVyZW5jZXMtPnVz
ZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSAmJiBjYXB0aW9uUHJlZmVyZW5jZXMtPnVzZXJQcmVm
ZXJzQ2FwdGlvbnMoKTsKKyAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzLT51c2VySGFzQ2Fw
dGlvblByZWZlcmVuY2VzKCkgJiYgY2FwdGlvblByZWZlcmVuY2VzLT5zaG91bGRTaG93Q2FwdGlv
bnMoKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlz
VHJhY2tLaW5kKFN0cmluZyBraW5kKSBjb25zdApAQCAtMzA4NCwxNSArMzA4NCwxOSBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJJc0ludGVyZXN0ZWRJCiAgICAgaWYgKG1fZGlzYWJsZUNh
cHRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5w
YWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDYXB0
aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBwYWdlLT5ncm91cCgpLmNh
cHRpb25QcmVmZXJlbmNlcygpOwogICAgIGJvb2wgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0
bGVzID0gbV9jbG9zZWRDYXB0aW9uc1Zpc2libGUgfHwgdXNlclByZWZlcnNDYXB0aW9ucygpOwog
CiAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpCi0gICAgICAg
IHJldHVybiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnNob3VsZERpc3BsYXlTdWJ0aXRsZXMoKSkg
fHwgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOworICAgICAgICByZXR1cm4gY2FwdGlv
blByZWZlcmVuY2VzLT51c2VyUHJlZmVyc1N1YnRpdGxlcygpIHx8IHVzZXJQcmVmZXJzQ2FwdGlv
bnNPclN1YnRpdGxlczsKICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29y
ZCgpKQotICAgICAgICByZXR1cm4gKHNldHRpbmdzICYmIHNldHRpbmdzLT5zaG91bGREaXNwbGF5
Q2FwdGlvbnMoKSkgfHwgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOworICAgICAgICBy
ZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzLT51c2VyUHJlZmVyc0NhcHRpb25zKCkgfHwgdXNlclBy
ZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOwogICAgIGlmIChraW5kID09IFRleHRUcmFjazo6ZGVz
Y3JpcHRpb25zS2V5d29yZCgpKQotICAgICAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3Mt
PnNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKCk7CisgICAgICAgIHJldHVybiBjYXB0aW9u
UHJlZmVyZW5jZXMtPnVzZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucygpIHx8IHVzZXJQcmVmZXJz
Q2FwdGlvbnNPclN1YnRpdGxlczsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTMxNzgsMjUg
KzMxODIsMjggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhYwogICAg
ICAgICB0cmFja1RvRW5hYmxlLT5zZXRNb2RlKFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSk7
CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlVHJhY2tBdEluZGV4KGludCBpbmRl
eCwgYm9vbCBleGNsdXNpdmUpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4
dFRyYWNrKFRleHRUcmFjayogdHJhY2tUb1NlbGVjdCkKIHsKICAgICBUZXh0VHJhY2tMaXN0KiB0
cmFja0xpc3QgPSB0ZXh0VHJhY2tzKCk7CiAgICAgaWYgKCF0cmFja0xpc3QgfHwgIXRyYWNrTGlz
dC0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCkt
PnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKSA6IDA7Ci0gICAgaWYgKGNhcHRp
b25QcmVmZXJlbmNlcykKLSAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzLT5zZXRVc2VyUHJlZmVy
c0NhcHRpb25zKGluZGV4ICE9IHRleHRUcmFja3NPZmZJbmRleCgpKTsKKyAgICBpZiAodHJhY2tU
b1NlbGVjdCAmJiAhdHJhY2tMaXN0LT5jb250YWlucyh0cmFja1RvU2VsZWN0KSkKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgZm9yIChpbnQgaSA9IDAsIGxlbmd0aCA9IHRyYWNrTGlzdC0+bGVuZ3Ro
KCk7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gdHJhY2tM
aXN0LT5pdGVtKGkpOwotICAgICAgICBpZiAoaSA9PSBpbmRleCkgeworICAgICAgICBpZiAoIXRy
YWNrVG9TZWxlY3QgfHwgdHJhY2sgIT0gdHJhY2tUb1NlbGVjdCkKKyAgICAgICAgICAgIHRyYWNr
LT5zZXRNb2RlKFRleHRUcmFjazo6ZGlzYWJsZWRLZXl3b3JkKCkpOworICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIHRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSk7
Ci0gICAgICAgICAgICBpZiAoY2FwdGlvblByZWZlcmVuY2VzICYmIHRyYWNrLT5sYW5ndWFnZSgp
Lmxlbmd0aCgpKQotICAgICAgICAgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0UHJlZmVy
cmVkTGFuZ3VhZ2UodHJhY2stPmxhbmd1YWdlKCkpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKGV4Y2x1c2l2ZSB8fCBpbmRleCA9PSBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzT2Zm
SW5kZXgoKSkKLSAgICAgICAgICAgIHRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6ZGlzYWJsZWRL
ZXl3b3JkKCkpOworICAgIH0KKworICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25Q
cmVmZXJlbmNlcyA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCktPnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKSA6IDA7CisgICAgaWYgKGNhcHRpb25QcmVmZXJlbmNl
cykgeworICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldFNob3VsZFNob3dDYXB0aW9ucyh0
cmFja1RvU2VsZWN0KTsKKyAgICAgICAgaWYgKHRyYWNrVG9TZWxlY3QgJiYgdHJhY2tUb1NlbGVj
dC0+bGFuZ3VhZ2UoKS5sZW5ndGgoKSkKKyAgICAgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+
c2V0UHJlZmVycmVkTGFuZ3VhZ2UodHJhY2tUb1NlbGVjdC0+bGFuZ3VhZ2UoKSk7CiAgICAgfQog
fQogCkBAIC00NTIwLDExICs0NTI3LDE1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlv
blByZWZlcmVuY2UKICAgICBpZiAoIWlzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZSA9IHRydWU7Ci0gICAgc2V0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSk7Ci0KICAgICBpZiAoaGFzTWVkaWFDb250
cm9scygpKQogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnRleHRUcmFja1ByZWZlcmVuY2VzQ2hh
bmdlZCgpOworCisgICAgYm9vbCBwcmVmZXJzQ2FwdGlvbnMgPSB1c2VyUHJlZmVyc0NhcHRpb25z
KCk7CisgICAgaWYgKG1fZGlzYWJsZUNhcHRpb25zID09ICFwcmVmZXJzQ2FwdGlvbnMpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UgPSB0cnVlOwor
ICAgIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShwcmVmZXJzQ2FwdGlvbnMpOwogfQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmln
dXJlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNp
b24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25maWd1
cmVUZXh0VHJhY2tzKCk7CiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tHcm91cChjb25zdCBU
cmFja0dyb3VwJik7CiAKLSAgICB2b2lkIHRvZ2dsZVRyYWNrQXRJbmRleChpbnQgaW5kZXgsIGJv
b2wgZXhjbHVzaXZlID0gdHJ1ZSk7CisgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRUcmFjayhUZXh0
VHJhY2sqKTsKICAgICBzdGF0aWMgaW50IHRleHRUcmFja3NPZmZJbmRleCgpIHsgcmV0dXJuIC0x
OyB9CiAgICAgc3RhdGljIGludCB0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCgpIHsgcmV0dXJuIC0y
OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzU1
LDYgKzc1NSwxMyBAQCB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0CiAg
ICAgICAgIC8vIENoZWNrIGlmIHRoZSBldmVudCB0YXJnZXQgaGFzIHN1Y2ggYSBjdXN0b20gZWxl
bWVudCBhbmQsIGlmIHNvLAogICAgICAgICAvLyB0ZWxsIHRoZSBIVE1MTWVkaWFFbGVtZW50IHRv
IGVuYWJsZSB0aGF0IHRyYWNrLgogCisgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFj
azsKKyAgICAgICAgTWVudUl0ZW1Ub1RyYWNrTWFwOjppdGVyYXRvciBpdGVyID0gbV9tZW51VG9U
cmFja01hcC5maW5kKHRvRWxlbWVudCh0YXJnZXQpKTsKKyAgICAgICAgaWYgKGl0ZXIgIT0gbV9t
ZW51VG9UcmFja01hcC5lbmQoKSkKKyAgICAgICAgICAgIHRleHRUcmFjayA9IGl0ZXItPnZhbHVl
OworICAgICAgICBtX21lbnVUb1RyYWNrTWFwLmNsZWFyKCk7CisgICAgICAgIG1fY29udHJvbHMt
PnRvZ2dsZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKTsKKwogICAgICAgICBpbnQgdHJhY2tJbmRl
eCA9IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudCh0b0VsZW1lbnQodGFyZ2V0KSk7CiAgICAgICAg
IGlmICh0cmFja0luZGV4ID09IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3NJbmRleE5vdEZv
dW5kKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NjMsMTAgKzc3MCwxMSBAQCB2b2lkIE1l
ZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0CiAgICAgICAgIGlmICghbWVkaWFFbGVt
ZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1lZGlhRWxlbWVudC0+dG9nZ2xl
VHJhY2tBdEluZGV4KHRyYWNrSW5kZXgpOworICAgICAgICBpZiAodGV4dFRyYWNrKQorICAgICAg
ICAgICAgbWVkaWFFbGVtZW50LT5zZXRTZWxlY3RlZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkp
OworICAgICAgICBlbHNlIGlmICh0cmFja0luZGV4ID09IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRU
cmFja3NPZmZJbmRleCgpKQorICAgICAgICAgICAgbWVkaWFFbGVtZW50LT5zZXRTZWxlY3RlZFRl
eHRUcmFjaygwKTsKIAotICAgICAgICAvLyBXZSd2ZSBzZWxlY3RlZCBhIHRyYWNrIHRvIGRpc3Bs
YXksIHNvIHdlIGNhbiBub3cgY2xvc2UgdGhlIG1lbnUuCi0gICAgICAgIG1fY29udHJvbHMtPnRv
Z2dsZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKTsKICAgICAgICAgdXBkYXRlRGlzcGxheSgpOwog
ICAgIH0KIApAQCAtNzk5LDUzICs4MDcsMzcgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0
aW9uc1RyYWNrTGlzdAogCiAgICAgaWYgKG1fdHJhY2tMaXN0SGFzQ2hhbmdlZCkKICAgICAgICAg
cmVidWlsZFRyYWNrTGlzdE1lbnUoKTsKLSAgICAKKwogICAgIGJvb2wgY2FwdGlvbnNWaXNpYmxl
ID0gbWVkaWFFbGVtZW50LT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwLCBsZW5ndGggPSBtX21lbnVJdGVtcy5zaXplKCk7IGkgPCBsZW5ndGg7ICsraSkg
ewogICAgICAgICBSZWZQdHI8RWxlbWVudD4gdHJhY2tJdGVtID0gbV9tZW51SXRlbXNbaV07CisK
ICAgICAgICAgaW50IHRyYWNrSW5kZXggPSB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQodHJhY2tJ
dGVtLmdldCgpKTsKLSAgICAgICAgaWYgKHRyYWNrSW5kZXggIT0gSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrc0luZGV4Tm90Rm91bmQoKSkgewotICAgICAgICAgICAgaWYgKHRyYWNrSW5kZXgg
PT0gSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrc09mZkluZGV4KCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoY2FwdGlvbnNWaXNpYmxlKQotICAgICAgICAgICAgICAgICAgICB0cmFja0l0ZW0t
PmNsYXNzTGlzdCgpLT5yZW1vdmUoc2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRyYWNrSXRl
bS0+Y2xhc3NMaXN0KCktPmFkZChzZWxlY3RlZENsYXNzVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJ
T04pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBUZXh0VHJhY2sqIHRy
YWNrID0gdHJhY2tMaXN0LT5pdGVtKHRyYWNrSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICgh
dHJhY2spCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlm
ICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS0+YWRkKHNlbGVjdGVkQ2xhc3NWYWx1
ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLT5yZW1vdmUoc2VsZWN0ZWRDbGFzc1Zh
bHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLSNlbmRpZgotfQorICAgICAgICBpZiAodHJhY2tJbmRleCA9PSBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCgpKQorICAgICAgICAgICAgY29udGludWU7CiAKLSNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCi1zdGF0aWMgdm9pZCBpbnNlcnRUZXh0VHJhY2tNZW51SXRl
bUludG9Tb3J0ZWRDb250YWluZXIoUmVmUHRyPEVsZW1lbnQ+JiBpdGVtLCBSZWZQdHI8RWxlbWVu
dD4mIGNvbnRhaW5lcikKLXsKLSAgICAvLyBUaGUgY29udGFpbmVyIHdpbGwgYWx3YXlzIGhhdmUg
dGhlICJPZmYiIGVudHJ5IGFscmVhZHkgcHJlc2VudCBhbmQgaXQKLSAgICAvLyBzaG91bGQgcmVt
YWluIGF0IHRoZSBzdGFydCBvZiB0aGUgbGlzdC4KLSAgICBBU1NFUlQoY29udGFpbmVyLT5jaGls
ZE5vZGVDb3VudCgpID4gMCk7Ci0gICAgQVNTRVJUKGl0ZW0tPmNoaWxkTm9kZUNvdW50KCkgPT0g
MSk7IC8vIEVhY2ggaXRlbSBzaG91bGQgaGF2ZSBhIHNpbmdsZSB0ZXh0IG5vZGUgY2hpbGQgZm9y
IHRoZSBsYWJlbC4KLSAgICBTdHJpbmcgaXRlbUxhYmVsID0gdG9UZXh0KGl0ZW0tPmZpcnN0Q2hp
bGQoKSktPndob2xlVGV4dCgpOwotCi0gICAgLy8gVGhpcyBpcyBhbiBpbnNlcnRpb24gc29ydCA6
KCBIb3dldmVyLCB0aGVyZSBzaG91bGRuJ3QgYmUgYSBob3JyaWJsZSBudW1iZXIgb2YgdGV4dCB0
cmFjayBpdGVtcy4KLSAgICBmb3IgKGludCBpID0gMSwgbnVtQ2hpbGROb2RlcyA9IGNvbnRhaW5l
ci0+Y2hpbGROb2RlQ291bnQoKTsgaSA8IG51bUNoaWxkTm9kZXM7ICsraSkgewotICAgICAgICBO
b2RlKiBjaGlsZCA9IGNvbnRhaW5lci0+Y2hpbGROb2RlKGkpOwotICAgICAgICBBU1NFUlQoY2hp
bGQtPmNoaWxkTm9kZUNvdW50KCkgPT0gMSk7IC8vIEVhY2ggaXRlbSBzaG91bGQgaGF2ZSBhIHNp
bmdsZSB0ZXh0IG5vZGUgY2hpbGQgZm9yIHRoZSBsYWJlbC4KLSAgICAgICAgU3RyaW5nIGNoaWxk
TGFiZWwgPSB0b1RleHQoY2hpbGQtPmZpcnN0Q2hpbGQoKSktPndob2xlVGV4dCgpOwotICAgICAg
ICBpZiAoY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGl0ZW1MYWJlbCwgY2hpbGRMYWJlbCkpIHsK
LSAgICAgICAgICAgIGNvbnRhaW5lci0+aW5zZXJ0QmVmb3JlKGl0ZW0sIGNoaWxkKTsKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRyYWNrSW5kZXggPT0gSFRNTE1lZGlhRWxlbWVu
dDo6dGV4dFRyYWNrc09mZkluZGV4KCkpIHsKKyAgICAgICAgICAgIGlmIChjYXB0aW9uc1Zpc2li
bGUpCisgICAgICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS0+cmVtb3ZlKHNlbGVj
dGVkQ2xhc3NWYWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS0+YWRkKHNlbGVjdGVkQ2xhc3NW
YWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQorCisgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjazsKKyAgICAgICAgTWVu
dUl0ZW1Ub1RyYWNrTWFwOjppdGVyYXRvciBpdGVyID0gbV9tZW51VG9UcmFja01hcC5maW5kKHRy
YWNrSXRlbS5nZXQoKSk7CisgICAgICAgIGlmIChpdGVyID09IG1fbWVudVRvVHJhY2tNYXAuZW5k
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdGV4dFRyYWNrID0gaXRlci0+dmFs
dWU7CisgICAgICAgIGlmICghdGV4dFRyYWNrKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGlmICh0ZXh0VHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkp
CisgICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLT5hZGQoc2VsZWN0ZWRDbGFzc1Zh
bHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdHJh
Y2tJdGVtLT5jbGFzc0xpc3QoKS0+cmVtb3ZlKHNlbGVjdGVkQ2xhc3NWYWx1ZSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CiAgICAgfQotICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoaXRlbSk7Ci19
CiAjZW5kaWYKK30KIAogdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVs
ZW1lbnQ6OnJlYnVpbGRUcmFja0xpc3RNZW51KCkKIHsKQEAgLTg1NSw2ICs4NDcsNyBAQCB2b2lk
IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0CiAgICAgbV9tZW51SXRlbXMuY2xl
YXIoKTsKIAogICAgIG1fdHJhY2tMaXN0SGFzQ2hhbmdlZCA9IGZhbHNlOworICAgIG1fbWVudVRv
VHJhY2tNYXAuY2xlYXIoKTsKIAogICAgIGlmICghbWVkaWFDb250cm9sbGVyKCktPmhhc0Nsb3Nl
ZENhcHRpb25zKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg2NCw0MyArODU3LDQwIEBAIHZvaWQg
TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgVGV4dFRyYWNrTGlzdCogdHJhY2tMaXN0ID0gbWVkaWFFbGVtZW50LT50ZXh0VHJhY2tzKCk7
Ci0KICAgICBpZiAoIXRyYWNrTGlzdCB8fCAhdHJhY2tMaXN0LT5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CiAgICAgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcyogY2FwdGlvbnNVc2VyUHJlZmVyZW5jZXMgPSBkb2MtPnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4g
PiB0cmFja3NGb3JNZW51ID0gY2FwdGlvbnNVc2VyUHJlZmVyZW5jZXMtPnNvcnRlZFRyYWNrTGlz
dEZvck1lbnUodHJhY2tMaXN0KTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBjYXB0aW9uc0hlYWRl
ciA9IGRvYy0+Y3JlYXRlRWxlbWVudChoM1RhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAg
Y2FwdGlvbnNIZWFkZXItPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUodGV4dFRyYWNr
U3VidGl0bGVzVGV4dCgpKSk7CiAgICAgYXBwZW5kQ2hpbGQoY2FwdGlvbnNIZWFkZXIpOwogICAg
IFJlZlB0cjxFbGVtZW50PiBjYXB0aW9uc01lbnVMaXN0ID0gZG9jLT5jcmVhdGVFbGVtZW50KHVs
VGFnLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAotICAgIFJlZlB0cjxFbGVtZW50PiB0cmFja0l0
ZW07Ci0KLSAgICB0cmFja0l0ZW0gPSBkb2MtPmNyZWF0ZUVsZW1lbnQobGlUYWcsIEFTU0VSVF9O
T19FWENFUFRJT04pOwotICAgIHRyYWNrSXRlbS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0
Tm9kZSh0ZXh0VHJhY2tPZmZUZXh0KCkpKTsKLSAgICB0cmFja0l0ZW0tPnNldEF0dHJpYnV0ZSh0
cmFja0luZGV4QXR0cmlidXRlTmFtZSgpLCB0ZXh0VHJhY2tzT2ZmQXR0clZhbHVlLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKLSAgICBjYXB0aW9uc01lbnVMaXN0LT5hcHBlbmRDaGlsZCh0cmFja0l0
ZW0pOwotICAgIG1fbWVudUl0ZW1zLmFwcGVuZCh0cmFja0l0ZW0pOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7Ci0gICAg
ICAgIHRyYWNrSXRlbSA9IGRvYy0+Y3JlYXRlRWxlbWVudChsaVRhZywgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1lbnVJdGVtOworICAgIG1lbnVJdGVtID0gZG9j
LT5jcmVhdGVFbGVtZW50KGxpVGFnLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBtZW51SXRl
bS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSh0ZXh0VHJhY2tPZmZUZXh0KCkpKTsK
KyAgICBtZW51SXRlbS0+c2V0QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRyaWJ1dGVOYW1lKCksIHRl
eHRUcmFja3NPZmZBdHRyVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGNhcHRpb25z
TWVudUxpc3QtPmFwcGVuZENoaWxkKG1lbnVJdGVtKTsKKyAgICBtX21lbnVJdGVtcy5hcHBlbmQo
bWVudUl0ZW0pOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tzRm9y
TWVudS5zaXplKCk7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBSZWZQdHI8VGV4dFRyYWNr
PiB0ZXh0VHJhY2sgPSB0cmFja3NGb3JNZW51W2ldOworICAgICAgICBtZW51SXRlbSA9IGRvYy0+
Y3JlYXRlRWxlbWVudChsaVRhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICAgICAgLy8g
QWRkIGEgY3VzdG9tIGF0dHJpYnV0ZSB0byB0aGUgPGxpPiBlbGVtZW50IHdoaWNoIHdpbGwgYWxs
b3cKICAgICAgICAgLy8gdXMgdG8gZWFzaWx5IGFzc29jaWF0ZSB0aGUgdXNlciB0YXBwaW5nIGhl
cmUgd2l0aCB0aGUKICAgICAgICAgLy8gdHJhY2suIFNpbmNlIHRoaXMgbGlzdCBpcyByZWJ1aWx0
IGlmIHRoZSB0cmFja3MgY2hhbmdlLCB3ZQogICAgICAgICAvLyBzaG91bGQgYWx3YXlzIGJlIGlu
IHN5bmMuCi0gICAgICAgIHRyYWNrSXRlbS0+c2V0QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRyaWJ1
dGVOYW1lKCksIFN0cmluZzo6bnVtYmVyKGkpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAg
ICAgbWVudUl0ZW0tPnNldEF0dHJpYnV0ZSh0cmFja0luZGV4QXR0cmlidXRlTmFtZSgpLCBTdHJp
bmc6Om51bWJlcihpKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKLSAgICAgICAgaWYgKGNhcHRp
b25zVXNlclByZWZlcmVuY2VzKQotICAgICAgICAgICAgdHJhY2tJdGVtLT5hcHBlbmRDaGlsZChk
b2MtPmNyZWF0ZVRleHROb2RlKGNhcHRpb25zVXNlclByZWZlcmVuY2VzLT5kaXNwbGF5TmFtZUZv
clRyYWNrKHRyYWNrKSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0cmFja0l0ZW0tPmFw
cGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUodHJhY2stPmxhYmVsKCkpKTsKKyAgICAgICAg
bWVudUl0ZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoY2FwdGlvbnNVc2VyUHJl
ZmVyZW5jZXMtPmRpc3BsYXlOYW1lRm9yVHJhY2sodGV4dFRyYWNrLmdldCgpKSkpOwogCi0gICAg
ICAgIGluc2VydFRleHRUcmFja01lbnVJdGVtSW50b1NvcnRlZENvbnRhaW5lcih0cmFja0l0ZW0s
IGNhcHRpb25zTWVudUxpc3QpOwotICAgICAgICBtX21lbnVJdGVtcy5hcHBlbmQodHJhY2tJdGVt
KTsKKyAgICAgICAgY2FwdGlvbnNNZW51TGlzdC0+YXBwZW5kQ2hpbGQobWVudUl0ZW0pOworICAg
ICAgICBtX21lbnVJdGVtcy5hcHBlbmQobWVudUl0ZW0pOworICAgICAgICBtX21lbnVUb1RyYWNr
TWFwLmFkZChtZW51SXRlbSwgdGV4dFRyYWNrKTsKICAgICB9CiAKICAgICBhcHBlbmRDaGlsZChj
YXB0aW9uc01lbnVMaXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzE1LDYgKzMxNSw4IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
RWxlbWVudD4gPiBUcmFja01lbnVJdGVtczsKICAgICBUcmFja01lbnVJdGVtcyBtX21lbnVJdGVt
czsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8VGV4dFRyYWNr
PiA+IE1lbnVJdGVtVG9UcmFja01hcDsKKyAgICBNZW51SXRlbVRvVHJhY2tNYXAgbV9tZW51VG9U
cmFja01hcDsKICAgICBNZWRpYUNvbnRyb2xzKiBtX2NvbnRyb2xzOwogICAgIGJvb2wgbV90cmFj
a0xpc3RIYXNDaGFuZ2VkOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHMuY3BwCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDExLDYgKzQx
MSw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6dGV4dFRyYWNrUHJlZmVyZW5jZXMKIHsKICAgICBp
ZiAobV90ZXh0RGlzcGxheUNvbnRhaW5lcikKICAgICAgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5l
ci0+dXBkYXRlU2l6ZXModHJ1ZSk7CisgICAgY2xvc2VkQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsK
IH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRU
cmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suY3BwCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0luYmFuZFRleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsMzAg
QEAgYm9vbCBJbmJhbmRUZXh0VHJhY2s6OmlzQ2xvc2VkQ2FwdGlvbnMoKQogICAgIHJldHVybiBt
X3ByaXZhdGUtPmlzQ2xvc2VkQ2FwdGlvbnMoKTsKIH0KIAorYm9vbCBJbmJhbmRUZXh0VHJhY2s6
OmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZh
dGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9wcml2YXRlLT5j
b250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKTsKK30KKworYm9vbCBJbmJhbmRUZXh0VHJhY2s6
OmlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBtX3ByaXZhdGUtPmlzTWFpblBy
b2dyYW1Db250ZW50KCk7Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrOjppc0Vhc3lUb1JlYWQo
KSBjb25zdAoreworICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNFYXN5VG9SZWFkKCk7Cit9CisgICAgCiBzaXpl
X3QgSW5iYW5kVGV4dFRyYWNrOjppbmJhbmRUcmFja0luZGV4KCkKIHsKICAgICBBU1NFUlQobV9w
cml2YXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suaAkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRUZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNrKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDbG9z
ZWRDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjb250YWluc09u
bHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNN
YWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNF
YXN5VG9SZWFkKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE1vZGUoY29u
c3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgc2l6ZV90IGluYmFuZFRyYWNrSW5kZXgo
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAkocmV2aXNp
b24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MjksNiArNDI5LDE1IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0
VHJhY2s+IFRleHRUcmFjazoKIH0KICNlbmRpZgogCitib29sIFRleHRUcmFjazo6aXNNYWluUHJv
Z3JhbUNvbnRlbnQoKSBjb25zdAoreworICAgIC8vICJNYWluIHByb2dyYW0iIGNvbnRlbnQgaXMg
aW50cmluc2ljIHRvIHRoZSBwcmVzZW50YXRpb24gb2YgdGhlIG1lZGlhIGZpbGUsIHJlZ2FyZGxl
c3Mgb2YgbG9jYWxlLiBDb250ZW50IHN1Y2ggYXMKKyAgICAvLyBkaXJlY3RvcnMgY29tbWVudGFy
eSBpcyBub3QgIm1haW4gcHJvZ3JhbSIgYmVjYXVzZSBpdCBpcyBub3QgZXNzZW50aWFsIGZvciB0
aGUgcHJlc2VudGF0aW9uLiBIVE1MNSBkb2Vzbid0IGhhdmUKKyAgICAvLyBhIHdheSB0byBleHBy
ZXNzIHRoaXMgaW4gYSBtYWNoaW5lLXJlYWJsZSBmb3JtLCBpdCBpcyB0eXBpY2FsbHkgZG9uZSB3
aXRoIHRoZSB0cmFjayBsYWJlbCwgc28gd2UgYXNzdW1lIHRoYXQgY2FwdGlvbgorICAgIC8vIHRy
YWNrcyBhcmUgbWFpbiBjb250ZW50IGFuZCBhbGwgb3RoZXIgdHJhY2sgdHlwZXMgYXJlIG5vdC4K
KyAgICByZXR1cm4gbV9raW5kID09IGNhcHRpb25zS2V5d29yZCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5oCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NlZENhcHRpb25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAorICAgIHZpcnR1YWwgYm9vbCBjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01haW5Qcm9ncmFtQ29udGVu
dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0Vhc3lUb1JlYWQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorCiAgICAgaW50IHRyYWNrSW5kZXgoKTsKICAgICB2b2lkIGludmFsaWRhdGVU
cmFja0luZGV4KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmNwcAkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDYgKzIxMSwyMiBAQCB2
b2lkIFRleHRUcmFja0xpc3Q6OnJlbW92ZShUZXh0VHJhY2sqIHRyCiAgICAgdHJhY2tzLT5yZW1v
dmUoaW5kZXgpOwogfQogCitib29sIFRleHRUcmFja0xpc3Q6OmNvbnRhaW5zKFRleHRUcmFjayog
dHJhY2spIGNvbnN0Cit7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4qIHRy
YWNrcyA9IDA7CisgICAgCisgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6
OlRyYWNrRWxlbWVudCkKKyAgICAgICAgdHJhY2tzID0gJm1fZWxlbWVudFRyYWNrczsKKyAgICBl
bHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRUcmFjaykKKyAgICAg
ICAgdHJhY2tzID0gJm1fYWRkVHJhY2tUcmFja3M7CisgICAgZWxzZSBpZiAodHJhY2stPnRyYWNr
VHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQorICAgICAgICB0cmFja3MgPSAmbV9pbmJhbmRU
cmFja3M7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAKKyAg
ICByZXR1cm4gdHJhY2tzLT5maW5kKHRyYWNrKSAhPSBub3RGb3VuZDsKK30KKwogY29uc3QgQXRv
bWljU3RyaW5nJiBUZXh0VHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclRleHRUcmFja0xpc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAkocmV2aXNpb24gMTQ2MjA1KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
OwogICAgIGludCBnZXRUcmFja0luZGV4KFRleHRUcmFjayopOwogICAgIGludCBnZXRUcmFja0lu
ZGV4UmVsYXRpdmVUb1JlbmRlcmVkVHJhY2tzKFRleHRUcmFjayopOworICAgIGJvb2wgY29udGFp
bnMoVGV4dFRyYWNrKikgY29uc3Q7CiAKICAgICBUZXh0VHJhY2sqIGl0ZW0odW5zaWduZWQgaW5k
ZXgpOwogICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9u
IDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE3ICsyOCwxMDggQEAKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCiAKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisj
aW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9Ob25Db3B5aW5nU29ydC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXMoUGFnZUdyb3VwKiBncm91cCkKKyAgICA6IG1fcGFnZUdyb3VwKGdy
b3VwKQorICAgICwgbV90aW1lcih0aGlzLCAmQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dGltZXJG
aXJlZCkKKyAgICAsIG1fdGVzdGluZ01vZGUoZmFsc2UpCisgICAgLCBtX2hhdmVQcmVmZXJlbmNl
cyhmYWxzZSkKKyAgICAsIG1fc2hvdWxkU2hvd0NhcHRpb25zKGZhbHNlKQoreworfQorCitDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjp+Q2FwdGlvblVzZXJQcmVmZXJlbmNlcygpCit7Cit9CisKK2Jv
b2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2hvdWxkU2hvd0NhcHRpb25zKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV90ZXN0aW5nTW9kZSA/IG1fc2hvdWxkU2hvd0NhcHRpb25zIDogZmFsc2U7
Cit9CisKK3ZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dGltZXJGaXJlZChUaW1lcjxDYXB0
aW9uVXNlclByZWZlcmVuY2VzPiopCit7CisgICAgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgp
OworfQorCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6Om5vdGlmeSgpCit7CisgICAgaWYg
KCFtX3Rlc3RpbmdNb2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhdmVQcmVmZXJlbmNl
cyA9IHRydWU7CisgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIu
c3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFNo
b3VsZFNob3dDYXB0aW9ucyhib29sIHByZWZlcmVuY2UpCit7CisgICAgbV9zaG91bGRTaG93Q2Fw
dGlvbnMgPSBwcmVmZXJlbmNlOworICAgIG5vdGlmeSgpOworfQorCitib29sIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdAoreworICAgIFBhZ2UqIHBh
Z2UgPSAqKHBhZ2VHcm91cCgpLT5wYWdlcygpLmJlZ2luKCkpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHBhZ2UtPnNldHRpbmdzKCktPnNob3Vs
ZERpc3BsYXlDYXB0aW9ucygpOworfQorCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNl
dFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCBwcmVmZXJlbmNlKQogewotICAgIG1fdXNlclByZWZl
cnNDYXB0aW9ucyA9IHByZWZlcmVuY2U7Ci0gICAgaWYgKG1fdGVzdGluZ01vZGUpIHsKLSAgICAg
ICAgbV9oYXZlUHJlZmVyZW5jZXMgPSB0cnVlOwotICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkKCk7Ci0gICAgfQorICAgIFBhZ2UqIHBhZ2UgPSAqKHBhZ2VHcm91cCgpLT5wYWdlcygp
LmJlZ2luKCkpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+
c2V0dGluZ3MoKS0+c2V0U2hvdWxkRGlzcGxheUNhcHRpb25zKHByZWZlcmVuY2UpOworICAgIG5v
dGlmeSgpOworfQorCitib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzU3Vi
dGl0bGVzKCkgY29uc3QKK3sKKyAgICBQYWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS0+cGFnZXMo
KS5iZWdpbigpKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiBwYWdlLT5zZXR0aW5ncygpLT5zaG91bGREaXNwbGF5U3VidGl0bGVzKCk7Cit9CisK
K3ZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNTdWJ0aXRsZXMoYm9v
bCBwcmVmZXJlbmNlKQoreworICAgIFBhZ2UqIHBhZ2UgPSAqKHBhZ2VHcm91cCgpLT5wYWdlcygp
LmJlZ2luKCkpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+
c2V0dGluZ3MoKS0+c2V0U2hvdWxkRGlzcGxheVN1YnRpdGxlcyhwcmVmZXJlbmNlKTsKKyAgICBu
b3RpZnkoKTsKK30KKworYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc1Rl
eHREZXNjcmlwdGlvbnMoKSBjb25zdAoreworICAgIFBhZ2UqIHBhZ2UgPSAqKHBhZ2VHcm91cCgp
LT5wYWdlcygpLmJlZ2luKCkpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIHJldHVybiBwYWdlLT5zZXR0aW5ncygpLT5zaG91bGREaXNwbGF5VGV4dERl
c2NyaXB0aW9ucygpOworfQorCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQ
cmVmZXJzVGV4dERlc2NyaXB0aW9ucyhib29sIHByZWZlcmVuY2UpCit7CisgICAgUGFnZSogcGFn
ZSA9ICoocGFnZUdyb3VwKCktPnBhZ2VzKCkuYmVnaW4oKSk7CisgICAgaWYgKCFwYWdlKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgcGFnZS0+c2V0dGluZ3MoKS0+c2V0U2hvdWxkRGlzcGxh
eVRleHREZXNjcmlwdGlvbnMocHJlZmVyZW5jZSk7CisgICAgbm90aWZ5KCk7CiB9CiAKIHZvaWQg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpCkBAIC01
OCwxMyArMTQ5LDEwIEBAIFZlY3RvcjxTdHJpbmc+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnAK
IHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5n
IGxhbmd1YWdlKQogewogICAgIG1fdXNlclByZWZlcnJlZExhbmd1YWdlID0gbGFuZ3VhZ2U7Ci0g
ICAgaWYgKG1fdGVzdGluZ01vZGUpIHsKLSAgICAgICAgbV9oYXZlUHJlZmVyZW5jZXMgPSB0cnVl
OwotICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7Ci0gICAgfQorICAgIG5vdGlm
eSgpOwogfQogCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6ZGlzcGxheU5hbWVGb3JU
cmFjayhUZXh0VHJhY2sqIHRyYWNrKSBjb25zdAorc3RhdGljIFN0cmluZyB0cmFja0Rpc3BsYXlO
YW1lKFRleHRUcmFjayogdHJhY2spCiB7CiAgICAgaWYgKHRyYWNrLT5sYWJlbCgpLmlzRW1wdHko
KSAmJiB0cmFjay0+bGFuZ3VhZ2UoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0VHJh
Y2tOb0xhYmVsVGV4dCgpOwpAQCAtNzMsNiArMTYxLDMwIEBAIFN0cmluZyBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpkaXNwbGF5TmEKICAgICByZXR1cm4gdHJhY2stPmxhbmd1YWdlKCk7CiB9CiAK
K1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpkaXNwbGF5TmFtZUZvclRyYWNrKFRleHRU
cmFjayogdHJhY2spIGNvbnN0Cit7CisgICAgcmV0dXJuIHRyYWNrRGlzcGxheU5hbWUodHJhY2sp
OworfQorICAgIAorc3RhdGljIGJvb2wgdGV4dFRyYWNrQ29tcGFyZShjb25zdCBSZWZQdHI8VGV4
dFRyYWNrPiYgYSwgY29uc3QgUmVmUHRyPFRleHRUcmFjaz4mIGIpCit7CisgICAgcmV0dXJuIGNv
ZGVQb2ludENvbXBhcmUodHJhY2tEaXNwbGF5TmFtZShhLmdldCgpKSwgdHJhY2tEaXNwbGF5TmFt
ZShiLmdldCgpKSkgPCAwOworfQorCitWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBDYXB0aW9u
VXNlclByZWZlcmVuY2VzOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KFRleHRUcmFja0xpc3QqIHRy
YWNrTGlzdCkKK3sKKyAgICBBU1NFUlQodHJhY2tMaXN0KTsKKworICAgIFZlY3RvcjxSZWZQdHI8
VGV4dFRyYWNrPiA+IHRyYWNrc0Zvck1lbnU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBs
ZW5ndGggPSB0cmFja0xpc3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIHRy
YWNrc0Zvck1lbnUuYXBwZW5kKHRyYWNrTGlzdC0+aXRlbShpKSk7CisKKyAgICBub25Db3B5aW5n
U29ydCh0cmFja3NGb3JNZW51LmJlZ2luKCksIHRyYWNrc0Zvck1lbnUuZW5kKCksIHRleHRUcmFj
a0NvbXBhcmUpOworCisgICAgcmV0dXJuIHRyYWNrc0Zvck1lbnU7Cit9CisKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShWSURFT19UUkFDSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzICBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDIxICsz
MSwzMyBAQAogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5n
cy5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYWdlR3JvdXA7CitjbGFzcyBUZXh0VHJh
Y2tMaXN0OwogCiBjbGFzcyBDYXB0aW9uVXNlclByZWZlcmVuY2VzIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc093blB0cjxDYXB0aW9uVXNlclByZWZlcmVuY2VzPiBjcmVhdGUoUGFnZUdyb3Vw
KiBncm91cCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENhcHRpb25Vc2VyUHJlZmVyZW5jZXMoZ3Jv
dXApKTsgfQotICAgIHZpcnR1YWwgfkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMoKSB7IH0KKyAgICB2
aXJ0dWFsIH5DYXB0aW9uVXNlclByZWZlcmVuY2VzKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgdXNl
ckhhc0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdGluZ01vZGUgJiYg
bV9oYXZlUHJlZmVyZW5jZXM7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdGluZ01vZGUgPyBtX3VzZXJQcmVmZXJzQ2FwdGlvbnMg
OiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wg
cHJlZmVyZW5jZSk7CisgICAgdmlydHVhbCBib29sIHNob3VsZFNob3dDYXB0aW9ucygpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRTaG93Q2FwdGlvbnMoYm9vbCk7CisKKyAgICB2
aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wpOworCisgICAgdmlydHVhbCBib29sIHVzZXJQ
cmVmZXJzU3VidGl0bGVzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZXJQcmVmZXJz
U3VidGl0bGVzKGJvb2wgcHJlZmVyZW5jZSk7CisgICAgCisgICAgdmlydHVhbCBib29sIHVzZXJQ
cmVmZXJzVGV4dERlc2NyaXB0aW9ucygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRVc2Vy
UHJlZmVyc1RleHREZXNjcmlwdGlvbnMoYm9vbCBwcmVmZXJlbmNlKTsKKwogICAgIHZpcnR1YWwg
ZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoYm9vbCYgaW1wb3J0YW50KSBjb25zdCB7IGltcG9y
dGFudCA9IGZhbHNlOyByZXR1cm4gMC4wNWY7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBjYXB0aW9u
c1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIApA
QCAtNTcsMjcgKzY5LDI2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHBy
ZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0OwogCiAgICAgdmlydHVhbCBTdHJpbmcgZGlzcGxheU5h
bWVGb3JUcmFjayhUZXh0VHJhY2sqKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8
VGV4dFRyYWNrPiA+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRyYWNrTGlzdCopOwogCiAg
ICAgdmlydHVhbCBib29sIHRlc3RpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0aW5nTW9k
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXN0aW5nTW9kZShib29sIG92ZXJyaWRlKSB7IG1f
dGVzdGluZ01vZGUgPSBvdmVycmlkZTsgfQogCi0gICAgUGFnZUdyb3VwKiBwYWdlR3JvdXAoKSB7
IHJldHVybiBtX3BhZ2VHcm91cDsgfQorICAgIFBhZ2VHcm91cCogcGFnZUdyb3VwKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlR3JvdXA7IH0KIAogcHJvdGVjdGVkOgotICAgIENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXMoUGFnZUdyb3VwKiBncm91cCkKLSAgICAgICAgOiBtX3BhZ2VHcm91cChncm91cCkK
LSAgICAgICAgLCBtX3Rlc3RpbmdNb2RlKGZhbHNlKQotICAgICAgICAsIG1faGF2ZVByZWZlcmVu
Y2VzKGZhbHNlKQotICAgICAgICAsIG1fdXNlclByZWZlcnNDYXB0aW9ucyhmYWxzZSkKLSAgICB7
Ci0gICAgfQorICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMoUGFnZUdyb3VwKiBncm91cCk7CiAK
IHByaXZhdGU6CisgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM+Kik7CisgICAgdm9pZCBub3RpZnkoKTsKKwogICAgIFBhZ2VHcm91cCogbV9wYWdlR3JvdXA7
CisgICAgVGltZXI8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4gbV90aW1lcjsKICAgICBTdHJpbmcg
bV91c2VyUHJlZmVycmVkTGFuZ3VhZ2U7CiAgICAgYm9vbCBtX3Rlc3RpbmdNb2RlOwogICAgIGJv
b2wgbV9oYXZlUHJlZmVyZW5jZXM7Ci0gICAgYm9vbCBtX3VzZXJQcmVmZXJzQ2FwdGlvbnM7Cisg
ICAgYm9vbCBtX3Nob3VsZFNob3dDYXB0aW9uczsKIH07CiAgICAgCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAkocmV2aXNpb24g
MTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDggKzQyLDEyIEBAIHB1YmxpYzoKIAogI2lmIEhBVkUoTUVE
SUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCiAgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0
aW9uUHJlZmVyZW5jZXMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
U2hvd0NhcHRpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3Vs
ZFNob3dDYXB0aW9ucyhib29sKSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJl
ZmVyc0NhcHRpb25zKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFVzZXJQ
cmVmZXJzQ2FwdGlvbnMoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHVzZXJQcmVm
ZXJzU3VidGl0bGVzKCkgY29uc3QgT1ZFUlJJREU7CisgICAgCiAgICAgdmlydHVhbCBmbG9hdCBj
YXB0aW9uRm9udFNpemVTY2FsZShib29sJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBT
dHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdCBPVkVSUklERTsKIApAQCAt
NTMsNiArNTcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJy
ZWRMYW5ndWFnZXMoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBjYXB0aW9u
UHJlZmVyZW5jZXNDaGFuZ2VkKCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQ
dHI8VGV4dFRyYWNrPiA+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRyYWNrTGlzdCopIE9W
RVJSSURFOworCiAjZW5kaWYKIAogICAgIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJh
Y2soVGV4dFRyYWNrKikgY29uc3QgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tCShyZXZpc2lvbiAxNDYyMDUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQxLDcgKzQxLDkgQEAKICNpbXBvcnQgIlBhZ2VHcm91cC5oIgogI2ltcG9ydCAi
U29mdExpbmtpbmcuaCIKICNpbXBvcnQgIlRleHRUcmFja0N1ZS5oIgorI2ltcG9ydCAiVGV4dFRy
YWNrTGlzdC5oIgogI2ltcG9ydCAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgorI2ltcG9ydCA8d3Rm
L05vbkNvcHlpbmdTb3J0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTcxLDYgKzczLDcgQEAgU09GVF9MSU5LKE1l
ZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQQogU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0
eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUsIE1BQ2FwdGlvbkFwcGVhcmFu
Y2VUZXh0RWRnZVN0eWxlLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2Fw
dGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCiBT
T0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQWRkU2VsZWN0
ZWRMYW5ndWFnZSwgYm9vbCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBDRlN0
cmluZ1JlZiBsYW5ndWFnZSksIChkb21haW4sIGxhbmd1YWdlKSk7CiBTT0ZUX0xJTksoTWVkaWFB
Y2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVNlbGVjdGVkTGFuZ3VhZ2VzLCBD
RkFycmF5UmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4pLCAoZG9tYWluKSk7
CitTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVBy
ZWZlcnJlZENhcHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGljcywgIENGQXJyYXlSZWYsIChNQUNh
cHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiksIChkb21haW4pKTsKIAogU09GVF9MSU5LX1BP
SU5URVIoTWVkaWFBY2Nlc3NpYmlsaXR5LCBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0No
YW5nZWROb3RpZmljYXRpb24sIENGU3RyaW5nUmVmKQogI2RlZmluZSBrTUFYQ2FwdGlvbkFwcGVh
cmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24gZ2V0a01BWENhcHRpb25BcHBlYXJhbmNl
U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkKQEAgLTExMSwyNCArMTE0LDQ1IEBAIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6On5DYXB0aW9uVXNlclAKIH0KIAogI2lmIEhBVkUoTUVESUFf
QUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCi1ib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdAorCitib29sIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWM6OnNob3VsZFNob3dDYXB0aW9ucygpIGNvbnN0CiB7CiAgICAgaWYgKHRlc3RpbmdNb2Rl
KCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKLSAgICAgICAgcmV0dXJuIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKLQorICAgICAgICByZXR1
cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2hvdWxkU2hvd0NhcHRpb25zKCk7CisgICAgCiAg
ICAgcmV0dXJuIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRTaG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFw
cGVhcmFuY2VEb21haW5Vc2VyKTsKIH0KIAotdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
OjpzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wgcHJlZmVyZW5jZSkKK3ZvaWQgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYzo6c2V0U2hvdWxkU2hvd0NhcHRpb25zKGJvb2wgcHJlZmVyZW5jZSkK
IHsKICAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgp
KSB7Ci0gICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzQ2FwdGlv
bnMocHJlZmVyZW5jZSk7CisgICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFNob3Vs
ZFNob3dDYXB0aW9ucyhwcmVmZXJlbmNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQorICAg
IAogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VTZXRTaG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFwcGVh
cmFuY2VEb21haW5Vc2VyLCBwcmVmZXJlbmNlKTsKIH0KIAorYm9vbCBDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjOjp1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QKK3sKKyAgICBib29sIGNhcHRp
b25TZXR0aW5nID0gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNDYXB0aW9ucygp
OworICAgIGlmIChjYXB0aW9uU2V0dGluZyB8fCB0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vz
c2liaWxpdHlMaWJyYXJ5KCkpCisgICAgICAgIHJldHVybiBjYXB0aW9uU2V0dGluZzsKKyAgICAK
KyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNz
KEFkb3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5UHJlZmVycmVkQ2FwdGlvbmluZ01lZGlh
Q2hhcmFjdGVyaXN0aWNzKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlcikpOworICAgIHJl
dHVybiBjYXB0aW9uaW5nTWVkaWFDaGFyYWN0ZXJpc3RpY3MgJiYgQ0ZBcnJheUdldENvdW50KGNh
cHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGljcy5nZXQoKSk7Cit9CisKK2Jvb2wgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYzo6dXNlclByZWZlcnNTdWJ0aXRsZXMoKSBjb25zdAoreworICAgIGJv
b2wgc3VidGl0bGVzU2V0dGluZyA9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJz
U3VidGl0bGVzKCk7CisgICAgaWYgKHN1YnRpdGxlc1NldHRpbmcgfHwgdGVzdGluZ01vZGUoKSB8
fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQorICAgICAgICByZXR1cm4gc3VidGl0bGVz
U2V0dGluZzsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY2FwdGlvbmluZ01lZGlh
Q2hhcmFjdGVyaXN0aWNzKEFkb3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5UHJlZmVycmVk
Q2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNzKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWlu
VXNlcikpOworICAgIHJldHVybiAhKGNhcHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGljcyAmJiBD
RkFycmF5R2V0Q291bnQoY2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNzLmdldCgpKSk7Cit9
CisKIGJvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJl
bmNlcygpIGNvbnN0CiB7CiAgICAgaWYgKHRlc3RpbmdNb2RlKCkgfHwgIU1lZGlhQWNjZXNzaWJp
bGl0eUxpYnJhcnkoKSkKQEAgLTQ5OSw0MCArNTIzLDE4NyBAQCBWZWN0b3I8U3RyaW5nPiBDYXB0
aW9uVXNlclByZWZlcmVuY2VzTWFjCiAKICAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdl
czsKIH0KLSNlbmRpZgotCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6ZGlzcGxh
eU5hbWVGb3JUcmFjayhUZXh0VHJhY2sqIHRyYWNrKSBjb25zdAorI2VuZGlmICAvLyBIQVZFKE1F
RElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQorICAgIAorc3RhdGljIFN0cmluZyB0cmFja0Rp
c3BsYXlOYW1lKFRleHRUcmFjayogdHJhY2spCiB7Ci0gICAgU3RyaW5nIGxhYmVsID0gdHJhY2st
PmxhYmVsKCk7Ci0gICAgU3RyaW5nIGxhbmd1YWdlID0gdHJhY2stPmxhbmd1YWdlKCk7Ci0gICAg
U3RyaW5nIHByZWZlcnJlZExhbmd1YWdlID0gZGVmYXVsdExhbmd1YWdlKCk7CiAgICAgU3RyaW5n
QnVpbGRlciBkaXNwbGF5TmFtZTsKKyAgICBTdHJpbmcgbGFiZWwgPSB0cmFjay0+bGFiZWwoKTsK
KyAgICBTdHJpbmcgdHJhY2tMYW5ndWFnZUlkZW50aWZpZXIgPSB0cmFjay0+bGFuZ3VhZ2UoKTsK
IAotICAgIGlmIChsYWJlbC5pc0VtcHR5KCkgJiYgbGFuZ3VhZ2UuaXNFbXB0eSgpKSB7CisgICAg
UmV0YWluUHRyPENGTG9jYWxlUmVmPiBjdXJyZW50TG9jYWxlKEFkb3B0Q0YsIENGTG9jYWxlQ29w
eUN1cnJlbnQoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2NhbGVJZGVudGlmaWVy
KEFkb3B0Q0YsIENGTG9jYWxlQ3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRlbnRpZmllckZyb21TdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdHJhY2tMYW5ndWFnZUlkZW50aWZpZXIuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFuZ3VhZ2VDRihB
ZG9wdENGLCBDRkxvY2FsZUNvcHlEaXNwbGF5TmFtZUZvclByb3BlcnR5VmFsdWUoY3VycmVudExv
Y2FsZS5nZXQoKSwga0NGTG9jYWxlTGFuZ3VhZ2VDb2RlLCBsb2NhbGVJZGVudGlmaWVyLmdldCgp
KSk7CisgICAgU3RyaW5nIGxhbmd1YWdlID0gbGFuZ3VhZ2VDRi5nZXQoKTsKKyAgICBpZiAoIWxh
YmVsLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIWxhbmd1YWdlLmlzRW1wdHkoKSAmJiAhbGFi
ZWwuY29udGFpbnMobGFuZ3VhZ2UpKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBsb2NhbGVEaWN0KEFkb3B0Q0YsIENGTG9jYWxlQ3JlYXRlQ29tcG9uZW50c0Zyb21M
b2NhbGVJZGVudGlmaWVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxvY2FsZUlkZW50aWZpZXIuZ2V0
KCkpKTsKKyAgICAgICAgICAgIGlmIChsb2NhbGVEaWN0KSB7CisgICAgICAgICAgICAgICAgQ0ZT
dHJpbmdSZWYgY291bnRyeUNvZGUgPSAwOworICAgICAgICAgICAgICAgIFN0cmluZyBjb3VudHJ5
TmFtZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBDRkRpY3Rpb25hcnlHZXRW
YWx1ZUlmUHJlc2VudChsb2NhbGVEaWN0LmdldCgpLCBrQ0ZMb2NhbGVDb3VudHJ5Q29kZSwgKGNv
bnN0IHZvaWQgKiopJmNvdW50cnlDb2RlKTsKKyAgICAgICAgICAgICAgICBpZiAoY291bnRyeUNv
ZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjb3VudHJ5
TmFtZUNGKEFkb3B0Q0YsIENGTG9jYWxlQ29weURpc3BsYXlOYW1lRm9yUHJvcGVydHlWYWx1ZShj
dXJyZW50TG9jYWxlLmdldCgpLCBrQ0ZMb2NhbGVDb3VudHJ5Q29kZSwgY291bnRyeUNvZGUpKTsK
KyAgICAgICAgICAgICAgICAgICAgY291bnRyeU5hbWUgPSBjb3VudHJ5TmFtZUNGLmdldCgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAo
IWNvdW50cnlOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWUu
YXBwZW5kKHRleHRUcmFja0NvdW50cnlBbmRMYW5ndWFnZU1lbnVJdGVtVGV4dChsYWJlbCwgY291
bnRyeU5hbWUsIGxhbmd1YWdlKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZS5hcHBlbmQodGV4dFRyYWNrTGFuZ3VhZ2VNZW51SXRlbVRleHQo
bGFiZWwsIGxhbmd1YWdlKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICBTdHJpbmcgbGFuZ3VhZ2VBbmRMb2NhbGUgPSBDRkxvY2FsZUNvcHlEaXNwbGF5
TmFtZUZvclByb3BlcnR5VmFsdWUoY3VycmVudExvY2FsZS5nZXQoKSwga0NGTG9jYWxlSWRlbnRp
ZmllciwgdHJhY2tMYW5ndWFnZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Cisg
ICAgICAgIGlmICghbGFuZ3VhZ2VBbmRMb2NhbGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgZGlz
cGxheU5hbWUuYXBwZW5kKGxhbmd1YWdlQW5kTG9jYWxlKTsKKyAgICAgICAgZWxzZSBpZiAoIWxh
bmd1YWdlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChsYW5ndWFn
ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChsb2NhbGVJ
ZGVudGlmaWVyLmdldCgpKTsKKyAgICB9CisgICAgCisgICAgaWYgKGRpc3BsYXlOYW1lLmlzRW1w
dHkoKSkKICAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKHRleHRUcmFja05vTGFiZWxUZXh0KCkp
OworICAgIAorICAgIGlmICh0cmFjay0+aXNFYXN5VG9SZWFkKCkpCisgICAgICAgIHJldHVybiBl
YXN5UmVhZGVyVHJhY2tNZW51SXRlbVRleHQoZGlzcGxheU5hbWUudG9TdHJpbmcoKSk7CisgICAg
CisgICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gdHJhY2stPmNhcHRpb25zS2V5d29yZCgpKQogICAg
ICAgICByZXR1cm4gZGlzcGxheU5hbWUudG9TdHJpbmcoKTsKLSAgICB9CisgICAgCisgICAgaWYg
KHRyYWNrLT5pc0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAgIHJldHVybiBjbG9zZWRDYXB0aW9u
VHJhY2tNZW51SXRlbVRleHQoZGlzcGxheU5hbWUudG9TdHJpbmcoKSk7CisgICAgCisgICAgcmV0
dXJuIHNkaFRyYWNrTWVudUl0ZW1UZXh0KGRpc3BsYXlOYW1lLnRvU3RyaW5nKCkpOworfQogCi0g
ICAgaWYgKCFsYWJlbC5pc0VtcHR5KCkpCi0gICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChsYWJl
bCk7CitTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6ZGlzcGxheU5hbWVGb3JUcmFj
ayhUZXh0VHJhY2sqIHRyYWNrKSBjb25zdAoreworICAgIHJldHVybiB0cmFja0Rpc3BsYXlOYW1l
KHRyYWNrKTsKK30KIAotICAgIEF0b21pY1N0cmluZyBsb2NhbGVEaXNwbGF5TmFtZSA9IGRpc3Bs
YXlOYW1lRm9yTGFuZ3VhZ2VMb2NhbGUobGFuZ3VhZ2UpOwotICAgIGlmICghbGFiZWwuY29udGFp
bnMobG9jYWxlRGlzcGxheU5hbWUpKSB7Ci0gICAgICAgIGlmIChkaXNwbGF5TmFtZS5sZW5ndGgo
KSA+IDApCi0gICAgICAgICAgICBkaXNwbGF5TmFtZS5hcHBlbmQoIiAiKTsKLSAgICAgICAgZGlz
cGxheU5hbWUuYXBwZW5kKGxvY2FsZURpc3BsYXlOYW1lKTsKLSAgICB9CitzdGF0aWMgU3RyaW5n
IGxhbmd1YWdlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGxhbmd1YWdlQ29kZSkKK3sKKyAgICBp
ZiAobGFuZ3VhZ2VDb2RlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGxhbmd1YWdlQ29kZTsK
IAotICAgIGlmICh0cmFjay0+a2luZCgpID09IHRyYWNrLT5jYXB0aW9uc0tleXdvcmQoKSkgewot
ICAgICAgICBpZiAodHJhY2stPmlzQ2xvc2VkQ2FwdGlvbnMoKSkKLSAgICAgICAgICAgIGRpc3Bs
YXlOYW1lLmFwcGVuZCgiIENDIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRpc3BsYXlO
YW1lLmFwcGVuZCgiIFNESCIpOworICAgIFN0cmluZyBsb3dlcmNhc2VMYW5ndWFnZUNvZGUgPSBs
YW5ndWFnZUNvZGUubG93ZXIoKTsKKyAgICAKKyAgICBpZiAobG93ZXJjYXNlTGFuZ3VhZ2VDb2Rl
Lmxlbmd0aCgpID49IDMgJiYgKGxvd2VyY2FzZUxhbmd1YWdlQ29kZVsyXSA9PSAnXycgfHwgbG93
ZXJjYXNlTGFuZ3VhZ2VDb2RlWzJdID09ICctJykpCisgICAgICAgIGxvd2VyY2FzZUxhbmd1YWdl
Q29kZS50cnVuY2F0ZSgyKTsKKyAgICAKKyAgICByZXR1cm4gbG93ZXJjYXNlTGFuZ3VhZ2VDb2Rl
OworfQorCitzdGF0aWMgYm9vbCB0ZXh0VHJhY2tDb21wYXJlKGNvbnN0IFJlZlB0cjxUZXh0VHJh
Y2s+JiBhLCBjb25zdCBSZWZQdHI8VGV4dFRyYWNrPiYgYikKK3sKKyAgICBTdHJpbmcgcHJlZmVy
cmVkTGFuZ3VhZ2VEaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lRm9yTGFuZ3VhZ2VMb2NhbGUobGFu
Z3VhZ2VJZGVudGlmaWVyKGRlZmF1bHRMYW5ndWFnZSgpKSk7CisgICAgU3RyaW5nIGFMYW5ndWFn
ZURpc3BsYXlOYW1lID0gZGlzcGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZShsYW5ndWFnZUlkZW50
aWZpZXIoYS0+bGFuZ3VhZ2UoKSkpOworICAgIFN0cmluZyBiTGFuZ3VhZ2VEaXNwbGF5TmFtZSA9
IGRpc3BsYXlOYW1lRm9yTGFuZ3VhZ2VMb2NhbGUobGFuZ3VhZ2VJZGVudGlmaWVyKGItPmxhbmd1
YWdlKCkpKTsKKworICAgIC8vIFRyYWNrcyBpbiB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFn
ZSBhcmUgYWx3YXlzIGF0IHRoZSB0b3Agb2YgdGhlIG1lbnUuCisgICAgYm9vbCBhSXNQcmVmZXJy
ZWRMYW5ndWFnZSA9ICFjb2RlUG9pbnRDb21wYXJlKGFMYW5ndWFnZURpc3BsYXlOYW1lLCBwcmVm
ZXJyZWRMYW5ndWFnZURpc3BsYXlOYW1lKTsKKyAgICBib29sIGJJc1ByZWZlcnJlZExhbmd1YWdl
ID0gIWNvZGVQb2ludENvbXBhcmUoYkxhbmd1YWdlRGlzcGxheU5hbWUsIHByZWZlcnJlZExhbmd1
YWdlRGlzcGxheU5hbWUpOworICAgIGlmICgoYUlzUHJlZmVycmVkTGFuZ3VhZ2UgfHwgYklzUHJl
ZmVycmVkTGFuZ3VhZ2UpICYmIChhSXNQcmVmZXJyZWRMYW5ndWFnZSAhPSBiSXNQcmVmZXJyZWRM
YW5ndWFnZSkpCisgICAgICAgIHJldHVybiBhSXNQcmVmZXJyZWRMYW5ndWFnZSA/IHRydWUgOiBm
YWxzZTsKKworICAgIC8vIFRyYWNrcyBub3QgaW4gdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3Vh
Z2Ugc29ydCBmaXJzdCBieSBsYW5ndWFnZSAuLi4KKyAgICBpZiAoY29kZVBvaW50Q29tcGFyZShh
TGFuZ3VhZ2VEaXNwbGF5TmFtZSwgYkxhbmd1YWdlRGlzcGxheU5hbWUpKQorICAgICAgICByZXR1
cm4gY29kZVBvaW50Q29tcGFyZShhTGFuZ3VhZ2VEaXNwbGF5TmFtZSwgYkxhbmd1YWdlRGlzcGxh
eU5hbWUpIDwgMDsKKworICAgIC8vIC4uLiBidXQgd2hlbiB0cmFja3MgaGF2ZSB0aGUgc2FtZSBs
YW5ndWFnZSwgbWFpbiBwcm9ncmFtIGNvbnRlbnQgc29ydHMgbmV4dCBoaWdoZXN0IC4uLgorICAg
IGJvb2wgYUlzTWFpbkNvbnRlbnQgPSBhLT5pc01haW5Qcm9ncmFtQ29udGVudCgpOworICAgIGJv
b2wgYklzTWFpbkNvbnRlbnQgPSBiLT5pc01haW5Qcm9ncmFtQ29udGVudCgpOworICAgIGlmICgo
YUlzTWFpbkNvbnRlbnQgfHwgYklzTWFpbkNvbnRlbnQpICYmIChhSXNNYWluQ29udGVudCAhPSBi
SXNNYWluQ29udGVudCkpCisgICAgICAgIHJldHVybiBhSXNNYWluQ29udGVudCA/IHRydWUgOiBm
YWxzZTsKKworICAgIC8vIC4uLiBhbmQgbWFpbiBwcm9ncmFtIHRyYWtjcyBzb3J0IGhpZ2hlciB0
aGFuIENDIHRyYWNrcyAuLi4KKyAgICBib29sIGFJc0NDID0gYS0+aXNDbG9zZWRDYXB0aW9ucygp
OworICAgIGJvb2wgYklzQ0MgPSBiLT5pc0Nsb3NlZENhcHRpb25zKCk7CisgICAgaWYgKChhSXND
QyB8fCBiSXNDQykgJiYgKGFJc0NDICE9IGJJc0NDKSkgeworICAgICAgICBpZiAoYUlzQ0MpCisg
ICAgICAgICAgICByZXR1cm4gYUlzTWFpbkNvbnRlbnQgPyB0cnVlIDogZmFsc2U7CisgICAgICAg
IGlmIChiSXNDQykKKyAgICAgICAgICAgIHJldHVybiBiSXNNYWluQ29udGVudCA/IHRydWUgOiBm
YWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gZGlzcGxheU5hbWUudG9TdHJpbmcoKTsKKyAgICAv
LyAuLi4gYW5kIHRyYWNrcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCBsYW5ndWFnZSBzb3J0IGJ5IHRo
ZSBtZW51IGl0ZW0gdGV4dC4KKyAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZSh0cmFja0Rpc3Bs
YXlOYW1lKGEuZ2V0KCkpLCB0cmFja0Rpc3BsYXlOYW1lKGIuZ2V0KCkpKSA8IDA7CiB9CiAKK1Zl
Y3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNvcnRl
ZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRyYWNrTGlzdCogdHJhY2tMaXN0KQoreworICAgIEFTU0VS
VCh0cmFja0xpc3QpOworCisgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gdHJhY2tzRm9y
TWVudTsKKyAgICBIYXNoU2V0PFN0cmluZz4gbGFuZ3VhZ2VzSW5jbHVkZWQ7CisgICAgYm9vbCBw
cmVmZXJzQWNjZXNzaWJpbGl0eVRyYWNrcyA9IHVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKKworICAg
IGZvciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IHRyYWNrTGlzdC0+bGVuZ3RoKCk7IGkgPCBs
ZW5ndGg7ICsraSkgeworICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gdHJhY2tMaXN0LT5pdGVt
KGkpOworICAgICAgICBTdHJpbmcgbGFuZ3VhZ2UgPSBkaXNwbGF5TmFtZUZvckxhbmd1YWdlTG9j
YWxlKHRyYWNrLT5sYW5ndWFnZSgpKTsKKworICAgICAgICBpZiAodHJhY2stPmlzRWFzeVRvUmVh
ZCgpKSB7CisgICAgICAgICAgICBpZiAoIWxhbmd1YWdlLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICBsYW5ndWFnZXNJbmNsdWRlZC5hZGQobGFuZ3VhZ2UpOworICAgICAgICAgICAgdHJhY2tz
Rm9yTWVudS5hcHBlbmQodHJhY2spOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KworICAgICAgICBpZiAodHJhY2stPmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFsYW5ndWFnZS5pc0VtcHR5KCkgJiYg
dHJhY2stPmlzTWFpblByb2dyYW1Db250ZW50KCkpIHsKKyAgICAgICAgICAgIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5VHJhY2sgPSB0cmFjay0+a2luZCgpID09IHRyYWNrLT5jYXB0aW9uc0tleXdvcmQo
KTsKKyAgICAgICAgICAgIGlmIChwcmVmZXJzQWNjZXNzaWJpbGl0eVRyYWNrcykgeworICAgICAg
ICAgICAgICAgIC8vIEluIHRoZSBmaXJzdCBwYXNzLCBpbmNsdWRlIG9ubHkgY2FwdGlvbiB0cmFj
a3MgaWYgdGhlIHVzZXIgcHJlZmVycyBhY2Nlc3NpYmlsaXR5IHRyYWNrcy4KKyAgICAgICAgICAg
ICAgICBpZiAoIWlzQWNjZXNzaWJpbGl0eVRyYWNrKSB7CisgICAgICAgICAgICAgICAgICAgIExP
RyhNZWRpYSwgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNvcnRlZFRyYWNrTGlzdEZvck1l
bnUgLSBza2lwcGluZyAlcyBiZWNhdXNlIGl0IGlzIE5PVCBhbiBhY2Nlc3NpYmlsaXR5IHRyYWNr
IiwgbGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgLy8gSW4gdGhlIGZpcnN0IHBhc3MsIG9ubHkgaW5jbHVkZSB0aGUgZmlyc3Qgbm9uLUNDIG9y
IFNESCB0cmFjayB3aXRoIGVhY2ggbGFuZ3VhZ2UgaWYgdGhlIHVzZXIgcHJlZmVycyB0cmFuc2xh
dGlvbiB0cmFja3MuCisgICAgICAgICAgICAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eVRyYWNrKSB7
CisgICAgICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUgLSBza2lwcGluZyAlcyBiZWNhdXNlIGl0IGlzIGFu
IGFjY2Vzc2liaWxpdHkgdHJhY2siLCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGlmIChsYW5ndWFnZXNJbmNsdWRlZC5jb250YWlucyhsYW5ndWFnZSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c29ydGVkVHJh
Y2tMaXN0Rm9yTWVudSAtIHNraXBwaW5nICVzIGJlY2F1c2UgaXQgaXMgbm90IHRoZSBmaXJzdCB3
aXRoIHRoaXMgbGFuZ3VhZ2UiLCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFsYW5ndWFnZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBs
YW5ndWFnZXNJbmNsdWRlZC5hZGQobGFuZ3VhZ2UpOworICAgICAgICB0cmFja3NGb3JNZW51LmFw
cGVuZCh0cmFjayk7CisgICAgfQorCisgICAgLy8gTm93IHRoYXQgd2UgaGF2ZSBmaWx0ZXJlZCBm
b3IgdGhlIHVzZXIncyBhY2Nlc3NpYmlsaXR5L3RyYW5zbGF0aW9uIHByZWZlcmVuY2UsIGFkZCAg
YWxsIHRyYWNrcyB3aXRoIGEgdW5pcXVlIGxhbmd1YWdlIHdpdGhvdXQgcmVnYXJkIHRvIHRyYWNr
IHR5cGUuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5n
dGgoKTsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0cmFj
a0xpc3QtPml0ZW0oaSk7CisgICAgICAgIFN0cmluZyBsYW5ndWFnZSA9IGRpc3BsYXlOYW1lRm9y
TGFuZ3VhZ2VMb2NhbGUodHJhY2stPmxhbmd1YWdlKCkpOworCisgICAgICAgIC8vIEFsbCBjYW5k
aWRhdGVzIHdpdGggbm8gbGFuZ3VnZSB3ZXJlIGFkZGVkIHRoZSBmaXJzdCB0aW1lIHRocm91Z2gu
CisgICAgICAgIGlmIChsYW5ndWFnZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBpZiAodHJhY2stPmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpKQorICAg
ICAgICAgICAgY29udGludWU7CisgCisgICAgICAgIGlmICghbGFuZ3VhZ2VzSW5jbHVkZWQuY29u
dGFpbnMobGFuZ3VhZ2UpICYmIHRyYWNrLT5pc01haW5Qcm9ncmFtQ29udGVudCgpKSB7CisgICAg
ICAgICAgICBsYW5ndWFnZXNJbmNsdWRlZC5hZGQobGFuZ3VhZ2UpOworICAgICAgICAgICAgdHJh
Y2tzRm9yTWVudS5hcHBlbmQodHJhY2spOworICAgICAgICB9CisgICAgfQorCisgICAgbm9uQ29w
eWluZ1NvcnQodHJhY2tzRm9yTWVudS5iZWdpbigpLCB0cmFja3NGb3JNZW51LmVuZCgpLCB0ZXh0
VHJhY2tDb21wYXJlKTsKKworICAgIHJldHVybiB0cmFja3NGb3JNZW51OworfQorICAgIAogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGFuZ3VhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xhbmd1YWdlLmNwcAkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGFuZ3VhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsOCArMTU0LDEwIEBAIFN0cmlu
ZyBwcmVmZXJyZWRMYW5ndWFnZUZyb21MaXN0KGNvbnN0IFYKIFN0cmluZyBkaXNwbGF5TmFtZUZv
ckxhbmd1YWdlTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlTmFtZSkKIHsKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgaWYgKCFsb2NhbGVOYW1lLmlzTnVsbCgpICYmICFsb2NhbGVOYW1lLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIENGTG9jYWxlQ29weURpc3BsYXlOYW1lRm9yUHJvcGVydHlW
YWx1ZShDRkxvY2FsZUNvcHlDdXJyZW50KCksIGtDRkxvY2FsZUlkZW50aWZpZXIsIGxvY2FsZU5h
bWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgaWYgKCFsb2NhbGVOYW1lLmlzTnVsbCgp
ICYmICFsb2NhbGVOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVS
ZWY+IGN1cnJlbnRMb2NhbGUoQWRvcHRDRiwgQ0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKKyAgICAg
ICAgcmV0dXJuIENGTG9jYWxlQ29weURpc3BsYXlOYW1lRm9yUHJvcGVydHlWYWx1ZShjdXJyZW50
TG9jYWxlLmdldCgpLCBrQ0ZMb2NhbGVJZGVudGlmaWVyLCBsb2NhbGVOYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOworICAgIH0KICNlbmRpZgogICAgIHJldHVybiBsb2NhbGVOYW1lOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAJKHJl
dmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI3LDggKzEwMjcsMzYgQEAgU3RyaW5nIHRleHRU
cmFja09mZlRleHQoKQogCiBTdHJpbmcgdGV4dFRyYWNrTm9MYWJlbFRleHQoKQogewotICAgIHJl
dHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiVW5rbm93biIsICJVbmtub3duIChjbG9zZWQgY2FwdGlv
bnMgdHJhY2spIiwgIk1lbnUgaXRlbSBsYWJlbCBmb3IgYSBjbG9zZWQgY2FwdGlvbnMgdHJhY2sg
dGhhdCBoYXMgbm8gb3RoZXIgbmFtZSIpOworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgi
VW5rbm93biIsICJVbmtub3duICh0ZXh0IHRyYWNrKSIsICJNZW51IGl0ZW0gbGFiZWwgZm9yIGEg
dGV4dCB0cmFjayB0aGF0IGhhcyBubyBvdGhlciBuYW1lIik7CiB9CisgICAgCisjaWYgUExBVEZP
Uk0oTUFDKQorU3RyaW5nIHRleHRUcmFja0NvdW50cnlBbmRMYW5ndWFnZU1lbnVJdGVtVGV4dChj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGNvdW50cnksIGNvbnN0IFN0cmluZyYg
bGFuZ3VhZ2UpCit7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RS
SU5HKCIlQCAoJUAtJUApIiwgIlRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGlu
Y2x1ZGVzIHRoZSBjb3VudHJ5IGFuZCBsYW5ndWFnZSBvZiB0aGUgc3VidGl0bGUsIGluIHRoZSBm
b3JtIG9mICdUaXRsZSAoTGFuZ3VhZ2UtQ291bnRyeSknIiksIHRpdGxlLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGxhbmd1YWdlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvdW50cnkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7Cit9CisKK1N0cmluZyB0ZXh0VHJhY2tMYW5ndWFnZU1lbnVJdGVt
VGV4dChjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQoreworICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgKCVAKSIsICJU
ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2Ug
b2YgdGhlIHN1YnRpdGxlLCBpbiB0aGUgZm9ybSBvZiAnVGl0bGUgKExhbmd1YWdlKSciKSwgdGl0
bGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgbGFuZ3VhZ2UuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7Cit9CisKK1N0cmluZyBjbG9zZWRDYXB0aW9uVHJhY2tNZW51SXRlbVRleHQoY29uc3QgU3Ry
aW5nJiB0aXRsZSkKK3sKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9T
VFJJTkcoIiVAIENDIiwgIlRleHQgdHJhY2sgY29udGFpbnMgY2xvc2VkIGNhcHRpb25zIiksIHRp
dGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworfQorCitTdHJpbmcgc2RoVHJhY2tNZW51SXRl
bVRleHQoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVAIFNESCIsICJUZXh0IHRyYWNrIGNvbnRhaW5zIHN1YnRp
dGxlcyBmb3IgdGhlIGRlYWYgYW5kIGhhcmQgb2YgaGVhcmluZyIpLCB0aXRsZS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKK30KKworU3RyaW5nIGVhc3lSZWFkZXJUcmFja01lbnVJdGVtVGV4dChj
b25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX1NUUklORygiJUAgRWFzeSBSZWFkZXIiLCAiVGV4dCB0cmFjayBjb250YWlucyBzaW1w
bGlmaWVkICgzcmQgZ3JhZGUgbGV2ZWwpIHN1YnRpdGxlcyIpLCB0aXRsZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKK30KKyNlbmRpZgorCiAjZW5kaWYKIAogU3RyaW5nIHNuYXBzaG90dGVkUGx1
Z0luTGFiZWxUaXRsZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRT
dHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5oCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsMTMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIFN0cmluZyB0ZXh0VHJhY2tTdWJ0aXRsZXNUZXh0KCk7CiAg
ICAgU3RyaW5nIHRleHRUcmFja09mZlRleHQoKTsKICAgICBTdHJpbmcgdGV4dFRyYWNrTm9MYWJl
bFRleHQoKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgU3RyaW5nIHRleHRUcmFja0NvdW50cnlB
bmRMYW5ndWFnZU1lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcm
IGNvdW50cnksIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpOworICAgIFN0cmluZyB0ZXh0VHJhY2tM
YW5ndWFnZU1lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGxh
bmd1YWdlKTsKKyAgICBTdHJpbmcgY2xvc2VkQ2FwdGlvblRyYWNrTWVudUl0ZW1UZXh0KGNvbnN0
IFN0cmluZyYpOworICAgIFN0cmluZyBzZGhUcmFja01lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcm
KTsKKyAgICBTdHJpbmcgZWFzeVJlYWRlclRyYWNrTWVudUl0ZW1UZXh0KGNvbnN0IFN0cmluZyYp
OworI2VuZGlmCiAjZW5kaWYKIAogICAgIFN0cmluZyBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsVGl0
bGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRU
cmFja1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNyArNTUsMTEgQEAgcHVibGljOgogCiAgICAgZW51bSBLaW5kIHsg
U3VidGl0bGVzLCBDYXB0aW9ucywgRGVzY3JpcHRpb25zLCBDaGFwdGVycywgTWV0YWRhdGEsIE5v
bmUgfTsKICAgICB2aXJ0dWFsIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIFN1YnRpdGxlczsg
fQorCiAgICAgdmlydHVhbCBib29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01haW5Qcm9ncmFtQ29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFYXN5VG9S
ZWFkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5n
IGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CiAgICAgdmlydHVhbCBBdG9taWNT
dHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRU
cmFja1ByaXZhdGVBVkZPYmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9i
akMuaAkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNiArNDksOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBpc0Nsb3NlZENhcHRpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIGNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBpc01haW5Qcm9ncmFtQ29udGVudCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBpc0Vhc3lUb1JlYWQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIEF0
b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgQXRvbWljU3Ry
aW5nIGxhbmd1YWdlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzRGVmYXVs
dCgpIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0JKHJldmlzaW9uIDE0NjIwNSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1
Miw5IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVySXQKICNkZWZpbmUg
QVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3Vh
bCgpCiAjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUgZ2V0QVZNZWRpYUNoYXJh
Y3RlcmlzdGljQXVkaWJsZSgpCiAjZGVmaW5lIEFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiBnZXRB
Vk1lZGlhVHlwZUNsb3NlZENhcHRpb24oKQotI2RlZmluZSBBVk1lZGlhVHlwZVZpZGVvIGdldEFW
TWVkaWFUeXBlVmlkZW8oKQotI2RlZmluZSBBVk1lZGlhVHlwZUF1ZGlvIGdldEFWTWVkaWFUeXBl
QXVkaW8oKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRT
dWJ0aXRsZXMgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0
bGVzKCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQg
Z2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQoKQorI2RlZmluZSBB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNFYXN5VG9SZWFkIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Vh
c3lUb1JlYWQoKQogCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBl
Q2xvc2VkQ2FwdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlv
biwgQVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSwgTlNTdHJpbmcgKikKQEAgLTYyLDYgKzYz
LDEwIEBAIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZXRhZGEKIFNPRlRfTElO
S19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVTdWJ0aXRsZSwgTlNTdHJpbmcgKikK
IFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJh
bnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBOU1N0cmluZyAqKQogU09GVF9M
SU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNN
dXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lO
VEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2Vk
U3VidGl0bGVzLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCwgTlNTdHJpbmcgKikKK1NP
RlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRv
UmVhZCwgTlNTdHJpbmcgKikKKwogI2RlZmluZSBBVk1ldGFkYXRhSXRlbSBnZXRBVk1ldGFkYXRh
SXRlbUNsYXNzKCkKICNkZWZpbmUgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dCBnZXRBVlBsYXll
ckl0ZW1MZWdpYmxlT3V0cHV0Q2xhc3MoKQogI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNM
ZWdpYmxlIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUoKQpAQCAtMTE5LDYgKzEyNCwz
MCBAQCBib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjppc0NsCiAgICAgcmV0dXJu
IFtbbV9tZWRpYVNlbGVjdGlvbk9wdGlvbiBtZWRpYVR5cGVdIGlzRXF1YWxUb1N0cmluZzpBVk1l
ZGlhVHlwZUNsb3NlZENhcHRpb25dOwogfQogCitib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkZPYmpDOjpjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdAoreworICAgIGlmICgh
bV9tZWRpYVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IHJldHVybiBbbV9tZWRpYVNlbGVjdGlvbk9wdGlvbiBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlc107Cit9CisKK2Jv
b2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmlzTWFpblByb2dyYW1Db250ZW50KCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gW21fbWVkaWFTZWxlY3Rpb25PcHRpb24gaGFzTWVk
aWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVu
dF07Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmlzRWFzeVRvUmVh
ZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gW21fbWVkaWFTZWxlY3Rpb25PcHRpb24gaGFzTWVk
aWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNFYXN5VG9SZWFkXTsKK30KKwog
QXRvbWljU3RyaW5nIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpsYWJlbCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQpJbmRleDogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxNDYyMDUpCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW50ZXJu
YWxTZXR0aW5ncy5oIgogCisjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC0zNCw2ICszNSw3IEBACiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNs
dWRlICJMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKQEAgLTQyNiwx
MiArNDI4LDE2IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0U2hvdWxkRGlzcGxheVQKICAg
ICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOwogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorICAgIGlmICghcGFnZSgpKQorICAgICAgICByZXR1cm47CisgICAgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcyogY2FwdGlvblByZWZlcmVuY2VzID0gcGFnZSgpLT5ncm91cCgpLmNhcHRp
b25QcmVmZXJlbmNlcygpOworCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGtpbmQsICJTdWJ0
aXRsZXMiKSkKLSAgICAgICAgc2V0dGluZ3MoKS0+c2V0U2hvdWxkRGlzcGxheVN1YnRpdGxlcyhl
bmFibGVkKTsKKyAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzLT5zZXRVc2VyUHJlZmVyc1N1YnRp
dGxlcyhlbmFibGVkKTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShraW5kLCAiQ2Fw
dGlvbnMiKSkKLSAgICAgICAgc2V0dGluZ3MoKS0+c2V0U2hvdWxkRGlzcGxheUNhcHRpb25zKGVu
YWJsZWQpOworICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldFVzZXJQcmVmZXJzQ2FwdGlv
bnMoZW5hYmxlZCk7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoa2luZCwgIlRleHRE
ZXNjcmlwdGlvbnMiKSkKLSAgICAgICAgc2V0dGluZ3MoKS0+c2V0U2hvdWxkRGlzcGxheVRleHRE
ZXNjcmlwdGlvbnMoZW5hYmxlZCk7CisgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0VXNl
clByZWZlcnNUZXh0RGVzY3JpcHRpb25zKGVuYWJsZWQpOwogICAgIGVsc2UKICAgICAgICAgZWMg
PSBTWU5UQVhfRVJSOwogI2Vsc2UKQEAgLTQ0NSwxMiArNDUxLDE2IEBAIGJvb2wgSW50ZXJuYWxT
ZXR0aW5nczo6c2hvdWxkRGlzcGxheVRyYWMKICAgICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JT
ZXR0aW5nc1JldHVybihmYWxzZSk7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYg
KCFwYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBwYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVu
Y2VzKCk7CisKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoa2luZCwgIlN1YnRpdGxlcyIpKQot
ICAgICAgICByZXR1cm4gc2V0dGluZ3MoKS0+c2hvdWxkRGlzcGxheVN1YnRpdGxlcygpOworICAg
ICAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzLT51c2VyUHJlZmVyc1N1YnRpdGxlcygpOwog
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShraW5kLCAiQ2FwdGlvbnMiKSkKLSAgICAgICAgcmV0
dXJuIHNldHRpbmdzKCktPnNob3VsZERpc3BsYXlDYXB0aW9ucygpOworICAgICAgICByZXR1cm4g
Y2FwdGlvblByZWZlcmVuY2VzLT51c2VyUHJlZmVyc0NhcHRpb25zKCk7CiAgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGtpbmQsICJUZXh0RGVzY3JpcHRpb25zIikpCi0gICAgICAgIHJldHVybiBz
ZXR0aW5ncygpLT5zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygpOworICAgICAgICByZXR1
cm4gY2FwdGlvblByZWZlcmVuY2VzLT51c2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMoKTsKIAog
ICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNDYyMTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOSBAQAorMjAxMy0wMy0xOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyBzcGVjaWZpYyB0ZXh0IHRyYWNrIG1lbnUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjgwMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvdHJh
Y2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogbWVkaWEv
dHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sOgorICAgICAgICAqIG1lZGlhL3ZpZGVv
LWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1sb2NhbGl6ZWQuaHRtbDoKKyAgICAgICAgKiBt
ZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLmh0bWw6CisgICAg
ICAgICogbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51Lmh0bWw6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVu
dS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWNvbnRy
b2xzLWNhcHRpb25zLXRyYWNrbWVudS1sb2NhbGl6ZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29y
dGVkLWV4cGVjdGVkLnR4dDoKKwogMjAxMy0wMy0xOSAgSm9obiBKLiBCYXJ0b24gIDxqb2huamJh
cnRvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGlmcmFtZSBv
cHRpb24gdG8gaW5zcGVjdGVkV2luZG93LmV2YWwoKSBleHRlbnNpb24gQVBJCkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtbG9jYWxpemVk
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2Fw
dGlvbnMtdHJhY2ttZW51LWxvY2FsaXplZC5odG1sCShyZXZpc2lvbiAxNDYyMDUpCisrKyBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtbG9jYWxpemVk
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDggQEAKICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgiaXRlbS50ZXh0Q29udGVudCIsICJFbmdsaXNoIENDIik7CiAKICAgICAgICAgICAg
IGl0ZW0gPSBjYXB0aW9uc0VudHJpZXNbMl07Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxi
cj5UaGlyZCBpdGVtIGluIGNhcHRpb25zIG1lbnUgc2hvdWxkIGJlIGxhYmVsbGVkICdVbmtub3du
JyIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJpdGVtLnRleHRDb250ZW50IiwgIlVua25v
d24iKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPlRoaXJkIGl0ZW0gaW4gY2FwdGlv
bnMgbWVudSBzaG91bGQgYmUgbGFiZWxsZWQgJ1Vua25vd24gU0RIJyIpOworICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJpdGVtLnRleHRDb250ZW50IiwgIlVua25vd24gU0RIIik7CiAKICAgICAg
ICAgICAgIGl0ZW0gPSBjYXB0aW9uc0VudHJpZXNbM107CiAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIjxicj5Gb3VydGggaXRlbSBpbiBjYXB0aW9ucyBtZW51IHNob3VsZCBiZSBsYWJlbGxlZCAn
VW5rbm93biciKTsKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRp
b25zLXRyYWNrbWVudS1zb3J0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLmh0bWwJKHJldmlzaW9u
IDE0NjIwNSkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRy
YWNrbWVudS1zb3J0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNywxMSArNywxNiBAQAogICAg
ICAgICA8c2NyaXB0IHNyYz0idmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3Jp
cHQgc3JjPSJ0cmFja21lbnUtdGVzdC5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgICAgICB2YXIgdGVzdCA9IDA7CiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKLSAgICAgICAg
ICAgIGZ1bmN0aW9uIHRlc3RTb3J0ZWRNZW51KCkKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRleHRU
cmFja01lbnVJdGVtcygpCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gU2hvdyBh
bmQgaGlkZSB0aGUgbWVudSB0byBmb3JjZSBhIHJlY2FsY3VsYXRpb24uCisgICAgICAgICAgICAg
ICAgY2xpY2tDQ0J1dHRvbigpOworICAgICAgICAgICAgICAgIGNsaWNrQ0NCdXR0b24oKTsKKwog
ICAgICAgICAgICAgICAgIHZhciB0cmFja0xpc3RFbGVtZW50ID0gZ2V0VHJhY2tMaXN0RWxlbWVu
dCgpOwogICAgICAgICAgICAgICAgIGlmICghdHJhY2tMaXN0RWxlbWVudCkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjAsMjUgKzI1LDU0IEBACiAgICAgICAgICAgICAgICAgICAg
IGZhaWxUZXN0KCJUaGVyZSBzaG91bGQgYmUgYSB1bCBlbGVtZW50IGluIHRyYWNrIGxpc3QgbWVu
dSIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHZhciBsYXN0VHJhY2tMYWJlbCA9IG51bGw7Ci0gICAgICAgICAgICAgICAg
dmFyIHRyYWNrTGlzdEl0ZW1zID0gdHJhY2tMaXN0U2VjdGlvbi5xdWVyeVNlbGVjdG9yQWxsKCJs
aSIpOwotICAgICAgICAgICAgICAgIGlmICghdHJhY2tMaXN0SXRlbXMgfHwgdHJhY2tMaXN0SXRl
bXMubGVuZ3RoICE9IDcpIHsKLSAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIlRoZXJlIHNo
b3VsZCBiZSBzZXZlbiBsaSBlbGVtZW50cyBpbiB0aGUgbWVudSIpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAodmFy
IGogPSAwOyBqIDwgdHJhY2tMaXN0SXRlbXMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIGl0ZW0gPSB0cmFja0xpc3RJdGVtc1tqXTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGogPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1Jlc3VsdChpdGVtLnRleHRD
b250ZW50ID09ICJPZmYiLCAiRmlyc3QgaXRlbSBzaG91bGQgYmUgbGFiZWxsZWQgb2ZmIik7Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxh
c3RUcmFja0xhYmVsKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1Jlc3VsdChpdGVt
LnRleHRDb250ZW50ID4gbGFzdFRyYWNrTGFiZWwsIGxhc3RUcmFja0xhYmVsICsgIiBjb21lcyBi
ZWZvcmUgIiArIGl0ZW0udGV4dENvbnRlbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1Jlc3VsdCh0cnVlLCBpdGVtLnRleHRD
b250ZW50ICsgIiBpcyB0aGUgZmlyc3QgcmVhbCBpdGVtIGluIHRoZSBsaXN0Iik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBsYXN0VHJhY2tMYWJlbCA9IGl0ZW0udGV4dENvbnRlbnQ7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJhY2tMaXN0U2VjdGlv
bi5xdWVyeVNlbGVjdG9yQWxsKCJsaSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiB0ZXN0U29ydGVkTWVudSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
c3dpdGNoICh0ZXN0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIDA6
CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPjxpPioqIFRlc3Qgd2l0aCBw
cmVmZXJyZWQgbGFuZ3VhZ2Ugc2V0IHRvIEVuZ2xpc2gsIHRyYWNrIHR5cGUgc2V0IHRvIGNhcHRp
b25zPCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAgICAgIHJ1bigiaW50ZXJuYWxzLnNldHRp
bmdzLnNldFNob3VsZERpc3BsYXlUcmFja0tpbmQoJ0NhcHRpb25zJywgdHJ1ZSkiKTsKKyAgICAg
ICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQodGVzdFNvcnRlZE1lbnUsIDApOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAg
ICAgICAgICAgICAgICAgdHJhY2tNZW51SXRlbXMgPSB0ZXh0VHJhY2tNZW51SXRlbXMoKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1swXS50ZXh0Q29u
dGVudCIsICJPZmYiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01l
bnVJdGVtc1sxXS50ZXh0Q29udGVudCIsICJ1IChFbmdsaXNoKSBTREgiKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1syXS50ZXh0Q29udGVudCIsICJ5
IChFbmdsaXNoLUF1c3RyYWxpYSkgU0RIIik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidHJhY2tNZW51SXRlbXNbM10udGV4dENvbnRlbnQiLCAidiAoRW5nbGlzaCkiKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1s0XS50ZXh0Q29u
dGVudCIsICJ4IChFbmdsaXNoLUF1c3RyYWxpYSkiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1s1XS50ZXh0Q29udGVudCIsICJ3IChKYXBhbmVzZSkg
U0RIIik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRlbXNb
Nl0udGV4dENvbnRlbnQiLCAieiAoSmFwYW5lc2UpIik7CisgICAgICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrcy5sZW5ndGgiLCA2KTsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtcy5sZW5ndGgiLCA3KTsKKworICAgICAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj48aT4qKiBDaGFuZ2UgcHJlZmVycmVkIGxh
bmd1YWdlIHRvIEphcGFuZXNlLCBjaGFuZ2UgcHJlZmVyZW5jZSB0byBzdWJ0aXRsZXM8IiArICIv
aT4iKTsKKyAgICAgICAgICAgICAgICAgICAgcnVuKCJpbnRlcm5hbHMuc2V0VXNlclByZWZlcnJl
ZExhbmd1YWdlcyhbJ2phJ10pIik7CisgICAgICAgICAgICAgICAgICAgIHJ1bigiaW50ZXJuYWxz
LnNldHRpbmdzLnNldFNob3VsZERpc3BsYXlUcmFja0tpbmQoJ0NhcHRpb25zJywgZmFsc2UpIik7
CisgICAgICAgICAgICAgICAgICAgIHJ1bigiaW50ZXJuYWxzLnNldHRpbmdzLnNldFNob3VsZERp
c3BsYXlUcmFja0tpbmQoJ1N1YnRpdGxlcycsIHRydWUpIik7CisKKyAgICAgICAgICAgICAgICAg
ICAgd2luZG93LnNldFRpbWVvdXQodGVzdFNvcnRlZE1lbnUsIDApOworICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICB0
cmFja01lbnVJdGVtcyA9IHRleHRUcmFja01lbnVJdGVtcygpOworICAgICAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zWzBdLnRleHRDb250ZW50IiwgIk9mZiIpOwor
ICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zWzFdLnRleHRD
b250ZW50IiwgInogKEphcGFuZXNlKSIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInRyYWNrTWVudUl0ZW1zWzJdLnRleHRDb250ZW50IiwgInYgKEVuZ2xpc2gpIik7CisgICAg
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRlbXNbM10udGV4dENvbnRl
bnQiLCAieCAoRW5nbGlzaC1BdXN0cmFsaWEpIik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8udGV4dFRyYWNrcy5sZW5ndGgiLCA2KTsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtcy5sZW5ndGgiLCA0KTsKKworICAgICAgICAg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgICAgICBlbmRUZXN0
KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGVuZFRlc3QoKTsKKworICAgICAgICAgICAgICAgICsrdGVzdDsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKQpAQCAtNTEsMTQgKzg1LDE0IEBACiAg
ICAgPC9oZWFkPgogCiAgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KLSAgICAgICAgPHA+VGVz
dCB0aGF0IGNhcHRpb25zIGFuZCBzdWJ0aXRsZXMgYXJlIHNvcnRlZCBpbiB0aGUgbWVudS48L3A+
CisgICAgICAgIDxwPlRlc3QgdGhhdCBjYXB0aW9ucyBhbmQgc3VidGl0bGVzIGFyZSBzb3J0ZWQg
aW4gdGhlIG1lbnUgYWNjb3JkaW5nIHRvIHVzZXIgcHJlZmVyZW5jZXMuPC9wPgogICAgICAgICA8
dmlkZW8gd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMDAiIGNvbnRyb2xzPgotICAgICAgICAgICAgPHRy
YWNrIGxhYmVsPSJjIiBraW5kPSJjYXB0aW9ucyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQv
Y2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9ImphIj4KLSAgICAgICAgICAgIDx0cmFjayBsYWJl
bD0iYiIga2luZD0iY2FwdGlvbnMiIHNyYz0idHJhY2svY2FwdGlvbnMtd2VidnR0L2NhcHRpb25z
LWZhc3QudnR0IiBzcmNsYW5nPSJlbi1hdSI+Ci0gICAgICAgICAgICA8dHJhY2sgbGFiZWw9ImEi
IGtpbmQ9ImNhcHRpb25zIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0
LnZ0dCIgc3JjbGFuZz0iZW4iPgotICAgICAgICAgICAgPHRyYWNrIGxhYmVsPSJiIiBraW5kPSJz
dWJ0aXRsZXMiIHNyYz0idHJhY2svY2FwdGlvbnMtd2VidnR0L2NhcHRpb25zLWZhc3QudnR0IiBz
cmNsYW5nPSJqYSI+Ci0gICAgICAgICAgICA8dHJhY2sgbGFiZWw9ImEiIGtpbmQ9InN1YnRpdGxl
cyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9
ImVuLWF1Ij4KLSAgICAgICAgICAgIDx0cmFjayBsYWJlbD0iYyIga2luZD0ic3VidGl0bGVzIiBz
cmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZW4i
PgorICAgICAgICAgICAgPHRyYWNrIGxhYmVsPSJ6IiBraW5kPSJzdWJ0aXRsZXMiIHNyYz0idHJh
Y2svY2FwdGlvbnMtd2VidnR0L2NhcHRpb25zLWZhc3QudnR0IiBzcmNsYW5nPSJqYSI+CisgICAg
ICAgICAgICA8dHJhY2sgbGFiZWw9InkiIGtpbmQ9ImNhcHRpb25zIiBzcmM9InRyYWNrL2NhcHRp
b25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZW4tYXUiPgorICAgICAgICAg
ICAgPHRyYWNrIGxhYmVsPSJ4IiBraW5kPSJzdWJ0aXRsZXMiIHNyYz0idHJhY2svY2FwdGlvbnMt
d2VidnR0L2NhcHRpb25zLWZhc3QudnR0IiBzcmNsYW5nPSJlbi1hdSI+CisgICAgICAgICAgICA8
dHJhY2sgbGFiZWw9InciIGtpbmQ9ImNhcHRpb25zIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0
dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iamEiPgorICAgICAgICAgICAgPHRyYWNrIGxh
YmVsPSJ2IiBraW5kPSJzdWJ0aXRsZXMiIHNyYz0idHJhY2svY2FwdGlvbnMtd2VidnR0L2NhcHRp
b25zLWZhc3QudnR0IiBzcmNsYW5nPSJlbiI+CisgICAgICAgICAgICA8dHJhY2sgbGFiZWw9InUi
IGtpbmQ9ImNhcHRpb25zIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0
LnZ0dCIgc3JjbGFuZz0iZW4iPgogICAgICAgICA8L3ZpZGVvPgogICAgIDwvYm9keT4KIDwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNr
bWVudS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xz
LWNhcHRpb25zLXRyYWNrbWVudS5odG1sCShyZXZpc2lvbiAxNDYyMDUpCisrKyBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTUsNiArMTUsNyBAQAogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJy
PioqKiBBZGQgYW5vdGhlciB0ZXh0IHRyYWNrLiIpOwogICAgICAgICAgICAgICAgIHJ1bigndmlk
ZW8uYWRkVGV4dFRyYWNrKCJjYXB0aW9ucyIsICJDb21tZW50YXJ5IiwgInJ1IiknKTsKICAgICAg
ICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCh0dXJuQ2FwdGlvbnNPbiwgMTAwKTsKKyAgICAg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBmdW5jdGlvbiB0cmFja01lbnVMaXN0KCkKQEAgLTM5LDEwICs0MCwxMCBAQAogCiAgICAgICAg
ICAgICBmdW5jdGlvbiB0ZXN0TWVudSgpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
dmFyIHRyYWNrTGlzdEl0ZW1zID0gdHJhY2tNZW51TGlzdCgpOworICAgICAgICAgICAgICAgIHRy
YWNrTGlzdEl0ZW1zID0gdHJhY2tNZW51TGlzdCgpOwogICAgICAgICAgICAgICAgIHZhciBleHBl
Y3RlZEl0ZW1Db3VudCA9IHZpZGVvLnRleHRUcmFja3MubGVuZ3RoICsgMTsKICAgICAgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIlRoZXJlIHNob3VsZCBiZSAiICsgZXhwZWN0ZWRJdGVtQ291bnQg
KyAiIGl0ZW1zIGluIHRoZSBtZW51LiIpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCh0
cmFja0xpc3RJdGVtcy5sZW5ndGgsIGV4cGVjdGVkSXRlbUNvdW50KTsKKyAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInRyYWNrTGlzdEl0ZW1zLmxlbmd0aCIsIGV4cGVjdGVkSXRlbUNvdW50
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gc2VsZWN0Q2FwdGlvbk1l
bnVJdGVtKGluZGV4LCBuZXh0U3RlcCkKQEAgLTYyLDcgKzYzLDcgQEAKICAgICAgICAgICAgIGZ1
bmN0aW9uIHR1cm5DYXB0aW9uc09uKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIioqKiBUdXJuaW5nIGNhcHRpb25zIG9uIik7Ci0gICAgICAgICAgICAgICAg
Ly8gQ2xpY2sgb24gdGhlIHRoaXJkIGl0ZW0sIHdoaWNoIGlzIHRoZSBzZWNvbmQgdHJhY2sgKE9m
ZiBpcyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbWVudSkKKyAgICAgICAgICAgICAgICAvLyBDbGlj
ayBvbiB0aGUgc2Vjb25kIGl0ZW0sIHdoaWNoIGlzIHRoZSBzZWNvbmQgdHJhY2sgKE9mZiBpcyB0
aGUgZmlyc3QgaXRlbSBpbiB0aGUgbWVudSkKICAgICAgICAgICAgICAgICBzZWxlY3RDYXB0aW9u
TWVudUl0ZW0oMiwgdGVzdENhcHRpb25zVmlzaWJsZSk7CiAgICAgICAgICAgICB9CiAKQEAgLTEx
Nyw4ICsxMTgsOCBAQAogICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CiAgICAgICAgIDxwPlRl
c3QgdGhhdCB3ZSBhcmUgYWJsZSB0byB0cmlnZ2VyIHRoZSBsaXN0IG9mIGNhcHRpb25zLCBhbmQg
c2VsZWN0IGZyb20gdGhlIGxpc3QuPC9wPgogICAgICAgICA8dmlkZW8gd2lkdGg9IjUwMCIgaGVp
Z2h0PSIzMDAiIGNvbnRyb2xzPgorICAgICAgICAgICAgPHRyYWNrIGtpbmQ9ImNhcHRpb25zIiBz
cmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZnIi
PgogICAgICAgICAgICAgPHRyYWNrIGtpbmQ9ImNhcHRpb25zIiBzcmM9InRyYWNrL2NhcHRpb25z
LXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZW4iPgotICAgICAgICAgICAgPHRy
YWNrIGtpbmQ9ImNhcHRpb25zIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1m
YXN0LnZ0dCIgc3JjbGFuZz0iZW4tYXUiPgogICAgICAgICAgICAgPHRyYWNrIGtpbmQ9ImNhcHRp
b25zIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFu
Zz0iamEiPgogICAgICAgICA8L3ZpZGVvPgogICAgIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxNDYyMDUpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
cmFjay11c2VyLXByZWZlcmVuY2VzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgs
MTAgKzE4LDEwIEBAIEVYUEVDVEVEIChldmVudC50YXJnZXQucmVhZHlTdGF0ZSA9PSAnMicKIAog
VGVzdCAzOiBzZWxlY3QgJ2ZyJyB0cmFjayBmcm9tIG1lbnUKIC0gc2hvdyBjYXB0aW9ucyBtZW51
LgotRVhQRUNURUQgKHRyYWNrTWVudUl0ZW1zWzFdLmNsYXNzTmFtZSA9PSAnJykgT0sKLUVYUEVD
VEVEICh0cmFja01lbnVJdGVtc1syXS5jbGFzc05hbWUgPT0gJycpIE9LCi1FWFBFQ1RFRCAodHJh
Y2tNZW51SXRlbXNbM10uY2xhc3NOYW1lID09ICdzZWxlY3RlZCcpIE9LCi0tIGNsaWNrIG9uIG1l
bnUgaXRlbSAyLgorRVhQRUNURUQgKHRyYWNrTWVudUl0ZW1zW21lbnVJbmRleEZvckxhbmd1YWdl
KCdGcmVuY2gnKV0uY2xhc3NOYW1lID09ICcnKSBPSworRVhQRUNURUQgKHRyYWNrTWVudUl0ZW1z
W21lbnVJbmRleEZvckxhbmd1YWdlKCdFbmdsaXNoJyldLmNsYXNzTmFtZSA9PSAnJykgT0sKK0VY
UEVDVEVEICh0cmFja01lbnVJdGVtc1ttZW51SW5kZXhGb3JMYW5ndWFnZSgnTm9yd2VnaWFuJyld
LmNsYXNzTmFtZSA9PSAnc2VsZWN0ZWQnKSBPSworLSBjbGljayBvbiAnRnJlbmNoJyBtZW51IGl0
ZW0uCiBFVkVOVChsb2FkKQogRVhQRUNURUQgKGV2ZW50LnRhcmdldC5zcmNsYW5nID09ICdmcicp
IE9LCiBFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgPT0gJzInKSBPSwpAQCAtMzgs
NyArMzgsNyBAQCBFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1syXS5sYW5ndWFnZSA9CiAKIFRl
c3QgNTogdHVybmluZyBjYXB0aW9ucyBvZmYgZnJvbSBtZW51IGRpc2FibGVzIGNhcHRpb24gc2Vs
ZWN0aW9uCiAtIHNob3cgY2FwdGlvbnMgbWVudS4KLS0gY2xpY2sgb24gbWVudSBpdGVtIDAuCist
IGNsaWNrIG9uICdPZmYnIG1lbnUgaXRlbS4KIC0gY3JlYXRpbmcgdHJhY2tzIGZvcjogW3J1LGpw
LGVuXS4KIEVYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPT0gJ2Rpc2FibGVkJykg
T0sKIEVYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzFdLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sK
SW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay11c2VyLXByZWZl
cmVuY2VzLmh0bWwJKHJldmlzaW9uIDE0NjIwNSkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNr
L3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0
LDI2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYWNrTGlzdEl0ZW1zOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBzZWxlY3RDYXB0aW9uTWVudUl0ZW0oaW5kZXgp
CisgICAgICAgICAgICBmdW5jdGlvbiBtZW51SW5kZXhGb3JMYW5ndWFnZShsYW5ndWFnZSkKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIi0gY2xpY2sgb24gbWVu
dSBpdGVtICIgKyBpbmRleCArICIuIik7CiAgICAgICAgICAgICAgICAgdmFyIHRyYWNrTWVudUl0
ZW1zID0gdHJhY2tNZW51TGlzdCgpOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0
cmFja01lbnVJdGVtcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodHJh
Y2tNZW51SXRlbXNbaV0udGV4dENvbnRlbnQuaW5kZXhPZihsYW5ndWFnZSkgPj0gMCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICByZXR1cm4gKGkgPCB0cmFja01lbnVJdGVtcy5sZW5ndGgpID8gaSA6IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzZWxlY3RDYXB0aW9uTWVudUl0ZW0obGFu
Z3VhZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHRyYWNrTWVudUl0ZW1z
ID0gdHJhY2tNZW51TGlzdCgpOworICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IG1lbnVJbmRl
eEZvckxhbmd1YWdlKGxhbmd1YWdlKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7
CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJNZW51IGl0ZW0gIiArIGxhbmd1YWdlICsg
IiBub3QgZm91bmQgaW4gdHJhY2sgbGlzdCBtZW51LiIpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCItIGNsaWNrIG9uICciICsgbGFuZ3VhZ2UgKyAiJyBtZW51IGl0ZW0uIik7CiAgICAgICAgICAg
ICAgICAgdmFyIHNlbGVjdGVkVHJhY2tJdGVtID0gdHJhY2tNZW51SXRlbXNbaW5kZXhdOwogICAg
ICAgICAgICAgICAgIHZhciBib3VuZGluZ1JlY3QgPSBzZWxlY3RlZFRyYWNrSXRlbS5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICB2YXIgeCA9IGJvdW5kaW5nUmVjdC5s
ZWZ0ICsgYm91bmRpbmdSZWN0LndpZHRoIC8gMjsKQEAgLTcwLDcgKzg2LDcgQEAKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICB2YXIgdHJhY2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCd0cmFjaycpOwogICAgICAgICAgICAgICAgIHRyYWNrLnNldEF0dHJpYnV0ZSgna2luZCcsICJj
YXB0aW9ucyIpOwotICAgICAgICAgICAgICAgIHRyYWNrLnNyYyA9ICdkYXRhOnRleHQvdnR0LCcr
ZW5jb2RlVVJJQ29tcG9uZW50KCJXRUJWVFRcblxuMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMS4w
MDBcbkNhcHRpb24gMVxuIik7CisgICAgICAgICAgICAgICAgdHJhY2suc3JjID0gJ2RhdGE6dGV4
dC92dHQsJyArIGVuY29kZVVSSUNvbXBvbmVudCgiV0VCVlRUXG5cbjAwOjAwOjAwLjAwMCAtLT4g
MDA6MDA6MDEuMDAwXG5DYXB0aW9uIDFcbiIpOwogICAgICAgICAgICAgICAgIHRyYWNrLnNldEF0
dHJpYnV0ZSgnc3JjbGFuZycsIGxhbmd1YWdlKTsKICAgICAgICAgICAgICAgICB0cmFjay5zZXRB
dHRyaWJ1dGUoJ29ubG9hZCcsICd0cmFja0xvYWRlZCgpJyk7CiAgICAgICAgICAgICAgICAgaWYg
KGlzRGVmYXVsdCkgewpAQCAtMTA4LDIwICsxMjQsMTcgQEAKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAgICAgICAgIC8v
IENsZWFyIHRoZSBkZWJ1ZyBzZXR0aW5nIHNvIGl0IGlzbid0IGNvbnNpZGVyZWQgaW4gdGhlIHRy
YWNrIHNlbGVjdGlvbiBsb2dpYwotICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0U2hvdWxkRGlzcGxheVRyYWNrS2luZCgnQ2FwdGlvbnMnLCBmYWxzZSk7Ci0KICAgICAg
ICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+VGVzdCAzOiBzZWxlY3QgJ2ZyJyB0cmFj
ayBmcm9tIG1lbnUiKTsKICAgICAgICAgICAgICAgICAgICAgc2hvd0NhcHRpb25NZW51KCk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAg
ICAgICAgICAgICAgICAgICB0cmFja01lbnVJdGVtcyA9IHRyYWNrTWVudUxpc3QoKTsKLSAgICAg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1sxXS5jbGFzc05hbWUi
LCAiIik7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRlbXNb
Ml0uY2xhc3NOYW1lIiwgIiIpOwotICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRy
YWNrTWVudUl0ZW1zWzNdLmNsYXNzTmFtZSIsICJzZWxlY3RlZCIpOworICAgICAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zW21lbnVJbmRleEZvckxhbmd1YWdlKCdG
cmVuY2gnKV0uY2xhc3NOYW1lIiwgIiIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInRyYWNrTWVudUl0ZW1zW21lbnVJbmRleEZvckxhbmd1YWdlKCdFbmdsaXNoJyldLmNsYXNz
TmFtZSIsICIiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJ
dGVtc1ttZW51SW5kZXhGb3JMYW5ndWFnZSgnTm9yd2VnaWFuJyldLmNsYXNzTmFtZSIsICJzZWxl
Y3RlZCIpOwogCi0gICAgICAgICAgICAgICAgICAgIHNlbGVjdENhcHRpb25NZW51SXRlbSgyKTsK
KyAgICAgICAgICAgICAgICAgICAgc2VsZWN0Q2FwdGlvbk1lbnVJdGVtKCJGcmVuY2giKTsKICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRMYW5ndWFnZSA9ICdmcic7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogCkBAIC0xNDMsNyArMTU2LDcgQEAKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNlIDc6Ci0gICAgICAgICAgICAgICAgICAgIHNl
bGVjdENhcHRpb25NZW51SXRlbSgwKTsKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0Q2FwdGlv
bk1lbnVJdGVtKCJPZmYiKTsKICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVHJhY2tFbGVtZW50
cyhbICdydScsICdqcCcsICdlbiddKTsKICAgICAgICAgICAgICAgICAgICAgdGltZXIgPSBzZXRU
aW1lb3V0KG5leHRTdGVwLCAxMDApOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10
cmFja21lbnUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxNDYyMDUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvdmlk
ZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNyw5ICs3LDEwIEBAIFJVTihpbnRlcm5hbHMuc2V0VXNlclByZWZlcnJlZExhbmd1YWdl
cygKIAogKioqIEFkZCBhbm90aGVyIHRleHQgdHJhY2suCiBSVU4odmlkZW8uYWRkVGV4dFRyYWNr
KCJjYXB0aW9ucyIsICJDb21tZW50YXJ5IiwgInJ1IikpCisKICoqKiBUdXJuaW5nIGNhcHRpb25z
IG9uCiBUaGVyZSBzaG91bGQgYmUgNSBpdGVtcyBpbiB0aGUgbWVudS4KLUVYUEVDVEVEICg1ID09
ICc1JykgT0sKK0VYUEVDVEVEICh0cmFja0xpc3RJdGVtcy5sZW5ndGggPT0gJzUnKSBPSwogRVhQ
RUNURUQgKHZpZGVvLnRleHRUcmFja3MubGVuZ3RoID09ICc0JykgT0sKIFRyYWNrIDAgc2hvdWxk
IGJlIHNob3dpbmcKIEVYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPT0gJ3Nob3dp
bmcnKSBPSwpAQCAtMjUsNyArMjYsNyBAQCBFWFBFQ1RFRCAodGV4dFRyYWNrRGlzcGxheUVsZW1l
bnQodmlkZW8sCiBSVU4odmlkZW8ucmVtb3ZlQ2hpbGQoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgidHJhY2siKVswXSkpCiAqKiogVHVybmluZyBjYXB0aW9ucyBvZmYKIFRoZXJlIHNob3VsZCBi
ZSA0IGl0ZW1zIGluIHRoZSBtZW51LgotRVhQRUNURUQgKDQgPT0gJzQnKSBPSworRVhQRUNURUQg
KHRyYWNrTGlzdEl0ZW1zLmxlbmd0aCA9PSAnNCcpIE9LCiBFWFBFQ1RFRCAodmlkZW8udGV4dFRy
YWNrcy5sZW5ndGggPT0gJzMnKSBPSwogVHJhY2sgMCBzaG91bGQgYmUgZGlzYWJsZWQKIEVYUEVD
VEVEICh2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFj
a21lbnUtbG9jYWxpemVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWxvY2Fs
aXplZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0NjIwNSkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtbG9jYWxpemVk
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBAQCBFWFBFQ1RFRCAo
aXRlbS50ZXh0Q29udGVudCA9PSAnT2ZmJykgT0sKIFNlY29uZCBpdGVtIGluIGNhcHRpb25zIG1l
bnUgc2hvdWxkIGJlIGxhYmVsbGVkICdFbmdsaXNoIENDJwogRVhQRUNURUQgKGl0ZW0udGV4dENv
bnRlbnQgPT0gJ0VuZ2xpc2ggQ0MnKSwgT0JTRVJWRUQgJ1Vua25vd24nIEZBSUwKIAotVGhpcmQg
aXRlbSBpbiBjYXB0aW9ucyBtZW51IHNob3VsZCBiZSBsYWJlbGxlZCAnVW5rbm93bicKLUVYUEVD
VEVEIChpdGVtLnRleHRDb250ZW50ID09ICdVbmtub3duJykgT0sKK1RoaXJkIGl0ZW0gaW4gY2Fw
dGlvbnMgbWVudSBzaG91bGQgYmUgbGFiZWxsZWQgJ1Vua25vd24gU0RIJworRVhQRUNURUQgKGl0
ZW0udGV4dENvbnRlbnQgPT0gJ1Vua25vd24gU0RIJykgT0sKIAogRm91cnRoIGl0ZW0gaW4gY2Fw
dGlvbnMgbWVudSBzaG91bGQgYmUgbGFiZWxsZWQgJ1Vua25vd24nCiBUeXBlRXJyb3I6ICd1bmRl
ZmluZWQnIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2l0ZW0udGV4dENvbnRlbnQnKQpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRp
b25zLXRyYWNrbWVudS1zb3J0ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUt
c29ydGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ2MjA1KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1zb3J0ZWQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDMyIEBACi1UZXN0IHRoYXQg
Y2FwdGlvbnMgYW5kIHN1YnRpdGxlcyBhcmUgc29ydGVkIGluIHRoZSBtZW51LgorVGVzdCB0aGF0
IGNhcHRpb25zIGFuZCBzdWJ0aXRsZXMgYXJlIHNvcnRlZCBpbiB0aGUgbWVudSBhY2NvcmRpbmcg
dG8gdXNlciBwcmVmZXJlbmNlcy4KIAogRVZFTlQoY2FucGxheXRocm91Z2gpCiAKICoqKiBTZXQg
dGhlIHVzZXIgbGFuZ3VhZ2UgcHJlZmVyZW5jZS4KIFJVTihpbnRlcm5hbHMuc2V0VXNlclByZWZl
cnJlZExhbmd1YWdlcyhbJ2VuJ10pKQotRmlyc3QgaXRlbSBzaG91bGQgYmUgbGFiZWxsZWQgb2Zm
IE9LCi1hIEVuZ2xpc2ggKEF1c3RyYWxpYSkgaXMgdGhlIGZpcnN0IHJlYWwgaXRlbSBpbiB0aGUg
bGlzdCBPSwotYSBFbmdsaXNoIChBdXN0cmFsaWEpIGNvbWVzIGJlZm9yZSBhIEVuZ2xpc2ggU0RI
IE9LCi1hIEVuZ2xpc2ggU0RIIGNvbWVzIGJlZm9yZSBiIEVuZ2xpc2ggKEF1c3RyYWxpYSkgU0RI
IE9LCi1iIEVuZ2xpc2ggKEF1c3RyYWxpYSkgU0RIIGNvbWVzIGJlZm9yZSBiIEphcGFuZXNlIE9L
Ci1iIEphcGFuZXNlIGNvbWVzIGJlZm9yZSBjIEVuZ2xpc2ggT0sKLWMgRW5nbGlzaCBjb21lcyBi
ZWZvcmUgYyBKYXBhbmVzZSBTREggT0sKKworKiogVGVzdCB3aXRoIHByZWZlcnJlZCBsYW5ndWFn
ZSBzZXQgdG8gRW5nbGlzaCwgdHJhY2sgdHlwZSBzZXQgdG8gY2FwdGlvbnMKK1JVTihpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0U2hvdWxkRGlzcGxheVRyYWNrS2luZCgnQ2FwdGlvbnMnLCB0cnVlKSkK
K0VYUEVDVEVEICh0cmFja01lbnVJdGVtc1swXS50ZXh0Q29udGVudCA9PSAnT2ZmJykgT0sKK0VY
UEVDVEVEICh0cmFja01lbnVJdGVtc1sxXS50ZXh0Q29udGVudCA9PSAndSAoRW5nbGlzaCkgU0RI
JykgT0sKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtc1syXS50ZXh0Q29udGVudCA9PSAneSAoRW5n
bGlzaC1BdXN0cmFsaWEpIFNESCcpIE9LCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbM10udGV4
dENvbnRlbnQgPT0gJ3YgKEVuZ2xpc2gpJykgT0sKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtc1s0
XS50ZXh0Q29udGVudCA9PSAneCAoRW5nbGlzaC1BdXN0cmFsaWEpJykgT0sKK0VYUEVDVEVEICh0
cmFja01lbnVJdGVtc1s1XS50ZXh0Q29udGVudCA9PSAndyAoSmFwYW5lc2UpIFNESCcpIE9LCitF
WFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbNl0udGV4dENvbnRlbnQgPT0gJ3ogKEphcGFuZXNlKScp
IE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrcy5sZW5ndGggPT0gJzYnKSBPSworRVhQRUNU
RUQgKHRyYWNrTWVudUl0ZW1zLmxlbmd0aCA9PSAnNycpIE9LCisKKyoqIENoYW5nZSBwcmVmZXJy
ZWQgbGFuZ3VhZ2UgdG8gSmFwYW5lc2UsIGNoYW5nZSBwcmVmZXJlbmNlIHRvIHN1YnRpdGxlcwor
UlVOKGludGVybmFscy5zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKFsnamEnXSkpCitSVU4oaW50
ZXJuYWxzLnNldHRpbmdzLnNldFNob3VsZERpc3BsYXlUcmFja0tpbmQoJ0NhcHRpb25zJywgZmFs
c2UpKQorUlVOKGludGVybmFscy5zZXR0aW5ncy5zZXRTaG91bGREaXNwbGF5VHJhY2tLaW5kKCdT
dWJ0aXRsZXMnLCB0cnVlKSkKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtc1swXS50ZXh0Q29udGVu
dCA9PSAnT2ZmJykgT0sKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtc1sxXS50ZXh0Q29udGVudCA9
PSAneiAoSmFwYW5lc2UpJykgT0sKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtc1syXS50ZXh0Q29u
dGVudCA9PSAndiAoRW5nbGlzaCknKSBPSworRVhQRUNURUQgKHRyYWNrTWVudUl0ZW1zWzNdLnRl
eHRDb250ZW50ID09ICd4IChFbmdsaXNoLUF1c3RyYWxpYSknKSBPSworRVhQRUNURUQgKHZpZGVv
LnRleHRUcmFja3MubGVuZ3RoID09ICc2JykgT0sKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtcy5s
ZW5ndGggPT0gJzQnKSBPSworCiBFTkQgT0YgVEVTVAogCg==
</data>
<flag name="commit-queue"
          id="215732"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194041</attachid>
            <date>2013-03-20 06:46:56 -0700</date>
            <delta_ts>2013-03-20 07:49:03 -0700</delta_ts>
            <desc>Update patch.</desc>
            <filename>patch_14.txt</filename>
            <type>text/plain</type>
            <size>80888</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjIxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxMy0wMy0xOSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyBz
cGVjaWZpYyB0ZXh0IHRyYWNrIG1lbnUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZXhpc3RpbmcgdGVzdHMgdXBkYXRlZCBmb3Ig
Y2hhbmdlcy4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczog
QWRkIGxvY2FsaXphYmxlIHN0cmluZ3MgZm9yIHRleHQgdHJhY2sgbmFtZXMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IHVzZXJQcmVmZXJzQ2FwdGlvbnMgLT4gc2hvdWxk
U2hvd0NhcHRpb25zLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0U2Vs
ZWN0ZWRUZXh0VHJhY2spOiB0b2dnbGVUcmFja0F0SW5kZXggLT4gc2V0U2VsZWN0ZWRUZXh0VHJh
Y2suCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyUHJlZmVyc0NhcHRp
b25zKTogdXNlclByZWZlcnNDYXB0aW9ucyAtPiBzaG91bGRTaG93Q2FwdGlvbnMuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tL
aW5kKTogR2V0IHByZWZlcmVuY2VzIGZyb20gQ2FwdGlvblVzZXJQcmVmZXJlbmNlcworICAgICAg
ICAgICAgaW5zdGVhZCBvZiBmcm9tIFNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2spOiBSZW5hbWVkIGZyb20gdG9nZ2xlVHJh
Y2tBdEluZGV4LiBOb3cgdGFrZXMKKyAgICAgICAgICAgIGEgVGV4dFRyYWNrKiBpbnN0ZWFkIG9m
IGFuIGludC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWQpOiBEb24ndCBmb3JjZSBhIHJlY2FsY3VsYXRpb24gdW5sZXNzIAorICAg
ICAgICAgICAgY2FwdGlvbnMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgdG8gYXZvaWQgdW5uZWNlc3Nh
cnkgdGhyYXNoLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKTogVXNlIHRoZSBtZW51IHRvIHRyYWNrCisgICAgICAgICAgICBtYXAgaW5zdGVh
ZCBvZiBqdXN0IHRoZSB0cmFjayBpbmRleC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRlRGlzcGxheSk6IEJ1aWxkIGFu
ZCBjb25maWd1cmUgdGhlCisgICAgICAgICAgICBtZW51IGZyb20gdGhlIG1lbnUgdG8gdHJhY2sg
bWFwLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xp
c3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSk6IFN0YXJ0IHdpdGggYSBsaXN0CisgICAg
ICAgICAgICBvZiB0cmFja3MgYWxyZWFkeSBzb3J0ZWQgYWNjb3JkaW5nIHRvIHBsYXRmb3JtIHNw
ZWNpZmljIHJ1bGVzLiBCdWlsZCBhIG1lbnUgdG8gdHJhY2sgbWFwCisgICAgICAgICAgICBzbyB0
cmFja3MgYXJlIHJldGFpbmVkIHdoaWxlIHRoZSBtZW51IGlzIHZpc2libGUuCisgICAgICAgICog
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDoKKworICAgICAgICAqIGh0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6
dGV4dFRyYWNrUHJlZmVyZW5jZXNDaGFuZ2VkKTogQ2FsbCBjbG9zZWRDYXB0aW9uVHJhY2tzQ2hh
bmdlZCBzbyB0aGUKKyAgICAgICAgICAgIHRyYWNrIG1lbnUgd2lsbCBiZSByZWJ1aWx0IGJlZm9y
ZSBpdCBpcyBzaG93biBhZ2Fpbi4KKworICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRy
YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6Y29udGFpbnNPbmx5
Rm9yY2VkU3VidGl0bGVzKTogTmV3LCBwYXNzdGhyb3VnaCB0byB0aGUgcHJpdmF0ZSB0cmFjay4K
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6aXNNYWluUHJvZ3JhbUNvbnRlbnQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6aXNFYXN5VG9SZWFk
KTogRGl0dG8uCisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaDoKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0
VHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmNvbnRhaW5z
KTogTmV3LgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oOgorCisgICAgICAg
ICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMpOiBQdWxsIGluIGZy
b20gLmggZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp+
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6c2hvdWxkU2hvd0NhcHRpb25zKTogUmVuYW1lZCBmcm9tIHVzZXJQ
cmVmZXJzQ2FwdGlvbnMuIAorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6c2V0U2hvdWxkU2hvd0NhcHRpb25zKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclBy
ZWZlcnNTdWJ0aXRsZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzU3VidGl0bGVzKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVz
ZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2Fw
dGlvblVzZXJQcmVmZXJlbmNlczo6ZGlzcGxheU5hbWVGb3JUcmFjayk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c29ydGVkVHJhY2tMaXN0Rm9yTWVu
dSk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oOgorCisg
ICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmg6CisgICAgICAgICogcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6c2hvdWxkU2hvd0NhcHRpb25zKTogUmVuYW1lZCBmcm9tIHVz
ZXJQcmVmZXJzQ2FwdGlvbnMuIAorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYzo6dXNlclByZWZlcnNDYXB0aW9ucyk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzU3VidGl0bGVzKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjp0cmFja0Rpc3BsYXlOYW1lKTogVXBkYXRlIGxvZ2ljIHVzZWQgdG8gYnVp
bGQgdHJhY2sgdGl0bGUuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjOjpkaXNwbGF5TmFtZUZvclRyYWNrKTogQ2FsbCB0cmFja0Rpc3BsYXlOYW1lLgorICAgICAg
ICAoV2ViQ29yZTo6dGV4dFRyYWNrQ29tcGFyZSk6IFRleHQgdHJhY2sgdGl0bGUgc29ydCBjb21w
YXJpc29uIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYzo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSk6IE5ldy4gU29ydCB0aGUgbGlzdCBvZiB0cmFj
a3MKKyAgICAgICAgICAgIGFjY29yZGluZyB0byB0aXRsZSwgbGFuZ3VhZ2UsIGFuZCB1c2VyIHBy
ZWZlcmVuY2VzLgorCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZGlzcGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZSk6IERvbid0IGxlYWsgdGhlIENG
TG9jYWxlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRUcmFja0NvdW50cnlBbmRMYW5ndWFnZU1lbnVJdGVt
VGV4dCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRUcmFja0xhbmd1YWdlTWVudUl0ZW1U
ZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjbG9zZWRDYXB0aW9uVHJhY2tNZW51SXRl
bVRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNkaFRyYWNrTWVudUl0ZW1UZXh0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjplYXN5UmVhZGVyVHJhY2tNZW51SXRlbVRleHQpOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMp
OiBOZXcsIHJldHVybiBBVkZvdW5kYXRpb24gcHJvcGVydHkuCisgICAgICAgIChXZWJDb3JlOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQzo6aXNNYWluUHJvZ3JhbUNvbnRlbnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjppc0Vh
c3lUb1JlYWQpOiBEaXR0by4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRTaG91bGREaXNwbGF5
VHJhY2tLaW5kKTogU2V0IHNldHRpbmcgdmlhIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMKKyAgICAg
ICAgICAgIGluc3RlYWQgb2YgZnJvbSBTZXR0aW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsU2V0dGluZ3M6OnNob3VsZERpc3BsYXlUcmFja0tpbmQpOiBHZXQgc2V0dGluZyBmcm9tIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXMKKyAgICAgICAgICAgIGluc3RlYWQgb2YgZnJvbSBTZXR0aW5n
cy4KKwogMjAxMy0wMy0xOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KIAogICAgICAgICBbUXRdIFN1cHBvcnQga2VybmluZyBpbiBmYXN0IHBhdGggZm9u
dCByZW5kZXJpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFi
bGUuc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xv
Y2FsaXphYmxlLnN0cmluZ3MJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0Vu
Z2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQpAQCAtMTksMTIg
KzE5LDI3IEBACiAALwAqACAAdgBpAHMAaQBiAGwAZQAgAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAg
AHAAbAB1AGcALQBpAG4AIABoAG8AcwB0ACAAcAByAG8AYwBlAHMAcwAuACAAVABoAGUAIABmAGkA
cgBzAHQAIABhAHIAZwB1AG0AZQBuAHQAIABpAHMAIAB0AGgAZQAgAHAAbAB1AGcALQBpAG4AIABu
AGEAbQBlACAAYQBuAGQAIAB0AGgAZQAgAHMAZQBjAG8AbgBkACAAYQByAGcAdQBtAGUAbgB0ACAA
aQBzACAAdABoAGUAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4AIABuAGEAbQBlAC4AIAAqAC8ACiAA
IgAlAEAAIAAoACUAQAAgAEkAbgB0AGUAcgBuAGUAdAAgAHAAbAB1AGcALQBpAG4AKQAiACAAPQAg
ACIAJQBAACAAKAAlAEAAIABJAG4AdABlAHIAbgBlAHQAIABwAGwAdQBnAC0AaQBuACkAIgA7AAog
AAorAC8AKgAgAFQAZQB4AHQAIAB0AHIAYQBjAGsAIABkAGkAcwBwAGwAYQB5ACAAbgBhAG0AZQAg
AGYAbwByAG0AYQB0ACAAdABoAGEAdAAgAGkAbgBjAGwAdQBkAGUAcwAgAHQAaABlACAAbABhAG4A
ZwB1AGEAZwBlACAAbwBmACAAdABoAGUAIABzAHUAYgB0AGkAdABsAGUALAAgAGkAbgAgAHQAaABl
ACAAZgBvAHIAbQAgAG8AZgAgACcAVABpAHQAbABlACAAKABMAGEAbgBnAHUAYQBnAGUAKQAnACAA
KgAvAAorACIAJQBAACAAKAAlAEAAKQAiACAAPQAgACIAJQBAACAAKAAlAEAAKQAiADsACisACisA
LwAqACAAVABlAHgAdAAgAHQAcgBhAGMAawAgAGQAaQBzAHAAbABhAHkAIABuAGEAbQBlACAAZgBv
AHIAbQBhAHQAIAB0AGgAYQB0ACAAaQBuAGMAbAB1AGQAZQBzACAAdABoAGUAIABjAG8AdQBuAHQA
cgB5ACAAYQBuAGQAIABsAGEAbgBnAHUAYQBnAGUAIABvAGYAIAB0AGgAZQAgAHMAdQBiAHQAaQB0
AGwAZQAsACAAaQBuACAAdABoAGUAIABmAG8AcgBtACAAbwBmACAAJwBUAGkAdABsAGUAIAAoAEwA
YQBuAGcAdQBhAGcAZQAtAEMAbwB1AG4AdAByAHkAKQAnACAAKgAvAAorACIAJQBAACAAKAAlAEAA
LQAlAEAAKQAiACAAPQAgACIAJQBAACAAKAAlAEAALQAlAEAAKQAiADsACisACisALwAqACAAVABl
AHgAdAAgAHQAcgBhAGMAawAgAGMAbwBuAHQAYQBpAG4AcwAgAGMAbABvAHMAZQBkACAAYwBhAHAA
dABpAG8AbgBzACAAKgAvAAorACIAJQBAACAAQwBDACIAIAA9ACAAIgAlAEAAIABDAEMAIgA7AAor
AAorAC8AKgAgAFQAZQB4AHQAIAB0AHIAYQBjAGsAIABjAG8AbgB0AGEAaQBuAHMAIABzAGkAbQBw
AGwAaQBmAGkAZQBkACAAKAAzAHIAZAAgAGcAcgBhAGQAZQAgAGwAZQB2AGUAbAApACAAcwB1AGIA
dABpAHQAbABlAHMAIAAqAC8ACisAIgAlAEAAIABFAGEAcwB5ACAAUgBlAGEAZABlAHIAIgAgAD0A
IAAiACUAQAAgAEUAYQBzAHkAIABSAGUAYQBkAGUAcgAiADsACisACiAALwAqACAAdgBpAHMAaQBi
AGwAZQAgAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAgAG4AZQB0AHcAbwByAGsAIABwAHIAbwBjAGUA
cwBzAC4AIABUAGgAZQAgAGEAcgBnAHUAbQBlAG4AdAAgAGkAcwAgAHQAaABlACAAYQBwAHAAbABp
AGMAYQB0AGkAbwBuACAAbgBhAG0AZQAuACAAKgAvAAogACIAJQBAACAATgBlAHQAdwBvAHIAawBp
AG4AZwAiACAAPQAgACIAJQBAACAATgBlAHQAdwBvAHIAawBpAG4AZwAiADsACiAACiAALwAqACAA
dgBpAHMAaQBiAGwAZQAgAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAgAG8AZgBmAGwAaQBuAGUAIABz
AHQAbwByAGEAZwBlACAAcAByAG8AYwBlAHMAcwAuACAAVABoAGUAIABhAHIAZwB1AG0AZQBuAHQA
IABpAHMAIAB0AGgAZQAgAGEAcABwAGwAaQBjAGEAdABpAG8AbgAgAG4AYQBtAGUALgAgACoALwAK
IAAiACUAQAAgAE8AZgBmAGwAaQBuAGUAIABTAHQAbwByAGEAZwBlACIAIAA9ACAAIgAlAEAAIABP
AGYAZgBsAGkAbgBlACAAUwB0AG8AcgBhAGcAZQAiADsACiAACisALwAqACAAVABlAHgAdAAgAHQA
cgBhAGMAawAgAGMAbwBuAHQAYQBpAG4AcwAgAHMAdQBiAHQAaQB0AGwAZQBzACAAZgBvAHIAIAB0
AGgAZQAgAGQAZQBhAGYAIABhAG4AZAAgAGgAYQByAGQAIABvAGYAIABoAGUAYQByAGkAbgBnACAA
KgAvAAorACIAJQBAACAAUwBEAEgAIgAgAD0AIAAiACUAQAAgAFMARABIACIAOwAKKwAKIAAvACoA
IABWAGkAcwBpAGIAbABlACAAbgBhAG0AZQAgAG8AZgAgAHQAaABlACAAcwBoAGEAcgBlAGQAIAB3
AG8AcgBrAGUAcgAgAHAAcgBvAGMAZQBzAHMALgAgAFQAaABlACAAYQByAGcAdQBtAGUAbgB0ACAA
aQBzACAAdABoAGUAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4AIABuAGEAbQBlAC4AIAAqAC8ACiAA
IgAlAEAAIABTAGgAYQByAGUAZAAgAFcAbwByAGsAZQByACIAIAA9ACAAIgAlAEAAIABTAGgAYQBy
AGUAZAAgAFcAbwByAGsAZQByACIAOwAKIAAKQEAgLTUxNywxMiArNTMyLDEyIEBACiAALwAqACAA
VQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAgACoALwAKIAAiAFUAbgBkAGUAcgBsAGkA
bgBlACAAKABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACkAIgAgAD0AIAAiAFUAbgBk
AGUAcgBsAGkAbgBlACIAOwAKIAAKLQAvACoAIABNAGUAbgB1ACAAaQB0AGUAbQAgAGwAYQBiAGUA
bAAgAGYAbwByACAAYQAgAGMAbABvAHMAZQBkACAAYwBhAHAAdABpAG8AbgBzACAAdAByAGEAYwBr
ACAAdABoAGEAdAAgAGgAYQBzACAAbgBvACAAbwB0AGgAZQByACAAbgBhAG0AZQAgACoALwAKLQAi
AFUAbgBrAG4AbwB3AG4AIAAoAGMAbABvAHMAZQBkACAAYwBhAHAAdABpAG8AbgBzACAAdAByAGEA
YwBrACkAIgAgAD0AIAAiAFUAbgBrAG4AbwB3AG4AIgA7AAotAAogAC8AKgAgAFUAbgBrAG4AbwB3
AG4AIABmAGkAbABlAHMAaQB6AGUAIABGAFQAUAAgAGQAaQByAGUAYwB0AG8AcgB5ACAAbABpAHMA
dABpAG4AZwAgAGkAdABlAG0AIAAqAC8ACiAAIgBVAG4AawBuAG8AdwBuACAAKABmAGkAbABlAHMA
aQB6AGUAKQAiACAAPQAgACIAVQBuAGsAbgBvAHcAbgAiADsACiAACisALwAqACAATQBlAG4AdQAg
AGkAdABlAG0AIABsAGEAYgBlAGwAIABmAG8AcgAgAGEAIAB0AGUAeAB0ACAAdAByAGEAYwBrACAA
dABoAGEAdAAgAGgAYQBzACAAbgBvACAAbwB0AGgAZQByACAAbgBhAG0AZQAgACoALwAKKwAiAFUA
bgBrAG4AbwB3AG4AIAAoAHQAZQB4AHQAIAB0AHIAYQBjAGsAKQAiACAAPQAgACIAVQBuAGsAbgBv
AHcAbgAiADsACisACiAALwAqACAAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAgACoA
LwAKIAAiAFUAbgBsAGkAbgBrACAAKABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACkA
IgAgAD0AIAAiAFUAbgBsAGkAbgBrACIAOwAKIAAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIwLDcgKzMyMCw3
IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICAgICBpZiAoZG9j
dW1lbnQtPnBhZ2UoKSkgewogICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9u
UHJlZmVyZW5jZXMgPSBkb2N1bWVudC0+cGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNl
cygpOwogICAgICAgICBpZiAoY2FwdGlvblByZWZlcmVuY2VzLT51c2VySGFzQ2FwdGlvblByZWZl
cmVuY2VzKCkpCi0gICAgICAgICAgICBtX2Rpc2FibGVDYXB0aW9ucyA9ICFjYXB0aW9uUHJlZmVy
ZW5jZXMtPnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKKyAgICAgICAgICAgIG1fZGlzYWJsZUNhcHRp
b25zID0gIWNhcHRpb25QcmVmZXJlbmNlcy0+c2hvdWxkU2hvd0NhcHRpb25zKCk7CiAgICAgfQog
I2VuZGlmCiB9CkBAIC0yODYyLDcgKzI4NjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFNlbGVjdGVkVGV4dFRyCiAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7
CiAKICAgICBpZiAoIXBsYXRmb3JtVHJhY2spIHsKLSAgICAgICAgdG9nZ2xlVHJhY2tBdEluZGV4
KHRleHRUcmFja3NPZmZJbmRleCgpLCB0cnVlKTsKKyAgICAgICAgc2V0U2VsZWN0ZWRUZXh0VHJh
Y2soMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI4NzcsNyArMjg3Nyw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHIKIAogICAgIGlmIChpID09IG1f
dGV4dFRyYWNrcy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB0b2dnbGVUcmFja0F0
SW5kZXgoaSwgdHJ1ZSk7CisgICAgc2V0U2VsZWN0ZWRUZXh0VHJhY2sodGV4dFRyYWNrKTsKIH0K
IAogVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gPiBIVE1MTWVkaWFFbGVtZW50Ojpw
bGF0Zm9ybVRleHRUcmFja3MoKQpAQCAtMzA3Niw3ICszMDc2LDcgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50Ojp1c2VyUHJlZmVyc0NhcHRpbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBD
YXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBwYWdlLT5ncm91cCgp
LmNhcHRpb25QcmVmZXJlbmNlcygpOwotICAgIHJldHVybiBjYXB0aW9uUHJlZmVyZW5jZXMtPnVz
ZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSAmJiBjYXB0aW9uUHJlZmVyZW5jZXMtPnVzZXJQcmVm
ZXJzQ2FwdGlvbnMoKTsKKyAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzLT51c2VySGFzQ2Fw
dGlvblByZWZlcmVuY2VzKCkgJiYgY2FwdGlvblByZWZlcmVuY2VzLT5zaG91bGRTaG93Q2FwdGlv
bnMoKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlz
VHJhY2tLaW5kKFN0cmluZyBraW5kKSBjb25zdApAQCAtMzA4NCwxNSArMzA4NCwxOSBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJJc0ludGVyZXN0ZWRJCiAgICAgaWYgKG1fZGlzYWJsZUNh
cHRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5w
YWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDYXB0
aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBwYWdlLT5ncm91cCgpLmNh
cHRpb25QcmVmZXJlbmNlcygpOwogICAgIGJvb2wgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0
bGVzID0gbV9jbG9zZWRDYXB0aW9uc1Zpc2libGUgfHwgdXNlclByZWZlcnNDYXB0aW9ucygpOwog
CiAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpCi0gICAgICAg
IHJldHVybiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnNob3VsZERpc3BsYXlTdWJ0aXRsZXMoKSkg
fHwgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOworICAgICAgICByZXR1cm4gY2FwdGlv
blByZWZlcmVuY2VzLT51c2VyUHJlZmVyc1N1YnRpdGxlcygpIHx8IHVzZXJQcmVmZXJzQ2FwdGlv
bnNPclN1YnRpdGxlczsKICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29y
ZCgpKQotICAgICAgICByZXR1cm4gKHNldHRpbmdzICYmIHNldHRpbmdzLT5zaG91bGREaXNwbGF5
Q2FwdGlvbnMoKSkgfHwgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOworICAgICAgICBy
ZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzLT51c2VyUHJlZmVyc0NhcHRpb25zKCkgfHwgdXNlclBy
ZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOwogICAgIGlmIChraW5kID09IFRleHRUcmFjazo6ZGVz
Y3JpcHRpb25zS2V5d29yZCgpKQotICAgICAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3Mt
PnNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKCk7CisgICAgICAgIHJldHVybiBjYXB0aW9u
UHJlZmVyZW5jZXMtPnVzZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucygpIHx8IHVzZXJQcmVmZXJz
Q2FwdGlvbnNPclN1YnRpdGxlczsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTMxNzgsMjUg
KzMxODIsMjggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhYwogICAg
ICAgICB0cmFja1RvRW5hYmxlLT5zZXRNb2RlKFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSk7
CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlVHJhY2tBdEluZGV4KGludCBpbmRl
eCwgYm9vbCBleGNsdXNpdmUpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4
dFRyYWNrKFRleHRUcmFjayogdHJhY2tUb1NlbGVjdCkKIHsKICAgICBUZXh0VHJhY2tMaXN0KiB0
cmFja0xpc3QgPSB0ZXh0VHJhY2tzKCk7CiAgICAgaWYgKCF0cmFja0xpc3QgfHwgIXRyYWNrTGlz
dC0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCkt
PnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKSA6IDA7Ci0gICAgaWYgKGNhcHRp
b25QcmVmZXJlbmNlcykKLSAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzLT5zZXRVc2VyUHJlZmVy
c0NhcHRpb25zKGluZGV4ICE9IHRleHRUcmFja3NPZmZJbmRleCgpKTsKKyAgICBpZiAodHJhY2tU
b1NlbGVjdCAmJiAhdHJhY2tMaXN0LT5jb250YWlucyh0cmFja1RvU2VsZWN0KSkKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgZm9yIChpbnQgaSA9IDAsIGxlbmd0aCA9IHRyYWNrTGlzdC0+bGVuZ3Ro
KCk7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gdHJhY2tM
aXN0LT5pdGVtKGkpOwotICAgICAgICBpZiAoaSA9PSBpbmRleCkgeworICAgICAgICBpZiAoIXRy
YWNrVG9TZWxlY3QgfHwgdHJhY2sgIT0gdHJhY2tUb1NlbGVjdCkKKyAgICAgICAgICAgIHRyYWNr
LT5zZXRNb2RlKFRleHRUcmFjazo6ZGlzYWJsZWRLZXl3b3JkKCkpOworICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIHRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSk7
Ci0gICAgICAgICAgICBpZiAoY2FwdGlvblByZWZlcmVuY2VzICYmIHRyYWNrLT5sYW5ndWFnZSgp
Lmxlbmd0aCgpKQotICAgICAgICAgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0UHJlZmVy
cmVkTGFuZ3VhZ2UodHJhY2stPmxhbmd1YWdlKCkpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKGV4Y2x1c2l2ZSB8fCBpbmRleCA9PSBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzT2Zm
SW5kZXgoKSkKLSAgICAgICAgICAgIHRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6ZGlzYWJsZWRL
ZXl3b3JkKCkpOworICAgIH0KKworICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25Q
cmVmZXJlbmNlcyA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCktPnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKSA6IDA7CisgICAgaWYgKGNhcHRpb25QcmVmZXJlbmNl
cykgeworICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldFNob3VsZFNob3dDYXB0aW9ucyh0
cmFja1RvU2VsZWN0KTsKKyAgICAgICAgaWYgKHRyYWNrVG9TZWxlY3QgJiYgdHJhY2tUb1NlbGVj
dC0+bGFuZ3VhZ2UoKS5sZW5ndGgoKSkKKyAgICAgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+
c2V0UHJlZmVycmVkTGFuZ3VhZ2UodHJhY2tUb1NlbGVjdC0+bGFuZ3VhZ2UoKSk7CiAgICAgfQog
fQogCkBAIC00NTIwLDExICs0NTI3LDE1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlv
blByZWZlcmVuY2UKICAgICBpZiAoIWlzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZSA9IHRydWU7Ci0gICAgc2V0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSk7Ci0KICAgICBpZiAoaGFzTWVkaWFDb250
cm9scygpKQogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnRleHRUcmFja1ByZWZlcmVuY2VzQ2hh
bmdlZCgpOworCisgICAgYm9vbCBwcmVmZXJzQ2FwdGlvbnMgPSB1c2VyUHJlZmVyc0NhcHRpb25z
KCk7CisgICAgaWYgKG1fZGlzYWJsZUNhcHRpb25zID09ICFwcmVmZXJzQ2FwdGlvbnMpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UgPSB0cnVlOwor
ICAgIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShwcmVmZXJzQ2FwdGlvbnMpOwogfQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmln
dXJlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNp
b24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25maWd1
cmVUZXh0VHJhY2tzKCk7CiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tHcm91cChjb25zdCBU
cmFja0dyb3VwJik7CiAKLSAgICB2b2lkIHRvZ2dsZVRyYWNrQXRJbmRleChpbnQgaW5kZXgsIGJv
b2wgZXhjbHVzaXZlID0gdHJ1ZSk7CisgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRUcmFjayhUZXh0
VHJhY2sqKTsKICAgICBzdGF0aWMgaW50IHRleHRUcmFja3NPZmZJbmRleCgpIHsgcmV0dXJuIC0x
OyB9CiAgICAgc3RhdGljIGludCB0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCgpIHsgcmV0dXJuIC0y
OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzU1
LDYgKzc1NSwxMyBAQCB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0CiAg
ICAgICAgIC8vIENoZWNrIGlmIHRoZSBldmVudCB0YXJnZXQgaGFzIHN1Y2ggYSBjdXN0b20gZWxl
bWVudCBhbmQsIGlmIHNvLAogICAgICAgICAvLyB0ZWxsIHRoZSBIVE1MTWVkaWFFbGVtZW50IHRv
IGVuYWJsZSB0aGF0IHRyYWNrLgogCisgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFj
azsKKyAgICAgICAgTWVudUl0ZW1Ub1RyYWNrTWFwOjppdGVyYXRvciBpdGVyID0gbV9tZW51VG9U
cmFja01hcC5maW5kKHRvRWxlbWVudCh0YXJnZXQpKTsKKyAgICAgICAgaWYgKGl0ZXIgIT0gbV9t
ZW51VG9UcmFja01hcC5lbmQoKSkKKyAgICAgICAgICAgIHRleHRUcmFjayA9IGl0ZXItPnZhbHVl
OworICAgICAgICBtX21lbnVUb1RyYWNrTWFwLmNsZWFyKCk7CisgICAgICAgIG1fY29udHJvbHMt
PnRvZ2dsZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKTsKKwogICAgICAgICBpbnQgdHJhY2tJbmRl
eCA9IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudCh0b0VsZW1lbnQodGFyZ2V0KSk7CiAgICAgICAg
IGlmICh0cmFja0luZGV4ID09IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3NJbmRleE5vdEZv
dW5kKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NjMsMTAgKzc3MCwxMSBAQCB2b2lkIE1l
ZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0CiAgICAgICAgIGlmICghbWVkaWFFbGVt
ZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1lZGlhRWxlbWVudC0+dG9nZ2xl
VHJhY2tBdEluZGV4KHRyYWNrSW5kZXgpOworICAgICAgICBpZiAodGV4dFRyYWNrKQorICAgICAg
ICAgICAgbWVkaWFFbGVtZW50LT5zZXRTZWxlY3RlZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkp
OworICAgICAgICBlbHNlIGlmICh0cmFja0luZGV4ID09IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRU
cmFja3NPZmZJbmRleCgpKQorICAgICAgICAgICAgbWVkaWFFbGVtZW50LT5zZXRTZWxlY3RlZFRl
eHRUcmFjaygwKTsKIAotICAgICAgICAvLyBXZSd2ZSBzZWxlY3RlZCBhIHRyYWNrIHRvIGRpc3Bs
YXksIHNvIHdlIGNhbiBub3cgY2xvc2UgdGhlIG1lbnUuCi0gICAgICAgIG1fY29udHJvbHMtPnRv
Z2dsZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKTsKICAgICAgICAgdXBkYXRlRGlzcGxheSgpOwog
ICAgIH0KIApAQCAtNzk5LDUzICs4MDcsMzcgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0
aW9uc1RyYWNrTGlzdAogCiAgICAgaWYgKG1fdHJhY2tMaXN0SGFzQ2hhbmdlZCkKICAgICAgICAg
cmVidWlsZFRyYWNrTGlzdE1lbnUoKTsKLSAgICAKKwogICAgIGJvb2wgY2FwdGlvbnNWaXNpYmxl
ID0gbWVkaWFFbGVtZW50LT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwLCBsZW5ndGggPSBtX21lbnVJdGVtcy5zaXplKCk7IGkgPCBsZW5ndGg7ICsraSkg
ewogICAgICAgICBSZWZQdHI8RWxlbWVudD4gdHJhY2tJdGVtID0gbV9tZW51SXRlbXNbaV07CisK
ICAgICAgICAgaW50IHRyYWNrSW5kZXggPSB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQodHJhY2tJ
dGVtLmdldCgpKTsKLSAgICAgICAgaWYgKHRyYWNrSW5kZXggIT0gSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrc0luZGV4Tm90Rm91bmQoKSkgewotICAgICAgICAgICAgaWYgKHRyYWNrSW5kZXgg
PT0gSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrc09mZkluZGV4KCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoY2FwdGlvbnNWaXNpYmxlKQotICAgICAgICAgICAgICAgICAgICB0cmFja0l0ZW0t
PmNsYXNzTGlzdCgpLT5yZW1vdmUoc2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRyYWNrSXRl
bS0+Y2xhc3NMaXN0KCktPmFkZChzZWxlY3RlZENsYXNzVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJ
T04pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBUZXh0VHJhY2sqIHRy
YWNrID0gdHJhY2tMaXN0LT5pdGVtKHRyYWNrSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICgh
dHJhY2spCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlm
ICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS0+YWRkKHNlbGVjdGVkQ2xhc3NWYWx1
ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLT5yZW1vdmUoc2VsZWN0ZWRDbGFzc1Zh
bHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLSNlbmRpZgotfQorICAgICAgICBpZiAodHJhY2tJbmRleCA9PSBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCgpKQorICAgICAgICAgICAgY29udGludWU7CiAKLSNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCi1zdGF0aWMgdm9pZCBpbnNlcnRUZXh0VHJhY2tNZW51SXRl
bUludG9Tb3J0ZWRDb250YWluZXIoUmVmUHRyPEVsZW1lbnQ+JiBpdGVtLCBSZWZQdHI8RWxlbWVu
dD4mIGNvbnRhaW5lcikKLXsKLSAgICAvLyBUaGUgY29udGFpbmVyIHdpbGwgYWx3YXlzIGhhdmUg
dGhlICJPZmYiIGVudHJ5IGFscmVhZHkgcHJlc2VudCBhbmQgaXQKLSAgICAvLyBzaG91bGQgcmVt
YWluIGF0IHRoZSBzdGFydCBvZiB0aGUgbGlzdC4KLSAgICBBU1NFUlQoY29udGFpbmVyLT5jaGls
ZE5vZGVDb3VudCgpID4gMCk7Ci0gICAgQVNTRVJUKGl0ZW0tPmNoaWxkTm9kZUNvdW50KCkgPT0g
MSk7IC8vIEVhY2ggaXRlbSBzaG91bGQgaGF2ZSBhIHNpbmdsZSB0ZXh0IG5vZGUgY2hpbGQgZm9y
IHRoZSBsYWJlbC4KLSAgICBTdHJpbmcgaXRlbUxhYmVsID0gdG9UZXh0KGl0ZW0tPmZpcnN0Q2hp
bGQoKSktPndob2xlVGV4dCgpOwotCi0gICAgLy8gVGhpcyBpcyBhbiBpbnNlcnRpb24gc29ydCA6
KCBIb3dldmVyLCB0aGVyZSBzaG91bGRuJ3QgYmUgYSBob3JyaWJsZSBudW1iZXIgb2YgdGV4dCB0
cmFjayBpdGVtcy4KLSAgICBmb3IgKGludCBpID0gMSwgbnVtQ2hpbGROb2RlcyA9IGNvbnRhaW5l
ci0+Y2hpbGROb2RlQ291bnQoKTsgaSA8IG51bUNoaWxkTm9kZXM7ICsraSkgewotICAgICAgICBO
b2RlKiBjaGlsZCA9IGNvbnRhaW5lci0+Y2hpbGROb2RlKGkpOwotICAgICAgICBBU1NFUlQoY2hp
bGQtPmNoaWxkTm9kZUNvdW50KCkgPT0gMSk7IC8vIEVhY2ggaXRlbSBzaG91bGQgaGF2ZSBhIHNp
bmdsZSB0ZXh0IG5vZGUgY2hpbGQgZm9yIHRoZSBsYWJlbC4KLSAgICAgICAgU3RyaW5nIGNoaWxk
TGFiZWwgPSB0b1RleHQoY2hpbGQtPmZpcnN0Q2hpbGQoKSktPndob2xlVGV4dCgpOwotICAgICAg
ICBpZiAoY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGl0ZW1MYWJlbCwgY2hpbGRMYWJlbCkpIHsK
LSAgICAgICAgICAgIGNvbnRhaW5lci0+aW5zZXJ0QmVmb3JlKGl0ZW0sIGNoaWxkKTsKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRyYWNrSW5kZXggPT0gSFRNTE1lZGlhRWxlbWVu
dDo6dGV4dFRyYWNrc09mZkluZGV4KCkpIHsKKyAgICAgICAgICAgIGlmIChjYXB0aW9uc1Zpc2li
bGUpCisgICAgICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS0+cmVtb3ZlKHNlbGVj
dGVkQ2xhc3NWYWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS0+YWRkKHNlbGVjdGVkQ2xhc3NW
YWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQorCisgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjazsKKyAgICAgICAgTWVu
dUl0ZW1Ub1RyYWNrTWFwOjppdGVyYXRvciBpdGVyID0gbV9tZW51VG9UcmFja01hcC5maW5kKHRy
YWNrSXRlbS5nZXQoKSk7CisgICAgICAgIGlmIChpdGVyID09IG1fbWVudVRvVHJhY2tNYXAuZW5k
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdGV4dFRyYWNrID0gaXRlci0+dmFs
dWU7CisgICAgICAgIGlmICghdGV4dFRyYWNrKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGlmICh0ZXh0VHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkp
CisgICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLT5hZGQoc2VsZWN0ZWRDbGFzc1Zh
bHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdHJh
Y2tJdGVtLT5jbGFzc0xpc3QoKS0+cmVtb3ZlKHNlbGVjdGVkQ2xhc3NWYWx1ZSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CiAgICAgfQotICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoaXRlbSk7Ci19
CiAjZW5kaWYKK30KIAogdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVs
ZW1lbnQ6OnJlYnVpbGRUcmFja0xpc3RNZW51KCkKIHsKQEAgLTg1NSw2ICs4NDcsNyBAQCB2b2lk
IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0CiAgICAgbV9tZW51SXRlbXMuY2xl
YXIoKTsKIAogICAgIG1fdHJhY2tMaXN0SGFzQ2hhbmdlZCA9IGZhbHNlOworICAgIG1fbWVudVRv
VHJhY2tNYXAuY2xlYXIoKTsKIAogICAgIGlmICghbWVkaWFDb250cm9sbGVyKCktPmhhc0Nsb3Nl
ZENhcHRpb25zKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg2NCw0MyArODU3LDQwIEBAIHZvaWQg
TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgVGV4dFRyYWNrTGlzdCogdHJhY2tMaXN0ID0gbWVkaWFFbGVtZW50LT50ZXh0VHJhY2tzKCk7
Ci0KICAgICBpZiAoIXRyYWNrTGlzdCB8fCAhdHJhY2tMaXN0LT5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CiAgICAgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcyogY2FwdGlvbnNVc2VyUHJlZmVyZW5jZXMgPSBkb2MtPnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4g
PiB0cmFja3NGb3JNZW51ID0gY2FwdGlvbnNVc2VyUHJlZmVyZW5jZXMtPnNvcnRlZFRyYWNrTGlz
dEZvck1lbnUodHJhY2tMaXN0KTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBjYXB0aW9uc0hlYWRl
ciA9IGRvYy0+Y3JlYXRlRWxlbWVudChoM1RhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAg
Y2FwdGlvbnNIZWFkZXItPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUodGV4dFRyYWNr
U3VidGl0bGVzVGV4dCgpKSk7CiAgICAgYXBwZW5kQ2hpbGQoY2FwdGlvbnNIZWFkZXIpOwogICAg
IFJlZlB0cjxFbGVtZW50PiBjYXB0aW9uc01lbnVMaXN0ID0gZG9jLT5jcmVhdGVFbGVtZW50KHVs
VGFnLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAotICAgIFJlZlB0cjxFbGVtZW50PiB0cmFja0l0
ZW07Ci0KLSAgICB0cmFja0l0ZW0gPSBkb2MtPmNyZWF0ZUVsZW1lbnQobGlUYWcsIEFTU0VSVF9O
T19FWENFUFRJT04pOwotICAgIHRyYWNrSXRlbS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0
Tm9kZSh0ZXh0VHJhY2tPZmZUZXh0KCkpKTsKLSAgICB0cmFja0l0ZW0tPnNldEF0dHJpYnV0ZSh0
cmFja0luZGV4QXR0cmlidXRlTmFtZSgpLCB0ZXh0VHJhY2tzT2ZmQXR0clZhbHVlLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKLSAgICBjYXB0aW9uc01lbnVMaXN0LT5hcHBlbmRDaGlsZCh0cmFja0l0
ZW0pOwotICAgIG1fbWVudUl0ZW1zLmFwcGVuZCh0cmFja0l0ZW0pOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7Ci0gICAg
ICAgIHRyYWNrSXRlbSA9IGRvYy0+Y3JlYXRlRWxlbWVudChsaVRhZywgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1lbnVJdGVtOworICAgIG1lbnVJdGVtID0gZG9j
LT5jcmVhdGVFbGVtZW50KGxpVGFnLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBtZW51SXRl
bS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSh0ZXh0VHJhY2tPZmZUZXh0KCkpKTsK
KyAgICBtZW51SXRlbS0+c2V0QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRyaWJ1dGVOYW1lKCksIHRl
eHRUcmFja3NPZmZBdHRyVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGNhcHRpb25z
TWVudUxpc3QtPmFwcGVuZENoaWxkKG1lbnVJdGVtKTsKKyAgICBtX21lbnVJdGVtcy5hcHBlbmQo
bWVudUl0ZW0pOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tzRm9y
TWVudS5zaXplKCk7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBSZWZQdHI8VGV4dFRyYWNr
PiB0ZXh0VHJhY2sgPSB0cmFja3NGb3JNZW51W2ldOworICAgICAgICBtZW51SXRlbSA9IGRvYy0+
Y3JlYXRlRWxlbWVudChsaVRhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICAgICAgLy8g
QWRkIGEgY3VzdG9tIGF0dHJpYnV0ZSB0byB0aGUgPGxpPiBlbGVtZW50IHdoaWNoIHdpbGwgYWxs
b3cKICAgICAgICAgLy8gdXMgdG8gZWFzaWx5IGFzc29jaWF0ZSB0aGUgdXNlciB0YXBwaW5nIGhl
cmUgd2l0aCB0aGUKICAgICAgICAgLy8gdHJhY2suIFNpbmNlIHRoaXMgbGlzdCBpcyByZWJ1aWx0
IGlmIHRoZSB0cmFja3MgY2hhbmdlLCB3ZQogICAgICAgICAvLyBzaG91bGQgYWx3YXlzIGJlIGlu
IHN5bmMuCi0gICAgICAgIHRyYWNrSXRlbS0+c2V0QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRyaWJ1
dGVOYW1lKCksIFN0cmluZzo6bnVtYmVyKGkpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAg
ICAgbWVudUl0ZW0tPnNldEF0dHJpYnV0ZSh0cmFja0luZGV4QXR0cmlidXRlTmFtZSgpLCBTdHJp
bmc6Om51bWJlcihpKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKLSAgICAgICAgaWYgKGNhcHRp
b25zVXNlclByZWZlcmVuY2VzKQotICAgICAgICAgICAgdHJhY2tJdGVtLT5hcHBlbmRDaGlsZChk
b2MtPmNyZWF0ZVRleHROb2RlKGNhcHRpb25zVXNlclByZWZlcmVuY2VzLT5kaXNwbGF5TmFtZUZv
clRyYWNrKHRyYWNrKSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0cmFja0l0ZW0tPmFw
cGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUodHJhY2stPmxhYmVsKCkpKTsKKyAgICAgICAg
bWVudUl0ZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoY2FwdGlvbnNVc2VyUHJl
ZmVyZW5jZXMtPmRpc3BsYXlOYW1lRm9yVHJhY2sodGV4dFRyYWNrLmdldCgpKSkpOwogCi0gICAg
ICAgIGluc2VydFRleHRUcmFja01lbnVJdGVtSW50b1NvcnRlZENvbnRhaW5lcih0cmFja0l0ZW0s
IGNhcHRpb25zTWVudUxpc3QpOwotICAgICAgICBtX21lbnVJdGVtcy5hcHBlbmQodHJhY2tJdGVt
KTsKKyAgICAgICAgY2FwdGlvbnNNZW51TGlzdC0+YXBwZW5kQ2hpbGQobWVudUl0ZW0pOworICAg
ICAgICBtX21lbnVJdGVtcy5hcHBlbmQobWVudUl0ZW0pOworICAgICAgICBtX21lbnVUb1RyYWNr
TWFwLmFkZChtZW51SXRlbSwgdGV4dFRyYWNrKTsKICAgICB9CiAKICAgICBhcHBlbmRDaGlsZChj
YXB0aW9uc01lbnVMaXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzE1LDYgKzMxNSwxMCBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRy
PEVsZW1lbnQ+ID4gVHJhY2tNZW51SXRlbXM7CiAgICAgVHJhY2tNZW51SXRlbXMgbV9tZW51SXRl
bXM7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
RWxlbWVudD4sIFJlZlB0cjxUZXh0VHJhY2s+ID4gTWVudUl0ZW1Ub1RyYWNrTWFwOworICAgIE1l
bnVJdGVtVG9UcmFja01hcCBtX21lbnVUb1RyYWNrTWFwOworI2VuZGlmCiAgICAgTWVkaWFDb250
cm9scyogbV9jb250cm9sczsKICAgICBib29sIG1fdHJhY2tMaXN0SGFzQ2hhbmdlZDsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAkocmV2
aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSw2ICs0MTEsNyBAQCB2b2lkIE1lZGlhQ29udHJv
bHM6OnRleHRUcmFja1ByZWZlcmVuY2VzCiB7CiAgICAgaWYgKG1fdGV4dERpc3BsYXlDb250YWlu
ZXIpCiAgICAgICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnVwZGF0ZVNpemVzKHRydWUpOwor
ICAgIGNsb3NlZENhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiB9CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAkocmV2aXNpb24g
MTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDMwIEBAIGJvb2wgSW5iYW5kVGV4dFRyYWNr
Ojppc0Nsb3NlZENhcHRpb25zKCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5pc0Nsb3NlZENhcHRp
b25zKCk7CiB9CiAKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrOjpjb250YWluc09ubHlGb3JjZWRTdWJ0
aXRsZXMoKSBjb25zdAoreworICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29udGFpbnNPbmx5Rm9yY2VkU3VidGl0
bGVzKCk7Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrOjppc01haW5Qcm9ncmFtQ29udGVudCgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICByZXR1cm4gbV9wcml2YXRlLT5pc01haW5Qcm9ncmFtQ29udGVudCgpOworfQorCiti
b29sIEluYmFuZFRleHRUcmFjazo6aXNFYXN5VG9SZWFkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
cHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBtX3ByaXZh
dGUtPmlzRWFzeVRvUmVhZCgpOworfQorICAgIAogc2l6ZV90IEluYmFuZFRleHRUcmFjazo6aW5i
YW5kVHJhY2tJbmRleCgpCiB7CiAgICAgQVNTRVJUKG1fcHJpdmF0ZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgJKHJldmlzaW9uIDE0NjIwNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDYgKzQ2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkluYmFuZFRleHRU
cmFjaygpOwogCiAgICAgdmlydHVhbCBib29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWFpblByb2dyYW1Db250ZW50KCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2RlKGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJS
SURFOwogICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI5LDYg
KzQyOSwxNSBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBUZXh0VHJhY2s6CiB9CiAj
ZW5kaWYKIAorYm9vbCBUZXh0VHJhY2s6OmlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QKK3sK
KyAgICAvLyAiTWFpbiBwcm9ncmFtIiBjb250ZW50IGlzIGludHJpbnNpYyB0byB0aGUgcHJlc2Vu
dGF0aW9uIG9mIHRoZSBtZWRpYSBmaWxlLCByZWdhcmRsZXNzIG9mIGxvY2FsZS4gQ29udGVudCBz
dWNoIGFzCisgICAgLy8gZGlyZWN0b3JzIGNvbW1lbnRhcnkgaXMgbm90ICJtYWluIHByb2dyYW0i
IGJlY2F1c2UgaXQgaXMgbm90IGVzc2VudGlhbCBmb3IgdGhlIHByZXNlbnRhdGlvbi4gSFRNTDUg
ZG9lc24ndCBoYXZlCisgICAgLy8gYSB3YXkgdG8gZXhwcmVzcyB0aGlzIGluIGEgbWFjaGluZS1y
ZWFibGUgZm9ybSwgaXQgaXMgdHlwaWNhbGx5IGRvbmUgd2l0aCB0aGUgdHJhY2sgbGFiZWwsIHNv
IHdlIGFzc3VtZSB0aGF0IGNhcHRpb24KKyAgICAvLyB0cmFja3MgYXJlIG1haW4gY29udGVudCBh
bmQgYWxsIG90aGVyIHRyYWNrIHR5cGVzIGFyZSBub3QuCisgICAgcmV0dXJuIG1fa2luZCA9PSBj
YXB0aW9uc0tleXdvcmQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAkocmV2aXNpb24gMTQ2MjA1
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMTE5LDYgKzExOSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDbG9z
ZWRDYXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wg
Y29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNFYXN5VG9SZWFkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIGludCB0
cmFja0luZGV4KCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlVHJhY2tJbmRleCgpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAJKHJldmlzaW9uIDE0
NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMSw2ICsyMTEsMjIgQEAgdm9pZCBUZXh0VHJhY2tMaXN0OjpyZW1v
dmUoVGV4dFRyYWNrKiB0cgogICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsKIH0KIAorYm9vbCBU
ZXh0VHJhY2tMaXN0Ojpjb250YWlucyhUZXh0VHJhY2sqIHRyYWNrKSBjb25zdAoreworICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+KiB0cmFja3MgPSAwOworICAgIAorICAgIGlm
ICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpCisgICAgICAg
IHRyYWNrcyA9ICZtX2VsZW1lbnRUcmFja3M7CisgICAgZWxzZSBpZiAodHJhY2stPnRyYWNrVHlw
ZSgpID09IFRleHRUcmFjazo6QWRkVHJhY2spCisgICAgICAgIHRyYWNrcyA9ICZtX2FkZFRyYWNr
VHJhY2tzOworICAgIGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6Oklu
QmFuZCkKKyAgICAgICAgdHJhY2tzID0gJm1faW5iYW5kVHJhY2tzOworICAgIGVsc2UKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgCisgICAgcmV0dXJuIHRyYWNrcy0+ZmluZCh0
cmFjaykgIT0gbm90Rm91bmQ7Cit9CisKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrTGlz
dDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JUZXh0VHJhY2tMaXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmgJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIHB1
YmxpYzoKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICBpbnQgZ2V0VHJhY2tJbmRl
eChUZXh0VHJhY2sqKTsKICAgICBpbnQgZ2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRy
YWNrcyhUZXh0VHJhY2sqKTsKKyAgICBib29sIGNvbnRhaW5zKFRleHRUcmFjayopIGNvbnN0Owog
CiAgICAgVGV4dFRyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKICAgICB2b2lkIGFwcGVuZChQ
YXNzUmVmUHRyPFRleHRUcmFjaz4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwxNyArMjgsMTA4IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlcy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdl
R3JvdXAuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlRleHRUcmFja0xpc3Qu
aCIKKyNpbmNsdWRlIDx3dGYvTm9uQ29weWluZ1NvcnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzKFBhZ2VH
cm91cCogZ3JvdXApCisgICAgOiBtX3BhZ2VHcm91cChncm91cCkKKyAgICAsIG1fdGltZXIodGhp
cywgJkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnRpbWVyRmlyZWQpCisgICAgLCBtX3Rlc3RpbmdN
b2RlKGZhbHNlKQorICAgICwgbV9oYXZlUHJlZmVyZW5jZXMoZmFsc2UpCisgICAgLCBtX3Nob3Vs
ZFNob3dDYXB0aW9ucyhmYWxzZSkKK3sKK30KKworQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6fkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXMoKQoreworfQorCitib29sIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OnNob3VsZFNob3dDYXB0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGVzdGluZ01v
ZGUgPyBtX3Nob3VsZFNob3dDYXB0aW9ucyA6IGZhbHNlOworfQorCit2b2lkIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXM6OnRpbWVyRmlyZWQoVGltZXI8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4qKQor
eworICAgIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKK30KKwordm9pZCBDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpub3RpZnkoKQoreworICAgIGlmICghbV90ZXN0aW5nTW9kZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9oYXZlUHJlZmVyZW5jZXMgPSB0cnVlOworICAgIGlmICghbV90
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwor
dm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRTaG91bGRTaG93Q2FwdGlvbnMoYm9vbCBw
cmVmZXJlbmNlKQoreworICAgIG1fc2hvdWxkU2hvd0NhcHRpb25zID0gcHJlZmVyZW5jZTsKKyAg
ICBub3RpZnkoKTsKK30KKworYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVy
c0NhcHRpb25zKCkgY29uc3QKK3sKKyAgICBQYWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS0+cGFn
ZXMoKS5iZWdpbigpKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBwYWdlLT5zZXR0aW5ncygpLT5zaG91bGREaXNwbGF5Q2FwdGlvbnMoKTsKK30K
Kwogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJv
b2wgcHJlZmVyZW5jZSkKIHsKLSAgICBtX3VzZXJQcmVmZXJzQ2FwdGlvbnMgPSBwcmVmZXJlbmNl
OwotICAgIGlmIChtX3Rlc3RpbmdNb2RlKSB7Ci0gICAgICAgIG1faGF2ZVByZWZlcmVuY2VzID0g
dHJ1ZTsKLSAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwotICAgIH0KKyAgICBQ
YWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS0+cGFnZXMoKS5iZWdpbigpKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldFNob3VsZERp
c3BsYXlDYXB0aW9ucyhwcmVmZXJlbmNlKTsKKyAgICBub3RpZnkoKTsKK30KKworYm9vbCBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0Cit7CisgICAg
UGFnZSogcGFnZSA9ICoocGFnZUdyb3VwKCktPnBhZ2VzKCkuYmVnaW4oKSk7CisgICAgaWYgKCFw
YWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gcGFnZS0+c2V0dGluZ3Mo
KS0+c2hvdWxkRGlzcGxheVN1YnRpdGxlcygpOworfQorCit2b2lkIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OnNldFVzZXJQcmVmZXJzU3VidGl0bGVzKGJvb2wgcHJlZmVyZW5jZSkKK3sKKyAgICBQ
YWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS0+cGFnZXMoKS5iZWdpbigpKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldFNob3VsZERp
c3BsYXlTdWJ0aXRsZXMocHJlZmVyZW5jZSk7CisgICAgbm90aWZ5KCk7Cit9CisKK2Jvb2wgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNUZXh0RGVzY3JpcHRpb25zKCkgY29uc3QK
K3sKKyAgICBQYWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS0+cGFnZXMoKS5iZWdpbigpKTsKKyAg
ICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gcGFn
ZS0+c2V0dGluZ3MoKS0+c2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoKTsKK30KKwordm9p
ZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRVc2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMo
Ym9vbCBwcmVmZXJlbmNlKQoreworICAgIFBhZ2UqIHBhZ2UgPSAqKHBhZ2VHcm91cCgpLT5wYWdl
cygpLmJlZ2luKCkpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IHBhZ2UtPnNldHRpbmdzKCktPnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKHByZWZl
cmVuY2UpOworICAgIG5vdGlmeSgpOwogfQogCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6
OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQpAQCAtNTgsMTMgKzE0OSwxMCBAQCBWZWN0b3I8
U3RyaW5nPiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OnNldFByZWZlcnJlZExhbmd1YWdlKFN0cmluZyBsYW5ndWFnZSkKIHsKICAgICBtX3Vz
ZXJQcmVmZXJyZWRMYW5ndWFnZSA9IGxhbmd1YWdlOwotICAgIGlmIChtX3Rlc3RpbmdNb2RlKSB7
Ci0gICAgICAgIG1faGF2ZVByZWZlcmVuY2VzID0gdHJ1ZTsKLSAgICAgICAgY2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZCgpOwotICAgIH0KKyAgICBub3RpZnkoKTsKIH0KIAotU3RyaW5nIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OmRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKiB0cmFjaykg
Y29uc3QKK3N0YXRpYyBTdHJpbmcgdHJhY2tEaXNwbGF5TmFtZShUZXh0VHJhY2sqIHRyYWNrKQog
ewogICAgIGlmICh0cmFjay0+bGFiZWwoKS5pc0VtcHR5KCkgJiYgdHJhY2stPmxhbmd1YWdlKCku
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrTm9MYWJlbFRleHQoKTsKQEAgLTcz
LDYgKzE2MSwzMCBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6ZGlzcGxheU5hCiAg
ICAgcmV0dXJuIHRyYWNrLT5sYW5ndWFnZSgpOwogfQogCitTdHJpbmcgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6ZGlzcGxheU5hbWVGb3JUcmFjayhUZXh0VHJhY2sqIHRyYWNrKSBjb25zdAorewor
ICAgIHJldHVybiB0cmFja0Rpc3BsYXlOYW1lKHRyYWNrKTsKK30KKyAgICAKK3N0YXRpYyBib29s
IHRleHRUcmFja0NvbXBhcmUoY29uc3QgUmVmUHRyPFRleHRUcmFjaz4mIGEsIGNvbnN0IFJlZlB0
cjxUZXh0VHJhY2s+JiBiKQoreworICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHRyYWNrRGlz
cGxheU5hbWUoYS5nZXQoKSksIHRyYWNrRGlzcGxheU5hbWUoYi5nZXQoKSkpIDwgMDsKK30KKwor
VmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c29ydGVk
VHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QpCit7CisgICAgQVNTRVJU
KHRyYWNrTGlzdCk7CisKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiB0cmFja3NGb3JN
ZW51OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5n
dGgoKTsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICB0cmFja3NGb3JNZW51LmFwcGVuZCh0cmFj
a0xpc3QtPml0ZW0oaSkpOworCisgICAgbm9uQ29weWluZ1NvcnQodHJhY2tzRm9yTWVudS5iZWdp
bigpLCB0cmFja3NGb3JNZW51LmVuZCgpLCB0ZXh0VHJhY2tDb21wYXJlKTsKKworICAgIHJldHVy
biB0cmFja3NGb3JNZW51OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0sp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAko
cmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiwgMjAxMyAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwyMSArMzEsMzMgQEAKICNpbmNsdWRlICJMYW5n
dWFnZS5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJUZXh0VHJh
Y2suaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUGFnZUdyb3VwOworY2xhc3MgVGV4dFRyYWNrTGlzdDsKIAogY2xhc3MgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2FwdGlv
blVzZXJQcmVmZXJlbmNlcz4gY3JlYXRlKFBhZ2VHcm91cCogZ3JvdXApIHsgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDYXB0aW9uVXNlclByZWZlcmVuY2VzKGdyb3VwKSk7IH0KLSAgICB2aXJ0dWFsIH5D
YXB0aW9uVXNlclByZWZlcmVuY2VzKCkgeyB9CisgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlcygpOwogCiAgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMo
KSBjb25zdCB7IHJldHVybiBtX3Rlc3RpbmdNb2RlICYmIG1faGF2ZVByZWZlcmVuY2VzOyB9Ci0g
ICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Rl
c3RpbmdNb2RlID8gbV91c2VyUHJlZmVyc0NhcHRpb25zIDogZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VXNlclByZWZlcnNDYXB0aW9ucyhib29sIHByZWZlcmVuY2UpOworICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRTaG93Q2FwdGlvbnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvdWxkU2hvd0NhcHRpb25zKGJvb2wpOworCisgICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJz
Q2FwdGlvbnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlclByZWZlcnNDYXB0aW9u
cyhib29sKTsKKworICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc1N1YnRpdGxlcyhib29sIHByZWZlcmVu
Y2UpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlclByZWZlcnNUZXh0RGVzY3JpcHRpb25z
KGJvb2wgcHJlZmVyZW5jZSk7CisKICAgICB2aXJ0dWFsIGZsb2F0IGNhcHRpb25Gb250U2l6ZVNj
YWxlKGJvb2wmIGltcG9ydGFudCkgY29uc3QgeyBpbXBvcnRhbnQgPSBmYWxzZTsgcmV0dXJuIDAu
MDVmOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBj
b25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAKQEAgLTU3LDI3ICs2OSwyNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKikg
Y29uc3Q7CisgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBzb3J0ZWRUcmFj
a0xpc3RGb3JNZW51KFRleHRUcmFja0xpc3QqKTsKIAogICAgIHZpcnR1YWwgYm9vbCB0ZXN0aW5n
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdGluZ01vZGU7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0VGVzdGluZ01vZGUoYm9vbCBvdmVycmlkZSkgeyBtX3Rlc3RpbmdNb2RlID0gb3ZlcnJpZGU7
IH0KIAotICAgIFBhZ2VHcm91cCogcGFnZUdyb3VwKCkgeyByZXR1cm4gbV9wYWdlR3JvdXA7IH0K
KyAgICBQYWdlR3JvdXAqIHBhZ2VHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUdyb3VwOyB9
CiAKIHByb3RlY3RlZDoKLSAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKFBhZ2VHcm91cCogZ3Jv
dXApCi0gICAgICAgIDogbV9wYWdlR3JvdXAoZ3JvdXApCi0gICAgICAgICwgbV90ZXN0aW5nTW9k
ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhdmVQcmVmZXJlbmNlcyhmYWxzZSkKLSAgICAgICAgLCBt
X3VzZXJQcmVmZXJzQ2FwdGlvbnMoZmFsc2UpCi0gICAgewotICAgIH0KKyAgICBDYXB0aW9uVXNl
clByZWZlcmVuY2VzKFBhZ2VHcm91cCopOwogCiBwcml2YXRlOgorICAgIHZvaWQgdGltZXJGaXJl
ZChUaW1lcjxDYXB0aW9uVXNlclByZWZlcmVuY2VzPiopOworICAgIHZvaWQgbm90aWZ5KCk7CisK
ICAgICBQYWdlR3JvdXAqIG1fcGFnZUdyb3VwOworICAgIFRpbWVyPENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM+IG1fdGltZXI7CiAgICAgU3RyaW5nIG1fdXNlclByZWZlcnJlZExhbmd1YWdlOwogICAg
IGJvb2wgbV90ZXN0aW5nTW9kZTsKICAgICBib29sIG1faGF2ZVByZWZlcmVuY2VzOwotICAgIGJv
b2wgbV91c2VyUHJlZmVyc0NhcHRpb25zOworICAgIGJvb2wgbV9zaG91bGRTaG93Q2FwdGlvbnM7
CiB9OwogICAgIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjLmgJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw4ICs0Miwx
MiBAQCBwdWJsaWM6CiAKICNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQog
ICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFNob3dDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRTaG93Q2FwdGlvbnMoYm9vbCkgT1ZFUlJJREU7
CisKICAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0IE9WRVJSSURF
OworICAgIAogICAgIHZpcnR1YWwgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoYm9vbCYpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJy
aWRlKCkgY29uc3QgT1ZFUlJJREU7CiAKQEAgLTUzLDYgKzU3LDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIHZvaWQgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpIE9WRVJSSURF
OworCisgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBzb3J0ZWRUcmFja0xp
c3RGb3JNZW51KFRleHRUcmFja0xpc3QqKSBPVkVSUklERTsKKwogI2VuZGlmCiAKICAgICB2aXJ0
dWFsIFN0cmluZyBkaXNwbGF5TmFtZUZvclRyYWNrKFRleHRUcmFjayopIGNvbnN0IE9WRVJSSURF
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYy5tbQkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw5IEBACiAjaW1w
b3J0ICJQYWdlR3JvdXAuaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJUZXh0
VHJhY2tDdWUuaCIKKyNpbXBvcnQgIlRleHRUcmFja0xpc3QuaCIKICNpbXBvcnQgIlVzZXJTdHls
ZVNoZWV0VHlwZXMuaCIKKyNpbXBvcnQgPHd0Zi9Ob25Db3B5aW5nU29ydC5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBA
IC03MSw2ICs3Myw3IEBAIFNPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkEK
IFNPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0
RWRnZVN0eWxlLCBNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZSwgKE1BQ2FwdGlvbkFw
cGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2
aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQogU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwg
TUFDYXB0aW9uQXBwZWFyYW5jZUFkZFNlbGVjdGVkTGFuZ3VhZ2UsIGJvb2wsIChNQUNhcHRpb25B
cHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgQ0ZTdHJpbmdSZWYgbGFuZ3VhZ2UpLCAoZG9tYWluLCBs
YW5ndWFnZSkpOwogU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFy
YW5jZUNvcHlTZWxlY3RlZExhbmd1YWdlcywgQ0ZBcnJheVJlZiwgKE1BQ2FwdGlvbkFwcGVhcmFu
Y2VEb21haW4gZG9tYWluKSwgKGRvbWFpbikpOworU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0
eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlQcmVmZXJyZWRDYXB0aW9uaW5nTWVkaWFDaGFyYWN0
ZXJpc3RpY3MsICBDRkFycmF5UmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4p
LCAoZG9tYWluKSk7CiAKIFNPRlRfTElOS19QT0lOVEVSKE1lZGlhQWNjZXNzaWJpbGl0eSwga01B
WENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uLCBDRlN0cmluZ1Jl
ZikKICNkZWZpbmUga01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0
aW9uIGdldGtNQVhDYXB0aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigp
CkBAIC0xMTEsMjQgKzExNCw0NSBAQCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp+Q2FwdGlv
blVzZXJQCiB9CiAKICNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQotYm9v
bCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QK
KworYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzaG91bGRTaG93Q2FwdGlvbnMoKSBj
b25zdAogewogICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJy
YXJ5KCkpCi0gICAgICAgIHJldHVybiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVy
c0NhcHRpb25zKCk7Ci0KKyAgICAgICAgcmV0dXJuIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNo
b3VsZFNob3dDYXB0aW9ucygpOworICAgIAogICAgIHJldHVybiBNQUNhcHRpb25BcHBlYXJhbmNl
R2V0U2hvd0NhcHRpb25zKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlcik7CiB9CiAKLXZv
aWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyhib29s
IHByZWZlcmVuY2UpCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFNob3VsZFNo
b3dDYXB0aW9ucyhib29sIHByZWZlcmVuY2UpCiB7CiAgICAgaWYgKHRlc3RpbmdNb2RlKCkgfHwg
IU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkgewotICAgICAgICBDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjpzZXRVc2VyUHJlZmVyc0NhcHRpb25zKHByZWZlcmVuY2UpOworICAgICAgICBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpzZXRTaG91bGRTaG93Q2FwdGlvbnMocHJlZmVyZW5jZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0KKyAgICAKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlU2V0
U2hvd0NhcHRpb25zKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgcHJlZmVyZW5jZSk7
CiB9CiAKK2Jvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6dXNlclByZWZlcnNDYXB0aW9u
cygpIGNvbnN0Cit7CisgICAgYm9vbCBjYXB0aW9uU2V0dGluZyA9IENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKKyAgICBpZiAoY2FwdGlvblNldHRpbmcgfHwg
dGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQorICAgICAgICBy
ZXR1cm4gY2FwdGlvblNldHRpbmc7CisgICAgCisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNh
cHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGljcyhBZG9wdENGLCBNQUNhcHRpb25BcHBlYXJhbmNl
Q29weVByZWZlcnJlZENhcHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGljcyhrTUFDYXB0aW9uQXBw
ZWFyYW5jZURvbWFpblVzZXIpKTsKKyAgICByZXR1cm4gY2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVy
aXN0aWNzICYmIENGQXJyYXlHZXRDb3VudChjYXB0aW9uaW5nTWVkaWFDaGFyYWN0ZXJpc3RpY3Mu
Z2V0KCkpOworfQorCitib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVmZXJz
U3VidGl0bGVzKCkgY29uc3QKK3sKKyAgICBib29sIHN1YnRpdGxlc1NldHRpbmcgPSBDYXB0aW9u
VXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc1N1YnRpdGxlcygpOworICAgIGlmIChzdWJ0aXRs
ZXNTZXR0aW5nIHx8IHRlc3RpbmdNb2RlKCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnko
KSkKKyAgICAgICAgcmV0dXJuIHN1YnRpdGxlc1NldHRpbmc7CisgICAgCisgICAgUmV0YWluUHRy
PENGQXJyYXlSZWY+IGNhcHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGljcyhBZG9wdENGLCBNQUNh
cHRpb25BcHBlYXJhbmNlQ29weVByZWZlcnJlZENhcHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGlj
cyhrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIpKTsKKyAgICByZXR1cm4gIShjYXB0aW9u
aW5nTWVkaWFDaGFyYWN0ZXJpc3RpY3MgJiYgQ0ZBcnJheUdldENvdW50KGNhcHRpb25pbmdNZWRp
YUNoYXJhY3RlcmlzdGljcy5nZXQoKSkpOworfQorCiBib29sIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWM6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdAogewogICAgIGlmICh0ZXN0
aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCkBAIC00OTksNDAgKzUy
MywxODcgQEAgVmVjdG9yPFN0cmluZz4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYwogCiAgICAg
cmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CiB9Ci0jZW5kaWYKLQotU3RyaW5nIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OmRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKiB0cmFj
aykgY29uc3QKKyNlbmRpZiAgLy8gSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykK
KyAgICAKK3N0YXRpYyBTdHJpbmcgdHJhY2tEaXNwbGF5TmFtZShUZXh0VHJhY2sqIHRyYWNrKQog
ewotICAgIFN0cmluZyBsYWJlbCA9IHRyYWNrLT5sYWJlbCgpOwotICAgIFN0cmluZyBsYW5ndWFn
ZSA9IHRyYWNrLT5sYW5ndWFnZSgpOwotICAgIFN0cmluZyBwcmVmZXJyZWRMYW5ndWFnZSA9IGRl
ZmF1bHRMYW5ndWFnZSgpOwogICAgIFN0cmluZ0J1aWxkZXIgZGlzcGxheU5hbWU7CisgICAgU3Ry
aW5nIGxhYmVsID0gdHJhY2stPmxhYmVsKCk7CisgICAgU3RyaW5nIHRyYWNrTGFuZ3VhZ2VJZGVu
dGlmaWVyID0gdHJhY2stPmxhbmd1YWdlKCk7CiAKLSAgICBpZiAobGFiZWwuaXNFbXB0eSgpICYm
IGxhbmd1YWdlLmlzRW1wdHkoKSkgeworICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gY3VycmVu
dExvY2FsZShBZG9wdENGLCBDRkxvY2FsZUNvcHlDdXJyZW50KCkpOworICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gbG9jYWxlSWRlbnRpZmllcihBZG9wdENGLCBDRkxvY2FsZUNyZWF0ZUNhbm9u
aWNhbExvY2FsZUlkZW50aWZpZXJGcm9tU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHRyYWNr
TGFuZ3VhZ2VJZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGxhbmd1YWdlQ0YoQWRvcHRDRiwgQ0ZMb2NhbGVDb3B5RGlzcGxheU5h
bWVGb3JQcm9wZXJ0eVZhbHVlKGN1cnJlbnRMb2NhbGUuZ2V0KCksIGtDRkxvY2FsZUxhbmd1YWdl
Q29kZSwgbG9jYWxlSWRlbnRpZmllci5nZXQoKSkpOworICAgIFN0cmluZyBsYW5ndWFnZSA9IGxh
bmd1YWdlQ0YuZ2V0KCk7CisgICAgaWYgKCFsYWJlbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYg
KCFsYW5ndWFnZS5pc0VtcHR5KCkgJiYgIWxhYmVsLmNvbnRhaW5zKGxhbmd1YWdlKSkgeworICAg
ICAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gbG9jYWxlRGljdChBZG9wdENGLCBD
RkxvY2FsZUNyZWF0ZUNvbXBvbmVudHNGcm9tTG9jYWxlSWRlbnRpZmllcihrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBsb2NhbGVJZGVudGlmaWVyLmdldCgpKSk7CisgICAgICAgICAgICBpZiAobG9jYWxl
RGljdCkgeworICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGNvdW50cnlDb2RlID0gMDsKKyAg
ICAgICAgICAgICAgICBTdHJpbmcgY291bnRyeU5hbWU7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWVJZlByZXNlbnQobG9jYWxlRGljdC5nZXQo
KSwga0NGTG9jYWxlQ291bnRyeUNvZGUsIChjb25zdCB2b2lkICoqKSZjb3VudHJ5Q29kZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKGNvdW50cnlDb2RlKSB7CisgICAgICAgICAgICAgICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY291bnRyeU5hbWVDRihBZG9wdENGLCBDRkxvY2FsZUNvcHlE
aXNwbGF5TmFtZUZvclByb3BlcnR5VmFsdWUoY3VycmVudExvY2FsZS5nZXQoKSwga0NGTG9jYWxl
Q291bnRyeUNvZGUsIGNvdW50cnlDb2RlKSk7CisgICAgICAgICAgICAgICAgICAgIGNvdW50cnlO
YW1lID0gY291bnRyeU5hbWVDRi5nZXQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCFjb3VudHJ5TmFtZS5pc0VtcHR5KCkpCisgICAg
ICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZCh0ZXh0VHJhY2tDb3VudHJ5QW5kTGFu
Z3VhZ2VNZW51SXRlbVRleHQobGFiZWwsIGNvdW50cnlOYW1lLCBsYW5ndWFnZSkpOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKHRl
eHRUcmFja0xhbmd1YWdlTWVudUl0ZW1UZXh0KGxhYmVsLCBsYW5ndWFnZSkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgU3RyaW5nIGxhbmd1YWdlQW5k
TG9jYWxlID0gQ0ZMb2NhbGVDb3B5RGlzcGxheU5hbWVGb3JQcm9wZXJ0eVZhbHVlKGN1cnJlbnRM
b2NhbGUuZ2V0KCksIGtDRkxvY2FsZUlkZW50aWZpZXIsIHRyYWNrTGFuZ3VhZ2VJZGVudGlmaWVy
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgICAgICBpZiAoIWxhbmd1YWdlQW5kTG9jYWxl
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChsYW5ndWFnZUFuZExv
Y2FsZSk7CisgICAgICAgIGVsc2UgaWYgKCFsYW5ndWFnZS5pc0VtcHR5KCkpCisgICAgICAgICAg
ICBkaXNwbGF5TmFtZS5hcHBlbmQobGFuZ3VhZ2UpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBkaXNwbGF5TmFtZS5hcHBlbmQobG9jYWxlSWRlbnRpZmllci5nZXQoKSk7CisgICAgfQorICAg
IAorICAgIGlmIChkaXNwbGF5TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIGRpc3BsYXlOYW1lLmFw
cGVuZCh0ZXh0VHJhY2tOb0xhYmVsVGV4dCgpKTsKKyAgICAKKyAgICBpZiAodHJhY2stPmlzRWFz
eVRvUmVhZCgpKQorICAgICAgICByZXR1cm4gZWFzeVJlYWRlclRyYWNrTWVudUl0ZW1UZXh0KGRp
c3BsYXlOYW1lLnRvU3RyaW5nKCkpOworICAgIAorICAgIGlmICh0cmFjay0+a2luZCgpICE9IHRy
YWNrLT5jYXB0aW9uc0tleXdvcmQoKSkKICAgICAgICAgcmV0dXJuIGRpc3BsYXlOYW1lLnRvU3Ry
aW5nKCk7Ci0gICAgfQorICAgIAorICAgIGlmICh0cmFjay0+aXNDbG9zZWRDYXB0aW9ucygpKQor
ICAgICAgICByZXR1cm4gY2xvc2VkQ2FwdGlvblRyYWNrTWVudUl0ZW1UZXh0KGRpc3BsYXlOYW1l
LnRvU3RyaW5nKCkpOworICAgIAorICAgIHJldHVybiBzZGhUcmFja01lbnVJdGVtVGV4dChkaXNw
bGF5TmFtZS50b1N0cmluZygpKTsKK30KIAotICAgIGlmICghbGFiZWwuaXNFbXB0eSgpKQotICAg
ICAgICBkaXNwbGF5TmFtZS5hcHBlbmQobGFiZWwpOworU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWM6OmRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKiB0cmFjaykgY29uc3QKK3sK
KyAgICByZXR1cm4gdHJhY2tEaXNwbGF5TmFtZSh0cmFjayk7Cit9CiAKLSAgICBBdG9taWNTdHJp
bmcgbG9jYWxlRGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKGxhbmd1
YWdlKTsKLSAgICBpZiAoIWxhYmVsLmNvbnRhaW5zKGxvY2FsZURpc3BsYXlOYW1lKSkgewotICAg
ICAgICBpZiAoZGlzcGxheU5hbWUubGVuZ3RoKCkgPiAwKQotICAgICAgICAgICAgZGlzcGxheU5h
bWUuYXBwZW5kKCIgIik7Ci0gICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChsb2NhbGVEaXNwbGF5
TmFtZSk7Ci0gICAgfQorc3RhdGljIFN0cmluZyBsYW5ndWFnZUlkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZUNvZGUpCit7CisgICAgaWYgKGxhbmd1YWdlQ29kZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBsYW5ndWFnZUNvZGU7CiAKLSAgICBpZiAodHJhY2stPmtpbmQoKSA9PSB0
cmFjay0+Y2FwdGlvbnNLZXl3b3JkKCkpIHsKLSAgICAgICAgaWYgKHRyYWNrLT5pc0Nsb3NlZENh
cHRpb25zKCkpCi0gICAgICAgICAgICBkaXNwbGF5TmFtZS5hcHBlbmQoIiBDQyIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBkaXNwbGF5TmFtZS5hcHBlbmQoIiBTREgiKTsKKyAgICBTdHJp
bmcgbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlID0gbGFuZ3VhZ2VDb2RlLmxvd2VyKCk7CisgICAgCisg
ICAgaWYgKGxvd2VyY2FzZUxhbmd1YWdlQ29kZS5sZW5ndGgoKSA+PSAzICYmIChsb3dlcmNhc2VM
YW5ndWFnZUNvZGVbMl0gPT0gJ18nIHx8IGxvd2VyY2FzZUxhbmd1YWdlQ29kZVsyXSA9PSAnLScp
KQorICAgICAgICBsb3dlcmNhc2VMYW5ndWFnZUNvZGUudHJ1bmNhdGUoMik7CisgICAgCisgICAg
cmV0dXJuIGxvd2VyY2FzZUxhbmd1YWdlQ29kZTsKK30KKworc3RhdGljIGJvb2wgdGV4dFRyYWNr
Q29tcGFyZShjb25zdCBSZWZQdHI8VGV4dFRyYWNrPiYgYSwgY29uc3QgUmVmUHRyPFRleHRUcmFj
az4mIGIpCit7CisgICAgU3RyaW5nIHByZWZlcnJlZExhbmd1YWdlRGlzcGxheU5hbWUgPSBkaXNw
bGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKGxhbmd1YWdlSWRlbnRpZmllcihkZWZhdWx0TGFuZ3Vh
Z2UoKSkpOworICAgIFN0cmluZyBhTGFuZ3VhZ2VEaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lRm9y
TGFuZ3VhZ2VMb2NhbGUobGFuZ3VhZ2VJZGVudGlmaWVyKGEtPmxhbmd1YWdlKCkpKTsKKyAgICBT
dHJpbmcgYkxhbmd1YWdlRGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxl
KGxhbmd1YWdlSWRlbnRpZmllcihiLT5sYW5ndWFnZSgpKSk7CisKKyAgICAvLyBUcmFja3MgaW4g
dGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2UgYXJlIGFsd2F5cyBhdCB0aGUgdG9wIG9mIHRo
ZSBtZW51LgorICAgIGJvb2wgYUlzUHJlZmVycmVkTGFuZ3VhZ2UgPSAhY29kZVBvaW50Q29tcGFy
ZShhTGFuZ3VhZ2VEaXNwbGF5TmFtZSwgcHJlZmVycmVkTGFuZ3VhZ2VEaXNwbGF5TmFtZSk7Cisg
ICAgYm9vbCBiSXNQcmVmZXJyZWRMYW5ndWFnZSA9ICFjb2RlUG9pbnRDb21wYXJlKGJMYW5ndWFn
ZURpc3BsYXlOYW1lLCBwcmVmZXJyZWRMYW5ndWFnZURpc3BsYXlOYW1lKTsKKyAgICBpZiAoKGFJ
c1ByZWZlcnJlZExhbmd1YWdlIHx8IGJJc1ByZWZlcnJlZExhbmd1YWdlKSAmJiAoYUlzUHJlZmVy
cmVkTGFuZ3VhZ2UgIT0gYklzUHJlZmVycmVkTGFuZ3VhZ2UpKQorICAgICAgICByZXR1cm4gYUlz
UHJlZmVycmVkTGFuZ3VhZ2UgPyB0cnVlIDogZmFsc2U7CisKKyAgICAvLyBUcmFja3Mgbm90IGlu
IHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlIHNvcnQgZmlyc3QgYnkgbGFuZ3VhZ2UgLi4u
CisgICAgaWYgKGNvZGVQb2ludENvbXBhcmUoYUxhbmd1YWdlRGlzcGxheU5hbWUsIGJMYW5ndWFn
ZURpc3BsYXlOYW1lKSkKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoYUxhbmd1YWdl
RGlzcGxheU5hbWUsIGJMYW5ndWFnZURpc3BsYXlOYW1lKSA8IDA7CisKKyAgICAvLyAuLi4gYnV0
IHdoZW4gdHJhY2tzIGhhdmUgdGhlIHNhbWUgbGFuZ3VhZ2UsIG1haW4gcHJvZ3JhbSBjb250ZW50
IHNvcnRzIG5leHQgaGlnaGVzdCAuLi4KKyAgICBib29sIGFJc01haW5Db250ZW50ID0gYS0+aXNN
YWluUHJvZ3JhbUNvbnRlbnQoKTsKKyAgICBib29sIGJJc01haW5Db250ZW50ID0gYi0+aXNNYWlu
UHJvZ3JhbUNvbnRlbnQoKTsKKyAgICBpZiAoKGFJc01haW5Db250ZW50IHx8IGJJc01haW5Db250
ZW50KSAmJiAoYUlzTWFpbkNvbnRlbnQgIT0gYklzTWFpbkNvbnRlbnQpKQorICAgICAgICByZXR1
cm4gYUlzTWFpbkNvbnRlbnQgPyB0cnVlIDogZmFsc2U7CisKKyAgICAvLyAuLi4gYW5kIG1haW4g
cHJvZ3JhbSB0cmFrY3Mgc29ydCBoaWdoZXIgdGhhbiBDQyB0cmFja3MgLi4uCisgICAgYm9vbCBh
SXNDQyA9IGEtPmlzQ2xvc2VkQ2FwdGlvbnMoKTsKKyAgICBib29sIGJJc0NDID0gYi0+aXNDbG9z
ZWRDYXB0aW9ucygpOworICAgIGlmICgoYUlzQ0MgfHwgYklzQ0MpICYmIChhSXNDQyAhPSBiSXND
QykpIHsKKyAgICAgICAgaWYgKGFJc0NDKQorICAgICAgICAgICAgcmV0dXJuIGFJc01haW5Db250
ZW50ID8gdHJ1ZSA6IGZhbHNlOworICAgICAgICBpZiAoYklzQ0MpCisgICAgICAgICAgICByZXR1
cm4gYklzTWFpbkNvbnRlbnQgPyB0cnVlIDogZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIGRp
c3BsYXlOYW1lLnRvU3RyaW5nKCk7CisgICAgLy8gLi4uIGFuZCB0cmFja3Mgb2YgdGhlIHNhbWUg
dHlwZSBhbmQgbGFuZ3VhZ2Ugc29ydCBieSB0aGUgbWVudSBpdGVtIHRleHQuCisgICAgcmV0dXJu
IGNvZGVQb2ludENvbXBhcmUodHJhY2tEaXNwbGF5TmFtZShhLmdldCgpKSwgdHJhY2tEaXNwbGF5
TmFtZShiLmdldCgpKSkgPCAwOwogfQogCitWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBDYXB0
aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KFRleHRUcmFja0xp
c3QqIHRyYWNrTGlzdCkKK3sKKyAgICBBU1NFUlQodHJhY2tMaXN0KTsKKworICAgIFZlY3RvcjxS
ZWZQdHI8VGV4dFRyYWNrPiA+IHRyYWNrc0Zvck1lbnU7CisgICAgSGFzaFNldDxTdHJpbmc+IGxh
bmd1YWdlc0luY2x1ZGVkOworICAgIGJvb2wgcHJlZmVyc0FjY2Vzc2liaWxpdHlUcmFja3MgPSB1
c2VyUHJlZmVyc0NhcHRpb25zKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5ndGgg
PSB0cmFja0xpc3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgVGV4dFRy
YWNrKiB0cmFjayA9IHRyYWNrTGlzdC0+aXRlbShpKTsKKyAgICAgICAgU3RyaW5nIGxhbmd1YWdl
ID0gZGlzcGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZSh0cmFjay0+bGFuZ3VhZ2UoKSk7CisKKyAg
ICAgICAgaWYgKHRyYWNrLT5pc0Vhc3lUb1JlYWQoKSkgeworICAgICAgICAgICAgaWYgKCFsYW5n
dWFnZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzSW5jbHVkZWQuYWRkKGxh
bmd1YWdlKTsKKyAgICAgICAgICAgIHRyYWNrc0Zvck1lbnUuYXBwZW5kKHRyYWNrKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRyYWNrLT5jb250YWlu
c09ubHlGb3JjZWRTdWJ0aXRsZXMoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGlmICghbGFuZ3VhZ2UuaXNFbXB0eSgpICYmIHRyYWNrLT5pc01haW5Qcm9ncmFtQ29udGVudCgp
KSB7CisgICAgICAgICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVRyYWNrID0gdHJhY2stPmtpbmQo
KSA9PSB0cmFjay0+Y2FwdGlvbnNLZXl3b3JkKCk7CisgICAgICAgICAgICBpZiAocHJlZmVyc0Fj
Y2Vzc2liaWxpdHlUcmFja3MpIHsKKyAgICAgICAgICAgICAgICAvLyBJbiB0aGUgZmlyc3QgcGFz
cywgaW5jbHVkZSBvbmx5IGNhcHRpb24gdHJhY2tzIGlmIHRoZSB1c2VyIHByZWZlcnMgYWNjZXNz
aWJpbGl0eSB0cmFja3MuCisgICAgICAgICAgICAgICAgaWYgKCFpc0FjY2Vzc2liaWxpdHlUcmFj
aykgeworICAgICAgICAgICAgICAgICAgICBMT0coTWVkaWEsICJDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51IC0gc2tpcHBpbmcgJXMgYmVjYXVzZSBpdCBp
cyBOT1QgYW4gYWNjZXNzaWJpbGl0eSB0cmFjayIsIGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIEluIHRoZSBmaXJzdCBwYXNzLCBvbmx5
IGluY2x1ZGUgdGhlIGZpcnN0IG5vbi1DQyBvciBTREggdHJhY2sgd2l0aCBlYWNoIGxhbmd1YWdl
IGlmIHRoZSB1c2VyIHByZWZlcnMgdHJhbnNsYXRpb24gdHJhY2tzLgorICAgICAgICAgICAgICAg
IGlmIChpc0FjY2Vzc2liaWxpdHlUcmFjaykgeworICAgICAgICAgICAgICAgICAgICBMT0coTWVk
aWEsICJDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51IC0g
c2tpcHBpbmcgJXMgYmVjYXVzZSBpdCBpcyBhbiBhY2Nlc3NpYmlsaXR5IHRyYWNrIiwgbGFuZ3Vh
Z2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobGFuZ3VhZ2VzSW5jbHVkZWQuY29udGFp
bnMobGFuZ3VhZ2UpKSB7CisgICAgICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkNhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWM6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUgLSBza2lwcGluZyAlcyBi
ZWNhdXNlIGl0IGlzIG5vdCB0aGUgZmlyc3Qgd2l0aCB0aGlzIGxhbmd1YWdlIiwgbGFuZ3VhZ2Uu
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghbGFuZ3Vh
Z2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgbGFuZ3VhZ2VzSW5jbHVkZWQuYWRkKGxhbmd1YWdl
KTsKKyAgICAgICAgdHJhY2tzRm9yTWVudS5hcHBlbmQodHJhY2spOworICAgIH0KKworICAgIC8v
IE5vdyB0aGF0IHdlIGhhdmUgZmlsdGVyZWQgZm9yIHRoZSB1c2VyJ3MgYWNjZXNzaWJpbGl0eS90
cmFuc2xhdGlvbiBwcmVmZXJlbmNlLCBhZGQgIGFsbCB0cmFja3Mgd2l0aCBhIHVuaXF1ZSBsYW5n
dWFnZSB3aXRob3V0IHJlZ2FyZCB0byB0cmFjayB0eXBlLgorICAgIGZvciAodW5zaWduZWQgaSA9
IDAsIGxlbmd0aCA9IHRyYWNrTGlzdC0+bGVuZ3RoKCk7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICBUZXh0VHJhY2sqIHRyYWNrID0gdHJhY2tMaXN0LT5pdGVtKGkpOworICAgICAgICBTdHJp
bmcgbGFuZ3VhZ2UgPSBkaXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKHRyYWNrLT5sYW5ndWFn
ZSgpKTsKKworICAgICAgICAvLyBBbGwgY2FuZGlkYXRlcyB3aXRoIG5vIGxhbmd1Z2Ugd2VyZSBh
ZGRlZCB0aGUgZmlyc3QgdGltZSB0aHJvdWdoLgorICAgICAgICBpZiAobGFuZ3VhZ2UuaXNFbXB0
eSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHRyYWNrLT5jb250YWlu
c09ubHlGb3JjZWRTdWJ0aXRsZXMoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworIAorICAgICAg
ICBpZiAoIWxhbmd1YWdlc0luY2x1ZGVkLmNvbnRhaW5zKGxhbmd1YWdlKSAmJiB0cmFjay0+aXNN
YWluUHJvZ3JhbUNvbnRlbnQoKSkgeworICAgICAgICAgICAgbGFuZ3VhZ2VzSW5jbHVkZWQuYWRk
KGxhbmd1YWdlKTsKKyAgICAgICAgICAgIHRyYWNrc0Zvck1lbnUuYXBwZW5kKHRyYWNrKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIG5vbkNvcHlpbmdTb3J0KHRyYWNrc0Zvck1lbnUuYmVnaW4o
KSwgdHJhY2tzRm9yTWVudS5lbmQoKSwgdGV4dFRyYWNrQ29tcGFyZSk7CisKKyAgICByZXR1cm4g
dHJhY2tzRm9yTWVudTsKK30KKyAgICAKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFD
SykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHJldmlzaW9uIDE0NjIw
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU0LDggKzE1NCwxMCBAQCBTdHJpbmcgcHJlZmVycmVkTGFuZ3VhZ2VGcm9tTGlzdChj
b25zdCBWCiBTdHJpbmcgZGlzcGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZShjb25zdCBTdHJpbmcm
IGxvY2FsZU5hbWUpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghbG9jYWxlTmFtZS5p
c051bGwoKSAmJiAhbG9jYWxlTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBDRkxvY2Fs
ZUNvcHlEaXNwbGF5TmFtZUZvclByb3BlcnR5VmFsdWUoQ0ZMb2NhbGVDb3B5Q3VycmVudCgpLCBr
Q0ZMb2NhbGVJZGVudGlmaWVyLCBsb2NhbGVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwor
ICAgIGlmICghbG9jYWxlTmFtZS5pc051bGwoKSAmJiAhbG9jYWxlTmFtZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBjdXJyZW50TG9jYWxlKEFkb3B0Q0YsIENG
TG9jYWxlQ29weUN1cnJlbnQoKSk7CisgICAgICAgIHJldHVybiBDRkxvY2FsZUNvcHlEaXNwbGF5
TmFtZUZvclByb3BlcnR5VmFsdWUoY3VycmVudExvY2FsZS5nZXQoKSwga0NGTG9jYWxlSWRlbnRp
ZmllciwgbG9jYWxlTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICB9CiAjZW5kaWYK
ICAgICByZXR1cm4gbG9jYWxlTmFtZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAy
Nyw4ICsxMDI3LDM2IEBAIFN0cmluZyB0ZXh0VHJhY2tPZmZUZXh0KCkKIAogU3RyaW5nIHRleHRU
cmFja05vTGFiZWxUZXh0KCkKIHsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIlVua25v
d24iLCAiVW5rbm93biAoY2xvc2VkIGNhcHRpb25zIHRyYWNrKSIsICJNZW51IGl0ZW0gbGFiZWwg
Zm9yIGEgY2xvc2VkIGNhcHRpb25zIHRyYWNrIHRoYXQgaGFzIG5vIG90aGVyIG5hbWUiKTsKKyAg
ICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIlVua25vd24iLCAiVW5rbm93biAodGV4dCB0cmFj
aykiLCAiTWVudSBpdGVtIGxhYmVsIGZvciBhIHRleHQgdHJhY2sgdGhhdCBoYXMgbm8gb3RoZXIg
bmFtZSIpOwogfQorICAgIAorI2lmIFBMQVRGT1JNKE1BQykKK1N0cmluZyB0ZXh0VHJhY2tDb3Vu
dHJ5QW5kTGFuZ3VhZ2VNZW51SXRlbVRleHQoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiBjb3VudHJ5LCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQoreworICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgKCVALSVAKSIsICJUZXh0IHRyYWNr
IGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgY291bnRyeSBhbmQgbGFuZ3Vh
Z2Ugb2YgdGhlIHN1YnRpdGxlLCBpbiB0aGUgZm9ybSBvZiAnVGl0bGUgKExhbmd1YWdlLUNvdW50
cnkpJyIpLCB0aXRsZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBsYW5ndWFnZS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBjb3VudHJ5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworfQorCitTdHJp
bmcgdGV4dFRyYWNrTGFuZ3VhZ2VNZW51SXRlbVRleHQoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSkKK3sKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5n
KFdFQl9VSV9TVFJJTkcoIiVAICglQCkiLCAiVGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0
IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIG9mIHRoZSBzdWJ0aXRsZSwgaW4gdGhlIGZvcm0g
b2YgJ1RpdGxlIChMYW5ndWFnZSknIiksIHRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGxh
bmd1YWdlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworfQorCitTdHJpbmcgY2xvc2VkQ2FwdGlv
blRyYWNrTWVudUl0ZW1UZXh0KGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCBDQyIsICJUZXh0IHRyYWNrIGNv
bnRhaW5zIGNsb3NlZCBjYXB0aW9ucyIpLCB0aXRsZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
K30KKworU3RyaW5nIHNkaFRyYWNrTWVudUl0ZW1UZXh0KGNvbnN0IFN0cmluZyYgdGl0bGUpCit7
CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCBTREgi
LCAiVGV4dCB0cmFjayBjb250YWlucyBzdWJ0aXRsZXMgZm9yIHRoZSBkZWFmIGFuZCBoYXJkIG9m
IGhlYXJpbmciKSwgdGl0bGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Cit9CisKK1N0cmluZyBl
YXN5UmVhZGVyVHJhY2tNZW51SXRlbVRleHQoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVAIEVhc3kgUmVhZGVy
IiwgIlRleHQgdHJhY2sgY29udGFpbnMgc2ltcGxpZmllZCAoM3JkIGdyYWRlIGxldmVsKSBzdWJ0
aXRsZXMiKSwgdGl0bGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Cit9CisjZW5kaWYKKwogI2Vu
ZGlmCiAKIFN0cmluZyBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsVGl0bGUoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAkocmV2aXNpb24gMTQ2MjA1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjgsNiArMjY4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBTdHJpbmcg
dGV4dFRyYWNrU3VidGl0bGVzVGV4dCgpOwogICAgIFN0cmluZyB0ZXh0VHJhY2tPZmZUZXh0KCk7
CiAgICAgU3RyaW5nIHRleHRUcmFja05vTGFiZWxUZXh0KCk7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIFN0cmluZyB0ZXh0VHJhY2tDb3VudHJ5QW5kTGFuZ3VhZ2VNZW51SXRlbVRleHQoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBjb3VudHJ5LCBjb25zdCBTdHJpbmcmIGxhbmd1
YWdlKTsKKyAgICBTdHJpbmcgdGV4dFRyYWNrTGFuZ3VhZ2VNZW51SXRlbVRleHQoY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CisgICAgU3RyaW5nIGNsb3NlZENh
cHRpb25UcmFja01lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICBTdHJpbmcgc2RoVHJh
Y2tNZW51SXRlbVRleHQoY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGVhc3lSZWFkZXJUcmFj
a01lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcmKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBTdHJp
bmcgc25hcHNob3R0ZWRQbHVnSW5MYWJlbFRpdGxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
CShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDExIEBA
IHB1YmxpYzoKIAogICAgIGVudW0gS2luZCB7IFN1YnRpdGxlcywgQ2FwdGlvbnMsIERlc2NyaXB0
aW9ucywgQ2hhcHRlcnMsIE1ldGFkYXRhLCBOb25lIH07CiAgICAgdmlydHVhbCBLaW5kIGtpbmQo
KSBjb25zdCB7IHJldHVybiBTdWJ0aXRsZXM7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3Nl
ZENhcHRpb25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29u
dGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5
QXRvbTsgfQogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1
cm4gZW1wdHlBdG9tOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDkgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNDbG9zZWRDYXB0aW9ucygpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjb250YWluc09ubHlGb3JjZWRTdWJ0aXRs
ZXMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYWluUHJvZ3JhbUNvbnRl
bnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFYXN5VG9SZWFkKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHQoKSBjb25zdCBPVkVSUklERTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVB
VkZPYmpDLm1tCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNTIsOCArNTIsOSBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZGb3Vu
ZGF0aW9uLCBBVlBsYXllckl0CiAjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCBn
ZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWwoKQogI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVy
aXN0aWNBdWRpYmxlIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUoKQogI2RlZmluZSBB
Vk1lZGlhVHlwZUNsb3NlZENhcHRpb24gZ2V0QVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uKCkKLSNk
ZWZpbmUgQVZNZWRpYVR5cGVWaWRlbyBnZXRBVk1lZGlhVHlwZVZpZGVvKCkKLSNkZWZpbmUgQVZN
ZWRpYVR5cGVBdWRpbyBnZXRBVk1lZGlhVHlwZUF1ZGlvKCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJh
Y3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzIGdldEFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0
ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFp
blByb2dyYW1Db250ZW50KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRvUmVh
ZCBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNFYXN5VG9SZWFkKCkKIAogU09GVF9MSU5LX1BPSU5U
RVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZUNsb3NlZENhcHRpb24sIE5TU3RyaW5nICopCiBT
T0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2li
bGUsIE5TU3RyaW5nICopCkBAIC02Miw2ICs2MywxMCBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZv
dW5kYXRpb24sIEFWTWV0YWRhCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVk
aWFUeXBlU3VidGl0bGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRp
b24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNz
aWJpbGl0eSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZN
ZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHks
IE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFy
YWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcywgTlNTdHJpbmcgKikKK1NPRlRf
TElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJv
Z3JhbUNvbnRlbnQsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24s
IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQsIE5TU3RyaW5nICopCisKICNkZWZpbmUg
QVZNZXRhZGF0YUl0ZW0gZ2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpCiAjZGVmaW5lIEFWUGxheWVy
SXRlbUxlZ2libGVPdXRwdXQgZ2V0QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dENsYXNzKCkKICNk
ZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNMZWdpYmxlKCkKQEAgLTExOSw2ICsxMjQsMzAgQEAgYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGT2JqQzo6aXNDbAogICAgIHJldHVybiBbW21fbWVkaWFTZWxlY3Rpb25PcHRpb24gbWVk
aWFUeXBlXSBpc0VxdWFsVG9TdHJpbmc6QVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uXTsKIH0KIAor
Ym9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQzo6Y29udGFpbnNPbmx5Rm9yY2VkU3Vi
dGl0bGVzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gW21fbWVkaWFTZWxlY3Rpb25PcHRp
b24gaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09u
bHlGb3JjZWRTdWJ0aXRsZXNdOworfQorCitib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZP
YmpDOjppc01haW5Qcm9ncmFtQ29udGVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhU2Vs
ZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIFtt
X21lZGlhU2VsZWN0aW9uT3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJh
Y3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnRdOworfQorCitib29sIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkZPYmpDOjppc0Vhc3lUb1JlYWQoKSBjb25zdAoreworICAgIGlmICghbV9tZWRp
YVNlbGVjdGlvbk9wdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIFtt
X21lZGlhU2VsZWN0aW9uT3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJh
Y3RlcmlzdGljRWFzeVRvUmVhZF07Cit9CisKIEF0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQzo6bGFiZWwoKSBjb25zdAogewogICAgIGlmICghbV9tZWRpYVNlbGVjdGlv
bk9wdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmNwcAkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkludGVybmFsU2V0dGluZ3MuaCIKIAorI2luY2x1ZGUgIkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzQsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlN1cHBsZW1lbnRhYmxlLmgiCkBAIC00MjYsMTIgKzQyOCwxNiBAQCB2b2lkIEludGVybmFsU2V0
dGluZ3M6OnNldFNob3VsZERpc3BsYXlUCiAgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0
dGluZ3MoKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAoIXBhZ2UoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJl
bmNlcyA9IHBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKwogICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShraW5kLCAiU3VidGl0bGVzIikpCi0gICAgICAgIHNldHRpbmdzKCkt
PnNldFNob3VsZERpc3BsYXlTdWJ0aXRsZXMoZW5hYmxlZCk7CisgICAgICAgIGNhcHRpb25QcmVm
ZXJlbmNlcy0+c2V0VXNlclByZWZlcnNTdWJ0aXRsZXMoZW5hYmxlZCk7CiAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2Uoa2luZCwgIkNhcHRpb25zIikpCi0gICAgICAgIHNldHRpbmdzKCkt
PnNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhlbmFibGVkKTsKKyAgICAgICAgY2FwdGlvblByZWZl
cmVuY2VzLT5zZXRVc2VyUHJlZmVyc0NhcHRpb25zKGVuYWJsZWQpOwogICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGtpbmQsICJUZXh0RGVzY3JpcHRpb25zIikpCi0gICAgICAgIHNldHRp
bmdzKCktPnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKGVuYWJsZWQpOworICAgICAg
ICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldFVzZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucyhlbmFi
bGVkKTsKICAgICBlbHNlCiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICNlbHNlCkBAIC00NDUs
MTIgKzQ1MSwxNiBAQCBib29sIEludGVybmFsU2V0dGluZ3M6OnNob3VsZERpc3BsYXlUcmFjCiAg
ICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3NSZXR1cm4oZmFsc2UpOwogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmICghcGFnZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogY2FwdGlvblByZWZlcmVuY2VzID0gcGFn
ZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpOworCiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGtpbmQsICJTdWJ0aXRsZXMiKSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzKCktPnNo
b3VsZERpc3BsYXlTdWJ0aXRsZXMoKTsKKyAgICAgICAgcmV0dXJuIGNhcHRpb25QcmVmZXJlbmNl
cy0+dXNlclByZWZlcnNTdWJ0aXRsZXMoKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoa2lu
ZCwgIkNhcHRpb25zIikpCi0gICAgICAgIHJldHVybiBzZXR0aW5ncygpLT5zaG91bGREaXNwbGF5
Q2FwdGlvbnMoKTsKKyAgICAgICAgcmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZl
cnNDYXB0aW9ucygpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShraW5kLCAiVGV4dERlc2Ny
aXB0aW9ucyIpKQotICAgICAgICByZXR1cm4gc2V0dGluZ3MoKS0+c2hvdWxkRGlzcGxheVRleHRE
ZXNjcmlwdGlvbnMoKTsKKyAgICAgICAgcmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclBy
ZWZlcnNUZXh0RGVzY3JpcHRpb25zKCk7CiAKICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgcmV0
dXJuIGZhbHNlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ2MjEwKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDMtMTkgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgcG9ydHMg
c3BlY2lmaWMgdGV4dCB0cmFjayBtZW51CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTI4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMu
aHRtbDoKKyAgICAgICAgKiBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUt
bG9jYWxpemVkLmh0bWw6CisgICAgICAgICogbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMt
dHJhY2ttZW51LXNvcnRlZC5odG1sOgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNh
cHRpb25zLXRyYWNrbWVudS5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9tZWRpYS92aWRl
by1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtbG9jYWxp
emVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tY29u
dHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LXNvcnRlZC1leHBlY3RlZC50eHQ6CisKIDIwMTMtMDMt
MTkgIEpvaG4gSi4gQmFydG9uICA8am9obmpiYXJ0b25AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEFkZCBpZnJhbWUgb3B0aW9uIHRvIGluc3BlY3RlZFdpbmRvdy5ldmFs
KCkgZXh0ZW5zaW9uIEFQSQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMt
Y2FwdGlvbnMtdHJhY2ttZW51LWxvY2FsaXplZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1sb2NhbGl6ZWQuaHRt
bAkocmV2aXNpb24gMTQ2MjA1KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMt
Y2FwdGlvbnMtdHJhY2ttZW51LWxvY2FsaXplZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4
ICs0NCw4IEBACiAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIml0ZW0udGV4dENvbnRlbnQiLCAi
RW5nbGlzaCBDQyIpOwogCiAgICAgICAgICAgICBpdGVtID0gY2FwdGlvbnNFbnRyaWVzWzJdOwot
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+VGhpcmQgaXRlbSBpbiBjYXB0aW9ucyBtZW51
IHNob3VsZCBiZSBsYWJlbGxlZCAnVW5rbm93biciKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgiaXRlbS50ZXh0Q29udGVudCIsICJVbmtub3duIik7CisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIjxicj5UaGlyZCBpdGVtIGluIGNhcHRpb25zIG1lbnUgc2hvdWxkIGJlIGxhYmVsbGVkICdV
bmtub3duIFNESCciKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiaXRlbS50ZXh0Q29udGVu
dCIsICJVbmtub3duIFNESCIpOwogCiAgICAgICAgICAgICBpdGVtID0gY2FwdGlvbnNFbnRyaWVz
WzNdOwogICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+Rm91cnRoIGl0ZW0gaW4gY2FwdGlv
bnMgbWVudSBzaG91bGQgYmUgbGFiZWxsZWQgJ1Vua25vd24nIik7CkluZGV4OiBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJh
Y2ttZW51LXNvcnRlZC5odG1sCShyZXZpc2lvbiAxNDYyMDUpCisrKyBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTcsMTEgKzcsMTYgQEAKICAgICAgICAgPHNjcmlwdCBzcmM9InZpZGVvLXRlc3Qu
anMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0idHJhY2ttZW51LXRlc3QuanMiPjwv
c2NyaXB0PgogICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIHRlc3QgPSAwOwogICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCi0gICAgICAgICAgICBmdW5jdGlvbiB0ZXN0U29ydGVkTWVudSgp
CisgICAgICAgICAgICBmdW5jdGlvbiB0ZXh0VHJhY2tNZW51SXRlbXMoKQogICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIC8vIFNob3cgYW5kIGhpZGUgdGhlIG1lbnUgdG8gZm9yY2UgYSBy
ZWNhbGN1bGF0aW9uLgorICAgICAgICAgICAgICAgIGNsaWNrQ0NCdXR0b24oKTsKKyAgICAgICAg
ICAgICAgICBjbGlja0NDQnV0dG9uKCk7CisKICAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0
RWxlbWVudCA9IGdldFRyYWNrTGlzdEVsZW1lbnQoKTsKICAgICAgICAgICAgICAgICBpZiAoIXRy
YWNrTGlzdEVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwLDI1ICsy
NSw1NCBAQAogICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiVGhlcmUgc2hvdWxkIGJlIGEg
dWwgZWxlbWVudCBpbiB0cmFjayBsaXN0IG1lbnUiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2YXIgbGFzdFRyYWNrTGFi
ZWwgPSBudWxsOwotICAgICAgICAgICAgICAgIHZhciB0cmFja0xpc3RJdGVtcyA9IHRyYWNrTGlz
dFNlY3Rpb24ucXVlcnlTZWxlY3RvckFsbCgibGkiKTsKLSAgICAgICAgICAgICAgICBpZiAoIXRy
YWNrTGlzdEl0ZW1zIHx8IHRyYWNrTGlzdEl0ZW1zLmxlbmd0aCAhPSA3KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGZhaWxUZXN0KCJUaGVyZSBzaG91bGQgYmUgc2V2ZW4gbGkgZWxlbWVudHMgaW4g
dGhlIG1lbnUiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRyYWNrTGlzdEl0ZW1zLmxl
bmd0aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gdHJhY2tMaXN0SXRl
bXNbal07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChqID09IDApCi0gICAgICAgICAgICAgICAg
ICAgICAgICBsb2dSZXN1bHQoaXRlbS50ZXh0Q29udGVudCA9PSAiT2ZmIiwgIkZpcnN0IGl0ZW0g
c2hvdWxkIGJlIGxhYmVsbGVkIG9mZiIpOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0VHJhY2tMYWJlbCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2dSZXN1bHQoaXRlbS50ZXh0Q29udGVudCA+IGxhc3RUcmFja0xhYmVs
LCBsYXN0VHJhY2tMYWJlbCArICIgY29tZXMgYmVmb3JlICIgKyBpdGVtLnRleHRDb250ZW50KTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2dSZXN1bHQodHJ1ZSwgaXRlbS50ZXh0Q29udGVudCArICIgaXMgdGhlIGZpcnN0IHJlYWwg
aXRlbSBpbiB0aGUgbGlzdCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFRyYWNrTGFi
ZWwgPSBpdGVtLnRleHRDb250ZW50OwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRyYWNrTGlzdFNlY3Rpb24ucXVlcnlTZWxlY3RvckFsbCgibGkiKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gdGVzdFNvcnRlZE1lbnUoKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAodGVzdCkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIjxicj48aT4qKiBUZXN0IHdpdGggcHJlZmVycmVkIGxhbmd1YWdlIHNldCB0byBFbmds
aXNoLCB0cmFjayB0eXBlIHNldCB0byBjYXB0aW9uczwiICsgIi9pPiIpOworICAgICAgICAgICAg
ICAgICAgICBydW4oImludGVybmFscy5zZXR0aW5ncy5zZXRTaG91bGREaXNwbGF5VHJhY2tLaW5k
KCdDYXB0aW9ucycsIHRydWUpIik7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1l
b3V0KHRlc3RTb3J0ZWRNZW51LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIHRyYWNrTWVudUl0ZW1z
ID0gdGV4dFRyYWNrTWVudUl0ZW1zKCk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidHJhY2tNZW51SXRlbXNbMF0udGV4dENvbnRlbnQiLCAiT2ZmIik7CisgICAgICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRlbXNbMV0udGV4dENvbnRlbnQiLCAidSAo
RW5nbGlzaCkgU0RIIik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tN
ZW51SXRlbXNbMl0udGV4dENvbnRlbnQiLCAieSAoRW5nbGlzaC1BdXN0cmFsaWEpIFNESCIpOwor
ICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zWzNdLnRleHRD
b250ZW50IiwgInYgKEVuZ2xpc2gpIik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidHJhY2tNZW51SXRlbXNbNF0udGV4dENvbnRlbnQiLCAieCAoRW5nbGlzaC1BdXN0cmFsaWEp
Iik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRlbXNbNV0u
dGV4dENvbnRlbnQiLCAidyAoSmFwYW5lc2UpIFNESCIpOworICAgICAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zWzZdLnRleHRDb250ZW50IiwgInogKEphcGFuZXNl
KSIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3Mu
bGVuZ3RoIiwgNik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51
SXRlbXMubGVuZ3RoIiwgNyk7CisKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8
YnI+PGk+KiogQ2hhbmdlIHByZWZlcnJlZCBsYW5ndWFnZSB0byBKYXBhbmVzZSwgY2hhbmdlIHBy
ZWZlcmVuY2UgdG8gc3VidGl0bGVzPCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAgICAgIHJ1
bigiaW50ZXJuYWxzLnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoWydqYSddKSIpOworICAgICAg
ICAgICAgICAgICAgICBydW4oImludGVybmFscy5zZXR0aW5ncy5zZXRTaG91bGREaXNwbGF5VHJh
Y2tLaW5kKCdDYXB0aW9ucycsIGZhbHNlKSIpOworICAgICAgICAgICAgICAgICAgICBydW4oImlu
dGVybmFscy5zZXR0aW5ncy5zZXRTaG91bGREaXNwbGF5VHJhY2tLaW5kKCdTdWJ0aXRsZXMnLCB0
cnVlKSIpOworCisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHRlc3RTb3J0
ZWRNZW51LCAwKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNh
c2UgMjoKKyAgICAgICAgICAgICAgICAgICAgdHJhY2tNZW51SXRlbXMgPSB0ZXh0VHJhY2tNZW51
SXRlbXMoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVt
c1swXS50ZXh0Q29udGVudCIsICJPZmYiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJ0cmFja01lbnVJdGVtc1sxXS50ZXh0Q29udGVudCIsICJ6IChKYXBhbmVzZSkiKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1syXS50ZXh0Q29u
dGVudCIsICJ2IChFbmdsaXNoKSIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InRyYWNrTWVudUl0ZW1zWzNdLnRleHRDb250ZW50IiwgInggKEVuZ2xpc2gtQXVzdHJhbGlhKSIp
OworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3MubGVu
Z3RoIiwgNik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRl
bXMubGVuZ3RoIiwgNCk7CisKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsK
KyAgICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisKKyAgICAgICAg
ICAgICAgICArK3Rlc3Q7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0
YXJ0KCkKQEAgLTUxLDE0ICs4NSwxNCBAQAogICAgIDwvaGVhZD4KIAogICAgIDxib2R5IG9ubG9h
ZD0ic3RhcnQoKSI+Ci0gICAgICAgIDxwPlRlc3QgdGhhdCBjYXB0aW9ucyBhbmQgc3VidGl0bGVz
IGFyZSBzb3J0ZWQgaW4gdGhlIG1lbnUuPC9wPgorICAgICAgICA8cD5UZXN0IHRoYXQgY2FwdGlv
bnMgYW5kIHN1YnRpdGxlcyBhcmUgc29ydGVkIGluIHRoZSBtZW51IGFjY29yZGluZyB0byB1c2Vy
IHByZWZlcmVuY2VzLjwvcD4KICAgICAgICAgPHZpZGVvIHdpZHRoPSI1MDAiIGhlaWdodD0iMzAw
IiBjb250cm9scz4KLSAgICAgICAgICAgIDx0cmFjayBsYWJlbD0iYyIga2luZD0iY2FwdGlvbnMi
IHNyYz0idHJhY2svY2FwdGlvbnMtd2VidnR0L2NhcHRpb25zLWZhc3QudnR0IiBzcmNsYW5nPSJq
YSI+Ci0gICAgICAgICAgICA8dHJhY2sgbGFiZWw9ImIiIGtpbmQ9ImNhcHRpb25zIiBzcmM9InRy
YWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZW4tYXUiPgot
ICAgICAgICAgICAgPHRyYWNrIGxhYmVsPSJhIiBraW5kPSJjYXB0aW9ucyIgc3JjPSJ0cmFjay9j
YXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9ImVuIj4KLSAgICAgICAg
ICAgIDx0cmFjayBsYWJlbD0iYiIga2luZD0ic3VidGl0bGVzIiBzcmM9InRyYWNrL2NhcHRpb25z
LXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iamEiPgotICAgICAgICAgICAgPHRy
YWNrIGxhYmVsPSJhIiBraW5kPSJzdWJ0aXRsZXMiIHNyYz0idHJhY2svY2FwdGlvbnMtd2VidnR0
L2NhcHRpb25zLWZhc3QudnR0IiBzcmNsYW5nPSJlbi1hdSI+Ci0gICAgICAgICAgICA8dHJhY2sg
bGFiZWw9ImMiIGtpbmQ9InN1YnRpdGxlcyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2Fw
dGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9ImVuIj4KKyAgICAgICAgICAgIDx0cmFjayBsYWJlbD0i
eiIga2luZD0ic3VidGl0bGVzIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1m
YXN0LnZ0dCIgc3JjbGFuZz0iamEiPgorICAgICAgICAgICAgPHRyYWNrIGxhYmVsPSJ5IiBraW5k
PSJjYXB0aW9ucyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQi
IHNyY2xhbmc9ImVuLWF1Ij4KKyAgICAgICAgICAgIDx0cmFjayBsYWJlbD0ieCIga2luZD0ic3Vi
dGl0bGVzIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3Jj
bGFuZz0iZW4tYXUiPgorICAgICAgICAgICAgPHRyYWNrIGxhYmVsPSJ3IiBraW5kPSJjYXB0aW9u
cyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9
ImphIj4KKyAgICAgICAgICAgIDx0cmFjayBsYWJlbD0idiIga2luZD0ic3VidGl0bGVzIiBzcmM9
InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZW4iPgor
ICAgICAgICAgICAgPHRyYWNrIGxhYmVsPSJ1IiBraW5kPSJjYXB0aW9ucyIgc3JjPSJ0cmFjay9j
YXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9ImVuIj4KICAgICAgICAg
PC92aWRlbz4KICAgICA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUuaHRtbAkocmV2
aXNpb24gMTQ2MjA1KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlv
bnMtdHJhY2ttZW51Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE1LDYgKzE1LDcgQEAKICAgICAg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiogQWRkIGFub3RoZXIgdGV4dCB0cmFjay4i
KTsKICAgICAgICAgICAgICAgICBydW4oJ3ZpZGVvLmFkZFRleHRUcmFjaygiY2FwdGlvbnMiLCAi
Q29tbWVudGFyeSIsICJydSIpJyk7CiAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQo
dHVybkNhcHRpb25zT24sIDEwMCk7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gdHJhY2tNZW51TGlzdCgpCkBA
IC0zOSwxMCArNDAsMTAgQEAKIAogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdE1lbnUoKQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciB0cmFja0xpc3RJdGVtcyA9IHRyYWNrTWVu
dUxpc3QoKTsKKyAgICAgICAgICAgICAgICB0cmFja0xpc3RJdGVtcyA9IHRyYWNrTWVudUxpc3Qo
KTsKICAgICAgICAgICAgICAgICB2YXIgZXhwZWN0ZWRJdGVtQ291bnQgPSB2aWRlby50ZXh0VHJh
Y2tzLmxlbmd0aCArIDE7CiAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUaGVyZSBzaG91
bGQgYmUgIiArIGV4cGVjdGVkSXRlbUNvdW50ICsgIiBpdGVtcyBpbiB0aGUgbWVudS4iKTsKLSAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQodHJhY2tMaXN0SXRlbXMubGVuZ3RoLCBleHBlY3Rl
ZEl0ZW1Db3VudCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja0xpc3RJdGVt
cy5sZW5ndGgiLCBleHBlY3RlZEl0ZW1Db3VudCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIHNlbGVjdENhcHRpb25NZW51SXRlbShpbmRleCwgbmV4dFN0ZXApCkBAIC02
Miw3ICs2Myw3IEBACiAgICAgICAgICAgICBmdW5jdGlvbiB0dXJuQ2FwdGlvbnNPbigpCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIqKiogVHVybmluZyBjYXB0
aW9ucyBvbiIpOwotICAgICAgICAgICAgICAgIC8vIENsaWNrIG9uIHRoZSB0aGlyZCBpdGVtLCB3
aGljaCBpcyB0aGUgc2Vjb25kIHRyYWNrIChPZmYgaXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIG1l
bnUpCisgICAgICAgICAgICAgICAgLy8gQ2xpY2sgb24gdGhlIHNlY29uZCBpdGVtLCB3aGljaCBp
cyB0aGUgc2Vjb25kIHRyYWNrIChPZmYgaXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIG1lbnUpCiAg
ICAgICAgICAgICAgICAgc2VsZWN0Q2FwdGlvbk1lbnVJdGVtKDIsIHRlc3RDYXB0aW9uc1Zpc2li
bGUpOwogICAgICAgICAgICAgfQogCkBAIC0xMTcsOCArMTE4LDggQEAKICAgICA8Ym9keSBvbmxv
YWQ9InN0YXJ0KCkiPgogICAgICAgICA8cD5UZXN0IHRoYXQgd2UgYXJlIGFibGUgdG8gdHJpZ2dl
ciB0aGUgbGlzdCBvZiBjYXB0aW9ucywgYW5kIHNlbGVjdCBmcm9tIHRoZSBsaXN0LjwvcD4KICAg
ICAgICAgPHZpZGVvIHdpZHRoPSI1MDAiIGhlaWdodD0iMzAwIiBjb250cm9scz4KKyAgICAgICAg
ICAgIDx0cmFjayBraW5kPSJjYXB0aW9ucyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2Fw
dGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9ImZyIj4KICAgICAgICAgICAgIDx0cmFjayBraW5kPSJj
YXB0aW9ucyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNy
Y2xhbmc9ImVuIj4KLSAgICAgICAgICAgIDx0cmFjayBraW5kPSJjYXB0aW9ucyIgc3JjPSJ0cmFj
ay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9ImVuLWF1Ij4KICAg
ICAgICAgICAgIDx0cmFjayBraW5kPSJjYXB0aW9ucyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2
dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9ImphIj4KICAgICAgICAgPC92aWRlbz4KICAg
ICA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay11c2VyLXByZWZl
cmVuY2VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay11c2VyLXByZWZlcmVuY2VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ2MjA1KQor
KysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4LDEwICsxOCwxMCBAQCBFWFBFQ1RFRCAoZXZlbnQu
dGFyZ2V0LnJlYWR5U3RhdGUgPT0gJzInCiAKIFRlc3QgMzogc2VsZWN0ICdmcicgdHJhY2sgZnJv
bSBtZW51CiAtIHNob3cgY2FwdGlvbnMgbWVudS4KLUVYUEVDVEVEICh0cmFja01lbnVJdGVtc1sx
XS5jbGFzc05hbWUgPT0gJycpIE9LCi1FWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbMl0uY2xhc3NO
YW1lID09ICcnKSBPSwotRVhQRUNURUQgKHRyYWNrTWVudUl0ZW1zWzNdLmNsYXNzTmFtZSA9PSAn
c2VsZWN0ZWQnKSBPSwotLSBjbGljayBvbiBtZW51IGl0ZW0gMi4KK0VYUEVDVEVEICh0cmFja01l
bnVJdGVtc1ttZW51SW5kZXhGb3JMYW5ndWFnZSgnRnJlbmNoJyldLmNsYXNzTmFtZSA9PSAnJykg
T0sKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtc1ttZW51SW5kZXhGb3JMYW5ndWFnZSgnRW5nbGlz
aCcpXS5jbGFzc05hbWUgPT0gJycpIE9LCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbbWVudUlu
ZGV4Rm9yTGFuZ3VhZ2UoJ05vcndlZ2lhbicpXS5jbGFzc05hbWUgPT0gJ3NlbGVjdGVkJykgT0sK
Ky0gY2xpY2sgb24gJ0ZyZW5jaCcgbWVudSBpdGVtLgogRVZFTlQobG9hZCkKIEVYUEVDVEVEIChl
dmVudC50YXJnZXQuc3JjbGFuZyA9PSAnZnInKSBPSwogRVhQRUNURUQgKGV2ZW50LnRhcmdldC5y
ZWFkeVN0YXRlID09ICcyJykgT0sKQEAgLTM4LDcgKzM4LDcgQEAgRVhQRUNURUQgKHZpZGVvLnRl
eHRUcmFja3NbMl0ubGFuZ3VhZ2UgPQogCiBUZXN0IDU6IHR1cm5pbmcgY2FwdGlvbnMgb2ZmIGZy
b20gbWVudSBkaXNhYmxlcyBjYXB0aW9uIHNlbGVjdGlvbgogLSBzaG93IGNhcHRpb25zIG1lbnUu
Ci0tIGNsaWNrIG9uIG1lbnUgaXRlbSAwLgorLSBjbGljayBvbiAnT2ZmJyBtZW51IGl0ZW0uCiAt
IGNyZWF0aW5nIHRyYWNrcyBmb3I6IFtydSxqcCxlbl0uCiBFWFBFQ1RFRCAodmlkZW8udGV4dFRy
YWNrc1swXS5tb2RlID09ICdkaXNhYmxlZCcpIE9LCiBFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNr
c1sxXS5tb2RlID09ICdkaXNhYmxlZCcpIE9LCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay11c2VyLXByZWZlcmVuY2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sCShyZXZpc2lvbiAxNDYyMDUp
CisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay11c2VyLXByZWZlcmVuY2VzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCwyNiBAQAogICAgICAgICAgICAgICAgIHJldHVy
biB0cmFja0xpc3RJdGVtczsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24g
c2VsZWN0Q2FwdGlvbk1lbnVJdGVtKGluZGV4KQorICAgICAgICAgICAgZnVuY3Rpb24gbWVudUlu
ZGV4Rm9yTGFuZ3VhZ2UobGFuZ3VhZ2UpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCItIGNsaWNrIG9uIG1lbnUgaXRlbSAiICsgaW5kZXggKyAiLiIpOwogICAg
ICAgICAgICAgICAgIHZhciB0cmFja01lbnVJdGVtcyA9IHRyYWNrTWVudUxpc3QoKTsKKyAgICAg
ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHJhY2tNZW51SXRlbXMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHRyYWNrTWVudUl0ZW1zW2ldLnRleHRDb250ZW50Lmlu
ZGV4T2YobGFuZ3VhZ2UpID49IDApCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIChpIDwgdHJhY2tNZW51SXRl
bXMubGVuZ3RoKSA/IGkgOiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gc2VsZWN0Q2FwdGlvbk1lbnVJdGVtKGxhbmd1YWdlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHZhciB0cmFja01lbnVJdGVtcyA9IHRyYWNrTWVudUxpc3QoKTsKKyAgICAgICAg
ICAgICAgICB2YXIgaW5kZXggPSBtZW51SW5kZXhGb3JMYW5ndWFnZShsYW5ndWFnZSk7CisgICAg
ICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICAgICAgICAgICAgICBmYWlsVGVz
dCgiTWVudSBpdGVtICIgKyBsYW5ndWFnZSArICIgbm90IGZvdW5kIGluIHRyYWNrIGxpc3QgbWVu
dS4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiLSBjbGljayBvbiAnIiArIGxhbmd1YWdlICsg
IicgbWVudSBpdGVtLiIpOwogICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZFRyYWNrSXRlbSA9
IHRyYWNrTWVudUl0ZW1zW2luZGV4XTsKICAgICAgICAgICAgICAgICB2YXIgYm91bmRpbmdSZWN0
ID0gc2VsZWN0ZWRUcmFja0l0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAg
ICAgICAgdmFyIHggPSBib3VuZGluZ1JlY3QubGVmdCArIGJvdW5kaW5nUmVjdC53aWR0aCAvIDI7
CkBAIC03MCw3ICs4Niw3IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdmFyIHRy
YWNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHJhY2snKTsKICAgICAgICAgICAgICAgICB0
cmFjay5zZXRBdHRyaWJ1dGUoJ2tpbmQnLCAiY2FwdGlvbnMiKTsKLSAgICAgICAgICAgICAgICB0
cmFjay5zcmMgPSAnZGF0YTp0ZXh0L3Z0dCwnK2VuY29kZVVSSUNvbXBvbmVudCgiV0VCVlRUXG5c
bjAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDEuMDAwXG5DYXB0aW9uIDFcbiIpOworICAgICAgICAg
ICAgICAgIHRyYWNrLnNyYyA9ICdkYXRhOnRleHQvdnR0LCcgKyBlbmNvZGVVUklDb21wb25lbnQo
IldFQlZUVFxuXG4wMDowMDowMC4wMDAgLS0+IDAwOjAwOjAxLjAwMFxuQ2FwdGlvbiAxXG4iKTsK
ICAgICAgICAgICAgICAgICB0cmFjay5zZXRBdHRyaWJ1dGUoJ3NyY2xhbmcnLCBsYW5ndWFnZSk7
CiAgICAgICAgICAgICAgICAgdHJhY2suc2V0QXR0cmlidXRlKCdvbmxvYWQnLCAndHJhY2tMb2Fk
ZWQoKScpOwogICAgICAgICAgICAgICAgIGlmIChpc0RlZmF1bHQpIHsKQEAgLTEwOCwyMCArMTI0
LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2Fz
ZSAzOgotICAgICAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgZGVidWcgc2V0dGluZyBzbyBp
dCBpc24ndCBjb25zaWRlcmVkIGluIHRoZSB0cmFjayBzZWxlY3Rpb24gbG9naWMKLSAgICAgICAg
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFNob3VsZERpc3BsYXlUcmFja0tpbmQo
J0NhcHRpb25zJywgZmFsc2UpOwotCiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
PGJyPlRlc3QgMzogc2VsZWN0ICdmcicgdHJhY2sgZnJvbSBtZW51Iik7CiAgICAgICAgICAgICAg
ICAgICAgIHNob3dDYXB0aW9uTWVudSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgdHJhY2tNZW51SXRl
bXMgPSB0cmFja01lbnVMaXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dHJhY2tNZW51SXRlbXNbMV0uY2xhc3NOYW1lIiwgIiIpOwotICAgICAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zWzJdLmNsYXNzTmFtZSIsICIiKTsKLSAgICAgICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1szXS5jbGFzc05hbWUiLCAi
c2VsZWN0ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJ
dGVtc1ttZW51SW5kZXhGb3JMYW5ndWFnZSgnRnJlbmNoJyldLmNsYXNzTmFtZSIsICIiKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1ttZW51SW5kZXhG
b3JMYW5ndWFnZSgnRW5nbGlzaCcpXS5jbGFzc05hbWUiLCAiIik7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRlbXNbbWVudUluZGV4Rm9yTGFuZ3VhZ2UoJ05v
cndlZ2lhbicpXS5jbGFzc05hbWUiLCAic2VsZWN0ZWQiKTsKIAotICAgICAgICAgICAgICAgICAg
ICBzZWxlY3RDYXB0aW9uTWVudUl0ZW0oMik7CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdENh
cHRpb25NZW51SXRlbSgiRnJlbmNoIik7CiAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkTGFu
Z3VhZ2UgPSAnZnInOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtMTQzLDcgKzE1
Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2Fz
ZSA3OgotICAgICAgICAgICAgICAgICAgICBzZWxlY3RDYXB0aW9uTWVudUl0ZW0oMCk7CisgICAg
ICAgICAgICAgICAgICAgIHNlbGVjdENhcHRpb25NZW51SXRlbSgiT2ZmIik7CiAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZVRyYWNrRWxlbWVudHMoWyAncnUnLCAnanAnLCAnZW4nXSk7CiAgICAg
ICAgICAgICAgICAgICAgIHRpbWVyID0gc2V0VGltZW91dChuZXh0U3RlcCwgMTAwKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVk
aWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2Fw
dGlvbnMtdHJhY2ttZW51LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ2MjA1KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVu
dS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcsOSArNywxMCBAQCBSVU4oaW50ZXJu
YWxzLnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoCiAKICoqKiBBZGQgYW5vdGhlciB0ZXh0IHRy
YWNrLgogUlVOKHZpZGVvLmFkZFRleHRUcmFjaygiY2FwdGlvbnMiLCAiQ29tbWVudGFyeSIsICJy
dSIpKQorCiAqKiogVHVybmluZyBjYXB0aW9ucyBvbgogVGhlcmUgc2hvdWxkIGJlIDUgaXRlbXMg
aW4gdGhlIG1lbnUuCi1FWFBFQ1RFRCAoNSA9PSAnNScpIE9LCitFWFBFQ1RFRCAodHJhY2tMaXN0
SXRlbXMubGVuZ3RoID09ICc1JykgT0sKIEVYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0
aCA9PSAnNCcpIE9LCiBUcmFjayAwIHNob3VsZCBiZSBzaG93aW5nCiBFWFBFQ1RFRCAodmlkZW8u
dGV4dFRyYWNrc1swXS5tb2RlID09ICdzaG93aW5nJykgT0sKQEAgLTI1LDcgKzI2LDcgQEAgRVhQ
RUNURUQgKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLAogUlVOKHZpZGVvLnJlbW92ZUNo
aWxkKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInRyYWNrIilbMF0pKQogKioqIFR1cm5pbmcg
Y2FwdGlvbnMgb2ZmCiBUaGVyZSBzaG91bGQgYmUgNCBpdGVtcyBpbiB0aGUgbWVudS4KLUVYUEVD
VEVEICg0ID09ICc0JykgT0sKK0VYUEVDVEVEICh0cmFja0xpc3RJdGVtcy5sZW5ndGggPT0gJzQn
KSBPSwogRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3MubGVuZ3RoID09ICczJykgT0sKIFRyYWNr
IDAgc2hvdWxkIGJlIGRpc2FibGVkCiBFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5tb2Rl
ID09ICdkaXNhYmxlZCcpIE9LCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEv
dmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWxvY2FsaXplZC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWNvbnRy
b2xzLWNhcHRpb25zLXRyYWNrbWVudS1sb2NhbGl6ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
NDYyMDUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tY29udHJvbHMt
Y2FwdGlvbnMtdHJhY2ttZW51LWxvY2FsaXplZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEzLDggKzEzLDggQEAgRVhQRUNURUQgKGl0ZW0udGV4dENvbnRlbnQgPT0gJ09mZicpIE9L
CiBTZWNvbmQgaXRlbSBpbiBjYXB0aW9ucyBtZW51IHNob3VsZCBiZSBsYWJlbGxlZCAnRW5nbGlz
aCBDQycKIEVYUEVDVEVEIChpdGVtLnRleHRDb250ZW50ID09ICdFbmdsaXNoIENDJyksIE9CU0VS
VkVEICdVbmtub3duJyBGQUlMCiAKLVRoaXJkIGl0ZW0gaW4gY2FwdGlvbnMgbWVudSBzaG91bGQg
YmUgbGFiZWxsZWQgJ1Vua25vd24nCi1FWFBFQ1RFRCAoaXRlbS50ZXh0Q29udGVudCA9PSAnVW5r
bm93bicpIE9LCitUaGlyZCBpdGVtIGluIGNhcHRpb25zIG1lbnUgc2hvdWxkIGJlIGxhYmVsbGVk
ICdVbmtub3duIFNESCcKK0VYUEVDVEVEIChpdGVtLnRleHRDb250ZW50ID09ICdVbmtub3duIFNE
SCcpIE9LCiAKIEZvdXJ0aCBpdGVtIGluIGNhcHRpb25zIG1lbnUgc2hvdWxkIGJlIGxhYmVsbGVk
ICdVbmtub3duJwogVHlwZUVycm9yOiAndW5kZWZpbmVkJyBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdpdGVtLnRleHRDb250ZW50JykKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8t
Y29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LXNvcnRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE0NjIwNSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS92aWRlby1jb250cm9s
cy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSwxNSArMSwzMiBAQAotVGVzdCB0aGF0IGNhcHRpb25zIGFuZCBzdWJ0aXRsZXMgYXJlIHNv
cnRlZCBpbiB0aGUgbWVudS4KK1Rlc3QgdGhhdCBjYXB0aW9ucyBhbmQgc3VidGl0bGVzIGFyZSBz
b3J0ZWQgaW4gdGhlIG1lbnUgYWNjb3JkaW5nIHRvIHVzZXIgcHJlZmVyZW5jZXMuCiAKIEVWRU5U
KGNhbnBsYXl0aHJvdWdoKQogCiAqKiogU2V0IHRoZSB1c2VyIGxhbmd1YWdlIHByZWZlcmVuY2Uu
CiBSVU4oaW50ZXJuYWxzLnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoWydlbiddKSkKLUZpcnN0
IGl0ZW0gc2hvdWxkIGJlIGxhYmVsbGVkIG9mZiBPSwotYSBFbmdsaXNoIChBdXN0cmFsaWEpIGlz
IHRoZSBmaXJzdCByZWFsIGl0ZW0gaW4gdGhlIGxpc3QgT0sKLWEgRW5nbGlzaCAoQXVzdHJhbGlh
KSBjb21lcyBiZWZvcmUgYSBFbmdsaXNoIFNESCBPSwotYSBFbmdsaXNoIFNESCBjb21lcyBiZWZv
cmUgYiBFbmdsaXNoIChBdXN0cmFsaWEpIFNESCBPSwotYiBFbmdsaXNoIChBdXN0cmFsaWEpIFNE
SCBjb21lcyBiZWZvcmUgYiBKYXBhbmVzZSBPSwotYiBKYXBhbmVzZSBjb21lcyBiZWZvcmUgYyBF
bmdsaXNoIE9LCi1jIEVuZ2xpc2ggY29tZXMgYmVmb3JlIGMgSmFwYW5lc2UgU0RIIE9LCisKKyoq
IFRlc3Qgd2l0aCBwcmVmZXJyZWQgbGFuZ3VhZ2Ugc2V0IHRvIEVuZ2xpc2gsIHRyYWNrIHR5cGUg
c2V0IHRvIGNhcHRpb25zCitSVU4oaW50ZXJuYWxzLnNldHRpbmdzLnNldFNob3VsZERpc3BsYXlU
cmFja0tpbmQoJ0NhcHRpb25zJywgdHJ1ZSkpCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbMF0u
dGV4dENvbnRlbnQgPT0gJ09mZicpIE9LCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbMV0udGV4
dENvbnRlbnQgPT0gJ3UgKEVuZ2xpc2gpIFNESCcpIE9LCitFWFBFQ1RFRCAodHJhY2tNZW51SXRl
bXNbMl0udGV4dENvbnRlbnQgPT0gJ3kgKEVuZ2xpc2gtQXVzdHJhbGlhKSBTREgnKSBPSworRVhQ
RUNURUQgKHRyYWNrTWVudUl0ZW1zWzNdLnRleHRDb250ZW50ID09ICd2IChFbmdsaXNoKScpIE9L
CitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbNF0udGV4dENvbnRlbnQgPT0gJ3ggKEVuZ2xpc2gt
QXVzdHJhbGlhKScpIE9LCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbNV0udGV4dENvbnRlbnQg
PT0gJ3cgKEphcGFuZXNlKSBTREgnKSBPSworRVhQRUNURUQgKHRyYWNrTWVudUl0ZW1zWzZdLnRl
eHRDb250ZW50ID09ICd6IChKYXBhbmVzZSknKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFj
a3MubGVuZ3RoID09ICc2JykgT0sKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtcy5sZW5ndGggPT0g
JzcnKSBPSworCisqKiBDaGFuZ2UgcHJlZmVycmVkIGxhbmd1YWdlIHRvIEphcGFuZXNlLCBjaGFu
Z2UgcHJlZmVyZW5jZSB0byBzdWJ0aXRsZXMKK1JVTihpbnRlcm5hbHMuc2V0VXNlclByZWZlcnJl
ZExhbmd1YWdlcyhbJ2phJ10pKQorUlVOKGludGVybmFscy5zZXR0aW5ncy5zZXRTaG91bGREaXNw
bGF5VHJhY2tLaW5kKCdDYXB0aW9ucycsIGZhbHNlKSkKK1JVTihpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0U2hvdWxkRGlzcGxheVRyYWNrS2luZCgnU3VidGl0bGVzJywgdHJ1ZSkpCitFWFBFQ1RFRCAo
dHJhY2tNZW51SXRlbXNbMF0udGV4dENvbnRlbnQgPT0gJ09mZicpIE9LCitFWFBFQ1RFRCAodHJh
Y2tNZW51SXRlbXNbMV0udGV4dENvbnRlbnQgPT0gJ3ogKEphcGFuZXNlKScpIE9LCitFWFBFQ1RF
RCAodHJhY2tNZW51SXRlbXNbMl0udGV4dENvbnRlbnQgPT0gJ3YgKEVuZ2xpc2gpJykgT0sKK0VY
UEVDVEVEICh0cmFja01lbnVJdGVtc1szXS50ZXh0Q29udGVudCA9PSAneCAoRW5nbGlzaC1BdXN0
cmFsaWEpJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCA9PSAnNicpIE9L
CitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXMubGVuZ3RoID09ICc0JykgT0sKKwogRU5EIE9GIFRF
U1QKIAo=
</data>
<flag name="commit-queue"
          id="215742"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194054</attachid>
            <date>2013-03-20 07:49:03 -0700</date>
            <delta_ts>2013-03-20 08:42:49 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>patch_15.txt</filename>
            <type>text/plain</type>
            <size>82196</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjIxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxMy0wMy0xOSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyBz
cGVjaWZpYyB0ZXh0IHRyYWNrIG1lbnUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZXhpc3RpbmcgdGVzdHMgdXBkYXRlZCBmb3Ig
Y2hhbmdlcy4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczog
QWRkIGxvY2FsaXphYmxlIHN0cmluZ3MgZm9yIHRleHQgdHJhY2sgbmFtZXMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IHVzZXJQcmVmZXJzQ2FwdGlvbnMgLT4gc2hvdWxk
U2hvd0NhcHRpb25zLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0U2Vs
ZWN0ZWRUZXh0VHJhY2spOiB0b2dnbGVUcmFja0F0SW5kZXggLT4gc2V0U2VsZWN0ZWRUZXh0VHJh
Y2suCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyUHJlZmVyc0NhcHRp
b25zKTogdXNlclByZWZlcnNDYXB0aW9ucyAtPiBzaG91bGRTaG93Q2FwdGlvbnMuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tL
aW5kKTogR2V0IHByZWZlcmVuY2VzIGZyb20gQ2FwdGlvblVzZXJQcmVmZXJlbmNlcworICAgICAg
ICAgICAgaW5zdGVhZCBvZiBmcm9tIFNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2spOiBSZW5hbWVkIGZyb20gdG9nZ2xlVHJh
Y2tBdEluZGV4LiBOb3cgdGFrZXMKKyAgICAgICAgICAgIGEgVGV4dFRyYWNrKiBpbnN0ZWFkIG9m
IGFuIGludC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWQpOiBEb24ndCBmb3JjZSBhIHJlY2FsY3VsYXRpb24gdW5sZXNzIAorICAg
ICAgICAgICAgY2FwdGlvbnMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgdG8gYXZvaWQgdW5uZWNlc3Nh
cnkgdGhyYXNoLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKTogVXNlIHRoZSBtZW51IHRvIHRyYWNrCisgICAgICAgICAgICBtYXAgaW5zdGVh
ZCBvZiBqdXN0IHRoZSB0cmFjayBpbmRleC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRlRGlzcGxheSk6IEJ1aWxkIGFu
ZCBjb25maWd1cmUgdGhlCisgICAgICAgICAgICBtZW51IGZyb20gdGhlIG1lbnUgdG8gdHJhY2sg
bWFwLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xp
c3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSk6IFN0YXJ0IHdpdGggYSBsaXN0CisgICAg
ICAgICAgICBvZiB0cmFja3MgYWxyZWFkeSBzb3J0ZWQgYWNjb3JkaW5nIHRvIHBsYXRmb3JtIHNw
ZWNpZmljIHJ1bGVzLiBCdWlsZCBhIG1lbnUgdG8gdHJhY2sgbWFwCisgICAgICAgICAgICBzbyB0
cmFja3MgYXJlIHJldGFpbmVkIHdoaWxlIHRoZSBtZW51IGlzIHZpc2libGUuCisgICAgICAgICog
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDoKKworICAgICAgICAqIGh0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6
dGV4dFRyYWNrUHJlZmVyZW5jZXNDaGFuZ2VkKTogQ2FsbCBjbG9zZWRDYXB0aW9uVHJhY2tzQ2hh
bmdlZCBzbyB0aGUKKyAgICAgICAgICAgIHRyYWNrIG1lbnUgd2lsbCBiZSByZWJ1aWx0IGJlZm9y
ZSBpdCBpcyBzaG93biBhZ2Fpbi4KKworICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRy
YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6Y29udGFpbnNPbmx5
Rm9yY2VkU3VidGl0bGVzKTogTmV3LCBwYXNzdGhyb3VnaCB0byB0aGUgcHJpdmF0ZSB0cmFjay4K
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6aXNNYWluUHJvZ3JhbUNvbnRlbnQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6aXNFYXN5VG9SZWFk
KTogRGl0dG8uCisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaDoKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0
VHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmNvbnRhaW5z
KTogTmV3LgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oOgorCisgICAgICAg
ICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMpOiBQdWxsIGluIGZy
b20gLmggZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp+
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6c2hvdWxkU2hvd0NhcHRpb25zKTogUmVuYW1lZCBmcm9tIHVzZXJQ
cmVmZXJzQ2FwdGlvbnMuIAorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6c2V0U2hvdWxkU2hvd0NhcHRpb25zKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclBy
ZWZlcnNTdWJ0aXRsZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzU3VidGl0bGVzKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVz
ZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2Fw
dGlvblVzZXJQcmVmZXJlbmNlczo6ZGlzcGxheU5hbWVGb3JUcmFjayk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c29ydGVkVHJhY2tMaXN0Rm9yTWVu
dSk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oOgorCisg
ICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmg6CisgICAgICAgICogcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6c2hvdWxkU2hvd0NhcHRpb25zKTogUmVuYW1lZCBmcm9tIHVz
ZXJQcmVmZXJzQ2FwdGlvbnMuIAorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYzo6dXNlclByZWZlcnNDYXB0aW9ucyk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzU3VidGl0bGVzKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjp0cmFja0Rpc3BsYXlOYW1lKTogVXBkYXRlIGxvZ2ljIHVzZWQgdG8gYnVp
bGQgdHJhY2sgdGl0bGUuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjOjpkaXNwbGF5TmFtZUZvclRyYWNrKTogQ2FsbCB0cmFja0Rpc3BsYXlOYW1lLgorICAgICAg
ICAoV2ViQ29yZTo6dGV4dFRyYWNrQ29tcGFyZSk6IFRleHQgdHJhY2sgdGl0bGUgc29ydCBjb21w
YXJpc29uIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYzo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSk6IE5ldy4gU29ydCB0aGUgbGlzdCBvZiB0cmFj
a3MKKyAgICAgICAgICAgIGFjY29yZGluZyB0byB0aXRsZSwgbGFuZ3VhZ2UsIGFuZCB1c2VyIHBy
ZWZlcmVuY2VzLgorCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZGlzcGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZSk6IERvbid0IGxlYWsgdGhlIENG
TG9jYWxlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRUcmFja0NvdW50cnlBbmRMYW5ndWFnZU1lbnVJdGVt
VGV4dCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRUcmFja0xhbmd1YWdlTWVudUl0ZW1U
ZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjbG9zZWRDYXB0aW9uVHJhY2tNZW51SXRl
bVRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNkaFRyYWNrTWVudUl0ZW1UZXh0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjplYXN5UmVhZGVyVHJhY2tNZW51SXRlbVRleHQpOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMp
OiBOZXcsIHJldHVybiBBVkZvdW5kYXRpb24gcHJvcGVydHkuCisgICAgICAgIChXZWJDb3JlOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQzo6aXNNYWluUHJvZ3JhbUNvbnRlbnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjppc0Vh
c3lUb1JlYWQpOiBEaXR0by4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRTaG91bGREaXNwbGF5
VHJhY2tLaW5kKTogU2V0IHNldHRpbmcgdmlhIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMKKyAgICAg
ICAgICAgIGluc3RlYWQgb2YgZnJvbSBTZXR0aW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsU2V0dGluZ3M6OnNob3VsZERpc3BsYXlUcmFja0tpbmQpOiBHZXQgc2V0dGluZyBmcm9tIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXMKKyAgICAgICAgICAgIGluc3RlYWQgb2YgZnJvbSBTZXR0aW5n
cy4KKwogMjAxMy0wMy0xOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KIAogICAgICAgICBbUXRdIFN1cHBvcnQga2VybmluZyBpbiBmYXN0IHBhdGggZm9u
dCByZW5kZXJpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFi
bGUuc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xv
Y2FsaXphYmxlLnN0cmluZ3MJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0Vu
Z2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQpAQCAtMTksMTIg
KzE5LDI3IEBACiAALwAqACAAdgBpAHMAaQBiAGwAZQAgAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAg
AHAAbAB1AGcALQBpAG4AIABoAG8AcwB0ACAAcAByAG8AYwBlAHMAcwAuACAAVABoAGUAIABmAGkA
cgBzAHQAIABhAHIAZwB1AG0AZQBuAHQAIABpAHMAIAB0AGgAZQAgAHAAbAB1AGcALQBpAG4AIABu
AGEAbQBlACAAYQBuAGQAIAB0AGgAZQAgAHMAZQBjAG8AbgBkACAAYQByAGcAdQBtAGUAbgB0ACAA
aQBzACAAdABoAGUAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4AIABuAGEAbQBlAC4AIAAqAC8ACiAA
IgAlAEAAIAAoACUAQAAgAEkAbgB0AGUAcgBuAGUAdAAgAHAAbAB1AGcALQBpAG4AKQAiACAAPQAg
ACIAJQBAACAAKAAlAEAAIABJAG4AdABlAHIAbgBlAHQAIABwAGwAdQBnAC0AaQBuACkAIgA7AAog
AAorAC8AKgAgAFQAZQB4AHQAIAB0AHIAYQBjAGsAIABkAGkAcwBwAGwAYQB5ACAAbgBhAG0AZQAg
AGYAbwByAG0AYQB0ACAAdABoAGEAdAAgAGkAbgBjAGwAdQBkAGUAcwAgAHQAaABlACAAbABhAG4A
ZwB1AGEAZwBlACAAbwBmACAAdABoAGUAIABzAHUAYgB0AGkAdABsAGUALAAgAGkAbgAgAHQAaABl
ACAAZgBvAHIAbQAgAG8AZgAgACcAVABpAHQAbABlACAAKABMAGEAbgBnAHUAYQBnAGUAKQAnACAA
KgAvAAorACIAJQBAACAAKAAlAEAAKQAiACAAPQAgACIAJQBAACAAKAAlAEAAKQAiADsACisACisA
LwAqACAAVABlAHgAdAAgAHQAcgBhAGMAawAgAGQAaQBzAHAAbABhAHkAIABuAGEAbQBlACAAZgBv
AHIAbQBhAHQAIAB0AGgAYQB0ACAAaQBuAGMAbAB1AGQAZQBzACAAdABoAGUAIABjAG8AdQBuAHQA
cgB5ACAAYQBuAGQAIABsAGEAbgBnAHUAYQBnAGUAIABvAGYAIAB0AGgAZQAgAHMAdQBiAHQAaQB0
AGwAZQAsACAAaQBuACAAdABoAGUAIABmAG8AcgBtACAAbwBmACAAJwBUAGkAdABsAGUAIAAoAEwA
YQBuAGcAdQBhAGcAZQAtAEMAbwB1AG4AdAByAHkAKQAnACAAKgAvAAorACIAJQBAACAAKAAlAEAA
LQAlAEAAKQAiACAAPQAgACIAJQBAACAAKAAlAEAALQAlAEAAKQAiADsACisACisALwAqACAAVABl
AHgAdAAgAHQAcgBhAGMAawAgAGMAbwBuAHQAYQBpAG4AcwAgAGMAbABvAHMAZQBkACAAYwBhAHAA
dABpAG8AbgBzACAAKgAvAAorACIAJQBAACAAQwBDACIAIAA9ACAAIgAlAEAAIABDAEMAIgA7AAor
AAorAC8AKgAgAFQAZQB4AHQAIAB0AHIAYQBjAGsAIABjAG8AbgB0AGEAaQBuAHMAIABzAGkAbQBw
AGwAaQBmAGkAZQBkACAAKAAzAHIAZAAgAGcAcgBhAGQAZQAgAGwAZQB2AGUAbAApACAAcwB1AGIA
dABpAHQAbABlAHMAIAAqAC8ACisAIgAlAEAAIABFAGEAcwB5ACAAUgBlAGEAZABlAHIAIgAgAD0A
IAAiACUAQAAgAEUAYQBzAHkAIABSAGUAYQBkAGUAcgAiADsACisACiAALwAqACAAdgBpAHMAaQBi
AGwAZQAgAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAgAG4AZQB0AHcAbwByAGsAIABwAHIAbwBjAGUA
cwBzAC4AIABUAGgAZQAgAGEAcgBnAHUAbQBlAG4AdAAgAGkAcwAgAHQAaABlACAAYQBwAHAAbABp
AGMAYQB0AGkAbwBuACAAbgBhAG0AZQAuACAAKgAvAAogACIAJQBAACAATgBlAHQAdwBvAHIAawBp
AG4AZwAiACAAPQAgACIAJQBAACAATgBlAHQAdwBvAHIAawBpAG4AZwAiADsACiAACiAALwAqACAA
dgBpAHMAaQBiAGwAZQAgAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAgAG8AZgBmAGwAaQBuAGUAIABz
AHQAbwByAGEAZwBlACAAcAByAG8AYwBlAHMAcwAuACAAVABoAGUAIABhAHIAZwB1AG0AZQBuAHQA
IABpAHMAIAB0AGgAZQAgAGEAcABwAGwAaQBjAGEAdABpAG8AbgAgAG4AYQBtAGUALgAgACoALwAK
IAAiACUAQAAgAE8AZgBmAGwAaQBuAGUAIABTAHQAbwByAGEAZwBlACIAIAA9ACAAIgAlAEAAIABP
AGYAZgBsAGkAbgBlACAAUwB0AG8AcgBhAGcAZQAiADsACiAACisALwAqACAAVABlAHgAdAAgAHQA
cgBhAGMAawAgAGMAbwBuAHQAYQBpAG4AcwAgAHMAdQBiAHQAaQB0AGwAZQBzACAAZgBvAHIAIAB0
AGgAZQAgAGQAZQBhAGYAIABhAG4AZAAgAGgAYQByAGQAIABvAGYAIABoAGUAYQByAGkAbgBnACAA
KgAvAAorACIAJQBAACAAUwBEAEgAIgAgAD0AIAAiACUAQAAgAFMARABIACIAOwAKKwAKIAAvACoA
IABWAGkAcwBpAGIAbABlACAAbgBhAG0AZQAgAG8AZgAgAHQAaABlACAAcwBoAGEAcgBlAGQAIAB3
AG8AcgBrAGUAcgAgAHAAcgBvAGMAZQBzAHMALgAgAFQAaABlACAAYQByAGcAdQBtAGUAbgB0ACAA
aQBzACAAdABoAGUAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4AIABuAGEAbQBlAC4AIAAqAC8ACiAA
IgAlAEAAIABTAGgAYQByAGUAZAAgAFcAbwByAGsAZQByACIAIAA9ACAAIgAlAEAAIABTAGgAYQBy
AGUAZAAgAFcAbwByAGsAZQByACIAOwAKIAAKQEAgLTUxNywxMiArNTMyLDEyIEBACiAALwAqACAA
VQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAgACoALwAKIAAiAFUAbgBkAGUAcgBsAGkA
bgBlACAAKABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACkAIgAgAD0AIAAiAFUAbgBk
AGUAcgBsAGkAbgBlACIAOwAKIAAKLQAvACoAIABNAGUAbgB1ACAAaQB0AGUAbQAgAGwAYQBiAGUA
bAAgAGYAbwByACAAYQAgAGMAbABvAHMAZQBkACAAYwBhAHAAdABpAG8AbgBzACAAdAByAGEAYwBr
ACAAdABoAGEAdAAgAGgAYQBzACAAbgBvACAAbwB0AGgAZQByACAAbgBhAG0AZQAgACoALwAKLQAi
AFUAbgBrAG4AbwB3AG4AIAAoAGMAbABvAHMAZQBkACAAYwBhAHAAdABpAG8AbgBzACAAdAByAGEA
YwBrACkAIgAgAD0AIAAiAFUAbgBrAG4AbwB3AG4AIgA7AAotAAogAC8AKgAgAFUAbgBrAG4AbwB3
AG4AIABmAGkAbABlAHMAaQB6AGUAIABGAFQAUAAgAGQAaQByAGUAYwB0AG8AcgB5ACAAbABpAHMA
dABpAG4AZwAgAGkAdABlAG0AIAAqAC8ACiAAIgBVAG4AawBuAG8AdwBuACAAKABmAGkAbABlAHMA
aQB6AGUAKQAiACAAPQAgACIAVQBuAGsAbgBvAHcAbgAiADsACiAACisALwAqACAATQBlAG4AdQAg
AGkAdABlAG0AIABsAGEAYgBlAGwAIABmAG8AcgAgAGEAIAB0AGUAeAB0ACAAdAByAGEAYwBrACAA
dABoAGEAdAAgAGgAYQBzACAAbgBvACAAbwB0AGgAZQByACAAbgBhAG0AZQAgACoALwAKKwAiAFUA
bgBrAG4AbwB3AG4AIAAoAHQAZQB4AHQAIAB0AHIAYQBjAGsAKQAiACAAPQAgACIAVQBuAGsAbgBv
AHcAbgAiADsACisACiAALwAqACAAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAgACoA
LwAKIAAiAFUAbgBsAGkAbgBrACAAKABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACkA
IgAgAD0AIAAiAFUAbgBsAGkAbgBrACIAOwAKIAAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIwLDcgKzMyMCw3
IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICAgICBpZiAoZG9j
dW1lbnQtPnBhZ2UoKSkgewogICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9u
UHJlZmVyZW5jZXMgPSBkb2N1bWVudC0+cGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNl
cygpOwogICAgICAgICBpZiAoY2FwdGlvblByZWZlcmVuY2VzLT51c2VySGFzQ2FwdGlvblByZWZl
cmVuY2VzKCkpCi0gICAgICAgICAgICBtX2Rpc2FibGVDYXB0aW9ucyA9ICFjYXB0aW9uUHJlZmVy
ZW5jZXMtPnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKKyAgICAgICAgICAgIG1fZGlzYWJsZUNhcHRp
b25zID0gIWNhcHRpb25QcmVmZXJlbmNlcy0+c2hvdWxkU2hvd0NhcHRpb25zKCk7CiAgICAgfQog
I2VuZGlmCiB9CkBAIC0yODYyLDcgKzI4NjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFNlbGVjdGVkVGV4dFRyCiAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7
CiAKICAgICBpZiAoIXBsYXRmb3JtVHJhY2spIHsKLSAgICAgICAgdG9nZ2xlVHJhY2tBdEluZGV4
KHRleHRUcmFja3NPZmZJbmRleCgpLCB0cnVlKTsKKyAgICAgICAgc2V0U2VsZWN0ZWRUZXh0VHJh
Y2soMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI4NzcsNyArMjg3Nyw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHIKIAogICAgIGlmIChpID09IG1f
dGV4dFRyYWNrcy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB0b2dnbGVUcmFja0F0
SW5kZXgoaSwgdHJ1ZSk7CisgICAgc2V0U2VsZWN0ZWRUZXh0VHJhY2sodGV4dFRyYWNrKTsKIH0K
IAogVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gPiBIVE1MTWVkaWFFbGVtZW50Ojpw
bGF0Zm9ybVRleHRUcmFja3MoKQpAQCAtMzA3Niw3ICszMDc2LDcgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50Ojp1c2VyUHJlZmVyc0NhcHRpbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBD
YXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBwYWdlLT5ncm91cCgp
LmNhcHRpb25QcmVmZXJlbmNlcygpOwotICAgIHJldHVybiBjYXB0aW9uUHJlZmVyZW5jZXMtPnVz
ZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSAmJiBjYXB0aW9uUHJlZmVyZW5jZXMtPnVzZXJQcmVm
ZXJzQ2FwdGlvbnMoKTsKKyAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzLT51c2VySGFzQ2Fw
dGlvblByZWZlcmVuY2VzKCkgJiYgY2FwdGlvblByZWZlcmVuY2VzLT5zaG91bGRTaG93Q2FwdGlv
bnMoKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlz
VHJhY2tLaW5kKFN0cmluZyBraW5kKSBjb25zdApAQCAtMzA4NCwxNSArMzA4NCwxOSBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJJc0ludGVyZXN0ZWRJCiAgICAgaWYgKG1fZGlzYWJsZUNh
cHRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5w
YWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDYXB0
aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBwYWdlLT5ncm91cCgpLmNh
cHRpb25QcmVmZXJlbmNlcygpOwogICAgIGJvb2wgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0
bGVzID0gbV9jbG9zZWRDYXB0aW9uc1Zpc2libGUgfHwgdXNlclByZWZlcnNDYXB0aW9ucygpOwog
CiAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpCi0gICAgICAg
IHJldHVybiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnNob3VsZERpc3BsYXlTdWJ0aXRsZXMoKSkg
fHwgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOworICAgICAgICByZXR1cm4gY2FwdGlv
blByZWZlcmVuY2VzLT51c2VyUHJlZmVyc1N1YnRpdGxlcygpIHx8IHVzZXJQcmVmZXJzQ2FwdGlv
bnNPclN1YnRpdGxlczsKICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29y
ZCgpKQotICAgICAgICByZXR1cm4gKHNldHRpbmdzICYmIHNldHRpbmdzLT5zaG91bGREaXNwbGF5
Q2FwdGlvbnMoKSkgfHwgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOworICAgICAgICBy
ZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzLT51c2VyUHJlZmVyc0NhcHRpb25zKCkgfHwgdXNlclBy
ZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOwogICAgIGlmIChraW5kID09IFRleHRUcmFjazo6ZGVz
Y3JpcHRpb25zS2V5d29yZCgpKQotICAgICAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3Mt
PnNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKCk7CisgICAgICAgIHJldHVybiBjYXB0aW9u
UHJlZmVyZW5jZXMtPnVzZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucygpIHx8IHVzZXJQcmVmZXJz
Q2FwdGlvbnNPclN1YnRpdGxlczsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTMxNzgsMjUg
KzMxODIsMjggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhYwogICAg
ICAgICB0cmFja1RvRW5hYmxlLT5zZXRNb2RlKFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSk7
CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlVHJhY2tBdEluZGV4KGludCBpbmRl
eCwgYm9vbCBleGNsdXNpdmUpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4
dFRyYWNrKFRleHRUcmFjayogdHJhY2tUb1NlbGVjdCkKIHsKICAgICBUZXh0VHJhY2tMaXN0KiB0
cmFja0xpc3QgPSB0ZXh0VHJhY2tzKCk7CiAgICAgaWYgKCF0cmFja0xpc3QgfHwgIXRyYWNrTGlz
dC0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCkt
PnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKSA6IDA7Ci0gICAgaWYgKGNhcHRp
b25QcmVmZXJlbmNlcykKLSAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzLT5zZXRVc2VyUHJlZmVy
c0NhcHRpb25zKGluZGV4ICE9IHRleHRUcmFja3NPZmZJbmRleCgpKTsKKyAgICBpZiAodHJhY2tU
b1NlbGVjdCAmJiAhdHJhY2tMaXN0LT5jb250YWlucyh0cmFja1RvU2VsZWN0KSkKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgZm9yIChpbnQgaSA9IDAsIGxlbmd0aCA9IHRyYWNrTGlzdC0+bGVuZ3Ro
KCk7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gdHJhY2tM
aXN0LT5pdGVtKGkpOwotICAgICAgICBpZiAoaSA9PSBpbmRleCkgeworICAgICAgICBpZiAoIXRy
YWNrVG9TZWxlY3QgfHwgdHJhY2sgIT0gdHJhY2tUb1NlbGVjdCkKKyAgICAgICAgICAgIHRyYWNr
LT5zZXRNb2RlKFRleHRUcmFjazo6ZGlzYWJsZWRLZXl3b3JkKCkpOworICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIHRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSk7
Ci0gICAgICAgICAgICBpZiAoY2FwdGlvblByZWZlcmVuY2VzICYmIHRyYWNrLT5sYW5ndWFnZSgp
Lmxlbmd0aCgpKQotICAgICAgICAgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0UHJlZmVy
cmVkTGFuZ3VhZ2UodHJhY2stPmxhbmd1YWdlKCkpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKGV4Y2x1c2l2ZSB8fCBpbmRleCA9PSBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzT2Zm
SW5kZXgoKSkKLSAgICAgICAgICAgIHRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6ZGlzYWJsZWRL
ZXl3b3JkKCkpOworICAgIH0KKworICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25Q
cmVmZXJlbmNlcyA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCktPnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKSA6IDA7CisgICAgaWYgKGNhcHRpb25QcmVmZXJlbmNl
cykgeworICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldFNob3VsZFNob3dDYXB0aW9ucyh0
cmFja1RvU2VsZWN0KTsKKyAgICAgICAgaWYgKHRyYWNrVG9TZWxlY3QgJiYgdHJhY2tUb1NlbGVj
dC0+bGFuZ3VhZ2UoKS5sZW5ndGgoKSkKKyAgICAgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+
c2V0UHJlZmVycmVkTGFuZ3VhZ2UodHJhY2tUb1NlbGVjdC0+bGFuZ3VhZ2UoKSk7CiAgICAgfQog
fQogCkBAIC00NTIwLDExICs0NTI3LDE1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlv
blByZWZlcmVuY2UKICAgICBpZiAoIWlzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZSA9IHRydWU7Ci0gICAgc2V0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSk7Ci0KICAgICBpZiAoaGFzTWVkaWFDb250
cm9scygpKQogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnRleHRUcmFja1ByZWZlcmVuY2VzQ2hh
bmdlZCgpOworCisgICAgYm9vbCBwcmVmZXJzQ2FwdGlvbnMgPSB1c2VyUHJlZmVyc0NhcHRpb25z
KCk7CisgICAgaWYgKG1fZGlzYWJsZUNhcHRpb25zID09ICFwcmVmZXJzQ2FwdGlvbnMpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UgPSB0cnVlOwor
ICAgIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShwcmVmZXJzQ2FwdGlvbnMpOwogfQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmln
dXJlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNp
b24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25maWd1
cmVUZXh0VHJhY2tzKCk7CiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tHcm91cChjb25zdCBU
cmFja0dyb3VwJik7CiAKLSAgICB2b2lkIHRvZ2dsZVRyYWNrQXRJbmRleChpbnQgaW5kZXgsIGJv
b2wgZXhjbHVzaXZlID0gdHJ1ZSk7CisgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRUcmFjayhUZXh0
VHJhY2sqKTsKICAgICBzdGF0aWMgaW50IHRleHRUcmFja3NPZmZJbmRleCgpIHsgcmV0dXJuIC0x
OyB9CiAgICAgc3RhdGljIGludCB0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCgpIHsgcmV0dXJuIC0y
OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzU1
LDYgKzc1NSwxMyBAQCB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0CiAg
ICAgICAgIC8vIENoZWNrIGlmIHRoZSBldmVudCB0YXJnZXQgaGFzIHN1Y2ggYSBjdXN0b20gZWxl
bWVudCBhbmQsIGlmIHNvLAogICAgICAgICAvLyB0ZWxsIHRoZSBIVE1MTWVkaWFFbGVtZW50IHRv
IGVuYWJsZSB0aGF0IHRyYWNrLgogCisgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFj
azsKKyAgICAgICAgTWVudUl0ZW1Ub1RyYWNrTWFwOjppdGVyYXRvciBpdGVyID0gbV9tZW51VG9U
cmFja01hcC5maW5kKHRvRWxlbWVudCh0YXJnZXQpKTsKKyAgICAgICAgaWYgKGl0ZXIgIT0gbV9t
ZW51VG9UcmFja01hcC5lbmQoKSkKKyAgICAgICAgICAgIHRleHRUcmFjayA9IGl0ZXItPnZhbHVl
OworICAgICAgICBtX21lbnVUb1RyYWNrTWFwLmNsZWFyKCk7CisgICAgICAgIG1fY29udHJvbHMt
PnRvZ2dsZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKTsKKwogICAgICAgICBpbnQgdHJhY2tJbmRl
eCA9IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudCh0b0VsZW1lbnQodGFyZ2V0KSk7CiAgICAgICAg
IGlmICh0cmFja0luZGV4ID09IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3NJbmRleE5vdEZv
dW5kKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NjMsMTAgKzc3MCwxMSBAQCB2b2lkIE1l
ZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0CiAgICAgICAgIGlmICghbWVkaWFFbGVt
ZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1lZGlhRWxlbWVudC0+dG9nZ2xl
VHJhY2tBdEluZGV4KHRyYWNrSW5kZXgpOworICAgICAgICBpZiAodGV4dFRyYWNrKQorICAgICAg
ICAgICAgbWVkaWFFbGVtZW50LT5zZXRTZWxlY3RlZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkp
OworICAgICAgICBlbHNlIGlmICh0cmFja0luZGV4ID09IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRU
cmFja3NPZmZJbmRleCgpKQorICAgICAgICAgICAgbWVkaWFFbGVtZW50LT5zZXRTZWxlY3RlZFRl
eHRUcmFjaygwKTsKIAotICAgICAgICAvLyBXZSd2ZSBzZWxlY3RlZCBhIHRyYWNrIHRvIGRpc3Bs
YXksIHNvIHdlIGNhbiBub3cgY2xvc2UgdGhlIG1lbnUuCi0gICAgICAgIG1fY29udHJvbHMtPnRv
Z2dsZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKTsKICAgICAgICAgdXBkYXRlRGlzcGxheSgpOwog
ICAgIH0KIApAQCAtNzk5LDUzICs4MDcsMzcgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0
aW9uc1RyYWNrTGlzdAogCiAgICAgaWYgKG1fdHJhY2tMaXN0SGFzQ2hhbmdlZCkKICAgICAgICAg
cmVidWlsZFRyYWNrTGlzdE1lbnUoKTsKLSAgICAKKwogICAgIGJvb2wgY2FwdGlvbnNWaXNpYmxl
ID0gbWVkaWFFbGVtZW50LT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwLCBsZW5ndGggPSBtX21lbnVJdGVtcy5zaXplKCk7IGkgPCBsZW5ndGg7ICsraSkg
ewogICAgICAgICBSZWZQdHI8RWxlbWVudD4gdHJhY2tJdGVtID0gbV9tZW51SXRlbXNbaV07CisK
ICAgICAgICAgaW50IHRyYWNrSW5kZXggPSB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQodHJhY2tJ
dGVtLmdldCgpKTsKLSAgICAgICAgaWYgKHRyYWNrSW5kZXggIT0gSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrc0luZGV4Tm90Rm91bmQoKSkgewotICAgICAgICAgICAgaWYgKHRyYWNrSW5kZXgg
PT0gSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrc09mZkluZGV4KCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoY2FwdGlvbnNWaXNpYmxlKQotICAgICAgICAgICAgICAgICAgICB0cmFja0l0ZW0t
PmNsYXNzTGlzdCgpLT5yZW1vdmUoc2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRyYWNrSXRl
bS0+Y2xhc3NMaXN0KCktPmFkZChzZWxlY3RlZENsYXNzVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJ
T04pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBUZXh0VHJhY2sqIHRy
YWNrID0gdHJhY2tMaXN0LT5pdGVtKHRyYWNrSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICgh
dHJhY2spCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlm
ICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS0+YWRkKHNlbGVjdGVkQ2xhc3NWYWx1
ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLT5yZW1vdmUoc2VsZWN0ZWRDbGFzc1Zh
bHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLSNlbmRpZgotfQorICAgICAgICBpZiAodHJhY2tJbmRleCA9PSBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCgpKQorICAgICAgICAgICAgY29udGludWU7CiAKLSNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCi1zdGF0aWMgdm9pZCBpbnNlcnRUZXh0VHJhY2tNZW51SXRl
bUludG9Tb3J0ZWRDb250YWluZXIoUmVmUHRyPEVsZW1lbnQ+JiBpdGVtLCBSZWZQdHI8RWxlbWVu
dD4mIGNvbnRhaW5lcikKLXsKLSAgICAvLyBUaGUgY29udGFpbmVyIHdpbGwgYWx3YXlzIGhhdmUg
dGhlICJPZmYiIGVudHJ5IGFscmVhZHkgcHJlc2VudCBhbmQgaXQKLSAgICAvLyBzaG91bGQgcmVt
YWluIGF0IHRoZSBzdGFydCBvZiB0aGUgbGlzdC4KLSAgICBBU1NFUlQoY29udGFpbmVyLT5jaGls
ZE5vZGVDb3VudCgpID4gMCk7Ci0gICAgQVNTRVJUKGl0ZW0tPmNoaWxkTm9kZUNvdW50KCkgPT0g
MSk7IC8vIEVhY2ggaXRlbSBzaG91bGQgaGF2ZSBhIHNpbmdsZSB0ZXh0IG5vZGUgY2hpbGQgZm9y
IHRoZSBsYWJlbC4KLSAgICBTdHJpbmcgaXRlbUxhYmVsID0gdG9UZXh0KGl0ZW0tPmZpcnN0Q2hp
bGQoKSktPndob2xlVGV4dCgpOwotCi0gICAgLy8gVGhpcyBpcyBhbiBpbnNlcnRpb24gc29ydCA6
KCBIb3dldmVyLCB0aGVyZSBzaG91bGRuJ3QgYmUgYSBob3JyaWJsZSBudW1iZXIgb2YgdGV4dCB0
cmFjayBpdGVtcy4KLSAgICBmb3IgKGludCBpID0gMSwgbnVtQ2hpbGROb2RlcyA9IGNvbnRhaW5l
ci0+Y2hpbGROb2RlQ291bnQoKTsgaSA8IG51bUNoaWxkTm9kZXM7ICsraSkgewotICAgICAgICBO
b2RlKiBjaGlsZCA9IGNvbnRhaW5lci0+Y2hpbGROb2RlKGkpOwotICAgICAgICBBU1NFUlQoY2hp
bGQtPmNoaWxkTm9kZUNvdW50KCkgPT0gMSk7IC8vIEVhY2ggaXRlbSBzaG91bGQgaGF2ZSBhIHNp
bmdsZSB0ZXh0IG5vZGUgY2hpbGQgZm9yIHRoZSBsYWJlbC4KLSAgICAgICAgU3RyaW5nIGNoaWxk
TGFiZWwgPSB0b1RleHQoY2hpbGQtPmZpcnN0Q2hpbGQoKSktPndob2xlVGV4dCgpOwotICAgICAg
ICBpZiAoY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGl0ZW1MYWJlbCwgY2hpbGRMYWJlbCkpIHsK
LSAgICAgICAgICAgIGNvbnRhaW5lci0+aW5zZXJ0QmVmb3JlKGl0ZW0sIGNoaWxkKTsKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRyYWNrSW5kZXggPT0gSFRNTE1lZGlhRWxlbWVu
dDo6dGV4dFRyYWNrc09mZkluZGV4KCkpIHsKKyAgICAgICAgICAgIGlmIChjYXB0aW9uc1Zpc2li
bGUpCisgICAgICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS0+cmVtb3ZlKHNlbGVj
dGVkQ2xhc3NWYWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS0+YWRkKHNlbGVjdGVkQ2xhc3NW
YWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQorCisgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjazsKKyAgICAgICAgTWVu
dUl0ZW1Ub1RyYWNrTWFwOjppdGVyYXRvciBpdGVyID0gbV9tZW51VG9UcmFja01hcC5maW5kKHRy
YWNrSXRlbS5nZXQoKSk7CisgICAgICAgIGlmIChpdGVyID09IG1fbWVudVRvVHJhY2tNYXAuZW5k
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdGV4dFRyYWNrID0gaXRlci0+dmFs
dWU7CisgICAgICAgIGlmICghdGV4dFRyYWNrKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGlmICh0ZXh0VHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkp
CisgICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLT5hZGQoc2VsZWN0ZWRDbGFzc1Zh
bHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdHJh
Y2tJdGVtLT5jbGFzc0xpc3QoKS0+cmVtb3ZlKHNlbGVjdGVkQ2xhc3NWYWx1ZSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CiAgICAgfQotICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoaXRlbSk7Ci19
CiAjZW5kaWYKK30KIAogdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVs
ZW1lbnQ6OnJlYnVpbGRUcmFja0xpc3RNZW51KCkKIHsKQEAgLTg1NSw2ICs4NDcsNyBAQCB2b2lk
IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0CiAgICAgbV9tZW51SXRlbXMuY2xl
YXIoKTsKIAogICAgIG1fdHJhY2tMaXN0SGFzQ2hhbmdlZCA9IGZhbHNlOworICAgIG1fbWVudVRv
VHJhY2tNYXAuY2xlYXIoKTsKIAogICAgIGlmICghbWVkaWFDb250cm9sbGVyKCktPmhhc0Nsb3Nl
ZENhcHRpb25zKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg2NCw0MyArODU3LDQwIEBAIHZvaWQg
TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgVGV4dFRyYWNrTGlzdCogdHJhY2tMaXN0ID0gbWVkaWFFbGVtZW50LT50ZXh0VHJhY2tzKCk7
Ci0KICAgICBpZiAoIXRyYWNrTGlzdCB8fCAhdHJhY2tMaXN0LT5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CiAgICAgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcyogY2FwdGlvbnNVc2VyUHJlZmVyZW5jZXMgPSBkb2MtPnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4g
PiB0cmFja3NGb3JNZW51ID0gY2FwdGlvbnNVc2VyUHJlZmVyZW5jZXMtPnNvcnRlZFRyYWNrTGlz
dEZvck1lbnUodHJhY2tMaXN0KTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBjYXB0aW9uc0hlYWRl
ciA9IGRvYy0+Y3JlYXRlRWxlbWVudChoM1RhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAg
Y2FwdGlvbnNIZWFkZXItPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUodGV4dFRyYWNr
U3VidGl0bGVzVGV4dCgpKSk7CiAgICAgYXBwZW5kQ2hpbGQoY2FwdGlvbnNIZWFkZXIpOwogICAg
IFJlZlB0cjxFbGVtZW50PiBjYXB0aW9uc01lbnVMaXN0ID0gZG9jLT5jcmVhdGVFbGVtZW50KHVs
VGFnLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAotICAgIFJlZlB0cjxFbGVtZW50PiB0cmFja0l0
ZW07Ci0KLSAgICB0cmFja0l0ZW0gPSBkb2MtPmNyZWF0ZUVsZW1lbnQobGlUYWcsIEFTU0VSVF9O
T19FWENFUFRJT04pOwotICAgIHRyYWNrSXRlbS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0
Tm9kZSh0ZXh0VHJhY2tPZmZUZXh0KCkpKTsKLSAgICB0cmFja0l0ZW0tPnNldEF0dHJpYnV0ZSh0
cmFja0luZGV4QXR0cmlidXRlTmFtZSgpLCB0ZXh0VHJhY2tzT2ZmQXR0clZhbHVlLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKLSAgICBjYXB0aW9uc01lbnVMaXN0LT5hcHBlbmRDaGlsZCh0cmFja0l0
ZW0pOwotICAgIG1fbWVudUl0ZW1zLmFwcGVuZCh0cmFja0l0ZW0pOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7Ci0gICAg
ICAgIHRyYWNrSXRlbSA9IGRvYy0+Y3JlYXRlRWxlbWVudChsaVRhZywgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1lbnVJdGVtOworICAgIG1lbnVJdGVtID0gZG9j
LT5jcmVhdGVFbGVtZW50KGxpVGFnLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBtZW51SXRl
bS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSh0ZXh0VHJhY2tPZmZUZXh0KCkpKTsK
KyAgICBtZW51SXRlbS0+c2V0QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRyaWJ1dGVOYW1lKCksIHRl
eHRUcmFja3NPZmZBdHRyVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGNhcHRpb25z
TWVudUxpc3QtPmFwcGVuZENoaWxkKG1lbnVJdGVtKTsKKyAgICBtX21lbnVJdGVtcy5hcHBlbmQo
bWVudUl0ZW0pOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tzRm9y
TWVudS5zaXplKCk7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBSZWZQdHI8VGV4dFRyYWNr
PiB0ZXh0VHJhY2sgPSB0cmFja3NGb3JNZW51W2ldOworICAgICAgICBtZW51SXRlbSA9IGRvYy0+
Y3JlYXRlRWxlbWVudChsaVRhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICAgICAgLy8g
QWRkIGEgY3VzdG9tIGF0dHJpYnV0ZSB0byB0aGUgPGxpPiBlbGVtZW50IHdoaWNoIHdpbGwgYWxs
b3cKICAgICAgICAgLy8gdXMgdG8gZWFzaWx5IGFzc29jaWF0ZSB0aGUgdXNlciB0YXBwaW5nIGhl
cmUgd2l0aCB0aGUKICAgICAgICAgLy8gdHJhY2suIFNpbmNlIHRoaXMgbGlzdCBpcyByZWJ1aWx0
IGlmIHRoZSB0cmFja3MgY2hhbmdlLCB3ZQogICAgICAgICAvLyBzaG91bGQgYWx3YXlzIGJlIGlu
IHN5bmMuCi0gICAgICAgIHRyYWNrSXRlbS0+c2V0QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRyaWJ1
dGVOYW1lKCksIFN0cmluZzo6bnVtYmVyKGkpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAg
ICAgbWVudUl0ZW0tPnNldEF0dHJpYnV0ZSh0cmFja0luZGV4QXR0cmlidXRlTmFtZSgpLCBTdHJp
bmc6Om51bWJlcihpKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKLSAgICAgICAgaWYgKGNhcHRp
b25zVXNlclByZWZlcmVuY2VzKQotICAgICAgICAgICAgdHJhY2tJdGVtLT5hcHBlbmRDaGlsZChk
b2MtPmNyZWF0ZVRleHROb2RlKGNhcHRpb25zVXNlclByZWZlcmVuY2VzLT5kaXNwbGF5TmFtZUZv
clRyYWNrKHRyYWNrKSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0cmFja0l0ZW0tPmFw
cGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUodHJhY2stPmxhYmVsKCkpKTsKKyAgICAgICAg
bWVudUl0ZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoY2FwdGlvbnNVc2VyUHJl
ZmVyZW5jZXMtPmRpc3BsYXlOYW1lRm9yVHJhY2sodGV4dFRyYWNrLmdldCgpKSkpOwogCi0gICAg
ICAgIGluc2VydFRleHRUcmFja01lbnVJdGVtSW50b1NvcnRlZENvbnRhaW5lcih0cmFja0l0ZW0s
IGNhcHRpb25zTWVudUxpc3QpOwotICAgICAgICBtX21lbnVJdGVtcy5hcHBlbmQodHJhY2tJdGVt
KTsKKyAgICAgICAgY2FwdGlvbnNNZW51TGlzdC0+YXBwZW5kQ2hpbGQobWVudUl0ZW0pOworICAg
ICAgICBtX21lbnVJdGVtcy5hcHBlbmQobWVudUl0ZW0pOworICAgICAgICBtX21lbnVUb1RyYWNr
TWFwLmFkZChtZW51SXRlbSwgdGV4dFRyYWNrKTsKICAgICB9CiAKICAgICBhcHBlbmRDaGlsZChj
YXB0aW9uc01lbnVMaXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzE1LDYgKzMxNSwxMCBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRy
PEVsZW1lbnQ+ID4gVHJhY2tNZW51SXRlbXM7CiAgICAgVHJhY2tNZW51SXRlbXMgbV9tZW51SXRl
bXM7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
RWxlbWVudD4sIFJlZlB0cjxUZXh0VHJhY2s+ID4gTWVudUl0ZW1Ub1RyYWNrTWFwOworICAgIE1l
bnVJdGVtVG9UcmFja01hcCBtX21lbnVUb1RyYWNrTWFwOworI2VuZGlmCiAgICAgTWVkaWFDb250
cm9scyogbV9jb250cm9sczsKICAgICBib29sIG1fdHJhY2tMaXN0SGFzQ2hhbmdlZDsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAkocmV2
aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSw2ICs0MTEsNyBAQCB2b2lkIE1lZGlhQ29udHJv
bHM6OnRleHRUcmFja1ByZWZlcmVuY2VzCiB7CiAgICAgaWYgKG1fdGV4dERpc3BsYXlDb250YWlu
ZXIpCiAgICAgICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnVwZGF0ZVNpemVzKHRydWUpOwor
ICAgIGNsb3NlZENhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiB9CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAkocmV2aXNpb24g
MTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDMwIEBAIGJvb2wgSW5iYW5kVGV4dFRyYWNr
Ojppc0Nsb3NlZENhcHRpb25zKCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5pc0Nsb3NlZENhcHRp
b25zKCk7CiB9CiAKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrOjpjb250YWluc09ubHlGb3JjZWRTdWJ0
aXRsZXMoKSBjb25zdAoreworICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29udGFpbnNPbmx5Rm9yY2VkU3VidGl0
bGVzKCk7Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrOjppc01haW5Qcm9ncmFtQ29udGVudCgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICByZXR1cm4gbV9wcml2YXRlLT5pc01haW5Qcm9ncmFtQ29udGVudCgpOworfQorCiti
b29sIEluYmFuZFRleHRUcmFjazo6aXNFYXN5VG9SZWFkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
cHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBtX3ByaXZh
dGUtPmlzRWFzeVRvUmVhZCgpOworfQorICAgIAogc2l6ZV90IEluYmFuZFRleHRUcmFjazo6aW5i
YW5kVHJhY2tJbmRleCgpCiB7CiAgICAgQVNTRVJUKG1fcHJpdmF0ZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgJKHJldmlzaW9uIDE0NjIwNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDYgKzQ2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkluYmFuZFRleHRU
cmFjaygpOwogCiAgICAgdmlydHVhbCBib29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWFpblByb2dyYW1Db250ZW50KCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2RlKGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJS
SURFOwogICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI5LDYg
KzQyOSwxNSBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBUZXh0VHJhY2s6CiB9CiAj
ZW5kaWYKIAorYm9vbCBUZXh0VHJhY2s6OmlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QKK3sK
KyAgICAvLyAiTWFpbiBwcm9ncmFtIiBjb250ZW50IGlzIGludHJpbnNpYyB0byB0aGUgcHJlc2Vu
dGF0aW9uIG9mIHRoZSBtZWRpYSBmaWxlLCByZWdhcmRsZXNzIG9mIGxvY2FsZS4gQ29udGVudCBz
dWNoIGFzCisgICAgLy8gZGlyZWN0b3JzIGNvbW1lbnRhcnkgaXMgbm90ICJtYWluIHByb2dyYW0i
IGJlY2F1c2UgaXQgaXMgbm90IGVzc2VudGlhbCBmb3IgdGhlIHByZXNlbnRhdGlvbi4gSFRNTDUg
ZG9lc24ndCBoYXZlCisgICAgLy8gYSB3YXkgdG8gZXhwcmVzcyB0aGlzIGluIGEgbWFjaGluZS1y
ZWFibGUgZm9ybSwgaXQgaXMgdHlwaWNhbGx5IGRvbmUgd2l0aCB0aGUgdHJhY2sgbGFiZWwsIHNv
IHdlIGFzc3VtZSB0aGF0IGNhcHRpb24KKyAgICAvLyB0cmFja3MgYXJlIG1haW4gY29udGVudCBh
bmQgYWxsIG90aGVyIHRyYWNrIHR5cGVzIGFyZSBub3QuCisgICAgcmV0dXJuIG1fa2luZCA9PSBj
YXB0aW9uc0tleXdvcmQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAkocmV2aXNpb24gMTQ2MjA1
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMTE5LDYgKzExOSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDbG9z
ZWRDYXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wg
Y29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNFYXN5VG9SZWFkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIGludCB0
cmFja0luZGV4KCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlVHJhY2tJbmRleCgpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAJKHJldmlzaW9uIDE0
NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMSw2ICsyMTEsMjIgQEAgdm9pZCBUZXh0VHJhY2tMaXN0OjpyZW1v
dmUoVGV4dFRyYWNrKiB0cgogICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsKIH0KIAorYm9vbCBU
ZXh0VHJhY2tMaXN0Ojpjb250YWlucyhUZXh0VHJhY2sqIHRyYWNrKSBjb25zdAoreworICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+KiB0cmFja3MgPSAwOworICAgIAorICAgIGlm
ICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpCisgICAgICAg
IHRyYWNrcyA9ICZtX2VsZW1lbnRUcmFja3M7CisgICAgZWxzZSBpZiAodHJhY2stPnRyYWNrVHlw
ZSgpID09IFRleHRUcmFjazo6QWRkVHJhY2spCisgICAgICAgIHRyYWNrcyA9ICZtX2FkZFRyYWNr
VHJhY2tzOworICAgIGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6Oklu
QmFuZCkKKyAgICAgICAgdHJhY2tzID0gJm1faW5iYW5kVHJhY2tzOworICAgIGVsc2UKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgCisgICAgcmV0dXJuIHRyYWNrcy0+ZmluZCh0
cmFjaykgIT0gbm90Rm91bmQ7Cit9CisKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrTGlz
dDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JUZXh0VHJhY2tMaXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmgJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIHB1
YmxpYzoKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICBpbnQgZ2V0VHJhY2tJbmRl
eChUZXh0VHJhY2sqKTsKICAgICBpbnQgZ2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRy
YWNrcyhUZXh0VHJhY2sqKTsKKyAgICBib29sIGNvbnRhaW5zKFRleHRUcmFjayopIGNvbnN0Owog
CiAgICAgVGV4dFRyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKICAgICB2b2lkIGFwcGVuZChQ
YXNzUmVmUHRyPFRleHRUcmFjaz4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwxNyArMjgsMTA4IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlcy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdl
R3JvdXAuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlRleHRUcmFja0xpc3Qu
aCIKKyNpbmNsdWRlIDx3dGYvTm9uQ29weWluZ1NvcnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzKFBhZ2VH
cm91cCogZ3JvdXApCisgICAgOiBtX3BhZ2VHcm91cChncm91cCkKKyAgICAsIG1fdGltZXIodGhp
cywgJkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnRpbWVyRmlyZWQpCisgICAgLCBtX3Rlc3RpbmdN
b2RlKGZhbHNlKQorICAgICwgbV9oYXZlUHJlZmVyZW5jZXMoZmFsc2UpCisgICAgLCBtX3Nob3Vs
ZFNob3dDYXB0aW9ucyhmYWxzZSkKK3sKK30KKworQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6fkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXMoKQoreworfQorCitib29sIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OnNob3VsZFNob3dDYXB0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGVzdGluZ01v
ZGUgPyBtX3Nob3VsZFNob3dDYXB0aW9ucyA6IGZhbHNlOworfQorCit2b2lkIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXM6OnRpbWVyRmlyZWQoVGltZXI8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4qKQor
eworICAgIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKK30KKwordm9pZCBDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpub3RpZnkoKQoreworICAgIGlmICghbV90ZXN0aW5nTW9kZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9oYXZlUHJlZmVyZW5jZXMgPSB0cnVlOworICAgIGlmICghbV90
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwor
dm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRTaG91bGRTaG93Q2FwdGlvbnMoYm9vbCBw
cmVmZXJlbmNlKQoreworICAgIG1fc2hvdWxkU2hvd0NhcHRpb25zID0gcHJlZmVyZW5jZTsKKyAg
ICBub3RpZnkoKTsKK30KKworYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVy
c0NhcHRpb25zKCkgY29uc3QKK3sKKyAgICBQYWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS0+cGFn
ZXMoKS5iZWdpbigpKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBwYWdlLT5zZXR0aW5ncygpLT5zaG91bGREaXNwbGF5Q2FwdGlvbnMoKTsKK30K
Kwogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJv
b2wgcHJlZmVyZW5jZSkKIHsKLSAgICBtX3VzZXJQcmVmZXJzQ2FwdGlvbnMgPSBwcmVmZXJlbmNl
OwotICAgIGlmIChtX3Rlc3RpbmdNb2RlKSB7Ci0gICAgICAgIG1faGF2ZVByZWZlcmVuY2VzID0g
dHJ1ZTsKLSAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwotICAgIH0KKyAgICBQ
YWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS0+cGFnZXMoKS5iZWdpbigpKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldFNob3VsZERp
c3BsYXlDYXB0aW9ucyhwcmVmZXJlbmNlKTsKKyAgICBub3RpZnkoKTsKK30KKworYm9vbCBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0Cit7CisgICAg
UGFnZSogcGFnZSA9ICoocGFnZUdyb3VwKCktPnBhZ2VzKCkuYmVnaW4oKSk7CisgICAgaWYgKCFw
YWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gcGFnZS0+c2V0dGluZ3Mo
KS0+c2hvdWxkRGlzcGxheVN1YnRpdGxlcygpOworfQorCit2b2lkIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OnNldFVzZXJQcmVmZXJzU3VidGl0bGVzKGJvb2wgcHJlZmVyZW5jZSkKK3sKKyAgICBQ
YWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS0+cGFnZXMoKS5iZWdpbigpKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldFNob3VsZERp
c3BsYXlTdWJ0aXRsZXMocHJlZmVyZW5jZSk7CisgICAgbm90aWZ5KCk7Cit9CisKK2Jvb2wgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNUZXh0RGVzY3JpcHRpb25zKCkgY29uc3QK
K3sKKyAgICBQYWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS0+cGFnZXMoKS5iZWdpbigpKTsKKyAg
ICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gcGFn
ZS0+c2V0dGluZ3MoKS0+c2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoKTsKK30KKwordm9p
ZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRVc2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMo
Ym9vbCBwcmVmZXJlbmNlKQoreworICAgIFBhZ2UqIHBhZ2UgPSAqKHBhZ2VHcm91cCgpLT5wYWdl
cygpLmJlZ2luKCkpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IHBhZ2UtPnNldHRpbmdzKCktPnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKHByZWZl
cmVuY2UpOworICAgIG5vdGlmeSgpOwogfQogCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6
OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQpAQCAtNTgsMTMgKzE0OSwxMCBAQCBWZWN0b3I8
U3RyaW5nPiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OnNldFByZWZlcnJlZExhbmd1YWdlKFN0cmluZyBsYW5ndWFnZSkKIHsKICAgICBtX3Vz
ZXJQcmVmZXJyZWRMYW5ndWFnZSA9IGxhbmd1YWdlOwotICAgIGlmIChtX3Rlc3RpbmdNb2RlKSB7
Ci0gICAgICAgIG1faGF2ZVByZWZlcmVuY2VzID0gdHJ1ZTsKLSAgICAgICAgY2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZCgpOwotICAgIH0KKyAgICBub3RpZnkoKTsKIH0KIAotU3RyaW5nIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OmRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKiB0cmFjaykg
Y29uc3QKK3N0YXRpYyBTdHJpbmcgdHJhY2tEaXNwbGF5TmFtZShUZXh0VHJhY2sqIHRyYWNrKQog
ewogICAgIGlmICh0cmFjay0+bGFiZWwoKS5pc0VtcHR5KCkgJiYgdHJhY2stPmxhbmd1YWdlKCku
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrTm9MYWJlbFRleHQoKTsKQEAgLTcz
LDYgKzE2MSwzMCBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6ZGlzcGxheU5hCiAg
ICAgcmV0dXJuIHRyYWNrLT5sYW5ndWFnZSgpOwogfQogCitTdHJpbmcgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6ZGlzcGxheU5hbWVGb3JUcmFjayhUZXh0VHJhY2sqIHRyYWNrKSBjb25zdAorewor
ICAgIHJldHVybiB0cmFja0Rpc3BsYXlOYW1lKHRyYWNrKTsKK30KKyAgICAKK3N0YXRpYyBib29s
IHRleHRUcmFja0NvbXBhcmUoY29uc3QgUmVmUHRyPFRleHRUcmFjaz4mIGEsIGNvbnN0IFJlZlB0
cjxUZXh0VHJhY2s+JiBiKQoreworICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHRyYWNrRGlz
cGxheU5hbWUoYS5nZXQoKSksIHRyYWNrRGlzcGxheU5hbWUoYi5nZXQoKSkpIDwgMDsKK30KKwor
VmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c29ydGVk
VHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QpCit7CisgICAgQVNTRVJU
KHRyYWNrTGlzdCk7CisKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiB0cmFja3NGb3JN
ZW51OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5n
dGgoKTsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICB0cmFja3NGb3JNZW51LmFwcGVuZCh0cmFj
a0xpc3QtPml0ZW0oaSkpOworCisgICAgbm9uQ29weWluZ1NvcnQodHJhY2tzRm9yTWVudS5iZWdp
bigpLCB0cmFja3NGb3JNZW51LmVuZCgpLCB0ZXh0VHJhY2tDb21wYXJlKTsKKworICAgIHJldHVy
biB0cmFja3NGb3JNZW51OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0sp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAko
cmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiwgMjAxMyAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwyMSArMzEsMzMgQEAKICNpbmNsdWRlICJMYW5n
dWFnZS5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJUZXh0VHJh
Y2suaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUGFnZUdyb3VwOworY2xhc3MgVGV4dFRyYWNrTGlzdDsKIAogY2xhc3MgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2FwdGlv
blVzZXJQcmVmZXJlbmNlcz4gY3JlYXRlKFBhZ2VHcm91cCogZ3JvdXApIHsgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDYXB0aW9uVXNlclByZWZlcmVuY2VzKGdyb3VwKSk7IH0KLSAgICB2aXJ0dWFsIH5D
YXB0aW9uVXNlclByZWZlcmVuY2VzKCkgeyB9CisgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlcygpOwogCiAgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMo
KSBjb25zdCB7IHJldHVybiBtX3Rlc3RpbmdNb2RlICYmIG1faGF2ZVByZWZlcmVuY2VzOyB9Ci0g
ICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Rl
c3RpbmdNb2RlID8gbV91c2VyUHJlZmVyc0NhcHRpb25zIDogZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VXNlclByZWZlcnNDYXB0aW9ucyhib29sIHByZWZlcmVuY2UpOworICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRTaG93Q2FwdGlvbnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvdWxkU2hvd0NhcHRpb25zKGJvb2wpOworCisgICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJz
Q2FwdGlvbnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlclByZWZlcnNDYXB0aW9u
cyhib29sKTsKKworICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc1N1YnRpdGxlcyhib29sIHByZWZlcmVu
Y2UpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlclByZWZlcnNUZXh0RGVzY3JpcHRpb25z
KGJvb2wgcHJlZmVyZW5jZSk7CisKICAgICB2aXJ0dWFsIGZsb2F0IGNhcHRpb25Gb250U2l6ZVNj
YWxlKGJvb2wmIGltcG9ydGFudCkgY29uc3QgeyBpbXBvcnRhbnQgPSBmYWxzZTsgcmV0dXJuIDAu
MDVmOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBj
b25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAKQEAgLTU3LDI3ICs2OSwyNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKikg
Y29uc3Q7CisgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBzb3J0ZWRUcmFj
a0xpc3RGb3JNZW51KFRleHRUcmFja0xpc3QqKTsKIAogICAgIHZpcnR1YWwgYm9vbCB0ZXN0aW5n
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdGluZ01vZGU7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0VGVzdGluZ01vZGUoYm9vbCBvdmVycmlkZSkgeyBtX3Rlc3RpbmdNb2RlID0gb3ZlcnJpZGU7
IH0KIAotICAgIFBhZ2VHcm91cCogcGFnZUdyb3VwKCkgeyByZXR1cm4gbV9wYWdlR3JvdXA7IH0K
KyAgICBQYWdlR3JvdXAqIHBhZ2VHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUdyb3VwOyB9
CiAKIHByb3RlY3RlZDoKLSAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKFBhZ2VHcm91cCogZ3Jv
dXApCi0gICAgICAgIDogbV9wYWdlR3JvdXAoZ3JvdXApCi0gICAgICAgICwgbV90ZXN0aW5nTW9k
ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhdmVQcmVmZXJlbmNlcyhmYWxzZSkKLSAgICAgICAgLCBt
X3VzZXJQcmVmZXJzQ2FwdGlvbnMoZmFsc2UpCi0gICAgewotICAgIH0KKyAgICBDYXB0aW9uVXNl
clByZWZlcmVuY2VzKFBhZ2VHcm91cCopOwogCiBwcml2YXRlOgorICAgIHZvaWQgdGltZXJGaXJl
ZChUaW1lcjxDYXB0aW9uVXNlclByZWZlcmVuY2VzPiopOworICAgIHZvaWQgbm90aWZ5KCk7CisK
ICAgICBQYWdlR3JvdXAqIG1fcGFnZUdyb3VwOworICAgIFRpbWVyPENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM+IG1fdGltZXI7CiAgICAgU3RyaW5nIG1fdXNlclByZWZlcnJlZExhbmd1YWdlOwogICAg
IGJvb2wgbV90ZXN0aW5nTW9kZTsKICAgICBib29sIG1faGF2ZVByZWZlcmVuY2VzOwotICAgIGJv
b2wgbV91c2VyUHJlZmVyc0NhcHRpb25zOworICAgIGJvb2wgbV9zaG91bGRTaG93Q2FwdGlvbnM7
CiB9OwogICAgIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjLmgJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw4ICs0Miwx
MiBAQCBwdWJsaWM6CiAKICNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQog
ICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFNob3dDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRTaG93Q2FwdGlvbnMoYm9vbCkgT1ZFUlJJREU7
CisKICAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0IE9WRVJSSURF
OworICAgIAogICAgIHZpcnR1YWwgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoYm9vbCYpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJy
aWRlKCkgY29uc3QgT1ZFUlJJREU7CiAKQEAgLTUzLDggKzU3LDEwIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0IE9WRVJSSURF
OwogCiAgICAgdmlydHVhbCB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKSBPVkVSUklE
RTsKKwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IHNv
cnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRyYWNrTGlzdCopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKikgY29uc3QgT1ZFUlJJREU7
CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjLm1tCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQx
LDkgQEAKICNpbXBvcnQgIlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNp
bXBvcnQgIlRleHRUcmFja0N1ZS5oIgorI2ltcG9ydCAiVGV4dFRyYWNrTGlzdC5oIgogI2ltcG9y
dCAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgorI2ltcG9ydCA8d3RmL05vbkNvcHlpbmdTb3J0Lmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKQEAgLTcxLDYgKzczLDcgQEAgU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwg
TUFDYXB0aW9uQQogU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFy
YW5jZUdldFRleHRFZGdlU3R5bGUsIE1BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlLCAo
TUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCiBTT0ZUX0xJTksoTWVkaWFBY2Nl
c3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQWRkU2VsZWN0ZWRMYW5ndWFnZSwgYm9vbCwg
KE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBDRlN0cmluZ1JlZiBsYW5ndWFnZSks
IChkb21haW4sIGxhbmd1YWdlKSk7CiBTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNh
cHRpb25BcHBlYXJhbmNlQ29weVNlbGVjdGVkTGFuZ3VhZ2VzLCBDRkFycmF5UmVmLCAoTUFDYXB0
aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4pLCAoZG9tYWluKSk7CitTT0ZUX0xJTksoTWVkaWFB
Y2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVByZWZlcnJlZENhcHRpb25pbmdN
ZWRpYUNoYXJhY3RlcmlzdGljcywgIENGQXJyYXlSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9t
YWluIGRvbWFpbiksIChkb21haW4pKTsKIAogU09GVF9MSU5LX1BPSU5URVIoTWVkaWFBY2Nlc3Np
YmlsaXR5LCBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24s
IENGU3RyaW5nUmVmKQogI2RlZmluZSBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5n
ZWROb3RpZmljYXRpb24gZ2V0a01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90
aWZpY2F0aW9uKCkKQEAgLTExMSwyNCArMTE0LDQ1IEBAIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6On5DYXB0aW9uVXNlclAKIH0KIAogI2lmIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFN
RVdPUkspCi1ib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVmZXJzQ2FwdGlv
bnMoKSBjb25zdAorCitib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNob3VsZFNob3dD
YXB0aW9ucygpIGNvbnN0CiB7CiAgICAgaWYgKHRlc3RpbmdNb2RlKCkgfHwgIU1lZGlhQWNjZXNz
aWJpbGl0eUxpYnJhcnkoKSkKLSAgICAgICAgcmV0dXJuIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6
OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKLQorICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6c2hvdWxkU2hvd0NhcHRpb25zKCk7CisgICAgCiAgICAgcmV0dXJuIE1BQ2FwdGlv
bkFwcGVhcmFuY2VHZXRTaG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2Vy
KTsKIH0KIAotdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzZXRVc2VyUHJlZmVyc0Nh
cHRpb25zKGJvb2wgcHJlZmVyZW5jZSkKK3ZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6
c2V0U2hvdWxkU2hvd0NhcHRpb25zKGJvb2wgcHJlZmVyZW5jZSkKIHsKICAgICBpZiAodGVzdGlu
Z01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKSB7Ci0gICAgICAgIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMocHJlZmVyZW5jZSk7Cisg
ICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFNob3VsZFNob3dDYXB0aW9ucyhwcmVm
ZXJlbmNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQorICAgIAogICAgIE1BQ2FwdGlvbkFw
cGVhcmFuY2VTZXRTaG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCBw
cmVmZXJlbmNlKTsKIH0KIAorYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1c2VyUHJl
ZmVyc0NhcHRpb25zKCkgY29uc3QKK3sKKyAgICBib29sIGNhcHRpb25TZXR0aW5nID0gQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNDYXB0aW9ucygpOworICAgIGlmIChjYXB0aW9u
U2V0dGluZyB8fCB0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkp
CisgICAgICAgIHJldHVybiBjYXB0aW9uU2V0dGluZzsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gY2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNzKEFkb3B0Q0YsIE1BQ2FwdGlv
bkFwcGVhcmFuY2VDb3B5UHJlZmVycmVkQ2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNzKGtN
QUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlcikpOworICAgIHJldHVybiBjYXB0aW9uaW5nTWVk
aWFDaGFyYWN0ZXJpc3RpY3MgJiYgQ0ZBcnJheUdldENvdW50KGNhcHRpb25pbmdNZWRpYUNoYXJh
Y3RlcmlzdGljcy5nZXQoKSk7Cit9CisKK2Jvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6
dXNlclByZWZlcnNTdWJ0aXRsZXMoKSBjb25zdAoreworICAgIGJvb2wgc3VidGl0bGVzU2V0dGlu
ZyA9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzU3VidGl0bGVzKCk7CisgICAg
aWYgKHN1YnRpdGxlc1NldHRpbmcgfHwgdGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmls
aXR5TGlicmFyeSgpKQorICAgICAgICByZXR1cm4gc3VidGl0bGVzU2V0dGluZzsKKyAgICAKKyAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNzKEFk
b3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5UHJlZmVycmVkQ2FwdGlvbmluZ01lZGlhQ2hh
cmFjdGVyaXN0aWNzKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlcikpOworICAgIHJldHVy
biAhKGNhcHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGljcyAmJiBDRkFycmF5R2V0Q291bnQoY2Fw
dGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNzLmdldCgpKSk7Cit9CisKIGJvb2wgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0CiB7CiAg
ICAgaWYgKHRlc3RpbmdNb2RlKCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKQEAg
LTQ5OSw0MCArNTIzLDE4NyBAQCBWZWN0b3I8U3RyaW5nPiBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjCiAKICAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKIH0KLSNlbmRpZgotCi1T
dHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6ZGlzcGxheU5hbWVGb3JUcmFjayhUZXh0
VHJhY2sqIHRyYWNrKSBjb25zdAorI2VuZGlmICAvLyBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlf
RlJBTUVXT1JLKQorICAgIAorc3RhdGljIFN0cmluZyB0cmFja0Rpc3BsYXlOYW1lKFRleHRUcmFj
ayogdHJhY2spCiB7Ci0gICAgU3RyaW5nIGxhYmVsID0gdHJhY2stPmxhYmVsKCk7Ci0gICAgU3Ry
aW5nIGxhbmd1YWdlID0gdHJhY2stPmxhbmd1YWdlKCk7Ci0gICAgU3RyaW5nIHByZWZlcnJlZExh
bmd1YWdlID0gZGVmYXVsdExhbmd1YWdlKCk7CiAgICAgU3RyaW5nQnVpbGRlciBkaXNwbGF5TmFt
ZTsKKyAgICBTdHJpbmcgbGFiZWwgPSB0cmFjay0+bGFiZWwoKTsKKyAgICBTdHJpbmcgdHJhY2tM
YW5ndWFnZUlkZW50aWZpZXIgPSB0cmFjay0+bGFuZ3VhZ2UoKTsKIAotICAgIGlmIChsYWJlbC5p
c0VtcHR5KCkgJiYgbGFuZ3VhZ2UuaXNFbXB0eSgpKSB7CisgICAgUmV0YWluUHRyPENGTG9jYWxl
UmVmPiBjdXJyZW50TG9jYWxlKEFkb3B0Q0YsIENGTG9jYWxlQ29weUN1cnJlbnQoKSk7CisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2NhbGVJZGVudGlmaWVyKEFkb3B0Q0YsIENGTG9jYWxl
Q3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRlbnRpZmllckZyb21TdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdHJhY2tMYW5ndWFnZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwor
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFuZ3VhZ2VDRihBZG9wdENGLCBDRkxvY2FsZUNv
cHlEaXNwbGF5TmFtZUZvclByb3BlcnR5VmFsdWUoY3VycmVudExvY2FsZS5nZXQoKSwga0NGTG9j
YWxlTGFuZ3VhZ2VDb2RlLCBsb2NhbGVJZGVudGlmaWVyLmdldCgpKSk7CisgICAgU3RyaW5nIGxh
bmd1YWdlID0gbGFuZ3VhZ2VDRi5nZXQoKTsKKyAgICBpZiAoIWxhYmVsLmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoIWxhbmd1YWdlLmlzRW1wdHkoKSAmJiAhbGFiZWwuY29udGFpbnMobGFuZ3Vh
Z2UpKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBsb2NhbGVEaWN0
KEFkb3B0Q0YsIENGTG9jYWxlQ3JlYXRlQ29tcG9uZW50c0Zyb21Mb2NhbGVJZGVudGlmaWVyKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGxvY2FsZUlkZW50aWZpZXIuZ2V0KCkpKTsKKyAgICAgICAgICAg
IGlmIChsb2NhbGVEaWN0KSB7CisgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgY291bnRyeUNv
ZGUgPSAwOworICAgICAgICAgICAgICAgIFN0cmluZyBjb3VudHJ5TmFtZTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBDRkRpY3Rpb25hcnlHZXRWYWx1ZUlmUHJlc2VudChsb2Nh
bGVEaWN0LmdldCgpLCBrQ0ZMb2NhbGVDb3VudHJ5Q29kZSwgKGNvbnN0IHZvaWQgKiopJmNvdW50
cnlDb2RlKTsKKyAgICAgICAgICAgICAgICBpZiAoY291bnRyeUNvZGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjb3VudHJ5TmFtZUNGKEFkb3B0Q0YsIENG
TG9jYWxlQ29weURpc3BsYXlOYW1lRm9yUHJvcGVydHlWYWx1ZShjdXJyZW50TG9jYWxlLmdldCgp
LCBrQ0ZMb2NhbGVDb3VudHJ5Q29kZSwgY291bnRyeUNvZGUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgY291bnRyeU5hbWUgPSBjb3VudHJ5TmFtZUNGLmdldCgpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIWNvdW50cnlOYW1lLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKHRleHRUcmFja0Nv
dW50cnlBbmRMYW5ndWFnZU1lbnVJdGVtVGV4dChsYWJlbCwgY291bnRyeU5hbWUsIGxhbmd1YWdl
KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFt
ZS5hcHBlbmQodGV4dFRyYWNrTGFuZ3VhZ2VNZW51SXRlbVRleHQobGFiZWwsIGxhbmd1YWdlKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBTdHJpbmcg
bGFuZ3VhZ2VBbmRMb2NhbGUgPSBDRkxvY2FsZUNvcHlEaXNwbGF5TmFtZUZvclByb3BlcnR5VmFs
dWUoY3VycmVudExvY2FsZS5nZXQoKSwga0NGTG9jYWxlSWRlbnRpZmllciwgdHJhY2tMYW5ndWFn
ZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgICAgIGlmICghbGFuZ3Vh
Z2VBbmRMb2NhbGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKGxh
bmd1YWdlQW5kTG9jYWxlKTsKKyAgICAgICAgZWxzZSBpZiAoIWxhbmd1YWdlLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChsYW5ndWFnZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChsb2NhbGVJZGVudGlmaWVyLmdldCgpKTsK
KyAgICB9CisgICAgCisgICAgaWYgKGRpc3BsYXlOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgZGlz
cGxheU5hbWUuYXBwZW5kKHRleHRUcmFja05vTGFiZWxUZXh0KCkpOworICAgIAorICAgIGlmICh0
cmFjay0+aXNFYXN5VG9SZWFkKCkpCisgICAgICAgIHJldHVybiBlYXN5UmVhZGVyVHJhY2tNZW51
SXRlbVRleHQoZGlzcGxheU5hbWUudG9TdHJpbmcoKSk7CisgICAgCisgICAgaWYgKHRyYWNrLT5r
aW5kKCkgIT0gdHJhY2stPmNhcHRpb25zS2V5d29yZCgpKQogICAgICAgICByZXR1cm4gZGlzcGxh
eU5hbWUudG9TdHJpbmcoKTsKLSAgICB9CisgICAgCisgICAgaWYgKHRyYWNrLT5pc0Nsb3NlZENh
cHRpb25zKCkpCisgICAgICAgIHJldHVybiBjbG9zZWRDYXB0aW9uVHJhY2tNZW51SXRlbVRleHQo
ZGlzcGxheU5hbWUudG9TdHJpbmcoKSk7CisgICAgCisgICAgcmV0dXJuIHNkaFRyYWNrTWVudUl0
ZW1UZXh0KGRpc3BsYXlOYW1lLnRvU3RyaW5nKCkpOworfQogCi0gICAgaWYgKCFsYWJlbC5pc0Vt
cHR5KCkpCi0gICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChsYWJlbCk7CitTdHJpbmcgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6ZGlzcGxheU5hbWVGb3JUcmFjayhUZXh0VHJhY2sqIHRyYWNr
KSBjb25zdAoreworICAgIHJldHVybiB0cmFja0Rpc3BsYXlOYW1lKHRyYWNrKTsKK30KIAotICAg
IEF0b21pY1N0cmluZyBsb2NhbGVEaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lRm9yTGFuZ3VhZ2VM
b2NhbGUobGFuZ3VhZ2UpOwotICAgIGlmICghbGFiZWwuY29udGFpbnMobG9jYWxlRGlzcGxheU5h
bWUpKSB7Ci0gICAgICAgIGlmIChkaXNwbGF5TmFtZS5sZW5ndGgoKSA+IDApCi0gICAgICAgICAg
ICBkaXNwbGF5TmFtZS5hcHBlbmQoIiAiKTsKLSAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKGxv
Y2FsZURpc3BsYXlOYW1lKTsKLSAgICB9CitzdGF0aWMgU3RyaW5nIGxhbmd1YWdlSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGxhbmd1YWdlQ29kZSkKK3sKKyAgICBpZiAobGFuZ3VhZ2VDb2RlLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGxhbmd1YWdlQ29kZTsKIAotICAgIGlmICh0cmFjay0+
a2luZCgpID09IHRyYWNrLT5jYXB0aW9uc0tleXdvcmQoKSkgewotICAgICAgICBpZiAodHJhY2st
PmlzQ2xvc2VkQ2FwdGlvbnMoKSkKLSAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZCgiIEND
Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZCgiIFNESCIp
OworICAgIFN0cmluZyBsb3dlcmNhc2VMYW5ndWFnZUNvZGUgPSBsYW5ndWFnZUNvZGUubG93ZXIo
KTsKKyAgICAKKyAgICBpZiAobG93ZXJjYXNlTGFuZ3VhZ2VDb2RlLmxlbmd0aCgpID49IDMgJiYg
KGxvd2VyY2FzZUxhbmd1YWdlQ29kZVsyXSA9PSAnXycgfHwgbG93ZXJjYXNlTGFuZ3VhZ2VDb2Rl
WzJdID09ICctJykpCisgICAgICAgIGxvd2VyY2FzZUxhbmd1YWdlQ29kZS50cnVuY2F0ZSgyKTsK
KyAgICAKKyAgICByZXR1cm4gbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlOworfQorCitzdGF0aWMgYm9v
bCB0ZXh0VHJhY2tDb21wYXJlKGNvbnN0IFJlZlB0cjxUZXh0VHJhY2s+JiBhLCBjb25zdCBSZWZQ
dHI8VGV4dFRyYWNrPiYgYikKK3sKKyAgICBTdHJpbmcgcHJlZmVycmVkTGFuZ3VhZ2VEaXNwbGF5
TmFtZSA9IGRpc3BsYXlOYW1lRm9yTGFuZ3VhZ2VMb2NhbGUobGFuZ3VhZ2VJZGVudGlmaWVyKGRl
ZmF1bHRMYW5ndWFnZSgpKSk7CisgICAgU3RyaW5nIGFMYW5ndWFnZURpc3BsYXlOYW1lID0gZGlz
cGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZShsYW5ndWFnZUlkZW50aWZpZXIoYS0+bGFuZ3VhZ2Uo
KSkpOworICAgIFN0cmluZyBiTGFuZ3VhZ2VEaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lRm9yTGFu
Z3VhZ2VMb2NhbGUobGFuZ3VhZ2VJZGVudGlmaWVyKGItPmxhbmd1YWdlKCkpKTsKKworICAgIC8v
IFRyYWNrcyBpbiB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZSBhcmUgYWx3YXlzIGF0IHRo
ZSB0b3Agb2YgdGhlIG1lbnUuCisgICAgYm9vbCBhSXNQcmVmZXJyZWRMYW5ndWFnZSA9ICFjb2Rl
UG9pbnRDb21wYXJlKGFMYW5ndWFnZURpc3BsYXlOYW1lLCBwcmVmZXJyZWRMYW5ndWFnZURpc3Bs
YXlOYW1lKTsKKyAgICBib29sIGJJc1ByZWZlcnJlZExhbmd1YWdlID0gIWNvZGVQb2ludENvbXBh
cmUoYkxhbmd1YWdlRGlzcGxheU5hbWUsIHByZWZlcnJlZExhbmd1YWdlRGlzcGxheU5hbWUpOwor
ICAgIGlmICgoYUlzUHJlZmVycmVkTGFuZ3VhZ2UgfHwgYklzUHJlZmVycmVkTGFuZ3VhZ2UpICYm
IChhSXNQcmVmZXJyZWRMYW5ndWFnZSAhPSBiSXNQcmVmZXJyZWRMYW5ndWFnZSkpCisgICAgICAg
IHJldHVybiBhSXNQcmVmZXJyZWRMYW5ndWFnZSA/IHRydWUgOiBmYWxzZTsKKworICAgIC8vIFRy
YWNrcyBub3QgaW4gdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2Ugc29ydCBmaXJzdCBieSBs
YW5ndWFnZSAuLi4KKyAgICBpZiAoY29kZVBvaW50Q29tcGFyZShhTGFuZ3VhZ2VEaXNwbGF5TmFt
ZSwgYkxhbmd1YWdlRGlzcGxheU5hbWUpKQorICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFy
ZShhTGFuZ3VhZ2VEaXNwbGF5TmFtZSwgYkxhbmd1YWdlRGlzcGxheU5hbWUpIDwgMDsKKworICAg
IC8vIC4uLiBidXQgd2hlbiB0cmFja3MgaGF2ZSB0aGUgc2FtZSBsYW5ndWFnZSwgbWFpbiBwcm9n
cmFtIGNvbnRlbnQgc29ydHMgbmV4dCBoaWdoZXN0IC4uLgorICAgIGJvb2wgYUlzTWFpbkNvbnRl
bnQgPSBhLT5pc01haW5Qcm9ncmFtQ29udGVudCgpOworICAgIGJvb2wgYklzTWFpbkNvbnRlbnQg
PSBiLT5pc01haW5Qcm9ncmFtQ29udGVudCgpOworICAgIGlmICgoYUlzTWFpbkNvbnRlbnQgfHwg
YklzTWFpbkNvbnRlbnQpICYmIChhSXNNYWluQ29udGVudCAhPSBiSXNNYWluQ29udGVudCkpCisg
ICAgICAgIHJldHVybiBhSXNNYWluQ29udGVudCA/IHRydWUgOiBmYWxzZTsKKworICAgIC8vIC4u
LiBhbmQgbWFpbiBwcm9ncmFtIHRyYWtjcyBzb3J0IGhpZ2hlciB0aGFuIENDIHRyYWNrcyAuLi4K
KyAgICBib29sIGFJc0NDID0gYS0+aXNDbG9zZWRDYXB0aW9ucygpOworICAgIGJvb2wgYklzQ0Mg
PSBiLT5pc0Nsb3NlZENhcHRpb25zKCk7CisgICAgaWYgKChhSXNDQyB8fCBiSXNDQykgJiYgKGFJ
c0NDICE9IGJJc0NDKSkgeworICAgICAgICBpZiAoYUlzQ0MpCisgICAgICAgICAgICByZXR1cm4g
YUlzTWFpbkNvbnRlbnQgPyB0cnVlIDogZmFsc2U7CisgICAgICAgIGlmIChiSXNDQykKKyAgICAg
ICAgICAgIHJldHVybiBiSXNNYWluQ29udGVudCA/IHRydWUgOiBmYWxzZTsKICAgICB9CiAKLSAg
ICByZXR1cm4gZGlzcGxheU5hbWUudG9TdHJpbmcoKTsKKyAgICAvLyAuLi4gYW5kIHRyYWNrcyBv
ZiB0aGUgc2FtZSB0eXBlIGFuZCBsYW5ndWFnZSBzb3J0IGJ5IHRoZSBtZW51IGl0ZW0gdGV4dC4K
KyAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZSh0cmFja0Rpc3BsYXlOYW1lKGEuZ2V0KCkpLCB0
cmFja0Rpc3BsYXlOYW1lKGIuZ2V0KCkpKSA8IDA7CiB9CiAKK1ZlY3RvcjxSZWZQdHI8VGV4dFRy
YWNrPiA+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUo
VGV4dFRyYWNrTGlzdCogdHJhY2tMaXN0KQoreworICAgIEFTU0VSVCh0cmFja0xpc3QpOworCisg
ICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gdHJhY2tzRm9yTWVudTsKKyAgICBIYXNoU2V0
PFN0cmluZz4gbGFuZ3VhZ2VzSW5jbHVkZWQ7CisgICAgYm9vbCBwcmVmZXJzQWNjZXNzaWJpbGl0
eVRyYWNrcyA9IHVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDAsIGxlbmd0aCA9IHRyYWNrTGlzdC0+bGVuZ3RoKCk7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICBUZXh0VHJhY2sqIHRyYWNrID0gdHJhY2tMaXN0LT5pdGVtKGkpOworICAgICAgICBTdHJp
bmcgbGFuZ3VhZ2UgPSBkaXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKHRyYWNrLT5sYW5ndWFn
ZSgpKTsKKworICAgICAgICBpZiAodHJhY2stPmlzRWFzeVRvUmVhZCgpKSB7CisgICAgICAgICAg
ICBpZiAoIWxhbmd1YWdlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBsYW5ndWFnZXNJbmNs
dWRlZC5hZGQobGFuZ3VhZ2UpOworICAgICAgICAgICAgdHJhY2tzRm9yTWVudS5hcHBlbmQodHJh
Y2spOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAodHJh
Y2stPmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgaWYgKCFsYW5ndWFnZS5pc0VtcHR5KCkgJiYgdHJhY2stPmlzTWFpblByb2dy
YW1Db250ZW50KCkpIHsKKyAgICAgICAgICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VHJhY2sgPSB0
cmFjay0+a2luZCgpID09IHRyYWNrLT5jYXB0aW9uc0tleXdvcmQoKTsKKyAgICAgICAgICAgIGlm
IChwcmVmZXJzQWNjZXNzaWJpbGl0eVRyYWNrcykgeworICAgICAgICAgICAgICAgIC8vIEluIHRo
ZSBmaXJzdCBwYXNzLCBpbmNsdWRlIG9ubHkgY2FwdGlvbiB0cmFja3MgaWYgdGhlIHVzZXIgcHJl
ZmVycyBhY2Nlc3NpYmlsaXR5IHRyYWNrcy4KKyAgICAgICAgICAgICAgICBpZiAoIWlzQWNjZXNz
aWJpbGl0eVRyYWNrKSB7CisgICAgICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkNhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWM6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUgLSBza2lwcGluZyAlcyBi
ZWNhdXNlIGl0IGlzIE5PVCBhbiBhY2Nlc3NpYmlsaXR5IHRyYWNrIiwgbGFuZ3VhZ2UudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gSW4gdGhlIGZpcnN0
IHBhc3MsIG9ubHkgaW5jbHVkZSB0aGUgZmlyc3Qgbm9uLUNDIG9yIFNESCB0cmFjayB3aXRoIGVh
Y2ggbGFuZ3VhZ2UgaWYgdGhlIHVzZXIgcHJlZmVycyB0cmFuc2xhdGlvbiB0cmFja3MuCisgICAg
ICAgICAgICAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eVRyYWNrKSB7CisgICAgICAgICAgICAgICAg
ICAgIExPRyhNZWRpYSwgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNvcnRlZFRyYWNrTGlz
dEZvck1lbnUgLSBza2lwcGluZyAlcyBiZWNhdXNlIGl0IGlzIGFuIGFjY2Vzc2liaWxpdHkgdHJh
Y2siLCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChsYW5ndWFnZXNJbmNs
dWRlZC5jb250YWlucyhsYW5ndWFnZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HKE1lZGlh
LCAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSAtIHNr
aXBwaW5nICVzIGJlY2F1c2UgaXQgaXMgbm90IHRoZSBmaXJzdCB3aXRoIHRoaXMgbGFuZ3VhZ2Ui
LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
aWYgKCFsYW5ndWFnZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBsYW5ndWFnZXNJbmNsdWRlZC5h
ZGQobGFuZ3VhZ2UpOworICAgICAgICB0cmFja3NGb3JNZW51LmFwcGVuZCh0cmFjayk7CisgICAg
fQorCisgICAgLy8gTm93IHRoYXQgd2UgaGF2ZSBmaWx0ZXJlZCBmb3IgdGhlIHVzZXIncyBhY2Nl
c3NpYmlsaXR5L3RyYW5zbGF0aW9uIHByZWZlcmVuY2UsIGFkZCAgYWxsIHRyYWNrcyB3aXRoIGEg
dW5pcXVlIGxhbmd1YWdlIHdpdGhvdXQgcmVnYXJkIHRvIHRyYWNrIHR5cGUuCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsg
KytpKSB7CisgICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7Cisg
ICAgICAgIFN0cmluZyBsYW5ndWFnZSA9IGRpc3BsYXlOYW1lRm9yTGFuZ3VhZ2VMb2NhbGUodHJh
Y2stPmxhbmd1YWdlKCkpOworCisgICAgICAgIC8vIEFsbCBjYW5kaWRhdGVzIHdpdGggbm8gbGFu
Z3VnZSB3ZXJlIGFkZGVkIHRoZSBmaXJzdCB0aW1lIHRocm91Z2guCisgICAgICAgIGlmIChsYW5n
dWFnZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAodHJh
Y2stPmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpKQorICAgICAgICAgICAgY29udGludWU7
CisgCisgICAgICAgIGlmICghbGFuZ3VhZ2VzSW5jbHVkZWQuY29udGFpbnMobGFuZ3VhZ2UpICYm
IHRyYWNrLT5pc01haW5Qcm9ncmFtQ29udGVudCgpKSB7CisgICAgICAgICAgICBsYW5ndWFnZXNJ
bmNsdWRlZC5hZGQobGFuZ3VhZ2UpOworICAgICAgICAgICAgdHJhY2tzRm9yTWVudS5hcHBlbmQo
dHJhY2spOworICAgICAgICB9CisgICAgfQorCisgICAgbm9uQ29weWluZ1NvcnQodHJhY2tzRm9y
TWVudS5iZWdpbigpLCB0cmFja3NGb3JNZW51LmVuZCgpLCB0ZXh0VHJhY2tDb21wYXJlKTsKKwor
ICAgIHJldHVybiB0cmFja3NGb3JNZW51OworfQorICAgIAogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFZJREVPX1RSQUNLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAkocmV2
aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTQsOCArMTU0LDEwIEBAIFN0cmluZyBwcmVmZXJyZWRMYW5ndWFn
ZUZyb21MaXN0KGNvbnN0IFYKIFN0cmluZyBkaXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKGNv
bnN0IFN0cmluZyYgbG9jYWxlTmFtZSkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFs
b2NhbGVOYW1lLmlzTnVsbCgpICYmICFsb2NhbGVOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIENGTG9jYWxlQ29weURpc3BsYXlOYW1lRm9yUHJvcGVydHlWYWx1ZShDRkxvY2FsZUNvcHlD
dXJyZW50KCksIGtDRkxvY2FsZUlkZW50aWZpZXIsIGxvY2FsZU5hbWUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CisgICAgaWYgKCFsb2NhbGVOYW1lLmlzTnVsbCgpICYmICFsb2NhbGVOYW1lLmlz
RW1wdHkoKSkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGN1cnJlbnRMb2NhbGUo
QWRvcHRDRiwgQ0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKKyAgICAgICAgcmV0dXJuIENGTG9jYWxl
Q29weURpc3BsYXlOYW1lRm9yUHJvcGVydHlWYWx1ZShjdXJyZW50TG9jYWxlLmdldCgpLCBrQ0ZM
b2NhbGVJZGVudGlmaWVyLCBsb2NhbGVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAg
IH0KICNlbmRpZgogICAgIHJldHVybiBsb2NhbGVOYW1lOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAJKHJldmlzaW9uIDE0NjIwNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDI3LDggKzEwMjcsMzYgQEAgU3RyaW5nIHRleHRUcmFja09mZlRleHQoKQogCiBT
dHJpbmcgdGV4dFRyYWNrTm9MYWJlbFRleHQoKQogewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
X0tFWSgiVW5rbm93biIsICJVbmtub3duIChjbG9zZWQgY2FwdGlvbnMgdHJhY2spIiwgIk1lbnUg
aXRlbSBsYWJlbCBmb3IgYSBjbG9zZWQgY2FwdGlvbnMgdHJhY2sgdGhhdCBoYXMgbm8gb3RoZXIg
bmFtZSIpOworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiVW5rbm93biIsICJVbmtub3du
ICh0ZXh0IHRyYWNrKSIsICJNZW51IGl0ZW0gbGFiZWwgZm9yIGEgdGV4dCB0cmFjayB0aGF0IGhh
cyBubyBvdGhlciBuYW1lIik7CiB9CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorU3RyaW5nIHRl
eHRUcmFja0NvdW50cnlBbmRMYW5ndWFnZU1lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIGNvdW50cnksIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCit7CisgICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAoJUAtJUApIiwg
IlRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBjb3VudHJ5
IGFuZCBsYW5ndWFnZSBvZiB0aGUgc3VidGl0bGUsIGluIHRoZSBmb3JtIG9mICdUaXRsZSAoTGFu
Z3VhZ2UtQ291bnRyeSknIiksIHRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGxhbmd1YWdl
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvdW50cnkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
Cit9CisKK1N0cmluZyB0ZXh0VHJhY2tMYW5ndWFnZU1lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQoreworICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgKCVAKSIsICJUZXh0IHRyYWNrIGRpc3BsYXkg
bmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIHN1YnRpdGxlLCBp
biB0aGUgZm9ybSBvZiAnVGl0bGUgKExhbmd1YWdlKSciKSwgdGl0bGUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgbGFuZ3VhZ2UuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Cit9CisKK1N0cmluZyBj
bG9zZWRDYXB0aW9uVHJhY2tNZW51SXRlbVRleHQoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVAIENDIiwgIlRl
eHQgdHJhY2sgY29udGFpbnMgY2xvc2VkIGNhcHRpb25zIiksIHRpdGxlLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOworfQorCitTdHJpbmcgc2RoVHJhY2tNZW51SXRlbVRleHQoY29uc3QgU3RyaW5n
JiB0aXRsZSkKK3sKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJ
TkcoIiVAIFNESCIsICJUZXh0IHRyYWNrIGNvbnRhaW5zIHN1YnRpdGxlcyBmb3IgdGhlIGRlYWYg
YW5kIGhhcmQgb2YgaGVhcmluZyIpLCB0aXRsZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKK30K
KworU3RyaW5nIGVhc3lSZWFkZXJUcmFja01lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcmIHRpdGxl
KQoreworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAg
RWFzeSBSZWFkZXIiLCAiVGV4dCB0cmFjayBjb250YWlucyBzaW1wbGlmaWVkICgzcmQgZ3JhZGUg
bGV2ZWwpIHN1YnRpdGxlcyIpLCB0aXRsZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKK30KKyNl
bmRpZgorCiAjZW5kaWYKIAogU3RyaW5nIHNuYXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCShyZXZpc2lv
biAxNDYyMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIFN0cmluZyB0ZXh0VHJhY2tTdWJ0aXRsZXNUZXh0KCk7CiAgICAgU3RyaW5nIHRleHRUcmFj
a09mZlRleHQoKTsKICAgICBTdHJpbmcgdGV4dFRyYWNrTm9MYWJlbFRleHQoKTsKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgU3RyaW5nIHRleHRUcmFja0NvdW50cnlBbmRMYW5ndWFnZU1lbnVJdGVt
VGV4dChjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGNvdW50cnksIGNvbnN0IFN0
cmluZyYgbGFuZ3VhZ2UpOworICAgIFN0cmluZyB0ZXh0VHJhY2tMYW5ndWFnZU1lbnVJdGVtVGV4
dChjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKKyAgICBTdHJp
bmcgY2xvc2VkQ2FwdGlvblRyYWNrTWVudUl0ZW1UZXh0KGNvbnN0IFN0cmluZyYpOworICAgIFN0
cmluZyBzZGhUcmFja01lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICBTdHJpbmcgZWFz
eVJlYWRlclRyYWNrTWVudUl0ZW1UZXh0KGNvbnN0IFN0cmluZyYpOworI2VuZGlmCiAjZW5kaWYK
IAogICAgIFN0cmluZyBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsVGl0bGUoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlLmgJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUs
NyArNTUsMTEgQEAgcHVibGljOgogCiAgICAgZW51bSBLaW5kIHsgU3VidGl0bGVzLCBDYXB0aW9u
cywgRGVzY3JpcHRpb25zLCBDaGFwdGVycywgTWV0YWRhdGEsIE5vbmUgfTsKICAgICB2aXJ0dWFs
IEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIFN1YnRpdGxlczsgfQorCiAgICAgdmlydHVhbCBi
b29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01haW5Qcm9ncmFtQ29udGVudCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFYXN5VG9SZWFkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyBy
ZXR1cm4gZW1wdHlBdG9tOyB9CiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBj
b25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpD
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAkocmV2aXNpb24gMTQ2
MjA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6
OktpbmQga2luZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NlZENh
cHRpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zT25seUZv
cmNlZFN1YnRpdGxlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01haW5Q
cm9ncmFtQ29udGVudCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0Vhc3lU
b1JlYWQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYWJlbCgp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzRGVmYXVsdCgpIGNvbnN0IE9WRVJSSURF
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRk9iakMubW0JKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1Miw5IEBAIFNPRlRfTElOS19D
TEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVySXQKICNkZWZpbmUgQVZNZWRpYUNoYXJhY3Rlcmlz
dGljVmlzdWFsIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCgpCiAjZGVmaW5lIEFWTWVk
aWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZSgp
CiAjZGVmaW5lIEFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiBnZXRBVk1lZGlhVHlwZUNsb3NlZENh
cHRpb24oKQotI2RlZmluZSBBVk1lZGlhVHlwZVZpZGVvIGdldEFWTWVkaWFUeXBlVmlkZW8oKQot
I2RlZmluZSBBVk1lZGlhVHlwZUF1ZGlvIGdldEFWTWVkaWFUeXBlQXVkaW8oKQorI2RlZmluZSBB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMgZ2V0QVZNZWRp
YUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkKKyNkZWZpbmUgQVZN
ZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQgZ2V0QVZNZWRpYUNoYXJhY3Rl
cmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQoKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNFYXN5VG9SZWFkIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQoKQogCiBTT0ZU
X0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiwgTlNT
dHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3Rl
cmlzdGljTGVnaWJsZSwgTlNTdHJpbmcgKikKQEAgLTYyLDYgKzYzLDEwIEBAIFNPRlRfTElOS19Q
T0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZXRhZGEKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRh
dGlvbiwgQVZNZWRpYVR5cGVTdWJ0aXRsZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVS
KEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFs
b2dGb3JBY2Nlc3NpYmlsaXR5LCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3Vu
ZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNj
ZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwg
QVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzLCBOU1N0cmlu
ZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNJc01haW5Qcm9ncmFtQ29udGVudCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSKEFW
Rm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRvUmVhZCwgTlNTdHJpbmcgKikK
KwogI2RlZmluZSBBVk1ldGFkYXRhSXRlbSBnZXRBVk1ldGFkYXRhSXRlbUNsYXNzKCkKICNkZWZp
bmUgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dCBnZXRBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0
Q2xhc3MoKQogI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlIGdldEFWTWVkaWFD
aGFyYWN0ZXJpc3RpY0xlZ2libGUoKQpAQCAtMTE5LDYgKzEyNCwzMCBAQCBib29sIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZPYmpDOjppc0NsCiAgICAgcmV0dXJuIFtbbV9tZWRpYVNlbGVjdGlv
bk9wdGlvbiBtZWRpYVR5cGVdIGlzRXF1YWxUb1N0cmluZzpBVk1lZGlhVHlwZUNsb3NlZENhcHRp
b25dOwogfQogCitib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpjb250YWluc09u
bHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdAoreworICAgIGlmICghbV9tZWRpYVNlbGVjdGlvbk9w
dGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBbbV9tZWRpYVNl
bGVjdGlvbk9wdGlvbiBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlc107Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakM6OmlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICByZXR1cm4gW21fbWVkaWFTZWxlY3Rpb25PcHRpb24gaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudF07Cit9CisKK2Jvb2wgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmlzRWFzeVRvUmVhZCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gW21fbWVkaWFTZWxlY3Rpb25PcHRpb24gaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNFYXN5VG9SZWFkXTsKK30KKwogQXRvbWljU3RyaW5nIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpsYWJlbCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX21l
ZGlhU2VsZWN0aW9uT3B0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxTZXR0aW5ncy5oIgogCisj
aW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0zNCw2
ICszNSw3IEBACiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJMb2NhbGVUb1Njcmlw
dE1hcHBpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAj
aW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKQEAgLTQyNiwxMiArNDI4LDE2IEBAIHZvaWQg
SW50ZXJuYWxTZXR0aW5nczo6c2V0U2hvdWxkRGlzcGxheVQKICAgICBJbnRlcm5hbFNldHRpbmdz
R3VhcmRGb3JTZXR0aW5ncygpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmICgh
cGFnZSgpKQorICAgICAgICByZXR1cm47CisgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogY2Fw
dGlvblByZWZlcmVuY2VzID0gcGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpOwor
CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGtpbmQsICJTdWJ0aXRsZXMiKSkKLSAgICAgICAg
c2V0dGluZ3MoKS0+c2V0U2hvdWxkRGlzcGxheVN1YnRpdGxlcyhlbmFibGVkKTsKKyAgICAgICAg
Y2FwdGlvblByZWZlcmVuY2VzLT5zZXRVc2VyUHJlZmVyc1N1YnRpdGxlcyhlbmFibGVkKTsKICAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShraW5kLCAiQ2FwdGlvbnMiKSkKLSAgICAgICAg
c2V0dGluZ3MoKS0+c2V0U2hvdWxkRGlzcGxheUNhcHRpb25zKGVuYWJsZWQpOworICAgICAgICBj
YXB0aW9uUHJlZmVyZW5jZXMtPnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoZW5hYmxlZCk7CiAgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoa2luZCwgIlRleHREZXNjcmlwdGlvbnMiKSkKLSAg
ICAgICAgc2V0dGluZ3MoKS0+c2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoZW5hYmxl
ZCk7CisgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0VXNlclByZWZlcnNUZXh0RGVzY3Jp
cHRpb25zKGVuYWJsZWQpOwogICAgIGVsc2UKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogI2Vs
c2UKQEAgLTQ0NSwxMiArNDUxLDE2IEBAIGJvb2wgSW50ZXJuYWxTZXR0aW5nczo6c2hvdWxkRGlz
cGxheVRyYWMKICAgICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5nc1JldHVybihmYWxz
ZSk7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKCFwYWdlKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVy
ZW5jZXMgPSBwYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCk7CisKICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2Uoa2luZCwgIlN1YnRpdGxlcyIpKQotICAgICAgICByZXR1cm4gc2V0
dGluZ3MoKS0+c2hvdWxkRGlzcGxheVN1YnRpdGxlcygpOworICAgICAgICByZXR1cm4gY2FwdGlv
blByZWZlcmVuY2VzLT51c2VyUHJlZmVyc1N1YnRpdGxlcygpOwogICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShraW5kLCAiQ2FwdGlvbnMiKSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzKCktPnNo
b3VsZERpc3BsYXlDYXB0aW9ucygpOworICAgICAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2Vz
LT51c2VyUHJlZmVyc0NhcHRpb25zKCk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGtpbmQs
ICJUZXh0RGVzY3JpcHRpb25zIikpCi0gICAgICAgIHJldHVybiBzZXR0aW5ncygpLT5zaG91bGRE
aXNwbGF5VGV4dERlc2NyaXB0aW9ucygpOworICAgICAgICByZXR1cm4gY2FwdGlvblByZWZlcmVu
Y2VzLT51c2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMoKTsKIAogICAgIGVjID0gU1lOVEFYX0VS
UjsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTQ2MzQ0KQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAor
MjAxMy0wMy0xOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBbGxvdyBwb3J0cyBzcGVjaWZpYyB0ZXh0IHRyYWNrIG1lbnUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjgwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0
RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluOgorCiAyMDEzLTAzLTE4ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbV2luQ2Fpcm9dIEJ1
aWxkIFdpbkNhaXJvIHBvcnQgdW5kZXIgVlMyMDEwIApJbmRleDogU291cmNlL1dlYktpdC9XZWJL
aXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5l
cmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMu
ZGVmLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNiArNDE0LDcgQEAgRVhQT1JUUwogICAgICAg
ICA/c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWF9O
QFoKICAgICAgICAgP3NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkQFNldHRpbmdzQFdl
YkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9zZXRBdXRvZmlsbGVkQEhUTUxJbnB1dEVsZW1lbnRA
V2ViQ29yZUBAUUFFWF9OQFoKKyAgICAgICAgP2NhcHRpb25QcmVmZXJlbmNlc0BQYWdlR3JvdXBA
V2ViQ29yZUBAUUFFUEFWQ2FwdGlvblVzZXJQcmVmZXJlbmNlc0AyQFhaCiAKICNpZiBFTkFCTEUo
V09SS0VSUykKICAgICAgICAgP3dvcmtlclRocmVhZENvdW50QFdvcmtlclRocmVhZEBXZWJDb3Jl
QEBTQUlYWgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ2MjEwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDMtMTkgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgcG9ydHMgc3Bl
Y2lmaWMgdGV4dCB0cmFjayBtZW51CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTI4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRt
bDoKKyAgICAgICAgKiBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtbG9j
YWxpemVkLmh0bWw6CisgICAgICAgICogbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJh
Y2ttZW51LXNvcnRlZC5odG1sOgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRp
b25zLXRyYWNrbWVudS5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9tZWRpYS92aWRlby1j
b250cm9scy1jYXB0aW9ucy10cmFja21lbnUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtbG9jYWxpemVk
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tY29udHJv
bHMtY2FwdGlvbnMtdHJhY2ttZW51LXNvcnRlZC1leHBlY3RlZC50eHQ6CisKIDIwMTMtMDMtMTkg
IEpvaG4gSi4gQmFydG9uICA8am9obmpiYXJ0b25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IEFkZCBpZnJhbWUgb3B0aW9uIHRvIGluc3BlY3RlZFdpbmRvdy5ldmFsKCkg
ZXh0ZW5zaW9uIEFQSQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2Fw
dGlvbnMtdHJhY2ttZW51LWxvY2FsaXplZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1sb2NhbGl6ZWQuaHRtbAko
cmV2aXNpb24gMTQ2MjA1KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2Fw
dGlvbnMtdHJhY2ttZW51LWxvY2FsaXplZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0
NCw4IEBACiAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIml0ZW0udGV4dENvbnRlbnQiLCAiRW5n
bGlzaCBDQyIpOwogCiAgICAgICAgICAgICBpdGVtID0gY2FwdGlvbnNFbnRyaWVzWzJdOwotICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+VGhpcmQgaXRlbSBpbiBjYXB0aW9ucyBtZW51IHNo
b3VsZCBiZSBsYWJlbGxlZCAnVW5rbm93biciKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
aXRlbS50ZXh0Q29udGVudCIsICJVbmtub3duIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUo
Ijxicj5UaGlyZCBpdGVtIGluIGNhcHRpb25zIG1lbnUgc2hvdWxkIGJlIGxhYmVsbGVkICdVbmtu
b3duIFNESCciKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiaXRlbS50ZXh0Q29udGVudCIs
ICJVbmtub3duIFNESCIpOwogCiAgICAgICAgICAgICBpdGVtID0gY2FwdGlvbnNFbnRyaWVzWzNd
OwogICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+Rm91cnRoIGl0ZW0gaW4gY2FwdGlvbnMg
bWVudSBzaG91bGQgYmUgbGFiZWxsZWQgJ1Vua25vd24nIik7CkluZGV4OiBMYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2tt
ZW51LXNvcnRlZC5odG1sCShyZXZpc2lvbiAxNDYyMDUpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTcsMTEgKzcsMTYgQEAKICAgICAgICAgPHNjcmlwdCBzcmM9InZpZGVvLXRlc3QuanMi
Pjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0idHJhY2ttZW51LXRlc3QuanMiPjwvc2Ny
aXB0PgogICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIHRlc3QgPSAwOwogICAgICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCi0gICAgICAgICAgICBmdW5jdGlvbiB0ZXN0U29ydGVkTWVudSgpCisg
ICAgICAgICAgICBmdW5jdGlvbiB0ZXh0VHJhY2tNZW51SXRlbXMoKQogICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIC8vIFNob3cgYW5kIGhpZGUgdGhlIG1lbnUgdG8gZm9yY2UgYSByZWNh
bGN1bGF0aW9uLgorICAgICAgICAgICAgICAgIGNsaWNrQ0NCdXR0b24oKTsKKyAgICAgICAgICAg
ICAgICBjbGlja0NDQnV0dG9uKCk7CisKICAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0RWxl
bWVudCA9IGdldFRyYWNrTGlzdEVsZW1lbnQoKTsKICAgICAgICAgICAgICAgICBpZiAoIXRyYWNr
TGlzdEVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwLDI1ICsyNSw1
NCBAQAogICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiVGhlcmUgc2hvdWxkIGJlIGEgdWwg
ZWxlbWVudCBpbiB0cmFjayBsaXN0IG1lbnUiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2YXIgbGFzdFRyYWNrTGFiZWwg
PSBudWxsOwotICAgICAgICAgICAgICAgIHZhciB0cmFja0xpc3RJdGVtcyA9IHRyYWNrTGlzdFNl
Y3Rpb24ucXVlcnlTZWxlY3RvckFsbCgibGkiKTsKLSAgICAgICAgICAgICAgICBpZiAoIXRyYWNr
TGlzdEl0ZW1zIHx8IHRyYWNrTGlzdEl0ZW1zLmxlbmd0aCAhPSA3KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGZhaWxUZXN0KCJUaGVyZSBzaG91bGQgYmUgc2V2ZW4gbGkgZWxlbWVudHMgaW4gdGhl
IG1lbnUiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRyYWNrTGlzdEl0ZW1zLmxlbmd0
aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gdHJhY2tMaXN0SXRlbXNb
al07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChqID09IDApCi0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2dSZXN1bHQoaXRlbS50ZXh0Q29udGVudCA9PSAiT2ZmIiwgIkZpcnN0IGl0ZW0gc2hv
dWxkIGJlIGxhYmVsbGVkIG9mZiIpOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChsYXN0VHJhY2tMYWJlbCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2dSZXN1bHQoaXRlbS50ZXh0Q29udGVudCA+IGxhc3RUcmFja0xhYmVsLCBs
YXN0VHJhY2tMYWJlbCArICIgY29tZXMgYmVmb3JlICIgKyBpdGVtLnRleHRDb250ZW50KTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b2dSZXN1bHQodHJ1ZSwgaXRlbS50ZXh0Q29udGVudCArICIgaXMgdGhlIGZpcnN0IHJlYWwgaXRl
bSBpbiB0aGUgbGlzdCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFRyYWNrTGFiZWwg
PSBpdGVtLnRleHRDb250ZW50OwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRyYWNrTGlzdFNlY3Rpb24ucXVlcnlTZWxlY3RvckFsbCgibGkiKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gdGVzdFNvcnRlZE1lbnUoKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAodGVzdCkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIjxicj48aT4qKiBUZXN0IHdpdGggcHJlZmVycmVkIGxhbmd1YWdlIHNldCB0byBFbmdsaXNo
LCB0cmFjayB0eXBlIHNldCB0byBjYXB0aW9uczwiICsgIi9pPiIpOworICAgICAgICAgICAgICAg
ICAgICBydW4oImludGVybmFscy5zZXR0aW5ncy5zZXRTaG91bGREaXNwbGF5VHJhY2tLaW5kKCdD
YXB0aW9ucycsIHRydWUpIik7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0
KHRlc3RTb3J0ZWRNZW51LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIHRyYWNrTWVudUl0ZW1zID0g
dGV4dFRyYWNrTWVudUl0ZW1zKCk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dHJhY2tNZW51SXRlbXNbMF0udGV4dENvbnRlbnQiLCAiT2ZmIik7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRlbXNbMV0udGV4dENvbnRlbnQiLCAidSAoRW5n
bGlzaCkgU0RIIik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51
SXRlbXNbMl0udGV4dENvbnRlbnQiLCAieSAoRW5nbGlzaC1BdXN0cmFsaWEpIFNESCIpOworICAg
ICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zWzNdLnRleHRDb250
ZW50IiwgInYgKEVuZ2xpc2gpIik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dHJhY2tNZW51SXRlbXNbNF0udGV4dENvbnRlbnQiLCAieCAoRW5nbGlzaC1BdXN0cmFsaWEpIik7
CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRlbXNbNV0udGV4
dENvbnRlbnQiLCAidyAoSmFwYW5lc2UpIFNESCIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zWzZdLnRleHRDb250ZW50IiwgInogKEphcGFuZXNlKSIp
OworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3MubGVu
Z3RoIiwgNik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRl
bXMubGVuZ3RoIiwgNyk7CisKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+
PGk+KiogQ2hhbmdlIHByZWZlcnJlZCBsYW5ndWFnZSB0byBKYXBhbmVzZSwgY2hhbmdlIHByZWZl
cmVuY2UgdG8gc3VidGl0bGVzPCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAgICAgIHJ1bigi
aW50ZXJuYWxzLnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoWydqYSddKSIpOworICAgICAgICAg
ICAgICAgICAgICBydW4oImludGVybmFscy5zZXR0aW5ncy5zZXRTaG91bGREaXNwbGF5VHJhY2tL
aW5kKCdDYXB0aW9ucycsIGZhbHNlKSIpOworICAgICAgICAgICAgICAgICAgICBydW4oImludGVy
bmFscy5zZXR0aW5ncy5zZXRTaG91bGREaXNwbGF5VHJhY2tLaW5kKCdTdWJ0aXRsZXMnLCB0cnVl
KSIpOworCisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHRlc3RTb3J0ZWRN
ZW51LCAwKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2Ug
MjoKKyAgICAgICAgICAgICAgICAgICAgdHJhY2tNZW51SXRlbXMgPSB0ZXh0VHJhY2tNZW51SXRl
bXMoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1sw
XS50ZXh0Q29udGVudCIsICJPZmYiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJ0cmFja01lbnVJdGVtc1sxXS50ZXh0Q29udGVudCIsICJ6IChKYXBhbmVzZSkiKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1syXS50ZXh0Q29udGVu
dCIsICJ2IChFbmdsaXNoKSIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRy
YWNrTWVudUl0ZW1zWzNdLnRleHRDb250ZW50IiwgInggKEVuZ2xpc2gtQXVzdHJhbGlhKSIpOwor
ICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3MubGVuZ3Ro
IiwgNik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRlbXMu
bGVuZ3RoIiwgNCk7CisKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAg
ICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisKKyAgICAgICAgICAg
ICAgICArK3Rlc3Q7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0
KCkKQEAgLTUxLDE0ICs4NSwxNCBAQAogICAgIDwvaGVhZD4KIAogICAgIDxib2R5IG9ubG9hZD0i
c3RhcnQoKSI+Ci0gICAgICAgIDxwPlRlc3QgdGhhdCBjYXB0aW9ucyBhbmQgc3VidGl0bGVzIGFy
ZSBzb3J0ZWQgaW4gdGhlIG1lbnUuPC9wPgorICAgICAgICA8cD5UZXN0IHRoYXQgY2FwdGlvbnMg
YW5kIHN1YnRpdGxlcyBhcmUgc29ydGVkIGluIHRoZSBtZW51IGFjY29yZGluZyB0byB1c2VyIHBy
ZWZlcmVuY2VzLjwvcD4KICAgICAgICAgPHZpZGVvIHdpZHRoPSI1MDAiIGhlaWdodD0iMzAwIiBj
b250cm9scz4KLSAgICAgICAgICAgIDx0cmFjayBsYWJlbD0iYyIga2luZD0iY2FwdGlvbnMiIHNy
Yz0idHJhY2svY2FwdGlvbnMtd2VidnR0L2NhcHRpb25zLWZhc3QudnR0IiBzcmNsYW5nPSJqYSI+
Ci0gICAgICAgICAgICA8dHJhY2sgbGFiZWw9ImIiIGtpbmQ9ImNhcHRpb25zIiBzcmM9InRyYWNr
L2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZW4tYXUiPgotICAg
ICAgICAgICAgPHRyYWNrIGxhYmVsPSJhIiBraW5kPSJjYXB0aW9ucyIgc3JjPSJ0cmFjay9jYXB0
aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9ImVuIj4KLSAgICAgICAgICAg
IDx0cmFjayBsYWJlbD0iYiIga2luZD0ic3VidGl0bGVzIiBzcmM9InRyYWNrL2NhcHRpb25zLXdl
YnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iamEiPgotICAgICAgICAgICAgPHRyYWNr
IGxhYmVsPSJhIiBraW5kPSJzdWJ0aXRsZXMiIHNyYz0idHJhY2svY2FwdGlvbnMtd2VidnR0L2Nh
cHRpb25zLWZhc3QudnR0IiBzcmNsYW5nPSJlbi1hdSI+Ci0gICAgICAgICAgICA8dHJhY2sgbGFi
ZWw9ImMiIGtpbmQ9InN1YnRpdGxlcyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlv
bnMtZmFzdC52dHQiIHNyY2xhbmc9ImVuIj4KKyAgICAgICAgICAgIDx0cmFjayBsYWJlbD0ieiIg
a2luZD0ic3VidGl0bGVzIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0
LnZ0dCIgc3JjbGFuZz0iamEiPgorICAgICAgICAgICAgPHRyYWNrIGxhYmVsPSJ5IiBraW5kPSJj
YXB0aW9ucyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNy
Y2xhbmc9ImVuLWF1Ij4KKyAgICAgICAgICAgIDx0cmFjayBsYWJlbD0ieCIga2luZD0ic3VidGl0
bGVzIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFu
Zz0iZW4tYXUiPgorICAgICAgICAgICAgPHRyYWNrIGxhYmVsPSJ3IiBraW5kPSJjYXB0aW9ucyIg
c3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9Imph
Ij4KKyAgICAgICAgICAgIDx0cmFjayBsYWJlbD0idiIga2luZD0ic3VidGl0bGVzIiBzcmM9InRy
YWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZW4iPgorICAg
ICAgICAgICAgPHRyYWNrIGxhYmVsPSJ1IiBraW5kPSJjYXB0aW9ucyIgc3JjPSJ0cmFjay9jYXB0
aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9ImVuIj4KICAgICAgICAgPC92
aWRlbz4KICAgICA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRl
by1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUuaHRtbAkocmV2aXNp
b24gMTQ2MjA1KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMt
dHJhY2ttZW51Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE1LDYgKzE1LDcgQEAKICAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiogQWRkIGFub3RoZXIgdGV4dCB0cmFjay4iKTsK
ICAgICAgICAgICAgICAgICBydW4oJ3ZpZGVvLmFkZFRleHRUcmFjaygiY2FwdGlvbnMiLCAiQ29t
bWVudGFyeSIsICJydSIpJyk7CiAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQodHVy
bkNhcHRpb25zT24sIDEwMCk7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gdHJhY2tNZW51TGlzdCgpCkBAIC0z
OSwxMCArNDAsMTAgQEAKIAogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdE1lbnUoKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHZhciB0cmFja0xpc3RJdGVtcyA9IHRyYWNrTWVudUxp
c3QoKTsKKyAgICAgICAgICAgICAgICB0cmFja0xpc3RJdGVtcyA9IHRyYWNrTWVudUxpc3QoKTsK
ICAgICAgICAgICAgICAgICB2YXIgZXhwZWN0ZWRJdGVtQ291bnQgPSB2aWRlby50ZXh0VHJhY2tz
Lmxlbmd0aCArIDE7CiAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUaGVyZSBzaG91bGQg
YmUgIiArIGV4cGVjdGVkSXRlbUNvdW50ICsgIiBpdGVtcyBpbiB0aGUgbWVudS4iKTsKLSAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQodHJhY2tMaXN0SXRlbXMubGVuZ3RoLCBleHBlY3RlZEl0
ZW1Db3VudCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja0xpc3RJdGVtcy5s
ZW5ndGgiLCBleHBlY3RlZEl0ZW1Db3VudCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGZ1bmN0aW9uIHNlbGVjdENhcHRpb25NZW51SXRlbShpbmRleCwgbmV4dFN0ZXApCkBAIC02Miw3
ICs2Myw3IEBACiAgICAgICAgICAgICBmdW5jdGlvbiB0dXJuQ2FwdGlvbnNPbigpCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIqKiogVHVybmluZyBjYXB0aW9u
cyBvbiIpOwotICAgICAgICAgICAgICAgIC8vIENsaWNrIG9uIHRoZSB0aGlyZCBpdGVtLCB3aGlj
aCBpcyB0aGUgc2Vjb25kIHRyYWNrIChPZmYgaXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIG1lbnUp
CisgICAgICAgICAgICAgICAgLy8gQ2xpY2sgb24gdGhlIHNlY29uZCBpdGVtLCB3aGljaCBpcyB0
aGUgc2Vjb25kIHRyYWNrIChPZmYgaXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIG1lbnUpCiAgICAg
ICAgICAgICAgICAgc2VsZWN0Q2FwdGlvbk1lbnVJdGVtKDIsIHRlc3RDYXB0aW9uc1Zpc2libGUp
OwogICAgICAgICAgICAgfQogCkBAIC0xMTcsOCArMTE4LDggQEAKICAgICA8Ym9keSBvbmxvYWQ9
InN0YXJ0KCkiPgogICAgICAgICA8cD5UZXN0IHRoYXQgd2UgYXJlIGFibGUgdG8gdHJpZ2dlciB0
aGUgbGlzdCBvZiBjYXB0aW9ucywgYW5kIHNlbGVjdCBmcm9tIHRoZSBsaXN0LjwvcD4KICAgICAg
ICAgPHZpZGVvIHdpZHRoPSI1MDAiIGhlaWdodD0iMzAwIiBjb250cm9scz4KKyAgICAgICAgICAg
IDx0cmFjayBraW5kPSJjYXB0aW9ucyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlv
bnMtZmFzdC52dHQiIHNyY2xhbmc9ImZyIj4KICAgICAgICAgICAgIDx0cmFjayBraW5kPSJjYXB0
aW9ucyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNyY2xh
bmc9ImVuIj4KLSAgICAgICAgICAgIDx0cmFjayBraW5kPSJjYXB0aW9ucyIgc3JjPSJ0cmFjay9j
YXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9ImVuLWF1Ij4KICAgICAg
ICAgICAgIDx0cmFjayBraW5kPSJjYXB0aW9ucyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQv
Y2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9ImphIj4KICAgICAgICAgPC92aWRlbz4KICAgICA8
L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay11c2VyLXByZWZlcmVu
Y2VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
cmFjay11c2VyLXByZWZlcmVuY2VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ2MjA1KQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4LDEwICsxOCwxMCBAQCBFWFBFQ1RFRCAoZXZlbnQudGFy
Z2V0LnJlYWR5U3RhdGUgPT0gJzInCiAKIFRlc3QgMzogc2VsZWN0ICdmcicgdHJhY2sgZnJvbSBt
ZW51CiAtIHNob3cgY2FwdGlvbnMgbWVudS4KLUVYUEVDVEVEICh0cmFja01lbnVJdGVtc1sxXS5j
bGFzc05hbWUgPT0gJycpIE9LCi1FWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbMl0uY2xhc3NOYW1l
ID09ICcnKSBPSwotRVhQRUNURUQgKHRyYWNrTWVudUl0ZW1zWzNdLmNsYXNzTmFtZSA9PSAnc2Vs
ZWN0ZWQnKSBPSwotLSBjbGljayBvbiBtZW51IGl0ZW0gMi4KK0VYUEVDVEVEICh0cmFja01lbnVJ
dGVtc1ttZW51SW5kZXhGb3JMYW5ndWFnZSgnRnJlbmNoJyldLmNsYXNzTmFtZSA9PSAnJykgT0sK
K0VYUEVDVEVEICh0cmFja01lbnVJdGVtc1ttZW51SW5kZXhGb3JMYW5ndWFnZSgnRW5nbGlzaCcp
XS5jbGFzc05hbWUgPT0gJycpIE9LCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbbWVudUluZGV4
Rm9yTGFuZ3VhZ2UoJ05vcndlZ2lhbicpXS5jbGFzc05hbWUgPT0gJ3NlbGVjdGVkJykgT0sKKy0g
Y2xpY2sgb24gJ0ZyZW5jaCcgbWVudSBpdGVtLgogRVZFTlQobG9hZCkKIEVYUEVDVEVEIChldmVu
dC50YXJnZXQuc3JjbGFuZyA9PSAnZnInKSBPSwogRVhQRUNURUQgKGV2ZW50LnRhcmdldC5yZWFk
eVN0YXRlID09ICcyJykgT0sKQEAgLTM4LDcgKzM4LDcgQEAgRVhQRUNURUQgKHZpZGVvLnRleHRU
cmFja3NbMl0ubGFuZ3VhZ2UgPQogCiBUZXN0IDU6IHR1cm5pbmcgY2FwdGlvbnMgb2ZmIGZyb20g
bWVudSBkaXNhYmxlcyBjYXB0aW9uIHNlbGVjdGlvbgogLSBzaG93IGNhcHRpb25zIG1lbnUuCi0t
IGNsaWNrIG9uIG1lbnUgaXRlbSAwLgorLSBjbGljayBvbiAnT2ZmJyBtZW51IGl0ZW0uCiAtIGNy
ZWF0aW5nIHRyYWNrcyBmb3I6IFtydSxqcCxlbl0uCiBFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNr
c1swXS5tb2RlID09ICdkaXNhYmxlZCcpIE9LCiBFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1sx
XS5tb2RlID09ICdkaXNhYmxlZCcpIE9LCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
cmFjay11c2VyLXByZWZlcmVuY2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sCShyZXZpc2lvbiAxNDYyMDUpCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay11c2VyLXByZWZlcmVuY2VzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCwyNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiB0
cmFja0xpc3RJdGVtczsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gc2Vs
ZWN0Q2FwdGlvbk1lbnVJdGVtKGluZGV4KQorICAgICAgICAgICAgZnVuY3Rpb24gbWVudUluZGV4
Rm9yTGFuZ3VhZ2UobGFuZ3VhZ2UpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCItIGNsaWNrIG9uIG1lbnUgaXRlbSAiICsgaW5kZXggKyAiLiIpOwogICAgICAg
ICAgICAgICAgIHZhciB0cmFja01lbnVJdGVtcyA9IHRyYWNrTWVudUxpc3QoKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHJhY2tNZW51SXRlbXMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHRyYWNrTWVudUl0ZW1zW2ldLnRleHRDb250ZW50LmluZGV4
T2YobGFuZ3VhZ2UpID49IDApCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIChpIDwgdHJhY2tNZW51SXRlbXMu
bGVuZ3RoKSA/IGkgOiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
c2VsZWN0Q2FwdGlvbk1lbnVJdGVtKGxhbmd1YWdlKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHZhciB0cmFja01lbnVJdGVtcyA9IHRyYWNrTWVudUxpc3QoKTsKKyAgICAgICAgICAg
ICAgICB2YXIgaW5kZXggPSBtZW51SW5kZXhGb3JMYW5ndWFnZShsYW5ndWFnZSk7CisgICAgICAg
ICAgICAgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgi
TWVudSBpdGVtICIgKyBsYW5ndWFnZSArICIgbm90IGZvdW5kIGluIHRyYWNrIGxpc3QgbWVudS4i
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiLSBjbGljayBvbiAnIiArIGxhbmd1YWdlICsgIicg
bWVudSBpdGVtLiIpOwogICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZFRyYWNrSXRlbSA9IHRy
YWNrTWVudUl0ZW1zW2luZGV4XTsKICAgICAgICAgICAgICAgICB2YXIgYm91bmRpbmdSZWN0ID0g
c2VsZWN0ZWRUcmFja0l0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAg
ICAgdmFyIHggPSBib3VuZGluZ1JlY3QubGVmdCArIGJvdW5kaW5nUmVjdC53aWR0aCAvIDI7CkBA
IC03MCw3ICs4Niw3IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdmFyIHRyYWNr
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHJhY2snKTsKICAgICAgICAgICAgICAgICB0cmFj
ay5zZXRBdHRyaWJ1dGUoJ2tpbmQnLCAiY2FwdGlvbnMiKTsKLSAgICAgICAgICAgICAgICB0cmFj
ay5zcmMgPSAnZGF0YTp0ZXh0L3Z0dCwnK2VuY29kZVVSSUNvbXBvbmVudCgiV0VCVlRUXG5cbjAw
OjAwOjAwLjAwMCAtLT4gMDA6MDA6MDEuMDAwXG5DYXB0aW9uIDFcbiIpOworICAgICAgICAgICAg
ICAgIHRyYWNrLnNyYyA9ICdkYXRhOnRleHQvdnR0LCcgKyBlbmNvZGVVUklDb21wb25lbnQoIldF
QlZUVFxuXG4wMDowMDowMC4wMDAgLS0+IDAwOjAwOjAxLjAwMFxuQ2FwdGlvbiAxXG4iKTsKICAg
ICAgICAgICAgICAgICB0cmFjay5zZXRBdHRyaWJ1dGUoJ3NyY2xhbmcnLCBsYW5ndWFnZSk7CiAg
ICAgICAgICAgICAgICAgdHJhY2suc2V0QXR0cmlidXRlKCdvbmxvYWQnLCAndHJhY2tMb2FkZWQo
KScpOwogICAgICAgICAgICAgICAgIGlmIChpc0RlZmF1bHQpIHsKQEAgLTEwOCwyMCArMTI0LDE3
IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSAz
OgotICAgICAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgZGVidWcgc2V0dGluZyBzbyBpdCBp
c24ndCBjb25zaWRlcmVkIGluIHRoZSB0cmFjayBzZWxlY3Rpb24gbG9naWMKLSAgICAgICAgICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFNob3VsZERpc3BsYXlUcmFja0tpbmQoJ0Nh
cHRpb25zJywgZmFsc2UpOwotCiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJy
PlRlc3QgMzogc2VsZWN0ICdmcicgdHJhY2sgZnJvbSBtZW51Iik7CiAgICAgICAgICAgICAgICAg
ICAgIHNob3dDYXB0aW9uTWVudSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgdHJhY2tNZW51SXRlbXMg
PSB0cmFja01lbnVMaXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJh
Y2tNZW51SXRlbXNbMV0uY2xhc3NOYW1lIiwgIiIpOwotICAgICAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zWzJdLmNsYXNzTmFtZSIsICIiKTsKLSAgICAgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1szXS5jbGFzc05hbWUiLCAic2Vs
ZWN0ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVt
c1ttZW51SW5kZXhGb3JMYW5ndWFnZSgnRnJlbmNoJyldLmNsYXNzTmFtZSIsICIiKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1ttZW51SW5kZXhGb3JM
YW5ndWFnZSgnRW5nbGlzaCcpXS5jbGFzc05hbWUiLCAiIik7CisgICAgICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRlbXNbbWVudUluZGV4Rm9yTGFuZ3VhZ2UoJ05vcndl
Z2lhbicpXS5jbGFzc05hbWUiLCAic2VsZWN0ZWQiKTsKIAotICAgICAgICAgICAgICAgICAgICBz
ZWxlY3RDYXB0aW9uTWVudUl0ZW0oMik7CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdENhcHRp
b25NZW51SXRlbSgiRnJlbmNoIik7CiAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkTGFuZ3Vh
Z2UgPSAnZnInOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtMTQzLDcgKzE1Niw3
IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSA3
OgotICAgICAgICAgICAgICAgICAgICBzZWxlY3RDYXB0aW9uTWVudUl0ZW0oMCk7CisgICAgICAg
ICAgICAgICAgICAgIHNlbGVjdENhcHRpb25NZW51SXRlbSgiT2ZmIik7CiAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZVRyYWNrRWxlbWVudHMoWyAncnUnLCAnanAnLCAnZW4nXSk7CiAgICAgICAg
ICAgICAgICAgICAgIHRpbWVyID0gc2V0VGltZW91dChuZXh0U3RlcCwgMTAwKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEv
dmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlv
bnMtdHJhY2ttZW51LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ2MjA1KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcsOSArNywxMCBAQCBSVU4oaW50ZXJuYWxz
LnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoCiAKICoqKiBBZGQgYW5vdGhlciB0ZXh0IHRyYWNr
LgogUlVOKHZpZGVvLmFkZFRleHRUcmFjaygiY2FwdGlvbnMiLCAiQ29tbWVudGFyeSIsICJydSIp
KQorCiAqKiogVHVybmluZyBjYXB0aW9ucyBvbgogVGhlcmUgc2hvdWxkIGJlIDUgaXRlbXMgaW4g
dGhlIG1lbnUuCi1FWFBFQ1RFRCAoNSA9PSAnNScpIE9LCitFWFBFQ1RFRCAodHJhY2tMaXN0SXRl
bXMubGVuZ3RoID09ICc1JykgT0sKIEVYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCA9
PSAnNCcpIE9LCiBUcmFjayAwIHNob3VsZCBiZSBzaG93aW5nCiBFWFBFQ1RFRCAodmlkZW8udGV4
dFRyYWNrc1swXS5tb2RlID09ICdzaG93aW5nJykgT0sKQEAgLTI1LDcgKzI2LDcgQEAgRVhQRUNU
RUQgKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLAogUlVOKHZpZGVvLnJlbW92ZUNoaWxk
KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInRyYWNrIilbMF0pKQogKioqIFR1cm5pbmcgY2Fw
dGlvbnMgb2ZmCiBUaGVyZSBzaG91bGQgYmUgNCBpdGVtcyBpbiB0aGUgbWVudS4KLUVYUEVDVEVE
ICg0ID09ICc0JykgT0sKK0VYUEVDVEVEICh0cmFja0xpc3RJdGVtcy5sZW5ndGggPT0gJzQnKSBP
SwogRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3MubGVuZ3RoID09ICczJykgT0sKIFRyYWNrIDAg
c2hvdWxkIGJlIGRpc2FibGVkCiBFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5tb2RlID09
ICdkaXNhYmxlZCcpIE9LCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvdmlk
ZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWxvY2FsaXplZC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWNvbnRyb2xz
LWNhcHRpb25zLXRyYWNrbWVudS1sb2NhbGl6ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNDYy
MDUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2Fw
dGlvbnMtdHJhY2ttZW51LWxvY2FsaXplZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEzLDggKzEzLDggQEAgRVhQRUNURUQgKGl0ZW0udGV4dENvbnRlbnQgPT0gJ09mZicpIE9LCiBT
ZWNvbmQgaXRlbSBpbiBjYXB0aW9ucyBtZW51IHNob3VsZCBiZSBsYWJlbGxlZCAnRW5nbGlzaCBD
QycKIEVYUEVDVEVEIChpdGVtLnRleHRDb250ZW50ID09ICdFbmdsaXNoIENDJyksIE9CU0VSVkVE
ICdVbmtub3duJyBGQUlMCiAKLVRoaXJkIGl0ZW0gaW4gY2FwdGlvbnMgbWVudSBzaG91bGQgYmUg
bGFiZWxsZWQgJ1Vua25vd24nCi1FWFBFQ1RFRCAoaXRlbS50ZXh0Q29udGVudCA9PSAnVW5rbm93
bicpIE9LCitUaGlyZCBpdGVtIGluIGNhcHRpb25zIG1lbnUgc2hvdWxkIGJlIGxhYmVsbGVkICdV
bmtub3duIFNESCcKK0VYUEVDVEVEIChpdGVtLnRleHRDb250ZW50ID09ICdVbmtub3duIFNESCcp
IE9LCiAKIEZvdXJ0aCBpdGVtIGluIGNhcHRpb25zIG1lbnUgc2hvdWxkIGJlIGxhYmVsbGVkICdV
bmtub3duJwogVHlwZUVycm9yOiAndW5kZWZpbmVkJyBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdpdGVtLnRleHRDb250ZW50JykKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9t
ZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tY29u
dHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LXNvcnRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0
NjIwNSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS92aWRlby1jb250cm9scy1j
YXB0aW9ucy10cmFja21lbnUtc29ydGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwxNSArMSwzMiBAQAotVGVzdCB0aGF0IGNhcHRpb25zIGFuZCBzdWJ0aXRsZXMgYXJlIHNvcnRl
ZCBpbiB0aGUgbWVudS4KK1Rlc3QgdGhhdCBjYXB0aW9ucyBhbmQgc3VidGl0bGVzIGFyZSBzb3J0
ZWQgaW4gdGhlIG1lbnUgYWNjb3JkaW5nIHRvIHVzZXIgcHJlZmVyZW5jZXMuCiAKIEVWRU5UKGNh
bnBsYXl0aHJvdWdoKQogCiAqKiogU2V0IHRoZSB1c2VyIGxhbmd1YWdlIHByZWZlcmVuY2UuCiBS
VU4oaW50ZXJuYWxzLnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoWydlbiddKSkKLUZpcnN0IGl0
ZW0gc2hvdWxkIGJlIGxhYmVsbGVkIG9mZiBPSwotYSBFbmdsaXNoIChBdXN0cmFsaWEpIGlzIHRo
ZSBmaXJzdCByZWFsIGl0ZW0gaW4gdGhlIGxpc3QgT0sKLWEgRW5nbGlzaCAoQXVzdHJhbGlhKSBj
b21lcyBiZWZvcmUgYSBFbmdsaXNoIFNESCBPSwotYSBFbmdsaXNoIFNESCBjb21lcyBiZWZvcmUg
YiBFbmdsaXNoIChBdXN0cmFsaWEpIFNESCBPSwotYiBFbmdsaXNoIChBdXN0cmFsaWEpIFNESCBj
b21lcyBiZWZvcmUgYiBKYXBhbmVzZSBPSwotYiBKYXBhbmVzZSBjb21lcyBiZWZvcmUgYyBFbmds
aXNoIE9LCi1jIEVuZ2xpc2ggY29tZXMgYmVmb3JlIGMgSmFwYW5lc2UgU0RIIE9LCisKKyoqIFRl
c3Qgd2l0aCBwcmVmZXJyZWQgbGFuZ3VhZ2Ugc2V0IHRvIEVuZ2xpc2gsIHRyYWNrIHR5cGUgc2V0
IHRvIGNhcHRpb25zCitSVU4oaW50ZXJuYWxzLnNldHRpbmdzLnNldFNob3VsZERpc3BsYXlUcmFj
a0tpbmQoJ0NhcHRpb25zJywgdHJ1ZSkpCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbMF0udGV4
dENvbnRlbnQgPT0gJ09mZicpIE9LCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbMV0udGV4dENv
bnRlbnQgPT0gJ3UgKEVuZ2xpc2gpIFNESCcpIE9LCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNb
Ml0udGV4dENvbnRlbnQgPT0gJ3kgKEVuZ2xpc2gtQXVzdHJhbGlhKSBTREgnKSBPSworRVhQRUNU
RUQgKHRyYWNrTWVudUl0ZW1zWzNdLnRleHRDb250ZW50ID09ICd2IChFbmdsaXNoKScpIE9LCitF
WFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbNF0udGV4dENvbnRlbnQgPT0gJ3ggKEVuZ2xpc2gtQXVz
dHJhbGlhKScpIE9LCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbNV0udGV4dENvbnRlbnQgPT0g
J3cgKEphcGFuZXNlKSBTREgnKSBPSworRVhQRUNURUQgKHRyYWNrTWVudUl0ZW1zWzZdLnRleHRD
b250ZW50ID09ICd6IChKYXBhbmVzZSknKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3Mu
bGVuZ3RoID09ICc2JykgT0sKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtcy5sZW5ndGggPT0gJzcn
KSBPSworCisqKiBDaGFuZ2UgcHJlZmVycmVkIGxhbmd1YWdlIHRvIEphcGFuZXNlLCBjaGFuZ2Ug
cHJlZmVyZW5jZSB0byBzdWJ0aXRsZXMKK1JVTihpbnRlcm5hbHMuc2V0VXNlclByZWZlcnJlZExh
bmd1YWdlcyhbJ2phJ10pKQorUlVOKGludGVybmFscy5zZXR0aW5ncy5zZXRTaG91bGREaXNwbGF5
VHJhY2tLaW5kKCdDYXB0aW9ucycsIGZhbHNlKSkKK1JVTihpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
U2hvdWxkRGlzcGxheVRyYWNrS2luZCgnU3VidGl0bGVzJywgdHJ1ZSkpCitFWFBFQ1RFRCAodHJh
Y2tNZW51SXRlbXNbMF0udGV4dENvbnRlbnQgPT0gJ09mZicpIE9LCitFWFBFQ1RFRCAodHJhY2tN
ZW51SXRlbXNbMV0udGV4dENvbnRlbnQgPT0gJ3ogKEphcGFuZXNlKScpIE9LCitFWFBFQ1RFRCAo
dHJhY2tNZW51SXRlbXNbMl0udGV4dENvbnRlbnQgPT0gJ3YgKEVuZ2xpc2gpJykgT0sKK0VYUEVD
VEVEICh0cmFja01lbnVJdGVtc1szXS50ZXh0Q29udGVudCA9PSAneCAoRW5nbGlzaC1BdXN0cmFs
aWEpJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCA9PSAnNicpIE9LCitF
WFBFQ1RFRCAodHJhY2tNZW51SXRlbXMubGVuZ3RoID09ICc0JykgT0sKKwogRU5EIE9GIFRFU1QK
IAo=
</data>
<flag name="commit-queue"
          id="215769"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194067</attachid>
            <date>2013-03-20 08:42:49 -0700</date>
            <delta_ts>2013-03-20 13:20:07 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>patch_16.txt</filename>
            <type>text/plain</type>
            <size>83155</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjIxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxMy0wMy0xOSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyBz
cGVjaWZpYyB0ZXh0IHRyYWNrIG1lbnUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZXhpc3RpbmcgdGVzdHMgdXBkYXRlZCBmb3Ig
Y2hhbmdlcy4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczog
QWRkIGxvY2FsaXphYmxlIHN0cmluZ3MgZm9yIHRleHQgdHJhY2sgbmFtZXMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IHVzZXJQcmVmZXJzQ2FwdGlvbnMgLT4gc2hvdWxk
U2hvd0NhcHRpb25zLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0U2Vs
ZWN0ZWRUZXh0VHJhY2spOiB0b2dnbGVUcmFja0F0SW5kZXggLT4gc2V0U2VsZWN0ZWRUZXh0VHJh
Y2suCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyUHJlZmVyc0NhcHRp
b25zKTogdXNlclByZWZlcnNDYXB0aW9ucyAtPiBzaG91bGRTaG93Q2FwdGlvbnMuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tL
aW5kKTogR2V0IHByZWZlcmVuY2VzIGZyb20gQ2FwdGlvblVzZXJQcmVmZXJlbmNlcworICAgICAg
ICAgICAgaW5zdGVhZCBvZiBmcm9tIFNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2spOiBSZW5hbWVkIGZyb20gdG9nZ2xlVHJh
Y2tBdEluZGV4LiBOb3cgdGFrZXMKKyAgICAgICAgICAgIGEgVGV4dFRyYWNrKiBpbnN0ZWFkIG9m
IGFuIGludC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWQpOiBEb24ndCBmb3JjZSBhIHJlY2FsY3VsYXRpb24gdW5sZXNzIAorICAg
ICAgICAgICAgY2FwdGlvbnMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgdG8gYXZvaWQgdW5uZWNlc3Nh
cnkgdGhyYXNoLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKTogVXNlIHRoZSBtZW51IHRvIHRyYWNrCisgICAgICAgICAgICBtYXAgaW5zdGVh
ZCBvZiBqdXN0IHRoZSB0cmFjayBpbmRleC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRlRGlzcGxheSk6IEJ1aWxkIGFu
ZCBjb25maWd1cmUgdGhlCisgICAgICAgICAgICBtZW51IGZyb20gdGhlIG1lbnUgdG8gdHJhY2sg
bWFwLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xp
c3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSk6IFN0YXJ0IHdpdGggYSBsaXN0CisgICAg
ICAgICAgICBvZiB0cmFja3MgYWxyZWFkeSBzb3J0ZWQgYWNjb3JkaW5nIHRvIHBsYXRmb3JtIHNw
ZWNpZmljIHJ1bGVzLiBCdWlsZCBhIG1lbnUgdG8gdHJhY2sgbWFwCisgICAgICAgICAgICBzbyB0
cmFja3MgYXJlIHJldGFpbmVkIHdoaWxlIHRoZSBtZW51IGlzIHZpc2libGUuCisgICAgICAgICog
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDoKKworICAgICAgICAqIGh0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6
dGV4dFRyYWNrUHJlZmVyZW5jZXNDaGFuZ2VkKTogQ2FsbCBjbG9zZWRDYXB0aW9uVHJhY2tzQ2hh
bmdlZCBzbyB0aGUKKyAgICAgICAgICAgIHRyYWNrIG1lbnUgd2lsbCBiZSByZWJ1aWx0IGJlZm9y
ZSBpdCBpcyBzaG93biBhZ2Fpbi4KKworICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRy
YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6Y29udGFpbnNPbmx5
Rm9yY2VkU3VidGl0bGVzKTogTmV3LCBwYXNzdGhyb3VnaCB0byB0aGUgcHJpdmF0ZSB0cmFjay4K
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6aXNNYWluUHJvZ3JhbUNvbnRlbnQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6aXNFYXN5VG9SZWFk
KTogRGl0dG8uCisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaDoKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0
VHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmNvbnRhaW5z
KTogTmV3LgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oOgorCisgICAgICAg
ICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMpOiBQdWxsIGluIGZy
b20gLmggZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp+
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6c2hvdWxkU2hvd0NhcHRpb25zKTogUmVuYW1lZCBmcm9tIHVzZXJQ
cmVmZXJzQ2FwdGlvbnMuIAorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6c2V0U2hvdWxkU2hvd0NhcHRpb25zKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclBy
ZWZlcnNTdWJ0aXRsZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzU3VidGl0bGVzKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVz
ZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2Fw
dGlvblVzZXJQcmVmZXJlbmNlczo6ZGlzcGxheU5hbWVGb3JUcmFjayk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c29ydGVkVHJhY2tMaXN0Rm9yTWVu
dSk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oOgorCisg
ICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmg6CisgICAgICAgICogcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6c2hvdWxkU2hvd0NhcHRpb25zKTogUmVuYW1lZCBmcm9tIHVz
ZXJQcmVmZXJzQ2FwdGlvbnMuIAorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYzo6dXNlclByZWZlcnNDYXB0aW9ucyk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzU3VidGl0bGVzKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjp0cmFja0Rpc3BsYXlOYW1lKTogVXBkYXRlIGxvZ2ljIHVzZWQgdG8gYnVp
bGQgdHJhY2sgdGl0bGUuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjOjpkaXNwbGF5TmFtZUZvclRyYWNrKTogQ2FsbCB0cmFja0Rpc3BsYXlOYW1lLgorICAgICAg
ICAoV2ViQ29yZTo6dGV4dFRyYWNrQ29tcGFyZSk6IFRleHQgdHJhY2sgdGl0bGUgc29ydCBjb21w
YXJpc29uIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYzo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSk6IE5ldy4gU29ydCB0aGUgbGlzdCBvZiB0cmFj
a3MKKyAgICAgICAgICAgIGFjY29yZGluZyB0byB0aXRsZSwgbGFuZ3VhZ2UsIGFuZCB1c2VyIHBy
ZWZlcmVuY2VzLgorCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZGlzcGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZSk6IERvbid0IGxlYWsgdGhlIENG
TG9jYWxlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRUcmFja0NvdW50cnlBbmRMYW5ndWFnZU1lbnVJdGVt
VGV4dCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRUcmFja0xhbmd1YWdlTWVudUl0ZW1U
ZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjbG9zZWRDYXB0aW9uVHJhY2tNZW51SXRl
bVRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNkaFRyYWNrTWVudUl0ZW1UZXh0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjplYXN5UmVhZGVyVHJhY2tNZW51SXRlbVRleHQpOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMp
OiBOZXcsIHJldHVybiBBVkZvdW5kYXRpb24gcHJvcGVydHkuCisgICAgICAgIChXZWJDb3JlOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQzo6aXNNYWluUHJvZ3JhbUNvbnRlbnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjppc0Vh
c3lUb1JlYWQpOiBEaXR0by4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRTaG91bGREaXNwbGF5
VHJhY2tLaW5kKTogU2V0IHNldHRpbmcgdmlhIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMKKyAgICAg
ICAgICAgIGluc3RlYWQgb2YgZnJvbSBTZXR0aW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsU2V0dGluZ3M6OnNob3VsZERpc3BsYXlUcmFja0tpbmQpOiBHZXQgc2V0dGluZyBmcm9tIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXMKKyAgICAgICAgICAgIGluc3RlYWQgb2YgZnJvbSBTZXR0aW5n
cy4KKwogMjAxMy0wMy0xOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KIAogICAgICAgICBbUXRdIFN1cHBvcnQga2VybmluZyBpbiBmYXN0IHBhdGggZm9u
dCByZW5kZXJpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFi
bGUuc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xv
Y2FsaXphYmxlLnN0cmluZ3MJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0Vu
Z2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQpAQCAtMTksMTIg
KzE5LDI3IEBACiAALwAqACAAdgBpAHMAaQBiAGwAZQAgAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAg
AHAAbAB1AGcALQBpAG4AIABoAG8AcwB0ACAAcAByAG8AYwBlAHMAcwAuACAAVABoAGUAIABmAGkA
cgBzAHQAIABhAHIAZwB1AG0AZQBuAHQAIABpAHMAIAB0AGgAZQAgAHAAbAB1AGcALQBpAG4AIABu
AGEAbQBlACAAYQBuAGQAIAB0AGgAZQAgAHMAZQBjAG8AbgBkACAAYQByAGcAdQBtAGUAbgB0ACAA
aQBzACAAdABoAGUAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4AIABuAGEAbQBlAC4AIAAqAC8ACiAA
IgAlAEAAIAAoACUAQAAgAEkAbgB0AGUAcgBuAGUAdAAgAHAAbAB1AGcALQBpAG4AKQAiACAAPQAg
ACIAJQBAACAAKAAlAEAAIABJAG4AdABlAHIAbgBlAHQAIABwAGwAdQBnAC0AaQBuACkAIgA7AAog
AAorAC8AKgAgAFQAZQB4AHQAIAB0AHIAYQBjAGsAIABkAGkAcwBwAGwAYQB5ACAAbgBhAG0AZQAg
AGYAbwByAG0AYQB0ACAAdABoAGEAdAAgAGkAbgBjAGwAdQBkAGUAcwAgAHQAaABlACAAbABhAG4A
ZwB1AGEAZwBlACAAbwBmACAAdABoAGUAIABzAHUAYgB0AGkAdABsAGUALAAgAGkAbgAgAHQAaABl
ACAAZgBvAHIAbQAgAG8AZgAgACcAVABpAHQAbABlACAAKABMAGEAbgBnAHUAYQBnAGUAKQAnACAA
KgAvAAorACIAJQBAACAAKAAlAEAAKQAiACAAPQAgACIAJQBAACAAKAAlAEAAKQAiADsACisACisA
LwAqACAAVABlAHgAdAAgAHQAcgBhAGMAawAgAGQAaQBzAHAAbABhAHkAIABuAGEAbQBlACAAZgBv
AHIAbQBhAHQAIAB0AGgAYQB0ACAAaQBuAGMAbAB1AGQAZQBzACAAdABoAGUAIABjAG8AdQBuAHQA
cgB5ACAAYQBuAGQAIABsAGEAbgBnAHUAYQBnAGUAIABvAGYAIAB0AGgAZQAgAHMAdQBiAHQAaQB0
AGwAZQAsACAAaQBuACAAdABoAGUAIABmAG8AcgBtACAAbwBmACAAJwBUAGkAdABsAGUAIAAoAEwA
YQBuAGcAdQBhAGcAZQAtAEMAbwB1AG4AdAByAHkAKQAnACAAKgAvAAorACIAJQBAACAAKAAlAEAA
LQAlAEAAKQAiACAAPQAgACIAJQBAACAAKAAlAEAALQAlAEAAKQAiADsACisACisALwAqACAAVABl
AHgAdAAgAHQAcgBhAGMAawAgAGMAbwBuAHQAYQBpAG4AcwAgAGMAbABvAHMAZQBkACAAYwBhAHAA
dABpAG8AbgBzACAAKgAvAAorACIAJQBAACAAQwBDACIAIAA9ACAAIgAlAEAAIABDAEMAIgA7AAor
AAorAC8AKgAgAFQAZQB4AHQAIAB0AHIAYQBjAGsAIABjAG8AbgB0AGEAaQBuAHMAIABzAGkAbQBw
AGwAaQBmAGkAZQBkACAAKAAzAHIAZAAgAGcAcgBhAGQAZQAgAGwAZQB2AGUAbAApACAAcwB1AGIA
dABpAHQAbABlAHMAIAAqAC8ACisAIgAlAEAAIABFAGEAcwB5ACAAUgBlAGEAZABlAHIAIgAgAD0A
IAAiACUAQAAgAEUAYQBzAHkAIABSAGUAYQBkAGUAcgAiADsACisACiAALwAqACAAdgBpAHMAaQBi
AGwAZQAgAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAgAG4AZQB0AHcAbwByAGsAIABwAHIAbwBjAGUA
cwBzAC4AIABUAGgAZQAgAGEAcgBnAHUAbQBlAG4AdAAgAGkAcwAgAHQAaABlACAAYQBwAHAAbABp
AGMAYQB0AGkAbwBuACAAbgBhAG0AZQAuACAAKgAvAAogACIAJQBAACAATgBlAHQAdwBvAHIAawBp
AG4AZwAiACAAPQAgACIAJQBAACAATgBlAHQAdwBvAHIAawBpAG4AZwAiADsACiAACiAALwAqACAA
dgBpAHMAaQBiAGwAZQAgAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAgAG8AZgBmAGwAaQBuAGUAIABz
AHQAbwByAGEAZwBlACAAcAByAG8AYwBlAHMAcwAuACAAVABoAGUAIABhAHIAZwB1AG0AZQBuAHQA
IABpAHMAIAB0AGgAZQAgAGEAcABwAGwAaQBjAGEAdABpAG8AbgAgAG4AYQBtAGUALgAgACoALwAK
IAAiACUAQAAgAE8AZgBmAGwAaQBuAGUAIABTAHQAbwByAGEAZwBlACIAIAA9ACAAIgAlAEAAIABP
AGYAZgBsAGkAbgBlACAAUwB0AG8AcgBhAGcAZQAiADsACiAACisALwAqACAAVABlAHgAdAAgAHQA
cgBhAGMAawAgAGMAbwBuAHQAYQBpAG4AcwAgAHMAdQBiAHQAaQB0AGwAZQBzACAAZgBvAHIAIAB0
AGgAZQAgAGQAZQBhAGYAIABhAG4AZAAgAGgAYQByAGQAIABvAGYAIABoAGUAYQByAGkAbgBnACAA
KgAvAAorACIAJQBAACAAUwBEAEgAIgAgAD0AIAAiACUAQAAgAFMARABIACIAOwAKKwAKIAAvACoA
IABWAGkAcwBpAGIAbABlACAAbgBhAG0AZQAgAG8AZgAgAHQAaABlACAAcwBoAGEAcgBlAGQAIAB3
AG8AcgBrAGUAcgAgAHAAcgBvAGMAZQBzAHMALgAgAFQAaABlACAAYQByAGcAdQBtAGUAbgB0ACAA
aQBzACAAdABoAGUAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4AIABuAGEAbQBlAC4AIAAqAC8ACiAA
IgAlAEAAIABTAGgAYQByAGUAZAAgAFcAbwByAGsAZQByACIAIAA9ACAAIgAlAEAAIABTAGgAYQBy
AGUAZAAgAFcAbwByAGsAZQByACIAOwAKIAAKQEAgLTUxNywxMiArNTMyLDEyIEBACiAALwAqACAA
VQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAgACoALwAKIAAiAFUAbgBkAGUAcgBsAGkA
bgBlACAAKABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACkAIgAgAD0AIAAiAFUAbgBk
AGUAcgBsAGkAbgBlACIAOwAKIAAKLQAvACoAIABNAGUAbgB1ACAAaQB0AGUAbQAgAGwAYQBiAGUA
bAAgAGYAbwByACAAYQAgAGMAbABvAHMAZQBkACAAYwBhAHAAdABpAG8AbgBzACAAdAByAGEAYwBr
ACAAdABoAGEAdAAgAGgAYQBzACAAbgBvACAAbwB0AGgAZQByACAAbgBhAG0AZQAgACoALwAKLQAi
AFUAbgBrAG4AbwB3AG4AIAAoAGMAbABvAHMAZQBkACAAYwBhAHAAdABpAG8AbgBzACAAdAByAGEA
YwBrACkAIgAgAD0AIAAiAFUAbgBrAG4AbwB3AG4AIgA7AAotAAogAC8AKgAgAFUAbgBrAG4AbwB3
AG4AIABmAGkAbABlAHMAaQB6AGUAIABGAFQAUAAgAGQAaQByAGUAYwB0AG8AcgB5ACAAbABpAHMA
dABpAG4AZwAgAGkAdABlAG0AIAAqAC8ACiAAIgBVAG4AawBuAG8AdwBuACAAKABmAGkAbABlAHMA
aQB6AGUAKQAiACAAPQAgACIAVQBuAGsAbgBvAHcAbgAiADsACiAACisALwAqACAATQBlAG4AdQAg
AGkAdABlAG0AIABsAGEAYgBlAGwAIABmAG8AcgAgAGEAIAB0AGUAeAB0ACAAdAByAGEAYwBrACAA
dABoAGEAdAAgAGgAYQBzACAAbgBvACAAbwB0AGgAZQByACAAbgBhAG0AZQAgACoALwAKKwAiAFUA
bgBrAG4AbwB3AG4AIAAoAHQAZQB4AHQAIAB0AHIAYQBjAGsAKQAiACAAPQAgACIAVQBuAGsAbgBv
AHcAbgAiADsACisACiAALwAqACAAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAgACoA
LwAKIAAiAFUAbgBsAGkAbgBrACAAKABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACkA
IgAgAD0AIAAiAFUAbgBsAGkAbgBrACIAOwAKIAAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIwLDcgKzMyMCw3
IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICAgICBpZiAoZG9j
dW1lbnQtPnBhZ2UoKSkgewogICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9u
UHJlZmVyZW5jZXMgPSBkb2N1bWVudC0+cGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNl
cygpOwogICAgICAgICBpZiAoY2FwdGlvblByZWZlcmVuY2VzLT51c2VySGFzQ2FwdGlvblByZWZl
cmVuY2VzKCkpCi0gICAgICAgICAgICBtX2Rpc2FibGVDYXB0aW9ucyA9ICFjYXB0aW9uUHJlZmVy
ZW5jZXMtPnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKKyAgICAgICAgICAgIG1fZGlzYWJsZUNhcHRp
b25zID0gIWNhcHRpb25QcmVmZXJlbmNlcy0+c2hvdWxkU2hvd0NhcHRpb25zKCk7CiAgICAgfQog
I2VuZGlmCiB9CkBAIC0yODYyLDcgKzI4NjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFNlbGVjdGVkVGV4dFRyCiAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7
CiAKICAgICBpZiAoIXBsYXRmb3JtVHJhY2spIHsKLSAgICAgICAgdG9nZ2xlVHJhY2tBdEluZGV4
KHRleHRUcmFja3NPZmZJbmRleCgpLCB0cnVlKTsKKyAgICAgICAgc2V0U2VsZWN0ZWRUZXh0VHJh
Y2soMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI4NzcsNyArMjg3Nyw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHIKIAogICAgIGlmIChpID09IG1f
dGV4dFRyYWNrcy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB0b2dnbGVUcmFja0F0
SW5kZXgoaSwgdHJ1ZSk7CisgICAgc2V0U2VsZWN0ZWRUZXh0VHJhY2sodGV4dFRyYWNrKTsKIH0K
IAogVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gPiBIVE1MTWVkaWFFbGVtZW50Ojpw
bGF0Zm9ybVRleHRUcmFja3MoKQpAQCAtMzA3Niw3ICszMDc2LDcgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50Ojp1c2VyUHJlZmVyc0NhcHRpbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBD
YXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBwYWdlLT5ncm91cCgp
LmNhcHRpb25QcmVmZXJlbmNlcygpOwotICAgIHJldHVybiBjYXB0aW9uUHJlZmVyZW5jZXMtPnVz
ZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSAmJiBjYXB0aW9uUHJlZmVyZW5jZXMtPnVzZXJQcmVm
ZXJzQ2FwdGlvbnMoKTsKKyAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzLT51c2VySGFzQ2Fw
dGlvblByZWZlcmVuY2VzKCkgJiYgY2FwdGlvblByZWZlcmVuY2VzLT5zaG91bGRTaG93Q2FwdGlv
bnMoKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlz
VHJhY2tLaW5kKFN0cmluZyBraW5kKSBjb25zdApAQCAtMzA4NCwxNSArMzA4NCwxOSBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJJc0ludGVyZXN0ZWRJCiAgICAgaWYgKG1fZGlzYWJsZUNh
cHRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5w
YWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDYXB0
aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBwYWdlLT5ncm91cCgpLmNh
cHRpb25QcmVmZXJlbmNlcygpOwogICAgIGJvb2wgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0
bGVzID0gbV9jbG9zZWRDYXB0aW9uc1Zpc2libGUgfHwgdXNlclByZWZlcnNDYXB0aW9ucygpOwog
CiAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpCi0gICAgICAg
IHJldHVybiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnNob3VsZERpc3BsYXlTdWJ0aXRsZXMoKSkg
fHwgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOworICAgICAgICByZXR1cm4gY2FwdGlv
blByZWZlcmVuY2VzLT51c2VyUHJlZmVyc1N1YnRpdGxlcygpIHx8IHVzZXJQcmVmZXJzQ2FwdGlv
bnNPclN1YnRpdGxlczsKICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29y
ZCgpKQotICAgICAgICByZXR1cm4gKHNldHRpbmdzICYmIHNldHRpbmdzLT5zaG91bGREaXNwbGF5
Q2FwdGlvbnMoKSkgfHwgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOworICAgICAgICBy
ZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzLT51c2VyUHJlZmVyc0NhcHRpb25zKCkgfHwgdXNlclBy
ZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOwogICAgIGlmIChraW5kID09IFRleHRUcmFjazo6ZGVz
Y3JpcHRpb25zS2V5d29yZCgpKQotICAgICAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3Mt
PnNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKCk7CisgICAgICAgIHJldHVybiBjYXB0aW9u
UHJlZmVyZW5jZXMtPnVzZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucygpIHx8IHVzZXJQcmVmZXJz
Q2FwdGlvbnNPclN1YnRpdGxlczsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTMxNzgsMjUg
KzMxODIsMjggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhYwogICAg
ICAgICB0cmFja1RvRW5hYmxlLT5zZXRNb2RlKFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSk7
CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlVHJhY2tBdEluZGV4KGludCBpbmRl
eCwgYm9vbCBleGNsdXNpdmUpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4
dFRyYWNrKFRleHRUcmFjayogdHJhY2tUb1NlbGVjdCkKIHsKICAgICBUZXh0VHJhY2tMaXN0KiB0
cmFja0xpc3QgPSB0ZXh0VHJhY2tzKCk7CiAgICAgaWYgKCF0cmFja0xpc3QgfHwgIXRyYWNrTGlz
dC0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCkt
PnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKSA6IDA7Ci0gICAgaWYgKGNhcHRp
b25QcmVmZXJlbmNlcykKLSAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzLT5zZXRVc2VyUHJlZmVy
c0NhcHRpb25zKGluZGV4ICE9IHRleHRUcmFja3NPZmZJbmRleCgpKTsKKyAgICBpZiAodHJhY2tU
b1NlbGVjdCAmJiAhdHJhY2tMaXN0LT5jb250YWlucyh0cmFja1RvU2VsZWN0KSkKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgZm9yIChpbnQgaSA9IDAsIGxlbmd0aCA9IHRyYWNrTGlzdC0+bGVuZ3Ro
KCk7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gdHJhY2tM
aXN0LT5pdGVtKGkpOwotICAgICAgICBpZiAoaSA9PSBpbmRleCkgeworICAgICAgICBpZiAoIXRy
YWNrVG9TZWxlY3QgfHwgdHJhY2sgIT0gdHJhY2tUb1NlbGVjdCkKKyAgICAgICAgICAgIHRyYWNr
LT5zZXRNb2RlKFRleHRUcmFjazo6ZGlzYWJsZWRLZXl3b3JkKCkpOworICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIHRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSk7
Ci0gICAgICAgICAgICBpZiAoY2FwdGlvblByZWZlcmVuY2VzICYmIHRyYWNrLT5sYW5ndWFnZSgp
Lmxlbmd0aCgpKQotICAgICAgICAgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0UHJlZmVy
cmVkTGFuZ3VhZ2UodHJhY2stPmxhbmd1YWdlKCkpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKGV4Y2x1c2l2ZSB8fCBpbmRleCA9PSBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzT2Zm
SW5kZXgoKSkKLSAgICAgICAgICAgIHRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6ZGlzYWJsZWRL
ZXl3b3JkKCkpOworICAgIH0KKworICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25Q
cmVmZXJlbmNlcyA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCktPnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKSA6IDA7CisgICAgaWYgKGNhcHRpb25QcmVmZXJlbmNl
cykgeworICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldFNob3VsZFNob3dDYXB0aW9ucyh0
cmFja1RvU2VsZWN0KTsKKyAgICAgICAgaWYgKHRyYWNrVG9TZWxlY3QgJiYgdHJhY2tUb1NlbGVj
dC0+bGFuZ3VhZ2UoKS5sZW5ndGgoKSkKKyAgICAgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+
c2V0UHJlZmVycmVkTGFuZ3VhZ2UodHJhY2tUb1NlbGVjdC0+bGFuZ3VhZ2UoKSk7CiAgICAgfQog
fQogCkBAIC00NTIwLDExICs0NTI3LDE1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlv
blByZWZlcmVuY2UKICAgICBpZiAoIWlzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZSA9IHRydWU7Ci0gICAgc2V0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSk7Ci0KICAgICBpZiAoaGFzTWVkaWFDb250
cm9scygpKQogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnRleHRUcmFja1ByZWZlcmVuY2VzQ2hh
bmdlZCgpOworCisgICAgYm9vbCBwcmVmZXJzQ2FwdGlvbnMgPSB1c2VyUHJlZmVyc0NhcHRpb25z
KCk7CisgICAgaWYgKG1fZGlzYWJsZUNhcHRpb25zID09ICFwcmVmZXJzQ2FwdGlvbnMpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UgPSB0cnVlOwor
ICAgIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShwcmVmZXJzQ2FwdGlvbnMpOwogfQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmln
dXJlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNp
b24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25maWd1
cmVUZXh0VHJhY2tzKCk7CiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tHcm91cChjb25zdCBU
cmFja0dyb3VwJik7CiAKLSAgICB2b2lkIHRvZ2dsZVRyYWNrQXRJbmRleChpbnQgaW5kZXgsIGJv
b2wgZXhjbHVzaXZlID0gdHJ1ZSk7CisgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRUcmFjayhUZXh0
VHJhY2sqKTsKICAgICBzdGF0aWMgaW50IHRleHRUcmFja3NPZmZJbmRleCgpIHsgcmV0dXJuIC0x
OyB9CiAgICAgc3RhdGljIGludCB0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCgpIHsgcmV0dXJuIC0y
OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzU1
LDYgKzc1NSwxMyBAQCB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0CiAg
ICAgICAgIC8vIENoZWNrIGlmIHRoZSBldmVudCB0YXJnZXQgaGFzIHN1Y2ggYSBjdXN0b20gZWxl
bWVudCBhbmQsIGlmIHNvLAogICAgICAgICAvLyB0ZWxsIHRoZSBIVE1MTWVkaWFFbGVtZW50IHRv
IGVuYWJsZSB0aGF0IHRyYWNrLgogCisgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFj
azsKKyAgICAgICAgTWVudUl0ZW1Ub1RyYWNrTWFwOjppdGVyYXRvciBpdGVyID0gbV9tZW51VG9U
cmFja01hcC5maW5kKHRvRWxlbWVudCh0YXJnZXQpKTsKKyAgICAgICAgaWYgKGl0ZXIgIT0gbV9t
ZW51VG9UcmFja01hcC5lbmQoKSkKKyAgICAgICAgICAgIHRleHRUcmFjayA9IGl0ZXItPnZhbHVl
OworICAgICAgICBtX21lbnVUb1RyYWNrTWFwLmNsZWFyKCk7CisgICAgICAgIG1fY29udHJvbHMt
PnRvZ2dsZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKTsKKwogICAgICAgICBpbnQgdHJhY2tJbmRl
eCA9IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudCh0b0VsZW1lbnQodGFyZ2V0KSk7CiAgICAgICAg
IGlmICh0cmFja0luZGV4ID09IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3NJbmRleE5vdEZv
dW5kKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NjMsMTAgKzc3MCwxMSBAQCB2b2lkIE1l
ZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0CiAgICAgICAgIGlmICghbWVkaWFFbGVt
ZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1lZGlhRWxlbWVudC0+dG9nZ2xl
VHJhY2tBdEluZGV4KHRyYWNrSW5kZXgpOworICAgICAgICBpZiAodGV4dFRyYWNrKQorICAgICAg
ICAgICAgbWVkaWFFbGVtZW50LT5zZXRTZWxlY3RlZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkp
OworICAgICAgICBlbHNlIGlmICh0cmFja0luZGV4ID09IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRU
cmFja3NPZmZJbmRleCgpKQorICAgICAgICAgICAgbWVkaWFFbGVtZW50LT5zZXRTZWxlY3RlZFRl
eHRUcmFjaygwKTsKIAotICAgICAgICAvLyBXZSd2ZSBzZWxlY3RlZCBhIHRyYWNrIHRvIGRpc3Bs
YXksIHNvIHdlIGNhbiBub3cgY2xvc2UgdGhlIG1lbnUuCi0gICAgICAgIG1fY29udHJvbHMtPnRv
Z2dsZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKTsKICAgICAgICAgdXBkYXRlRGlzcGxheSgpOwog
ICAgIH0KIApAQCAtNzk5LDUzICs4MDcsMzcgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0
aW9uc1RyYWNrTGlzdAogCiAgICAgaWYgKG1fdHJhY2tMaXN0SGFzQ2hhbmdlZCkKICAgICAgICAg
cmVidWlsZFRyYWNrTGlzdE1lbnUoKTsKLSAgICAKKwogICAgIGJvb2wgY2FwdGlvbnNWaXNpYmxl
ID0gbWVkaWFFbGVtZW50LT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwLCBsZW5ndGggPSBtX21lbnVJdGVtcy5zaXplKCk7IGkgPCBsZW5ndGg7ICsraSkg
ewogICAgICAgICBSZWZQdHI8RWxlbWVudD4gdHJhY2tJdGVtID0gbV9tZW51SXRlbXNbaV07CisK
ICAgICAgICAgaW50IHRyYWNrSW5kZXggPSB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQodHJhY2tJ
dGVtLmdldCgpKTsKLSAgICAgICAgaWYgKHRyYWNrSW5kZXggIT0gSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrc0luZGV4Tm90Rm91bmQoKSkgewotICAgICAgICAgICAgaWYgKHRyYWNrSW5kZXgg
PT0gSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrc09mZkluZGV4KCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoY2FwdGlvbnNWaXNpYmxlKQotICAgICAgICAgICAgICAgICAgICB0cmFja0l0ZW0t
PmNsYXNzTGlzdCgpLT5yZW1vdmUoc2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRyYWNrSXRl
bS0+Y2xhc3NMaXN0KCktPmFkZChzZWxlY3RlZENsYXNzVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJ
T04pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBUZXh0VHJhY2sqIHRy
YWNrID0gdHJhY2tMaXN0LT5pdGVtKHRyYWNrSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICgh
dHJhY2spCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlm
ICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS0+YWRkKHNlbGVjdGVkQ2xhc3NWYWx1
ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLT5yZW1vdmUoc2VsZWN0ZWRDbGFzc1Zh
bHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLSNlbmRpZgotfQorICAgICAgICBpZiAodHJhY2tJbmRleCA9PSBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tzSW5kZXhOb3RGb3VuZCgpKQorICAgICAgICAgICAgY29udGludWU7CiAKLSNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCi1zdGF0aWMgdm9pZCBpbnNlcnRUZXh0VHJhY2tNZW51SXRl
bUludG9Tb3J0ZWRDb250YWluZXIoUmVmUHRyPEVsZW1lbnQ+JiBpdGVtLCBSZWZQdHI8RWxlbWVu
dD4mIGNvbnRhaW5lcikKLXsKLSAgICAvLyBUaGUgY29udGFpbmVyIHdpbGwgYWx3YXlzIGhhdmUg
dGhlICJPZmYiIGVudHJ5IGFscmVhZHkgcHJlc2VudCBhbmQgaXQKLSAgICAvLyBzaG91bGQgcmVt
YWluIGF0IHRoZSBzdGFydCBvZiB0aGUgbGlzdC4KLSAgICBBU1NFUlQoY29udGFpbmVyLT5jaGls
ZE5vZGVDb3VudCgpID4gMCk7Ci0gICAgQVNTRVJUKGl0ZW0tPmNoaWxkTm9kZUNvdW50KCkgPT0g
MSk7IC8vIEVhY2ggaXRlbSBzaG91bGQgaGF2ZSBhIHNpbmdsZSB0ZXh0IG5vZGUgY2hpbGQgZm9y
IHRoZSBsYWJlbC4KLSAgICBTdHJpbmcgaXRlbUxhYmVsID0gdG9UZXh0KGl0ZW0tPmZpcnN0Q2hp
bGQoKSktPndob2xlVGV4dCgpOwotCi0gICAgLy8gVGhpcyBpcyBhbiBpbnNlcnRpb24gc29ydCA6
KCBIb3dldmVyLCB0aGVyZSBzaG91bGRuJ3QgYmUgYSBob3JyaWJsZSBudW1iZXIgb2YgdGV4dCB0
cmFjayBpdGVtcy4KLSAgICBmb3IgKGludCBpID0gMSwgbnVtQ2hpbGROb2RlcyA9IGNvbnRhaW5l
ci0+Y2hpbGROb2RlQ291bnQoKTsgaSA8IG51bUNoaWxkTm9kZXM7ICsraSkgewotICAgICAgICBO
b2RlKiBjaGlsZCA9IGNvbnRhaW5lci0+Y2hpbGROb2RlKGkpOwotICAgICAgICBBU1NFUlQoY2hp
bGQtPmNoaWxkTm9kZUNvdW50KCkgPT0gMSk7IC8vIEVhY2ggaXRlbSBzaG91bGQgaGF2ZSBhIHNp
bmdsZSB0ZXh0IG5vZGUgY2hpbGQgZm9yIHRoZSBsYWJlbC4KLSAgICAgICAgU3RyaW5nIGNoaWxk
TGFiZWwgPSB0b1RleHQoY2hpbGQtPmZpcnN0Q2hpbGQoKSktPndob2xlVGV4dCgpOwotICAgICAg
ICBpZiAoY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGl0ZW1MYWJlbCwgY2hpbGRMYWJlbCkpIHsK
LSAgICAgICAgICAgIGNvbnRhaW5lci0+aW5zZXJ0QmVmb3JlKGl0ZW0sIGNoaWxkKTsKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRyYWNrSW5kZXggPT0gSFRNTE1lZGlhRWxlbWVu
dDo6dGV4dFRyYWNrc09mZkluZGV4KCkpIHsKKyAgICAgICAgICAgIGlmIChjYXB0aW9uc1Zpc2li
bGUpCisgICAgICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS0+cmVtb3ZlKHNlbGVj
dGVkQ2xhc3NWYWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS0+YWRkKHNlbGVjdGVkQ2xhc3NW
YWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQorCisgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjazsKKyAgICAgICAgTWVu
dUl0ZW1Ub1RyYWNrTWFwOjppdGVyYXRvciBpdGVyID0gbV9tZW51VG9UcmFja01hcC5maW5kKHRy
YWNrSXRlbS5nZXQoKSk7CisgICAgICAgIGlmIChpdGVyID09IG1fbWVudVRvVHJhY2tNYXAuZW5k
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdGV4dFRyYWNrID0gaXRlci0+dmFs
dWU7CisgICAgICAgIGlmICghdGV4dFRyYWNrKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGlmICh0ZXh0VHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkp
CisgICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLT5hZGQoc2VsZWN0ZWRDbGFzc1Zh
bHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdHJh
Y2tJdGVtLT5jbGFzc0xpc3QoKS0+cmVtb3ZlKHNlbGVjdGVkQ2xhc3NWYWx1ZSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CiAgICAgfQotICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoaXRlbSk7Ci19
CiAjZW5kaWYKK30KIAogdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVs
ZW1lbnQ6OnJlYnVpbGRUcmFja0xpc3RNZW51KCkKIHsKQEAgLTg1NSw2ICs4NDcsNyBAQCB2b2lk
IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0CiAgICAgbV9tZW51SXRlbXMuY2xl
YXIoKTsKIAogICAgIG1fdHJhY2tMaXN0SGFzQ2hhbmdlZCA9IGZhbHNlOworICAgIG1fbWVudVRv
VHJhY2tNYXAuY2xlYXIoKTsKIAogICAgIGlmICghbWVkaWFDb250cm9sbGVyKCktPmhhc0Nsb3Nl
ZENhcHRpb25zKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg2NCw0MyArODU3LDQwIEBAIHZvaWQg
TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgVGV4dFRyYWNrTGlzdCogdHJhY2tMaXN0ID0gbWVkaWFFbGVtZW50LT50ZXh0VHJhY2tzKCk7
Ci0KICAgICBpZiAoIXRyYWNrTGlzdCB8fCAhdHJhY2tMaXN0LT5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CiAgICAgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcyogY2FwdGlvbnNVc2VyUHJlZmVyZW5jZXMgPSBkb2MtPnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4g
PiB0cmFja3NGb3JNZW51ID0gY2FwdGlvbnNVc2VyUHJlZmVyZW5jZXMtPnNvcnRlZFRyYWNrTGlz
dEZvck1lbnUodHJhY2tMaXN0KTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBjYXB0aW9uc0hlYWRl
ciA9IGRvYy0+Y3JlYXRlRWxlbWVudChoM1RhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAg
Y2FwdGlvbnNIZWFkZXItPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUodGV4dFRyYWNr
U3VidGl0bGVzVGV4dCgpKSk7CiAgICAgYXBwZW5kQ2hpbGQoY2FwdGlvbnNIZWFkZXIpOwogICAg
IFJlZlB0cjxFbGVtZW50PiBjYXB0aW9uc01lbnVMaXN0ID0gZG9jLT5jcmVhdGVFbGVtZW50KHVs
VGFnLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAotICAgIFJlZlB0cjxFbGVtZW50PiB0cmFja0l0
ZW07Ci0KLSAgICB0cmFja0l0ZW0gPSBkb2MtPmNyZWF0ZUVsZW1lbnQobGlUYWcsIEFTU0VSVF9O
T19FWENFUFRJT04pOwotICAgIHRyYWNrSXRlbS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0
Tm9kZSh0ZXh0VHJhY2tPZmZUZXh0KCkpKTsKLSAgICB0cmFja0l0ZW0tPnNldEF0dHJpYnV0ZSh0
cmFja0luZGV4QXR0cmlidXRlTmFtZSgpLCB0ZXh0VHJhY2tzT2ZmQXR0clZhbHVlLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKLSAgICBjYXB0aW9uc01lbnVMaXN0LT5hcHBlbmRDaGlsZCh0cmFja0l0
ZW0pOwotICAgIG1fbWVudUl0ZW1zLmFwcGVuZCh0cmFja0l0ZW0pOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7Ci0gICAg
ICAgIHRyYWNrSXRlbSA9IGRvYy0+Y3JlYXRlRWxlbWVudChsaVRhZywgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1lbnVJdGVtOworICAgIG1lbnVJdGVtID0gZG9j
LT5jcmVhdGVFbGVtZW50KGxpVGFnLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBtZW51SXRl
bS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSh0ZXh0VHJhY2tPZmZUZXh0KCkpKTsK
KyAgICBtZW51SXRlbS0+c2V0QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRyaWJ1dGVOYW1lKCksIHRl
eHRUcmFja3NPZmZBdHRyVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGNhcHRpb25z
TWVudUxpc3QtPmFwcGVuZENoaWxkKG1lbnVJdGVtKTsKKyAgICBtX21lbnVJdGVtcy5hcHBlbmQo
bWVudUl0ZW0pOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tzRm9y
TWVudS5zaXplKCk7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBSZWZQdHI8VGV4dFRyYWNr
PiB0ZXh0VHJhY2sgPSB0cmFja3NGb3JNZW51W2ldOworICAgICAgICBtZW51SXRlbSA9IGRvYy0+
Y3JlYXRlRWxlbWVudChsaVRhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICAgICAgLy8g
QWRkIGEgY3VzdG9tIGF0dHJpYnV0ZSB0byB0aGUgPGxpPiBlbGVtZW50IHdoaWNoIHdpbGwgYWxs
b3cKICAgICAgICAgLy8gdXMgdG8gZWFzaWx5IGFzc29jaWF0ZSB0aGUgdXNlciB0YXBwaW5nIGhl
cmUgd2l0aCB0aGUKICAgICAgICAgLy8gdHJhY2suIFNpbmNlIHRoaXMgbGlzdCBpcyByZWJ1aWx0
IGlmIHRoZSB0cmFja3MgY2hhbmdlLCB3ZQogICAgICAgICAvLyBzaG91bGQgYWx3YXlzIGJlIGlu
IHN5bmMuCi0gICAgICAgIHRyYWNrSXRlbS0+c2V0QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRyaWJ1
dGVOYW1lKCksIFN0cmluZzo6bnVtYmVyKGkpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAg
ICAgbWVudUl0ZW0tPnNldEF0dHJpYnV0ZSh0cmFja0luZGV4QXR0cmlidXRlTmFtZSgpLCBTdHJp
bmc6Om51bWJlcihpKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKLSAgICAgICAgaWYgKGNhcHRp
b25zVXNlclByZWZlcmVuY2VzKQotICAgICAgICAgICAgdHJhY2tJdGVtLT5hcHBlbmRDaGlsZChk
b2MtPmNyZWF0ZVRleHROb2RlKGNhcHRpb25zVXNlclByZWZlcmVuY2VzLT5kaXNwbGF5TmFtZUZv
clRyYWNrKHRyYWNrKSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0cmFja0l0ZW0tPmFw
cGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUodHJhY2stPmxhYmVsKCkpKTsKKyAgICAgICAg
bWVudUl0ZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoY2FwdGlvbnNVc2VyUHJl
ZmVyZW5jZXMtPmRpc3BsYXlOYW1lRm9yVHJhY2sodGV4dFRyYWNrLmdldCgpKSkpOwogCi0gICAg
ICAgIGluc2VydFRleHRUcmFja01lbnVJdGVtSW50b1NvcnRlZENvbnRhaW5lcih0cmFja0l0ZW0s
IGNhcHRpb25zTWVudUxpc3QpOwotICAgICAgICBtX21lbnVJdGVtcy5hcHBlbmQodHJhY2tJdGVt
KTsKKyAgICAgICAgY2FwdGlvbnNNZW51TGlzdC0+YXBwZW5kQ2hpbGQobWVudUl0ZW0pOworICAg
ICAgICBtX21lbnVJdGVtcy5hcHBlbmQobWVudUl0ZW0pOworICAgICAgICBtX21lbnVUb1RyYWNr
TWFwLmFkZChtZW51SXRlbSwgdGV4dFRyYWNrKTsKICAgICB9CiAKICAgICBhcHBlbmRDaGlsZChj
YXB0aW9uc01lbnVMaXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkocmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzE1LDYgKzMxNSwxMCBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRy
PEVsZW1lbnQ+ID4gVHJhY2tNZW51SXRlbXM7CiAgICAgVHJhY2tNZW51SXRlbXMgbV9tZW51SXRl
bXM7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
RWxlbWVudD4sIFJlZlB0cjxUZXh0VHJhY2s+ID4gTWVudUl0ZW1Ub1RyYWNrTWFwOworICAgIE1l
bnVJdGVtVG9UcmFja01hcCBtX21lbnVUb1RyYWNrTWFwOworI2VuZGlmCiAgICAgTWVkaWFDb250
cm9scyogbV9jb250cm9sczsKICAgICBib29sIG1fdHJhY2tMaXN0SGFzQ2hhbmdlZDsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAkocmV2
aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSw2ICs0MTEsNyBAQCB2b2lkIE1lZGlhQ29udHJv
bHM6OnRleHRUcmFja1ByZWZlcmVuY2VzCiB7CiAgICAgaWYgKG1fdGV4dERpc3BsYXlDb250YWlu
ZXIpCiAgICAgICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnVwZGF0ZVNpemVzKHRydWUpOwor
ICAgIGNsb3NlZENhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiB9CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAkocmV2aXNpb24g
MTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDMwIEBAIGJvb2wgSW5iYW5kVGV4dFRyYWNr
Ojppc0Nsb3NlZENhcHRpb25zKCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5pc0Nsb3NlZENhcHRp
b25zKCk7CiB9CiAKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrOjpjb250YWluc09ubHlGb3JjZWRTdWJ0
aXRsZXMoKSBjb25zdAoreworICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29udGFpbnNPbmx5Rm9yY2VkU3VidGl0
bGVzKCk7Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNrOjppc01haW5Qcm9ncmFtQ29udGVudCgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICByZXR1cm4gbV9wcml2YXRlLT5pc01haW5Qcm9ncmFtQ29udGVudCgpOworfQorCiti
b29sIEluYmFuZFRleHRUcmFjazo6aXNFYXN5VG9SZWFkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
cHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBtX3ByaXZh
dGUtPmlzRWFzeVRvUmVhZCgpOworfQorICAgIAogc2l6ZV90IEluYmFuZFRleHRUcmFjazo6aW5i
YW5kVHJhY2tJbmRleCgpCiB7CiAgICAgQVNTRVJUKG1fcHJpdmF0ZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgJKHJldmlzaW9uIDE0NjIwNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDYgKzQ2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkluYmFuZFRleHRU
cmFjaygpOwogCiAgICAgdmlydHVhbCBib29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWFpblByb2dyYW1Db250ZW50KCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2RlKGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJS
SURFOwogICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI5LDYg
KzQyOSwxNSBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBUZXh0VHJhY2s6CiB9CiAj
ZW5kaWYKIAorYm9vbCBUZXh0VHJhY2s6OmlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QKK3sK
KyAgICAvLyAiTWFpbiBwcm9ncmFtIiBjb250ZW50IGlzIGludHJpbnNpYyB0byB0aGUgcHJlc2Vu
dGF0aW9uIG9mIHRoZSBtZWRpYSBmaWxlLCByZWdhcmRsZXNzIG9mIGxvY2FsZS4gQ29udGVudCBz
dWNoIGFzCisgICAgLy8gZGlyZWN0b3JzIGNvbW1lbnRhcnkgaXMgbm90ICJtYWluIHByb2dyYW0i
IGJlY2F1c2UgaXQgaXMgbm90IGVzc2VudGlhbCBmb3IgdGhlIHByZXNlbnRhdGlvbi4gSFRNTDUg
ZG9lc24ndCBoYXZlCisgICAgLy8gYSB3YXkgdG8gZXhwcmVzcyB0aGlzIGluIGEgbWFjaGluZS1y
ZWFibGUgZm9ybSwgaXQgaXMgdHlwaWNhbGx5IGRvbmUgd2l0aCB0aGUgdHJhY2sgbGFiZWwsIHNv
IHdlIGFzc3VtZSB0aGF0IGNhcHRpb24KKyAgICAvLyB0cmFja3MgYXJlIG1haW4gY29udGVudCBh
bmQgYWxsIG90aGVyIHRyYWNrIHR5cGVzIGFyZSBub3QuCisgICAgcmV0dXJuIG1fa2luZCA9PSBj
YXB0aW9uc0tleXdvcmQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAkocmV2aXNpb24gMTQ2MjA1
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMTE5LDYgKzExOSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDbG9z
ZWRDYXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wg
Y29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNFYXN5VG9SZWFkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIGludCB0
cmFja0luZGV4KCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlVHJhY2tJbmRleCgpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAJKHJldmlzaW9uIDE0
NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMSw2ICsyMTEsMjIgQEAgdm9pZCBUZXh0VHJhY2tMaXN0OjpyZW1v
dmUoVGV4dFRyYWNrKiB0cgogICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsKIH0KIAorYm9vbCBU
ZXh0VHJhY2tMaXN0Ojpjb250YWlucyhUZXh0VHJhY2sqIHRyYWNrKSBjb25zdAoreworICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+KiB0cmFja3MgPSAwOworICAgIAorICAgIGlm
ICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpCisgICAgICAg
IHRyYWNrcyA9ICZtX2VsZW1lbnRUcmFja3M7CisgICAgZWxzZSBpZiAodHJhY2stPnRyYWNrVHlw
ZSgpID09IFRleHRUcmFjazo6QWRkVHJhY2spCisgICAgICAgIHRyYWNrcyA9ICZtX2FkZFRyYWNr
VHJhY2tzOworICAgIGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6Oklu
QmFuZCkKKyAgICAgICAgdHJhY2tzID0gJm1faW5iYW5kVHJhY2tzOworICAgIGVsc2UKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgCisgICAgcmV0dXJuIHRyYWNrcy0+ZmluZCh0
cmFjaykgIT0gbm90Rm91bmQ7Cit9CisKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrTGlz
dDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JUZXh0VHJhY2tMaXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmgJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIHB1
YmxpYzoKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICBpbnQgZ2V0VHJhY2tJbmRl
eChUZXh0VHJhY2sqKTsKICAgICBpbnQgZ2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRy
YWNrcyhUZXh0VHJhY2sqKTsKKyAgICBib29sIGNvbnRhaW5zKFRleHRUcmFjayopIGNvbnN0Owog
CiAgICAgVGV4dFRyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKICAgICB2b2lkIGFwcGVuZChQ
YXNzUmVmUHRyPFRleHRUcmFjaz4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwxNyArMjgsMTA4IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlcy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdl
R3JvdXAuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlRleHRUcmFja0xpc3Qu
aCIKKyNpbmNsdWRlIDx3dGYvTm9uQ29weWluZ1NvcnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzKFBhZ2VH
cm91cCogZ3JvdXApCisgICAgOiBtX3BhZ2VHcm91cChncm91cCkKKyAgICAsIG1fdGltZXIodGhp
cywgJkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnRpbWVyRmlyZWQpCisgICAgLCBtX3Rlc3RpbmdN
b2RlKGZhbHNlKQorICAgICwgbV9oYXZlUHJlZmVyZW5jZXMoZmFsc2UpCisgICAgLCBtX3Nob3Vs
ZFNob3dDYXB0aW9ucyhmYWxzZSkKK3sKK30KKworQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6fkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXMoKQoreworfQorCitib29sIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OnNob3VsZFNob3dDYXB0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGVzdGluZ01v
ZGUgPyBtX3Nob3VsZFNob3dDYXB0aW9ucyA6IGZhbHNlOworfQorCit2b2lkIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXM6OnRpbWVyRmlyZWQoVGltZXI8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4qKQor
eworICAgIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKK30KKwordm9pZCBDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpub3RpZnkoKQoreworICAgIGlmICghbV90ZXN0aW5nTW9kZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9oYXZlUHJlZmVyZW5jZXMgPSB0cnVlOworICAgIGlmICghbV90
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwor
dm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRTaG91bGRTaG93Q2FwdGlvbnMoYm9vbCBw
cmVmZXJlbmNlKQoreworICAgIG1fc2hvdWxkU2hvd0NhcHRpb25zID0gcHJlZmVyZW5jZTsKKyAg
ICBub3RpZnkoKTsKK30KKworYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVy
c0NhcHRpb25zKCkgY29uc3QKK3sKKyAgICBQYWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS0+cGFn
ZXMoKS5iZWdpbigpKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBwYWdlLT5zZXR0aW5ncygpLT5zaG91bGREaXNwbGF5Q2FwdGlvbnMoKTsKK30K
Kwogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJv
b2wgcHJlZmVyZW5jZSkKIHsKLSAgICBtX3VzZXJQcmVmZXJzQ2FwdGlvbnMgPSBwcmVmZXJlbmNl
OwotICAgIGlmIChtX3Rlc3RpbmdNb2RlKSB7Ci0gICAgICAgIG1faGF2ZVByZWZlcmVuY2VzID0g
dHJ1ZTsKLSAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwotICAgIH0KKyAgICBQ
YWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS0+cGFnZXMoKS5iZWdpbigpKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldFNob3VsZERp
c3BsYXlDYXB0aW9ucyhwcmVmZXJlbmNlKTsKKyAgICBub3RpZnkoKTsKK30KKworYm9vbCBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0Cit7CisgICAg
UGFnZSogcGFnZSA9ICoocGFnZUdyb3VwKCktPnBhZ2VzKCkuYmVnaW4oKSk7CisgICAgaWYgKCFw
YWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gcGFnZS0+c2V0dGluZ3Mo
KS0+c2hvdWxkRGlzcGxheVN1YnRpdGxlcygpOworfQorCit2b2lkIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OnNldFVzZXJQcmVmZXJzU3VidGl0bGVzKGJvb2wgcHJlZmVyZW5jZSkKK3sKKyAgICBQ
YWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS0+cGFnZXMoKS5iZWdpbigpKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldFNob3VsZERp
c3BsYXlTdWJ0aXRsZXMocHJlZmVyZW5jZSk7CisgICAgbm90aWZ5KCk7Cit9CisKK2Jvb2wgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNUZXh0RGVzY3JpcHRpb25zKCkgY29uc3QK
K3sKKyAgICBQYWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS0+cGFnZXMoKS5iZWdpbigpKTsKKyAg
ICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gcGFn
ZS0+c2V0dGluZ3MoKS0+c2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoKTsKK30KKwordm9p
ZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRVc2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMo
Ym9vbCBwcmVmZXJlbmNlKQoreworICAgIFBhZ2UqIHBhZ2UgPSAqKHBhZ2VHcm91cCgpLT5wYWdl
cygpLmJlZ2luKCkpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IHBhZ2UtPnNldHRpbmdzKCktPnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKHByZWZl
cmVuY2UpOworICAgIG5vdGlmeSgpOwogfQogCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6
OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQpAQCAtNTgsMTMgKzE0OSwxMCBAQCBWZWN0b3I8
U3RyaW5nPiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OnNldFByZWZlcnJlZExhbmd1YWdlKFN0cmluZyBsYW5ndWFnZSkKIHsKICAgICBtX3Vz
ZXJQcmVmZXJyZWRMYW5ndWFnZSA9IGxhbmd1YWdlOwotICAgIGlmIChtX3Rlc3RpbmdNb2RlKSB7
Ci0gICAgICAgIG1faGF2ZVByZWZlcmVuY2VzID0gdHJ1ZTsKLSAgICAgICAgY2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZCgpOwotICAgIH0KKyAgICBub3RpZnkoKTsKIH0KIAotU3RyaW5nIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OmRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKiB0cmFjaykg
Y29uc3QKK3N0YXRpYyBTdHJpbmcgdHJhY2tEaXNwbGF5TmFtZShUZXh0VHJhY2sqIHRyYWNrKQog
ewogICAgIGlmICh0cmFjay0+bGFiZWwoKS5pc0VtcHR5KCkgJiYgdHJhY2stPmxhbmd1YWdlKCku
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrTm9MYWJlbFRleHQoKTsKQEAgLTcz
LDYgKzE2MSwzMCBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6ZGlzcGxheU5hCiAg
ICAgcmV0dXJuIHRyYWNrLT5sYW5ndWFnZSgpOwogfQogCitTdHJpbmcgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6ZGlzcGxheU5hbWVGb3JUcmFjayhUZXh0VHJhY2sqIHRyYWNrKSBjb25zdAorewor
ICAgIHJldHVybiB0cmFja0Rpc3BsYXlOYW1lKHRyYWNrKTsKK30KKyAgICAKK3N0YXRpYyBib29s
IHRleHRUcmFja0NvbXBhcmUoY29uc3QgUmVmUHRyPFRleHRUcmFjaz4mIGEsIGNvbnN0IFJlZlB0
cjxUZXh0VHJhY2s+JiBiKQoreworICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHRyYWNrRGlz
cGxheU5hbWUoYS5nZXQoKSksIHRyYWNrRGlzcGxheU5hbWUoYi5nZXQoKSkpIDwgMDsKK30KKwor
VmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c29ydGVk
VHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QpCit7CisgICAgQVNTRVJU
KHRyYWNrTGlzdCk7CisKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiB0cmFja3NGb3JN
ZW51OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5n
dGgoKTsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICB0cmFja3NGb3JNZW51LmFwcGVuZCh0cmFj
a0xpc3QtPml0ZW0oaSkpOworCisgICAgbm9uQ29weWluZ1NvcnQodHJhY2tzRm9yTWVudS5iZWdp
bigpLCB0cmFja3NGb3JNZW51LmVuZCgpLCB0ZXh0VHJhY2tDb21wYXJlKTsKKworICAgIHJldHVy
biB0cmFja3NGb3JNZW51OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0sp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAko
cmV2aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiwgMjAxMyAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwyMSArMzEsMzMgQEAKICNpbmNsdWRlICJMYW5n
dWFnZS5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJUZXh0VHJh
Y2suaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUGFnZUdyb3VwOworY2xhc3MgVGV4dFRyYWNrTGlzdDsKIAogY2xhc3MgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2FwdGlv
blVzZXJQcmVmZXJlbmNlcz4gY3JlYXRlKFBhZ2VHcm91cCogZ3JvdXApIHsgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDYXB0aW9uVXNlclByZWZlcmVuY2VzKGdyb3VwKSk7IH0KLSAgICB2aXJ0dWFsIH5D
YXB0aW9uVXNlclByZWZlcmVuY2VzKCkgeyB9CisgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlcygpOwogCiAgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMo
KSBjb25zdCB7IHJldHVybiBtX3Rlc3RpbmdNb2RlICYmIG1faGF2ZVByZWZlcmVuY2VzOyB9Ci0g
ICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Rl
c3RpbmdNb2RlID8gbV91c2VyUHJlZmVyc0NhcHRpb25zIDogZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VXNlclByZWZlcnNDYXB0aW9ucyhib29sIHByZWZlcmVuY2UpOworICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRTaG93Q2FwdGlvbnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvdWxkU2hvd0NhcHRpb25zKGJvb2wpOworCisgICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJz
Q2FwdGlvbnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlclByZWZlcnNDYXB0aW9u
cyhib29sKTsKKworICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc1N1YnRpdGxlcyhib29sIHByZWZlcmVu
Y2UpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlclByZWZlcnNUZXh0RGVzY3JpcHRpb25z
KGJvb2wgcHJlZmVyZW5jZSk7CisKICAgICB2aXJ0dWFsIGZsb2F0IGNhcHRpb25Gb250U2l6ZVNj
YWxlKGJvb2wmIGltcG9ydGFudCkgY29uc3QgeyBpbXBvcnRhbnQgPSBmYWxzZTsgcmV0dXJuIDAu
MDVmOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBj
b25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAKQEAgLTU3LDI3ICs2OSwyNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKikg
Y29uc3Q7CisgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBzb3J0ZWRUcmFj
a0xpc3RGb3JNZW51KFRleHRUcmFja0xpc3QqKTsKIAogICAgIHZpcnR1YWwgYm9vbCB0ZXN0aW5n
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdGluZ01vZGU7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0VGVzdGluZ01vZGUoYm9vbCBvdmVycmlkZSkgeyBtX3Rlc3RpbmdNb2RlID0gb3ZlcnJpZGU7
IH0KIAotICAgIFBhZ2VHcm91cCogcGFnZUdyb3VwKCkgeyByZXR1cm4gbV9wYWdlR3JvdXA7IH0K
KyAgICBQYWdlR3JvdXAqIHBhZ2VHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUdyb3VwOyB9
CiAKIHByb3RlY3RlZDoKLSAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKFBhZ2VHcm91cCogZ3Jv
dXApCi0gICAgICAgIDogbV9wYWdlR3JvdXAoZ3JvdXApCi0gICAgICAgICwgbV90ZXN0aW5nTW9k
ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhdmVQcmVmZXJlbmNlcyhmYWxzZSkKLSAgICAgICAgLCBt
X3VzZXJQcmVmZXJzQ2FwdGlvbnMoZmFsc2UpCi0gICAgewotICAgIH0KKyAgICBDYXB0aW9uVXNl
clByZWZlcmVuY2VzKFBhZ2VHcm91cCopOwogCiBwcml2YXRlOgorICAgIHZvaWQgdGltZXJGaXJl
ZChUaW1lcjxDYXB0aW9uVXNlclByZWZlcmVuY2VzPiopOworICAgIHZvaWQgbm90aWZ5KCk7CisK
ICAgICBQYWdlR3JvdXAqIG1fcGFnZUdyb3VwOworICAgIFRpbWVyPENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM+IG1fdGltZXI7CiAgICAgU3RyaW5nIG1fdXNlclByZWZlcnJlZExhbmd1YWdlOwogICAg
IGJvb2wgbV90ZXN0aW5nTW9kZTsKICAgICBib29sIG1faGF2ZVByZWZlcmVuY2VzOwotICAgIGJv
b2wgbV91c2VyUHJlZmVyc0NhcHRpb25zOworICAgIGJvb2wgbV9zaG91bGRTaG93Q2FwdGlvbnM7
CiB9OwogICAgIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjLmgJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw4ICs0Miwx
MiBAQCBwdWJsaWM6CiAKICNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQog
ICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFNob3dDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRTaG93Q2FwdGlvbnMoYm9vbCkgT1ZFUlJJREU7
CisKICAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0IE9WRVJSSURF
OworICAgIAogICAgIHZpcnR1YWwgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoYm9vbCYpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJy
aWRlKCkgY29uc3QgT1ZFUlJJREU7CiAKQEAgLTUzLDggKzU3LDEwIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0IE9WRVJSSURF
OwogCiAgICAgdmlydHVhbCB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKSBPVkVSUklE
RTsKKwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IHNv
cnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRyYWNrTGlzdCopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKikgY29uc3QgT1ZFUlJJREU7
CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjLm1tCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQx
LDkgQEAKICNpbXBvcnQgIlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNp
bXBvcnQgIlRleHRUcmFja0N1ZS5oIgorI2ltcG9ydCAiVGV4dFRyYWNrTGlzdC5oIgogI2ltcG9y
dCAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgorI2ltcG9ydCA8d3RmL05vbkNvcHlpbmdTb3J0Lmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKQEAgLTcxLDYgKzczLDcgQEAgU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwg
TUFDYXB0aW9uQQogU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFy
YW5jZUdldFRleHRFZGdlU3R5bGUsIE1BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlLCAo
TUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCiBTT0ZUX0xJTksoTWVkaWFBY2Nl
c3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQWRkU2VsZWN0ZWRMYW5ndWFnZSwgYm9vbCwg
KE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBDRlN0cmluZ1JlZiBsYW5ndWFnZSks
IChkb21haW4sIGxhbmd1YWdlKSk7CiBTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNh
cHRpb25BcHBlYXJhbmNlQ29weVNlbGVjdGVkTGFuZ3VhZ2VzLCBDRkFycmF5UmVmLCAoTUFDYXB0
aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4pLCAoZG9tYWluKSk7CitTT0ZUX0xJTksoTWVkaWFB
Y2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVByZWZlcnJlZENhcHRpb25pbmdN
ZWRpYUNoYXJhY3RlcmlzdGljcywgIENGQXJyYXlSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9t
YWluIGRvbWFpbiksIChkb21haW4pKTsKIAogU09GVF9MSU5LX1BPSU5URVIoTWVkaWFBY2Nlc3Np
YmlsaXR5LCBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24s
IENGU3RyaW5nUmVmKQogI2RlZmluZSBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5n
ZWROb3RpZmljYXRpb24gZ2V0a01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90
aWZpY2F0aW9uKCkKQEAgLTExMSwyNCArMTE0LDQ1IEBAIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6On5DYXB0aW9uVXNlclAKIH0KIAogI2lmIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFN
RVdPUkspCi1ib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVmZXJzQ2FwdGlv
bnMoKSBjb25zdAorCitib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNob3VsZFNob3dD
YXB0aW9ucygpIGNvbnN0CiB7CiAgICAgaWYgKHRlc3RpbmdNb2RlKCkgfHwgIU1lZGlhQWNjZXNz
aWJpbGl0eUxpYnJhcnkoKSkKLSAgICAgICAgcmV0dXJuIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6
OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKLQorICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6c2hvdWxkU2hvd0NhcHRpb25zKCk7CisgICAgCiAgICAgcmV0dXJuIE1BQ2FwdGlv
bkFwcGVhcmFuY2VHZXRTaG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2Vy
KTsKIH0KIAotdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzZXRVc2VyUHJlZmVyc0Nh
cHRpb25zKGJvb2wgcHJlZmVyZW5jZSkKK3ZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6
c2V0U2hvdWxkU2hvd0NhcHRpb25zKGJvb2wgcHJlZmVyZW5jZSkKIHsKICAgICBpZiAodGVzdGlu
Z01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKSB7Ci0gICAgICAgIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMocHJlZmVyZW5jZSk7Cisg
ICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFNob3VsZFNob3dDYXB0aW9ucyhwcmVm
ZXJlbmNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQorICAgIAogICAgIE1BQ2FwdGlvbkFw
cGVhcmFuY2VTZXRTaG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCBw
cmVmZXJlbmNlKTsKIH0KIAorYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1c2VyUHJl
ZmVyc0NhcHRpb25zKCkgY29uc3QKK3sKKyAgICBib29sIGNhcHRpb25TZXR0aW5nID0gQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNDYXB0aW9ucygpOworICAgIGlmIChjYXB0aW9u
U2V0dGluZyB8fCB0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkp
CisgICAgICAgIHJldHVybiBjYXB0aW9uU2V0dGluZzsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gY2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNzKEFkb3B0Q0YsIE1BQ2FwdGlv
bkFwcGVhcmFuY2VDb3B5UHJlZmVycmVkQ2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNzKGtN
QUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlcikpOworICAgIHJldHVybiBjYXB0aW9uaW5nTWVk
aWFDaGFyYWN0ZXJpc3RpY3MgJiYgQ0ZBcnJheUdldENvdW50KGNhcHRpb25pbmdNZWRpYUNoYXJh
Y3RlcmlzdGljcy5nZXQoKSk7Cit9CisKK2Jvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6
dXNlclByZWZlcnNTdWJ0aXRsZXMoKSBjb25zdAoreworICAgIGJvb2wgc3VidGl0bGVzU2V0dGlu
ZyA9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzU3VidGl0bGVzKCk7CisgICAg
aWYgKHN1YnRpdGxlc1NldHRpbmcgfHwgdGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmls
aXR5TGlicmFyeSgpKQorICAgICAgICByZXR1cm4gc3VidGl0bGVzU2V0dGluZzsKKyAgICAKKyAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNzKEFk
b3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5UHJlZmVycmVkQ2FwdGlvbmluZ01lZGlhQ2hh
cmFjdGVyaXN0aWNzKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlcikpOworICAgIHJldHVy
biAhKGNhcHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGljcyAmJiBDRkFycmF5R2V0Q291bnQoY2Fw
dGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNzLmdldCgpKSk7Cit9CisKIGJvb2wgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0CiB7CiAg
ICAgaWYgKHRlc3RpbmdNb2RlKCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKQEAg
LTQ5OSw0MCArNTIzLDE4NyBAQCBWZWN0b3I8U3RyaW5nPiBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjCiAKICAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKIH0KLSNlbmRpZgotCi1T
dHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6ZGlzcGxheU5hbWVGb3JUcmFjayhUZXh0
VHJhY2sqIHRyYWNrKSBjb25zdAorI2VuZGlmICAvLyBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlf
RlJBTUVXT1JLKQorICAgIAorc3RhdGljIFN0cmluZyB0cmFja0Rpc3BsYXlOYW1lKFRleHRUcmFj
ayogdHJhY2spCiB7Ci0gICAgU3RyaW5nIGxhYmVsID0gdHJhY2stPmxhYmVsKCk7Ci0gICAgU3Ry
aW5nIGxhbmd1YWdlID0gdHJhY2stPmxhbmd1YWdlKCk7Ci0gICAgU3RyaW5nIHByZWZlcnJlZExh
bmd1YWdlID0gZGVmYXVsdExhbmd1YWdlKCk7CiAgICAgU3RyaW5nQnVpbGRlciBkaXNwbGF5TmFt
ZTsKKyAgICBTdHJpbmcgbGFiZWwgPSB0cmFjay0+bGFiZWwoKTsKKyAgICBTdHJpbmcgdHJhY2tM
YW5ndWFnZUlkZW50aWZpZXIgPSB0cmFjay0+bGFuZ3VhZ2UoKTsKIAotICAgIGlmIChsYWJlbC5p
c0VtcHR5KCkgJiYgbGFuZ3VhZ2UuaXNFbXB0eSgpKSB7CisgICAgUmV0YWluUHRyPENGTG9jYWxl
UmVmPiBjdXJyZW50TG9jYWxlKEFkb3B0Q0YsIENGTG9jYWxlQ29weUN1cnJlbnQoKSk7CisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2NhbGVJZGVudGlmaWVyKEFkb3B0Q0YsIENGTG9jYWxl
Q3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRlbnRpZmllckZyb21TdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdHJhY2tMYW5ndWFnZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwor
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFuZ3VhZ2VDRihBZG9wdENGLCBDRkxvY2FsZUNv
cHlEaXNwbGF5TmFtZUZvclByb3BlcnR5VmFsdWUoY3VycmVudExvY2FsZS5nZXQoKSwga0NGTG9j
YWxlTGFuZ3VhZ2VDb2RlLCBsb2NhbGVJZGVudGlmaWVyLmdldCgpKSk7CisgICAgU3RyaW5nIGxh
bmd1YWdlID0gbGFuZ3VhZ2VDRi5nZXQoKTsKKyAgICBpZiAoIWxhYmVsLmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoIWxhbmd1YWdlLmlzRW1wdHkoKSAmJiAhbGFiZWwuY29udGFpbnMobGFuZ3Vh
Z2UpKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBsb2NhbGVEaWN0
KEFkb3B0Q0YsIENGTG9jYWxlQ3JlYXRlQ29tcG9uZW50c0Zyb21Mb2NhbGVJZGVudGlmaWVyKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGxvY2FsZUlkZW50aWZpZXIuZ2V0KCkpKTsKKyAgICAgICAgICAg
IGlmIChsb2NhbGVEaWN0KSB7CisgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgY291bnRyeUNv
ZGUgPSAwOworICAgICAgICAgICAgICAgIFN0cmluZyBjb3VudHJ5TmFtZTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBDRkRpY3Rpb25hcnlHZXRWYWx1ZUlmUHJlc2VudChsb2Nh
bGVEaWN0LmdldCgpLCBrQ0ZMb2NhbGVDb3VudHJ5Q29kZSwgKGNvbnN0IHZvaWQgKiopJmNvdW50
cnlDb2RlKTsKKyAgICAgICAgICAgICAgICBpZiAoY291bnRyeUNvZGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjb3VudHJ5TmFtZUNGKEFkb3B0Q0YsIENG
TG9jYWxlQ29weURpc3BsYXlOYW1lRm9yUHJvcGVydHlWYWx1ZShjdXJyZW50TG9jYWxlLmdldCgp
LCBrQ0ZMb2NhbGVDb3VudHJ5Q29kZSwgY291bnRyeUNvZGUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgY291bnRyeU5hbWUgPSBjb3VudHJ5TmFtZUNGLmdldCgpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIWNvdW50cnlOYW1lLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKHRleHRUcmFja0Nv
dW50cnlBbmRMYW5ndWFnZU1lbnVJdGVtVGV4dChsYWJlbCwgY291bnRyeU5hbWUsIGxhbmd1YWdl
KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFt
ZS5hcHBlbmQodGV4dFRyYWNrTGFuZ3VhZ2VNZW51SXRlbVRleHQobGFiZWwsIGxhbmd1YWdlKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBTdHJpbmcg
bGFuZ3VhZ2VBbmRMb2NhbGUgPSBDRkxvY2FsZUNvcHlEaXNwbGF5TmFtZUZvclByb3BlcnR5VmFs
dWUoY3VycmVudExvY2FsZS5nZXQoKSwga0NGTG9jYWxlSWRlbnRpZmllciwgdHJhY2tMYW5ndWFn
ZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgICAgIGlmICghbGFuZ3Vh
Z2VBbmRMb2NhbGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKGxh
bmd1YWdlQW5kTG9jYWxlKTsKKyAgICAgICAgZWxzZSBpZiAoIWxhbmd1YWdlLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChsYW5ndWFnZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChsb2NhbGVJZGVudGlmaWVyLmdldCgpKTsK
KyAgICB9CisgICAgCisgICAgaWYgKGRpc3BsYXlOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgZGlz
cGxheU5hbWUuYXBwZW5kKHRleHRUcmFja05vTGFiZWxUZXh0KCkpOworICAgIAorICAgIGlmICh0
cmFjay0+aXNFYXN5VG9SZWFkKCkpCisgICAgICAgIHJldHVybiBlYXN5UmVhZGVyVHJhY2tNZW51
SXRlbVRleHQoZGlzcGxheU5hbWUudG9TdHJpbmcoKSk7CisgICAgCisgICAgaWYgKHRyYWNrLT5r
aW5kKCkgIT0gdHJhY2stPmNhcHRpb25zS2V5d29yZCgpKQogICAgICAgICByZXR1cm4gZGlzcGxh
eU5hbWUudG9TdHJpbmcoKTsKLSAgICB9CisgICAgCisgICAgaWYgKHRyYWNrLT5pc0Nsb3NlZENh
cHRpb25zKCkpCisgICAgICAgIHJldHVybiBjbG9zZWRDYXB0aW9uVHJhY2tNZW51SXRlbVRleHQo
ZGlzcGxheU5hbWUudG9TdHJpbmcoKSk7CisgICAgCisgICAgcmV0dXJuIHNkaFRyYWNrTWVudUl0
ZW1UZXh0KGRpc3BsYXlOYW1lLnRvU3RyaW5nKCkpOworfQogCi0gICAgaWYgKCFsYWJlbC5pc0Vt
cHR5KCkpCi0gICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChsYWJlbCk7CitTdHJpbmcgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6ZGlzcGxheU5hbWVGb3JUcmFjayhUZXh0VHJhY2sqIHRyYWNr
KSBjb25zdAoreworICAgIHJldHVybiB0cmFja0Rpc3BsYXlOYW1lKHRyYWNrKTsKK30KIAotICAg
IEF0b21pY1N0cmluZyBsb2NhbGVEaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lRm9yTGFuZ3VhZ2VM
b2NhbGUobGFuZ3VhZ2UpOwotICAgIGlmICghbGFiZWwuY29udGFpbnMobG9jYWxlRGlzcGxheU5h
bWUpKSB7Ci0gICAgICAgIGlmIChkaXNwbGF5TmFtZS5sZW5ndGgoKSA+IDApCi0gICAgICAgICAg
ICBkaXNwbGF5TmFtZS5hcHBlbmQoIiAiKTsKLSAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKGxv
Y2FsZURpc3BsYXlOYW1lKTsKLSAgICB9CitzdGF0aWMgU3RyaW5nIGxhbmd1YWdlSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGxhbmd1YWdlQ29kZSkKK3sKKyAgICBpZiAobGFuZ3VhZ2VDb2RlLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGxhbmd1YWdlQ29kZTsKIAotICAgIGlmICh0cmFjay0+
a2luZCgpID09IHRyYWNrLT5jYXB0aW9uc0tleXdvcmQoKSkgewotICAgICAgICBpZiAodHJhY2st
PmlzQ2xvc2VkQ2FwdGlvbnMoKSkKLSAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZCgiIEND
Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZCgiIFNESCIp
OworICAgIFN0cmluZyBsb3dlcmNhc2VMYW5ndWFnZUNvZGUgPSBsYW5ndWFnZUNvZGUubG93ZXIo
KTsKKyAgICAKKyAgICBpZiAobG93ZXJjYXNlTGFuZ3VhZ2VDb2RlLmxlbmd0aCgpID49IDMgJiYg
KGxvd2VyY2FzZUxhbmd1YWdlQ29kZVsyXSA9PSAnXycgfHwgbG93ZXJjYXNlTGFuZ3VhZ2VDb2Rl
WzJdID09ICctJykpCisgICAgICAgIGxvd2VyY2FzZUxhbmd1YWdlQ29kZS50cnVuY2F0ZSgyKTsK
KyAgICAKKyAgICByZXR1cm4gbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlOworfQorCitzdGF0aWMgYm9v
bCB0ZXh0VHJhY2tDb21wYXJlKGNvbnN0IFJlZlB0cjxUZXh0VHJhY2s+JiBhLCBjb25zdCBSZWZQ
dHI8VGV4dFRyYWNrPiYgYikKK3sKKyAgICBTdHJpbmcgcHJlZmVycmVkTGFuZ3VhZ2VEaXNwbGF5
TmFtZSA9IGRpc3BsYXlOYW1lRm9yTGFuZ3VhZ2VMb2NhbGUobGFuZ3VhZ2VJZGVudGlmaWVyKGRl
ZmF1bHRMYW5ndWFnZSgpKSk7CisgICAgU3RyaW5nIGFMYW5ndWFnZURpc3BsYXlOYW1lID0gZGlz
cGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZShsYW5ndWFnZUlkZW50aWZpZXIoYS0+bGFuZ3VhZ2Uo
KSkpOworICAgIFN0cmluZyBiTGFuZ3VhZ2VEaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lRm9yTGFu
Z3VhZ2VMb2NhbGUobGFuZ3VhZ2VJZGVudGlmaWVyKGItPmxhbmd1YWdlKCkpKTsKKworICAgIC8v
IFRyYWNrcyBpbiB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZSBhcmUgYWx3YXlzIGF0IHRo
ZSB0b3Agb2YgdGhlIG1lbnUuCisgICAgYm9vbCBhSXNQcmVmZXJyZWRMYW5ndWFnZSA9ICFjb2Rl
UG9pbnRDb21wYXJlKGFMYW5ndWFnZURpc3BsYXlOYW1lLCBwcmVmZXJyZWRMYW5ndWFnZURpc3Bs
YXlOYW1lKTsKKyAgICBib29sIGJJc1ByZWZlcnJlZExhbmd1YWdlID0gIWNvZGVQb2ludENvbXBh
cmUoYkxhbmd1YWdlRGlzcGxheU5hbWUsIHByZWZlcnJlZExhbmd1YWdlRGlzcGxheU5hbWUpOwor
ICAgIGlmICgoYUlzUHJlZmVycmVkTGFuZ3VhZ2UgfHwgYklzUHJlZmVycmVkTGFuZ3VhZ2UpICYm
IChhSXNQcmVmZXJyZWRMYW5ndWFnZSAhPSBiSXNQcmVmZXJyZWRMYW5ndWFnZSkpCisgICAgICAg
IHJldHVybiBhSXNQcmVmZXJyZWRMYW5ndWFnZSA/IHRydWUgOiBmYWxzZTsKKworICAgIC8vIFRy
YWNrcyBub3QgaW4gdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2Ugc29ydCBmaXJzdCBieSBs
YW5ndWFnZSAuLi4KKyAgICBpZiAoY29kZVBvaW50Q29tcGFyZShhTGFuZ3VhZ2VEaXNwbGF5TmFt
ZSwgYkxhbmd1YWdlRGlzcGxheU5hbWUpKQorICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFy
ZShhTGFuZ3VhZ2VEaXNwbGF5TmFtZSwgYkxhbmd1YWdlRGlzcGxheU5hbWUpIDwgMDsKKworICAg
IC8vIC4uLiBidXQgd2hlbiB0cmFja3MgaGF2ZSB0aGUgc2FtZSBsYW5ndWFnZSwgbWFpbiBwcm9n
cmFtIGNvbnRlbnQgc29ydHMgbmV4dCBoaWdoZXN0IC4uLgorICAgIGJvb2wgYUlzTWFpbkNvbnRl
bnQgPSBhLT5pc01haW5Qcm9ncmFtQ29udGVudCgpOworICAgIGJvb2wgYklzTWFpbkNvbnRlbnQg
PSBiLT5pc01haW5Qcm9ncmFtQ29udGVudCgpOworICAgIGlmICgoYUlzTWFpbkNvbnRlbnQgfHwg
YklzTWFpbkNvbnRlbnQpICYmIChhSXNNYWluQ29udGVudCAhPSBiSXNNYWluQ29udGVudCkpCisg
ICAgICAgIHJldHVybiBhSXNNYWluQ29udGVudCA/IHRydWUgOiBmYWxzZTsKKworICAgIC8vIC4u
LiBhbmQgbWFpbiBwcm9ncmFtIHRyYWtjcyBzb3J0IGhpZ2hlciB0aGFuIENDIHRyYWNrcyAuLi4K
KyAgICBib29sIGFJc0NDID0gYS0+aXNDbG9zZWRDYXB0aW9ucygpOworICAgIGJvb2wgYklzQ0Mg
PSBiLT5pc0Nsb3NlZENhcHRpb25zKCk7CisgICAgaWYgKChhSXNDQyB8fCBiSXNDQykgJiYgKGFJ
c0NDICE9IGJJc0NDKSkgeworICAgICAgICBpZiAoYUlzQ0MpCisgICAgICAgICAgICByZXR1cm4g
YUlzTWFpbkNvbnRlbnQgPyB0cnVlIDogZmFsc2U7CisgICAgICAgIGlmIChiSXNDQykKKyAgICAg
ICAgICAgIHJldHVybiBiSXNNYWluQ29udGVudCA/IHRydWUgOiBmYWxzZTsKICAgICB9CiAKLSAg
ICByZXR1cm4gZGlzcGxheU5hbWUudG9TdHJpbmcoKTsKKyAgICAvLyAuLi4gYW5kIHRyYWNrcyBv
ZiB0aGUgc2FtZSB0eXBlIGFuZCBsYW5ndWFnZSBzb3J0IGJ5IHRoZSBtZW51IGl0ZW0gdGV4dC4K
KyAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZSh0cmFja0Rpc3BsYXlOYW1lKGEuZ2V0KCkpLCB0
cmFja0Rpc3BsYXlOYW1lKGIuZ2V0KCkpKSA8IDA7CiB9CiAKK1ZlY3RvcjxSZWZQdHI8VGV4dFRy
YWNrPiA+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUo
VGV4dFRyYWNrTGlzdCogdHJhY2tMaXN0KQoreworICAgIEFTU0VSVCh0cmFja0xpc3QpOworCisg
ICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gdHJhY2tzRm9yTWVudTsKKyAgICBIYXNoU2V0
PFN0cmluZz4gbGFuZ3VhZ2VzSW5jbHVkZWQ7CisgICAgYm9vbCBwcmVmZXJzQWNjZXNzaWJpbGl0
eVRyYWNrcyA9IHVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDAsIGxlbmd0aCA9IHRyYWNrTGlzdC0+bGVuZ3RoKCk7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICBUZXh0VHJhY2sqIHRyYWNrID0gdHJhY2tMaXN0LT5pdGVtKGkpOworICAgICAgICBTdHJp
bmcgbGFuZ3VhZ2UgPSBkaXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKHRyYWNrLT5sYW5ndWFn
ZSgpKTsKKworICAgICAgICBpZiAodHJhY2stPmlzRWFzeVRvUmVhZCgpKSB7CisgICAgICAgICAg
ICBpZiAoIWxhbmd1YWdlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBsYW5ndWFnZXNJbmNs
dWRlZC5hZGQobGFuZ3VhZ2UpOworICAgICAgICAgICAgdHJhY2tzRm9yTWVudS5hcHBlbmQodHJh
Y2spOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAodHJh
Y2stPmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgaWYgKCFsYW5ndWFnZS5pc0VtcHR5KCkgJiYgdHJhY2stPmlzTWFpblByb2dy
YW1Db250ZW50KCkpIHsKKyAgICAgICAgICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VHJhY2sgPSB0
cmFjay0+a2luZCgpID09IHRyYWNrLT5jYXB0aW9uc0tleXdvcmQoKTsKKyAgICAgICAgICAgIGlm
IChwcmVmZXJzQWNjZXNzaWJpbGl0eVRyYWNrcykgeworICAgICAgICAgICAgICAgIC8vIEluIHRo
ZSBmaXJzdCBwYXNzLCBpbmNsdWRlIG9ubHkgY2FwdGlvbiB0cmFja3MgaWYgdGhlIHVzZXIgcHJl
ZmVycyBhY2Nlc3NpYmlsaXR5IHRyYWNrcy4KKyAgICAgICAgICAgICAgICBpZiAoIWlzQWNjZXNz
aWJpbGl0eVRyYWNrKSB7CisgICAgICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkNhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWM6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUgLSBza2lwcGluZyAlcyBi
ZWNhdXNlIGl0IGlzIE5PVCBhbiBhY2Nlc3NpYmlsaXR5IHRyYWNrIiwgbGFuZ3VhZ2UudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gSW4gdGhlIGZpcnN0
IHBhc3MsIG9ubHkgaW5jbHVkZSB0aGUgZmlyc3Qgbm9uLUNDIG9yIFNESCB0cmFjayB3aXRoIGVh
Y2ggbGFuZ3VhZ2UgaWYgdGhlIHVzZXIgcHJlZmVycyB0cmFuc2xhdGlvbiB0cmFja3MuCisgICAg
ICAgICAgICAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eVRyYWNrKSB7CisgICAgICAgICAgICAgICAg
ICAgIExPRyhNZWRpYSwgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNvcnRlZFRyYWNrTGlz
dEZvck1lbnUgLSBza2lwcGluZyAlcyBiZWNhdXNlIGl0IGlzIGFuIGFjY2Vzc2liaWxpdHkgdHJh
Y2siLCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChsYW5ndWFnZXNJbmNs
dWRlZC5jb250YWlucyhsYW5ndWFnZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HKE1lZGlh
LCAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSAtIHNr
aXBwaW5nICVzIGJlY2F1c2UgaXQgaXMgbm90IHRoZSBmaXJzdCB3aXRoIHRoaXMgbGFuZ3VhZ2Ui
LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
aWYgKCFsYW5ndWFnZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBsYW5ndWFnZXNJbmNsdWRlZC5h
ZGQobGFuZ3VhZ2UpOworICAgICAgICB0cmFja3NGb3JNZW51LmFwcGVuZCh0cmFjayk7CisgICAg
fQorCisgICAgLy8gTm93IHRoYXQgd2UgaGF2ZSBmaWx0ZXJlZCBmb3IgdGhlIHVzZXIncyBhY2Nl
c3NpYmlsaXR5L3RyYW5zbGF0aW9uIHByZWZlcmVuY2UsIGFkZCAgYWxsIHRyYWNrcyB3aXRoIGEg
dW5pcXVlIGxhbmd1YWdlIHdpdGhvdXQgcmVnYXJkIHRvIHRyYWNrIHR5cGUuCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsg
KytpKSB7CisgICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7Cisg
ICAgICAgIFN0cmluZyBsYW5ndWFnZSA9IGRpc3BsYXlOYW1lRm9yTGFuZ3VhZ2VMb2NhbGUodHJh
Y2stPmxhbmd1YWdlKCkpOworCisgICAgICAgIC8vIEFsbCBjYW5kaWRhdGVzIHdpdGggbm8gbGFu
Z3VnZSB3ZXJlIGFkZGVkIHRoZSBmaXJzdCB0aW1lIHRocm91Z2guCisgICAgICAgIGlmIChsYW5n
dWFnZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAodHJh
Y2stPmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpKQorICAgICAgICAgICAgY29udGludWU7
CisgCisgICAgICAgIGlmICghbGFuZ3VhZ2VzSW5jbHVkZWQuY29udGFpbnMobGFuZ3VhZ2UpICYm
IHRyYWNrLT5pc01haW5Qcm9ncmFtQ29udGVudCgpKSB7CisgICAgICAgICAgICBsYW5ndWFnZXNJ
bmNsdWRlZC5hZGQobGFuZ3VhZ2UpOworICAgICAgICAgICAgdHJhY2tzRm9yTWVudS5hcHBlbmQo
dHJhY2spOworICAgICAgICB9CisgICAgfQorCisgICAgbm9uQ29weWluZ1NvcnQodHJhY2tzRm9y
TWVudS5iZWdpbigpLCB0cmFja3NGb3JNZW51LmVuZCgpLCB0ZXh0VHJhY2tDb21wYXJlKTsKKwor
ICAgIHJldHVybiB0cmFja3NGb3JNZW51OworfQorICAgIAogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFZJREVPX1RSQUNLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAkocmV2
aXNpb24gMTQ2MjA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTQsOCArMTU0LDEwIEBAIFN0cmluZyBwcmVmZXJyZWRMYW5ndWFn
ZUZyb21MaXN0KGNvbnN0IFYKIFN0cmluZyBkaXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKGNv
bnN0IFN0cmluZyYgbG9jYWxlTmFtZSkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFs
b2NhbGVOYW1lLmlzTnVsbCgpICYmICFsb2NhbGVOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIENGTG9jYWxlQ29weURpc3BsYXlOYW1lRm9yUHJvcGVydHlWYWx1ZShDRkxvY2FsZUNvcHlD
dXJyZW50KCksIGtDRkxvY2FsZUlkZW50aWZpZXIsIGxvY2FsZU5hbWUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CisgICAgaWYgKCFsb2NhbGVOYW1lLmlzTnVsbCgpICYmICFsb2NhbGVOYW1lLmlz
RW1wdHkoKSkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGN1cnJlbnRMb2NhbGUo
QWRvcHRDRiwgQ0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKKyAgICAgICAgcmV0dXJuIENGTG9jYWxl
Q29weURpc3BsYXlOYW1lRm9yUHJvcGVydHlWYWx1ZShjdXJyZW50TG9jYWxlLmdldCgpLCBrQ0ZM
b2NhbGVJZGVudGlmaWVyLCBsb2NhbGVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAg
IH0KICNlbmRpZgogICAgIHJldHVybiBsb2NhbGVOYW1lOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAJKHJldmlzaW9uIDE0NjIwNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDI3LDggKzEwMjcsMzYgQEAgU3RyaW5nIHRleHRUcmFja09mZlRleHQoKQogCiBT
dHJpbmcgdGV4dFRyYWNrTm9MYWJlbFRleHQoKQogewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
X0tFWSgiVW5rbm93biIsICJVbmtub3duIChjbG9zZWQgY2FwdGlvbnMgdHJhY2spIiwgIk1lbnUg
aXRlbSBsYWJlbCBmb3IgYSBjbG9zZWQgY2FwdGlvbnMgdHJhY2sgdGhhdCBoYXMgbm8gb3RoZXIg
bmFtZSIpOworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiVW5rbm93biIsICJVbmtub3du
ICh0ZXh0IHRyYWNrKSIsICJNZW51IGl0ZW0gbGFiZWwgZm9yIGEgdGV4dCB0cmFjayB0aGF0IGhh
cyBubyBvdGhlciBuYW1lIik7CiB9CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorU3RyaW5nIHRl
eHRUcmFja0NvdW50cnlBbmRMYW5ndWFnZU1lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIGNvdW50cnksIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCit7CisgICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAoJUAtJUApIiwg
IlRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBjb3VudHJ5
IGFuZCBsYW5ndWFnZSBvZiB0aGUgc3VidGl0bGUsIGluIHRoZSBmb3JtIG9mICdUaXRsZSAoTGFu
Z3VhZ2UtQ291bnRyeSknIiksIHRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGxhbmd1YWdl
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvdW50cnkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
Cit9CisKK1N0cmluZyB0ZXh0VHJhY2tMYW5ndWFnZU1lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQoreworICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgKCVAKSIsICJUZXh0IHRyYWNrIGRpc3BsYXkg
bmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIHN1YnRpdGxlLCBp
biB0aGUgZm9ybSBvZiAnVGl0bGUgKExhbmd1YWdlKSciKSwgdGl0bGUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgbGFuZ3VhZ2UuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Cit9CisKK1N0cmluZyBj
bG9zZWRDYXB0aW9uVHJhY2tNZW51SXRlbVRleHQoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVAIENDIiwgIlRl
eHQgdHJhY2sgY29udGFpbnMgY2xvc2VkIGNhcHRpb25zIiksIHRpdGxlLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOworfQorCitTdHJpbmcgc2RoVHJhY2tNZW51SXRlbVRleHQoY29uc3QgU3RyaW5n
JiB0aXRsZSkKK3sKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJ
TkcoIiVAIFNESCIsICJUZXh0IHRyYWNrIGNvbnRhaW5zIHN1YnRpdGxlcyBmb3IgdGhlIGRlYWYg
YW5kIGhhcmQgb2YgaGVhcmluZyIpLCB0aXRsZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKK30K
KworU3RyaW5nIGVhc3lSZWFkZXJUcmFja01lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcmIHRpdGxl
KQoreworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAg
RWFzeSBSZWFkZXIiLCAiVGV4dCB0cmFjayBjb250YWlucyBzaW1wbGlmaWVkICgzcmQgZ3JhZGUg
bGV2ZWwpIHN1YnRpdGxlcyIpLCB0aXRsZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKK30KKyNl
bmRpZgorCiAjZW5kaWYKIAogU3RyaW5nIHNuYXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCShyZXZpc2lv
biAxNDYyMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIFN0cmluZyB0ZXh0VHJhY2tTdWJ0aXRsZXNUZXh0KCk7CiAgICAgU3RyaW5nIHRleHRUcmFj
a09mZlRleHQoKTsKICAgICBTdHJpbmcgdGV4dFRyYWNrTm9MYWJlbFRleHQoKTsKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgU3RyaW5nIHRleHRUcmFja0NvdW50cnlBbmRMYW5ndWFnZU1lbnVJdGVt
VGV4dChjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGNvdW50cnksIGNvbnN0IFN0
cmluZyYgbGFuZ3VhZ2UpOworICAgIFN0cmluZyB0ZXh0VHJhY2tMYW5ndWFnZU1lbnVJdGVtVGV4
dChjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKKyAgICBTdHJp
bmcgY2xvc2VkQ2FwdGlvblRyYWNrTWVudUl0ZW1UZXh0KGNvbnN0IFN0cmluZyYpOworICAgIFN0
cmluZyBzZGhUcmFja01lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICBTdHJpbmcgZWFz
eVJlYWRlclRyYWNrTWVudUl0ZW1UZXh0KGNvbnN0IFN0cmluZyYpOworI2VuZGlmCiAjZW5kaWYK
IAogICAgIFN0cmluZyBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsVGl0bGUoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlLmgJKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUs
NyArNTUsMTEgQEAgcHVibGljOgogCiAgICAgZW51bSBLaW5kIHsgU3VidGl0bGVzLCBDYXB0aW9u
cywgRGVzY3JpcHRpb25zLCBDaGFwdGVycywgTWV0YWRhdGEsIE5vbmUgfTsKICAgICB2aXJ0dWFs
IEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIFN1YnRpdGxlczsgfQorCiAgICAgdmlydHVhbCBi
b29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01haW5Qcm9ncmFtQ29udGVudCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFYXN5VG9SZWFkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyBy
ZXR1cm4gZW1wdHlBdG9tOyB9CiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBj
b25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpD
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAkocmV2aXNpb24gMTQ2
MjA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6
OktpbmQga2luZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NlZENh
cHRpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zT25seUZv
cmNlZFN1YnRpdGxlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01haW5Q
cm9ncmFtQ29udGVudCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0Vhc3lU
b1JlYWQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYWJlbCgp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzRGVmYXVsdCgpIGNvbnN0IE9WRVJSSURF
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRk9iakMubW0JKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1Miw5IEBAIFNPRlRfTElOS19D
TEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVySXQKICNkZWZpbmUgQVZNZWRpYUNoYXJhY3Rlcmlz
dGljVmlzdWFsIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCgpCiAjZGVmaW5lIEFWTWVk
aWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZSgp
CiAjZGVmaW5lIEFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiBnZXRBVk1lZGlhVHlwZUNsb3NlZENh
cHRpb24oKQotI2RlZmluZSBBVk1lZGlhVHlwZVZpZGVvIGdldEFWTWVkaWFUeXBlVmlkZW8oKQot
I2RlZmluZSBBVk1lZGlhVHlwZUF1ZGlvIGdldEFWTWVkaWFUeXBlQXVkaW8oKQorI2RlZmluZSBB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMgZ2V0QVZNZWRp
YUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkKKyNkZWZpbmUgQVZN
ZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQgZ2V0QVZNZWRpYUNoYXJhY3Rl
cmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQoKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNFYXN5VG9SZWFkIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQoKQogCiBTT0ZU
X0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiwgTlNT
dHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3Rl
cmlzdGljTGVnaWJsZSwgTlNTdHJpbmcgKikKQEAgLTYyLDYgKzYzLDEwIEBAIFNPRlRfTElOS19Q
T0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZXRhZGEKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRh
dGlvbiwgQVZNZWRpYVR5cGVTdWJ0aXRsZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVS
KEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFs
b2dGb3JBY2Nlc3NpYmlsaXR5LCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3Vu
ZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNj
ZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwg
QVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzLCBOU1N0cmlu
ZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNJc01haW5Qcm9ncmFtQ29udGVudCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSKEFW
Rm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRvUmVhZCwgTlNTdHJpbmcgKikK
KwogI2RlZmluZSBBVk1ldGFkYXRhSXRlbSBnZXRBVk1ldGFkYXRhSXRlbUNsYXNzKCkKICNkZWZp
bmUgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dCBnZXRBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0
Q2xhc3MoKQogI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlIGdldEFWTWVkaWFD
aGFyYWN0ZXJpc3RpY0xlZ2libGUoKQpAQCAtMTE5LDYgKzEyNCwzMCBAQCBib29sIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZPYmpDOjppc0NsCiAgICAgcmV0dXJuIFtbbV9tZWRpYVNlbGVjdGlv
bk9wdGlvbiBtZWRpYVR5cGVdIGlzRXF1YWxUb1N0cmluZzpBVk1lZGlhVHlwZUNsb3NlZENhcHRp
b25dOwogfQogCitib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpjb250YWluc09u
bHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdAoreworICAgIGlmICghbV9tZWRpYVNlbGVjdGlvbk9w
dGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBbbV9tZWRpYVNl
bGVjdGlvbk9wdGlvbiBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlc107Cit9CisKK2Jvb2wgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakM6OmlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICByZXR1cm4gW21fbWVkaWFTZWxlY3Rpb25PcHRpb24gaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudF07Cit9CisKK2Jvb2wgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmlzRWFzeVRvUmVhZCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gW21fbWVkaWFTZWxlY3Rpb25PcHRpb24gaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNFYXN5VG9SZWFkXTsKK30KKwogQXRvbWljU3RyaW5nIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpsYWJlbCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX21l
ZGlhU2VsZWN0aW9uT3B0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxNDYyMDUpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxTZXR0aW5ncy5oIgogCisj
aW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0zNCw2
ICszNSw3IEBACiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJMb2NhbGVUb1Njcmlw
dE1hcHBpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAj
aW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKQEAgLTQyNiwxMiArNDI4LDE2IEBAIHZvaWQg
SW50ZXJuYWxTZXR0aW5nczo6c2V0U2hvdWxkRGlzcGxheVQKICAgICBJbnRlcm5hbFNldHRpbmdz
R3VhcmRGb3JTZXR0aW5ncygpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmICgh
cGFnZSgpKQorICAgICAgICByZXR1cm47CisgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogY2Fw
dGlvblByZWZlcmVuY2VzID0gcGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpOwor
CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGtpbmQsICJTdWJ0aXRsZXMiKSkKLSAgICAgICAg
c2V0dGluZ3MoKS0+c2V0U2hvdWxkRGlzcGxheVN1YnRpdGxlcyhlbmFibGVkKTsKKyAgICAgICAg
Y2FwdGlvblByZWZlcmVuY2VzLT5zZXRVc2VyUHJlZmVyc1N1YnRpdGxlcyhlbmFibGVkKTsKICAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShraW5kLCAiQ2FwdGlvbnMiKSkKLSAgICAgICAg
c2V0dGluZ3MoKS0+c2V0U2hvdWxkRGlzcGxheUNhcHRpb25zKGVuYWJsZWQpOworICAgICAgICBj
YXB0aW9uUHJlZmVyZW5jZXMtPnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoZW5hYmxlZCk7CiAgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoa2luZCwgIlRleHREZXNjcmlwdGlvbnMiKSkKLSAg
ICAgICAgc2V0dGluZ3MoKS0+c2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoZW5hYmxl
ZCk7CisgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0VXNlclByZWZlcnNUZXh0RGVzY3Jp
cHRpb25zKGVuYWJsZWQpOwogICAgIGVsc2UKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogI2Vs
c2UKQEAgLTQ0NSwxMiArNDUxLDE2IEBAIGJvb2wgSW50ZXJuYWxTZXR0aW5nczo6c2hvdWxkRGlz
cGxheVRyYWMKICAgICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5nc1JldHVybihmYWxz
ZSk7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKCFwYWdlKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVy
ZW5jZXMgPSBwYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCk7CisKICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2Uoa2luZCwgIlN1YnRpdGxlcyIpKQotICAgICAgICByZXR1cm4gc2V0
dGluZ3MoKS0+c2hvdWxkRGlzcGxheVN1YnRpdGxlcygpOworICAgICAgICByZXR1cm4gY2FwdGlv
blByZWZlcmVuY2VzLT51c2VyUHJlZmVyc1N1YnRpdGxlcygpOwogICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShraW5kLCAiQ2FwdGlvbnMiKSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzKCktPnNo
b3VsZERpc3BsYXlDYXB0aW9ucygpOworICAgICAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2Vz
LT51c2VyUHJlZmVyc0NhcHRpb25zKCk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGtpbmQs
ICJUZXh0RGVzY3JpcHRpb25zIikpCi0gICAgICAgIHJldHVybiBzZXR0aW5ncygpLT5zaG91bGRE
aXNwbGF5VGV4dERlc2NyaXB0aW9ucygpOworICAgICAgICByZXR1cm4gY2FwdGlvblByZWZlcmVu
Y2VzLT51c2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMoKTsKIAogICAgIGVjID0gU1lOVEFYX0VS
UjsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTQ2MzQ0KQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxMy0wMy0xOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBbGxvdyBwb3J0cyBzcGVjaWZpYyB0ZXh0IHRyYWNrIG1lbnUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjgwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0
RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluOiBBZGQgbmV3IGV4cG9ydHMuCisg
ICAgICAgICogd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW46IERpdHRvLgor
CiAyMDEzLTAzLTE4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBbV2luQ2Fpcm9dIEJ1aWxkIFdpbkNhaXJvIHBvcnQgdW5kZXIgVlMyMDEwIApJbmRleDog
U291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0
RXhwb3J0cy5kZWYuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJv
ai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHJldmlzaW9uIDE0
NjIwNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJh
dG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNiArNDE0LDgg
QEAgRVhQT1JUUwogICAgICAgICA/c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRAU2V0dGlu
Z3NAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP3NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdF
bmFibGVkQFNldHRpbmdzQFdlYkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9zZXRBdXRvZmlsbGVk
QEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUFFWF9OQFoKKyAgICAgICAgP2NhcHRpb25QcmVm
ZXJlbmNlc0BQYWdlR3JvdXBAV2ViQ29yZUBAUUFFUEFWQ2FwdGlvblVzZXJQcmVmZXJlbmNlc0Ay
QFhaCisgICAgICAgID9pbml0R3JvdXBAUGFnZUBXZWJDb3JlQEBBQUVYWFoKIAogI2lmIEVOQUJM
RShXT1JLRVJTKQogICAgICAgICA/d29ya2VyVGhyZWFkQ291bnRAV29ya2VyVGhyZWFkQFdlYkNv
cmVAQFNBSVhaCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4
cG9ydHMuZGVmLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3By
b2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHJldmlzaW9uIDE0NjIwNSkKKysrIFNvdXJjZS9XZWJL
aXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTQxNCw2ICs0MTQsOCBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRBdXRob3JBbmRVc2VyU3R5
bGVzRW5hYmxlZEBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYX05AWgogICAgICAgICA/c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAg
ICAgP3NldEF1dG9maWxsZWRASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRQUVYX05AWgorICAg
ICAgICA/Y2FwdGlvblByZWZlcmVuY2VzQFBhZ2VHcm91cEBXZWJDb3JlQEBRQUVQQVZDYXB0aW9u
VXNlclByZWZlcmVuY2VzQDJAWFoKKyAgICAgICAgP2luaXRHcm91cEBQYWdlQFdlYkNvcmVAQEFB
RVhYWgogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgICAgID93b3JrZXJUaHJlYWRDb3VudEBX
b3JrZXJUaHJlYWRAV2ViQ29yZUBAU0FJWFoKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjIxMCkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisy
MDEzLTAzLTE5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFsbG93IHBvcnRzIHNwZWNpZmljIHRleHQgdHJhY2sgbWVudQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyODAwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay11c2Vy
LXByZWZlcmVuY2VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay11
c2VyLXByZWZlcmVuY2VzLmh0bWw6CisgICAgICAgICogbWVkaWEvdmlkZW8tY29udHJvbHMtY2Fw
dGlvbnMtdHJhY2ttZW51LWxvY2FsaXplZC5odG1sOgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWNv
bnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1zb3J0ZWQuaHRtbDoKKyAgICAgICAgKiBtZWRpYS92
aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMt
dHJhY2ttZW51LWxvY2FsaXplZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1zb3J0ZWQtZXhwZWN0ZWQu
dHh0OgorCiAyMDEzLTAzLTE5ICBKb2huIEouIEJhcnRvbiAgPGpvaG5qYmFydG9uQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgaWZyYW1lIG9wdGlvbiB0byBpbnNw
ZWN0ZWRXaW5kb3cuZXZhbCgpIGV4dGVuc2lvbiBBUEkKSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1sb2NhbGl6ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21l
bnUtbG9jYWxpemVkLmh0bWwJKHJldmlzaW9uIDE0NjIwNSkKKysrIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1sb2NhbGl6ZWQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsOCArNDQsOCBAQAogICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJpdGVt
LnRleHRDb250ZW50IiwgIkVuZ2xpc2ggQ0MiKTsKIAogICAgICAgICAgICAgaXRlbSA9IGNhcHRp
b25zRW50cmllc1syXTsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPlRoaXJkIGl0ZW0g
aW4gY2FwdGlvbnMgbWVudSBzaG91bGQgYmUgbGFiZWxsZWQgJ1Vua25vd24nIik7Ci0gICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoIml0ZW0udGV4dENvbnRlbnQiLCAiVW5rbm93biIpOworICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCI8YnI+VGhpcmQgaXRlbSBpbiBjYXB0aW9ucyBtZW51IHNob3Vs
ZCBiZSBsYWJlbGxlZCAnVW5rbm93biBTREgnIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
Iml0ZW0udGV4dENvbnRlbnQiLCAiVW5rbm93biBTREgiKTsKIAogICAgICAgICAgICAgaXRlbSA9
IGNhcHRpb25zRW50cmllc1szXTsKICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPkZvdXJ0
aCBpdGVtIGluIGNhcHRpb25zIG1lbnUgc2hvdWxkIGJlIGxhYmVsbGVkICdVbmtub3duJyIpOwpJ
bmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51
LXNvcnRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRy
b2xzLWNhcHRpb25zLXRyYWNrbWVudS1zb3J0ZWQuaHRtbAkocmV2aXNpb24gMTQ2MjA1KQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LXNvcnRl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDExICs3LDE2IEBACiAgICAgICAgIDxzY3JpcHQg
c3JjPSJ2aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9InRyYWNr
bWVudS10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZh
ciB0ZXN0ID0gMDsKICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAotICAgICAgICAgICAgZnVuY3Rpb24g
dGVzdFNvcnRlZE1lbnUoKQorICAgICAgICAgICAgZnVuY3Rpb24gdGV4dFRyYWNrTWVudUl0ZW1z
KCkKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTaG93IGFuZCBoaWRlIHRoZSBt
ZW51IHRvIGZvcmNlIGEgcmVjYWxjdWxhdGlvbi4KKyAgICAgICAgICAgICAgICBjbGlja0NDQnV0
dG9uKCk7CisgICAgICAgICAgICAgICAgY2xpY2tDQ0J1dHRvbigpOworCiAgICAgICAgICAgICAg
ICAgdmFyIHRyYWNrTGlzdEVsZW1lbnQgPSBnZXRUcmFja0xpc3RFbGVtZW50KCk7CiAgICAgICAg
ICAgICAgICAgaWYgKCF0cmFja0xpc3RFbGVtZW50KQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC0yMCwyNSArMjUsNTQgQEAKICAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIlRo
ZXJlIHNob3VsZCBiZSBhIHVsIGVsZW1lbnQgaW4gdHJhY2sgbGlzdCBtZW51Iik7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
dmFyIGxhc3RUcmFja0xhYmVsID0gbnVsbDsKLSAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0
SXRlbXMgPSB0cmFja0xpc3RTZWN0aW9uLnF1ZXJ5U2VsZWN0b3JBbGwoImxpIik7Ci0gICAgICAg
ICAgICAgICAgaWYgKCF0cmFja0xpc3RJdGVtcyB8fCB0cmFja0xpc3RJdGVtcy5sZW5ndGggIT0g
NykgewotICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiVGhlcmUgc2hvdWxkIGJlIHNldmVu
IGxpIGVsZW1lbnRzIGluIHRoZSBtZW51Iik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0
cmFja0xpc3RJdGVtcy5sZW5ndGg7IGorKykgewotICAgICAgICAgICAgICAgICAgICB2YXIgaXRl
bSA9IHRyYWNrTGlzdEl0ZW1zW2pdOwotICAgICAgICAgICAgICAgICAgICBpZiAoaiA9PSAwKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9nUmVzdWx0KGl0ZW0udGV4dENvbnRlbnQgPT0gIk9m
ZiIsICJGaXJzdCBpdGVtIHNob3VsZCBiZSBsYWJlbGxlZCBvZmYiKTsKLSAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFRyYWNrTGFiZWwp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nUmVzdWx0KGl0ZW0udGV4dENvbnRlbnQg
PiBsYXN0VHJhY2tMYWJlbCwgbGFzdFRyYWNrTGFiZWwgKyAiIGNvbWVzIGJlZm9yZSAiICsgaXRl
bS50ZXh0Q29udGVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nUmVzdWx0KHRydWUsIGl0ZW0udGV4dENvbnRlbnQgKyAiIGlz
IHRoZSBmaXJzdCByZWFsIGl0ZW0gaW4gdGhlIGxpc3QiKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxhc3RUcmFja0xhYmVsID0gaXRlbS50ZXh0Q29udGVudDsKLSAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cmFja0xpc3RTZWN0aW9uLnF1ZXJ5U2VsZWN0
b3JBbGwoImxpIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RT
b3J0ZWRNZW51KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRlc3Qp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+PGk+KiogVGVzdCB3aXRoIHByZWZlcnJlZCBsYW5n
dWFnZSBzZXQgdG8gRW5nbGlzaCwgdHJhY2sgdHlwZSBzZXQgdG8gY2FwdGlvbnM8IiArICIvaT4i
KTsKKyAgICAgICAgICAgICAgICAgICAgcnVuKCJpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U2hvdWxk
RGlzcGxheVRyYWNrS2luZCgnQ2FwdGlvbnMnLCB0cnVlKSIpOworICAgICAgICAgICAgICAgICAg
ICB3aW5kb3cuc2V0VGltZW91dCh0ZXN0U29ydGVkTWVudSwgMCk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAg
ICB0cmFja01lbnVJdGVtcyA9IHRleHRUcmFja01lbnVJdGVtcygpOworICAgICAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zWzBdLnRleHRDb250ZW50IiwgIk9mZiIp
OworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zWzFdLnRl
eHRDb250ZW50IiwgInUgKEVuZ2xpc2gpIFNESCIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zWzJdLnRleHRDb250ZW50IiwgInkgKEVuZ2xpc2gtQXVz
dHJhbGlhKSBTREgiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01l
bnVJdGVtc1szXS50ZXh0Q29udGVudCIsICJ2IChFbmdsaXNoKSIpOworICAgICAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zWzRdLnRleHRDb250ZW50IiwgInggKEVu
Z2xpc2gtQXVzdHJhbGlhKSIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRy
YWNrTWVudUl0ZW1zWzVdLnRleHRDb250ZW50IiwgIncgKEphcGFuZXNlKSBTREgiKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1s2XS50ZXh0Q29udGVu
dCIsICJ6IChKYXBhbmVzZSkiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2
aWRlby50ZXh0VHJhY2tzLmxlbmd0aCIsIDYpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInRyYWNrTWVudUl0ZW1zLmxlbmd0aCIsIDcpOworCisgICAgICAgICAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiPGJyPjxpPioqIENoYW5nZSBwcmVmZXJyZWQgbGFuZ3VhZ2UgdG8gSmFw
YW5lc2UsIGNoYW5nZSBwcmVmZXJlbmNlIHRvIHN1YnRpdGxlczwiICsgIi9pPiIpOworICAgICAg
ICAgICAgICAgICAgICBydW4oImludGVybmFscy5zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKFsn
amEnXSkiKTsKKyAgICAgICAgICAgICAgICAgICAgcnVuKCJpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
U2hvdWxkRGlzcGxheVRyYWNrS2luZCgnQ2FwdGlvbnMnLCBmYWxzZSkiKTsKKyAgICAgICAgICAg
ICAgICAgICAgcnVuKCJpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U2hvdWxkRGlzcGxheVRyYWNrS2lu
ZCgnU3VidGl0bGVzJywgdHJ1ZSkiKTsKKworICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0
VGltZW91dCh0ZXN0U29ydGVkTWVudSwgMCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgIHRyYWNrTWVudUl0ZW1z
ID0gdGV4dFRyYWNrTWVudUl0ZW1zKCk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidHJhY2tNZW51SXRlbXNbMF0udGV4dENvbnRlbnQiLCAiT2ZmIik7CisgICAgICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRlbXNbMV0udGV4dENvbnRlbnQiLCAieiAo
SmFwYW5lc2UpIik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51
SXRlbXNbMl0udGV4dENvbnRlbnQiLCAidiAoRW5nbGlzaCkiKTsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1szXS50ZXh0Q29udGVudCIsICJ4IChFbmds
aXNoLUF1c3RyYWxpYSkiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by50ZXh0VHJhY2tzLmxlbmd0aCIsIDYpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInRyYWNrTWVudUl0ZW1zLmxlbmd0aCIsIDQpOworCisgICAgICAgICAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZW5kVGVz
dCgpOworCisgICAgICAgICAgICAgICAgKyt0ZXN0OwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBmdW5jdGlvbiBzdGFydCgpCkBAIC01MSwxNCArODUsMTQgQEAKICAgICA8L2hlYWQ+CiAK
ICAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgotICAgICAgICA8cD5UZXN0IHRoYXQgY2FwdGlv
bnMgYW5kIHN1YnRpdGxlcyBhcmUgc29ydGVkIGluIHRoZSBtZW51LjwvcD4KKyAgICAgICAgPHA+
VGVzdCB0aGF0IGNhcHRpb25zIGFuZCBzdWJ0aXRsZXMgYXJlIHNvcnRlZCBpbiB0aGUgbWVudSBh
Y2NvcmRpbmcgdG8gdXNlciBwcmVmZXJlbmNlcy48L3A+CiAgICAgICAgIDx2aWRlbyB3aWR0aD0i
NTAwIiBoZWlnaHQ9IjMwMCIgY29udHJvbHM+Ci0gICAgICAgICAgICA8dHJhY2sgbGFiZWw9ImMi
IGtpbmQ9ImNhcHRpb25zIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0
LnZ0dCIgc3JjbGFuZz0iamEiPgotICAgICAgICAgICAgPHRyYWNrIGxhYmVsPSJiIiBraW5kPSJj
YXB0aW9ucyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNy
Y2xhbmc9ImVuLWF1Ij4KLSAgICAgICAgICAgIDx0cmFjayBsYWJlbD0iYSIga2luZD0iY2FwdGlv
bnMiIHNyYz0idHJhY2svY2FwdGlvbnMtd2VidnR0L2NhcHRpb25zLWZhc3QudnR0IiBzcmNsYW5n
PSJlbiI+Ci0gICAgICAgICAgICA8dHJhY2sgbGFiZWw9ImIiIGtpbmQ9InN1YnRpdGxlcyIgc3Jj
PSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9ImphIj4K
LSAgICAgICAgICAgIDx0cmFjayBsYWJlbD0iYSIga2luZD0ic3VidGl0bGVzIiBzcmM9InRyYWNr
L2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZW4tYXUiPgotICAg
ICAgICAgICAgPHRyYWNrIGxhYmVsPSJjIiBraW5kPSJzdWJ0aXRsZXMiIHNyYz0idHJhY2svY2Fw
dGlvbnMtd2VidnR0L2NhcHRpb25zLWZhc3QudnR0IiBzcmNsYW5nPSJlbiI+CisgICAgICAgICAg
ICA8dHJhY2sgbGFiZWw9InoiIGtpbmQ9InN1YnRpdGxlcyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13
ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQiIHNyY2xhbmc9ImphIj4KKyAgICAgICAgICAgIDx0cmFj
ayBsYWJlbD0ieSIga2luZD0iY2FwdGlvbnMiIHNyYz0idHJhY2svY2FwdGlvbnMtd2VidnR0L2Nh
cHRpb25zLWZhc3QudnR0IiBzcmNsYW5nPSJlbi1hdSI+CisgICAgICAgICAgICA8dHJhY2sgbGFi
ZWw9IngiIGtpbmQ9InN1YnRpdGxlcyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlv
bnMtZmFzdC52dHQiIHNyY2xhbmc9ImVuLWF1Ij4KKyAgICAgICAgICAgIDx0cmFjayBsYWJlbD0i
dyIga2luZD0iY2FwdGlvbnMiIHNyYz0idHJhY2svY2FwdGlvbnMtd2VidnR0L2NhcHRpb25zLWZh
c3QudnR0IiBzcmNsYW5nPSJqYSI+CisgICAgICAgICAgICA8dHJhY2sgbGFiZWw9InYiIGtpbmQ9
InN1YnRpdGxlcyIgc3JjPSJ0cmFjay9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtZmFzdC52dHQi
IHNyY2xhbmc9ImVuIj4KKyAgICAgICAgICAgIDx0cmFjayBsYWJlbD0idSIga2luZD0iY2FwdGlv
bnMiIHNyYz0idHJhY2svY2FwdGlvbnMtd2VidnR0L2NhcHRpb25zLWZhc3QudnR0IiBzcmNsYW5n
PSJlbiI+CiAgICAgICAgIDwvdmlkZW8+CiAgICAgPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJh
Y2ttZW51Lmh0bWwJKHJldmlzaW9uIDE0NjIwNSkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw2
ICsxNSw3IEBACiAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KioqIEFkZCBhbm90
aGVyIHRleHQgdHJhY2suIik7CiAgICAgICAgICAgICAgICAgcnVuKCd2aWRlby5hZGRUZXh0VHJh
Y2soImNhcHRpb25zIiwgIkNvbW1lbnRhcnkiLCAicnUiKScpOwogICAgICAgICAgICAgICAgIHdp
bmRvdy5zZXRUaW1lb3V0KHR1cm5DYXB0aW9uc09uLCAxMDApOworICAgICAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiIik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHRy
YWNrTWVudUxpc3QoKQpAQCAtMzksMTAgKzQwLDEwIEBACiAKICAgICAgICAgICAgIGZ1bmN0aW9u
IHRlc3RNZW51KCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0
SXRlbXMgPSB0cmFja01lbnVMaXN0KCk7CisgICAgICAgICAgICAgICAgdHJhY2tMaXN0SXRlbXMg
PSB0cmFja01lbnVMaXN0KCk7CiAgICAgICAgICAgICAgICAgdmFyIGV4cGVjdGVkSXRlbUNvdW50
ID0gdmlkZW8udGV4dFRyYWNrcy5sZW5ndGggKyAxOwogICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiVGhlcmUgc2hvdWxkIGJlICIgKyBleHBlY3RlZEl0ZW1Db3VudCArICIgaXRlbXMgaW4g
dGhlIG1lbnUuIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKHRyYWNrTGlzdEl0ZW1z
Lmxlbmd0aCwgZXhwZWN0ZWRJdGVtQ291bnQpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidHJhY2tMaXN0SXRlbXMubGVuZ3RoIiwgZXhwZWN0ZWRJdGVtQ291bnQpOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBzZWxlY3RDYXB0aW9uTWVudUl0ZW0oaW5kZXgs
IG5leHRTdGVwKQpAQCAtNjIsNyArNjMsNyBAQAogICAgICAgICAgICAgZnVuY3Rpb24gdHVybkNh
cHRpb25zT24oKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
KioqIFR1cm5pbmcgY2FwdGlvbnMgb24iKTsKLSAgICAgICAgICAgICAgICAvLyBDbGljayBvbiB0
aGUgdGhpcmQgaXRlbSwgd2hpY2ggaXMgdGhlIHNlY29uZCB0cmFjayAoT2ZmIGlzIHRoZSBmaXJz
dCBpdGVtIGluIHRoZSBtZW51KQorICAgICAgICAgICAgICAgIC8vIENsaWNrIG9uIHRoZSBzZWNv
bmQgaXRlbSwgd2hpY2ggaXMgdGhlIHNlY29uZCB0cmFjayAoT2ZmIGlzIHRoZSBmaXJzdCBpdGVt
IGluIHRoZSBtZW51KQogICAgICAgICAgICAgICAgIHNlbGVjdENhcHRpb25NZW51SXRlbSgyLCB0
ZXN0Q2FwdGlvbnNWaXNpYmxlKTsKICAgICAgICAgICAgIH0KIApAQCAtMTE3LDggKzExOCw4IEBA
CiAgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KICAgICAgICAgPHA+VGVzdCB0aGF0IHdlIGFy
ZSBhYmxlIHRvIHRyaWdnZXIgdGhlIGxpc3Qgb2YgY2FwdGlvbnMsIGFuZCBzZWxlY3QgZnJvbSB0
aGUgbGlzdC48L3A+CiAgICAgICAgIDx2aWRlbyB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMwMCIgY29u
dHJvbHM+CisgICAgICAgICAgICA8dHJhY2sga2luZD0iY2FwdGlvbnMiIHNyYz0idHJhY2svY2Fw
dGlvbnMtd2VidnR0L2NhcHRpb25zLWZhc3QudnR0IiBzcmNsYW5nPSJmciI+CiAgICAgICAgICAg
ICA8dHJhY2sga2luZD0iY2FwdGlvbnMiIHNyYz0idHJhY2svY2FwdGlvbnMtd2VidnR0L2NhcHRp
b25zLWZhc3QudnR0IiBzcmNsYW5nPSJlbiI+Ci0gICAgICAgICAgICA8dHJhY2sga2luZD0iY2Fw
dGlvbnMiIHNyYz0idHJhY2svY2FwdGlvbnMtd2VidnR0L2NhcHRpb25zLWZhc3QudnR0IiBzcmNs
YW5nPSJlbi1hdSI+CiAgICAgICAgICAgICA8dHJhY2sga2luZD0iY2FwdGlvbnMiIHNyYz0idHJh
Y2svY2FwdGlvbnMtd2VidnR0L2NhcHRpb25zLWZhc3QudnR0IiBzcmNsYW5nPSJqYSI+CiAgICAg
ICAgIDwvdmlkZW8+CiAgICAgPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dHJhY2stdXNlci1wcmVmZXJlbmNlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE0NjIwNSkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJl
ZmVyZW5jZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOCwxMCArMTgsMTAgQEAg
RVhQRUNURUQgKGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlID09ICcyJwogCiBUZXN0IDM6IHNlbGVj
dCAnZnInIHRyYWNrIGZyb20gbWVudQogLSBzaG93IGNhcHRpb25zIG1lbnUuCi1FWFBFQ1RFRCAo
dHJhY2tNZW51SXRlbXNbMV0uY2xhc3NOYW1lID09ICcnKSBPSwotRVhQRUNURUQgKHRyYWNrTWVu
dUl0ZW1zWzJdLmNsYXNzTmFtZSA9PSAnJykgT0sKLUVYUEVDVEVEICh0cmFja01lbnVJdGVtc1sz
XS5jbGFzc05hbWUgPT0gJ3NlbGVjdGVkJykgT0sKLS0gY2xpY2sgb24gbWVudSBpdGVtIDIuCitF
WFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbbWVudUluZGV4Rm9yTGFuZ3VhZ2UoJ0ZyZW5jaCcpXS5j
bGFzc05hbWUgPT0gJycpIE9LCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbbWVudUluZGV4Rm9y
TGFuZ3VhZ2UoJ0VuZ2xpc2gnKV0uY2xhc3NOYW1lID09ICcnKSBPSworRVhQRUNURUQgKHRyYWNr
TWVudUl0ZW1zW21lbnVJbmRleEZvckxhbmd1YWdlKCdOb3J3ZWdpYW4nKV0uY2xhc3NOYW1lID09
ICdzZWxlY3RlZCcpIE9LCistIGNsaWNrIG9uICdGcmVuY2gnIG1lbnUgaXRlbS4KIEVWRU5UKGxv
YWQpCiBFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0LnNyY2xhbmcgPT0gJ2ZyJykgT0sKIEVYUEVDVEVE
IChldmVudC50YXJnZXQucmVhZHlTdGF0ZSA9PSAnMicpIE9LCkBAIC0zOCw3ICszOCw3IEBAIEVY
UEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzJdLmxhbmd1YWdlID0KIAogVGVzdCA1OiB0dXJuaW5n
IGNhcHRpb25zIG9mZiBmcm9tIG1lbnUgZGlzYWJsZXMgY2FwdGlvbiBzZWxlY3Rpb24KIC0gc2hv
dyBjYXB0aW9ucyBtZW51LgotLSBjbGljayBvbiBtZW51IGl0ZW0gMC4KKy0gY2xpY2sgb24gJ09m
ZicgbWVudSBpdGVtLgogLSBjcmVhdGluZyB0cmFja3MgZm9yOiBbcnUsanAsZW5dLgogRVhQRUNU
RUQgKHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9PSAnZGlzYWJsZWQnKSBPSwogRVhQRUNURUQg
KHZpZGVvLnRleHRUcmFja3NbMV0ubW9kZSA9PSAnZGlzYWJsZWQnKSBPSwpJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbAko
cmV2aXNpb24gMTQ2MjA1KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stdXNlci1w
cmVmZXJlbmNlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMCArNDQsMjYgQEAKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJhY2tMaXN0SXRlbXM7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGZ1bmN0aW9uIHNlbGVjdENhcHRpb25NZW51SXRlbShpbmRleCkKKyAgICAgICAgICAg
IGZ1bmN0aW9uIG1lbnVJbmRleEZvckxhbmd1YWdlKGxhbmd1YWdlKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiLSBjbGljayBvbiBtZW51IGl0ZW0gIiArIGlu
ZGV4ICsgIi4iKTsKICAgICAgICAgICAgICAgICB2YXIgdHJhY2tNZW51SXRlbXMgPSB0cmFja01l
bnVMaXN0KCk7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRyYWNrTWVudUl0ZW1z
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0cmFja01lbnVJdGVtc1tp
XS50ZXh0Q29udGVudC5pbmRleE9mKGxhbmd1YWdlKSA+PSAwKQorICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiAo
aSA8IHRyYWNrTWVudUl0ZW1zLmxlbmd0aCkgPyBpIDogLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHNlbGVjdENhcHRpb25NZW51SXRlbShsYW5ndWFnZSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdHJhY2tNZW51SXRlbXMgPSB0cmFja01lbnVM
aXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gbWVudUluZGV4Rm9yTGFuZ3VhZ2Uo
bGFuZ3VhZ2UpOworICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAg
ICAgICAgICAgZmFpbFRlc3QoIk1lbnUgaXRlbSAiICsgbGFuZ3VhZ2UgKyAiIG5vdCBmb3VuZCBp
biB0cmFjayBsaXN0IG1lbnUuIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIi0gY2xpY2sgb24g
JyIgKyBsYW5ndWFnZSArICInIG1lbnUgaXRlbS4iKTsKICAgICAgICAgICAgICAgICB2YXIgc2Vs
ZWN0ZWRUcmFja0l0ZW0gPSB0cmFja01lbnVJdGVtc1tpbmRleF07CiAgICAgICAgICAgICAgICAg
dmFyIGJvdW5kaW5nUmVjdCA9IHNlbGVjdGVkVHJhY2tJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpOwogICAgICAgICAgICAgICAgIHZhciB4ID0gYm91bmRpbmdSZWN0LmxlZnQgKyBib3VuZGlu
Z1JlY3Qud2lkdGggLyAyOwpAQCAtNzAsNyArODYsNyBAQAogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIHZhciB0cmFjayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyYWNrJyk7CiAg
ICAgICAgICAgICAgICAgdHJhY2suc2V0QXR0cmlidXRlKCdraW5kJywgImNhcHRpb25zIik7Ci0g
ICAgICAgICAgICAgICAgdHJhY2suc3JjID0gJ2RhdGE6dGV4dC92dHQsJytlbmNvZGVVUklDb21w
b25lbnQoIldFQlZUVFxuXG4wMDowMDowMC4wMDAgLS0+IDAwOjAwOjAxLjAwMFxuQ2FwdGlvbiAx
XG4iKTsKKyAgICAgICAgICAgICAgICB0cmFjay5zcmMgPSAnZGF0YTp0ZXh0L3Z0dCwnICsgZW5j
b2RlVVJJQ29tcG9uZW50KCJXRUJWVFRcblxuMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMS4wMDBc
bkNhcHRpb24gMVxuIik7CiAgICAgICAgICAgICAgICAgdHJhY2suc2V0QXR0cmlidXRlKCdzcmNs
YW5nJywgbGFuZ3VhZ2UpOwogICAgICAgICAgICAgICAgIHRyYWNrLnNldEF0dHJpYnV0ZSgnb25s
b2FkJywgJ3RyYWNrTG9hZGVkKCknKTsKICAgICAgICAgICAgICAgICBpZiAoaXNEZWZhdWx0KSB7
CkBAIC0xMDgsMjAgKzEyNCwxNyBAQAogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGRl
YnVnIHNldHRpbmcgc28gaXQgaXNuJ3QgY29uc2lkZXJlZCBpbiB0aGUgdHJhY2sgc2VsZWN0aW9u
IGxvZ2ljCi0gICAgICAgICAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRTaG91bGRE
aXNwbGF5VHJhY2tLaW5kKCdDYXB0aW9ucycsIGZhbHNlKTsKLQogICAgICAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIjxicj5UZXN0IDM6IHNlbGVjdCAnZnInIHRyYWNrIGZyb20gbWVudSIp
OwogICAgICAgICAgICAgICAgICAgICBzaG93Q2FwdGlvbk1lbnUoKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAg
ICAgIHRyYWNrTWVudUl0ZW1zID0gdHJhY2tNZW51TGlzdCgpOwotICAgICAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zWzFdLmNsYXNzTmFtZSIsICIiKTsKLSAgICAg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtc1syXS5jbGFzc05hbWUi
LCAiIik7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRlbXNb
M10uY2xhc3NOYW1lIiwgInNlbGVjdGVkIik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidHJhY2tNZW51SXRlbXNbbWVudUluZGV4Rm9yTGFuZ3VhZ2UoJ0ZyZW5jaCcpXS5jbGFz
c05hbWUiLCAiIik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51
SXRlbXNbbWVudUluZGV4Rm9yTGFuZ3VhZ2UoJ0VuZ2xpc2gnKV0uY2xhc3NOYW1lIiwgIiIpOwor
ICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrTWVudUl0ZW1zW21lbnVJbmRl
eEZvckxhbmd1YWdlKCdOb3J3ZWdpYW4nKV0uY2xhc3NOYW1lIiwgInNlbGVjdGVkIik7CiAKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZWN0Q2FwdGlvbk1lbnVJdGVtKDIpOworICAgICAgICAgICAg
ICAgICAgICBzZWxlY3RDYXB0aW9uTWVudUl0ZW0oIkZyZW5jaCIpOwogICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZExhbmd1YWdlID0gJ2ZyJzsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKQEAgLTE0Myw3ICsxNTYsNyBAQAogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICAgICAgICAgIGNhc2UgNzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0Q2FwdGlvbk1l
bnVJdGVtKDApOworICAgICAgICAgICAgICAgICAgICBzZWxlY3RDYXB0aW9uTWVudUl0ZW0oIk9m
ZiIpOwogICAgICAgICAgICAgICAgICAgICBjcmVhdGVUcmFja0VsZW1lbnRzKFsgJ3J1JywgJ2pw
JywgJ2VuJ10pOwogICAgICAgICAgICAgICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQobmV4dFN0
ZXAsIDEwMCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3Zp
ZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0
NjIwNSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS92aWRlby1jb250cm9scy1j
YXB0aW9ucy10cmFja21lbnUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03LDkgKzcs
MTAgQEAgUlVOKGludGVybmFscy5zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKAogCiAqKiogQWRk
IGFub3RoZXIgdGV4dCB0cmFjay4KIFJVTih2aWRlby5hZGRUZXh0VHJhY2soImNhcHRpb25zIiwg
IkNvbW1lbnRhcnkiLCAicnUiKSkKKwogKioqIFR1cm5pbmcgY2FwdGlvbnMgb24KIFRoZXJlIHNo
b3VsZCBiZSA1IGl0ZW1zIGluIHRoZSBtZW51LgotRVhQRUNURUQgKDUgPT0gJzUnKSBPSworRVhQ
RUNURUQgKHRyYWNrTGlzdEl0ZW1zLmxlbmd0aCA9PSAnNScpIE9LCiBFWFBFQ1RFRCAodmlkZW8u
dGV4dFRyYWNrcy5sZW5ndGggPT0gJzQnKSBPSwogVHJhY2sgMCBzaG91bGQgYmUgc2hvd2luZwog
RVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9PSAnc2hvd2luZycpIE9LCkBAIC0y
NSw3ICsyNiw3IEBAIEVYUEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywKIFJV
Tih2aWRlby5yZW1vdmVDaGlsZChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJ0cmFjayIpWzBd
KSkKICoqKiBUdXJuaW5nIGNhcHRpb25zIG9mZgogVGhlcmUgc2hvdWxkIGJlIDQgaXRlbXMgaW4g
dGhlIG1lbnUuCi1FWFBFQ1RFRCAoNCA9PSAnNCcpIE9LCitFWFBFQ1RFRCAodHJhY2tMaXN0SXRl
bXMubGVuZ3RoID09ICc0JykgT0sKIEVYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCA9
PSAnMycpIE9LCiBUcmFjayAwIHNob3VsZCBiZSBkaXNhYmxlZAogRVhQRUNURUQgKHZpZGVvLnRl
eHRUcmFja3NbMF0ubW9kZSA9PSAnZGlzYWJsZWQnKSBPSwpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1sb2NhbGl6
ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9t
ZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtbG9jYWxpemVkLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTQ2MjA1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlh
L3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1sb2NhbGl6ZWQtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMSwxMCArMTEsMTAgQEAgRmlyc3QgaXRlbSBpbiBjYXB0aW9u
cyBtZW51IHNob3VsZCBiZSBsYQogRVhQRUNURUQgKGl0ZW0udGV4dENvbnRlbnQgPT0gJ09mZicp
IE9LCiAKIFNlY29uZCBpdGVtIGluIGNhcHRpb25zIG1lbnUgc2hvdWxkIGJlIGxhYmVsbGVkICdF
bmdsaXNoIENDJwotRVhQRUNURUQgKGl0ZW0udGV4dENvbnRlbnQgPT0gJ0VuZ2xpc2ggQ0MnKSwg
T0JTRVJWRUQgJ1Vua25vd24nIEZBSUwKK0VYUEVDVEVEIChpdGVtLnRleHRDb250ZW50ID09ICdF
bmdsaXNoIENDJyksIE9CU0VSVkVEICdVbmtub3duIFNESCcgRkFJTAogCi1UaGlyZCBpdGVtIGlu
IGNhcHRpb25zIG1lbnUgc2hvdWxkIGJlIGxhYmVsbGVkICdVbmtub3duJwotRVhQRUNURUQgKGl0
ZW0udGV4dENvbnRlbnQgPT0gJ1Vua25vd24nKSBPSworVGhpcmQgaXRlbSBpbiBjYXB0aW9ucyBt
ZW51IHNob3VsZCBiZSBsYWJlbGxlZCAnVW5rbm93biBTREgnCitFWFBFQ1RFRCAoaXRlbS50ZXh0
Q29udGVudCA9PSAnVW5rbm93biBTREgnKSwgT0JTRVJWRUQgJ1Vua25vd24nIEZBSUwKIAogRm91
cnRoIGl0ZW0gaW4gY2FwdGlvbnMgbWVudSBzaG91bGQgYmUgbGFiZWxsZWQgJ1Vua25vd24nCiBU
eXBlRXJyb3I6ICd1bmRlZmluZWQnIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2l0ZW0u
dGV4dENvbnRlbnQnKQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVv
LWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1zb3J0ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0
aW9ucy10cmFja21lbnUtc29ydGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ2MjA1KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRy
YWNrbWVudS1zb3J0ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDMy
IEBACi1UZXN0IHRoYXQgY2FwdGlvbnMgYW5kIHN1YnRpdGxlcyBhcmUgc29ydGVkIGluIHRoZSBt
ZW51LgorVGVzdCB0aGF0IGNhcHRpb25zIGFuZCBzdWJ0aXRsZXMgYXJlIHNvcnRlZCBpbiB0aGUg
bWVudSBhY2NvcmRpbmcgdG8gdXNlciBwcmVmZXJlbmNlcy4KIAogRVZFTlQoY2FucGxheXRocm91
Z2gpCiAKICoqKiBTZXQgdGhlIHVzZXIgbGFuZ3VhZ2UgcHJlZmVyZW5jZS4KIFJVTihpbnRlcm5h
bHMuc2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhbJ2VuJ10pKQotRmlyc3QgaXRlbSBzaG91bGQg
YmUgbGFiZWxsZWQgb2ZmIE9LCi1hIEVuZ2xpc2ggKEF1c3RyYWxpYSkgaXMgdGhlIGZpcnN0IHJl
YWwgaXRlbSBpbiB0aGUgbGlzdCBPSwotYSBFbmdsaXNoIChBdXN0cmFsaWEpIGNvbWVzIGJlZm9y
ZSBhIEVuZ2xpc2ggU0RIIE9LCi1hIEVuZ2xpc2ggU0RIIGNvbWVzIGJlZm9yZSBiIEVuZ2xpc2gg
KEF1c3RyYWxpYSkgU0RIIE9LCi1iIEVuZ2xpc2ggKEF1c3RyYWxpYSkgU0RIIGNvbWVzIGJlZm9y
ZSBiIEphcGFuZXNlIE9LCi1iIEphcGFuZXNlIGNvbWVzIGJlZm9yZSBjIEVuZ2xpc2ggT0sKLWMg
RW5nbGlzaCBjb21lcyBiZWZvcmUgYyBKYXBhbmVzZSBTREggT0sKKworKiogVGVzdCB3aXRoIHBy
ZWZlcnJlZCBsYW5ndWFnZSBzZXQgdG8gRW5nbGlzaCwgdHJhY2sgdHlwZSBzZXQgdG8gY2FwdGlv
bnMKK1JVTihpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U2hvdWxkRGlzcGxheVRyYWNrS2luZCgnQ2Fw
dGlvbnMnLCB0cnVlKSkKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtc1swXS50ZXh0Q29udGVudCA9
PSAnT2ZmJykgT0sKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtc1sxXS50ZXh0Q29udGVudCA9PSAn
dSAoRW5nbGlzaCkgU0RIJykgT0sKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtc1syXS50ZXh0Q29u
dGVudCA9PSAneSAoRW5nbGlzaC1BdXN0cmFsaWEpIFNESCcpIE9LCitFWFBFQ1RFRCAodHJhY2tN
ZW51SXRlbXNbM10udGV4dENvbnRlbnQgPT0gJ3YgKEVuZ2xpc2gpJykgT0sKK0VYUEVDVEVEICh0
cmFja01lbnVJdGVtc1s0XS50ZXh0Q29udGVudCA9PSAneCAoRW5nbGlzaC1BdXN0cmFsaWEpJykg
T0sKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtc1s1XS50ZXh0Q29udGVudCA9PSAndyAoSmFwYW5l
c2UpIFNESCcpIE9LCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXNbNl0udGV4dENvbnRlbnQgPT0g
J3ogKEphcGFuZXNlKScpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrcy5sZW5ndGggPT0g
JzYnKSBPSworRVhQRUNURUQgKHRyYWNrTWVudUl0ZW1zLmxlbmd0aCA9PSAnNycpIE9LCisKKyoq
IENoYW5nZSBwcmVmZXJyZWQgbGFuZ3VhZ2UgdG8gSmFwYW5lc2UsIGNoYW5nZSBwcmVmZXJlbmNl
IHRvIHN1YnRpdGxlcworUlVOKGludGVybmFscy5zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKFsn
amEnXSkpCitSVU4oaW50ZXJuYWxzLnNldHRpbmdzLnNldFNob3VsZERpc3BsYXlUcmFja0tpbmQo
J0NhcHRpb25zJywgZmFsc2UpKQorUlVOKGludGVybmFscy5zZXR0aW5ncy5zZXRTaG91bGREaXNw
bGF5VHJhY2tLaW5kKCdTdWJ0aXRsZXMnLCB0cnVlKSkKK0VYUEVDVEVEICh0cmFja01lbnVJdGVt
c1swXS50ZXh0Q29udGVudCA9PSAnT2ZmJykgT0sKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtc1sx
XS50ZXh0Q29udGVudCA9PSAneiAoSmFwYW5lc2UpJykgT0sKK0VYUEVDVEVEICh0cmFja01lbnVJ
dGVtc1syXS50ZXh0Q29udGVudCA9PSAndiAoRW5nbGlzaCknKSBPSworRVhQRUNURUQgKHRyYWNr
TWVudUl0ZW1zWzNdLnRleHRDb250ZW50ID09ICd4IChFbmdsaXNoLUF1c3RyYWxpYSknKSBPSwor
RVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3MubGVuZ3RoID09ICc2JykgT0sKK0VYUEVDVEVEICh0
cmFja01lbnVJdGVtcy5sZW5ndGggPT0gJzQnKSBPSworCiBFTkQgT0YgVEVTVAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>